Skip to content

chore(discipline): run the principle-parts check and post its unplaced-parts count #12155

Description

@kyle-sexton

Parent #7589's done-when reads "The principle-parts script's output, attached to the placement slice, reports unplaced parts: 0"; this is that slice. Q177, which the owner accepted 2026-10-15 (poteto-review decision row 105), makes the script a one-off: it lists which decision-58 parts and standards no phase-skill step names, its output is attached to the issue, and there is no CI check. Per AGENTS.md, one-off tooling stays out of the repository. A host runs this because the script lives in the session's .work/ and the lane cannot keep it. It runs after slices S1 to S6 merge.

Counting rule. The Issue Triage session decided this under the owner's standing direction; it is not an owner decision. unplaced parts counts only parts with no phase-skill step naming them and no recorded disposition. Decision 58 marks some parts "gated: lands only with observed-stumble evidence or a with-and-without eval"; a gated part with no such evidence, and a part whose destination another open parent owns, is listed under deferred: with its reason and issue instead. The dispositions known when this slice was filed:

Done when

  • A one-off script, kept uncommitted, reads origin/main at a named commit and checks each of the 36 decision-58 parts. For each part it prints:
    • the part's ID;
    • its disposition: placed with file:line, recorded (with its reason), deferred (with its reason and issue), or unplaced;
    • each docs/standards/ file that no phase-skill step names.
  • A comment on this issue gives:
    • the commit read;
    • the script's full output in a collapsed block;
    • a deferred: list naming each deferred part with its reason and issue;
    • a line unplaced parts: <n>, where <n> counts only the unplaced parts under the counting rule above.
  • When <n> is not 0, the comment names each unplaced part and the slice or issue that will place it.
  • A PR records the conclusion and closes this issue: it adds, directly after the attribution table's principle rows in docs/upstream/cursor-pstack.md (:92-102), a paragraph giving the commit read, the deferred: list and the unplaced parts: <n> line, and commits no script.

Out of scope

  • Committing the script or adding a CI check (Q177).

Parent: #7589

Activity

  1. added theissue type on Nov 1, 2026
  2. 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.
    host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.
    on Nov 1, 2026
  3. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 2, 2026
  4. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor
    No description provided.
  5. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor
    No description provided.
  6. removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 2, 2026
  7. melodic-automation-lanes commented on Nov 2, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue lane stopped on this issue (host-only): the run reports the work needs a host run the lane cannot make.
    It added host-run and removed agent-ready: an agent run on a host builds it, and it waits on no decision from a person.

    In the run's words:

    host-only: the issue (labeled host-run) says a host runs this slice because the one-off principle-parts script lives in the session's .work/ and the lane cannot keep it. Its done-when needs that script run against origin/main at a named commit, and a comment on #12155 with the script's full output, the deferred: list and the unplaced parts: <n> line. Only then can the docs/upstream/cursor-pstack.md paragraph be written from that output. This lane can run no interpreter or ad-hoc script, has no origin/main ref, and cannot comment on the issue. Writing the paragraph without the script's real output would mean making up the count.

    What the run says it did not do:

    • Run the one-off principle-parts script against origin/main at a named commit: needs a host session that keeps the script in .work/; the lane runs no interpreter and has no origin/main ref.
    • Post the issue comment with the commit read, the collapsed script output, the deferred: list and the unplaced parts: <n> line: the lane cannot comment on the issue, and the content depends on the script run.
    • Add the conclusion paragraph after the principle rows of the attribution table in docs/upstream/cursor-pstack.md: it depends on the script's output.
    • Check whether slices S1 to S6 have merged, which the issue sets as a precondition: not checked, since the run stops at host-only.

    Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41385661960

    To hand it back to the lane, remove host-run and add agent-ready again.

  8. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor

    Intake triage did not triage this issue after 2 dispatches, so the sweep no longer dispatches it and labeled it needs-triage for a maintainer. Triage it by hand, and read the runs for why intake did not:

  9. github-actions commented on Nov 2, 2026

    @github-actions
    Contributor

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

    Size: Small
    Complexity: Low
    Uncertainty: Known
    Flags: none
    Blocked by: none

    Understood: run a one-off, uncommitted principle-parts script against a named origin/main commit, post its output and the unplaced parts: <n> count here, then open a PR adding a paragraph to docs/upstream/cursor-pstack.md that closes this issue. The script run needs a host session, so the lane cannot do it. The issue already sets out the counting rule, the known dispositions and the done-when. Nothing is missing. I found no duplicate among the open issues. The issue says the run comes after slices S1 to S6 merge.

    Automated triage, applied by the lanes App.

  10. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Nov 2, 2026
  11. self-assigned this
    on Nov 2, 2026
  12. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor
    No description provided.
  13. kyle-sexton commented on Nov 2, 2026

    @kyle-sexton
    MemberAuthor

    Principle-parts check: unplaced parts: 0

    deferred:
    1c (attack-the-premise): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
    3h (build-the-lever): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
    4c (encode-lessons-in-structure): corrections plugin and /corrections:gather own it, #7573
    4e (encode-lessons-in-structure): corrections plugin and /corrections:codify own it, #7573
    4f (encode-lessons-in-structure): corrections plugin and /corrections:gather own it, #7573
    6h (experience-first): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
    8j (fix-root-causes): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
    19d (redesign-from-first-principles): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
    24i (type-system-discipline): gated per cursor/plugins#634 (Q557), issue: none (gated per cursor/plugins#634, Q557)

    unplaced parts: 0

    Notes:

    • 12f reads placed through the pre-existing build-cli contract row (plugins/developer-experience/skills/build-cli/reference/cli-contract.md:28), which no discipline: paved-path file and principle placement #7589 slice added. Not counting a contract row as a phase-skill step would move 12f to deferred: (gated, no evidence); the count stays 0.
    • The six gated deferrals (1c, 3h, 6h, 8j, 19d, 24i) have no tracking issue: their reopen trigger is stumble or eval evidence.
    Script output
    commit: b000bb5ce748035feee0f12975a6f36abe125170
    source: decision 58 (GUIDE.md:168) -> principles-map.md:50-415 (36 landing rows)
    phase-skill scope: plugins/{discovery,planning,implementation,testing,review,verification,session-flow,debugging,discipline,architecture,coupling,performance,evals,developer-experience,prototype,corrections}/{skills,agents,context,reference,workflows} (evals excluded) + docs/contracts/loop-lane, docs/contracts/enforcement-ladder, docs/contracts/type-discipline
    
    1b   attack-the-premise: recorded (decision 58 keeps the two-failed-fixes premise stop in /debugging:debug only; evidence plugins/debugging/skills/debug/SKILL.md:386)
    1c   attack-the-premise: deferred (gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate))  [map status: add (gated)]
    2b   boundary-discipline: placed plugins/review/agents/code-reviewer.md:78
    2g   boundary-discipline: placed plugins/review/agents/code-reviewer.md:78
    2h   boundary-discipline: recorded (placed in another form: the architecture conventions lens, #7590 closed; evidence plugins/architecture/skills/improve/actions/conventions.md:20)
    3c   build-the-lever: placed plugins/discipline/skills/script-the-deterministic-work/SKILL.md:190
    3f   build-the-lever: placed plugins/implementation/skills/implement-dispatch/SKILL.md:110
    3g   build-the-lever: placed plugins/discipline/skills/script-the-deterministic-work/SKILL.md:98
    3h   build-the-lever: deferred (gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate))  [map status: add (gated)]
    4c   encode-lessons-in-structure: deferred (corrections plugin and /corrections:gather own it, #7573)  [map status: new-skill]
    4e   encode-lessons-in-structure: deferred (corrections plugin and /corrections:codify own it, #7573)  [map status: new-skill]
    4f   encode-lessons-in-structure: deferred (corrections plugin and /corrections:gather own it, #7573)  [map status: new-skill]
    4g   encode-lessons-in-structure: placed docs/contracts/enforcement-ladder/README.md:54 (also plugins/review/context/enforcement-ladder.md:57)
    5e   exhaust-the-design-space: placed plugins/planning/skills/design/SKILL.md:159
    6h   experience-first: deferred (gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate))  [map status: add (gated)]
    7c   explain-the-number: placed plugins/performance/skills/verify/SKILL.md:125
    7e   explain-the-number: placed plugins/verification/skills/measure/context/performance.md:47 (also plugins/verification/skills/measure/context/metrics.md:57)
    7f   explain-the-number: placed plugins/evals/skills/plugin-eval/SKILL.md:353 (also plugins/evals/skills/plugin-eval/SKILL.md:359)
    8f   fix-root-causes: placed plugins/debugging/skills/debug/SKILL.md:287
    8h   fix-root-causes: placed plugins/debugging/skills/debug/SKILL.md:305
    8j   fix-root-causes: deferred (gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate))  [map status: add (gated)]
    12e  make-operations-idempotent: placed docs/contracts/loop-lane/README.md:872
    12f  make-operations-idempotent: placed plugins/developer-experience/skills/build-cli/reference/cli-contract.md:28
    14a  minimize-reader-load: placed plugins/architecture/skills/improve/research/deepening/scan-briefing.md:38
    14e  minimize-reader-load: placed plugins/review/agents/code-reviewer.md:76
    14f  minimize-reader-load: placed plugins/architecture/skills/improve/research/deepening/scan-briefing.md:51
    14h  minimize-reader-load: placed plugins/architecture/skills/improve/research/deepening/scan-briefing.md:94
    15c  model-the-domain: placed plugins/architecture/skills/improve/research/deepening/vocabulary.md:85
    18e  prove-it-works: placed plugins/verification/skills/confirm/SKILL.md:195
    19d  redesign-from-first-principles: deferred (gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate))  [map status: add (gated)]
    20e  separate-before-serializing-shared-state: placed plugins/coupling/skills/reduce/reference/remediations.md:42
    21f  sequence-verifiable-units: placed plugins/implementation/skills/implement/SKILL.md:133
    23e  test-behavior-not-implementation: placed plugins/testing/skills/test-value/SKILL.md:197
    23h  test-behavior-not-implementation: placed plugins/testing/skills/test-value/SKILL.md:207
    24i  type-system-discipline: deferred (gated per cursor/plugins#634 (Q557), issue: none (gated per cursor/plugins#634, Q557))  [map status: add]
    24j  type-system-discipline: placed plugins/implementation/skills/implement/SKILL.md:103 (also plugins/review/agents/code-reviewer.md:85, docs/contracts/type-discipline/README.md:1)
    
    docs/standards files no phase-skill step names (basename or index row name; stage plugins discovery,planning,implementation,testing,review,verification,session-flow):
      docs/standards/bulk-mutation.md  (named nowhere in scope)
      docs/standards/concise-prose.md  (named nowhere in scope)
      docs/standards/design-for-change.md  (named only outside phase skills: docs/contracts/loop-lane/README.md:426)
      docs/standards/deterministic-work-execution.md  (named nowhere in scope)
      docs/standards/documentation-and-citations.md  (named only outside phase skills: plugins/discipline/skills/point-dont-copy/SKILL.md:33)
      docs/standards/simpler-code.md  (named only outside phase skills: plugins/discipline/skills/tighten-your-output/SKILL.md:26)
      docs/standards/source-authority-tiers.md  (named nowhere in scope)
    named by a phase skill (first location):
      docs/standards/reference-dont-duplicate.md: plugins/planning/skills/interview/SKILL.md:224
      (the index, docs/standards/README.md, is named by 3 stage-plugin file(s))
    
    deferred:
      1c (attack-the-premise): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
      3h (build-the-lever): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
      4c (encode-lessons-in-structure): corrections plugin and /corrections:gather own it, #7573
      4e (encode-lessons-in-structure): corrections plugin and /corrections:codify own it, #7573
      4f (encode-lessons-in-structure): corrections plugin and /corrections:gather own it, #7573
      6h (experience-first): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
      8j (fix-root-causes): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
      19d (redesign-from-first-principles): gated by decision 58, no stumble or eval evidence, issue: none (decision 58 gate)
      24i (type-system-discipline): gated per cursor/plugins#634 (Q557), issue: none (gated per cursor/plugins#634, Q557)
    
    unplaced parts: 0
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

host-runNeeds an unattended run on a host; the host runner takes it, not a person or the issue lane.needs-triageNot yet classified. Floor until a type and one priority tier are set.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

Work status

agent-ready

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions