Skip to content

feat(planning): fail plans with missing citations and trace acceptance criteria #6924

Open
3 of 4 issues completed
Open

Description

@kyle-sexton

Parent

Refs #6917

What to build

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
  • Visual plan views (W6)

Blocked by

None — can start immediately

Activity

  1. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 11, 2026
  2. github-actions commented on Oct 11, 2026

    @github-actions
    Contributor

    Proposed work class: none

    Size: Large
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: #10039, #10048, #10067

    Decision recorded. The owner answered in the Refinement and Issue Triage sessions (2026-10-25), deciding the open items below on the facts:

    go with whatever the facts/data/metrics + /discovery:research says and ensure we're aligned with SOLID, DRY/SSOT principles

    [quote truncated; the full decision is at the link]

    #6924 (comment)

    The decision settles the open questions: this issue is a split parent whose criteria are carried by its sub-issues, so nothing is asked again. It stays open as the tracker until #10039, #10048 and #10067 close.

    Automated triage. A maintainer reviews it.

  3. kyle-sexton commented on Oct 25, 2026

    @kyle-sexton
    MemberAuthor

    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.

  4. kyle-sexton commented on Oct 26, 2026

    @kyle-sexton
    MemberAuthor

    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: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.

  5. removed
    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.
    on Oct 26, 2026
  6. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 26, 2026
  7. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 26, 2026
  8. melodic-automation-lanes commented on Oct 26, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane yet: blocker #10048 is not closed by a listed human or a merge; blocker #10067 is not closed by a listed human or a merge; sub-issue #10048 is open; sub-issue #10067 is open.

  9. melodic-automation-lanes commented on Oct 26, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: the issue is at status: ready.

  10. kyle-sexton commented on Oct 26, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded. The owner answered in the Refinement and Issue Triage sessions (2026-10-25), deciding the open items below on the facts:

    go with whatever the facts/data/metrics + /discovery:research says and ensure we're aligned with SOLID, DRY/SSOT principles

    I should only ever be in the loop ONLY when necessary (intent/vision changed, something came up during implementation that impacts trajectory/alignment, OR a high security risk) - I've covered this all before

    No owner ledger (.work/*/interview-checklist.md, .work/gh-monitor-owner-decisions/) names this issue.

    The admission refusal of 2026-10-26T07:23Z (#6924 (comment)) predates #10274 (84894c96b6, merged 2026-10-26T12:55Z). On main, admission returns wait on open sub-issues before any refusal unless the refusal holds for a person (.github/scripts/intake-triage/admit.mjs:509-514). Neither the Feature-parent reason nor Size large holds, so this issue now waits on #10039, #10048 and #10067.

    1. Does the Feature-parent reason still apply?
      Decided: No. The parent check passes when the parent is open, filed by a listed human, and carries none of needs-human, needs-owner-decision, or status: needs-decision with a decision open (admit.mjs:116, :447-448). The parent Epic: improve the planning chain from html-plan, HumanLayer rpi and Pocock sources #6917 is open, filed by kyle-sexton (the same author whose issue passed the author check in the refusal above), and its labels are now priority: medium, status: ready and work-map (issue data fetched 2026-10-26). The decided record on Epic: improve the planning chain from html-plan, HumanLayer rpi and Pocock sources #6917 also answers its refinement's questions.
    2. Does this issue need criteria of its own?
      Decided: No. The body's - [ ] criteria stand unchanged, and each is a sub-issue's work: the citation check and the commit stamp are feat(planning): fail a plan whose file:line citation does not exist, and stamp the commit it was checked at #10037, closed and on main as 697e1e6139 (feat(planning): fail a plan whose file:line citation does not exist, and stamp the commit it was checked at #10066); criterion ids and tracing are feat(planning): give acceptance criteria ids and trace them to plan phases and decompose slices #10039; the decompose checks are feat(work-items): decompose checks each criterion can fail at the base commit and asks what each slice demos #10048 (blocked by feat(planning): give acceptance criteria ids and trace them to plan phases and decompose slices #10039); the html-plan trial and the removal of its install are chore(planning): run the html-plan trial beside /planning:plan and record whether it changed a decision #10067, which a person runs because it needs a temporary user-scope install (body, "What to build"). Basis: the 2026-10-25 sub-issue list in the issue data.

    Acceptance criteria: none a lane can run on this issue. The body's criteria are carried by its sub-issues, and no line is amended.

    Host run (host-run label):

    Close:

  11. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    and removed
    status: needs-decisionAwaiting a human or maintainer judgment call.
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions