Skip to content

fix(planning): export each decision once in its current form, without superseded or raw duplicate lines #9901

Open

Description

@kyle-sexton

Problem

#6051 finding E2. plugins/planning/surface/exporters.py appends - Q<N> <short>: <readable> for every answered row after the restated constraints, superseded and refined ones unmarked (39 bullets in the audited run). A supersedes row becomes withdrawn and exports into Out-of-scope, which plugins/planning/skills/plan/context/tag-decisions.md:7 treats as approved.

What to build

  • Drop an answered row's raw line when the restated constraints or the ### Decisions section (from the sibling slice) already carry it.
  • Stop exporting supersededBy rows to Out-of-scope; they stay in the ledger.
  • In ### Decisions, mark a true replacement replaces Q<N>.

Done when

  • A plugins/planning/surface/test_exporters.py test with Q13 superseded by Q28 asserts Q13's text appears in neither Constraints nor Out-of-scope, and Q28 appears once.
  • A test asserts no decision line appears twice in the exported Brief.
  • python3 -m unittest discover -s plugins/planning/surface -p 'test_exporters.py' exits 0.
  • Planning changelog fragment present.

Split from the parent by the owner's HITL session (2026-10-24) under Q93 (split before any run). Paths and line numbers checked on origin/main 2f6b81e; recheck before building.

Activity

  1. added theissue type on Oct 25, 2026
  2. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 25, 2026
  3. github-actions commented on Oct 25, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Small
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: #9895

    Understood: the planning Brief export should list each decision once in its current form. A superseded row should not appear in Constraints or Out-of-scope, and a true replacement in Decisions should be marked replaces Q<N>. The done-when items are tests in test_exporters.py plus a planning changelog fragment.

    The first bullet relies on the Constraints and Decisions sections carrying each decision, which the sibling slice #9895 adds, so I listed it as a blocker. The issue also says to recheck paths and line numbers before building.

    Automated triage, applied by the lanes App.

  4. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 25, 2026
  5. changed the issue type fromtoon Oct 25, 2026
  6. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Oct 25, 2026
  7. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane yet: blocker #9895 is not closed by a listed human or a merge.

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.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions