@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
|
@@ -24,7 +24,7 @@ Don't write an AD for:
|
|
|
24
24
|
|
|
25
25
|
`Proposed` → `Accepted` → `Deprecated`
|
|
26
26
|
|
|
27
|
-
Frontmatter `status:` is the single lifecycle source of truth. An AD stays `Accepted` for as long as its subject is live — revisions rewrite the body and never change the status, and there is **no `Superseded` state**: supersession is an edit plus a changelog entry, not a new document. Set `Deprecated` only when the subject itself is retired (the component is gone, the contract no longer exists); state where the replacement lives, if any.
|
|
27
|
+
Frontmatter `status:` is the single lifecycle source of truth; **never** also write "Status: Accepted" in the body. An AD stays `Accepted` for as long as its subject is live — revisions rewrite the body and never change the status, and there is **no `Superseded` state**: supersession is an edit plus a changelog entry, not a new document. Set `Deprecated` only when the subject itself is retired (the component is gone, the contract no longer exists); state where the replacement lives, if any.
|
|
28
28
|
|
|
29
29
|
### Naming
|
|
30
30
|
|
|
@@ -38,20 +38,20 @@ Three sections are required: **Decision**, **Context**, **Consequences** — plu
|
|
|
38
38
|
|
|
39
39
|
```markdown
|
|
40
40
|
---
|
|
41
|
+
type: architecture-decision
|
|
41
42
|
title: "AD-NNN: Short title in sentence case"
|
|
43
|
+
description: "{at most 300 characters: what this decision settles and where its boundary sits}"
|
|
42
44
|
status: Accepted # Proposed | Accepted | Deprecated
|
|
43
|
-
created: YYYY-MM-DD
|
|
44
45
|
last-updated: YYYY-MM-DD # bump on every revision
|
|
45
46
|
decision-owner: Name
|
|
46
47
|
reviewers: [] # optional
|
|
47
|
-
tags: [ad]
|
|
48
48
|
---
|
|
49
49
|
|
|
50
50
|
# AD-NNN: Short Title
|
|
51
51
|
|
|
52
52
|
## Decision
|
|
53
53
|
|
|
54
|
-
[One paragraph, active voice
|
|
54
|
+
[One paragraph, third person, active voice: "The platform stores…". Lead with the answer — the current answer, whatever the journey was.]
|
|
55
55
|
|
|
56
56
|
## Context
|
|
57
57
|
|
|
@@ -65,11 +65,11 @@ tags: [ad]
|
|
|
65
65
|
|
|
66
66
|
**Negative:**
|
|
67
67
|
|
|
68
|
-
- [What becomes harder, what
|
|
68
|
+
- [What becomes harder, what is accepted reluctantly]
|
|
69
69
|
|
|
70
70
|
**Risks:**
|
|
71
71
|
|
|
72
|
-
- [Second-order effects
|
|
72
|
+
- [Second-order effects already visible, with mitigations if known]
|
|
73
73
|
|
|
74
74
|
<!-- Optional sections below. Include only when warranted by the decision's weight. -->
|
|
75
75
|
|
|
@@ -110,12 +110,8 @@ tags: [ad]
|
|
|
110
110
|
|
|
111
111
|
### Rules
|
|
112
112
|
|
|
113
|
-
- **One subject per AD; all its revisions stay inside it.** Two genuinely different subjects means two ADs — a revision of an existing subject never does.
|
|
114
|
-
- **The body is always the current truth.** Rewrite affected sections on every revision; never leave a superseded choice narrated in the body — the Decision Changelog carries the journey, with each entry naming the old choice and the trigger.
|
|
115
|
-
- Decision-first. The first paragraph after the heading is the answer; readers should not need to scroll.
|
|
116
113
|
- **Consequences lists positives, negatives, AND risks.** Pros-only Consequences is the genre's classic failure — one AD's honest resulting context is the input context for the next.
|
|
117
114
|
- **Options Considered keeps every genuinely rejected alternative with the real reason.** Informed rejections are the most expensive knowledge to lose; a rejection made with strong prior art in view says so explicitly.
|
|
118
115
|
- **Keep it short — one to two pages.** Long decision docs don't get updated. How-it-works detail belongs in the owning feature doc; execution in a plan. Link, don't embed.
|
|
119
|
-
- No section numbering (`§5.1.1`)
|
|
120
|
-
-
|
|
121
|
-
- The Decision Changelog is append-only, newest first. Typo and formatting fixes don't get entries.
|
|
116
|
+
- **No section numbering** (`§5.1.1`); markdown headings only, so inserting a section renumbers nothing.
|
|
117
|
+
- **The Decision Changelog is append-only, newest first**, one entry per revision naming the old choice and the trigger. Typo and formatting fixes get no entry.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Scaffold: docs/history/backlog.md
|
|
2
2
|
|
|
3
|
-
Baseline scaffold
|
|
3
|
+
Queue. Baseline scaffold, created if missing by the `maintenance` agent's baseline. Target file: `docs/history/backlog.md`. A row is appended when work is discovered and deleted when the work lands; it is never marked done in place, because the plan or changelog entry that did the work is the record.
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
# Backlog
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Open work items, technical debt, and planned improvements — a queue. Append new items under the appropriate priority; delete an item's row when its work lands.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# Behavioral
|
|
1
|
+
# Behavioral checklist (docs/tests/{feature}.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: **how to verify one feature's promised behavior by driving the real product** — the browser, the CLI binary, HTTP against the running service. One file per feature, named for the feature doc that owns the code (`docs/features/auth.md` → `docs/tests/auth.md`).
|
|
4
4
|
|
|
5
|
-
**Frontmatter is
|
|
5
|
+
**Frontmatter is three keys, and `verifies:` is the load-bearing one:**
|
|
6
6
|
|
|
7
7
|
```yaml
|
|
8
8
|
---
|
|
@@ -12,13 +12,7 @@ verifies: [docs/features/auth.md] # required — the doc(s) whose promi
|
|
|
12
12
|
---
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
A checklist owns no code, so it carries no `owns:`. What it carries instead is the edge back to
|
|
16
|
-
its subject. **The filename convention is not the edge** — a same-named file is a coincidence a
|
|
17
|
-
resolver cannot trust, it breaks the moment a checklist spans two docs or a feature is renamed, and
|
|
18
|
-
it leaves nothing to implicate this file when its subject changes. Without `verifies:` a checklist
|
|
19
|
-
is unreachable: no change reaches it, so it goes stale and the staleness is undetectable. Several
|
|
20
|
-
values are correct where one checklist proves promises two docs decide; the inverse — which
|
|
21
|
-
checklists cover a feature — is generated, never listed in the feature doc.
|
|
15
|
+
A checklist owns no code, so it carries no `owns:`. What it carries instead is the edge back to its subject. **The filename convention is not the edge** — a same-named file is a coincidence a resolver cannot trust, it breaks the moment a checklist spans two docs or a feature is renamed, and it leaves nothing to implicate this file when its subject changes. Without `verifies:` a checklist is unreachable: no change reaches it, so it goes stale and the staleness is undetectable. Several values are correct where one checklist proves promises two docs decide; the inverse — which checklists cover a feature — is generated, never listed in the feature doc.
|
|
22
16
|
|
|
23
17
|
**This is the driving script, and it is the source the suite is drawn from.** At the verification gate it does double duty: rung 1 drives the real surface *against these steps*, and rung 2 pins the durable subset *of these assertions* as suite tests. Writing it is therefore not a report written afterwards — it is authored or updated **before** the driving, so the gate has something to execute and the tests have something to be derived from. Which assertions earn a permanent test is decided by the `testing` skill (gate mode) § What earns a suite test, and each section records the answer on its `Pinned:` line.
|
|
24
18
|
|
|
@@ -43,18 +37,18 @@ Required: **Conventions**, at least one numbered behavior section, **Failure Rep
|
|
|
43
37
|
# {Feature} Test Plan
|
|
44
38
|
|
|
45
39
|
{What this covers, and what neighbouring checklists cover instead, with links. Close with:}
|
|
40
|
+
|
|
46
41
|
Each step is an action; each **Assert** is the observable it must produce.
|
|
47
42
|
|
|
48
43
|
## Test Inputs
|
|
49
44
|
|
|
50
|
-
- **URL / entry point
|
|
51
|
-
- **Identity
|
|
52
|
-
- **State
|
|
45
|
+
- **URL / entry point:** where the run starts
|
|
46
|
+
- **Identity:** the account or role required, and how it is obtained
|
|
47
|
+
- **State:** the fixture or seeded state the run assumes, stated as counts a reader can check
|
|
53
48
|
|
|
54
49
|
## Conventions
|
|
55
50
|
|
|
56
|
-
- {The invariants a reader needs to interpret the assertions — the vocabulary, the scoping rule,
|
|
57
|
-
the guarantee that makes a surprising assertion correct. Not a restatement of the LLD.}
|
|
51
|
+
- {The invariants a reader needs to interpret the assertions — the vocabulary, the scoping rule, the guarantee that makes a surprising assertion correct. Not a restatement of the LLD.}
|
|
58
52
|
|
|
59
53
|
---
|
|
60
54
|
|
|
@@ -80,14 +74,13 @@ Each step is an action; each **Assert** is the observable it must produce.
|
|
|
80
74
|
|
|
81
75
|
State-based signals, never fixed sleeps:
|
|
82
76
|
|
|
83
|
-
- **{Milestone}
|
|
77
|
+
- **{Milestone}:** {the signal that proves it, as a selector or an observable}
|
|
84
78
|
|
|
85
79
|
Timeouts: {operation} **{n}s**.
|
|
86
80
|
|
|
87
81
|
## Driving notes
|
|
88
82
|
|
|
89
|
-
- {Hard-won facts about driving this surface that cost someone an hour — an environment trap, a
|
|
90
|
-
harness quirk, a signal that lies. Not general advice.}
|
|
83
|
+
- {Hard-won facts about driving this surface that cost someone an hour — an environment trap, a harness quirk, a signal that lies. Not general advice.}
|
|
91
84
|
|
|
92
85
|
## Failure Report
|
|
93
86
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Bookkeeping ledger (docs/operations/bookkeeping.md)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Queue (`templates/Readme.md` § The three natures): a **work queue**, not an archive. Rows are appended mechanically by the awareness hook (`auto:`) and deliberately by working sessions (`note:`), drained by the `bookkeeper` agent, and walled at Stop, at commit, and in CI. What survives in git — `waived:` and `needs-session:` rows — is exactly what a PR reviewer should see.
|
|
4
4
|
|
|
5
5
|
**Each wall reads the queue at its own width, and re-verifies conditions at gate time.** Stop takes the ending session's own rows, because accountability for an arc is per session. The commit gate takes only the rows **implicating that commit's staged files** — a row names the file its finding is about, and holding a commit behind rows raised by somebody else's edits is a wait nothing the committer may do can clear. CI takes every row on the branch, where there is no staged set to scope by. All three re-test each row against the repo before blocking, so a row whose condition has died walls nothing. Fail-closed cases stay repo-wide at the commit gate: a row whose grammar names no path, a `needs-session:` row, an expired waiver, and a commit staging nothing at all.
|
|
6
6
|
|
|
@@ -21,4 +21,4 @@ The shared work queue keeping documentation and code in sync — a queue, never
|
|
|
21
21
|
|
|
22
22
|
**A waiver covers a finding only when it names the finding's kind and its subject in backticks** — the matcher (`waiverCovers`) tests the backticked subject exactly, so a waiver written without them silences nothing and the wall stands. A `waived:` row's `expires=` date is enforced: CI honors the waiver until the date, then fails. `dead-glob` waivers double as the dead-glob allowlist; `ownership-overlap` waivers cover the CI ownership check the same way.
|
|
23
23
|
|
|
24
|
-
Finding kinds for `auto:`: `dead-glob` · `doc-implicated` · `doc-lint` · `header-missing` · `package-rejected` · `frozen-record-edited` · `source-lint`. The CI ownership check additionally accepts `waived:` rows of kind `ownership-overlap
|
|
24
|
+
Finding kinds for `auto:`: `dead-glob` · `doc-implicated` · `doc-lint` · `header-missing` · `package-rejected` · `frozen-record-edited` · `source-lint`. The CI ownership check additionally accepts `waived:` rows of kind `ownership-overlap` and `dangling-edge` (a `verifies:` target that does not exist, the subject being that target's path).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Changelog
|
|
1
|
+
# Changelog entry
|
|
2
2
|
|
|
3
3
|
Record. Use for: the per-unit-of-work journal of what changed and how it was refined — one file per entry under `docs/history/changelog/YYYY-MM-DD-{three-words}.md`, written by whoever does the work and frozen inside the commit it describes. The three words name the work, not the commit. Trigger and lifecycle policy: the `changelog` rule; distillation is the `retro` agent.
|
|
4
4
|
|
|
@@ -50,7 +50,7 @@ A commit is the smallest unit an entry may describe. Above that the mapping is j
|
|
|
50
50
|
|
|
51
51
|
## The index
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
The heading line is the entry's one-line summary, and the only one: `docs/history/CHANGELOG.md` is the folder's guide and takes no row per entry, so `grep -m1 -H '^# ' docs/history/changelog/*.md` is the index.
|
|
54
54
|
|
|
55
55
|
## Exemptions (closed list)
|
|
56
56
|
|
|
@@ -1,41 +1,33 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog guide (docs/history/CHANGELOG.md)
|
|
2
2
|
|
|
3
|
-
Baseline scaffold
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
# Changelog
|
|
7
|
-
|
|
8
|
-
All notable changes to {Project Name} will be documented in this file.
|
|
9
|
-
|
|
10
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
3
|
+
Truth document. Baseline scaffold, created if missing by the `maintenance` agent's baseline. It explains the changelog folder beside it and is never appended to: an entry is found by listing `docs/history/changelog/`, and each entry's first line is its one-line summary, so a row per entry here would be a second copy of that line that someone has to keep in step. The guide is rewritten only when the changelog's rules change.
|
|
11
4
|
|
|
5
|
+
```markdown
|
|
12
6
|
---
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{entries added here as work proceeds; promoting them under a release heading is the one sanctioned edit to this index — the dated entry files themselves stay frozen}
|
|
17
|
-
|
|
7
|
+
type: changelog-guide
|
|
8
|
+
description: "How {Project Name}'s changelog works: one entry per unit of work under changelog/, what each entry records, when one is owed, and how to read the folder."
|
|
18
9
|
---
|
|
19
10
|
|
|
20
|
-
|
|
11
|
+
# Changelog
|
|
21
12
|
|
|
22
|
-
|
|
23
|
-
- [Architecture](../architecture/)
|
|
13
|
+
**Goal:** what changed in {Project Name}, and how it was refined, one entry per unit of work.
|
|
24
14
|
|
|
25
|
-
|
|
15
|
+
## Entries
|
|
16
|
+
|
|
17
|
+
- **Location:** `changelog/YYYY-MM-DD-{three-words}.md`, one file per unit of work; the three words name the work, not the commit.
|
|
18
|
+
- **Summary line:** each entry opens `# {date} · {surface} — {one-line outcome}`, the line a reader scans.
|
|
19
|
+
- **Content:** the ask in the user's words, what was rejected, which skills held, what changed and what running it taught (the `documentation` skill's `templates/changelog-entry.md`).
|
|
20
|
+
- **Lifecycle:** a draft until its commit; frozen from then on. A correction is a new entry that links back.
|
|
26
21
|
|
|
27
|
-
##
|
|
22
|
+
## Owed entries
|
|
28
23
|
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
- **Plan completion:** a draft entry, written when the plan reaches `Status: Complete`.
|
|
25
|
+
- **Commit:** every non-exempt commit carries its entry inside it (the closed exemption list is the `documentation` skill's `templates/changelog-entry.md`).
|
|
31
26
|
|
|
32
|
-
|
|
27
|
+
## Reading the changelog
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- **Removed** for now removed features
|
|
39
|
-
- **Fixed** for bug fixes
|
|
40
|
-
- **Security** for security improvements
|
|
29
|
+
- **Newest first:** `ls -r changelog/`
|
|
30
|
+
- **One line per entry:** `grep -m1 -H '^# ' changelog/*.md`
|
|
31
|
+
- **One surface:** `grep -l '· {surface} —' changelog/*.md`
|
|
32
|
+
- **Distilled lessons:** the `retro` agent turns accumulated entries into a punch list on demand.
|
|
41
33
|
```
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# docs/README.md (
|
|
1
|
+
# docs/README.md (documentation root)
|
|
2
2
|
|
|
3
|
-
Truth document. Use for: the entry point for all documentation in a repo
|
|
3
|
+
Truth document. Use for: the entry point for all documentation in a repo, created by the `maintenance` agent's baseline.
|
|
4
4
|
|
|
5
|
-
**This file describes directories, never files.** Each section names one folder under `docs/` and says what the folder holds, who reads it and how its files are named
|
|
5
|
+
**This file describes directories, never files.** Each section names one folder under `docs/` and says what the folder holds, who reads it and how its files are named. No per-file rows, no file tree, no `├──` block: the tree is `structure.md`'s, as the authority on placement, and `ls` is the roster. A row per file forces an index edit on every file added, renamed or retired, so the index's history records roster churn instead of what the index said. Naming a file without a link is the same row: no filename, no record ID (`AD-010`), no per-record table. The only files an index may name are the mandated scaffolds and the root instruction files (`SKILL.md` § Indexes and descriptions). Each file's own `description:` frontmatter is its account, read with `grep -m1 '^description:' <folder>/*.md`. `doc-lint` blocks a folder index that links an individual document (`index-lists-files`), names one (`index-names-records`) or draws a tree (`index-file-tree`). The repo-root `README.md` routes the team and agents in by intent and this file describes the folders of the docs tree; each links the other once and neither restates the other.
|
|
6
6
|
|
|
7
7
|
**Link only what exists.** Every row below is a placeholder — drop any whose target the repo does not have. Most `history/` and `architecture/` folders are created on first use, so linking them unconditionally ships a docs index with dead links on day one. An index is a browse page: a link that resolves to nothing is worse than an absent row.
|
|
8
8
|
|
|
@@ -38,7 +38,7 @@ The design layer — [architecture/](architecture/): {what the folder holds —
|
|
|
38
38
|
|
|
39
39
|
## History
|
|
40
40
|
|
|
41
|
-
[history/](history/) — the records: `plans/` (one dated plan per unit of work, frozen at completion), `changelog/` (one entry per unit of work
|
|
41
|
+
[history/](history/) — the records, and two queues: `plans/` (one dated plan per unit of work, frozen at completion), `changelog/` (one entry per unit of work; [CHANGELOG.md](history/CHANGELOG.md) explains how to read it), `migrations/` (one-shot runbooks), `brainstorms/`, `research/`, [backlog.md](history/backlog.md) (open work; a finished item is deleted) and `journal.md` (mid-execution facts awaiting their owning doc).
|
|
42
42
|
|
|
43
43
|
## Research and memory
|
|
44
44
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Doctrine
|
|
1
|
+
# Doctrine documentation (docs/architecture/common/{concern}.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for **one concern the platform handles everywhere**: authentication, authorization, storage, the API protocol, credentials, telemetry. One file per concern, named for the concern. A doctrine document speaks for no code: no source header names it, and it carries no `owns:`. The surfaces bound by it are the documents that design or touch the objects it governs, computed through those objects, and each names it in its Scope.
|
|
4
4
|
|
|
@@ -24,7 +24,7 @@ Nothing else: the neighbouring documents live in **For the agent**, the one clos
|
|
|
24
24
|
type: doctrine # required tooling key
|
|
25
25
|
description: "{at most 300 characters: what this document settles and where its boundary sits}" # required — the per-file account a folder is browsed by (references/frontmatter.md)
|
|
26
26
|
status: active # required — active | draft
|
|
27
|
-
objects: [principal, credential, device grant] #
|
|
27
|
+
objects: [principal, credential, device grant] # required — the concepts this doctrine governs, by their graph names
|
|
28
28
|
---
|
|
29
29
|
```
|
|
30
30
|
|
|
@@ -79,4 +79,4 @@ Code cannot reveal what it does not yet do, so decided-but-unbuilt intent is one
|
|
|
79
79
|
| A tour of the code that implements the concern | The code graph |
|
|
80
80
|
| The catalog of routes, error codes or variables | An API reference or environment registry |
|
|
81
81
|
| The one feature that happens to use the concern most | That feature's own document, which names this doctrine in its Scope |
|
|
82
|
-
| The story of how the concern got this way |
|
|
82
|
+
| The story of how the concern got this way | The subject's architecture decision (`decisions/`), whose Decision Changelog tail carries how it moved, and the changelog for the when |
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
# Domain
|
|
1
|
+
# Domain model (docs/architecture/domain-model.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: the entities the system is about — what they are, how they relate, and who owns their state. The vocabulary here must match the glossary and the code; when they disagree, fix the disagreement, don't document around it.
|
|
4
4
|
|
|
5
5
|
Required: **Entities**, **Relationships**. Optional: Lifecycle states, Invariants.
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: domain-model
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
---
|
|
12
|
+
|
|
8
13
|
# Domain Model
|
|
9
14
|
|
|
10
15
|
## Entities
|
|
@@ -15,14 +20,14 @@ Required: **Entities**, **Relationships**. Optional: Lifecycle states, Invariant
|
|
|
15
20
|
|
|
16
21
|
## Relationships
|
|
17
22
|
|
|
18
|
-
- {EntityA} 1—N {EntityB}
|
|
19
|
-
- {EntityB} N—N {EntityC} via {join}
|
|
23
|
+
- **{EntityA} 1—N {EntityB}:** {the meaning of the link}
|
|
24
|
+
- **{EntityB} N—N {EntityC} via {join}:** {meaning}
|
|
20
25
|
|
|
21
26
|
## Lifecycle states
|
|
22
27
|
|
|
23
28
|
{Only for entities with real state machines.}
|
|
24
29
|
|
|
25
|
-
- **{Entity}
|
|
30
|
+
- **{Entity}:** draft → active → archived, moved by {what moves it between states}
|
|
26
31
|
|
|
27
32
|
## Invariants
|
|
28
33
|
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
# Environment
|
|
1
|
+
# Environment registry (docs/operations/environment.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: the config surface — every variable the code reads, in one table. `.env.example` mirrors this doc's variable list.
|
|
4
4
|
|
|
5
5
|
**Placeholders only, never real values.** A real-looking password, account ID, or personal profile name in a doc is a leak, and one developer's local setup written as the canonical value is a trap for everyone else. Values in this doc are `{placeholder}` descriptions.
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: environment-registry
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
---
|
|
12
|
+
|
|
8
13
|
# Environment Registry
|
|
9
14
|
|
|
10
15
|
Every variable the code reads. `.env.example` mirrors this list.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Feature
|
|
1
|
+
# Feature documentation (docs/features/{feature}.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for every feature in `docs/features/`: something a person points at, such as an address, a command family or a named control. One file per feature, cut by the objects it designs, never by the code's routers, tables, plans or packages. The file persists from design (`status: draft`) to live reference (`status: active`).
|
|
4
4
|
|
|
@@ -8,9 +8,9 @@ Truth document. Use for every feature in `docs/features/`: something a person po
|
|
|
8
8
|
- **Each bullet is a bold label, then one or two third-person sentences** saying what happens: "**Organization user:** user lands in their existing organization", never "you land…".
|
|
9
9
|
- **Flows carry the journey; Decisions carry the reasons; Promises run deepest.**
|
|
10
10
|
|
|
11
|
-
The frontmatter names the objects the feature designs; which files it speaks for is
|
|
11
|
+
The frontmatter names the objects the feature designs; which files it speaks for is never listed in the body. The ownership scan reads its transitional `owns:` region glob, and each owned source file's header names this document, ready for when the scan switches (`references/frontmatter.md`). Every computable fact (columns, vocabularies, foreign keys, writers, routes, guards, files) is the code graph's (`docs/architecture/systems/knowledge-layer.md`), and a hand-typed copy is the defect this genre removes. Code is named only where a person types or sees it (a page, a command, a flag, an environment variable) or at a cross-cutting seam the graph would not lead a reader to.
|
|
12
12
|
|
|
13
|
-
**A feature document runs deepest toward its end.** Scope and Flows are the model and the journey. **Promises** goes as deep as the behaviour does: every state the surface can be in, every edge case, what a refusal tells the person, and the exact wording wherever the wording itself is promised. That depth is earned because a person or a test checks it and the code cannot state it as intent. It
|
|
13
|
+
**A feature document runs deepest toward its end.** Scope and Flows are the model and the journey. **Promises** goes as deep as the behaviour does: every state the surface can be in, every edge case, what a refusal tells the person, and the exact wording wherever the wording itself is promised. That depth is earned because a person or a test checks it and the code cannot state it as intent. It stops before mechanism. A promise reads "a removed membership shows a panel, not a redirect", never which route answers it.
|
|
14
14
|
|
|
15
15
|
**Sections:**
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ The frontmatter names the objects the feature designs; which files it speaks for
|
|
|
19
19
|
| Frontmatter | required |
|
|
20
20
|
| Goal line | required |
|
|
21
21
|
| `Scope` | required |
|
|
22
|
-
| `Flows` | required |
|
|
22
|
+
| `Flows` | required once `status: active`; omitted at `draft`, before there is a shipped surface to describe |
|
|
23
23
|
| `Decisions` | once any choice was made that the code cannot explain |
|
|
24
24
|
| `Promises` | required |
|
|
25
25
|
| `Gaps` | only when there is one |
|
|
@@ -64,7 +64,7 @@ owns: ["packages/studio/src/server/devices/**"] # transitional — one region
|
|
|
64
64
|
|
|
65
65
|
### {Theme as a noun phrase — e.g. "Sign-in failures", "Gate outcomes", "Terminal grant states"}
|
|
66
66
|
|
|
67
|
-
{A table where the cases are parallel states — | Situation |
|
|
67
|
+
{A table where the cases are parallel states — | Situation | Outcome | — carrying the exact wording where the wording is promised. Bullets otherwise:}
|
|
68
68
|
|
|
69
69
|
- **{Noun-phrase label}:** {the guarantee or refusal, checkable by a person or a test.}
|
|
70
70
|
|
|
@@ -79,7 +79,7 @@ owns: ["packages/studio/src/server/devices/**"] # transitional — one region
|
|
|
79
79
|
- **Commands:** {`nustack …`}
|
|
80
80
|
- **Code roots:** {`packages/…/src/…/`}, directories where the graph should start
|
|
81
81
|
- **Seams:** {`name`}, only where the roots would not lead to them
|
|
82
|
-
- **Checklist:** `tests/{feature}.md
|
|
82
|
+
- **Checklist:** `docs/tests/{feature}.md`, once the verification gate has written it
|
|
83
83
|
- **See also:** {neighbour}: {why}
|
|
84
84
|
|
|
85
85
|
No tables, routes or symbol rosters — those are the graph's.
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: the project's vocabulary — one name per concept, one line per name. Alphabetical. When the code uses a different name than the docs, record it in **In code** so readers can bridge; one concept never gets two doc names.
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```markdown
|
|
6
|
+
---
|
|
7
|
+
type: glossary
|
|
8
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
9
|
+
---
|
|
10
|
+
|
|
6
11
|
# Glossary
|
|
7
12
|
|
|
8
13
|
| Term | Meaning | In code |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Record. Use for: the account an **unattended or multi-session build** leaves the person who owns it — written by the orchestrating session as its last act, before the owner's first decision, read in one sitting. It is a **decision queue, an undo manual and a resume file**, in that order: is it done · what must I decide today · what escaped the repository and how do I undo it · can I see it working · what was decided for me and how do I overturn it · what is red and whose it is. Everything below the divider is for the next session, not the owner. It is not a pull-request description (which argues for a diff), not a changelog entry (which carries refinement context) and not a plan (which is frozen). It is mutable while `status: open` — a successor that re-proves a state line corrects it in place and appends one Timeline row — and **freezes when the owner has acted on § 1 (`status: accepted`)**; a correction after that is a new dated hand-over linking back. Raw artefacts (plans, hand-offs, notes) live in a same-named folder beside it.
|
|
4
4
|
|
|
5
|
-
Required: **Verdict**, **
|
|
5
|
+
Required: **Verdict**, **Owner decisions due**, **Live-world ledger** (even when empty), **Ten-minute walkthrough**, **Rulings on the owner's behalf**, **Red board**, **What was built**, **Proof**, **State**, **Open loops**, **Artefacts & mandate**. Optional: Untouched scope, Discoveries, Deferrable debt, Cost, Timeline.
|
|
6
6
|
|
|
7
7
|
**Reading order is act → verify → understand.** Owner half, ~20 minutes: Verdict (1) · § 1 (2) · § 2 (2) · § 3 (10, at the product) · § 4 (3) · § 5–6 (2). Successor half, read when the job arrives: § 8–14 (~10).
|
|
8
8
|
|
|
@@ -31,17 +31,17 @@ prs:
|
|
|
31
31
|
| Built | {N} units · {N} plans · ledger rows {N}, discharged {N}, blocked {N} |
|
|
32
32
|
| Proof | {N} tests pass / {N} fail — on `{sha}`, verified {HH:MM} |
|
|
33
33
|
| Decide today | **{N}** — § 1 |
|
|
34
|
-
| Touched the live world | **{N}** acts, **{N}**
|
|
34
|
+
| Touched the live world | **{N}** acts, **{N}** irreversible — § 2 |
|
|
35
35
|
| Red | {N} mine · {N} pre-existing · {N} environment — § 5 |
|
|
36
36
|
| See it work | {N} min — § 3 |
|
|
37
37
|
| Taken alone | {N} decisions, {N} stops filed of {N} — § 4 |
|
|
38
38
|
|
|
39
39
|
**Start here:** `{the one command that brings the reader's machine to the state everything below describes}`
|
|
40
|
-
**
|
|
40
|
+
**Single most urgent act:** {act} — by {YYYY-MM-DD}, or {consequence}.
|
|
41
41
|
|
|
42
|
-
## 1.
|
|
42
|
+
## 1. Owner decisions due
|
|
43
43
|
|
|
44
|
-
| # | Decision or act | Why today |
|
|
44
|
+
| # | Decision or act | Why today | Default on silence | Decide by | Do it (exact) | Evidence |
|
|
45
45
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
46
46
|
| 1 | {one line, no mechanism} | {what a week costs} | {the outcome silence produces} | {date} | `{command}` / {PR link} / {UI path} | `{path:line · sha · PR}` |
|
|
47
47
|
|
|
@@ -55,19 +55,19 @@ Everything that left the repository, hardest to undo first. Verified {HH:MM}.
|
|
|
55
55
|
|
|
56
56
|
**Did not happen, and the proof:** {claim} — `{command}`.
|
|
57
57
|
|
|
58
|
-
## 3.
|
|
58
|
+
## 3. Ten-minute walkthrough
|
|
59
59
|
|
|
60
|
-
**
|
|
60
|
+
**Prerequisite:** `{command}` · **Sign in as:** {who} · **Total:** {N} min
|
|
61
61
|
|
|
62
|
-
| # | Do (URL → click) |
|
|
62
|
+
| # | Do (URL → click) | Expected result | It proves | If not |
|
|
63
63
|
| --- | --- | --- | --- | --- |
|
|
64
64
|
| 1 | {url} → {action} | {an observable a person can be wrong about} | {unit from § 6} | {§ 5 row, or "file it — new"} |
|
|
65
65
|
|
|
66
|
-
## 4.
|
|
66
|
+
## 4. Rulings on the owner's behalf
|
|
67
67
|
|
|
68
68
|
Each was taken because waiting would have stopped the run. Sorted by cost to reverse.
|
|
69
69
|
|
|
70
|
-
| # |
|
|
70
|
+
| # | Ruling | Instead of | Why | Authority | Landed at | Overturn — exact | Default on silence | Hardens when |
|
|
71
71
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
72
72
|
| D-1 | {the ruling} | {the alternative, fairly} | {the constraint} | {owner said so HH:MM "…" / auto-ruled as recommended / taken alone — by {agent · model}} | `{file:line}` | `{edit or command}` | {default} | {event} |
|
|
73
73
|
|
|
@@ -85,7 +85,7 @@ Each was taken because waiting would have stopped the run. Sorted by cost to rev
|
|
|
85
85
|
| --- | --- | --- | --- |
|
|
86
86
|
| {name} | {one clause, behaviour before mechanism} | {branch · PR · release} | {suite + counts, or "driven only", or empty} |
|
|
87
87
|
|
|
88
|
-
## 7.
|
|
88
|
+
## 7. Untouched scope
|
|
89
89
|
|
|
90
90
|
| Thing | State | Why untouched |
|
|
91
91
|
| --- | --- | --- |
|
|
@@ -126,13 +126,13 @@ Present tense; every row true of `as_of_commit`, and every row re-provable by it
|
|
|
126
126
|
| --- | --- | --- | --- | --- | --- |
|
|
127
127
|
| L-1 | {present tense} | {session / owner / external} | `{command}` or {the question, with the default in force} | {id / —} | `{path:line}` |
|
|
128
128
|
|
|
129
|
-
## 11. Discoveries
|
|
129
|
+
## 11. Discoveries
|
|
130
130
|
|
|
131
131
|
| # | Trap | The truth | Cost paid | Guard |
|
|
132
132
|
| --- | --- | --- | --- | --- |
|
|
133
133
|
| X-1 | {what it looks like from outside} | {present-tense fact} | {hours / runs} | `{command}` or `none — {what would hold it}` |
|
|
134
134
|
|
|
135
|
-
## 12.
|
|
135
|
+
## 12. Deferrable debt
|
|
136
136
|
|
|
137
137
|
| # | What | Why not now | Re-open when | Parked at |
|
|
138
138
|
| --- | --- | --- | --- | --- |
|
|
@@ -160,15 +160,15 @@ Present tense; every row true of `as_of_commit`, and every row re-provable by it
|
|
|
160
160
|
## Field rules
|
|
161
161
|
|
|
162
162
|
- **Verdict (≤14 lines).** One token from the closed set — `DONE` · `DONE, NEEDS YOUR CALLS` · `PARTIAL` · `STOPPED AT BUDGET` · `FAILED` — first in the body; a paragraph before it is a format violation. The scoreboard is always the same seven rows in that order, and a zero is written `0` — `Touched the live world: 0` is one of the most valuable lines the file can carry. `Start here` is exactly one command.
|
|
163
|
-
- **§ 1
|
|
163
|
+
- **§ 1 Owner decisions due (≤7 rows).** Owner-only acts, sorted by cost of deferral descending. `Do it (exact)` is a command, a link or a literal UI path — `git revert -m 1 {sha}`, never "revert the merge". `Default on silence` is mandatory and honest. **A decision has an alternative and belongs in § 4; an act outside the repository with no alternative is a chore and belongs here.**
|
|
164
164
|
- **§ 2 Live-world ledger.** Required even when empty — `none — nothing left the repository`, with the command that proves it. Sorted hardest-to-undo first, never chronologically. `Reversible` takes three values: `no` states what now exists in the world, `with loss` names what is lost, `yes` carries the command. An act reversible only forward (redeploy, reseed, a superseding publish) is `no`, and the forward path goes in `Undo`. A backup states its expiry; copying a volatile backup somewhere durable is row 1 of § 1.
|
|
165
|
-
- **§ 3
|
|
166
|
-
- **§ 4
|
|
165
|
+
- **§ 3 Ten-minute walkthrough (≤6 steps, ≤10 min).** Every `Expected result` is an observable a person can be wrong about — a number, a named control, a status code — never "the page loads". It is the only check the owner performs with his own eyes rather than on the build's word.
|
|
166
|
+
- **§ 4 Rulings on the owner's behalf (≤10 rows).** Sorted by cost to reverse. `Authority` takes exactly three values — the owner said so (with the words and the time) · auto-ruled as recommended · taken alone — recorded per decision, never per run: it is the distinction an unattended run exists to preserve. `Overturn` is an edit or a command. `Hardens when` names the event after which reversal stops being cheap. A ruling with no reversal path is a constraint, not a decision — it moves to § 12.
|
|
167
167
|
- **§ 5–7.** One home per fact: a red appears in § 5 even when a decision caused it, and the decision cites the row. `Mine?` is proved by the command or stash in `Proof`; `mine` is the default when no proof is offered. § 6 leads with behaviour, not plan slugs. § 7 exists so an owner scanning the repository does not mistake somebody else's branch for the run's debris.
|
|
168
168
|
- **§ 8 Proof.** **An unproven claim is an empty cell, never a sentence** — prose has no empty cell to scan for. `Independent?` reads `no` whenever one agent authored both the code and its pin, or found, fixed and pinned the same defect, and names who. Ledger counts are parsed from the plan, never quoted from an agent's summary, so `blocked` cannot hide inside "discharged". Every `G-n` names the command that would close it.
|
|
169
169
|
- **§ 9 State.** Present tense; a claim that cannot be re-proved by its `Re-prove` command does not belong here — it moves to § 15 as a dated event. Volatile things (`/tmp`, pid files, ports, tokens, browser connections) declare a lifetime and the command that makes them durable.
|
|
170
170
|
- **§ 10–12.** A loop is a runnable command or a named question, never a noun phrase and never "investigate"; one needing a person's judgment states the question and the default in force. A discovery is a present-tense fact with a guard — "Workers Builds does not fire on a `dev` merge", not "we found that it didn't"; `none — {what would hold it}` is an honest guard that feeds the backlog. Debt names where it now lives, so this file can be deleted without losing it.
|
|
171
|
-
- **§ 13–14.** Every uninstrumented number reads `unmeasured — {what would
|
|
171
|
+
- **§ 13–14.** Every uninstrumented number reads `unmeasured — {what would measure it}`; a blank reports a cheaper run than the one that happened. **State whether the run's own corpus is version-controlled** — an untracked corpus is one `rm -rf` from being three PR descriptions, and archiving it is a § 1 row.
|
|
172
172
|
- **Ids are stable and run-global** — `D-`, `G-`, `L-`, `X-`, `T-` — so a PR comment or a successor cites a row instead of re-describing it. A withdrawn row keeps its id and states what disproved it.
|
|
173
173
|
- **Evidence is an address that outlives the run** — `path:line`, a 7-char sha, a PR number, a URL, or a command. A branch name is not a pointer; a `/tmp` log is not evidence — copy it into the record folder first.
|
|
174
174
|
- **Blanket claims are banned.** "All suites green", "every ledger discharged", "nothing was deployed" carry a count and the sha they are true of, or they become a `G-n` row.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Implementation
|
|
1
|
+
# Implementation map (docs/operations/implementation-map.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: **the cold-start execution contract of a project being built from its documented design** — one per repo, at `docs/operations/implementation-map.md`. It is authored by the **executing session at build start**, never generated at design time: build order is derived from the repo's actual feature docs and their stated dependencies, and a design-time prediction of it goes stale the day reality disagrees. It lives in operations because it says *how to proceed*, not *what is true of the design*.
|
|
4
4
|
|
|
@@ -8,9 +8,14 @@ Truth document. Use for: **the cold-start execution contract of a project being
|
|
|
8
8
|
- **A wave's done criterion is observable** — its plans' verification gates passed, the suite green, a named surface driveable. Never "feels complete".
|
|
9
9
|
- **Authority order names this repo's own docs, most specific wins.** A contradiction between documents is repaired in the owning truth doc *before* code — never reinterpreted while planning.
|
|
10
10
|
- **Plans are records, not an execution queue.** The map points at the active wave's dated plan; historical plans are read only when a truth doc cites them as provenance.
|
|
11
|
-
- **Update in place as waves complete** — the map
|
|
11
|
+
- **Update in place as waves complete** — the map names the active wave and links its plan; which waves are finished is read from their plans' `Status:`, the progress record, never restated here.
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
---
|
|
15
|
+
type: implementation-map
|
|
16
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
17
|
+
---
|
|
12
18
|
|
|
13
|
-
```
|
|
14
19
|
# {Project} implementation map
|
|
15
20
|
|
|
16
21
|
## Cold-start contract
|
|
@@ -36,7 +41,7 @@ When documents disagree:
|
|
|
36
41
|
| 1 | {docs/features/x.md, docs/features/y.md} | — | {observable criterion} |
|
|
37
42
|
| 2 | {…} | 1 | {…} |
|
|
38
43
|
|
|
39
|
-
##
|
|
44
|
+
## Active wave
|
|
40
45
|
|
|
41
|
-
{
|
|
46
|
+
{The wave being built, linked to its open plan ([plan](../history/plans/YYYY-MM-DD-slug.md)).}
|
|
42
47
|
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Journal (docs/history/journal.md)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Queue: rows are appended, never rewritten, and deleted once resolved. Use for: durable mid-execution knowledge — a fact discovered while building that some owning doc will eventually carry, captured the moment it exists so it survives the session. A row is resolved by landing in its owning doc: the row is deleted and the changelog entry cites it. The file stays short by construction; a journal that only grows is a queue nobody drains.
|
|
4
4
|
|
|
5
5
|
One line per fact. Never narrative, never progress notes (progress lives in the plan), never user preferences (those go to the runtime's memory store).
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
# Journal
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Capture of mid-execution knowledge — one line per fact, written the moment it exists, resolved by landing in its owning doc (delete the row, cite it in the changelog entry). Format: `YYYY-MM-DD · <area> · <one-line fact> → lands-in: <owning doc | backlog | memory>`
|
|
11
11
|
|
|
12
12
|
- YYYY-MM-DD · {area} · {one-line fact} → lands-in: {owning doc | backlog | memory}
|
|
13
13
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Scaffold: docs/memory/main.md
|
|
2
2
|
|
|
3
|
-
Baseline scaffold
|
|
3
|
+
Queue. Baseline scaffold, created if missing by the `maintenance` agent's baseline. Target file: `docs/memory/main.md`. Entries are appended, and retired by deletion when a document or the code comes to say the same thing, or a later entry replaces them; an entry is never edited to stay current.
|
|
4
4
|
|
|
5
5
|
```
|
|
6
6
|
---
|
|
@@ -11,7 +11,7 @@ description: Project-wide patterns and conventions confirmed in this codebase. P
|
|
|
11
11
|
|
|
12
12
|
# Main Agent — Project Memory
|
|
13
13
|
|
|
14
|
-
Append entries below,
|
|
14
|
+
Append entries below, newest at the bottom. Format:
|
|
15
15
|
|
|
16
16
|
## YYYY-MM-DD — {topic}
|
|
17
17
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Migration
|
|
1
|
+
# Migration runbook (docs/history/migrations/YYYY-MM-DD-{slug}.md)
|
|
2
2
|
|
|
3
3
|
Record. Use for: a **one-shot** migration, upgrade, or data operation — authored before execution, executed once, then outcome-stamped and frozen. Supporting scripts live beside it in a same-named folder when needed (`YYYY-MM-DD-{slug}/`).
|
|
4
4
|
|