@martinffx/atelier 3.0.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +19 -1
  3. package/dist/atelier.js +237 -44
  4. package/package.json +1 -1
  5. package/skills/atelier-orchestrator/SKILL.md +16 -3
  6. package/skills/atelier-setup/SKILL.md +43 -20
  7. package/skills/atelier-setup/references/domain.md +22 -0
  8. package/skills/atelier-setup/references/issue-tracker.md +35 -0
  9. package/skills/code-commit/SKILL.md +4 -3
  10. package/skills/code-pull-request/references/common.md +4 -4
  11. package/skills/code-pull-request/references/create-pr.md +15 -15
  12. package/skills/code-pull-request/references/merge-pr.md +3 -3
  13. package/skills/code-pull-request/references/read-comments.md +2 -2
  14. package/skills/code-review/SKILL.md +27 -8
  15. package/skills/code-review/references/output.md +52 -0
  16. package/skills/code-review/references/reviewers.md +113 -13
  17. package/skills/code-review/references/rq.md +195 -53
  18. package/skills/code-review/references/rs.md +41 -5
  19. package/skills/code-subagents/SKILL.md +4 -2
  20. package/skills/code-subagents/references/batch-reviewer-prompt.md +9 -0
  21. package/skills/code-subagents/references/implementor-prompt.md +7 -0
  22. package/skills/oracle-debug/SKILL.md +17 -10
  23. package/skills/oracle-debug/references/techniques.md +41 -137
  24. package/skills/oracle-domain-modelling/SKILL.md +5 -2
  25. package/skills/oracle-grill-me/SKILL.md +4 -1
  26. package/skills/spec-brainstorm/SKILL.md +34 -9
  27. package/skills/spec-finish/SKILL.md +40 -36
  28. package/skills/spec-implement/SKILL.md +38 -47
  29. package/skills/spec-plan/SKILL.md +64 -32
  30. package/skills/spec-plan/references/plan_template.md +15 -2
  31. package/skills/oracle-debug/references/language-tools.md +0 -139
@@ -1,14 +1,15 @@
1
1
  ---
2
2
  name: atelier-setup
3
- description: Configure a repository's generic agent guidance for Atelier's development workflow. Use only when the user explicitly invokes atelier-setup; it inspects existing repository instructions and domain-document conventions, previews an idempotent project-guidance update, and writes only after approval. It does not install Atelier, configure a harness, or scaffold empty workflow artifacts.
3
+ description: Configure a repository for Atelier's development workflow. Use only when explicitly invoked; inspect existing guidance, issue-tracker and domain-document conventions, preview the proposed configuration, and write only after approval. It does not install Atelier or initialize external tooling.
4
4
  user-invocable: true
5
+ disable-model-invocation: true
5
6
  ---
6
7
 
7
8
  # Atelier Setup
8
9
 
9
- Set up generic repository guidance that Atelier skills need without taking ownership of the
10
- developer's installation, harness configuration, or project structure. Explore first, present
11
- the proposed edit exactly, and write only after the developer approves it.
10
+ Set up repository guidance that Atelier skills need without taking ownership of the developer's
11
+ installation, harness configuration, or project structure. Explore first, present every proposed
12
+ edit exactly, and write only after the developer approves it.
12
13
 
13
14
  ## 1. Explore
14
15
 
@@ -18,6 +19,9 @@ Read the repository before proposing any change:
18
19
  heading.
19
20
  - Root `CONTEXT.md` and `CONTEXT-MAP.md`.
20
21
  - `docs/adr/` and any context-local `docs/adr/` directories.
22
+ - `docs/agents/`, including existing `issue-tracker.md` and `domain.md`.
23
+ - Existing issue-tracker conventions: remotes, issue links in documentation, local issue
24
+ directories, and project guidance.
21
25
  - Genuine monorepo signals: a workspace manifest, or multiple independently deployable packages
22
26
  with their own source directories.
23
27
 
@@ -33,9 +37,19 @@ Summarize what exists and recommend a domain-document layout:
33
37
  contexts. `CONTEXT-MAP.md` belongs at the root and points to each context's `CONTEXT.md` and
34
38
  `docs/adr/` directory.
35
39
 
36
- Explain that these documents remain lazy: do not create `CONTEXT.md`, `CONTEXT-MAP.md`, or an ADR
40
+ Explain that domain documents remain lazy: do not create `CONTEXT.md`, `CONTEXT-MAP.md`, or an ADR
37
41
  directory until another Atelier skill has resolved terminology or made a decision worth recording.
38
42
 
43
+ Select or confirm the issue tracker:
44
+
45
+ 1. If `docs/agents/issue-tracker.md` already defines one, preserve it unless the developer asks to
46
+ change it.
47
+ 2. Otherwise recommend the tracker indicated by existing repository practice, then ask the
48
+ developer to confirm or describe their tracker.
49
+ 3. Accept GitHub, GitLab, local Markdown, another tracker described by the developer, or `none`.
50
+ 4. Record the chosen workflow in `docs/agents/issue-tracker.md`; do not install, initialize, or
51
+ create external tracker resources.
52
+
39
53
  Select the instruction file to edit:
40
54
 
41
55
  1. If both files exist, ask which file should own the agent guidance; do not duplicate it.
@@ -43,8 +57,13 @@ Select the instruction file to edit:
43
57
  3. Otherwise use root `CLAUDE.md` when it exists.
44
58
  4. If neither exists, ask which instruction file to create; do not choose on the developer's behalf.
45
59
 
46
- Show the developer the selected file, domain layout, and the exact `## Agent skills` block that will be
47
- written. Stop and wait for explicit approval.
60
+ Show the developer the selected file, domain layout, and exact contents for:
61
+
62
+ - the `## Agent skills` block;
63
+ - `docs/agents/issue-tracker.md` using `references/issue-tracker.md`;
64
+ - `docs/agents/domain.md` using `references/domain.md`.
65
+
66
+ Stop and wait for explicit approval.
48
67
 
49
68
  ## 3. Write After Approval
50
69
 
@@ -58,23 +77,27 @@ Add the following block to the selected instruction file:
58
77
  Use `atelier-orchestrator` at the start of development work. It selects an Inline Plan for bounded
59
78
  changes or a Spec-backed Plan when durable design and coordination artifacts are warranted.
60
79
 
61
- ### Domain documentation
80
+ ### Issue tracking
81
+
82
+ Read `docs/agents/issue-tracker.md` when issue tracking is relevant. It defines this repository's
83
+ tracker workflow; `plan.json` remains authoritative for Spec-backed task details and dependencies.
62
84
 
63
- Before working in a domain area, read root `CONTEXT-MAP.md` when present and follow it to the
64
- relevant context documentation. Otherwise, read root `CONTEXT.md` when present. Read relevant
65
- architectural decisions under `docs/adr/` and any context-specific ADR directories.
85
+ ### Domain documentation
66
86
 
67
- If these documents do not exist, proceed silently. Create or update them only when domain
68
- terminology or an architectural decision has been resolved.
87
+ Read `docs/agents/domain.md` before working in a domain area. It defines how to locate and use this
88
+ repository's context documents and ADRs.
69
89
  ```
70
90
 
71
- If an `## Agent skills` section already exists, update the `### Planning and implementation` and
72
- `### Domain documentation` subsections in place rather than appending duplicates. Preserve other
73
- subsections and all content outside the section, including user edits. Do not create any other
74
- files or directories.
91
+ If an `## Agent skills` section already exists, update the `### Planning and implementation`,
92
+ `### Issue tracking`, and `### Domain documentation` subsections in place rather than appending
93
+ duplicates. Preserve other subsections and all content outside the section, including user edits.
94
+
95
+ Create `docs/agents/` when needed, then write the approved tracker and domain documents. Do not
96
+ create any other files or directories.
75
97
 
76
98
  ## 4. Report
77
99
 
78
- State which instruction file changed and the chosen domain-document layout. Remind the developer
79
- that the layout is a convention only: the first domain-modelling or architectural-decision task
80
- creates the relevant documents when it has substantive content.
100
+ State which instruction file and agent documents changed, the selected tracker, and the chosen
101
+ domain-document layout. Remind the developer that the layout is a convention only: the first
102
+ domain-modelling or architectural-decision task creates the relevant documents when it has
103
+ substantive content.
@@ -0,0 +1,22 @@
1
+ # Domain Documentation
2
+
3
+ ## Layout
4
+
5
+ - **Mode:** [single-context or multi-context]
6
+ - **Context map:** [path or not used]
7
+ - **System ADRs:** [path]
8
+ - **Context ADRs:** [path pattern or not used]
9
+
10
+ ## Before Domain Work
11
+
12
+ 1. Read the context map when configured, then select the relevant context.
13
+ 2. Read that context's `CONTEXT.md` when it exists.
14
+ 3. Read ADRs relevant to the work.
15
+ 4. Proceed silently when these documents do not yet exist.
16
+
17
+ ## Ownership
18
+
19
+ - `CONTEXT.md` records domain language, distinctions, and business invariants.
20
+ - `CONTEXT-MAP.md` maps bounded contexts to their context documents and ADRs.
21
+ - ADRs record architectural decisions and trade-offs.
22
+ - This file only tells agents how to locate and consume those documents.
@@ -0,0 +1,35 @@
1
+ # Issue Tracker
2
+
3
+ ## Tracker
4
+
5
+ - **Provider:** [GitHub, GitLab, local Markdown, another tracker, or none]
6
+ - **Location:** [repository, project, URL, or local directory]
7
+ - **Tool or procedure:** [CLI, web workflow, or local-file convention]
8
+ - **Mirror Spec-backed tasks:** [yes or no]
9
+
10
+ ## Authority
11
+
12
+ `plan.json` is the source of truth for Spec-backed task descriptions, dependencies, and
13
+ validation. Tracker entries only mirror execution state when mirroring is enabled.
14
+
15
+ ## Operations
16
+
17
+ - **Create:** [how to create an issue or task]
18
+ - **Read:** [how to retrieve it]
19
+ - **Update:** [how to change status or add a note]
20
+ - **Complete:** [how to close it]
21
+ - **Dependencies:** [how blockers are represented]
22
+
23
+ ## Status Mapping
24
+
25
+ | Plan state | Tracker state |
26
+ |------------|---------------|
27
+ | Ready | [state] |
28
+ | In progress | [state] |
29
+ | Blocked | [state] |
30
+ | Complete | [state] |
31
+
32
+ ## Constraints
33
+
34
+ - [Required approvals, project conventions, or known limitations]
35
+ - Do not store credentials, tokens, or other secrets in this document.
@@ -38,7 +38,7 @@ behavior, motivation, or important implementation decision rather than restating
38
38
  | `build` | Build system or dependencies |
39
39
  | `revert` | Reverting a prior commit |
40
40
 
41
- For breaking changes, add `!` after the scope and include a `BREAKING CHANGE:` footer.
41
+ Breaking changes may use `!` after the type or scope, a `BREAKING CHANGE:` footer, or both.
42
42
  Include issue footers such as `Closes #123` only when the issue is known.
43
43
 
44
44
  ## Create a Commit
@@ -76,8 +76,9 @@ Before making any write, show:
76
76
 
77
77
  Ask for approval unless the user explicitly authorizes committing immediately. After
78
78
  approval, stage only the files for the approved commit with `git add -- <paths>` and
79
- commit with the proposed title and body. Do not amend, rebase, push, or include
80
- unapproved files.
79
+ inspect `git diff --cached --name-status` and `git diff --cached` again. If the staged snapshot
80
+ contains any unapproved file, stop and ask how to handle it. Then commit with the proposed title
81
+ and body. Do not amend, rebase, push, or include unapproved files.
81
82
 
82
83
  Repository commit hooks are the final message validation when configured. Never bypass
83
84
  a failing hook. Report the commit hash on success; report the error and leave changes
@@ -22,10 +22,10 @@ Scan the push URLs for the platform host — don't assume the remote is named
22
22
  ## Determine the Base Branch
23
23
 
24
24
  ```bash
25
- base=$(git symbolic-ref --quiet refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
25
+ base=$(git symbolic-ref --quiet "refs/remotes/<remote>/HEAD" 2>/dev/null | sed 's@^refs/remotes/<remote>/@@')
26
26
  if [ -z "$base" ]; then
27
27
  for candidate in main master; do
28
- git rev-parse --verify --quiet "origin/$candidate" >/dev/null && base=$candidate && break
28
+ git rev-parse --verify --quiet "<remote>/$candidate" >/dev/null && base=$candidate && break
29
29
  done
30
30
  fi
31
31
  echo "$base"
@@ -59,7 +59,7 @@ gh pr view --json state,number,url,headRefName
59
59
  GitLab:
60
60
 
61
61
  ```bash
62
- glab mr view --json state,iid,web_url,source_branch
62
+ glab mr view --output json
63
63
  ```
64
64
 
65
65
  - **Open** → use this PR/MR number/URL for comment and merge workflows.
@@ -73,4 +73,4 @@ glab mr view --json state,iid,web_url,source_branch
73
73
  ## Safety Guard
74
74
 
75
75
  Refuse to operate from the default branch — that's almost always a mistake. Ask the
76
- human to switch to a feature branch first.
76
+ human to switch to a feature branch first.
@@ -15,13 +15,13 @@ gh pr view --json state,number,url
15
15
 
16
16
  GitLab:
17
17
  ```bash
18
- glab mr view --json state,iid,web_url
18
+ glab mr view --output json
19
19
  ```
20
20
 
21
21
  - **Open** → show the URL, stop. Don't create a duplicate.
22
22
  - **Closed/merged** → check for new commits since the PR was closed:
23
23
  ```bash
24
- git log --oneline origin/<base>..HEAD
24
+ git log --oneline <remote>/<base>..HEAD
25
25
  ```
26
26
  New commits exist → proceed to create a new PR.
27
27
  No new commits → tell the human, stop.
@@ -61,9 +61,9 @@ ls PULL_REQUEST_TEMPLATE.md 2>/dev/null
61
61
  ## Step 3: Generate Title and Body
62
62
 
63
63
  ```bash
64
- git log --oneline origin/<base>..HEAD # commit list
65
- git log origin/<base>..HEAD --format='%H %s%n%b' # full commit messages
66
- git diff --stat origin/<base>...HEAD # changed files summary
64
+ git log --oneline <remote>/<base>..HEAD # commit list
65
+ git log <remote>/<base>..HEAD --format='%H %s%n%b' # full commit messages
66
+ git diff --stat <remote>/<base>...HEAD # changed files summary
67
67
  ```
68
68
 
69
69
  Derive the title from the most significant conventional commit. If commits are
@@ -85,15 +85,15 @@ Fill the body (template sections or fallback) from the commits and diff:
85
85
 
86
86
  ## Step 4: Create the PR
87
87
 
88
- Push the branch first if it isn't on the remote:
88
+ Show the human the selected remote, branch, generated title, and body before any write. Ask for
89
+ approval to push and create the PR/MR, or proceed if they explicitly said "just do it" up front.
90
+
91
+ Push the branch only after that approval if it is not on the remote:
89
92
 
90
93
  ```bash
91
- git push -u origin <branch-name>
94
+ git push -u <remote> <branch-name>
92
95
  ```
93
96
 
94
- **Show the human the generated title and body before creating.** Ask for confirmation,
95
- or proceed if they said "just do it" up front.
96
-
97
97
  ### GitHub
98
98
 
99
99
  | Mode | Command |
@@ -107,16 +107,16 @@ or proceed if they said "just do it" up front.
107
107
  | Mode | Command |
108
108
  |------|---------|
109
109
  | Auto-fill | `glab mr create --fill` |
110
- | Inline | `glab mr create --title "<title>" --description "$(cat <body-file>)"` |
111
- | Draft | `glab mr create --draft --title "<title>" --description "$(cat <body-file>)"` |
110
+ | Inline | Invoke `glab mr create` with title and description passed as separate arguments by the active command runner. |
111
+ | Draft | Invoke `glab mr create --draft` with title and description passed as separate arguments by the active command runner. |
112
112
 
113
113
  Default to inline with the generated body. **Never pass a multi-line body directly
114
114
  in the command string** (`--body "<body>"`) — quotes, backticks, and `$` in
115
115
  Markdown break shell quoting. Write the body to a temp file first, then pass it
116
- via stdin (`gh --body-file -`) or command substitution (`glab` has no
117
- description-file flag). Reserve direct inline strings for one-line bodies.
116
+ via stdin (`gh --body-file -`). For GitLab, use the active command runner's argument array rather
117
+ than constructing a shell command; never interpolate the body through command substitution.
118
118
 
119
119
  Use `--fill` when commits are clean and the body would be redundant. Use `--draft`
120
120
  when the human signals work in progress.
121
121
 
122
- After creation, show the PR/MR URL to the human. Done.
122
+ After creation, show the PR/MR URL to the human. Done.
@@ -73,14 +73,14 @@ Ask for explicit confirmation before running the merge command.
73
73
 
74
74
  ### GitHub
75
75
  ```bash
76
- gh pr merge <number> --squash --delete-branch
76
+ gh pr merge <number> --squash --delete-branch --match-head-commit <approved-head-sha>
77
77
  ```
78
78
  Alternatives: `--rebase`, `--merge`, `--auto` (merge automatically once required
79
79
  checks pass), or `--admin` (forced merge — see Step 2) per the human's request.
80
80
 
81
81
  ### GitLab
82
82
  ```bash
83
- glab mr merge <iid> --squash --remove-source-branch
83
+ glab mr merge <iid> --squash --remove-source-branch --sha <approved-head-sha>
84
84
  ```
85
85
  Alternatives: `--rebase`, or `--auto-merge` (merge once the pipeline succeeds —
86
86
  already the default while a pipeline is running) per the human's request.
@@ -91,4 +91,4 @@ already the default while a pipeline is running) per the human's request.
91
91
 
92
92
  Show the human the merge result — the merge commit SHA, the target branch tip, and
93
93
  whether the source branch was deleted. Suggest switching back to the base branch
94
- locally (`git checkout <base> && git pull`) if the source branch was removed. Done.
94
+ locally (`git checkout <base> && git pull`) if the source branch was removed. Done.
@@ -27,7 +27,7 @@ Inline review comments (file/line threads) — `--json comments` does NOT includ
27
27
  them, so fetch them separately:
28
28
 
29
29
  ```bash
30
- gh pr view <number> --json reviewThreads,reviews
30
+ gh api --paginate repos/<owner>/<repo>/pulls/<number>/comments
31
31
  ```
32
32
 
33
33
  Or, for a readable summary of top-level comments:
@@ -58,4 +58,4 @@ Show each comment with:
58
58
  - **File/line** (for inline review comments)
59
59
 
60
60
  Newest first. Group inline review comments by file/line, and threads by their
61
- parent comment. Don't post anything — this is read-only.
61
+ parent comment. Don't post anything — this is read-only.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: code-review
3
- description: Multi-agent code review with parallel specialized reviewers, architecture validation, and challenge validation. Use `rq` to request a review of diffs (defaults to main branch), `rs` to respond to review findings. Triggers on "review this", "review my code", "code review", "check for bugs", "audit this", when examining PRs, pull requests, branches, or diffs. Always asks user before applying fixes.
3
+ description: Multi-agent code review with parallel specialized reviewers, architecture validation, challenge validation, and durable handling of previously decided findings. Use `rq` to request a review of diffs (defaults to main branch), `rs` to respond to findings and record intentional non-fix decisions beside the relevant code. Triggers on "review this", "review my code", "code review", "check for bugs", "audit this", when examining PRs, pull requests, branches, or diffs. Always asks user before applying fixes or adding decision comments.
4
4
  argument-hint: "rq [branch] | rs"
5
5
  user-invocable: true
6
6
  ---
7
7
 
8
8
  # Code Review Skill
9
9
 
10
- Multi-agent code analysis with parallel reviewers and challenge validation.
10
+ Multi-agent code analysis with a simplicity gate, focused reviewers, and challenge validation.
11
11
 
12
12
  Uses explicit subagent dispatch patterns from [code-subagents](../code-subagents/SKILL.md).
13
13
 
@@ -35,24 +35,43 @@ Use these concrete harness subagent types. If an exact match is unavailable, use
35
35
  | `subagent_type` | Purpose |
36
36
  |-----------------|---------|
37
37
  | `sentinel` | Triage only: changed-file analysis, context retrieval, reviewer selection |
38
- | `oracle` | Parallel reviewer personas, evidence-based critique, failure-mode analysis, challenge validation |
38
+ | `oracle` | Reviewer personas, evidence-based critique, failure-mode analysis, challenge validation |
39
39
  | `architect` | Architecture, design-boundary, data-model, and API-contract review |
40
40
 
41
41
  Reviewer names such as `Security`, `Correctness`, `Maintainability`, and `PerformanceOperator` are prompt personas, not subagent types. Do not use `general`; it is not a harness agent.
42
42
 
43
+ `Simplicity` is a mandatory reviewer persona for migrations, refactors, and architectural
44
+ changes. Run it before the other reviewers; do not include it in the parallel reviewer batch.
45
+
46
+ ## Review Priority
47
+
48
+ Review in this order:
49
+
50
+ 1. User goal and prior behavior
51
+ 2. Necessity and deletion
52
+ 3. Correctness and security
53
+ 4. Architecture
54
+ 5. SDD compliance
55
+
56
+ Treat the SDD as evidence, not as authority for whether code is necessary. A finding that
57
+ would expand behavior or infrastructure requires user approval. Never apply it as an ordinary
58
+ review fix.
59
+
43
60
  ### rq (Request Review) Subagents
44
61
 
45
62
  | Step | Parallel | Purpose |
46
63
  |------|----------|---------|
47
64
  | 1. Triage | No | Detect context, select reviewers, identify relevant skills to look for |
48
- | 2. Reviewers | Yes (per reviewer) | Specialty analysis using reviewer personas |
49
- | 3. Synthesis | No | Deduplicate findings inline |
50
- | 4. Architect | No | Architecture review |
51
- | 5. Challenge | No | Validate findings with sequential-thinking |
65
+ | 2. Simplicity | No | Mandatory necessity and deletion review for migrations, refactors, and architectural changes |
66
+ | 3. Reviewers | Yes (per reviewer) | Correctness, security, and other specialty analysis |
67
+ | 4. Synthesis | No | Deduplicate findings inline |
68
+ | 5. Architect | No | Architecture review |
69
+ | 6. SDD + Challenge | No | Check SDD compliance last, then validate findings |
52
70
 
53
71
  ### rs (Respond to Review)
54
72
 
55
- No subagents. Interactive interview mode — see [rs.md](./references/rs.md).
73
+ No subagents. Interactive interview mode that plans fixes and records approved non-fix
74
+ resolutions as tagged code comments — see [rs.md](./references/rs.md).
56
75
 
57
76
  ## Dispatch Patterns
58
77
 
@@ -12,6 +12,23 @@
12
12
  - Files reviewed: N
13
13
  - Findings: N Critical, N High, N Medium, N Low
14
14
  - Pre-existing: N | Introduced: N
15
+ - Honored decisions: N
16
+
17
+ ## Unnecessary scope
18
+
19
+ - {Unrequested behavior or infrastructure, or `None`}
20
+
21
+ ## Deletion candidates
22
+
23
+ - {Files, symbols, wrappers, or tests that can be removed, or `None`}
24
+
25
+ ## Smallest viable alternative
26
+
27
+ {The smallest implementation that preserves the user goal and prior behavior, or `None`}
28
+
29
+ ## Required SDD corrections
30
+
31
+ - {Changes needed so the SDD records the smaller result, or `None`}
15
32
 
16
33
  ## Critical (Fix before merge)
17
34
 
@@ -28,6 +45,8 @@
28
45
  {Detailed explanation of why this was flagged}
29
46
  </details>
30
47
  - **Suggestion**: {How to fix}
48
+ - **Requires user approval**: {Yes when the suggestion expands behavior or infrastructure; otherwise No}
49
+ - **Prior decision reopened**: {Why the recorded rationale no longer applies; omit when not applicable}
31
50
 
32
51
  ## High Priority
33
52
 
@@ -45,8 +64,17 @@
45
64
  - {What the code does well}
46
65
  - {Smart patterns to keep}
47
66
  - {Good practices observed}
67
+
68
+ ## Honored Decisions
69
+
70
+ - `{comment-file}:{line}` — {Concern}: {Short rationale and why it still applies}
48
71
  ```
49
72
 
73
+ Omit the **Honored Decisions** section when there are no honored decisions. Keep each entry to
74
+ one compact bullet; do not repeat the full finding, impact, reasoning, or suggestion.
75
+ Severity and pre-existing/introduced statistics count active findings only.
76
+ Always render the four simplicity sections, using `None` when no evidence supports an item.
77
+
50
78
  ---
51
79
 
52
80
  ## Inline Finding Format
@@ -60,6 +88,8 @@ Pre-existing: {Yes/No}
60
88
  Issue: {Brief description}
61
89
  Reasoning: {Why this matters}
62
90
  Suggestion: {Fix}
91
+ Requires user approval: {Yes/No}
92
+ Prior decision reopened: {Why the recorded rationale no longer applies; omit when not applicable}
63
93
  ```
64
94
 
65
95
  ---
@@ -98,6 +128,9 @@ Each finding includes a collapsible section with:
98
128
  3. **Evidence**: Code snippets, references, or examples
99
129
  4. **Alternative view**: If uncertain, what else to consider
100
130
 
131
+ When a recorded decision is reopened, also identify the comment location and the evidence that
132
+ invalidated its rationale or met its reconsideration condition.
133
+
101
134
  Example:
102
135
  ```markdown
103
136
  <details>
@@ -130,6 +163,23 @@ Implements OAuth login flow with token refresh. Generally well-structured with p
130
163
  - Files reviewed: 1
131
164
  - Findings: 1 Critical, 1 High, 0 Medium, 2 Low
132
165
  - Pre-existing: 1 | Introduced: 3
166
+ - Honored decisions: 0
167
+
168
+ ## Unnecessary scope
169
+
170
+ - None
171
+
172
+ ## Deletion candidates
173
+
174
+ - None
175
+
176
+ ## Smallest viable alternative
177
+
178
+ None
179
+
180
+ ## Required SDD corrections
181
+
182
+ - None
133
183
 
134
184
  ## Critical (Fix before merge)
135
185
 
@@ -198,3 +248,5 @@ Implements OAuth login flow with token refresh. Generally well-structured with p
198
248
  2. **Pre-existing detection** requires git blame check (not just diff)
199
249
  3. **Extended reasoning** should be collapsible in markdown renderers
200
250
  4. **Positive findings** help balance the review tone
251
+ 5. **Honored decisions** stay out of active severity counts and are summarized without restating the finding
252
+ 6. **Expansion findings** require user approval even when an SDD proposes the expansion