Repository navigation
Add backlog state and maturity-tag spec roadmapping (#56) - #266
Open
zwanski-start wants to merge 2 commits into
Open
zwanski-start wants to merge 2 commits into
zwanski-start wants to merge 2 commits into
Conversation
…utoForgeAI#56) - Feature gains backlog/maturity/spec_notes columns (auto-migrated) - Backlog features are never claimed or scheduled by agents (MCP + orchestrator) - Build queue ordered by maturity tag (configurable maturity_priority setting, default beta > limited_beta > alpha), then dependency scheduling score - New endpoints: GET /readiness, POST /promote (ready checks, force override), POST /backlog; PATCH accepts maturity/spec_notes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rgeAI#56) - Backlog column (shown once non-empty) and dashed backlog cards - Maturity badge on cards, maturity filter chips with per-stage counts - Spec Review panel in the feature modal: maturity tag, notes, ready checklist, Promote to Pending (with explicit override), Move to Backlog - Add Feature form can create backlog items and set a maturity tag - Settings: reorder maturity priority for the build queue - Dependency graph renders backlog nodes Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
🔍 QA report: ✅ PassedTester: Ken (cubefarm agent, in a fresh session) · Round: 1 · Author: Dennis Backlog state, maturity tags, ready checks and configurable maturity priority work end to end: API, MCP/orchestrator guardrails, migration of a legacy features.db, and UI (Backlog column, badges, filter, Spec Review panel with gated and override promotion, Settings reorder, graph styling). ruff is clean; mypy and pytest results match master exactly, so all failures are in unrelated files; the 21 new tests pass; the UI build and lint pass with no new warnings. The only issue found is cosmetic: the dependency graph legend has no Backlog entry.
🧪 Commands run
No browser screenshots were taken in this round. Posted by cubefarm · merges automatically once GitHub's checks pass |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #56
What changed
Backlog state (not committed / not ready)
Featuregainsbacklog(bool),maturity(alpha|limited_beta|beta, nullable) andspec_notescolumns. Existingfeatures.dbfiles are migrated automatically, and existing features default to non-backlog and untagged.feature_mark_in_progress/feature_claim_and_getrefuse backlog features, and the atomic claim SQL checksbacklog = 0.get_ready_features,get_resumable_featuresand batch chain extension skip backlog features (and needs-input ones in chain extension).get_all_completedoesn't wait on backlog items, so the orchestrator exits normally and prints how many backlog features were left unbuilt.GET /api/projects/{p}/features/{id}/readiness: runs the spec-completeness checklist.POST /api/projects/{p}/features/{id}/promote{force?: bool}: Backlog → Pending. It returns 409 with the failing checks unlessforce: true(explicit human override).POST /api/projects/{p}/features/{id}/backlog: Pending → Backlog. Refused for done or in-progress features.GET /featuresreturns a newbackloglist. Graph nodes can have statusbacklogand carrymaturity.Iterative spec roadmapping (maturity tags)
PATCH /features/{id}acceptsmaturityandspec_notes; an explicitnullclears them.POST /featuresand/features/bulkacceptbacklog,maturityandspec_notes.feature_get_readyanddependency_resolver.get_ready_features.maturity_priority(GET/PATCH /api/settings, defaultbeta > limited_beta > alpha). The orchestrator re-reads it every loop, so a change applies without restarting the agent.api/maturity.py): description filled in, at least one acceptance/test step, maturity tag assigned, all dependencies exist, and no dependency still in Backlog.UI
How I verified it
ruff check .passes.pytest test_backlog_maturity.py test_dependency_resolver.py test_client.pygives 54 passed.python test_security.pypasses.test_backlog_maturity.py(21 tests) covers:npm run lintshows no new warnings.npm run buildsucceeds.HOME. In Playwright I checked:['beta','alpha','limited_beta'])Assumptions / design decisions
feature_create, Add Feature without the backlog box) does not run the checks. This keeps existing flows working and avoids requiring maturity tags on every generated feature.x / total) still include backlog features. Only scheduling and completion ignore them.backlogflag can't be changed throughPATCH. It only moves through/promote(checked) and/backlog, so the checks can't be bypassed by accident.🤖 Generated with Claude Code