@nurix/etna 0.20.35 → 0.20.37
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/data/catalog/rules/changelog.md +1 -1
- package/data/catalog/skills/nustack/SKILL.md +2 -2
- package/data/catalog/skills/nustack/references/cli-design.md +35 -35
- package/data/catalog/skills/nustack/references/monorepo-master-list.md +6 -6
- package/data/catalog/skills/nustack/references/monorepo-setup.md +13 -13
- package/data/catalog/skills/nustack/references/publishing.md +40 -39
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +4 -4
- package/data/harnesses/code/agents/brainstorm.md +2 -2
- package/data/harnesses/code/agents/lld-mode.md +2 -2
- package/data/harnesses/code/agents/maintenance.md +17 -17
- package/data/harnesses/code/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/code/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/code/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/code/docs/README.md +9 -17
- package/data/harnesses/code/docs/history/CHANGELOG.md +19 -18
- package/data/harnesses/code/docs/structure.md +60 -45
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/hooks/compliance.mjs +8 -2
- package/data/harnesses/code/hooks/lib/sweep.mjs +3 -2
- package/data/harnesses/code/rules/changelog.md +1 -1
- package/data/harnesses/code/skills/boundary/SKILL.md +33 -22
- package/data/harnesses/code/skills/boundary/references/index.md +2 -4
- package/data/harnesses/code/skills/boundary/references/mechanisms.md +3 -10
- package/data/harnesses/code/skills/boundary/references/packs/frontend.md +17 -17
- package/data/harnesses/code/skills/boundary/references/packs/generic-tail.md +1 -1
- package/data/harnesses/code/skills/brainstorm/README.md +11 -13
- package/data/harnesses/code/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/code/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/code/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/code/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/code/skills/design/SKILL.md +31 -35
- package/data/harnesses/code/skills/design/data/iconography.md +2 -2
- package/data/harnesses/code/skills/design/references/compose.md +14 -16
- package/data/harnesses/code/skills/design/references/foundations.md +5 -5
- package/data/harnesses/code/skills/design/references/intake.md +6 -6
- package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/code/skills/design/references/ship-gate.md +5 -5
- package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +4 -4
- package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +2 -2
- package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +1 -1
- package/data/harnesses/code/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/code/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/code/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/code/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/code/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/code/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/code/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/code/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/code/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/code/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/code/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/code/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/code/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/code/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/code/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/code/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/code/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/code/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/code/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/code/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/code/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/code/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/code/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/code/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/code/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/code/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/code/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/code/skills/issue-bridge/SKILL.md +51 -16
- package/data/harnesses/code/skills/issue-bridge/references/trackers/github.md +5 -5
- package/data/harnesses/code/skills/issue-bridge/references/trackers/jira.md +11 -8
- package/data/harnesses/code/skills/issue-bridge/references/trackers/linear.md +16 -11
- package/data/harnesses/code/skills/nustack-graph/SKILL.md +38 -29
- package/data/harnesses/code/skills/polygraph/references/dispatch.md +31 -18
- package/data/harnesses/code/skills/polygraph/references/rows.md +11 -6
- package/data/harnesses/code/skills/schema-design/SKILL.md +39 -41
- package/data/harnesses/code/skills/test/SKILL.md +38 -42
- package/data/harnesses/code/skills/testing/SKILL.md +83 -73
- package/data/harnesses/code/skills/workflow-mapper/SKILL.md +156 -193
- package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +15 -15
- package/data/harnesses/delivery/CLAUDE.md +1 -1
- package/data/harnesses/delivery/agents/brainstorm.md +2 -2
- package/data/harnesses/delivery/agents/lld-mode.md +2 -2
- package/data/harnesses/delivery/agents/maintenance.md +17 -17
- package/data/harnesses/delivery/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/delivery/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/delivery/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/delivery/harness.json +2 -2
- package/data/harnesses/delivery/rules/changelog.md +1 -1
- package/data/harnesses/delivery/skills/brainstorm/README.md +11 -13
- package/data/harnesses/delivery/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/delivery/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/delivery/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/delivery/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/delivery/skills/cost-report/SKILL.md +10 -10
- package/data/harnesses/delivery/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/delivery/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/delivery/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/delivery/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/delivery/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/delivery/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/delivery/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/delivery/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/delivery/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/delivery/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/delivery/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/delivery/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/delivery/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/delivery/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/delivery/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/delivery/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/delivery/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/delivery/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/delivery/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/delivery/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/delivery/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/delivery/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/delivery/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/delivery/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/delivery/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/delivery/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/delivery/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/delivery/skills/escalate/SKILL.md +11 -11
- package/data/harnesses/delivery/skills/prompt-eval/SKILL.md +8 -8
- package/data/harnesses/delivery/skills/prompt-library/SKILL.md +30 -9
- package/data/harnesses/delivery/skills/route/SKILL.md +8 -8
- package/data/harnesses/etna/CLAUDE.md +2 -2
- package/data/harnesses/etna/agents/brainstorm.md +2 -2
- package/data/harnesses/etna/agents/lld-mode.md +2 -2
- package/data/harnesses/etna/agents/maintenance.md +17 -17
- package/data/harnesses/etna/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/etna/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/etna/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/changelog.md +1 -1
- package/data/harnesses/etna/skills/boundary/SKILL.md +33 -22
- package/data/harnesses/etna/skills/boundary/references/index.md +2 -4
- package/data/harnesses/etna/skills/boundary/references/mechanisms.md +3 -10
- package/data/harnesses/etna/skills/boundary/references/packs/frontend.md +17 -17
- package/data/harnesses/etna/skills/boundary/references/packs/generic-tail.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/README.md +11 -13
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/etna/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/etna/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/etna/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/etna/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/etna/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/etna/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/etna/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/etna/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/etna/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/etna/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/etna/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/etna/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/etna/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/etna/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/etna/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/etna/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/etna/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/etna/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/etna/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/etna/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/etna/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/etna/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/etna/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/etna/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/etna/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/etna/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/etna/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/etna/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/etna/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/etna/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/etna/skills/workflow-mapper/SKILL.md +156 -193
- package/data/harnesses/etna/skills/workflow-mapper/references/patterns.md +15 -15
- package/data/harnesses/hr/harness.json +1 -1
- package/data/harnesses/hr/skills/evaluator/SKILL.md +71 -73
- package/data/harnesses/hr/skills/evaluator/criteria/code-quality.md +28 -47
- package/data/harnesses/hr/skills/evaluator/criteria/deployment-readiness.md +33 -43
- package/data/harnesses/hr/skills/evaluator/criteria/maintainability.md +34 -46
- package/data/harnesses/hr/skills/evaluator/criteria/mechanical-ambition.md +13 -13
- package/data/harnesses/hr/skills/evaluator/criteria/problem-substantiveness.md +7 -7
- package/data/harnesses/hr/skills/evaluator/criteria/testing.md +36 -41
- package/data/harnesses/hr/skills/evaluator/criteria/ux-mechanics.md +25 -11
- package/data/harnesses/hr/skills/evaluator/criteria/value-articulation.md +7 -7
- package/data/harnesses/hr/skills/evaluator/preflight.md +27 -46
- package/data/harnesses/hr/skills/interview-eval/SKILL.md +37 -42
- package/data/harnesses/hr/skills/interview-eval/rubric.md +21 -23
- package/package.json +2 -2
|
@@ -3,56 +3,54 @@
|
|
|
3
3
|
Load when: composing or auditing any working-surface file; deciding what a turn's substance *is*
|
|
4
4
|
(a force, a fork, a commitment); judging whether a record is complete enough to harvest.
|
|
5
5
|
|
|
6
|
-
The session's product is a defensible design position
|
|
7
|
-
forks, commitments, consequences. They are ADR epistemics
|
|
8
|
-
|
|
6
|
+
The session's product is a defensible design position, carried by five elements — thesis, forces,
|
|
7
|
+
forks, commitments, consequences. They are ADR epistemics without the ceremony: what makes a
|
|
8
|
+
decision record *citable* stays; what makes it *bureaucratic* is out.
|
|
9
9
|
|
|
10
10
|
## The five elements
|
|
11
11
|
|
|
12
12
|
**Thesis** — the claim under construction. One composed document (`thesis.md`) in a mandated
|
|
13
13
|
readable shape: the **claim** (what we are building and the position taken), the **argument** (the
|
|
14
14
|
forces bearing on it and the reasoning chain from forces to claim), then **what most recently
|
|
15
|
-
changed and why**. Composed prose from turn one, rewritten whole at every compose —
|
|
16
|
-
|
|
17
|
-
staleness is visible instead of trusted.
|
|
15
|
+
changed and why**. Composed prose from turn one, rewritten whole at every compose — **never**
|
|
16
|
+
appended, because an appended document never reads well. Every compose carries a `Current as of:`
|
|
17
|
+
stamp, so staleness is visible instead of trusted.
|
|
18
18
|
|
|
19
19
|
**Forces** — the pressures that shape the design: user constraints stated in the conversation,
|
|
20
|
-
evidence from the repo or the field, platform realities, costs, prior doctrine. Forces
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
evidence from the repo or the field, platform realities, costs, prior doctrine. Forces have no file;
|
|
21
|
+
each lives wherever the reasoning that uses it lives — the thesis argument, a commitment's Why — and
|
|
22
|
+
is stated concretely enough to check ("the CLI gates consumer refresh", never "deployment
|
|
23
|
+
concerns").
|
|
24
24
|
|
|
25
|
-
**Forks** — the open questions
|
|
26
|
-
contradictions, uncovered aspects
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
**Forks** — the open questions, and the session's only convergence currency: flaws, gaps,
|
|
26
|
+
contradictions, and uncovered aspects funnel into `forks.md` or do not exist. Every fork carries a
|
|
27
|
+
**close condition** — what resolution looks like: a pick, a confirmed fact, an accepted risk. A
|
|
28
|
+
fork without one is not askable; rewrite it until it is.
|
|
29
29
|
|
|
30
30
|
**Commitments** — the resolved calls, in `ledger.md`. Field set per entry:
|
|
31
31
|
|
|
32
32
|
- **Decision** — the call, one sentence, present tense.
|
|
33
|
-
- **Why** — the forces and reasoning that produced it
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
tripwire.
|
|
33
|
+
- **Why** — the forces and reasoning that produced it, including declined options: a
|
|
34
|
+
**Declined:** line names the option, the evidence it was declined against *at decline time*, and
|
|
35
|
+
a **re-evaluate condition** where one exists — the condition under which the rejection deserves
|
|
36
|
+
another look. The line keeps a deliberate call from reading later as an unexamined one, and the
|
|
37
|
+
re-evaluate condition turns a past rejection into a standing tripwire.
|
|
39
38
|
- **How to apply** — what acting on the decision looks like in this repo.
|
|
40
39
|
- **Resolves** — the fork(s) this closes.
|
|
41
40
|
|
|
42
41
|
The ledger is **append-only with amendment-by-annotation**: a decision is real the moment it
|
|
43
|
-
lands; reversing it is a new entry
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
ceremony.
|
|
42
|
+
lands; reversing it is a new entry naming what it reverses, plus a one-line annotation on the old
|
|
43
|
+
entry ("Reversed by …"). **Never** add a tentative/committed/rescinded state machine —
|
|
44
|
+
append-plus-annotation carries the same information with none of the ceremony.
|
|
47
45
|
|
|
48
|
-
**Consequences** — what a commitment obligates beyond itself: follow-on work, constraints
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
**Consequences** — what a commitment obligates beyond itself: follow-on work, constraints on
|
|
47
|
+
future decisions, and where its knowledge must land at harvest. They surface as new forks
|
|
48
|
+
("committing to X opens the question of Y"), backlog candidates, or fragment content, and keep the
|
|
49
|
+
ledger from being a list of verdicts with no forward pressure.
|
|
52
50
|
|
|
53
51
|
## What ADR epistemics keep
|
|
54
52
|
|
|
55
|
-
The parts that
|
|
53
|
+
The parts that make a decision record worth citing in shipped source:
|
|
56
54
|
|
|
57
55
|
- A decision is **addressable** — it can be named, cited, amended, and reversed by reference.
|
|
58
56
|
- The **reasoning travels with the verdict** — Why is mandatory, and declined alternatives ride
|
|
@@ -62,7 +60,7 @@ The parts that made decision records worth citing in shipped source:
|
|
|
62
60
|
|
|
63
61
|
## What ceremony drops
|
|
64
62
|
|
|
65
|
-
The parts
|
|
63
|
+
The parts real sessions abandon, kept out deliberately:
|
|
66
64
|
|
|
67
65
|
- **Status lifecycles** (Proposed → Accepted → Deprecated) — a commitment is live when it lands;
|
|
68
66
|
reversal is an entry, not a state transition.
|
|
@@ -76,10 +74,11 @@ The parts that died in every real session, kept out deliberately:
|
|
|
76
74
|
|
|
77
75
|
## Epistemic rules
|
|
78
76
|
|
|
79
|
-
|
|
77
|
+
Binding on every writer of the working surface — the facilitator (ops) and the twin (everything
|
|
78
|
+
else):
|
|
80
79
|
|
|
81
80
|
1. **Distilled, never verbatim.** Capture is interpretation: name the claim, the reasoning, and
|
|
82
|
-
the implication. The ban is on transcript
|
|
81
|
+
the implication. The ban is on pasting transcript, not on quoting — integrity copies (printed
|
|
83
82
|
enumerations, cited excerpts) are self-containment, not stenography.
|
|
84
83
|
2. **Examples are examples.** Record the general claim and cite the user's phrase as an instance
|
|
85
84
|
of it. Never promote one phrasing into the frame — a thesis that reads beautifully but no
|
|
@@ -91,22 +90,23 @@ These bind every writer of the working surface — facilitator (ops), twin (ever
|
|
|
91
90
|
checks it there.
|
|
92
91
|
4. **Both sides are session knowledge.** The facilitator's own substance — causal diagnoses,
|
|
93
92
|
informed rejections of options it presented, definitions of terms the surface cites, reasoning
|
|
94
|
-
chains behind recommendations — is captured with the same discipline as the user's words.
|
|
95
|
-
|
|
93
|
+
chains behind recommendations — is captured with the same discipline as the user's words. It is
|
|
94
|
+
the knowledge class that leaks; the ops ledger exists so it lands at zero cost.
|
|
96
95
|
5. **Directional steering is not feature truth.** A harvested principle informs many decisions
|
|
97
96
|
and changes slowly; a feature fact belongs to its feature doc and changes at code speed. The
|
|
98
97
|
harvest links between the two layers, never duplicates prose across them.
|
|
99
98
|
|
|
100
99
|
## Field lessons — capture and converge
|
|
101
100
|
|
|
102
|
-
|
|
101
|
+
Each is a rule measured on live sessions.
|
|
103
102
|
|
|
104
103
|
- **Separate user voice from facilitator re-derivation before ledgering** when both arrive in one
|
|
105
|
-
turn
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
turn — say, the user states a segregation and the facilitator re-derives a whole architecture
|
|
105
|
+
from it. **Only** the user's half is ledgerable. A re-derivation that re-reads an existing
|
|
106
|
+
commitment into a new shape is a fork carrying a named amendment to the affected `D#`, **never**
|
|
107
|
+
an edit — a commitment recorded in the user's words is amended only by the user.
|
|
108
|
+
- **Stamp in UTC, always** — take the stamp from `date -u`, **never** from the runtime's injected
|
|
109
|
+
local date; in some offsets the two disagree for part of every working day, and a local-date
|
|
110
110
|
stamp runs the ledger a day ahead of capture.
|
|
111
111
|
- **Run the blindspot pass immediately after a converge burst, before the manifest gate.** When
|
|
112
112
|
several picks land in one sitting the strain migrates *between* them — collisions between
|
|
@@ -118,20 +118,17 @@ Measured on live sessions; each is the rule, distilled.
|
|
|
118
118
|
- **When a ledger entry's `Why` contains "already", verify it before the manifest.** A commitment
|
|
119
119
|
that declines to build something because it already exists rests on a fact, not a judgment, and
|
|
120
120
|
the stop gate is the last place that fact is checkable — after the folder moves it is not.
|
|
121
|
-
- **Verify a doctrine claim against disk before building an argument on it.** Truth docs
|
|
122
|
-
package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a
|
|
123
|
-
wrapper naming packages
|
|
124
|
-
the guard path, read the owning package's config, and confirm the package is
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
- **Verify a doctrine claim against disk before building an argument on it.** Truth docs drift
|
|
122
|
+
from package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a
|
|
123
|
+
suppression wrapper naming packages absent from the tree. When a session's centre is a recorded
|
|
124
|
+
prohibition, `ls` the guard path, read the owning package's config, and confirm the package is in
|
|
125
|
+
the tree.
|
|
126
|
+
- **Read the decision records before framing a session around a pillar contradiction.** A recently
|
|
127
|
+
accepted AD can already contradict the pillars; a session convened to *decide* a reversal may be
|
|
128
|
+
*ratifying* one that shipped — a materially different conversation.
|
|
128
129
|
- **Give the opening map at least one aspect organised by seam.** A map organised by system layer
|
|
129
130
|
owns none of the questions that land on the boundary between two planes or two phases, which is
|
|
130
131
|
where the real design questions sit.
|
|
131
|
-
- **Ledger only the user's half of a re-derivation turn.** When the user states a segregation and
|
|
132
|
-
the facilitator re-derives a whole architecture from it in the same entry, only the first half is
|
|
133
|
-
ledgerable; a re-derivation that re-reads an existing commitment into a new shape is a fork with a
|
|
134
|
-
named amendment, never an edit.
|
|
135
132
|
- **Check the ledger prefix against the product's vocabulary.** `D#` reads two ways in a product
|
|
136
133
|
whose state lives in a database called D1; add a disambiguation line to the ledger header and
|
|
137
134
|
write the colliding term in full inside entries.
|
|
@@ -6,27 +6,26 @@ this reference carries the routing judgment.
|
|
|
6
6
|
|
|
7
7
|
The pipeline, end to end:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
manifest (gap-round fixes included).
|
|
9
|
+
1. Converge.
|
|
10
|
+
2. Final sync and compose → manifest (`Status: proposed`).
|
|
11
|
+
3. **One** user approval (`Status: approved`).
|
|
12
|
+
4. Apply, reading both sides of every destination (`Status: applied`).
|
|
13
|
+
5. Uselessness test — gaps open a new `Round` and return to step 3.
|
|
14
|
+
6. Move to `docs/history/brainstorms/{topic}/` — the completion marker.
|
|
15
|
+
7. Offer: delete or commit — the user decides.
|
|
16
|
+
|
|
17
|
+
**Harvest fails loud, never silent.** The move happens **only** after the full apply passes the
|
|
18
|
+
uselessness test. A partial apply — twin death, session kill, anything — leaves the folder visibly
|
|
19
|
+
unfinished in `docs/research/`, and the user restarts the stop. The pipeline **never** resumes
|
|
20
|
+
silently from a half-applied state, and **never** writes a canonical doc without an approved
|
|
21
|
+
manifest, gap-round fixes included.
|
|
23
22
|
|
|
24
23
|
## The routing map
|
|
25
24
|
|
|
26
|
-
Route each piece of the surface by scope. Format every artifact
|
|
27
|
-
where it is unavailable,
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
Route each piece of the surface by scope. Format every artifact through the `documentation` skill;
|
|
26
|
+
where it is unavailable, format it yourself and record in the manifest which path ran. Read **both
|
|
27
|
+
sides** of every destination before writing — the destination's current content is a contract, not
|
|
28
|
+
a blank page.
|
|
30
29
|
|
|
31
30
|
| What | Goes to | Shape |
|
|
32
31
|
| --- | --- | --- |
|
|
@@ -36,7 +35,7 @@ contract, not a blank page.
|
|
|
36
35
|
| **Domain-model changes** | The living domain-model doc | The information-architecture contract the `boundary` skill reads at the next plan check |
|
|
37
36
|
| **Still-open (parked) forks** | The repo's open-questions home | Each with a *resolution-lands-in* pointer |
|
|
38
37
|
| **Backlog items** | The repo backlog | See the scope-guard trio below |
|
|
39
|
-
| **Fragments** | Their destinations —
|
|
38
|
+
| **Fragments** | Their destinations — drafted in destination format, so this is a move, not a translation | Merge per the destination's existing structure |
|
|
40
39
|
|
|
41
40
|
**The scope-guard trio** disambiguates everything that isn't a commitment:
|
|
42
41
|
|
|
@@ -47,13 +46,12 @@ contract, not a blank page.
|
|
|
47
46
|
|
|
48
47
|
**Directional steering is not feature truth.** A harvested principle informs many decisions and
|
|
49
48
|
changes slowly; a feature fact belongs to its feature doc and changes at code speed. The harvest
|
|
50
|
-
**links** between the steering layer and feature docs —
|
|
51
|
-
|
|
52
|
-
docs).
|
|
49
|
+
**links** between the steering layer and feature docs — **never** duplicates prose across them, and
|
|
50
|
+
**never** invents a new top-level home for principles; they land in the *existing* living docs.
|
|
53
51
|
|
|
54
|
-
Rejection rationale and reasoning chains must have explicit destinations — options-considered
|
|
55
|
-
sections, decision changelogs — or the uselessness test fails: the folder
|
|
56
|
-
|
|
52
|
+
Rejection rationale and reasoning chains **must** have explicit destinations — options-considered
|
|
53
|
+
sections, decision changelogs — or the uselessness test fails: the folder is **never** deleted into
|
|
54
|
+
a knowledge loss.
|
|
57
55
|
|
|
58
56
|
## The uselessness test
|
|
59
57
|
|
|
@@ -68,49 +66,53 @@ The deletion-safety gate: after the apply, the post-harvest living docs alone mu
|
|
|
68
66
|
- **The task:** reconstruct the design — thesis, commitments, reasoning, declined branches — from
|
|
69
67
|
the allowed paths only.
|
|
70
68
|
- **Grading:** the twin diffs the reconstruction against the ledger and thesis and names every
|
|
71
|
-
gap; the session-replay evals audit the grading itself. Anything unrecoverable is a named
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
gap; the session-replay evals audit the grading itself. Anything unrecoverable is a named harvest
|
|
70
|
+
gap, recorded in the manifest (`Result: fail`); its fixes enter a new manifest `Round`, approved
|
|
71
|
+
like the first. Iterate until the folder is redundant.
|
|
74
72
|
|
|
75
73
|
## The move, and the offer
|
|
76
74
|
|
|
77
|
-
When the detector's move gate is clean:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
When the detector's move gate is clean:
|
|
76
|
+
|
|
77
|
+
1. Delete `ops/` entirely — transcript-grade residue **never** enters git.
|
|
78
|
+
2. `git mv` the folder to `docs/history/brainstorms/{topic}/`.
|
|
79
|
+
3. Set `Status: harvested` in `state.md`.
|
|
80
|
+
|
|
81
|
+
Update no index — none keeps a row per session. The move is the completion marker: a folder under
|
|
81
82
|
`docs/research/` is by definition unfinished, which is exactly what the maintenance census reads.
|
|
82
83
|
|
|
83
84
|
Then the offer, relayed by the facilitator: **delete the moved folder, or commit it.** The user
|
|
84
|
-
decides; the design assumes deletion — nothing anywhere may depend on the folder surviving.
|
|
85
|
-
Committing is the explicit way to keep git-history forensics; an uncommitted folder deleted here
|
|
86
|
-
|
|
85
|
+
decides; the design assumes deletion — **nothing** anywhere may depend on the folder surviving.
|
|
86
|
+
Committing is the explicit way to keep git-history forensics; an uncommitted folder deleted here is
|
|
87
|
+
gone, and that loss is accepted by design.
|
|
87
88
|
|
|
88
89
|
## Field lessons — apply
|
|
89
90
|
|
|
90
|
-
|
|
91
|
+
Each is a rule measured on live harvests.
|
|
91
92
|
|
|
92
93
|
- **Run the move gate clean immediately before the move and treat that as the verdict** — the
|
|
93
94
|
gate's checks read `ops/`, which the move deletes, so a post-move re-run fails by construction.
|
|
94
|
-
Verify the post-move state by hand: `Status: harvested`, no `ops/`,
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
its
|
|
95
|
+
Verify the post-move state by hand: `Status: harvested`, no `ops/`, `check-links` clean.
|
|
96
|
+
- **Distil the process record into `state.md` before the move** — the sync log dies with `ops/`,
|
|
97
|
+
and a ten-line dispatch summary separates a record that shows its workings from one that asserts
|
|
98
|
+
its commitments from nowhere.
|
|
98
99
|
- **Uncommitted harvest artifacts are deleted, not deprecated** — deprecate-in-place protects
|
|
99
100
|
readers holding a pointer, and a never-committed file has none; a tombstone for a
|
|
100
101
|
twenty-minute-old file is ceremony.
|
|
101
|
-
- **
|
|
102
|
-
through the docs
|
|
103
|
-
commitment-level, not textual
|
|
104
|
-
|
|
105
|
-
- **A manifest
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
Say which you did, per row, in the application
|
|
102
|
+
- **At manifest time, read every existing AD's Decision and Open Questions against the new
|
|
103
|
+
commitments.** A harvest routes only through the docs its commitments name, and the test is
|
|
104
|
+
commitment-level, not textual — grep finds nothing, because the ledger never names the
|
|
105
|
+
neighbours. Report the unimpacted verdicts with their evidence too.
|
|
106
|
+
- **A manifest row names one site; the file you open holds more.** Fix every same-doctrine site
|
|
107
|
+
inside a file the manifest already opens — a self-contradicting document is worse than a wider
|
|
108
|
+
diff — but **never** wander into an unnamed file: that becomes a backlog row, because a canonical
|
|
109
|
+
doc is not rewritten outside an approved scope. Say which you did, per row, in the application
|
|
110
|
+
record.
|
|
109
111
|
- **Re-run the uselessness test when the destination *set* changes**, not only when content does —
|
|
110
112
|
a consolidation that moves referrers produces a document set no cold reader has graded. The
|
|
111
113
|
recurring find: a truth doc stating a decided-but-unbuilt mechanism in the present tense; the
|
|
112
114
|
fix is one clause naming the unbuilt prerequisite.
|
|
113
|
-
- **Retirement wording beats suppression.** doc-lint's heuristics block the honest retirement
|
|
115
|
+
- **Retirement wording beats suppression.** `doc-lint`'s heuristics block the honest retirement
|
|
114
116
|
sentence (`superseded by`, `no longer`); rephrase with no loss of meaning — "retired by
|
|
115
117
|
AD-00N", "is not the product's position", "lives in a package that is gone" — and reach for
|
|
116
118
|
`doc-lint-disable` only when the banned phrase is itself the claim.
|
|
@@ -135,14 +137,6 @@ Measured on live harvests; each is the rule, distilled.
|
|
|
135
137
|
keeping its Decision, Why and Declined table — and a separate AD only for a genuinely different
|
|
136
138
|
subject. Link with section anchors where a bare pointer loses precision, and verify anchors by
|
|
137
139
|
hand: the link checker strips them before resolving.
|
|
138
|
-
- **At manifest time, read every existing AD's Decision and Open Questions against the new
|
|
139
|
-
commitments.** A harvest routes only through the docs its commitments name, and grep finds
|
|
140
|
-
nothing because the ledger never names the others; report the unimpacted verdicts with their
|
|
141
|
-
evidence too.
|
|
142
|
-
- **A manifest row names one site; the file you open holds more.** Fix the same-doctrine sites
|
|
143
|
-
inside a file the manifest already opens, but never wander into an unnamed file — that becomes a
|
|
144
|
-
backlog row, because a canonical doc is not rewritten outside an approved scope. Say which you did,
|
|
145
|
-
per row, in the application record.
|
|
146
140
|
- **The per-file lint hook reads intermediate states.** It appends queue rows from mid-edit files;
|
|
147
141
|
run the linter over the whole edited set before declaring the apply done, and leave the stale
|
|
148
142
|
rows for the facilitator rather than draining them.
|
|
@@ -2,35 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
Load when: bootstrapping a session, writing any working-surface file, dispatching the twin, or
|
|
4
4
|
interpreting detector output. The detector (`scripts/detector.mjs`) is the mechanical half of this
|
|
5
|
-
contract
|
|
6
|
-
|
|
5
|
+
contract: every rule below carrying a rule ID is machine-checked; everything else is the twin's
|
|
6
|
+
semantic judgment.
|
|
7
7
|
|
|
8
8
|
## Folder layout
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
On a passed harvest the folder **moves** to `docs/history/brainstorms/{topic}
|
|
27
|
-
first
|
|
10
|
+
An open session is `docs/research/{topic}-brainstorm/` (kebab-case topic slug):
|
|
11
|
+
|
|
12
|
+
| Path | Holds | Writer |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| `state.md` | anchor + aspect map | twin |
|
|
15
|
+
| `thesis.md` | composed claim → argument → what changed | twin |
|
|
16
|
+
| `forks.md` | open questions with close conditions | twin |
|
|
17
|
+
| `ledger.md` | commitments | twin |
|
|
18
|
+
| `basis/` | frozen entry material | facilitator, once, at intake |
|
|
19
|
+
| `fragments/` | harvest-native fragments, drafted in destination format; created on first real content | twin |
|
|
20
|
+
| `ops/` | the untracked capture layer, deleted at stop | — |
|
|
21
|
+
| `ops/.gitignore` | `*` — `ops/` **never** enters git [BS-OPS-01/02] | facilitator |
|
|
22
|
+
| `ops/capture.md` | the facilitator's raw append ledger | facilitator |
|
|
23
|
+
| `ops/sync-log.md` | the paired twin-dispatch log | both (see below) |
|
|
24
|
+
| `ops/manifest.md` | the harvest manifest | twin, in the stop pipeline |
|
|
25
|
+
|
|
26
|
+
On a passed harvest the folder **moves** to `docs/history/brainstorms/{topic}/`, `ops/` deleted
|
|
27
|
+
first. The move is the completion marker; the user then deletes or commits the folder. A folder
|
|
28
28
|
under `docs/research/` is by definition unfinished.
|
|
29
29
|
|
|
30
|
-
**Write protocol (one writer per file):** the facilitator
|
|
31
|
-
the initial `basis/` copy plus the sync-log *dispatch* lines —
|
|
32
|
-
every other file, at gates. The user may hand-edit anything;
|
|
33
|
-
own last compose before rewriting and folds foreign edits
|
|
30
|
+
**Write protocol (one writer per file; the sync log is paired):** the facilitator bootstraps `ops/` at intake, appends to
|
|
31
|
+
`ops/capture.md`, and writes the initial `basis/` copy plus the sync-log *dispatch* lines —
|
|
32
|
+
**nothing else, ever**. The twin writes every other file, at gates. The user may hand-edit anything;
|
|
33
|
+
the twin diffs each file against its own last compose before rewriting and folds foreign edits in
|
|
34
|
+
as first-class user signal.
|
|
34
35
|
|
|
35
36
|
## state.md
|
|
36
37
|
|
|
@@ -50,8 +51,8 @@ own last compose before rewriting and folds foreign edits as first-class user si
|
|
|
50
51
|
- risks — failure modes and mitigations → none yet
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
- `Status`
|
|
54
|
-
|
|
54
|
+
- `Status` moves **only** forward: `open → stopping → harvested` — the twin sets `stopping` when the
|
|
55
|
+
stop pipeline begins and `harvested` at the move [BS-STATE-01].
|
|
55
56
|
- The aspect map is derived per idea from the basis and edited by the user. Each aspect carries
|
|
56
57
|
`→` refs to the content covering it: fork IDs (`F#`), ledger IDs (`D#`), `thesis`,
|
|
57
58
|
`fragment:{name}`, or `none yet` (an open coverage gap — informational mid-session
|
|
@@ -70,8 +71,8 @@ Current as of: 2026-07-08T14:30Z
|
|
|
70
71
|
## What changed
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
Composed prose, rewritten whole at every compose, never appended. The three sections and the
|
|
74
|
-
stamp are mandatory [BS-THESIS-01]; the stamp must equal state.md's `Last compose`
|
|
74
|
+
Composed prose, rewritten whole at every compose, **never** appended. The three sections and the
|
|
75
|
+
stamp are mandatory [BS-THESIS-01]; the stamp must equal `state.md`'s `Last compose`
|
|
75
76
|
[BS-COMPOSE-01]. At the manifest gate, `Last compose` must be later than the newest
|
|
76
77
|
`ops/capture.md` entry — a compose over unsynced capture is stale [BS-COMPOSE-02].
|
|
77
78
|
|
|
@@ -89,8 +90,8 @@ Full self-contained prose in the user's framing.
|
|
|
89
90
|
- IDs `F1, F2, …` unique, never reused [BS-FORK-01]. Status marker: `[open]` or
|
|
90
91
|
`[parked → {destination}]`. Every fork carries `Closes when:` [BS-FORK-01].
|
|
91
92
|
- `Raised by: twin (S#)` must cite a reconciled sync-log entry [BS-SYNC-02].
|
|
92
|
-
- **
|
|
93
|
-
|
|
93
|
+
- **The twin deletes a resolved fork's entry** — the resolving ledger entry's `Resolves:` field is
|
|
94
|
+
the record. `forks.md` holds only open and parked forks; a ledger `Resolves: F3`
|
|
94
95
|
coexisting with an open F3 is an inconsistency [BS-FORK-02]. Parked forks survive to the
|
|
95
96
|
manifest, which must route each one [BS-MANIFEST-01].
|
|
96
97
|
- The manifest gate requires zero `[open]` forks [BS-FORK-03].
|
|
@@ -115,10 +116,10 @@ Full self-contained prose in the user's framing.
|
|
|
115
116
|
|
|
116
117
|
## ops/capture.md
|
|
117
118
|
|
|
118
|
-
The facilitator's per-turn append
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
The facilitator's per-turn append. Lowest possible bar: raw, unpolished, everything
|
|
120
|
+
session-relevant from *both* sides (user substance and facilitator substance — diagnoses, informed
|
|
121
|
+
rejections, definitions, reasoning chains), including residue judged not worth pillar filing.
|
|
122
|
+
Format:
|
|
122
123
|
|
|
123
124
|
```markdown
|
|
124
125
|
---
|
|
@@ -127,8 +128,8 @@ worth pillar filing. Format:
|
|
|
127
128
|
<raw notes for this turn>
|
|
128
129
|
```
|
|
129
130
|
|
|
130
|
-
Turn IDs `T#`
|
|
131
|
-
|
|
131
|
+
Turn IDs `T#` ascend, each with an ISO timestamp — the timestamp compose-freshness checks against
|
|
132
|
+
[BS-COMPOSE-02]. **Never** distill here; distillation is the twin's.
|
|
132
133
|
|
|
133
134
|
## ops/sync-log.md
|
|
134
135
|
|
|
@@ -140,7 +141,7 @@ S4 → reconciled | 2026-07-08T14:29Z | 4 edits · 2 new forks · 6 open · unto
|
|
|
140
141
|
```
|
|
141
142
|
|
|
142
143
|
The **facilitator** writes the dispatch line as it dispatches; the **twin** appends the result
|
|
143
|
-
line (`reconciled` or `failed`) on return —
|
|
144
|
+
line (`reconciled` or `failed`) on return — **never** one author for both sides. Every dispatch
|
|
144
145
|
line must acquire a result line; only the newest entry may be unpaired (in flight) [BS-SYNC-01].
|
|
145
146
|
A `failed` result is surfaced to the user at the next turn break and re-run at the next gate.
|
|
146
147
|
|
|
@@ -181,8 +182,13 @@ the move to history requires a recorded passing uselessness test [BS-USELESS-01]
|
|
|
181
182
|
- `move` — adds the post-apply gates (manifest applied, uselessness pass recorded, no links into
|
|
182
183
|
scaffolding); the folder may not move while any fail.
|
|
183
184
|
|
|
184
|
-
Exit
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
| Exit | Meaning |
|
|
186
|
+
| --- | --- |
|
|
187
|
+
| `0` | clean |
|
|
188
|
+
| `1` | violations, listed with rule IDs |
|
|
189
|
+
| `2` | unusable input |
|
|
190
|
+
|
|
191
|
+
A run always prints output — per-rule lines plus a `clean`/`failing` summary, or a usage/error
|
|
192
|
+
message. **Exit 0 with empty output means the detector never executed** — a failure, **never** a
|
|
193
|
+
pass. Rules degrade gracefully: with no git context, `BS-OPS-02` reports `skipped` and never blocks.
|
|
194
|
+
Rule IDs are stable — the twin, the evals, and the maintenance census key on them.
|