codex-orchestrator 2.0.2 → 2.0.3

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 (211) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +12 -9
  3. package/dist/src/index.d.ts +10 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +5 -0
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/v2/acceptance-proof.d.ts +3 -0
  8. package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
  9. package/dist/src/v2/acceptance-proof.js +2 -8
  10. package/dist/src/v2/acceptance-proof.js.map +1 -1
  11. package/dist/src/v2/adapters/gh-issue-adapter.d.ts +5 -3
  12. package/dist/src/v2/adapters/gh-issue-adapter.d.ts.map +1 -1
  13. package/dist/src/v2/adapters/gh-issue-adapter.js +63 -7
  14. package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -1
  15. package/dist/src/v2/adapters/issues.d.ts +16 -2
  16. package/dist/src/v2/adapters/issues.d.ts.map +1 -1
  17. package/dist/src/v2/adapters/issues.js +15 -5
  18. package/dist/src/v2/adapters/issues.js.map +1 -1
  19. package/dist/src/v2/adapters/mission-coordinator-lock.d.ts +1 -0
  20. package/dist/src/v2/adapters/mission-coordinator-lock.d.ts.map +1 -1
  21. package/dist/src/v2/adapters/mission-coordinator-lock.js +5 -1
  22. package/dist/src/v2/adapters/mission-coordinator-lock.js.map +1 -1
  23. package/dist/src/v2/candidate-cli.d.ts +4 -0
  24. package/dist/src/v2/candidate-cli.d.ts.map +1 -1
  25. package/dist/src/v2/candidate-cli.js +26 -11
  26. package/dist/src/v2/candidate-cli.js.map +1 -1
  27. package/dist/src/v2/cli-contract.d.ts +1 -1
  28. package/dist/src/v2/cli-contract.d.ts.map +1 -1
  29. package/dist/src/v2/cli-contract.js +10 -0
  30. package/dist/src/v2/cli-contract.js.map +1 -1
  31. package/dist/src/v2/code-review-report.d.ts +66 -0
  32. package/dist/src/v2/code-review-report.d.ts.map +1 -0
  33. package/dist/src/v2/code-review-report.js +259 -0
  34. package/dist/src/v2/code-review-report.js.map +1 -0
  35. package/dist/src/v2/codex-process.d.ts +8 -1
  36. package/dist/src/v2/codex-process.d.ts.map +1 -1
  37. package/dist/src/v2/codex-process.js +11 -0
  38. package/dist/src/v2/codex-process.js.map +1 -1
  39. package/dist/src/v2/config.d.ts +2 -1
  40. package/dist/src/v2/config.d.ts.map +1 -1
  41. package/dist/src/v2/config.js +8 -3
  42. package/dist/src/v2/config.js.map +1 -1
  43. package/dist/src/v2/contained-report-operation.d.ts +100 -0
  44. package/dist/src/v2/contained-report-operation.d.ts.map +1 -0
  45. package/dist/src/v2/contained-report-operation.js +200 -0
  46. package/dist/src/v2/contained-report-operation.js.map +1 -0
  47. package/dist/src/v2/containment.d.ts +6 -0
  48. package/dist/src/v2/containment.d.ts.map +1 -1
  49. package/dist/src/v2/containment.js +40 -1
  50. package/dist/src/v2/containment.js.map +1 -1
  51. package/dist/src/v2/direct-delivery.d.ts +101 -0
  52. package/dist/src/v2/direct-delivery.d.ts.map +1 -0
  53. package/dist/src/v2/direct-delivery.js +547 -0
  54. package/dist/src/v2/direct-delivery.js.map +1 -0
  55. package/dist/src/v2/immutable-workflow-publisher.d.ts +40 -0
  56. package/dist/src/v2/immutable-workflow-publisher.d.ts.map +1 -0
  57. package/dist/src/v2/immutable-workflow-publisher.js +218 -0
  58. package/dist/src/v2/immutable-workflow-publisher.js.map +1 -0
  59. package/dist/src/v2/implementation-reviewer.d.ts +81 -0
  60. package/dist/src/v2/implementation-reviewer.d.ts.map +1 -0
  61. package/dist/src/v2/implementation-reviewer.js +157 -0
  62. package/dist/src/v2/implementation-reviewer.js.map +1 -0
  63. package/dist/src/v2/owner-control-lock.d.ts +41 -0
  64. package/dist/src/v2/owner-control-lock.d.ts.map +1 -0
  65. package/dist/src/v2/owner-control-lock.js +174 -0
  66. package/dist/src/v2/owner-control-lock.js.map +1 -0
  67. package/dist/src/v2/route-continuations.d.ts +32 -0
  68. package/dist/src/v2/route-continuations.d.ts.map +1 -0
  69. package/dist/src/v2/route-continuations.js +2 -0
  70. package/dist/src/v2/route-continuations.js.map +1 -0
  71. package/dist/src/v2/route-coordinator.d.ts +77 -0
  72. package/dist/src/v2/route-coordinator.d.ts.map +1 -0
  73. package/dist/src/v2/route-coordinator.js +370 -0
  74. package/dist/src/v2/route-coordinator.js.map +1 -0
  75. package/dist/src/v2/route-decision.d.ts +129 -0
  76. package/dist/src/v2/route-decision.d.ts.map +1 -0
  77. package/dist/src/v2/route-decision.js +400 -0
  78. package/dist/src/v2/route-decision.js.map +1 -0
  79. package/dist/src/v2/run-issue.d.ts +63 -2
  80. package/dist/src/v2/run-issue.d.ts.map +1 -1
  81. package/dist/src/v2/run-issue.js +906 -91
  82. package/dist/src/v2/run-issue.js.map +1 -1
  83. package/dist/src/v2/run-store.d.ts +25 -1
  84. package/dist/src/v2/run-store.d.ts.map +1 -1
  85. package/dist/src/v2/run-store.js +143 -3
  86. package/dist/src/v2/run-store.js.map +1 -1
  87. package/dist/src/v2/runtime-assets.d.ts +15 -13
  88. package/dist/src/v2/runtime-assets.d.ts.map +1 -1
  89. package/dist/src/v2/runtime-assets.js +263 -416
  90. package/dist/src/v2/runtime-assets.js.map +1 -1
  91. package/dist/src/v2/runtime.d.ts +14 -6
  92. package/dist/src/v2/runtime.d.ts.map +1 -1
  93. package/dist/src/v2/runtime.js +478 -56
  94. package/dist/src/v2/runtime.js.map +1 -1
  95. package/dist/src/v2/setup-cli.d.ts.map +1 -1
  96. package/dist/src/v2/setup-cli.js +1 -0
  97. package/dist/src/v2/setup-cli.js.map +1 -1
  98. package/dist/src/v2/setup-runtime.d.ts.map +1 -1
  99. package/dist/src/v2/setup-runtime.js +20 -72
  100. package/dist/src/v2/setup-runtime.js.map +1 -1
  101. package/dist/src/v2/setup.d.ts +4 -1
  102. package/dist/src/v2/setup.d.ts.map +1 -1
  103. package/dist/src/v2/setup.js +104 -1
  104. package/dist/src/v2/setup.js.map +1 -1
  105. package/dist/src/v2/spec-coordinator.d.ts +85 -0
  106. package/dist/src/v2/spec-coordinator.d.ts.map +1 -0
  107. package/dist/src/v2/spec-coordinator.js +88 -0
  108. package/dist/src/v2/spec-coordinator.js.map +1 -0
  109. package/dist/src/v2/spec-delivery.d.ts +143 -0
  110. package/dist/src/v2/spec-delivery.d.ts.map +1 -0
  111. package/dist/src/v2/spec-delivery.js +401 -0
  112. package/dist/src/v2/spec-delivery.js.map +1 -0
  113. package/dist/src/v2/triage-route.d.ts +68 -0
  114. package/dist/src/v2/triage-route.d.ts.map +1 -0
  115. package/dist/src/v2/triage-route.js +223 -0
  116. package/dist/src/v2/triage-route.js.map +1 -0
  117. package/dist/src/v2/waiting-human-coordinator.d.ts +49 -0
  118. package/dist/src/v2/waiting-human-coordinator.d.ts.map +1 -0
  119. package/dist/src/v2/waiting-human-coordinator.js +509 -0
  120. package/dist/src/v2/waiting-human-coordinator.js.map +1 -0
  121. package/dist/src/v2/waiting-human.d.ts +143 -0
  122. package/dist/src/v2/waiting-human.d.ts.map +1 -0
  123. package/dist/src/v2/waiting-human.js +408 -0
  124. package/dist/src/v2/waiting-human.js.map +1 -0
  125. package/dist/src/v2/workflow-assets.d.ts +90 -0
  126. package/dist/src/v2/workflow-assets.d.ts.map +1 -0
  127. package/dist/src/v2/workflow-assets.js +554 -0
  128. package/dist/src/v2/workflow-assets.js.map +1 -0
  129. package/docs/deep-dive.md +15 -8
  130. package/internal-workflow/docs/agents/artifact-review-loop.md +267 -0
  131. package/internal-workflow/docs/agents/bug-workflow-routing.md +24 -0
  132. package/internal-workflow/docs/agents/coding-skill-routing.md +203 -0
  133. package/internal-workflow/docs/agents/confidence-rubric.md +65 -0
  134. package/internal-workflow/docs/agents/contract-test-ledger.md +60 -0
  135. package/internal-workflow/docs/agents/implementation-review-loop.md +302 -0
  136. package/internal-workflow/docs/agents/review-gates.md +49 -0
  137. package/internal-workflow/docs/agents/review-protocol.md +170 -0
  138. package/internal-workflow/docs/agents/tool-usage.md +88 -0
  139. package/internal-workflow/manifest.json +1 -0
  140. package/internal-workflow/operations/acceptance-proof/SKILL.md +3 -0
  141. package/internal-workflow/operations/ambiguity-review/SKILL.md +3 -0
  142. package/internal-workflow/operations/cleanup-review/SKILL.md +3 -0
  143. package/internal-workflow/operations/code-review/SKILL.md +3 -0
  144. package/internal-workflow/operations/implementation/SKILL.md +3 -0
  145. package/internal-workflow/operations/spec-author/SKILL.md +3 -0
  146. package/internal-workflow/operations/spec-implementation/SKILL.md +3 -0
  147. package/internal-workflow/operations/spec-review/SKILL.md +3 -0
  148. package/internal-workflow/operations/triage/SKILL.md +3 -0
  149. package/internal-workflow/profiles/analyst_deep.toml +9 -0
  150. package/internal-workflow/profiles/implementer_deep.toml +9 -0
  151. package/internal-workflow/profiles/implementer_standard.toml +9 -0
  152. package/internal-workflow/profiles/proof_agent.toml +8 -0
  153. package/internal-workflow/profiles/researcher_standard.toml +9 -0
  154. package/internal-workflow/profiles/reviewer_deep.toml +9 -0
  155. package/internal-workflow/profiles/reviewer_fast.toml +9 -0
  156. package/internal-workflow/profiles/reviewer_standard.toml +9 -0
  157. package/internal-workflow/schemas/ambiguity-review-v1.json +1 -0
  158. package/internal-workflow/schemas/code-review-v1.json +1 -0
  159. package/internal-workflow/schemas/implementation-report-v1.json +1 -0
  160. package/internal-workflow/schemas/proof-report-v1.json +1 -0
  161. package/internal-workflow/schemas/spec-author-v1.json +1 -0
  162. package/internal-workflow/schemas/spec-review-v1.json +30 -0
  163. package/internal-workflow/schemas/triage-route-v1.json +1 -0
  164. package/internal-workflow/skills/acceptance-proof/agents/openai.yaml +6 -0
  165. package/internal-workflow/skills/agent-auto/agents/openai.yaml +6 -0
  166. package/internal-workflow/skills/cleanup-review/SKILL.md +84 -0
  167. package/internal-workflow/skills/cleanup-review/agents/openai.yaml +6 -0
  168. package/internal-workflow/skills/code-review/SKILL.md +257 -0
  169. package/internal-workflow/skills/code-review/agents/openai.yaml +4 -0
  170. package/internal-workflow/skills/code-review/references/bug-classes.md +56 -0
  171. package/internal-workflow/skills/code-review/references/framework-lenses.md +34 -0
  172. package/internal-workflow/skills/code-review/references/targeted-recipes.md +49 -0
  173. package/internal-workflow/skills/codebase-design/DEEPENING.md +35 -0
  174. package/internal-workflow/skills/codebase-design/DESIGN-IT-TWICE.md +50 -0
  175. package/internal-workflow/skills/codebase-design/SKILL.md +82 -0
  176. package/internal-workflow/skills/codebase-design/agents/openai.yaml +6 -0
  177. package/internal-workflow/skills/diagnosing-bugs/SKILL.md +138 -0
  178. package/internal-workflow/skills/diagnosing-bugs/agents/openai.yaml +6 -0
  179. package/internal-workflow/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  180. package/internal-workflow/skills/implementation-spec-maker/SKILL.md +93 -0
  181. package/internal-workflow/skills/implementation-spec-maker/agents/openai.yaml +6 -0
  182. package/internal-workflow/skills/implementation-spec-maker/references/source-modes.md +31 -0
  183. package/internal-workflow/skills/implementation-spec-maker/references/spec-template.md +146 -0
  184. package/internal-workflow/skills/implementation-spec-review/SKILL.md +211 -0
  185. package/internal-workflow/skills/implementation-spec-review/agents/openai.yaml +6 -0
  186. package/internal-workflow/skills/research/SKILL.md +107 -0
  187. package/internal-workflow/skills/research/agents/openai.yaml +6 -0
  188. package/internal-workflow/skills/small-task-implementer/SKILL.md +97 -0
  189. package/internal-workflow/skills/small-task-implementer/agents/openai.yaml +6 -0
  190. package/internal-workflow/skills/spec-implementer/SKILL.md +197 -0
  191. package/internal-workflow/skills/spec-implementer/agents/openai.yaml +6 -0
  192. package/internal-workflow/skills/tdd/SKILL.md +59 -0
  193. package/internal-workflow/skills/tdd/agents/openai.yaml +6 -0
  194. package/internal-workflow/skills/tdd/interface-design.md +31 -0
  195. package/internal-workflow/skills/tdd/mocking.md +59 -0
  196. package/internal-workflow/skills/tdd/refactoring.md +10 -0
  197. package/internal-workflow/skills/tdd/tests.md +77 -0
  198. package/internal-workflow/skills/triage/AGENT-BRIEF.md +192 -0
  199. package/internal-workflow/skills/triage/OUT-OF-SCOPE.md +101 -0
  200. package/internal-workflow/skills/triage/SKILL.md +134 -0
  201. package/internal-workflow/skills/triage/agents/openai.yaml +6 -0
  202. package/internal-workflow/skills/ui-evidence-proof/SKILL.md +123 -0
  203. package/internal-workflow/skills/ui-evidence-proof/agents/openai.yaml +6 -0
  204. package/package.json +6 -3
  205. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/SKILL.md +0 -0
  206. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/android.md +0 -0
  207. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/browser.md +0 -0
  208. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/ios.md +0 -0
  209. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/android-lease.mjs +0 -0
  210. /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/ios-lease.mjs +0 -0
  211. /package/{internal-skills → internal-workflow/skills}/agent-auto/SKILL.md +0 -0
@@ -0,0 +1,257 @@
1
+ ---
2
+ name: "code-review"
3
+ description: "Evidence-first review of code, PRs, commits, regressions, or review-and-fix work using correctness and standards/cleanup lenses. Auto-fix only qualifying high-confidence severe issues."
4
+ ---
5
+
6
+ # Code Review
7
+
8
+ This skill performs evidence-based code review. It is not a style pass and not a summary. Treat the change as potentially wrong until independent review tracks fail to break it.
9
+
10
+ The review always covers two lenses:
11
+
12
+ - **Correctness reviewer**: bugs, regressions, runtime behavior, security, contracts, caches, concurrency, framework rules, and failure paths.
13
+ - **Spec & standards reviewer**: requested behavior, documented repo standards, architecture fit, duplication, cleanup, and workaround-shaped implementation.
14
+
15
+ The main agent is the coordinator. It pins the review target, assigns both
16
+ lenses to one reviewer for `simple` and `medium`, and splits them across two
17
+ independent reviewers only for `high`. It verifies the strongest findings,
18
+ applies only safe fixes, and returns a concise findings-first report.
19
+
20
+ ## When To Use
21
+
22
+ Use this skill when the user asks for:
23
+
24
+ - code review, PR review, commit audit, regression scan, or bug hunt
25
+ - review since a branch, commit, tag, merge-base, or working tree state
26
+ - review and fix of critical or high-severity high-confidence defects
27
+ - framework-focused review such as `NestJS`, `Next.js`, `Flutter`, or `Dart`
28
+
29
+ For every implementation profile, the spec/standards lens includes bounded
30
+ cleanup for duplication, obsolete paths, workaround branches, and unjustified
31
+ abstractions. High-risk work assigns that lens to its own reviewer in the same
32
+ parallel final wave. Run separate `$cleanup-review` first only for an explicit
33
+ concrete evidenced reason that cannot fit this bounded lens.
34
+
35
+ Exception for approved spec execution: follow
36
+ `../../docs/agents/implementation-review-loop.md`. Intermediate code-review
37
+ checkpoints do not automatically run cleanup first; final cleanup and final code
38
+ review use the durable Review Plan and canonical Defect Ledger.
39
+
40
+ ## Implementation Review Adapter
41
+
42
+ When this skill is called from `$spec-implementer`:
43
+
44
+ - read the Module and persisted `## Implementation Review State`
45
+ - accept the scheduled mode, session, revision, and lenses from that state
46
+ - pin the target and give reviewers the Module-defined capsule
47
+ - return the usable result and stable defect updates to the executor
48
+ - when exceptional separate cleanup ran, consume its settled decisions/IDs and avoid broad hygiene rediscovery unless a code-review repair caused a concrete regression
49
+
50
+ Do not infer a fresh review loop, choose another mode, or make the Module's
51
+ terminal decision inside this Adapter.
52
+
53
+ ## Progressive References
54
+
55
+ Read only the references the current review needs:
56
+
57
+ - Detailed bug classes: `references/bug-classes.md`
58
+ - Framework lenses for Next.js, NestJS, Flutter, and Dart: `references/framework-lenses.md`
59
+ - Targeted recipes for recurring diff shapes: `references/targeted-recipes.md`
60
+ - Contract test ledger: `../../docs/agents/contract-test-ledger.md`
61
+ - Shared confidence rubric: `../../docs/agents/confidence-rubric.md`
62
+
63
+ Load `references/framework-lenses.md` when the user names a framework or files/configs strongly imply one. Load `references/targeted-recipes.md` and `../../docs/agents/contract-test-ledger.md` when the diff shape matches new fields, retries, DTO/schema/runtime contracts, caches, state merge precedence, ordering, evidence/snapshots, determinism, or aggregation summaries. Load `references/bug-classes.md` for substantial reviews or broad bug hunts.
64
+
65
+ ## Coordinator Workflow
66
+
67
+ ### 1. Pin The Review Target
68
+
69
+ Identify exactly what is being reviewed.
70
+
71
+ - If the user gave a fixed point, use it directly: branch, commit SHA, tag, `main`, `HEAD~5`, etc.
72
+ - If they did not, infer from context:
73
+ - current uncommitted work: `git diff` plus staged diff if relevant
74
+ - branch review: `git diff <base>...HEAD`
75
+ - commit review: `git show <commit>`
76
+ - If there is no safe inference, ask one short question: "Review against which branch or commit?"
77
+
78
+ Capture:
79
+
80
+ - `git status --short`
81
+ - diff stat
82
+ - the exact diff command used
83
+ - commit list when reviewing a branch range
84
+ - changed files and nearest related tests/docs
85
+
86
+ Use three-dot diff for branch/base reviews: `git diff <fixed-point>...HEAD`.
87
+
88
+ ### 2. Discover Spec And Standards
89
+
90
+ Do this before reviewer tracks so both tracks receive bounded inputs.
91
+
92
+ Spec sources, in priority order:
93
+
94
+ 1. Issue or PR references in commit messages, branch names, PR metadata, or user prompt.
95
+ 2. A spec/PRD/plan path supplied by the user.
96
+ 3. Matching files under `docs/`, `specs/`, `.scratch/`, or local issue folders.
97
+ 4. If none exists, continue and mark the spec axis as "no spec found" instead of inventing requirements.
98
+
99
+ Standards sources:
100
+
101
+ - `AGENTS.md`, `CLAUDE.md`, `CONTRIBUTING.md`
102
+ - `CONTEXT.md`, context maps, domain docs, ADRs
103
+ - `STYLE.md`, `STANDARDS.md`, style guides, review checklists
104
+ - `.editorconfig`, ESLint, Biome, Prettier, TypeScript, analyzer, or framework configs
105
+ - relevant test files and existing examples in the touched area
106
+
107
+ Machine-enforced config matters as context, but do not spend review findings on issues a required formatter/linter would already catch unless the tool is absent or failing.
108
+
109
+ ### 3. Activate Lenses
110
+
111
+ Before deep review, decide which lenses apply.
112
+
113
+ - Always activate the general correctness and spec/standards lenses.
114
+ - Add framework lenses when explicit or strongly implied by files/configs.
115
+ - Add targeted recipes when the diff shape matches them.
116
+ - If the user, plan, or implementation spec provides `Review Focus`, treat each listed lens, targeted recipe, invariant, and risk as mandatory. Do not replace it with a generic review; report any focus item that cannot be verified as a verification gap.
117
+ - If inference is uncertain, say so and continue with the best-supported review instead of pretending certainty.
118
+
119
+ Mandatory delta lenses:
120
+
121
+ - **Contract Delta Review:** If the diff expands a shared contract, enum/status, schema, DTO, permission, capability, token, or scope, search old consumers and report `changed contract -> searched call sites -> risky fallback/default branches -> tests or fix`.
122
+ - **Backend Trust Boundary Review:** If the diff adds a credential, OAuth scope, permission, role-sensitive write, or external capability, verify the backend-side guard. UI controls, query/state flags, and caller intent are not authorization.
123
+
124
+ Common framework signals:
125
+
126
+ - **Next.js**: `next.config.*`, `app/**`, `pages/**`, route handlers, server actions, `use server`, `use client`, revalidation APIs.
127
+ - **NestJS**: `@nestjs/*`, controllers, providers, modules, guards, pipes, interceptors, DTOs, `nest-cli.json`.
128
+ - **Flutter**: `pubspec.yaml`, `lib/**`, widgets, navigation, bloc/provider/riverpod/notifiers.
129
+ - **Dart**: `.dart`, `Future`, `Stream`, isolates, generated serializers, null-safety constructs.
130
+
131
+ ### 4. Run Profile-Selected Reviewers
132
+
133
+ For `simple`, run one `reviewer_fast`; for `medium`, run one
134
+ `reviewer_standard`. Assign that child both correctness and spec/standards
135
+ lenses in one bounded Full review. For `high`, run two `reviewer_deep` children
136
+ in parallel with one disjoint lens each. Invoking `$code-review` authorizes
137
+ these reviewers. Preserve every fulfilled launch handle if a parallel peer
138
+ fails, then close all launched children. Tell every reviewer not to edit or
139
+ revert unrelated work.
140
+
141
+ For spec-driven checkpoints, obey the track assignment in the persisted Review
142
+ Plan instead of automatically launching both default tracks.
143
+
144
+ When already inside an assigned reviewer child, execute its assigned lens set
145
+ inline and return it to root; do not spawn a grandchild.
146
+ If the user forbids delegation, report the independent review gate as waived or
147
+ unavailable according to the parent workflow; root must not self-review inline.
148
+
149
+ #### Correctness Reviewer Brief
150
+
151
+ Include the exact diff command or commit under review, changed file list, commit list, active references, any `Review Focus`, and an instruction to read surrounding execution paths.
152
+
153
+ > Review runtime correctness adversarially. Hunt concrete bugs in control flow, state, async/concurrency, security, auth, contracts, schemas, caching, persistence, UI/API integration, and framework-specific behavior. If a Review Focus is provided, explicitly test the named risks first, such as duplicate side effects, retry/idempotency, ordering, source-of-truth ownership, partial failure, DTO/schema drift, or false user-facing state. For each finding, provide file/line, trigger path, impact, why guards do not prevent it, severity, and confidence. Do not report style nits or generic "needs tests" comments.
154
+ > For bugfixes, check claim boundaries: what changed tests prove, what they do not prove, and whether sibling execution paths can still violate the claimed invariant.
155
+ > When Contract Delta Review applies, follow new values through old consumers and default/fallback branches before trusting local tests. When Backend Trust Boundary Review applies, verify the server-side authorization predicate at the write/callback boundary.
156
+
157
+ #### Spec & Standards Reviewer Brief
158
+
159
+ Include the exact diff command or commit under review, spec source path/content or "no spec found", standards source list, changed file list, commit list, any `Review Focus`, and an instruction to cite the spec or standard behind each finding.
160
+
161
+ > Review the change against the requested work and repo standards. Check missing requirements, partial behavior, scope creep, undocumented contract changes, architecture drift, duplicate source-of-truth logic, dead/legacy branches, and workaround-shaped implementation. If a Review Focus is provided, explicitly verify each named ownership, scope, validation, and invariant risk against the spec. Cite the spec or standard when available. If there is no spec, skip requirement claims and focus on documented standards and architecture evidence.
162
+
163
+ ### 5. Aggregate And Verify
164
+
165
+ The coordinator must not blindly relay reviewer output.
166
+
167
+ 1. Deduplicate findings across tracks.
168
+ 2. Re-read the relevant code for the strongest findings.
169
+ 3. Drop findings that lack a concrete trigger path.
170
+ 4. Reclassify severity/confidence using `../../docs/agents/confidence-rubric.md` if evidence does not support the label.
171
+ 5. For real contract defects, identify the missing or inadequate Contract Test Ledger invariant when TDD/spec evidence is available.
172
+ 6. Confirm every mandatory `Review Focus` item and mandatory delta lens was reviewed; if not, report the unverified item as a verification gap.
173
+ 7. Decide whether auto-fix is allowed.
174
+ 8. Run the narrowest meaningful verification after any fix.
175
+
176
+ Keep the two axes visible in your own notes, but present the final report by severity unless the user explicitly asked for side-by-side Standards/Spec output.
177
+
178
+ For a Module-scheduled Closure, send the bounded capsule to the reviewer lineage
179
+ and session selected by the shared protocol, then return its defect updates.
180
+
181
+ ## Evidence Standard
182
+
183
+ A valid finding explains:
184
+
185
+ - what breaks
186
+ - why it breaks
187
+ - the input, sequence, role, tenant, environment, or timing that triggers it
188
+ - where the defect lives
189
+ - why existing guards do not prevent it
190
+ - severity and confidence
191
+
192
+ Do not file:
193
+
194
+ - style nits disguised as correctness issues
195
+ - speculative races without a shared-state path
196
+ - generic "needs tests" comments without a concrete regression risk
197
+ - architecture discomfort without wrong ownership, duplication, leakage, or a regression path
198
+ - performance comments without a hot path or failure mode
199
+
200
+ ## Auto-Fix Policy
201
+
202
+ Automatically fix only when all are true:
203
+
204
+ - severity is critical or high
205
+ - confidence is high under `../../docs/agents/confidence-rubric.md`
206
+ - root cause is clear
207
+ - correct fix is narrow and low-risk
208
+ - fix matches local project patterns
209
+ - verification is available, or the edit is obviously safe and syntax-checkable
210
+
211
+ When auto-fixing:
212
+
213
+ - patch only the bug
214
+ - add/update behavior tests when regression risk is meaningful and the codebase supports it; for contract defects, add the missing ledger invariant first when a ledger exists or is being created
215
+ - rerun relevant verification
216
+ - never revert unrelated user changes
217
+
218
+ Do not auto-fix ambiguous semantics, product decisions, broad refactors, or low-confidence concerns. Report them with evidence.
219
+
220
+ ## Output Contract
221
+
222
+ For review-only tasks:
223
+
224
+ 1. Findings first, ordered by severity.
225
+ 2. File and line references for each finding.
226
+ 3. Trigger path, impact, severity, confidence, and evidence.
227
+ 4. Open questions, assumptions, or verification gaps.
228
+ 5. Short summary only after findings.
229
+
230
+ For review-and-fix tasks:
231
+
232
+ 1. State which critical or high-severity high-confidence issues were fixed.
233
+ 2. Report remaining findings that were not fixed.
234
+ 3. Give one short verification note and any blocked checks.
235
+ 4. Keep the closing summary user-facing and outcome-based.
236
+
237
+ If there are no findings, say so clearly and mention residual test or verification gaps.
238
+
239
+ For spec-driven review checkpoints or final review gates, include a compact review handoff that can feed the executor's Final Risk Handoff: reviewed target, Review Focus status, high/critical findings fixed or remaining, skipped checks, and residual verification gaps. Keep findings first.
240
+
241
+ If inline review comments are requested, emit one `::code-comment{...}` directive per actionable finding.
242
+
243
+ ## Tooling Defaults
244
+
245
+ - Use `rg`/`rg --files` for code search.
246
+ - Prefer parallel reads for status, diff, changed files, related modules, tests, repo docs, and standards.
247
+ - Use official docs or Context7 only when a finding depends on version-sensitive framework/library behavior.
248
+ - Run the narrowest meaningful tests first, then required lint/build/analyzer checks for touched areas.
249
+ - Keep raw command output out of the final response unless the user asks for it.
250
+
251
+ ## Decision Defaults
252
+
253
+ - If the user says "review", default to findings-first review.
254
+ - If the user says "review and fix", auto-fix only critical or high-severity high-confidence issues that satisfy the auto-fix policy.
255
+ - If the user provides a framework focus, explicitly use it.
256
+ - If no focus is provided, infer active lenses from the diff and say when they materially affected findings.
257
+ - Ask clarification only when the correct review target or fix would otherwise be risky or ambiguous.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Code Review"
3
+ short_description: "Profile-routed correctness and standards review"
4
+ default_prompt: "Use $code-review for one final profile-selected wave; high risk uses two parallel reviewers and the spec/standards lens includes bounded cleanup."
@@ -0,0 +1,56 @@
1
+ # Code Review Bug Classes
2
+
3
+ Use this reference for substantial reviews and broad bug hunts.
4
+
5
+ ## Review Mindset
6
+
7
+ - Findings first; summary second.
8
+ - Prefer a few high-signal findings over a long speculative list.
9
+ - Read enough surrounding code to understand the real execution path.
10
+ - Include pre-existing bugs only when they materially affect the reviewed path.
11
+ - Treat workaround-shaped code as a review target.
12
+ - Treat duplicated business rules, builders, cleanup rules, normalization, cache keys, restart paths, and persistence math as likely drift vectors.
13
+ - Treat "tests pass" as insufficient when contracts, ownership, or source-of-truth logic moved.
14
+ - Do not stop after the edited hunk unless the change is truly trivial.
15
+
16
+ ## Non-Negotiable Passes
17
+
18
+ Every substantial review covers:
19
+
20
+ 1. **Scope**: exact diff/commit/branch/files under review.
21
+ 2. **Execution path**: entrypoints, callers, callees, side effects, state writes, network/DB boundaries, cleanup.
22
+ 3. **Architecture fit**: correct owning layer, no leaky abstractions, no duplicate source of truth, no symptom patch in the wrong layer.
23
+ 4. **Invariants**: validation, authorization, ordering, idempotency, data shape, permissions, cache visibility, and lifecycle rules.
24
+ 5. **Failure modes**: empty, null, duplicate, stale, delayed, retried, timeout, cancellation, partial failure, concurrent execution.
25
+ 6. **Blast radius**: DTOs, schemas, cache keys, feature flags, config, metrics, tests, consumers, migrations, and backward compatibility.
26
+ 7. **Verification**: narrow tests/lint/build/analyzer for touched areas, or a clear note when a check cannot run.
27
+
28
+ ## Bug Classes To Hunt
29
+
30
+ - Control-flow mistakes: wrong branch, inverted predicate, missing return, incorrect default, off-by-one, pagination errors.
31
+ - State/lifecycle bugs: stale state, forgotten reset, double writes, orphaned cleanup, leaks, inconsistent derived state.
32
+ - Async/concurrency bugs: missing `await`, race windows, non-idempotent retries, shared mutable state, closure mutation in retryable callbacks.
33
+ - Partial-failure bugs: one side effect succeeds while durable follow-up fails.
34
+ - Contract drift: DTO/schema/type mismatch, nullable changes, enum drift, serialization differences, `ObjectId`/`Date` runtime mismatch.
35
+ - Cache bugs: stale reads, bad cache keys, cross-tenant leakage, missed invalidation, TTL mismatch.
36
+ - Auth regressions: missing actor checks, wrong tenant scope, optional-param bypass, client-only enforcement.
37
+ - Data correctness: timezones, DST, rounding, units, locale parsing, duplicate filtering, sort instability.
38
+ - UI/API regressions: optimistic state not rolled back, loading/error/empty states broken, incompatible response handling.
39
+ - Observability gaps: critical failures suppressed without logs, metrics, retries, or surfaced errors.
40
+ - Workarounds: magic delays, one-off guards, forced ordering, duplicated normalization, cross-layer patches.
41
+ - Architecture drift: business logic in the wrong layer, source-of-truth splits, unnecessary coupling.
42
+ - Deep-module drift: shallow pass-through modules, hypothetical one-adapter seams, lost locality, weak leverage, or tests reaching inside the implementation instead of crossing the Module Interface.
43
+
44
+ ## Mandatory Questions
45
+
46
+ Ask the relevant subset for each meaningful path:
47
+
48
+ - What happens with empty, null, duplicated, delayed, retried, stale, or out-of-order input?
49
+ - What happens when a dependency throws, times out, returns partial data, or returns stale data?
50
+ - Can two executions interleave and corrupt state, leak data, or duplicate work?
51
+ - Are validation and authorization enforced before side effects?
52
+ - Does the change rely on a type guarantee that is weaker at runtime?
53
+ - Do all readers and writers agree on field names, units, nullability, and semantics?
54
+ - If state is rebuilt, cloned, merged, normalized, serialized, or persisted, are all required fields preserved?
55
+ - Can feature flags, optional params, defaults, or fallback paths bypass intended behavior?
56
+ - If failure happens halfway through, what durable state remains and who repairs it?
@@ -0,0 +1,34 @@
1
+ # Code Review Framework Lenses
2
+
3
+ Load this reference when a framework is explicit or strongly implied by files/configs.
4
+
5
+ ## Next.js
6
+
7
+ - Server/client component boundaries, hydration assumptions, browser APIs on server.
8
+ - `fetch` cache modes, route segment caching, `revalidatePath`/`revalidateTag`, stale data behavior.
9
+ - Route handlers/server actions: input validation, auth, serialization of dates/errors/nullables.
10
+ - Loading, empty, error, navigation, optimistic update, rollback, back/refresh behavior.
11
+ - SSR/client mismatch from locale, feature flags, sessions, params, and search params.
12
+
13
+ ## NestJS
14
+
15
+ - Request flow through controller, guard, pipe, interceptor, service, repository, events/queues.
16
+ - DTO validation versus runtime payload, especially transforms, enums, optionals, nested objects.
17
+ - Server-side auth and tenant scope before side effects.
18
+ - Transaction boundaries, partial writes, outbox/queue ordering, retry safety.
19
+ - Exception mapping, HTTP status behavior, cache decorators, request scope, singleton mutable state, cron/queue concurrency.
20
+
21
+ ## Flutter
22
+
23
+ - Widget lifecycle: `init`, `build`, async callbacks, `dispose`, state updates after unmount.
24
+ - Navigation/back stack, dialog/sheet dismissal, duplicate submit from rapid taps.
25
+ - State management transitions, stale emissions, missed listeners, dropped fields.
26
+ - Loading, offline, empty, error, retry states.
27
+ - Platform permissions, keyboard insets, small-screen overflow, animation/controller/stream cleanup.
28
+
29
+ ## Dart
30
+
31
+ - Null-safety assumptions, casts, `late`, `!`, JSON parsing, generated serializers.
32
+ - `Future`, `Stream`, timer, isolate ordering, cancellation, uncaught errors.
33
+ - Equality, copy semantics, immutable updates, mutation during iteration.
34
+ - Date/duration/timezone handling, numeric precision, parsing, generic runtime assumptions.
@@ -0,0 +1,49 @@
1
+ # Code Review Targeted Recipes
2
+
3
+ Load this reference when the diff shape matches one of these recurring risks.
4
+
5
+ ## Activation
6
+
7
+ - new field or contract: run **New Field Threading**
8
+ - transaction/retry/queue/background job: run **Retryable Persistence**
9
+ - DTO/schema/type/persistence change: run **Runtime Contract Alignment**
10
+ - cache or invalidation change: run **Cache Coherence**
11
+ - server/AI/cache/fallback state merged into client state: run **State Merge Precedence**
12
+ - preview/trace/summary/score/winner field: run **Aggregation Cardinality**
13
+
14
+ ## New Field Threading
15
+
16
+ 1. Search for the field name.
17
+ 2. Search nearby `build`, `apply`, `adjust`, `replan`, `normalize`, `merge`, `compile`, `serialize`, `clone`, and fallback helpers.
18
+ 3. Confirm the field survives primary construction, correction/replan paths, persistence reload, response serialization, and externally visible tests.
19
+
20
+ ## Retryable Persistence
21
+
22
+ 1. Read the whole transaction/retry callback.
23
+ 2. List outer-scope variables referenced inside it.
24
+ 3. Flag mutation of outer arrays, counters, iterators, derived inputs, or one-shot streams that changes behavior on retry.
25
+ 4. Compare transactional and non-transactional paths for parity.
26
+
27
+ ## Runtime Contract Alignment
28
+
29
+ 1. Compare DTO validation, internal type, persistence schema, normalization, API response shape, and frontend/state consumers.
30
+ 2. Treat `string` versus `ObjectId`, `Date` versus string, enum drift, and nested optional mismatches as review targets.
31
+ 3. Prefer boundary validation when malformed input should be rejected.
32
+
33
+ ## Cache Coherence
34
+
35
+ 1. Identify cache key inputs, tenant/user scope, feature flags, locale, and permissions.
36
+ 2. Confirm invalidation covers every write path and revalidation timing matches user-visible expectations.
37
+ 3. Check stale reads, cross-tenant leakage, and optimistic UI/cache rollback.
38
+
39
+ ## State Merge Precedence
40
+
41
+ 1. Identify precedence between user-entered state, server state, AI-generated state, fallback state, cache state, and defaults.
42
+ 2. Verify omitted fields, empty objects, `false`, `0`, or `null` cannot erase stronger user choices unless intended.
43
+ 3. Check both backend merge logic and frontend state update logic.
44
+
45
+ ## Aggregation Cardinality
46
+
47
+ 1. Determine whether source data is global, per-group, per-item, per-step, or per-tenant.
48
+ 2. Verify top-level summary/trace/score/winner fields do not collapse multiple meaningful entities into one misleading value.
49
+ 3. Treat `.find()`, first-selected, `sort()[0]`, and flat-array winner logic as suspicious when multiple groups can each have a result.
@@ -0,0 +1,35 @@
1
+ # Deepening
2
+
3
+ How to deepen a cluster of shallow modules safely, given its dependencies. Assumes the vocabulary in [SKILL.md](./SKILL.md) — `module`, `interface`, `seam`, `adapter`.
4
+
5
+ ## Dependency categories
6
+
7
+ When assessing a candidate for deepening, classify its dependencies. The category determines how the deepened module is tested across its seam.
8
+
9
+ ### 1. In-process
10
+
11
+ Pure computation, in-memory state, no I/O. Always deepenable — merge the modules and test through the new interface directly. No adapter needed.
12
+
13
+ ### 2. Local-substitutable
14
+
15
+ Dependencies that have local test stand-ins. Deepenable if the stand-in exists. The deepened module is tested with the stand-in running in the test suite. The seam is internal; no port at the module's external interface.
16
+
17
+ ### 3. Remote but owned (Ports & Adapters)
18
+
19
+ Your own services across a network boundary. Define a port at the seam. The deep module owns the logic; the transport is injected as an adapter. Tests use an in-memory adapter. Production uses a network adapter.
20
+
21
+ ### 4. True external (Mock)
22
+
23
+ Third-party services you don't control. The deepened module takes the external dependency as an injected port; tests provide a mock adapter.
24
+
25
+ ## Seam discipline
26
+
27
+ - **One adapter means a hypothetical seam. Two adapters means a real one.**
28
+ - **Internal seams vs external seams.** A deep module can have internal seams used by its own tests. Don't expose internal seams through the interface just because tests use them.
29
+
30
+ ## Testing strategy: replace, don't layer
31
+
32
+ - Old unit tests on shallow modules become waste once tests at the deepened module's interface exist — delete them.
33
+ - Write new tests at the deepened module's interface. The interface is the test surface.
34
+ - Tests assert on observable outcomes through the interface, not internal state.
35
+ - Tests should survive internal refactors — they describe behaviour, not implementation.
@@ -0,0 +1,50 @@
1
+ # Design It Twice
2
+
3
+ When the user wants to explore alternative interfaces for a chosen deepening candidate, use this parallel sub-agent pattern.
4
+
5
+ Uses the vocabulary in [SKILL.md](./SKILL.md) — `module`, `interface`, `seam`, `adapter`, `leverage`.
6
+
7
+ Run this workflow only when the candidate is selected, its constraints are known, and the interface decision is consequential enough to justify independent alternatives. Do not run it for a vocabulary question, one bounded recommendation, or routine helper extraction.
8
+
9
+ This file defines the comparison protocol; the active root driver executes it and retains session ownership, user dialogue, delegation, and the final decision.
10
+
11
+ ## Process
12
+
13
+ ### 1. Frame the problem space
14
+
15
+ The active root driver writes a user-facing explanation of the problem space for the chosen candidate:
16
+
17
+ - The constraints any new interface would need to satisfy
18
+ - The dependencies it would rely on, and which category they fall into
19
+ - A rough illustrative code sketch to ground the constraints — not a proposal, just a way to make the constraints concrete
20
+
21
+ Show this to the user, then immediately proceed to Step 2. The user reads and thinks while the sub-agents work in parallel.
22
+
23
+ ### 2. Spawn sub-agents
24
+
25
+ Delegate 3+ radically different interfaces to isolated subagent contexts using the exact named role selected by local coding-skill routing. Run them in parallel when supported. This shared reference must not invent a provider-specific tool or override the configured role, model, or effort.
26
+
27
+ If independent subagents are unavailable, state that the normal comparison cannot run. As a fallback, produce three sequential inline alternatives labelled **non-independent**; do not claim that they provide independent design evidence.
28
+
29
+ Prompt each sub-agent with a separate technical brief and a different design constraint:
30
+
31
+ - Agent 1: minimize the interface
32
+ - Agent 2: maximize flexibility
33
+ - Agent 3: optimize for the most common caller
34
+ - Agent 4 (if applicable): design around ports & adapters for cross-seam dependencies
35
+
36
+ Include both [SKILL.md](./SKILL.md) vocabulary and `CONTEXT.md` vocabulary in the brief so each sub-agent names things consistently.
37
+
38
+ Each sub-agent outputs:
39
+
40
+ 1. Interface
41
+ 2. Usage example
42
+ 3. What the implementation hides behind the seam
43
+ 4. Dependency strategy and adapters
44
+ 5. Trade-offs
45
+
46
+ ### 3. Present and compare
47
+
48
+ The active root driver presents designs sequentially so the user can absorb each one, then compares them in prose. Contrast by depth, locality, and seam placement.
49
+
50
+ After comparing, give your own recommendation. If elements from different designs would combine well, propose a hybrid.
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: codebase-design
3
+ description: Design or evaluate a named module interface, deep-module seam, or durable public test seam. Provides bounded design vocabulary; not a session driver, repository-wide scan, or implementation workflow.
4
+ ---
5
+
6
+ # Codebase Design
7
+
8
+ Design deep modules: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use this language and these principles wherever code is being designed or restructured. The aim is leverage for callers, locality for maintainers, and testability for everyone.
9
+
10
+ ## Reference Contract
11
+
12
+ Use this skill as the vocabulary owner and bounded decision lens. Answer the named design question through supplied or locally verified evidence. Do not start repository-wide exploration, implementation, writes, subagents, or an open-ended design session merely because this skill loaded.
13
+
14
+ Let the active driver own workflow, checkpoints, user dialogue, and mutations. Use `$improve-codebase-architecture` for an explicitly requested architecture scan, `$grilling` for an interactive decision tree, and the normal plan/spec/TDD flows for design authority and implementation.
15
+
16
+ Use Design It Twice only after a consequential deepening candidate is selected and its constraints are known.
17
+
18
+ ## Glossary
19
+
20
+ Use these terms exactly — don't substitute "component", "service", "API", or "boundary". Consistent language is the whole point.
21
+
22
+ **Module** — anything with an interface and an implementation. Deliberately scale-agnostic: a function, class, package, or tier-spanning slice. Avoid: unit, component, service.
23
+
24
+ **Interface** — everything a caller must know to use the module correctly: the type signature, but also invariants, ordering constraints, error modes, required configuration, and performance characteristics. Avoid: API, signature.
25
+
26
+ **Implementation** — what's inside a module, its body of code. Distinct from **Adapter**: a thing can be a small adapter with a large implementation or a large adapter with a small implementation. Reach for "adapter" when the seam is the topic; "implementation" otherwise.
27
+
28
+ **Depth** — leverage at the interface: the amount of behaviour a caller or test can exercise per unit of interface they have to learn. A module is **deep** when a large amount of behaviour sits behind a small interface, **shallow** when the interface is nearly as complex as the implementation.
29
+
30
+ **Seam** — a place where you can alter behaviour without editing in that place; the location at which a module's interface lives. Avoid: boundary.
31
+
32
+ **Adapter** — a concrete thing that satisfies an interface at a seam. Describes role, not substance.
33
+
34
+ **Leverage** — what callers get from depth: more capability per unit of interface they learn.
35
+
36
+ **Locality** — what maintainers get from depth: change, bugs, knowledge, and verification concentrate in one place rather than spreading across callers.
37
+
38
+ ## Deep vs shallow
39
+
40
+ **Deep module** = small interface + lots of implementation.
41
+
42
+ **Shallow module** = large interface + little implementation.
43
+
44
+ When designing an interface, ask:
45
+
46
+ - Can I reduce the number of methods?
47
+ - Can I simplify the parameters?
48
+ - Can I hide more complexity inside?
49
+
50
+ ## Principles
51
+
52
+ - **Depth is a property of the interface, not the implementation.**
53
+ - **The deletion test.** Imagine deleting the module. If complexity vanishes, it was a pass-through. If complexity reappears across N callers, it was earning its keep.
54
+ - **The interface is the test surface.**
55
+ - **One adapter means a hypothetical seam. Two adapters means a real one.**
56
+
57
+ ## Designing for testability
58
+
59
+ Good interfaces make testing natural:
60
+
61
+ 1. Accept dependencies, don't create them.
62
+ 2. Return results, don't produce side effects.
63
+ 3. Keep the surface area small.
64
+
65
+ ## Relationships
66
+
67
+ - A **Module** has exactly one **Interface**.
68
+ - **Depth** is a property of a **Module**, measured against its **Interface**.
69
+ - A **Seam** is where a **Module**'s **Interface** lives.
70
+ - An **Adapter** sits at a **Seam** and satisfies the **Interface**.
71
+ - **Depth** produces **Leverage** for callers and **Locality** for maintainers.
72
+
73
+ ## Rejected framings
74
+
75
+ - **Depth as ratio of implementation-lines to interface-lines** — rewards padding the implementation.
76
+ - **"Interface" as the TypeScript `interface` keyword or a class's public methods** — too narrow.
77
+ - **"Boundary"** — overloaded with DDD's bounded context. Say **seam** or **interface**.
78
+
79
+ ## Going deeper
80
+
81
+ - **Deepening a cluster given its dependencies** — see [DEEPENING.md](./DEEPENING.md)
82
+ - **Exploring alternative interfaces** — see [DESIGN-IT-TWICE.md](./DESIGN-IT-TWICE.md)
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "Codebase Design"
3
+ short_description: "Reference vocabulary for deep-module decisions"
4
+ default_prompt: "Use $codebase-design inside the current workflow as a bounded reference to evaluate this named Module Interface or Seam; keep the active driver in control and do not start a broader workflow."
5
+ policy:
6
+ allow_implicit_invocation: true