Skip to content

feat(roadmap-planner): W4 — sprint card 4 lanes (todo/in_progress/done/cancelled)#193

Merged
danielfbm merged 1 commit into
mainfrom
feat/metrics-w4-sprint-lanes
May 19, 2026
Merged

feat(roadmap-planner): W4 — sprint card 4 lanes (todo/in_progress/done/cancelled)#193
danielfbm merged 1 commit into
mainfrom
feat/metrics-w4-sprint-lanes

Conversation

@danielfbm

Copy link
Copy Markdown
Contributor

Audit follow-up B7 — 2026-05-19. Pre-W4 the sprint card collapsed Backlog / Blocked / In Progress under one wip bucket because the classifier only checked resolved_at IS NULL. Cancelled issues silently rolled up as WIP.

Summary

Area Change
Backend New contributions/status_lanes.go with StatusClassifier + DefaultStatusLanes() pulled live from DEVOPS Jira (37 statuses × 17 issue types, English + Chinese).
Backend SprintStats JSON gains todo, in_progress, cancelled. wip stays for one release as a derived alias todo + in_progress.
Backend team_analytics.statuses config block — each lane optional, falls back to the default when empty.
Backend sprintCounts reads the classifier instead of resolved_at IS NULL.
Frontend Profile sprint card renders 6 KPI tiles: todo / in_progress / done / cancelled / PRs open / PRs merged. Grid widened to 6 cols.

Default mapping

lane statuses
todo Backlog, Blocked, Open, 待处理, 阻塞中
in_progress Acceptance Testing, CONFIRM RELEASE, Components-test, DEPLOY, Designing, Developing, Doc Reviewing, In Progress, In Testing, Mitigated, Ready for Delivery, Ready for Doc Review, Ready for QA, Review/Test Failed, Signed Off, Test Failed, Testing, Under Review, Verify, Wait for Verify, 调研中, 调研完成, 设计完成, 开发完成, 测试完成, 验收完成
done Done, Resolved, using, 已完成
cancelled Cancelled, 已取消

Override semantics

Each lane is independent — overriding todo: ["Inbox"] in config keeps the default in_progress / done / cancelled lists intact. To replace a lane, supply the full intended list.

Test plan

  • go test ./... + go vet ./... — green
  • TestStatusClassifier covers English + Chinese statuses, case-fold, whitespace, unknown-status fallback
  • TestStatusClassifierConfigOverrideOneLane proves the per-lane override fallback
  • Dev deploy: visit a member profile and confirm the 6-tile sprint card renders and the counts match the underlying Jira sprint

Rollback

Drop team_analytics.statuses from the ConfigMap — defaults take over.

🤖 Generated with Claude Code

"DEPLOY",
"Designing",
"Developing",
"Doc Reviewing",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Critical Issue (bug/data-integrity): The Done lane includes "using" which appears to be a typo or erroneous status name. This doesn't look like a valid Jira status and could cause incorrect classification of issues. Please verify if this is intentional or should be removed.

// English defaults.
{"Backlog", LaneTodo, true},
{"Blocked", LaneTodo, true},
{"In Progress", LaneInProgress, true},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion (test/coverage): Consider adding test coverage for the "Open" status which is in the default Todo lane but not covered by the current test cases.

{"Cancelled", LaneCancelled, true},

// Chinese (DEVOPS Epic workflow).
{"待处理", LaneTodo, true},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion (test/coverage): Consider adding a test case for the "using" status in the Done lane to confirm the current behavior is intentional (or to catch if it's a bug).

out.InProgress++
}
}
if err := rows.Err(); err != nil {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion (refactor/clarity): Consider logging a warning when Classify returns known=false for unknown statuses, as mentioned in the code comments. This would help operators discover missing status mappings in their Jira workflow.

@alaudabot

alaudabot commented May 19, 2026

Copy link
Copy Markdown
Contributor

🤖 AI Code Review

Property Value
Model opencode/minimax-m2.5-free
Style strict
Issues Found 1
Config Source centralized
Profile ❌ Not Found
Personalized Prompt ❌ No
Prompt Path .github/review/profiles/alaudadevops/toolbox/pr-review.md
Alauda Skills ✅ base-acp-operator-list, base-acp-operator-release, base-authoring, base-m365, base-ocp-operator-list, base-skill-setup, builders-alauda-component-e2e-release, builders-alauda-component-upgrade, builders-alauda-pipeline, builders-claudetask-submit, builders-component-knowledge, builders-confluence, builders-dev-mesh-qa, builders-edge-ci-trace, builders-gitlab-ops, builders-helm-operator-generator, builders-install-cluster-plugin, builders-jira, builders-notify-wecom, builders-olm-operator-lifecycle, builders-prd-to-testcase, builders-publish-errata, builders-roadmap-studio, builders-story-split, builders-violet, builders-webapp-testing, cross-repo-add-mirror, cross-repo-publish, devops-add-bug-release-notes, devops-autodns, devops-bundle-csv-baseline-diff, devops-candidate-version-supervisor, devops-connectors-acceptance-test, devops-connectors-explore, devops-connectors-poc-case, devops-connectors-review, devops-connectors-unit-test, devops-connectors-upgrade-test, devops-connectors-write-user-docs, devops-creating-tekton-pipelines, devops-fix-go-vulns, devops-fork-alauda-binary-release, devops-gen-advanced-form-descriptors, devops-jira-rfd-acceptance, devops-knowledge-adoption, devops-pr-review, devops-refresh-containerfile-digests, devops-refresh-containerfile-tags, devops-replace-strings, devops-scan-docker-keywords, devops-sync-alauda-github-releases, devops-tekton-dynamic-form-optimizer, devops-tekton-operator-task-e2e, devops-tekton-pipeline-delivery, devops-tekton-refresh-results-tag, devops-tekton-task-delivery, devops-tekton-task-overview-template, devops-tekton-task-version-upgrade, devops-tekton-upgrade-notes, devops-tool-report-troubleshoot, devops-ui-e2e-code-audit, devops-ui-e2e-fix-base-on-report, devops-ui-e2e-regression-and-fix, devops-ui-generate-e2e-from-feature, devops-ui-pre-setup, devops-upgrade-go, devops-upstream-backport-cve, devops-upstream-upgrade
Reviewed at 2026-05-19 22:21:23 UTC

Summary

This PR adds a 4-lane sprint card classification (todo/in_progress/done/cancelled) to replace the previous WIP/Done-only approach. It introduces a StatusClassifier that maps Jira statuses to lanes, updates the backend to use the classifier instead of resolved_at IS NULL, and updates the frontend to display 6 KPI tiles. The implementation maintains backward compatibility by keeping wip as a derived alias.

Review Statistics

Category Count
Critical Issues 1
Warnings 3
Suggestions 0
Files Reviewed 9

Critical Issues

  • [status_lanes.go:131] (bug/data-integrity): The Done lane includes "using" which appears to be a typo or erroneous status name. This is unlikely to be a valid Jira status and should be investigated. If this was intentional, please add a comment explaining the source.

Warnings

  • [service_extras.go:544] (refactor/clarity): The code comment mentions recording unknown statuses and surfacing them to the operator, but the known return value from Classify is being ignored. Consider logging a warning when Classify returns known=false to match the documented behavior.

  • [status_lanes_test.go:27] (test/coverage): The test coverage for the Todo lane is missing the "Open" status which is in the default configuration.

  • [status_lanes_test.go:35] (test/coverage): There's no test coverage for the "using" status in the Done lane. Given the unusual nature of this status, a test case confirming the intended behavior would be valuable.

Positive Feedback

  • The StatusClassifier implementation is clean and well-structured with proper case-folding and whitespace normalization.
  • The default status mapping comprehensively covers English and Chinese DEVOPS Jira statuses.
  • The config override pattern is well-designed — each lane can be independently overridden while falling back to defaults for unspecified lanes.
  • The backward compatibility approach (keeping wip as todo + in_progress) is pragmatic for a smooth transition.
  • The new unit tests provide good coverage of the core classification logic.


ℹ️ About this review

This review was automatically generated using the run-actions workflow.

  • Shared prompt: .github/prompts/code-review.md
  • Config source: centralized
  • Profile path: Not Found
  • Profile ref: e75e733e9aa1b417a8b3c6441e53495dbcb418ad
  • No repository-specific prompt configured
  • Alauda skills: base-acp-operator-list, base-acp-operator-release, base-authoring, base-m365, base-ocp-operator-list, base-skill-setup, builders-alauda-component-e2e-release, builders-alauda-component-upgrade, builders-alauda-pipeline, builders-claudetask-submit, builders-component-knowledge, builders-confluence, builders-dev-mesh-qa, builders-edge-ci-trace, builders-gitlab-ops, builders-helm-operator-generator, builders-install-cluster-plugin, builders-jira, builders-notify-wecom, builders-olm-operator-lifecycle, builders-prd-to-testcase, builders-publish-errata, builders-roadmap-studio, builders-story-split, builders-violet, builders-webapp-testing, cross-repo-add-mirror, cross-repo-publish, devops-add-bug-release-notes, devops-autodns, devops-bundle-csv-baseline-diff, devops-candidate-version-supervisor, devops-connectors-acceptance-test, devops-connectors-explore, devops-connectors-poc-case, devops-connectors-review, devops-connectors-unit-test, devops-connectors-upgrade-test, devops-connectors-write-user-docs, devops-creating-tekton-pipelines, devops-fix-go-vulns, devops-fork-alauda-binary-release, devops-gen-advanced-form-descriptors, devops-jira-rfd-acceptance, devops-knowledge-adoption, devops-pr-review, devops-refresh-containerfile-digests, devops-refresh-containerfile-tags, devops-replace-strings, devops-scan-docker-keywords, devops-sync-alauda-github-releases, devops-tekton-dynamic-form-optimizer, devops-tekton-operator-task-e2e, devops-tekton-pipeline-delivery, devops-tekton-refresh-results-tag, devops-tekton-task-delivery, devops-tekton-task-overview-template, devops-tekton-task-version-upgrade, devops-tekton-upgrade-notes, devops-tool-report-troubleshoot, devops-ui-e2e-code-audit, devops-ui-e2e-fix-base-on-report, devops-ui-e2e-regression-and-fix, devops-ui-generate-e2e-from-feature, devops-ui-pre-setup, devops-upgrade-go, devops-upstream-backport-cve, devops-upstream-upgrade

…e/cancelled)

Audit follow-up B7 (2026-05-19). Pre-W4 the sprint card collapsed
Backlog / Blocked / In Progress under a single "wip" bucket because
the classifier only checked `resolved_at IS NULL`. Cancelled issues
were silently bucketed with WIP.

- `SprintStats` JSON gains `todo`, `in_progress`, `cancelled`. `wip`
  stays for one release as a derived alias `todo + in_progress`.
- `contributions/status_lanes.go` owns the configurable classifier
  (`StatusClassifier`) and the W4 baseline `DefaultStatusLanes()`
  derived from a live DEVOPS query — 37 statuses across 17 issue
  types, mix of English + Chinese.
- `team_analytics.statuses` config block, four optional lists. Each
  lane independently inherits the default when empty.
- `sprintCounts` uses the classifier instead of the resolved-at
  heuristic.
- Frontend: profile sprint card renders six KPI tiles
  (todo / in_progress / done / cancelled / PRs open / PRs merged);
  grid widened to six columns.

Tests:
- `TestStatusClassifier` covers English + Chinese statuses,
  case-fold, whitespace, unknown fallback.
- `TestStatusClassifierConfigOverrideOneLane` proves per-lane
  override semantics.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@danielfbm danielfbm force-pushed the feat/metrics-w4-sprint-lanes branch from 3e8112e to 05ec4f6 Compare May 19, 2026 22:20
@danielfbm danielfbm merged commit ac15c06 into main May 19, 2026
7 of 10 checks passed
@danielfbm danielfbm deleted the feat/metrics-w4-sprint-lanes branch May 19, 2026 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants