@use-the-fork/spindle 0.0.2 → 0.2.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 (82) hide show
  1. package/build/Assets/Blueprints/Catalog.js +19 -9
  2. package/build/Assets/Blueprints/agents/sdd-implementer.agent.md +6 -6
  3. package/build/Assets/Blueprints/agents/sdd-orchestrator.agent.md +4 -7
  4. package/build/Assets/Blueprints/skills/author-agent/SKILL.md +9 -8
  5. package/build/Assets/Blueprints/skills/author-instruction/SKILL.md +9 -8
  6. package/build/Assets/Blueprints/skills/author-skill/SKILL.md +9 -8
  7. package/build/Assets/Blueprints/skills/grill/SKILL.md +3 -3
  8. package/build/Assets/Blueprints/skills/int-subagent-driven-dev/SKILL.md +16 -12
  9. package/build/Assets/Blueprints/skills/int-subagent-driven-dev/assets/implementer-prompt.md +2 -2
  10. package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/corrective-rounds.md +1 -1
  11. package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/example-workflow.md +14 -12
  12. package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/full-spec.md +43 -23
  13. package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/review-inputs.md +7 -7
  14. package/build/Assets/Blueprints/skills/int-testing-agent-guidance/SKILL.md +2 -2
  15. package/build/Assets/Blueprints/skills/int-writing-skills/SKILL.md +2 -2
  16. package/build/Assets/Blueprints/skills/int-writing-skills/references/testing-skills.md +2 -2
  17. package/build/Assets/Blueprints/skills/{asd-ste100 → ref-asd-ste100}/SKILL.md +1 -1
  18. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/SKILL.md +38 -0
  19. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/concurrency-and-pools.md +73 -0
  20. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/connectors.md +99 -0
  21. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/data-transfer-objects.md +104 -0
  22. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/handling-failures.md +95 -0
  23. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/requests.md +111 -0
  24. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/responses.md +56 -0
  25. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/sending-requests.md +42 -0
  26. package/build/Assets/Blueprints/skills/ref-php-laravel-saloon-api-integrations/references/testing.md +119 -0
  27. package/build/Assets/Blueprints/skills/{author-design → sdd-author-design}/SKILL.md +12 -4
  28. package/build/Assets/Blueprints/skills/{grill-design → sdd-grill-design}/SKILL.md +1 -1
  29. package/build/Assets/Blueprints/skills/{implement-spec → sdd-implement-spec}/SKILL.md +6 -8
  30. package/build/Assets/Blueprints/skills/{to-spec → sdd-to-spec}/SKILL.md +3 -3
  31. package/build/Assets/Blueprints/skills/{to-tickets → sdd-to-tickets}/SKILL.md +3 -3
  32. package/build/Assets/Blueprints/skills/{setup-project → spindle-project-setup}/SKILL.md +4 -4
  33. package/build/Assets/Blueprints/skills/{update-tooling → spindle-tooling-update}/SKILL.md +5 -5
  34. package/build/Assets/Templates/project/copilot-instructions.md +3 -9
  35. package/build/Assets/Templates/project/ticket-tracker.md +14 -6
  36. package/build/BlueprintManagement/Commands/Prompts.js +1 -1
  37. package/build/SubagentDrivenDevelopment/Commands/ChecksRecordCommand.js +27 -5
  38. package/build/SubagentDrivenDevelopment/Commands/ChecksRequireCommand.js +31 -7
  39. package/build/SubagentDrivenDevelopment/Commands/CorrectCommand.js +0 -1
  40. package/build/SubagentDrivenDevelopment/Commands/FinishCommand.js +2 -1
  41. package/build/SubagentDrivenDevelopment/Commands/ImplementCommand.js +2 -0
  42. package/build/SubagentDrivenDevelopment/Commands/{ClaimCommand.js → IntegrateCommand.js} +8 -7
  43. package/build/SubagentDrivenDevelopment/Commands/ReviewCommand.js +9 -9
  44. package/build/SubagentDrivenDevelopment/Commands/StartCommand.js +23 -0
  45. package/build/SubagentDrivenDevelopment/Commands/StatusCommand.js +5 -0
  46. package/build/SubagentDrivenDevelopment/Commands/groups.js +3 -2
  47. package/build/SubagentDrivenDevelopment/Evidence/GitEvidence.js +188 -37
  48. package/build/SubagentDrivenDevelopment/Models/Workflow.js +0 -2
  49. package/build/SubagentDrivenDevelopment/Persistence/AssignmentSchema.js +4 -0
  50. package/build/SubagentDrivenDevelopment/Persistence/CheckSchema.js +4 -13
  51. package/build/SubagentDrivenDevelopment/Persistence/LedgerRepository.js +66 -5
  52. package/build/SubagentDrivenDevelopment/Persistence/ProgressSchema.js +54 -4
  53. package/build/SubagentDrivenDevelopment/Persistence/ReviewSchema.js +4 -0
  54. package/build/SubagentDrivenDevelopment/Policies/AssignmentPolicy.js +0 -3
  55. package/build/SubagentDrivenDevelopment/Policies/CheckPolicy.js +6 -3
  56. package/build/SubagentDrivenDevelopment/Policies/ReadinessPolicy.js +16 -6
  57. package/build/SubagentDrivenDevelopment/Policies/ReviewPolicy.js +16 -2
  58. package/build/SubagentDrivenDevelopment/Policies/WorkflowPolicy.js +8 -8
  59. package/build/SubagentDrivenDevelopment/Services/AssignmentService.js +73 -51
  60. package/build/SubagentDrivenDevelopment/Services/ChecksService.js +376 -21
  61. package/build/SubagentDrivenDevelopment/Services/CorrectionService.js +83 -14
  62. package/build/SubagentDrivenDevelopment/Services/DeliveryCorrectionService.js +3 -7
  63. package/build/SubagentDrivenDevelopment/Services/DeliveryService.js +43 -38
  64. package/build/SubagentDrivenDevelopment/Services/FeatureCreationService.js +1 -1
  65. package/build/SubagentDrivenDevelopment/Services/FeatureFinalizationService.js +1202 -0
  66. package/build/SubagentDrivenDevelopment/Services/FeatureInspectionService.js +41 -49
  67. package/build/SubagentDrivenDevelopment/Services/FeatureWorktreeService.js +544 -0
  68. package/build/SubagentDrivenDevelopment/Services/ReadinessService.js +2 -2
  69. package/build/SubagentDrivenDevelopment/Services/ReviewService.js +39 -3
  70. package/build/SubagentDrivenDevelopment/Services/SubmissionService.js +4 -1
  71. package/build/SubagentDrivenDevelopment/Services/TicketIntegrationService.js +621 -0
  72. package/build/SubagentDrivenDevelopment/Services/TicketService.js +3 -0
  73. package/build/SubagentDrivenDevelopment/Services/TicketWorktreeService.js +317 -0
  74. package/build/SubagentDrivenDevelopment/Services/WorkflowRecordsCommitter.js +336 -0
  75. package/build/SubagentDrivenDevelopment/SubagentDrivenDevelopmentServiceProvider.js +18 -8
  76. package/build/TemplateRendering/Computed/ComputedVariableProviders.js +2 -0
  77. package/build/TemplateRendering/Computed/Providers/AuthoringFlowchartProvider.js +26 -0
  78. package/package.json +2 -2
  79. package/build/SubagentDrivenDevelopment/Services/IntegrationService.js +0 -258
  80. /package/build/Assets/Blueprints/skills/{asd-ste100 → ref-asd-ste100}/CREDITS.MD +0 -0
  81. /package/build/Assets/Blueprints/skills/{asd-ste100 → ref-asd-ste100}/examples/before-after.md +0 -0
  82. /package/build/Assets/Blueprints/skills/{asd-ste100 → ref-asd-ste100}/references/writing-rules.md +0 -0
@@ -21,7 +21,12 @@ export const blueprintCatalog = {
21
21
  stacks: [],
22
22
  canReview: true,
23
23
  },
24
- "sdd-task-reviewer": { path: "sdd-task-reviewer.agent.md", status: "active", stacks: [] },
24
+ "sdd-task-reviewer": {
25
+ path: "sdd-task-reviewer.agent.md",
26
+ status: "active",
27
+ stacks: [],
28
+ canReview: true,
29
+ },
25
30
  "shared-explore": { path: "shared-explore.agent.md", status: "active", stacks: [] },
26
31
  "shared-r": { path: "shared-r.agent.md", status: "active", stacks: [] },
27
32
  "shared-rw": { path: "shared-rw.agent.md", status: "active", stacks: [] },
@@ -60,16 +65,16 @@ export const blueprintCatalog = {
60
65
  },
61
66
  },
62
67
  skills: {
63
- "asd-ste100": { path: "asd-ste100/", status: "active", stacks: [] },
68
+ "ref-asd-ste100": { path: "ref-asd-ste100/", status: "active", stacks: [] },
64
69
  "author-agent": { path: "author-agent/", status: "active", stacks: [] },
65
- "author-design": { path: "author-design/", status: "active", stacks: [] },
70
+ "sdd-author-design": { path: "sdd-author-design/", status: "active", stacks: [] },
66
71
  "author-instruction": { path: "author-instruction/", status: "active", stacks: [] },
67
72
  "author-skill": { path: "author-skill/", status: "active", stacks: [] },
68
73
  grill: { path: "grill/", status: "active", stacks: [] },
69
- "grill-design": { path: "grill-design/", status: "active", stacks: [] },
74
+ "sdd-grill-design": { path: "sdd-grill-design/", status: "active", stacks: [] },
70
75
  "grill-with-docs": { path: "grill-with-docs/", status: "active", stacks: [] },
71
76
  implement: { path: "implement/", status: "active", stacks: [] },
72
- "implement-spec": { path: "implement-spec/", status: "active", stacks: [] },
77
+ "sdd-implement-spec": { path: "sdd-implement-spec/", status: "active", stacks: [] },
73
78
  "improve-codebase-architecture": {
74
79
  path: "improve-codebase-architecture/",
75
80
  status: "active",
@@ -102,9 +107,14 @@ export const blueprintCatalog = {
102
107
  "int-writing-instruction": { path: "int-writing-instruction/", status: "active", stacks: [] },
103
108
  "int-writing-skills": { path: "int-writing-skills/", status: "active", stacks: [] },
104
109
  retrospective: { path: "retrospective/", status: "active", stacks: [] },
105
- "setup-project": { path: "setup-project/", status: "active", stacks: [] },
106
- "to-spec": { path: "to-spec/", status: "active", stacks: [] },
107
- "to-tickets": { path: "to-tickets/", status: "active", stacks: [] },
108
- "update-tooling": { path: "update-tooling/", status: "active", stacks: [] },
110
+ "ref-php-laravel-saloon-api-integrations": {
111
+ path: "ref-php-laravel-saloon-api-integrations/",
112
+ status: "active",
113
+ stacks: ["php-laravel"],
114
+ },
115
+ "sdd-to-spec": { path: "sdd-to-spec/", status: "active", stacks: [] },
116
+ "sdd-to-tickets": { path: "sdd-to-tickets/", status: "active", stacks: [] },
117
+ "spindle-project-setup": { path: "spindle-project-setup/", status: "active", stacks: [] },
118
+ "spindle-tooling-update": { path: "spindle-tooling-update/", status: "active", stacks: [] },
109
119
  },
110
120
  };
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  name: sdd-implementer
3
- description: "Use when an orchestrator assigns one ticket or corrective round for subagent-driven development in an existing shared checkout."
3
+ description: "Use when an orchestrator assigns one ticket or corrective round in its isolated worktree."
4
4
  tools: [read, search, edit, execute, read_skill, list_skills, skill]
5
5
  user-invocable: false
6
6
  agents: []
7
7
  metadata:
8
8
  spindle:
9
- version: 1.4.1
9
+ version: 1.5.0
10
10
  ---
11
11
 
12
12
  # SDD implementer
13
13
 
14
- Implement one orchestrator-assigned ticket in an existing shared checkout. The orchestrator is the controller; it owns dispatch, execution states, acceptance, and the ticket-wide checks. Work sequentially with other editors and return evidence for the assigned ticket.
14
+ Implement one orchestrator-assigned ticket in its isolated worktree. The orchestrator owns dispatch, execution states, acceptance, and the ticket-wide checks. Other tickets may run concurrently in their own worktrees.
15
15
 
16
16
  ## Required assignment gate
17
17
 
@@ -20,14 +20,14 @@ Before entering the flowchart, loading implementation skills, inspecting the che
20
20
  | Field | Required content |
21
21
  | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
22
22
  | `TICKET_ID` | The single assigned ticket identifier. |
23
- | `CHECKOUT` | Absolute path to the existing shared checkout. |
23
+ | `CHECKOUT` | Absolute path to the assigned ticket worktree. |
24
24
  | `ABSOLUTE_SOURCE_POINTERS` | Absolute paths to the canonical ticket, comments, and spec/brief. Explicitly identify any source that does not apply. |
25
25
  | `CRITERIA_AND_SEAMS` | Acceptance criteria and confirmed test seams. |
26
26
  | `DEPENDENCIES_AND_SNAPSHOT` | Completed dependencies and starting revision, including existing dirty/untracked changes. Explicitly state when there are no dependencies or changes. |
27
27
  | `FILE_SCOPE` | Allowed code, test, and `.scratch` files. |
28
28
  | `CHECKS_AND_DIRECTORY` | Approved project checks and their test working directory; identify any checks explicitly scheduled for this worker. |
29
29
  | `PERMISSIONS` | Allowed actions, including explicit commit authorization or denial. |
30
- | `REPORT_PATH` | Assigned `.scratch` report path within `FILE_SCOPE`, absolute or relative to `CHECKOUT`. |
30
+ | `REPORT_PATH` | Assigned absolute report path in the canonical feature workspace, within `FILE_SCOPE`. |
31
31
  | `MODE` | `INITIAL` or `CORRECTIVE`. |
32
32
 
33
33
  Accept populated template labels or equivalent structured fields, including grouped headings with labeled values beneath them. Legacy `For a fix: NONE` selects initial mode; populated fix context selects corrective mode. For `CORRECTIVE`, read `references/implementer-corrections.md` in the `int-subagent-driven-dev` skill before accepting the gate. Initial assignments need no corrective fields or resource.
@@ -74,4 +74,4 @@ Save the report at `REPORT_PATH` with:
74
74
  - For corrective mode, include the finding evidence required by `references/implementer-corrections.md` in the `int-subagent-driven-dev` skill.
75
75
  - A concise hand-back summary; include commit identifiers only when authorized.
76
76
 
77
- Update only assigned tracker files in `.scratch`, preserving history. Failed or unavailable required implementer checks block completion. Return the report path and concise summary, then stop. If the assignment gate is incomplete, return the context request instead of writing a report.
77
+ Write only the assigned report in the canonical feature workspace; the controller owns tracker updates. Failed or unavailable required implementer checks block completion. Return the report path and concise summary, then stop. If the assignment gate is incomplete, return the context request instead of writing a report.
@@ -4,10 +4,10 @@ description: "Use when coordinating feature tickets, implementation, review, and
4
4
  argument-hint: The feature spec, tickets, constraints, and permissions.
5
5
  user-invocable: true
6
6
  tools: [vscode/askQuestions, execute, read, agent, edit, web, todo, read_skill, list_skills, skill]
7
- agents: [sdd-implementer, sdd-reviewer, sdd-code-reviewer, shared-explore]
7
+ agents: [sdd-implementer, sdd-task-reviewer, sdd-reviewer, sdd-code-reviewer, shared-explore]
8
8
  metadata:
9
9
  spindle:
10
- version: 1.2.1
10
+ version: 1.4.0
11
11
  ---
12
12
 
13
13
  You are the SDD orchestration agent for feature tickets and feature-level delivery. Follow the user's scope and permissions.
@@ -23,11 +23,8 @@ the current harness before dispatch. Catalog `canReview: true` establishes
23
23
  eligibility only; it does not establish harness access. Never create an
24
24
  automatic or default specialist batch.
25
25
 
26
- Close a ticket with `sdd ticket update --status closed` after its acceptance
27
- criteria are met. Do not require per-ticket accept or integration commands.
28
- Feature completion requires every ticket closed, current passing feature checks
29
- and reviews, and no unresolved delivery blockers. Use the normal Git workflow;
30
- never ask the CLI to stage, commit, stash, discard, push, or publish.
26
+ Finish only after aggregate review, the final merge, and its declared checks.
27
+ Preserve worktrees and records whenever validation or cleanup is blocked.
31
28
 
32
29
  <communication-style>
33
30
  - **ALWAYS** think and respond in the same spoken language the prompt was written in.
@@ -1,26 +1,27 @@
1
1
  ---
2
2
  name: author-agent
3
3
  description: Create or revise a workspace custom agent from requirements.
4
- argument-hint: "[--test] <agent idea or requirements>"
4
+ argument-hint: "<agent idea or requirements>"
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
7
7
  metadata:
8
8
  spindle:
9
- version: 1.0.0
9
+ version: 1.0.2
10
10
  ---
11
11
 
12
12
  Create or update a project agent in `.github/agents/<agent-name>.agent.md` based on the user's requirements.
13
13
 
14
- ## Required skills
14
+ ## Authoring flow
15
15
 
16
- Before drafting or editing, read:
16
+ {{ computed.authoring_flowchart }}
17
+
18
+ Before grilling, read and consider only the `int-writing-for-agents` and `ref-asd-ste100` skills. Do not follow their workflows or load skills they reference yet.
19
+
20
+ After the user confirms shared understanding, load and follow:
17
21
 
18
22
  - **REQUIRED:** `int-writing-agents`
19
- - **REQUIRED:** `int-writing-for-agents`
20
23
  - **REQUIRED:** `int-testing-agent-guidance`
21
24
 
22
- These skills define the complete authoring workflow. Every agent change requires the baseline and focused validation specified by `int-testing-agent-guidance`; `--test` does not disable or replace them.
23
-
24
- When `--test` is present, also run the expanded testing workflow in `int-testing-agent-guidance`.
25
+ Apply the clarity rules from the `ref-asd-ste100` skill. Include a before/after table only when the user requests one. Run the core and expanded testing workflows in `int-testing-agent-guidance` for every authoring request.
25
26
 
26
27
  Do not modify unrelated files. Report the skill changed and validation performed, including any blockers or unverified requirements.
@@ -1,27 +1,28 @@
1
1
  ---
2
2
  name: author-instruction
3
3
  description: Create or revise workspace-scoped Copilot instruction files from the user's requirements
4
- argument-hint: "[--test] <instruction requirements>"
4
+ argument-hint: "<instruction requirements>"
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
7
7
  metadata:
8
8
  spindle:
9
- version: 1.0.0
9
+ version: 1.0.2
10
10
  ---
11
11
 
12
12
  Create or update a project instruction in `.github/instructions/**/*.instructions.md` based on the user's requirements.
13
13
 
14
- ## Required skills
14
+ ## Authoring flow
15
15
 
16
- Before drafting or editing, read:
16
+ {{ computed.authoring_flowchart }}
17
+
18
+ Before grilling, read and consider only the `int-writing-for-agents` and `ref-asd-ste100` skills. Do not follow their workflows or load skills they reference yet.
19
+
20
+ After the user confirms shared understanding, load and follow:
17
21
 
18
22
  - **REQUIRED:** `int-writing-instruction`
19
- - **REQUIRED:** `int-writing-for-agents`
20
23
  - **REQUIRED:** `int-testing-agent-guidance`
21
24
 
22
- These skills define the complete authoring workflow. Every instruction change requires the baseline and focused validation specified by `int-testing-agent-guidance`; `--test` does not disable or replace them.
23
-
24
- When `--test` is present, also run the expanded testing workflow in `int-testing-agent-guidance`.
25
+ Apply the clarity rules from the `ref-asd-ste100` skill. Include a before/after table only when the user requests one. Run the core and expanded testing workflows in `int-testing-agent-guidance` for every authoring request.
25
26
 
26
27
  Verify any `applyTo` glob against concrete in-scope files and near misses; every intended file must match, and out-of-scope files must not.
27
28
 
@@ -1,26 +1,27 @@
1
1
  ---
2
2
  name: author-skill
3
3
  description: Create or update a project skill from the user's requirements
4
- argument-hint: "[--test] <skill idea or requirements>"
4
+ argument-hint: "<skill idea or requirements>"
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
7
7
  metadata:
8
8
  spindle:
9
- version: 1.0.0
9
+ version: 1.0.2
10
10
  ---
11
11
 
12
12
  Create or update a project skill in `.github/skills/<skill-name>/SKILL.md` based on the user's requirements.
13
13
 
14
- ## Required skills
14
+ ## Authoring flow
15
15
 
16
- Before drafting or editing, read:
16
+ {{ computed.authoring_flowchart }}
17
+
18
+ Before grilling, read and consider only the `int-writing-for-agents` and `ref-asd-ste100` skills. Do not follow their workflows or load skills they reference yet.
19
+
20
+ After the user confirms shared understanding, load and follow:
17
21
 
18
22
  - **REQUIRED:** `int-writing-skills`
19
- - **REQUIRED:** `int-writing-for-agents`
20
23
  - **REQUIRED:** `int-testing-agent-guidance`
21
24
 
22
- These skills define the complete authoring workflow. Every skill change requires the baseline and focused validation specified by `int-testing-agent-guidance`; `--test` does not disable or replace them.
23
-
24
- When `--test` is present, also run the expanded testing workflow in `int-testing-agent-guidance`.
25
+ Apply the clarity rules from the `ref-asd-ste100` skill. Include a before/after table only when the user requests one. Run the core and expanded testing workflows in `int-testing-agent-guidance` for every authoring request.
25
26
 
26
27
  Do not modify unrelated files. Report the skill changed and validation performed, including any blockers or unverified requirements.
@@ -4,7 +4,7 @@ description: "Grill the user relentlessly about a plan, decision, or idea. Use w
4
4
  user-invocable: false
5
5
  metadata:
6
6
  spindle:
7
- version: 1.0.2
7
+ version: 1.0.3
8
8
  ---
9
9
 
10
10
  Stress-test the user's proposal until its decisions are explicit and you share an understanding. Treat dependent decisions as a **design tree**.
@@ -16,13 +16,13 @@ Stress-test the user's proposal until its decisions are explicit and you share a
16
16
  3. Apply the answer and continue the queue, revising or skipping questions whose premises changed. Newly unlocked decisions wait for the next round.
17
17
  4. When the queue is exhausted, recompute the frontier and start the next round.
18
18
 
19
- Label each question visibly as **Round <R>, Question <Q> of <TOTAL> - <title>**, in chat or the tool's user-visible title. Start both counters at 1; increment the question number for each question asked and reset it to 1 when the round advances. The first question announces the new round without exposing the remaining queue.
19
+ Label each question visibly as **Round <R>, Question <Q> - <title>**, in chat or the tool's user-visible title. Start both counters at 1; increment the question number for each question asked and reset it to 1 when the round advances. The first question announces the new round without exposing the remaining queue.
20
20
 
21
21
  Include the context needed to decide and a recommended answer. Phrase confirmations so "yes" accepts the recommendation; for choices, identify the recommended option.
22
22
 
23
23
  Example opening:
24
24
 
25
- > **Round 1, Question 1 of 5 - Output format**
25
+ > **Round 1, Question 1 - Output format**
26
26
  >
27
27
  > CSV meets the agreed export requirements. I recommend CSV. Shall we use it?
28
28
 
@@ -4,15 +4,13 @@ description: "This is an internal skill do not load it unless explicitly require
4
4
  user-invocable: false
5
5
  metadata:
6
6
  spindle:
7
- version: 1.4.0
7
+ version: 1.6.0
8
8
  ---
9
9
 
10
10
  # Subagent-Driven Development
11
11
 
12
12
  The controller coordinates a feature's tickets, workers, checks, reviews, and completion. The feature workspace and `sdd.json` are the source of truth for structured ticket and delivery state; each ticket Markdown file holds its requirements, acceptance criteria, and discussion.
13
13
 
14
- Use the existing checkout and preserve user changes and report history. TDD is optional; write appropriate tests and record verification evidence. Load and follow `int-verification-before-completion` before claiming work is complete. Serialize implementation and fixes, and keep implementation edits frozen while a review batch is running.
15
-
16
14
  ## Workflow map
17
15
 
18
16
  Before acting on each chart node, announce `Step <node ID> - <node label>`, including initial entries, resumed steps, and loop re-entries. After each decision, state its result and selected branch before entering the target node.
@@ -20,7 +18,7 @@ Before acting on each chart node, announce `Step <node ID> - <node label>`, incl
20
18
  ```mermaid
21
19
  flowchart TD
22
20
  A[Restore feature state and readiness] --> B{Ready ticket available?}
23
- B -- Yes --> C[Claim, implement, verify, submit, close ticket]
21
+ B -- Yes --> C[Implement, review, integrate, and validate tickets]
24
22
  C --> A
25
23
  B -- No --> D{All tickets closed?}
26
24
  D -- No --> E[Resolve prerequisites or record blocker]
@@ -41,21 +39,27 @@ flowchart TD
41
39
 
42
40
  ## Ticket workflow
43
41
 
44
- 1. Read the feature spec, tickets, applicable instructions, glossary, and ADRs. Inspect `spindle sdd status --spec <path>` and `spindle sdd ready --spec <path>` to understand blockers, dependencies, and available work.
45
- 2. Create a ticket for independently actionable work with `spindle sdd ticket create`. Fill its `[REQUIREMENTS]` and `[ACCEPTANCE CRITERIA]` placeholders. Use `spindle sdd ticket update` for tracker status, explicit blockers, and dependencies; the supported lifecycle is `open`, `in-progress`, and `closed`. Readiness is derived from status, blockers, and dependencies rather than stored as a separate triage state.
46
- 3. Claim a ready ticket with `spindle sdd claim`. Dispatch implementation with `spindle sdd implement`; pass the worker the exact assignment and report destination. Submit its report with `spindle sdd submit --role implementation`.
47
- 4. Run relevant tests and checks and record their actual outcomes against the current snapshot. TDD is not required, but verification is.
48
- 5. Address implementation and verification gaps, then close the ticket with `spindle sdd ticket update --status closed` once its acceptance criteria are met. Do not use per-ticket accept or integrate steps.
42
+ 1. Read the feature spec, tickets, applicable instructions, glossary, and ADRs. Inspect `{{ computed.spindle_package_manager }} spindle sdd status --spec <path>` and `{{ computed.spindle_package_manager }} spindle sdd ready --spec <path>` to understand blockers, dependencies, and available work. Inspect feature records for secrets and start the feature worktree with `{{ computed.spindle_package_manager }} spindle sdd start --spec <path> --workspace <external-directory> --confirm-records`. Handle unrelated changes before starting. Run subsequent controller commands in the feature worktree using its returned spec path.
43
+ 2. Create a ticket for independently actionable work with `{{ computed.spindle_package_manager }} spindle sdd ticket create`. Fill its `[REQUIREMENTS]` and `[ACCEPTANCE CRITERIA]` placeholders. Use `{{ computed.spindle_package_manager }} spindle sdd ticket update` for tracker status, explicit blockers, and dependencies; the supported lifecycle is `open`, `in-progress`, and `closed`. Readiness is derived from status, blockers, and dependencies rather than stored as a separate triage state.
44
+ 3. Choose a safe concurrency limit. Use `{{ computed.spindle_package_manager }} spindle sdd implement --workspace <external-directory>` for each ready ticket and dispatch the returned assignment until capacity is full. As workers finish, dispatch other ready independent tickets without waiting for unrelated work. Inspect changed canonical records for secrets and pass `--confirm-records` before any automatic record commit. Each worker uses its own worktree. Give workers the canonical source and report paths; submit each implementation report with `{{ computed.spindle_package_manager }} spindle sdd submit --role implementation`.
45
+ 4. Have each implementer commit its changes. Record relevant checks and submit reviews against that exact ticket commit. Keep its worktree frozen during review; any changed commit requires fresh checks and review.
46
+ 5. Use `{{ computed.spindle_package_manager }} spindle sdd integrate` to merge reviewed work, inspecting changed canonical records and passing `--confirm-records` before any automatic record commit. Serialize merges and their post-merge checks. Declare the full non-empty check list with `checks require --scope post-merge`, run it in the feature worktree, and record results with `checks record --scope post-merge`. Passing checks close the ticket automatically and unblock eligible dependents.
47
+
48
+ If closure is blocked by a ticket blocker or unmet dependency, resolve it and repeat `checks require --scope post-merge` with the same complete list. Passing evidence is retained; rerun checks if their snapshot became stale.
49
+
50
+ If a post-merge check fails, keep other merges blocked. Fast-forward the clean ticket worktree to the recorded failed merge commit, then use `sdd correct --check-failure <command>` to dispatch a fix. Commit, check, and review the fix before merging it and rerunning the frozen post-merge check list.
51
+
52
+ If integration reports a conflict, rebase the ticket worktree onto the current feature branch, resolve and commit the conflict there, and use `sdd checks require --rebase-baseline` with an existing required command. Run fresh checks and obtain fresh review before retrying integration. Preserve all uncommitted changes and stop if recovery is unsafe.
49
53
 
50
- If work is interrupted, inspect `spindle sdd status` and use `spindle sdd resume` to restore the recorded assignment. Preserve existing reports, findings, and evidence. Do not invent missing results or reset progress.
54
+ If work is interrupted, inspect `{{ computed.spindle_package_manager }} spindle sdd status` and use `{{ computed.spindle_package_manager }} spindle sdd resume` to restore the recorded assignment. Preserve existing reports, findings, and evidence. Do not invent missing results or reset progress.
51
55
 
52
56
  ## Feature review and completion
53
57
 
54
- After every ticket is closed, establish current feature-level checks and request the comprehensive review with `spindle sdd review --scope delivery --inventory <json-array>`. The `sdd-reviewer` is the default reviewer. Add specialists only for justified objectives with `spindle sdd review require --scope delivery --type <agent-name>`; eligible names must be marked `canReview: true` in the Blueprint Catalog, and actual agent access must be confirmed before dispatch.
58
+ After every ticket is closed, establish current feature-level checks and request the comprehensive review with `{{ computed.spindle_package_manager }} spindle sdd review --scope delivery --inventory <json-array>`. The `sdd-reviewer` is the default reviewer. Add specialists only for justified objectives with `{{ computed.spindle_package_manager }} spindle sdd review require --scope delivery --type <agent-name>`; eligible names must be marked `canReview: true` in the Blueprint Catalog, and actual agent access must be confirmed before dispatch.
55
59
 
56
60
  Submit every assigned review report against its exact assignment. Register findings from their report and snapshot. A blocking finding can name `--related-ticket`; once the complete review batch is submitted, that ticket is reopened so work can resume. Resolve blocking findings through ticket work and repeat any invalidated checks and reviews.
57
61
 
58
- For detailed review, findings, correction, and finish steps, read [feature delivery](./references/full-spec.md). For feature-level corrective work, follow [corrective rounds](./references/corrective-rounds.md). Feature completion requires all tickets closed, current passing required checks and reviews, and no unresolved delivery blockers. Use the normal Git workflow; SDD does not stage, commit, or publish work and has no per-ticket integration command.
62
+ For detailed review, findings, correction, final merge, checks, and cleanup, read [feature delivery](./references/full-spec.md). For feature-level corrective work, follow [corrective rounds](./references/corrective-rounds.md). Feature completion requires all tickets integrated, current passing required checks and reviews, no unresolved delivery blockers, and passing checks on the final merge. Do not modify the affected checkout concurrently with a Git transition. Never stash, discard, force-delete, push, or publish without authorization.
59
63
 
60
64
  ## Reports and verification
61
65
 
@@ -4,7 +4,7 @@
4
4
  ## Assignment
5
5
 
6
6
  Implement ticket: [TICKET_ID]
7
- Checkout: [CHECKOUT]
7
+ Ticket worktree: [CHECKOUT]
8
8
  Mode: [INITIAL_OR_CORRECTIVE]
9
9
 
10
10
  ## Requirements and starting state
@@ -20,7 +20,7 @@ Completed dependencies and starting snapshot:
20
20
 
21
21
  ## Scope and permissions
22
22
 
23
- Allowed code, test, and `.scratch` files:
23
+ Allowed code and test files in the ticket worktree, and the canonical report path:
24
24
  [FILE_SCOPE]
25
25
 
26
26
  Permissions, including commit authorization:
@@ -38,7 +38,7 @@ adjudication rather than another automatic dispatch.
38
38
 
39
39
  ## C. Record objective and dispatch correction
40
40
 
41
- Use `spindle sdd correct --scope delivery` to record and dispatch the feature-level
41
+ Use `{{ computed.spindle_package_manager }} spindle sdd correct --scope delivery` to record and dispatch the feature-level
42
42
  correction. Preserve prior attempts, reports, and report destinations.
43
43
  Serialize implementation edits and keep the assignment limited to the
44
44
  recorded objective.
@@ -5,21 +5,23 @@ Markdown holds requirements and acceptance criteria; `sdd.json` holds tracker
5
5
  status and dependencies.
6
6
 
7
7
  1. Create a feature workspace and split independent work into tickets:
8
- `spindle sdd create`, then `spindle sdd ticket create` for each ticket.
8
+ `{{ computed.spindle_package_manager }} spindle sdd create`, then `{{ computed.spindle_package_manager }} spindle sdd ticket create` for each ticket.
9
9
  2. Record the dependency with
10
- `spindle sdd ticket update --ticket T-0002 --blocked-by T-0001`. Check `spindle sdd ready`:
10
+ `{{ computed.spindle_package_manager }} spindle sdd ticket update --ticket T-0002 --blocked-by T-0001`. Check `{{ computed.spindle_package_manager }} spindle sdd ready`:
11
11
  the prerequisite is ready and the dependent ticket is not.
12
- 3. Claim and implement `T-0001`, submit its report, run and record relevant
13
- checks, then close it with `spindle sdd ticket update --status closed`.
14
- 4. `T-0002` becomes ready because its dependency is closed. Implement and
15
- verify it in the same way, then close it.
12
+ 3. Start the feature worktree in the supplied external directory. Implement
13
+ `T-0001` in its ticket worktree, submit its report, review the committed
14
+ change, and merge it into the feature branch. Declare and record passing
15
+ post-merge checks before it closes.
16
+ 4. `T-0002` becomes ready once its dependency is integrated and validated.
17
+ Branch it from the updated feature branch and deliver it in the same way.
16
18
  5. Record current feature-level required checks and request the comprehensive
17
- review with `spindle sdd review --scope delivery`. Add only justified specialists.
19
+ review with `{{ computed.spindle_package_manager }} spindle sdd review --scope delivery`. Add only justified specialists.
18
20
  6. Submit every assigned report. Register findings from their report and
19
21
  snapshot. A blocking finding can reopen its related ticket; complete the
20
22
  correction, close the ticket again, and refresh stale checks and review.
21
- 7. Finish when every ticket is closed, all required checks and reviews pass on
22
- the current feature snapshot, and no delivery blockers remain.
23
-
24
- Use the normal Git workflow for code. There is no per-ticket accept or
25
- integration step; the SDD CLI does not stage or commit changes.
23
+ 7. Inspect canonical records and run `sdd finish --confirm-records` from the
24
+ feature worktree. In the original checkout, declare and run the complete
25
+ `checks require --scope final` list, record results against the returned
26
+ merge and snapshot, then run `sdd finish` again to clean up. The checked
27
+ merge and the later metadata-only commit are reported separately.
@@ -7,16 +7,16 @@ checks, review assignments, findings, and corrections.
7
7
 
8
8
  ## Checks and review
9
9
 
10
- Inspect `spindle sdd status --spec <spec>` and `spindle sdd next --spec <spec>`. Establish
11
- required final checks with `spindle sdd checks require --scope delivery`, run them, and
10
+ Inspect `{{ computed.spindle_package_manager }} spindle sdd status --spec <spec>` and `{{ computed.spindle_package_manager }} spindle sdd next --spec <spec>`. Establish
11
+ required final checks with `{{ computed.spindle_package_manager }} spindle sdd checks require --scope delivery`, run them, and
12
12
  record actual results against the returned snapshot. Then dispatch the
13
13
  comprehensive review with
14
- `spindle sdd review --scope delivery --inventory <json-array>`. Its inventory must
14
+ `{{ computed.spindle_package_manager }} spindle sdd review --scope delivery --inventory <json-array>`. Its inventory must
15
15
  cover the feature's current Git-derived changes.
16
16
 
17
17
  The `sdd-reviewer` is the default comprehensive reviewer. Before dispatch,
18
18
  record any justified specialist with
19
- `spindle sdd review require --scope delivery --type <agent-name> --details <objective>`.
19
+ `{{ computed.spindle_package_manager }} spindle sdd review require --scope delivery --type <agent-name> --details <objective>`.
20
20
  Only catalog agents with `canReview: true` are eligible. Confirm that the
21
21
  controller can actually dispatch each selected agent; catalog eligibility does
22
22
  not guarantee harness access.
@@ -28,45 +28,65 @@ failed, unavailable, stale, or mismatched review blocks completion.
28
28
  ## Findings and correction
29
29
 
30
30
  Register findings from their assigned reports and snapshots with
31
- `spindle sdd finding create --scope delivery`. Delivery findings have feature-scoped
31
+ `{{ computed.spindle_package_manager }} spindle sdd finding create --scope delivery`. Delivery findings have feature-scoped
32
32
  IDs, provenance, ruling history, and status. Use `--related-ticket <id>` for a
33
33
  finding that should return work to a specific ticket. A blocking linked finding
34
34
  reopens its ticket after the complete review batch is submitted; dependent
35
35
  tickets remain blocked until that ticket is closed again.
36
36
 
37
- Use `spindle sdd finding update --scope delivery` for explicit rulings. Deferring a
37
+ Use `{{ computed.spindle_package_manager }} spindle sdd finding update --scope delivery` for explicit rulings. Deferring a
38
38
  blocker requires rationale, a follow-up reference, and an approved delivery
39
39
  requirements decision. Record that decision with
40
- `spindle sdd requirements decide --scope delivery` only after a requirements change
40
+ `{{ computed.spindle_package_manager }} spindle sdd requirements decide --scope delivery` only after a requirements change
41
41
  and completed prior review. Approval invalidates earlier aggregate assignments.
42
42
 
43
43
  For actionable feature findings, follow [feature correction](./corrective-rounds.md)
44
- and use `spindle sdd correct --scope delivery` to record
44
+ and use `{{ computed.spindle_package_manager }} spindle sdd correct --scope delivery` to record
45
45
  each independent correction attempt. Record passing checks against the changed
46
46
  feature snapshot and submit the implementation report before requesting a new
47
47
  feature review. Pause unproductive work, recurring failures, or requirements
48
- disagreement for adjudication. Resume with `spindle sdd resume --scope delivery`;
48
+ disagreement for adjudication. Resume with `{{ computed.spindle_package_manager }} spindle sdd resume --scope delivery`;
49
49
  preserve existing assignments, attempts, evidence, and adjudication.
50
50
 
51
51
  ## Finish
52
52
 
53
- Use the normal Git workflow for code changes. SDD does not stage, commit,
54
- publish, or require a per-ticket integration confirmation. A changed code or
53
+ Review each committed ticket before merging it into the feature worktree, then
54
+ record post-merge checks before unblocking dependents. A changed code or
55
55
  requirements snapshot invalidates evidence that no longer covers it.
56
56
 
57
- Legacy feature workspaces without a recorded Git baseline stay blocked until
58
- the original comparison baseline is identified. Do not silently use the
59
- current `HEAD` after implementation; that could omit completed feature work
60
- from review.
57
+ Do not silently substitute the current `HEAD` for the recorded Git baseline;
58
+ that could omit completed feature work from review.
61
59
 
62
- Finish with `spindle sdd finish --spec <spec> --author <author>`. Completion requires
63
- at least one ticket, every ticket closed, current passing required feature
64
- checks and reviews, and no unresolved delivery blockers. The retrospective
65
- policy is stored at feature creation: when required, attach a Markdown report
66
- with `--report`; otherwise it is optional. Any report must remain inside that
67
- feature's `reports/` directory.
60
+ Completion requires at least one ticket, every ticket integrated and validated,
61
+ current passing required feature checks and reviews, and no unresolved delivery
62
+ blockers. The retrospective policy is stored at feature creation: when required,
63
+ attach a Markdown report with `--report`; otherwise it is optional. Any report
64
+ must remain inside that feature's `reports/` directory.
68
65
 
69
- Use `spindle sdd status`, `spindle sdd next`, and
70
- `spindle sdd resume --scope delivery` to inspect blockers and
66
+ Inspect canonical records for sensitive content, then run
67
+ `{{ computed.spindle_package_manager }} spindle sdd finish --spec <feature-spec> --author <controller> --confirm-records`
68
+ from the feature worktree, adding `--report <absolute-report-path>` when needed.
69
+ This merges into the recorded original branch and returns a pending final
70
+ validation, merge SHA, snapshot, and original spec path; it does not yet complete
71
+ the feature.
72
+
73
+ In the original checkout, declare the entire non-empty final list with
74
+ `{{ computed.spindle_package_manager }} spindle sdd checks require --spec <original-spec> --scope final --command <command> --author <controller>`,
75
+ repeating `--command` for each check. Run each command there, then record each
76
+ actual result with `{{ computed.spindle_package_manager }} spindle sdd checks record --spec <original-spec> --scope final --merge <merge-sha> --snapshot <snapshot> --command <command> --result <result> --author <controller>`.
77
+ Failed or unavailable results require `--details` and block cleanup until the
78
+ latest result for each command passes. The list is frozen once declared.
79
+
80
+ Run `{{ computed.spindle_package_manager }} spindle sdd finish --spec <original-spec> --author <controller>`
81
+ again to preflight and clean up the recorded worktrees and branches. The final
82
+ merge is the checked commit; the subsequent ledger-only relocation commit is
83
+ reported separately and is not itself checked. Preserve any dirty or unexpected
84
+ work and follow the reported journal for recovery rather than forcing cleanup.
85
+ Ignored files in worktrees slated for removal also block cleanup; do not discard
86
+ them without authorization. After a crash, remove a reported finalization lock
87
+ only after verifying its recorded owner has stopped.
88
+
89
+ Use `{{ computed.spindle_package_manager }} spindle sdd status`, `{{ computed.spindle_package_manager }} spindle sdd next`, and
90
+ `{{ computed.spindle_package_manager }} spindle sdd resume --scope delivery` to inspect blockers and
71
91
  restore interrupted feature-level work. These commands do not close tickets or
72
92
  publish changes.
@@ -6,18 +6,18 @@ Read when preparing or accepting a review assignment. The controller supplies th
6
6
 
7
7
  `REVIEW_INPUTS` names an absolute, read-required package/manifest path. Read it and its required sources before inspecting the checkout or reviewing. Equivalent structured inputs inline remain valid; preserve supplied values rather than inferring missing revisions from Git.
8
8
 
9
- | Input | Required meaning |
10
- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
- | Requirements | Canonical ticket/spec/comments pointers, applicable instructions, criteria, and constraints. Identify inapplicable sources explicitly. |
12
- | Workspace and snapshot | Absolute shared checkout; exact reviewed identity, comparison base and head revisions, and included dirty/untracked changes or `NONE`. SHAs are provenance metadata and may live in the package rather than repeated prompt fields. |
13
- | Complete change | Complete assigned diff with file inventory, stat, and enough context, or approved read-only retrieval using supplied revisions. Include dirty/untracked additions and binary changes, or identify unavailable material as a coverage gap. |
14
- | Verification | Commands, results, test summary, exact snapshot covered, and unavailable required checks. Evidence pointers are valid; read them before judging coverage. |
9
+ | Input | Required meaning |
10
+ | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
+ | Requirements | Canonical ticket/spec/comments pointers, applicable instructions, criteria, and constraints. Identify inapplicable sources explicitly. |
12
+ | Workspace and snapshot | Absolute ticket or feature worktree, as appropriate; exact reviewed identity, comparison base and head revisions, and included dirty/untracked changes or `NONE`. SHAs are provenance metadata and may live in the package rather than repeated prompt fields. |
13
+ | Complete change | Complete assigned diff with file inventory, stat, and enough context, or approved read-only retrieval using supplied revisions. Include dirty/untracked additions and binary changes, or identify unavailable material as a coverage gap. |
14
+ | Verification | Commands, results, test summary, exact snapshot covered, and unavailable required checks. Evidence pointers are valid; read them before judging coverage. |
15
15
 
16
16
  Keep every meaning authoritative in one place: reference canonical requirements, reports, and evidence rather than copying full logs or the entire ledger. A pointer must identify the required material, not merely say "see ledger". The role-specific assignment supplies phase, objective, history relevant to that role, and its distinct report destination.
17
17
 
18
18
  ## Snapshot ownership and completeness
19
19
 
20
- The controller owns construction, freezing, and freshness checks. Reuse existing durable complete diffs and evidence; no additional packaging command or hash scheme is required. The identity must distinguish uncommitted/untracked content, not just HEAD. Keep implementation frozen throughout the review batch, allowing assigned report writes without changing the reviewed code identity.
20
+ The controller owns construction, freezing, and freshness checks. Reuse existing durable complete diffs and evidence; no additional packaging command or hash scheme is required. Ticket reviews must cover the exact committed ticket revision and its complete change against the assigned base. Keep that worktree clean and frozen throughout the review batch; reports are written to the canonical feature workspace.
21
21
 
22
22
  Corrections produce a new reviewed identity with fresh covering checks. Preserve the previous package and evidence as history rather than relabeling them as verification of changed code.
23
23
 
@@ -2,7 +2,7 @@
2
2
  name: int-testing-agent-guidance
3
3
  metadata:
4
4
  spindle:
5
- version: 1.0.0
5
+ version: 1.0.1
6
6
  description: "{{ computed.internal_skill_description }}"
7
7
  user-invocable: false
8
8
  ---
@@ -32,7 +32,7 @@ Use this workflow for behavior-shaping changes to skills, agents, prompts, instr
32
32
 
33
33
  ## Expanded testing
34
34
 
35
- Use expanded testing when the user requests it or the skill is invoked with `--test`. This adds independent samples; it does not replace the core baseline and retest.
35
+ Always run expanded testing for authoring tasks. It adds independent samples and does not replace the core baseline and retest.
36
36
 
37
37
  1. Freeze scenario prompts and observable pass criteria before dispatch. Cover each meaningful branch. For discipline-enforcing guidance, use at least three scenarios, each combining at least three pressures such as deadline, authority, sunk cost, or exhaustion.
38
38
  2. Run five independent read-only agents against the baseline. For a new document, provide no proposed guidance; for an edit, provide the current version. Each agent runs every scenario once and reports its concrete choices and rationalizations verbatim.
@@ -4,7 +4,7 @@ description: "{{ computed.internal_skill_description }}"
4
4
  user-invocable: false
5
5
  metadata:
6
6
  spindle:
7
- version: 1.3.0
7
+ version: 1.3.1
8
8
  ---
9
9
 
10
10
  # Writing Skills
@@ -118,7 +118,7 @@ Compare observed behavior with the unchanged criterion. An unresolved failure se
118
118
 
119
119
  ### G. Refactor and deliver
120
120
 
121
- Prune duplication, stale material, and speculative rules. Retest after wording changes. Verify frontmatter, relative links, resource packaging, and any required version bump. Run expanded testing only when requested, including `--test`.
121
+ Prune duplication, stale material, and speculative rules. Retest after wording changes. Verify frontmatter, relative links, resource packaging, and any required version bump. Always run expanded testing with `int-testing-agent-guidance`.
122
122
 
123
123
  **Complete when:** final validation passes or limitations are explicit, and the change is ready for authorized delivery. Commit, push, or open a PR only when requested.
124
124
 
@@ -36,7 +36,7 @@ For discipline-enforcing guidance, consult [Persuasion principles](./persuasion-
36
36
 
37
37
  Rerun the same prompt and criterion with the full revised guidance in a fresh context. Check actual choices, resource loads, and artifacts. Correct remaining failures narrowly, then rerun after each wording change.
38
38
 
39
- Run expanded testing only when explicitly requested or when `--test` is present, using `int-testing-agent-guidance`. It adds coverage rather than replacing the focused baseline and retest.
39
+ Always run expanded testing with `int-testing-agent-guidance`. It adds coverage rather than replacing the focused baseline and retest.
40
40
 
41
41
  | Testing pitfall | Required evidence |
42
42
  | --------------------------------------- | --------------------------------------------------------------- |
@@ -45,4 +45,4 @@ Run expanded testing only when explicitly requested or when `--test` is present,
45
45
  | "There is no time" | Recorded validation or an explicit blocker, not claimed success |
46
46
  | "The output is close enough" | The unchanged observable criterion passes |
47
47
 
48
- **Complete when:** the final focused scenario passes without unresolved failures, requested expanded testing is complete, or remaining failures and validation limits are explicitly reported.
48
+ **Complete when:** the final focused scenario passes without unresolved failures, expanded testing is complete, or remaining failures and validation limits are explicitly reported.