@haposoft/cafekit 0.16.0-rc.6 → 0.16.0-rc.7
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.
- package/README.md +21 -58
- package/bin/__tests__/change-firewall.semantic-firewall.test.js +4 -5
- package/bin/__tests__/codex-hooks.test.js +137 -0
- package/bin/__tests__/codex-native.test.js +130 -74
- package/bin/__tests__/develop-contract.test.js +155 -76
- package/bin/__tests__/installer-safety.test.js +19 -154
- package/bin/__tests__/package-inventory.test.js +10 -20
- package/bin/__tests__/release-preflight.semantic-firewall.test.js +2 -2
- package/bin/__tests__/validator-grounding.test.js +11 -11
- package/bin/install.js +2 -7
- package/bin/lib/context.js +0 -45
- package/bin/lib/copy-utils.js +1 -1
- package/bin/lib/i18n.js +0 -3
- package/bin/lib/manifest.js +1 -1
- package/bin/phases/claude-runtime.js +1 -3
- package/bin/phases/codex-runtime.js +4 -2
- package/bin/phases/copy-payload.js +3 -15
- package/bin/phases/post-install.js +5 -17
- package/bin/phases/root-config.js +2 -3
- package/bin/phases/select-platform.js +2 -5
- package/bin/phases/summary.js +0 -1
- package/package.json +2 -5
- package/src/claude/CLAUDE.md +19 -6
- package/src/claude/agents/project-manager.md +41 -9
- package/src/claude/agents/spec-maker.md +76 -155
- package/src/claude/gitignore +1 -1
- package/src/claude/hooks/__tests__/spec-gate.test.js +162 -0
- package/src/claude/hooks/lib/context.cjs +1 -1
- package/src/claude/hooks/lib/detect.cjs +1 -1
- package/src/claude/hooks/spec-gate.cjs +44 -9
- package/src/claude/hooks/spec-state.cjs +22 -11
- package/src/claude/hooks/task-scaffold-guard.cjs +1 -1
- package/src/claude/migration-manifest.json +17 -3
- package/src/claude/rules/manage-docs.md +43 -24
- package/src/claude/rules/state-sync.md +57 -62
- package/src/claude/rules/workflow.md +30 -13
- package/src/claude/scripts/change-firewall.cjs +2 -2
- package/src/claude/scripts/generate-skill-catalog.cjs +0 -1
- package/src/claude/scripts/spec-receipt.cjs +141 -1
- package/src/claude/scripts/spec-resolver.cjs +288 -0
- package/src/claude/skills/develop/SKILL.md +89 -125
- package/src/claude/skills/develop/references/parallel-waves.md +75 -162
- package/src/claude/skills/develop/references/quality-gate.md +61 -121
- package/src/claude/skills/develop/references/subagent-patterns.md +31 -38
- package/src/claude/skills/question/SKILL.md +1 -1
- package/src/claude/skills/specs/SKILL.md +142 -204
- package/src/claude/skills/specs/references/review.md +109 -243
- package/src/claude/skills/specs/references/templates.md +173 -0
- package/src/claude/skills/sync/SKILL.md +66 -90
- package/src/claude/skills/sync/references/sync-protocols.md +62 -83
- package/src/codex/AGENTS.md +20 -7
- package/src/codex/hooks/lib/spec-receipt.cjs +18 -0
- package/src/codex/hooks/lib/spec-utils.cjs +25 -0
- package/src/codex/hooks/spec-gate.cjs +46 -16
- package/src/codex/hooks/spec-state.cjs +22 -12
- package/src/codex/rules/state-sync.md +57 -61
- package/src/common/AGENTS.md +8 -1
- package/bin/__tests__/opencode-spec-gate.test.js +0 -799
- package/bin/lib/opencode-install.js +0 -899
- package/bin/phases/opencode-runtime.js +0 -38
- package/src/claude/skills/specs/references/archive-workflow.md +0 -74
- package/src/claude/skills/specs/references/ask-user-question-gates.md +0 -70
- package/src/claude/skills/specs/references/codebase-analysis.md +0 -102
- package/src/claude/skills/specs/references/cross-spec-dependency.md +0 -76
- package/src/claude/skills/specs/references/research-strategy.md +0 -107
- package/src/claude/skills/specs/references/scope-inquiry.md +0 -107
- package/src/claude/skills/specs/references/translation-mirror.md +0 -83
- package/src/claude/skills/specs/rules/design-discovery-full.md +0 -45
- package/src/claude/skills/specs/rules/design-discovery-light.md +0 -28
- package/src/claude/skills/specs/rules/design-principles.md +0 -138
- package/src/claude/skills/specs/rules/design-review.md +0 -55
- package/src/claude/skills/specs/rules/ears-format.md +0 -42
- package/src/claude/skills/specs/rules/phase-decision-matrix.md +0 -56
- package/src/claude/skills/specs/rules/task-scoring-rubric.md +0 -52
- package/src/claude/skills/specs/rules/tasks-generation.md +0 -189
- package/src/opencode/AGENTS.md +0 -41
- package/src/opencode/plugins/docs-sync.ts +0 -175
- package/src/opencode/plugins/inspect-block.ts +0 -164
- package/src/opencode/plugins/privacy-block.ts +0 -182
- package/src/opencode/plugins/rules.ts +0 -155
- package/src/opencode/plugins/session.ts +0 -179
- package/src/opencode/plugins/spec-gate.ts +0 -457
- package/src/opencode/plugins/spec-state.ts +0 -311
- package/src/opencode/plugins/state.ts +0 -253
- package/src/opencode/plugins/task-scaffold-guard.ts +0 -161
- package/src/opencode/plugins/usage.ts +0 -178
|
@@ -1,222 +1,160 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hapo:specs
|
|
3
|
-
description: "
|
|
3
|
+
description: "Turn a substantial feature idea into a bounded, reviewed plan and executable flat task files, with human decisions at scope, findings, and completion. Use when the work needs durable coordination; skip for a clear one-file or two-file change."
|
|
4
4
|
user-invocable: true
|
|
5
|
-
|
|
6
|
-
category: utilities
|
|
7
|
-
keywords: [specs, requirements, design, tasks]
|
|
8
|
-
argument-hint: "[<feature-description>] [--auto] | --status | --validate <feature> | --archive"
|
|
5
|
+
argument-hint: "<feature-description>"
|
|
9
6
|
metadata:
|
|
10
7
|
author: haposoft
|
|
11
|
-
version: "
|
|
8
|
+
version: "3.0.0"
|
|
12
9
|
---
|
|
13
|
-
# Specs —
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
semantic Markdown edit invalidates the bound round-trip result.
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# Claude Code
|
|
29
|
-
node .claude/scripts/spec-readiness.cjs specs/<feature> --review-result <review.json>
|
|
30
|
-
# Codex
|
|
31
|
-
node .codex/scripts/spec-readiness.cjs specs/<feature> --review-result <review.json>
|
|
32
|
-
```
|
|
10
|
+
# Specs — process-first planning
|
|
11
|
+
|
|
12
|
+
Quality comes from a short decision process; honesty comes from evidence. Keep
|
|
13
|
+
the human at exactly three gates and let the agent do the work between them.
|
|
14
|
+
The durable output is Markdown that can be read and edited without a compiler.
|
|
15
|
+
|
|
16
|
+
## Step 0 — decide whether a plan earns its cost
|
|
17
|
+
|
|
18
|
+
Work directly when the cause and change are clear, isolated, reversible, and
|
|
19
|
+
likely limited to one or two files. Use this skill when the request crosses
|
|
20
|
+
components, contains a product or architecture choice, has meaningful failure
|
|
21
|
+
risk, or needs several tasks, sessions, or owners.
|
|
33
22
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Strict authority, then writes atomically; failure preserves exact original bytes.
|
|
23
|
+
Do not create a plan merely because this skill was mentioned in surrounding
|
|
24
|
+
documentation. The user must invoke Specs or ask for durable planning.
|
|
37
25
|
|
|
38
|
-
|
|
39
|
-
`risks`, and contract `version`. Planning and assurance are independent:
|
|
26
|
+
## The three human gates
|
|
40
27
|
|
|
41
|
-
|
|
|
28
|
+
| Gate | Timing | Human decision |
|
|
42
29
|
|---|---|---|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
permission, execution proof, or closeout. `done` belongs to final-state
|
|
61
|
-
authority after execution closeout.
|
|
62
|
-
|
|
63
|
-
## Artifact router
|
|
64
|
-
|
|
65
|
-
Decide this table before loading discovery rules or creating files:
|
|
66
|
-
|
|
67
|
-
| Depth | Durable core | Research route | Task route | Design expansion |
|
|
68
|
-
|---|---|---|---|---|
|
|
69
|
-
| `None` | none | absent | absent | none |
|
|
70
|
-
| `Compact` | `spec.json`, `requirements.md`, `design.md` | only on a research trigger | only on a typed topology trigger | bounded core sections |
|
|
71
|
-
| `Full` | `spec.json`, `requirements.md`, `design.md` | only on a research trigger | only on a typed topology trigger | only sections activated by scoped behavior |
|
|
72
|
-
|
|
73
|
-
Research triggers are: unresolved material uncertainty that can change
|
|
74
|
-
requirements/design; an external-current fact that must be grounded; or an
|
|
75
|
-
explicit user request. Otherwise `authoring.research=absent`, omit the pointer,
|
|
76
|
-
and create no file or placeholder. Repository scouting may inform requirements
|
|
77
|
-
or design without producing `research.md`.
|
|
78
|
-
|
|
79
|
-
Task triggers are typed ownership, dependency, transition, proof, or parallel
|
|
80
|
-
boundaries that require separate execution packets. Requirement count, size,
|
|
81
|
-
planning depth, assurance level, risk label, architectural layers, and habit do
|
|
82
|
-
not trigger tasks. `coordination.boundaries` is machine authority.
|
|
83
|
-
|
|
84
|
-
Full selects potential detail, never automatic discovery ceremony. It does not
|
|
85
|
-
automatically search the web, invoke a researcher, dump discovery results, create
|
|
86
|
-
research, create tasks, or retain unused template sections.
|
|
87
|
-
|
|
88
|
-
## Artifact profiles
|
|
89
|
-
|
|
90
|
-
- `None`: create no spec directory, registry, research, task, phase, report, or
|
|
91
|
-
receipt artifact.
|
|
92
|
-
- `Compact` and `Full`: create the routed core and only optional artifacts whose
|
|
93
|
-
trigger is present.
|
|
94
|
-
- Research, task, and phase metadata must disappear when their trigger is absent.
|
|
95
|
-
- `feature-receipt.md` and task execution receipts belong to execution closeout,
|
|
96
|
-
not authoring or readiness.
|
|
97
|
-
|
|
98
|
-
Forbidden authoring artifacts include `init.json`, `spec-state.json`,
|
|
99
|
-
`hydration.md`, `phase-*.md`, and shorthand task filenames.
|
|
100
|
-
|
|
101
|
-
## Route
|
|
102
|
-
|
|
103
|
-
1. Resolve the request and active feature; ambiguity fails closed.
|
|
104
|
-
Ambiguous active candidates fail closed: multiple active specs require an
|
|
105
|
-
explicit target. Do not rely on first-directory selection or guess from the
|
|
106
|
-
first active directory.
|
|
107
|
-
2. Classify both axes and run the artifact router before loading discovery.
|
|
108
|
-
3. Establish `scope_lock` with source, in/out scope, and
|
|
109
|
-
`expansion_policy=requires-user-approval`.
|
|
110
|
-
4. Author requirements, then design, then conditional research/tasks as their
|
|
111
|
-
actual dependency requires; do not create empty artifacts to reserve them.
|
|
112
|
-
5. Review the final graph, synchronize machine and Markdown projections, then
|
|
113
|
-
run deterministic gates.
|
|
114
|
-
6. Pause for unresolved product/scope decisions instead of inventing semantics.
|
|
115
|
-
|
|
116
|
-
Investigate a `repository_fact` and record grounding. Choose the simplest
|
|
117
|
-
`reversible_assumption` and record its bounded reversal boundary. Ask the user
|
|
118
|
-
for a `user_owned` product, scope, security, data, or irreversible decision.
|
|
119
|
-
Persist only actual items in optional `spec.json.decisions`; omit it when none
|
|
120
|
-
exist. Unresolved `user_owned` entries block readiness.
|
|
121
|
-
|
|
122
|
-
Supported flags are `--auto`, `--validate`, `--status`, and `--archive`; bare
|
|
123
|
-
`status`, `archive`, and `resume` are compatibility aliases.
|
|
124
|
-
|
|
125
|
-
## Requirements
|
|
126
|
-
|
|
127
|
-
Load `rules/ears-format.md` and `templates/requirements.md`.
|
|
128
|
-
|
|
129
|
-
- Use `Requirement N` and literal `RN.M`; task mappings use numeric `N.M`.
|
|
130
|
-
- State scoped outcomes and non-goals before detailed criteria.
|
|
131
|
-
- Every behavior has measurable acceptance and relevant negative/error cases.
|
|
132
|
-
- Add only feature-specific measurable non-functional constraints.
|
|
133
|
-
- User story, rationale, and scenarios are conditional, not ceremony.
|
|
134
|
-
|
|
135
|
-
## Design and discovery
|
|
136
|
-
|
|
137
|
-
Load `rules/design-principles.md` plus the routed light/full discovery rule.
|
|
138
|
-
Load research guidance only when the artifact router selected research.
|
|
139
|
-
|
|
140
|
-
- Compact keeps boundary, six-column typed anchors, decisions/invariants, and
|
|
141
|
-
verification. Full adds only triggered contract/flow/data/error/security/
|
|
142
|
-
migration sections.
|
|
143
|
-
- Define each implementation-significant contract once and reference its stable
|
|
144
|
-
`D`/`I`/`C` ID.
|
|
145
|
-
- For retention/lifecycle and API contracts, follow `rules/design-principles.md` (clock anchor/source/timezone/precision/comparator/inclusivity/boundary + wrong-clock/boundary counterexample; method/route/auth/headers/schema/response/error/idempotency).
|
|
146
|
-
- Keep exactly one parser-visible `## Verification Definitions` section. Each
|
|
147
|
-
single-line V definition starts with `Criteria ...; Owner ...;` and traces
|
|
148
|
-
exact decision refs, method,
|
|
149
|
-
expected result, negative/failure case, and reachability/grounding.
|
|
150
|
-
- Add `Proof criteria ...; Proof owner ...; Evidence anchor ...;` only for a
|
|
151
|
-
typed proof boundary; ordinary verification stays in the owner boundary.
|
|
152
|
-
- Delete unused optional sections. Ground repository facts to exact anchors;
|
|
153
|
-
ground external-current decisions to primary sources.
|
|
154
|
-
|
|
155
|
-
## Tasks and lightweight phases
|
|
156
|
-
|
|
157
|
-
Load `rules/tasks-generation.md` and `templates/task.md` only when at least one
|
|
158
|
-
typed topology trigger exists. Size, risk labels, and tradition alone do not
|
|
159
|
-
create tasks. Keep `Direct`/`Compact` light: do not coerce a task when no typed
|
|
160
|
-
boundary exists, and never invent a task to justify structure.
|
|
161
|
-
|
|
162
|
-
Each task has exactly seven H2 sections: Outcome, Scope, Anchors and Ownership, Changes, Acceptance, Dependencies, and Verification Plan. The only ownership table is `ID | Type | Target | Role | Access | Action`. Planned verification is not execution evidence. Every executable task must own a concrete test file/artifact anchor (write create/modify) or share proof via a typed proof boundary; bare npm test is not ownership.
|
|
163
|
-
|
|
164
|
-
Typed `coordination.boundaries` entries (`ownership`, `dependency`,
|
|
165
|
-
`transition`, `proof`, `parallel`) are the sole topology authority. Legacy
|
|
166
|
-
priority markers, trigger fields, related-file lists, and prose labels are inert
|
|
167
|
-
read compatibility, never canonical authoring.
|
|
168
|
-
|
|
169
|
-
Each `RN.M` has exactly one implementation owner. A proof subject implements
|
|
170
|
-
its criterion; its verifier owns a separate proof criterion/artifact, references
|
|
171
|
-
the same V definition, and never duplicates the subject acceptance claim.
|
|
172
|
-
|
|
173
|
-
Phases are optional task-ID groups only for a complex Full task graph. They do
|
|
174
|
-
not create files, repeat prose, or replace typed edges.
|
|
175
|
-
|
|
176
|
-
## Review and readiness
|
|
177
|
-
|
|
178
|
-
Load `references/review.md`. Review the whole graph and inventory every blocker; presentation may be concise, but finding count is never capped. Each `RN.M` receives a concrete counterexample mapped to real `D`/`I`/`C` and `V` refs. For any retention/lifecycle rule, include a counterexample where the wrong clock (for example creation time instead of terminal/state-transition) would violate the policy.
|
|
179
|
-
|
|
180
|
-
Routine and Elevated have no reviewer ceremony. Strict requires an independent, allowlisted reviewer capability observed by the host hook. The author cannot self-attest Strict. If that host event is unavailable, pause once with the exact capability blocker; do not retry reviewer loops, self-attest, downgrade, or simulate the event. This is an honest-agent guardrail, not host-attested evidence or a security boundary. Two-review target is advisory: after two failed semantic rounds, pause for unresolved product/security/architecture uncertainty or repeated non-convergence; one bounded mechanical correction without weakening gates is allowed; budgets never override correctness.
|
|
181
|
-
|
|
182
|
-
For Strict, the reviewer binds its host-observed event to the read-only candidate
|
|
183
|
-
digest from `node .claude/scripts/validate-spec-output.cjs specs/<feature> --semantic-digest` (Claude Code) or `node .codex/scripts/validate-spec-output.cjs specs/<feature> --semantic-digest` (Codex);
|
|
184
|
-
finalization then verifies that current observation.
|
|
185
|
-
|
|
186
|
-
Run final-byte validation and grounding for every durable spec:
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
# Claude Code
|
|
190
|
-
node .claude/scripts/validate-spec-output.cjs specs/<feature>
|
|
191
|
-
# Codex
|
|
192
|
-
node .codex/scripts/validate-spec-output.cjs specs/<feature>
|
|
30
|
+
| C1 — Scope | before writing the plan | EXPAND, KEEP, or CUT the proposed minimum change |
|
|
31
|
+
| C2 — Findings | after adversarial review | accept, reject, or revise each deduplicated finding |
|
|
32
|
+
| C3 — Done | after execution | accept completion from current command output and receipts |
|
|
33
|
+
|
|
34
|
+
Ask once at each gate. Do not ask for routine implementation choices between
|
|
35
|
+
the gates. If new evidence invalidates the scope, return to C1 instead of
|
|
36
|
+
silently expanding it.
|
|
37
|
+
|
|
38
|
+
## Primary output layout
|
|
39
|
+
|
|
40
|
+
Create one direct child of the repository's `specs/` directory:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
specs/<feature>/
|
|
44
|
+
├── plan.md
|
|
45
|
+
├── task-01-<slug>.md
|
|
46
|
+
└── task-02-<slug>.md
|
|
193
47
|
```
|
|
194
48
|
|
|
195
|
-
|
|
196
|
-
|
|
49
|
+
Task files are flat beside `plan.md`. Do not create a nested task directory.
|
|
50
|
+
Use safe lowercase feature and task slugs. Read
|
|
51
|
+
[`references/templates.md`](references/templates.md) before authoring these
|
|
52
|
+
files.
|
|
53
|
+
|
|
54
|
+
## Flow
|
|
55
|
+
|
|
56
|
+
### 1. Challenge scope, then open C1
|
|
57
|
+
|
|
58
|
+
Inspect the repository before drafting. Answer three questions with current
|
|
59
|
+
`path:line` evidence:
|
|
60
|
+
|
|
61
|
+
1. What already exists and can be reused?
|
|
62
|
+
2. What is the smallest change set that delivers the requested outcome?
|
|
63
|
+
3. What signals expansion: more than eight touched files, more than two new
|
|
64
|
+
services/classes, or more than three independent work groups?
|
|
65
|
+
|
|
66
|
+
Present the answers and ask the user to EXPAND, KEEP, or CUT. Record the chosen
|
|
67
|
+
scope and explicit exclusions in `plan.md`.
|
|
68
|
+
|
|
69
|
+
### 2. Write the plan and task packets
|
|
70
|
+
|
|
71
|
+
Keep `plan.md` as the short index: C1 decision, EARS acceptance criteria,
|
|
72
|
+
explicit exclusions, and a task table. Every acceptance criterion receives a
|
|
73
|
+
stable ID, and every task row lists the criteria it satisfies.
|
|
74
|
+
|
|
75
|
+
Make each task small enough for one owner to hold in one reading: one outcome,
|
|
76
|
+
normally no more than about five owned files, explicit dependencies, measurable
|
|
77
|
+
acceptance, and a runnable verification command. A task must deliver usable
|
|
78
|
+
behavior; do not create preparation-only tasks.
|
|
79
|
+
|
|
80
|
+
When an outcome is uncertain, write a question rather than guessing. When a
|
|
81
|
+
rule remains ambiguous, add two or three concrete examples and resolve the rule
|
|
82
|
+
at C1 or C2.
|
|
83
|
+
|
|
84
|
+
### 3. Review adversarially, then open C2
|
|
85
|
+
|
|
86
|
+
Read [`references/review.md`](references/review.md) and run its fresh-context
|
|
87
|
+
review. Every finding needs a reproducible `path:line` citation and a concrete
|
|
88
|
+
failure scenario. Deduplicate, rank, and cap the list at 15.
|
|
89
|
+
|
|
90
|
+
Ask the user to accept, reject, or revise each finding. Apply only accepted
|
|
91
|
+
decisions. After every plan edit, run the consistency sweep across all plan and
|
|
92
|
+
task files. Stop after two paper-review rounds; later findings require runtime
|
|
93
|
+
evidence.
|
|
94
|
+
|
|
95
|
+
### 4. Execute one task at a time
|
|
96
|
+
|
|
97
|
+
An implementation workflow owns execution. It selects one unblocked task,
|
|
98
|
+
changes its single `Status:` field to `in_progress`, respects owned paths, runs
|
|
99
|
+
the task's verification, and appends a real inline `## Receipt` only after the
|
|
100
|
+
command finishes.
|
|
101
|
+
|
|
102
|
+
Parallel work is allowed only for tasks with disjoint write ownership and
|
|
103
|
+
satisfied dependencies. One file has one writer in a wave. The controller is
|
|
104
|
+
the sole writer of task status and receipts.
|
|
105
|
+
|
|
106
|
+
### 5. Prove completion, then open C3
|
|
107
|
+
|
|
108
|
+
A task may say `Status: done` only when its inline receipt contains the exact
|
|
109
|
+
command, `Exit: 0`, `Verification: PASS`, runtime-bound Base and Head values,
|
|
110
|
+
and a non-empty fenced command-output block. Placeholder or remembered output
|
|
111
|
+
is not evidence.
|
|
112
|
+
|
|
113
|
+
Show the user the current evidence and unresolved limitations. The user decides
|
|
114
|
+
at C3 whether the feature is done. A passing command proves only what it ran;
|
|
115
|
+
it does not invent product approval, review independence, or runtime coverage.
|
|
116
|
+
|
|
117
|
+
## Ten operating laws
|
|
197
118
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
119
|
+
1. **A1 — Scope once.** Raise scope pressure at C1; reopen only with new proof.
|
|
120
|
+
2. **A2 — Small packets.** One task, one outcome, one owner, one proof command.
|
|
121
|
+
3. **A3 — One fact, one home.** Reference decisions; never copy mutable lists.
|
|
122
|
+
4. **A4 — Files are state.** `plan.md` and flat task files are canonical and
|
|
123
|
+
hand-editable; indexes are disposable views.
|
|
124
|
+
5. **B1 — Cite the repository.** Codebase claims carry current `path:line`
|
|
125
|
+
evidence or an explicit `[UNVERIFIED]` marker.
|
|
126
|
+
6. **B2 — Review from fresh context.** The author does not impersonate the
|
|
127
|
+
independent adversarial reviewer.
|
|
128
|
+
7. **B3 — Sweep after edits.** Search renamed concepts, rejected assumptions,
|
|
129
|
+
ownership, dependencies, criteria IDs, and copied prose across every file.
|
|
130
|
+
8. **B4 — Stop paper churn.** Two pre-code review rounds maximum; later claims
|
|
131
|
+
need runtime evidence.
|
|
132
|
+
9. **C1 — Done is derived.** Status follows fresh proof, never confidence.
|
|
133
|
+
10. **C2 — Rules pay rent.** Add a rule or machine check only when it prevents a
|
|
134
|
+
cited real incident; reassess rules when the primary model changes.
|
|
208
135
|
|
|
209
|
-
##
|
|
136
|
+
## Machine boundary
|
|
210
137
|
|
|
211
|
-
|
|
212
|
-
|
|
138
|
+
The shared workflow resolver recognizes only a regular `plan.md` plus one or
|
|
139
|
+
more regular flat `task-*.md` files inside one direct feature directory. The
|
|
140
|
+
Stop gate revalidates every done task's inline Receipt and provenance. The old
|
|
141
|
+
task-scaffold guard remains limited to the older nested layout; flat v3 tasks
|
|
142
|
+
do not invoke that kernel path.
|
|
213
143
|
|
|
214
|
-
|
|
144
|
+
These checks are a final safety net, not a substitute for C1-C3 judgment. Do
|
|
145
|
+
not add a new schema, approval field, readiness bit, or review state to make the
|
|
146
|
+
Markdown look more authoritative.
|
|
215
147
|
|
|
216
|
-
|
|
217
|
-
|
|
148
|
+
## Legacy compatibility
|
|
149
|
+
|
|
150
|
+
Existing features that contain `spec.json`, nested task files, or separate
|
|
151
|
+
receipt files stay on the installed legacy adapters. Do not migrate or rewrite
|
|
152
|
+
them while authoring an unrelated v3 feature. New Specs output always uses the
|
|
153
|
+
flat layout above and never requires the legacy kernel.
|
|
218
154
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
155
|
+
## Maintenance
|
|
156
|
+
|
|
157
|
+
Keep this entrypoint focused on routing and invariants. Put templates and
|
|
158
|
+
examples in `references/templates.md`; put review mechanics in
|
|
159
|
+
`references/review.md`. Before adding guidance, identify the observed failure
|
|
160
|
+
it prevents and remove duplicated wording elsewhere.
|