You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(planning): fail plans with missing citations and trace acceptance criteria #6924
Make plans cite only code that exists and make acceptance criteria checkable end to end.
Fail a plan whose file:line citation does not exist (html-plan's lint rejects invented anchors; we have none).
Stamp each plan with the commit it was checked at.
Trace acceptance criteria to phases and slices; this needs criterion ids.
In decompose: check that each criterion can fail at the base commit, and ask what each slice demos.
Run the html-plan trial: use /html-plan beside /planning:plan on this workstream's own planning. The user approves a temporary user-scope install and it is removed afterwards. Record whether the visual review changed any decision.
Key interfaces
None
Acceptance criteria
A script fails a plan whose file:line citation does not exist
Plans stamp the commit they were checked at
Acceptance criteria carry ids and trace to phases and slices
Decompose checks each criterion can fail at the base commit and asks what each slice demos
The html-plan trial ran on this workstream's planning; its outcome (decisions changed or not) is recorded
The temporary html-plan install is removed
The PR body carries Refs: #6917
Out of scope
A permanent html-plan install or any dependency on its code
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Large
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: none
Understood: add a citation-existence check for plans, stamp plans with the commit they were checked at, give acceptance criteria ids traced to phases and slices, and add decompose checks (each criterion can fail at base, what each slice demos). The html-plan trial has already been recorded in an earlier comment, and its install was removed.
The work covers several separate changes, so it needs splitting into sub-issues. Each has its own done-when: the citation script, the commit stamp, criterion ids with tracing, and the decompose checks. The earlier lane stop for size points the same way.
Split by the owner's HITL session (2026-10-24, C12, Q93-Q95) into sub-issues. Slices with no blocker can run in parallel; the rest wait on their blocked-by edges. Intake triage sets each slice's fields, then admission takes it.
Releasing the hold. This issue is a split parent: its work lives in its sub-issues. The hold was kept until admission refused a parent with open sub-issues, and that guard is now on main: .github/scripts/intake-triage/admit.mjs:438-441 ("A split issue's work is its sub-issues' (owner Q93)"), so admission waits while any sub-issue is open. refine.mjs:292 also declines to split an issue that already has sub-issues. needs-human comes off. Nothing is re-queued: the parent stays open as the tracker until its sub-issues close.
This split was filed by hand, so it has no lanes App split record, and work-unblock's closeSplitParent will not close it on its own when the last sub-issue closes. That gap is reported to the coordinator.
The work-resolve-issue lane stopped on this issue (split-required): the issue's Size is too large for one run, and intake's split (owner Q93) files its sub-issues.
Its Size is too large for one run: intake splits it into sub-issues (owner Q93).
It removed agent-ready and status: ready, so the hourly triage sweep sends it back through intake triage, and it waits on no decision from a person.
The temporary html-plan install was removed (claude plugin uninstall html-plan@claude-community --scope local; claude plugin list --json no longer lists it), same comment. The install was at local scope, not user scope.
Closed as completed: all 4 sub-issues closed completed and every criterion is delivered, with citations in the comment above. Agent choice, not an owner answer; written by the issue-triage session.
Activity
github-actions commentedon Oct 11, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Large
Complexity: Medium
Uncertainty: Knowable
Flags: none
Blocked by: none
Understood: add a citation-existence check for plans, stamp plans with the commit they were checked at, give acceptance criteria ids traced to phases and slices, and add decompose checks (each criterion can fail at base, what each slice demos). The html-plan trial has already been recorded in an earlier comment, and its install was removed.
The work covers several separate changes, so it needs splitting into sub-issues. Each has its own done-when: the citation script, the commit stamp, criterion ids with tracing, and the decompose checks. The earlier lane stop for size points the same way.
No likely duplicates found.
Automated triage, applied by the lanes App.
kyle-sexton commentedon Oct 25, 2026
Split by the owner's HITL session (2026-10-24, C12, Q93-Q95) into sub-issues. Slices with no blocker can run in parallel; the rest wait on their blocked-by edges. Intake triage sets each slice's fields, then admission takes it.
kyle-sexton commentedon Oct 26, 2026
This was generated by AI.
Releasing the hold. This issue is a split parent: its work lives in its sub-issues. The hold was kept until admission refused a parent with open sub-issues, and that guard is now on main:
.github/scripts/intake-triage/admit.mjs:438-441("A split issue's work is its sub-issues' (owner Q93)"), so admission waits while any sub-issue is open.refine.mjs:292also declines to split an issue that already has sub-issues.needs-humancomes off. Nothing is re-queued: the parent stays open as the tracker until its sub-issues close.This split was filed by hand, so it has no lanes App split record, and work-unblock's
closeSplitParentwill not close it on its own when the last sub-issue closes. That gap is reported to the coordinator.14 remaining items
melodic-automation-lanes commentedon Nov 2, 2026
The work-resolve-issue lane stopped on this issue (
split-required): the issue's Size is too large for one run, and intake's split (owner Q93) files its sub-issues.Its Size is too large for one run: intake splits it into sub-issues (owner Q93).
It removed
agent-readyandstatus: ready, so the hourly triage sweep sends it back through intake triage, and it waits on no decision from a person.Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41532131732
github-actions commentedon Nov 2, 2026
github-actions commentedon Nov 2, 2026
The triage sweep dispatched intake triage for this issue (attempt 1 of 2).
kyle-sexton commentedon Nov 3, 2026
Delivered: closing as completed.
Agent choice, not an owner answer.
All 4 sub-issues closed as completed: #10037, #10039, #10048, #10067.
file:linecitation does not exist:plugins/planning/scripts/check-plan-citations.shand its test,697e1e6139(feat(planning): fail a plan whose file:line citation does not exist, and stamp the commit it was checked at #10066).Citations checked at:line in both plan templates and Step 4.7 of/planning:plan,697e1e6139(feat(planning): fail a plan whose file:line citation does not exist, and stamp the commit it was checked at #10066).AC<n>ids and trace to plan phases (**Satisfies:**, thecriteriacheck incheck-plan-outcome.sh) and to decompose slices:44c7d9a73a(feat(planning): give acceptance criteria ids and trace them to plan phases and decompose slices #10136).9ee18bcac0(feat(work-items): decompose checks each criterion fails at the base commit and asks what each slice demos #10321).689f4864bb(docs(upstream): record the html-plan trial outcome #12516).claude plugin uninstall html-plan@claude-community --scope local;claude plugin list --jsonno longer lists it), same comment. The install was at local scope, not user scope.Refs: #6917is carried by feat(work-items): decompose checks each criterion fails at the base commit and asks what each slice demos #10321 (9ee18bcac0) and docs(upstream): record the html-plan trial outcome #12516 (689f4864bb); feat(planning): fail a plan whose file:line citation does not exist, and stamp the commit it was checked at #10066 and feat(planning): give acceptance criteria ids and trace them to plan phases and decompose slices #10136 carry it only as a fullwidth#6917, which does not link.Written by the issue-triage session.
kyle-sexton commentedon Nov 3, 2026
Closed as completed: all 4 sub-issues closed completed and every criterion is delivered, with citations in the comment above. Agent choice, not an owner answer; written by the issue-triage session.