Repository navigation
feat(architecture): add four agent hazards to the deepening scan and a one-paragraph shape to record-decision #8646
Copy link
Copy link
Labels
agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.Fully specified and briefed; eligible for autonomous pickup from the frontier.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.
Description
Refs: #7590
Agent Brief
Type: Feature
Summary: The deepening scan of /architecture:improve learns four design hazards that mislead agents, each judged by an open-file test, and may take a spec or plan for upcoming work as its scope; /architecture:record-decision offers a one-paragraph ADR shape and lists the kinds of decision that qualify.
Current behavior:
- The friction checklist (
plugins/architecture/skills/improve/research/deepening/scan-briefing.md:22-48) restates the Phase 1 signals ofactions/deepening.mdfor a subagent: six shared signals and three scan-only ones. None names a hazard by how it misleads an agent. - Phase 1 scope (
actions/deepening.md:22-30) comes from the arguments, the conversation, or recent history; a spec or plan for upcoming work is not a source. record-decisionStep 2b offers "two or three common shapes" with no shape named (plugins/architecture/skills/record-decision/SKILL.md:96-104), and the admission test (SKILL.md:57-66) gives three questions and no examples of what qualifies.
Desired behavior:
- Four hazards added to the Phase 1 signals in
deepening.mdand to the checklist inscan-briefing.md, in our words:- Split ownership: more than one module writes the same state or keeps its own copy, so an agent that edits one writer cannot see the others. Remedy: one owner per piece of state; others read it or ask the owner.
- Two ways to do one task: an agent copies whichever way it finds first, so every way keeps gaining callers. Remedy: keep one way; move callers off the others and delete them in the same change.
- Importable internals: an agent takes the shortest path that compiles and imports internals directly, which makes them part of the interface. Remedy: make internals unreachable from outside, so such an import fails the build.
- Hand-synced list: two or more places list the same items and adding one means editing every list; an agent updates only the list it sees. Remedy: keep one list and derive the others, or fail the build when they disagree.
- Open-file test, stated once beside the hazards: with only the file being edited open, can an agent see every other place it must change? A "no" confirms the hazard.
- Phase 1 scope sources gain "a spec or plan for upcoming work": when one is given, scan the areas it will change.
record-decision: Step 2b offers, as one shape, a one-paragraph ADR: a short title and 1-3 sentences giving the context, the decision and why; optional status, considered options and consequences only when they add something. Under the admission test, one line of qualifying kinds: architectural shape; integration patterns between contexts; technology choices that carry lock-in; boundary and scope decisions; deliberate deviations from the obvious path; constraints not visible in the code; rejected alternatives when the rejection is not obvious.- Eval cases: in
improve/evals/evals.json, a fixture where two modules each write the same state yields a split-ownership candidate that cites the open-file test; inrecord-decision/evals/evals.json, a no-convention run lists the one-paragraph shape among the offered shapes. - No existing sentence is removed.
Key interfaces:
/architecture:improvedeepening (Phase 1 signals, scan briefing)./architecture:record-decisionStep 2b and admission test.
Acceptance criteria:
- The diff adds the four hazards and the open-file test to both
deepening.mdandscan-briefing.md, the spec-or-plan scope source todeepening.md, and the one-paragraph shape and qualifying kinds torecord-decision/SKILL.md, deleting no line in any of them. -
plugins/skill-quality/scripts/check-evals-quality.sh plugins/architecture/skills/improve/evals/evals.json plugins/architecture/skills/record-decision/evals/evals.jsonexits 0, with the two new cases asserting the behavior named. -
scripts/check-changelog-fragments.sh --checkpasses, with oneminorfragment forarchitecturenaming pstack'sarchitectdesign red flags and Matt Pocock'sdomain-modelingADR format as sources. - CI's
check-skillspasses on the PR (a PR check; this run does not run it).
Out of scope:
- The boundaries and
conventionslenses (the other architecture: boundaries and conventions lenses #7590 slice): they hand findings to/corrections:codify(corrections: new plugin with /corrections:codify #7573), paved-path entries to/discipline:reuse-or-replace(discipline: paved-path file and principle placement #7589, feat(discipline): make reuse-or-replace the paved-path writer and add a codemod-first migration row #8545) and boundary rules to the architecture concern file (standards: per-concern standards layout #7583), none of which exists yet. docs/upstream/cursor-pstack.mdanddocs/upstream/mattpocock-skills.mdrows (docs(upstream): re-audit the pstack record past cursor/plugins 99743e9c15 and re-pin it #8542 re-audits the pstack record).- The
research/enforcement-ladder.mdcopy (regenerated by feat(enforcement-ladder): ship ladder 2.0.0 with a runs-at column, four tiers and the new rung ids #8536).
Origin:
- Four agent hazards with the open-file test: Lauren's (pstack
architectdesign-red-flags.md), Q48. - A spec or plan for upcoming work as a scope source: Matt's, Q525.
- One-paragraph ADR shape and qualifying kinds: Matt's (
domain-modelingADR format), Q525.
Do not run with: none open.
Slice of #7590, drafted by the poteto-review session from the thread's recorded decisions.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.Fully specified and briefed; eligible for autonomous pickup from the frontier.status: readyTriaged, unblocked, and fully specified; eligible to pick up.Triaged, unblocked, and fully specified; eligible to pick up.
Type
Fields
No fields configured for Feature.
Activity