@nurix/etna 0.18.21 → 0.18.22
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/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +2 -2
- package/data/harnesses/code/agents/maintenance.md +7 -6
- package/data/harnesses/code/harness.json +1 -1
- package/data/harnesses/code/skills/brainstorm/README.md +3 -3
- package/data/harnesses/code/skills/brainstorm/SKILL.md +5 -3
- package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +11 -7
- package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +4 -4
- package/data/harnesses/code/skills/design/references/personality.md +1 -1
- package/data/harnesses/code/skills/documentation/SKILL.md +1 -1
- package/data/harnesses/code/skills/documentation/references/templates.md +3 -3
- package/data/harnesses/etna/CLAUDE.md +2 -2
- package/data/harnesses/etna/agents/maintenance.md +7 -6
- package/data/harnesses/etna/harness.json +1 -1
- package/data/harnesses/etna/skills/brainstorm/README.md +3 -3
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +5 -3
- package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +11 -7
- package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +4 -4
- package/data/harnesses/etna/skills/documentation/SKILL.md +1 -1
- package/data/harnesses/etna/skills/documentation/references/templates.md +3 -3
- package/data/harnesses/mobile/CLAUDE.md +2 -2
- package/data/harnesses/mobile/agents/maintenance.md +7 -6
- package/data/harnesses/mobile/harness.json +1 -1
- package/data/harnesses/mobile/skills/brainstorm/README.md +3 -3
- package/data/harnesses/mobile/skills/brainstorm/SKILL.md +5 -3
- package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +11 -7
- package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +4 -4
- package/data/harnesses/mobile/skills/documentation/SKILL.md +1 -1
- package/data/harnesses/mobile/skills/documentation/references/templates.md +3 -3
- package/package.json +1 -1
package/data/harness-index.json
CHANGED
|
@@ -34,7 +34,7 @@ Three peer modes plus a Completion step — enter wherever the user's thinking a
|
|
|
34
34
|
| **LLD** (low-level design) | new feature work | `lld-mode` agent + `documentation` skill | Plan |
|
|
35
35
|
| **Plan** | an LLD is approved | `documentation` skill → `docs/history/plans/YYYY-MM-DD-{slug}.md` | Completion |
|
|
36
36
|
|
|
37
|
-
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a bug fix, one button) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm:
|
|
37
|
+
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a bug fix, one button) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm: in-progress sessions live under `docs/research/`, harvested ones under `docs/history/brainstorms/`, harvested doctrine under `docs/architecture/`. Runtimes without slash commands: read `.claude/skills/brainstorm/SKILL.md` and follow it inline. The LLD is the feature doc itself — `docs/features/{feature}.md`, design intent first, extended in place at Completion.
|
|
38
38
|
|
|
39
39
|
**On Plan Completion:**
|
|
40
40
|
|
|
@@ -44,7 +44,7 @@ Three peer modes plus a Completion step — enter wherever the user's thinking a
|
|
|
44
44
|
|
|
45
45
|
**On Brainstorm Close** (a separate procedure — when a brainstorm session ends, not when a plan completes):
|
|
46
46
|
|
|
47
|
-
- The session record lives at `docs/
|
|
47
|
+
- The session record lives at `docs/research/{topic}-brainstorming/` (committed) while active; on close + harvest it moves to `docs/history/brainstorms/{topic}/` as provenance — see `docs/structure.md`.
|
|
48
48
|
- Harvest conclusions by scope: doctrine, glossary, non-goals, information-architecture changes → `docs/architecture/`; decisions → `docs/architecture/decisions/` (one AD per subject — revising a recorded subject updates its AD in place); backlog items → `docs/history/backlog.md`.
|
|
49
49
|
- Open questions block close.
|
|
50
50
|
|
|
@@ -131,24 +131,25 @@ docs/
|
|
|
131
131
|
├── features/ # Feature specs — the only first-class doc unit (flat; ownership in each doc's `owns:` frontmatter)
|
|
132
132
|
│ └── {group}/ # browse-only subfolder for grouping; NEVER a module; may carry a Readme.md
|
|
133
133
|
├── operations/ # Setup, development, deployment, CI/CD
|
|
134
|
-
├──
|
|
135
|
-
│ └── {topic}/
|
|
134
|
+
├── research/ # Optional — in-progress brainstorm sessions ({topic}-brainstorming/) + standing research; Readme.md is the index
|
|
135
|
+
│ └── {topic}-brainstorming/ # created by the `brainstorm` skill; NOT scaffolded empty; moves to history/brainstorms/ on harvest
|
|
136
136
|
├── history/
|
|
137
137
|
│ ├── CHANGELOG.md # Master changelog index
|
|
138
138
|
│ ├── changelog/ # Individual entries
|
|
139
139
|
│ ├── plans/ # Implementation plans (Status field required)
|
|
140
|
+
│ ├── brainstorms/ # Harvested brainstorm sessions ({topic}/), kept as provenance; Readme.md is the index
|
|
140
141
|
│ └── backlog.md # Tracked work items by priority (P0-P3)
|
|
141
142
|
├── memory/ # index.md, main.md, {agent}.md — project knowledge + per-agent strategy memory
|
|
142
143
|
└── tests/ # Optional, author-maintained — create only if test docs exist
|
|
143
144
|
```
|
|
144
145
|
|
|
145
|
-
There is **no `docs/routing.md`**, **no `docs/modules/{m}/`**, **no `docs/pillars/`**, **no `docs/boundaries/`**. Code ownership lives in feature `owns:` frontmatter; a module is a `module:` label, not a folder; boundaries are diagnosed from source; brainstorm records
|
|
146
|
+
There is **no `docs/routing.md`**, **no `docs/modules/{m}/`**, **no `docs/pillars/`**, **no `docs/boundaries/`**. Code ownership lives in feature `owns:` frontmatter; a module is a `module:` label, not a folder; boundaries are diagnosed from source; brainstorm records live in `docs/research/` (active) and `docs/history/brainstorms/` (harvested).
|
|
146
147
|
|
|
147
|
-
>
|
|
148
|
+
> Brainstorm records are **author-created, never scaffolded** — the `brainstorm` skill writes an active session at `docs/research/{topic}-brainstorming/` and moves it to `docs/history/brainstorms/{topic}/` on harvest, kept (committed) as the provenance the steering pillars distil from. Recognize both as canonical: never flag them as docs "outside the structure" and never delete them during reconcile. Each folder carries a `Readme.md` index — keep it in sync with the folders it lists (every session has a row; no stale or missing rows), since the `brainstorm` skill reads the indexes instead of scanning.
|
|
148
149
|
|
|
149
150
|
### Step B1 — Inventory and classify
|
|
150
151
|
|
|
151
|
-
Glob every markdown file. Classify each: Architecture, Features, Operations, Plans, Changelogs, Backlog, Brainstorm records (stay), Stale/Deprecated (delete), Root docs (stay). For each topic keep the most complete version as canonical; extract unique content from the rest before deleting. **No redirect stubs** — when you move a file, delete the original and fix every reference (cross-doc links, memory files). Anything already under `docs/
|
|
152
|
+
Glob every markdown file. Classify each: Architecture, Features, Operations, Plans, Changelogs, Backlog, Brainstorm records (stay), Stale/Deprecated (delete), Root docs (stay). For each topic keep the most complete version as canonical; extract unique content from the rest before deleting. **No redirect stubs** — when you move a file, delete the original and fix every reference (cross-doc links, memory files). Anything already under `docs/research/{topic}-brainstorming/` or `docs/history/brainstorms/{topic}/` is a **kept design record** — leave it in place untouched; never reclassify its pillars as Architecture/Stale or relocate them.
|
|
152
153
|
|
|
153
154
|
While reading each markdown doc to classify it, if the doc names a code symbol it asserts exists that **statically resolves to nothing**, note it as an observation for the Part A audit — **only** on stacks where static resolution is reliable (stay silent on codegen/reflection/DI/barrel stacks); scoped to docs already being read here, never a whole-repo prose sweep; **docs only**, never code-file comments.
|
|
154
155
|
|
|
@@ -166,7 +167,7 @@ This is what makes baseline more than a fresh scaffold. Detect old-shape artifac
|
|
|
166
167
|
| `docs/OWNERSHIP_INDEX.md` (legacy derived ownership index) | delete — ownership is the union of feature `owns:` frontmatter, surfaced by the generated index |
|
|
167
168
|
| `docs/operations/guardrails.md` | fold durable contract notes into `docs/architecture/` |
|
|
168
169
|
| `docs/architecture/overview.md` | split into `domain-model.md` / `glossary.md` / `non-goals.md` / `references.md` / `open-questions.md` |
|
|
169
|
-
| a
|
|
170
|
+
| a legacy `docs/brainstorm/{topic}/`, or a root `brainstorm/`/`brainstorming/` folder | move each **active** record to `docs/research/{topic}-brainstorming/` and each **harvested** one to `docs/history/brainstorms/{topic}/` (dropping the suffix); create/refresh both `Readme.md` indexes; delete the emptied folder |
|
|
170
171
|
| no `harness-version` in `structure.md` | stamp it (Step B4) |
|
|
171
172
|
|
|
172
173
|
### Step B3 — Present the reconcile plan, then execute
|
|
@@ -128,13 +128,13 @@ The writing posture is a **mode** chosen at intake, folded into `build.md`:
|
|
|
128
128
|
|
|
129
129
|
## Exit artifacts
|
|
130
130
|
|
|
131
|
-
The session writes a
|
|
131
|
+
The session writes a design record at `docs/research/{topic}-brainstorming/` (one folder per topic), moved to `docs/history/brainstorms/{topic}/` on harvest. At `stop`, after the final five-source sync (self-containment included — the record is verified standalone-readable exactly when it's about to become the only survivor of the session), the skill _offers_ what to **publish** from it (`AskUserQuestion`, multi-select — a session can emit more than one):
|
|
132
132
|
|
|
133
133
|
- **Source of truth** — one consolidated, README-style canonical doc for the thing designed (`templates/source-of-truth.md`); lands in the repo's feature/architecture doc home, else a topic `Readme.md`.
|
|
134
134
|
- **Plans** — one or more executable plan docs → `docs/history/plans/` (Status: Draft).
|
|
135
135
|
- **Harvest into the living docs** — conclusions dispersed by scope into ADs (architecture decisions), the domain model, and the backlog.
|
|
136
136
|
|
|
137
|
-
The
|
|
137
|
+
The session record is **kept** whichever you pick — never deleted; on harvest it moves to `docs/history/brainstorms/{topic}/` as the provenance every artifact traces back to. See `exit-artifacts.md`.
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -159,4 +159,4 @@ brainstorm/ # the skill (in .claude/skills/)
|
|
|
159
159
|
└── templates/ # pillar templates + evidence.md + source-of-truth.md, used in the record and at stop
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
The session itself is written to `docs/
|
|
162
|
+
The session itself is written to `docs/research/{topic}-brainstorming/` (committed; moved to `docs/history/brainstorms/{topic}/` on harvest) — not here.
|
|
@@ -42,6 +42,8 @@ Write as if the transcript is already deleted — it will be. The folder must le
|
|
|
42
42
|
|
|
43
43
|
## `start`
|
|
44
44
|
|
|
45
|
+
First, consult the two indexes — never scan folders. `docs/research/Readme.md` lists **active** sessions; `docs/history/brainstorms/Readme.md` lists **harvested** ones. Match the topic against both: an active match → resume it (§3, reusing its folder); a harvested match → surface that prior exploration and ask whether to reopen it (move the folder back to `docs/research/{topic}-brainstorming/`) or branch a fresh topic; no match → a new session. Then:
|
|
46
|
+
|
|
45
47
|
### 1. The entry gate
|
|
46
48
|
|
|
47
49
|
A session needs substance before it opens. Ask for a **basis**: a reference document (path or URL), or a one-shot brain dump of the whole idea, right now, in prose.
|
|
@@ -62,7 +64,7 @@ Then propose the **aspect map**: the thinking dimensions for _this specific idea
|
|
|
62
64
|
|
|
63
65
|
### 3. Bootstrap
|
|
64
66
|
|
|
65
|
-
Session folder: `docs/
|
|
67
|
+
Session folder: `docs/research/{topic}-brainstorming/` — a **committed** design record, one folder per design topic (slug the topic; confirm it in one line). Add a row to the `docs/research/Readme.md` index. Resume an existing topic by reusing its folder if it already holds a `state.md`. The record lives here while the session is active; on close **and** harvest it moves to `docs/history/brainstorms/{topic}/` as the provenance the exit artifacts distil from (see `stop` and `exit-artifacts.md`). Create only the pillars the complexity calls for, from `templates/` (never overwrite existing files; if a template is missing, create the file from the field lists in **Pillars**). `basis/` holds the frozen inputs; `evidence/` materializes on the first session-produced analysis (memory contract, rule 3). Write top-level `state.md`:
|
|
66
68
|
|
|
67
69
|
```
|
|
68
70
|
STATE: open
|
|
@@ -136,8 +138,8 @@ Zero means _"audited against the five sources and clean"_ — never _"nothing ca
|
|
|
136
138
|
|
|
137
139
|
1. Run a final sync (wait for any in-flight sync first). It audits all five sources — self-containment included, so the record is verified standalone-readable exactly when it is about to become the only survivor of the session.
|
|
138
140
|
2. **Coherent** → say so and proceed. **Questions open** → list them plainly (English first, codes in parentheses) and offer per question: resolve now (mini-converge) / park explicitly (backlog or non-goals, with reason) / leave open and stop anyway — the folder keeps full state and resumes exactly where it left off. Flag parked **self-containment** gaps distinctly: parking one means the record ships not fully standalone.
|
|
139
|
-
3. **Publish exit artifacts** — see `exit-artifacts.md`. Offer the choice (`AskUserQuestion`, multi-select): a **source of truth** (one consolidated README-style doc — the standing reference for the thing designed), **plans** (executable work → `docs/history/plans/`), and/or **harvest into the living docs** (conclusions dispersed by scope into ADs — architecture decisions — the domain model, the backlog). The
|
|
140
|
-
4. Write `STATE: closed` + one-line reason. Print: _"Run `/brainstorm start` to resume."_
|
|
141
|
+
3. **Publish exit artifacts** — see `exit-artifacts.md`. Offer the choice (`AskUserQuestion`, multi-select): a **source of truth** (one consolidated README-style doc — the standing reference for the thing designed), **plans** (executable work → `docs/history/plans/`), and/or **harvest into the living docs** (conclusions dispersed by scope into ADs — architecture decisions — the domain model, the backlog). The session record is **kept** (committed) whichever you pick — it is the provenance every artifact traces back to and the seed the next session resumes from.
|
|
142
|
+
4. Write `STATE: closed` + one-line reason. If the harvest is complete (conclusions dispersed into the living docs), **move** the folder from `docs/research/{topic}-brainstorming/` to `docs/history/brainstorms/{topic}/` and update both indexes — drop its row from `docs/research/Readme.md`, add it to `docs/history/brainstorms/Readme.md`. If the session is only paused (questions parked, more to come), leave it in `docs/research/` and update its index row's status. Print: _"Run `/brainstorm start` to resume."_
|
|
141
143
|
|
|
142
144
|
## Conduct — holds for the whole session
|
|
143
145
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Exit artifacts
|
|
2
2
|
|
|
3
|
-
What `/brainstorm stop` publishes from a closed session. The
|
|
3
|
+
What `/brainstorm stop` publishes from a closed session. The session record is **kept
|
|
4
4
|
either way** — committed provenance, never a scratchpad. Exit artifacts copy the session's _conclusions_
|
|
5
|
-
outward into the form the work needs; the record stays as the source they trace back to
|
|
5
|
+
outward into the form the work needs; the record stays as the source they trace back to — and, once
|
|
6
|
+
harvested, moves from `docs/research/{topic}-brainstorming/` to `docs/history/brainstorms/{topic}/`.
|
|
6
7
|
|
|
7
8
|
At `stop`, after the final sync, **offer the artifact choice** (`AskUserQuestion`, multi-select — a session
|
|
8
9
|
can publish more than one):
|
|
@@ -54,9 +55,12 @@ not folders — a finding scoped to one module still lands in `docs/architecture
|
|
|
54
55
|
|
|
55
56
|
Append a changelog entry at `docs/history/changelog/YYYY-MM-DD-brainstorm-{slug}.md` listing what was published where.
|
|
56
57
|
|
|
57
|
-
## After publishing —
|
|
58
|
+
## After publishing — move the record to history
|
|
58
59
|
|
|
59
|
-
**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
**Move `docs/research/{topic}-brainstorming/` → `docs/history/brainstorms/{topic}/`, and update both
|
|
61
|
+
`Readme.md` indexes** (drop the row from `docs/research/Readme.md`, add it to
|
|
62
|
+
`docs/history/brainstorms/Readme.md`). The exit artifacts now carry the distilled conclusions; the record
|
|
63
|
+
itself is **kept** — never deleted — but as harvested provenance it belongs under `docs/history/brainstorms/`:
|
|
64
|
+
a traceable source for every published headline, and the seed the next `/brainstorm start` on this topic
|
|
65
|
+
resumes from. A session that is only **paused** (not harvested) stays in `docs/research/`. Retire a topic's
|
|
66
|
+
folder by hand only when the design line is truly dead.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> This is a **source-of-truth doc**: the standing, canonical reference for [thing]. Write it like a
|
|
4
4
|
> README — present tense, reader-first, the thing described as it _is_. It is **not a plan** (no steps,
|
|
5
5
|
> status, or sequencing — those go to `docs/history/plans/`) and **not the brainstorm record** (no
|
|
6
|
-
> `Q-N`/`D-N` codes, no "Why / How to apply" ledger, no rejected alternatives — those stay in
|
|
7
|
-
> `docs/
|
|
6
|
+
> `Q-N`/`D-N` codes, no "Why / How to apply" ledger, no rejected alternatives — those stay in the harvested
|
|
7
|
+
> record at `docs/history/brainstorms/{topic}/` and any ADs). One document; if a section outgrows it, link out, don't sprawl.
|
|
8
8
|
>
|
|
9
9
|
> **Placement.** In a repo with a feature-doc system this lands as `docs/features/{slug}.md` and carries
|
|
10
10
|
> that system's frontmatter (`owns:` / `module:` / `keywords:` / `status:`). Cross-cutting → `docs/architecture/{slug}.md`.
|
|
@@ -41,9 +41,9 @@ and what is explicitly out of scope.]
|
|
|
41
41
|
|
|
42
42
|
## Open questions
|
|
43
43
|
|
|
44
|
-
[One line pointing at `docs/
|
|
44
|
+
[One line pointing at `docs/history/brainstorms/{topic}/questions.md` if any remain open. Omit if none.]
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
|
-
_Distilled from `docs/
|
|
48
|
+
_Distilled from `docs/history/brainstorms/{topic}/`. That record holds the rationale, the rejected alternatives,
|
|
49
49
|
and the provenance for everything above._
|
|
@@ -214,7 +214,7 @@ re-derivable. Judgment is recorded, never silent.
|
|
|
214
214
|
radius scale. Two cascade contracts keep the personality in charge; both are hardened with the
|
|
215
215
|
emitted in-CSS comments below and enforced by the code-and-token rules (`cod-*`) in
|
|
216
216
|
[hard-rules.md](./hard-rules.md). The library's actual consumption is enumerated in
|
|
217
|
-
[the substrate audit](../../../docs/
|
|
217
|
+
[the substrate audit](../../../docs/history/brainstorms/design/u1-audit-report.md).
|
|
218
218
|
|
|
219
219
|
**CASCADE CONTRACT 1 — the specificity/attribute pair.** The color tokens are emitted under a
|
|
220
220
|
doubled selector, and `<html>` must carry `data-theme="light"`:
|
|
@@ -21,7 +21,7 @@ Every document is exactly one of two things. Decide which before writing a word
|
|
|
21
21
|
| Named by | Topic: `auth.md`, `AD-003-persistence.md` | Date: `YYYY-MM-DD-slug.md` (or append position) |
|
|
22
22
|
| On change | Body rewritten in place the moment reality changes | Never edited — frozen at completion or append-only |
|
|
23
23
|
| Read to | Act correctly today | Trace provenance, diagnose, audit |
|
|
24
|
-
| Lives in | `docs/features/`, `docs/architecture/`, `docs/operations/`, `docs/tests/`, READMEs | `docs/history/` (plans, changelog, research, migrations), `docs/
|
|
24
|
+
| Lives in | `docs/features/`, `docs/architecture/`, `docs/operations/`, `docs/tests/`, READMEs | `docs/history/` (plans, changelog, brainstorms, research, migrations), `docs/research/`, `docs/memory/` |
|
|
25
25
|
|
|
26
26
|
The two guarantees are complementary and both break on mixing: a reader holding a **truth document** must never need history to interpret it; a reader holding a **record** must be able to trust it was never rewritten. So the natures never share a document body.
|
|
27
27
|
|
|
@@ -111,12 +111,12 @@ Each topic has one canonical location. Read from here, not from plans or changel
|
|
|
111
111
|
| Change records | `docs/history/changelog/` | Individual entries |
|
|
112
112
|
| Migration runbooks | `docs/history/migrations/` | YYYY-MM-DD-name.md |
|
|
113
113
|
| Deep-research artifacts | `docs/history/research/{topic}/` | README.md + findings.md + sources.md |
|
|
114
|
-
| Brainstorm design records | `docs/
|
|
114
|
+
| Brainstorm design records | `docs/research/{topic}-brainstorming/` (active) → `docs/history/brainstorms/{topic}/` (harvested) | state.md + pillars/ |
|
|
115
115
|
| Backlog | `docs/history/` | backlog.md |
|
|
116
116
|
|
|
117
117
|
## The Two Natures
|
|
118
118
|
|
|
119
|
-
Every doc is a **truth document** (states current absolutes, topic-named, updated in place) or a **record** (dated account of activity, frozen or append-only). `architecture/`, `features/`, `operations/`, `tests/` hold truth; `history/`, `
|
|
119
|
+
Every doc is a **truth document** (states current absolutes, topic-named, updated in place) or a **record** (dated account of activity, frozen or append-only). `architecture/`, `features/`, `operations/`, `tests/` hold truth; `history/`, `research/`, `memory/` hold records.
|
|
120
120
|
|
|
121
121
|
- Truth documents are rewritten in place when reality changes — the change-story goes to a changelog entry, never into the truth doc's body.
|
|
122
122
|
- Records freeze: plans at `Complete`/`Abandoned`, changelog entries and migration runbooks once written/executed. A scope change is a new dated record that links back.
|
|
@@ -132,7 +132,7 @@ Every doc is a **truth document** (states current absolutes, topic-named, update
|
|
|
132
132
|
- `docs/history/changelog/`: Records. Append-only.
|
|
133
133
|
- `docs/history/migrations/`: Records. One-shot migration/upgrade runbooks — authored before execution, outcome-stamped and frozen after.
|
|
134
134
|
- `docs/history/research/{topic}/`: Deep-research artifacts — the dumped output of a research pass, one folder per topic (conventionally `README.md` synthesis + `findings.md` verified claims & citations + `sources.md`). A point-in-time, cited record — **not** a living authority doc: it owns no code (no `owns:` frontmatter) and is never edited to "stay current." A spec/plan links to it for grounding; a new question gets a new topic folder.
|
|
135
|
-
- `docs/
|
|
135
|
+
- `docs/research/{topic}-brainstorming/` → `docs/history/brainstorms/{topic}/`: Brainstorm design records — the committed Brainstorming-Mode session for a topic (`state.md` + `pillars/`), written by the `brainstorm` skill. An active session lives under `docs/research/`; on close + harvest it **moves** to `docs/history/brainstorms/` and is **kept** as the provenance the truth layer distils from. Each of the two folders carries a `Readme.md` index (the skill reads it at start instead of scanning). Author-created (never scaffolded empty), one folder per design conversation. Owns no code (no `owns:` frontmatter); the harvest copies its conclusions into `architecture/`/`history/`. Retire a topic's folder by hand only when the design line is dead. (Distinct from `docs/history/research/{topic}/` above — that is a frozen deep-research record, not a brainstorm session.)
|
|
136
136
|
- `docs/history/backlog.md`: Tracked work items. Append new items under appropriate priority.
|
|
137
137
|
|
|
138
138
|
## Health Log
|
|
@@ -51,7 +51,7 @@ Three peer modes plus a Completion step — enter wherever the user's thinking a
|
|
|
51
51
|
| **LLD** (low-level design) | new component/feature work | `lld-mode` agent + `documentation` skill | Plan |
|
|
52
52
|
| **Plan** | an LLD is approved | `documentation` skill → `docs/history/plans/YYYY-MM-DD-{slug}.md` | Completion |
|
|
53
53
|
|
|
54
|
-
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a one-line fix) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm:
|
|
54
|
+
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a one-line fix) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm: in-progress sessions under `docs/research/`, harvested ones under `docs/history/brainstorms/`, harvested doctrine under `docs/architecture/`. The LLD is the feature doc itself — `docs/features/{feature}.md`, design intent first, extended in place at Completion.
|
|
55
55
|
|
|
56
56
|
**On Plan Completion:**
|
|
57
57
|
|
|
@@ -61,7 +61,7 @@ Three peer modes plus a Completion step — enter wherever the user's thinking a
|
|
|
61
61
|
|
|
62
62
|
**On Brainstorm Close** (when a session ends, not when a plan completes):
|
|
63
63
|
|
|
64
|
-
- The session record lives at `docs/
|
|
64
|
+
- The session record lives at `docs/research/{topic}-brainstorming/` (committed) while active; on close + harvest it moves to `docs/history/brainstorms/{topic}/` as provenance — see `docs/structure.md`.
|
|
65
65
|
- Harvest conclusions by scope: doctrine, glossary, non-goals, IA changes → `docs/architecture/`; decisions → `docs/architecture/decisions/` (one AD per subject — revising a recorded subject updates its AD in place); backlog items → `docs/history/backlog.md`.
|
|
66
66
|
- Open questions block close.
|
|
67
67
|
|
|
@@ -131,24 +131,25 @@ docs/
|
|
|
131
131
|
├── features/ # Feature specs — the only first-class doc unit (flat; ownership in each doc's `owns:` frontmatter)
|
|
132
132
|
│ └── {group}/ # browse-only subfolder for grouping; NEVER a module; may carry a Readme.md
|
|
133
133
|
├── operations/ # Setup, development, deployment, CI/CD
|
|
134
|
-
├──
|
|
135
|
-
│ └── {topic}/
|
|
134
|
+
├── research/ # Optional — in-progress brainstorm sessions ({topic}-brainstorming/) + standing research; Readme.md is the index
|
|
135
|
+
│ └── {topic}-brainstorming/ # created by the `brainstorm` skill; NOT scaffolded empty; moves to history/brainstorms/ on harvest
|
|
136
136
|
├── history/
|
|
137
137
|
│ ├── CHANGELOG.md # Master changelog index
|
|
138
138
|
│ ├── changelog/ # Individual entries
|
|
139
139
|
│ ├── plans/ # Implementation plans (Status field required)
|
|
140
|
+
│ ├── brainstorms/ # Harvested brainstorm sessions ({topic}/), kept as provenance; Readme.md is the index
|
|
140
141
|
│ └── backlog.md # Tracked work items by priority (P0-P3)
|
|
141
142
|
├── memory/ # index.md, main.md, {agent}.md — project knowledge + per-agent strategy memory
|
|
142
143
|
└── tests/ # Optional, author-maintained — create only if test docs exist
|
|
143
144
|
```
|
|
144
145
|
|
|
145
|
-
There is **no `docs/routing.md`**, **no `docs/modules/{m}/`**, **no `docs/pillars/`**, **no `docs/boundaries/`**. Code ownership lives in feature `owns:` frontmatter; a module is a `module:` label, not a folder; boundaries are diagnosed from source; brainstorm records
|
|
146
|
+
There is **no `docs/routing.md`**, **no `docs/modules/{m}/`**, **no `docs/pillars/`**, **no `docs/boundaries/`**. Code ownership lives in feature `owns:` frontmatter; a module is a `module:` label, not a folder; boundaries are diagnosed from source; brainstorm records live in `docs/research/` (active) and `docs/history/brainstorms/` (harvested).
|
|
146
147
|
|
|
147
|
-
>
|
|
148
|
+
> Brainstorm records are **author-created, never scaffolded** — the `brainstorm` skill writes an active session at `docs/research/{topic}-brainstorming/` and moves it to `docs/history/brainstorms/{topic}/` on harvest, kept (committed) as the provenance the steering pillars distil from. Recognize both as canonical: never flag them as docs "outside the structure" and never delete them during reconcile. Each folder carries a `Readme.md` index — keep it in sync with the folders it lists (every session has a row; no stale or missing rows), since the `brainstorm` skill reads the indexes instead of scanning.
|
|
148
149
|
|
|
149
150
|
### Step B1 — Inventory and classify
|
|
150
151
|
|
|
151
|
-
Glob every markdown file. Classify each: Architecture, Features, Operations, Plans, Changelogs, Backlog, Brainstorm records (stay), Stale/Deprecated (delete), Root docs (stay). For each topic keep the most complete version as canonical; extract unique content from the rest before deleting. **No redirect stubs** — when you move a file, delete the original and fix every reference (cross-doc links, memory files). Anything already under `docs/
|
|
152
|
+
Glob every markdown file. Classify each: Architecture, Features, Operations, Plans, Changelogs, Backlog, Brainstorm records (stay), Stale/Deprecated (delete), Root docs (stay). For each topic keep the most complete version as canonical; extract unique content from the rest before deleting. **No redirect stubs** — when you move a file, delete the original and fix every reference (cross-doc links, memory files). Anything already under `docs/research/{topic}-brainstorming/` or `docs/history/brainstorms/{topic}/` is a **kept design record** — leave it in place untouched; never reclassify its pillars as Architecture/Stale or relocate them.
|
|
152
153
|
|
|
153
154
|
While reading each markdown doc to classify it, if the doc names a code symbol it asserts exists that **statically resolves to nothing**, note it as an observation for the Part A audit — **only** on stacks where static resolution is reliable (stay silent on codegen/reflection/DI/barrel stacks); scoped to docs already being read here, never a whole-repo prose sweep; **docs only**, never code-file comments.
|
|
154
155
|
|
|
@@ -166,7 +167,7 @@ This is what makes baseline more than a fresh scaffold. Detect old-shape artifac
|
|
|
166
167
|
| `docs/OWNERSHIP_INDEX.md` (legacy derived ownership index) | delete — ownership is the union of feature `owns:` frontmatter, surfaced by the generated index |
|
|
167
168
|
| `docs/operations/guardrails.md` | fold durable contract notes into `docs/architecture/` |
|
|
168
169
|
| `docs/architecture/overview.md` | split into `domain-model.md` / `glossary.md` / `non-goals.md` / `references.md` / `open-questions.md` |
|
|
169
|
-
| a
|
|
170
|
+
| a legacy `docs/brainstorm/{topic}/`, or a root `brainstorm/`/`brainstorming/` folder | move each **active** record to `docs/research/{topic}-brainstorming/` and each **harvested** one to `docs/history/brainstorms/{topic}/` (dropping the suffix); create/refresh both `Readme.md` indexes; delete the emptied folder |
|
|
170
171
|
| no `harness-version` in `structure.md` | stamp it (Step B4) |
|
|
171
172
|
|
|
172
173
|
### Step B3 — Present the reconcile plan, then execute
|
|
@@ -128,13 +128,13 @@ The writing posture is a **mode** chosen at intake, folded into `build.md`:
|
|
|
128
128
|
|
|
129
129
|
## Exit artifacts
|
|
130
130
|
|
|
131
|
-
The session writes a
|
|
131
|
+
The session writes a design record at `docs/research/{topic}-brainstorming/` (one folder per topic), moved to `docs/history/brainstorms/{topic}/` on harvest. At `stop`, after the final five-source sync (self-containment included — the record is verified standalone-readable exactly when it's about to become the only survivor of the session), the skill _offers_ what to **publish** from it (`AskUserQuestion`, multi-select — a session can emit more than one):
|
|
132
132
|
|
|
133
133
|
- **Source of truth** — one consolidated, README-style canonical doc for the thing designed (`templates/source-of-truth.md`); lands in the repo's feature/architecture doc home, else a topic `Readme.md`.
|
|
134
134
|
- **Plans** — one or more executable plan docs → `docs/history/plans/` (Status: Draft).
|
|
135
135
|
- **Harvest into the living docs** — conclusions dispersed by scope into ADs (architecture decisions), the domain model, and the backlog.
|
|
136
136
|
|
|
137
|
-
The
|
|
137
|
+
The session record is **kept** whichever you pick — never deleted; on harvest it moves to `docs/history/brainstorms/{topic}/` as the provenance every artifact traces back to. See `exit-artifacts.md`.
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -159,4 +159,4 @@ brainstorm/ # the skill (in .claude/skills/)
|
|
|
159
159
|
└── templates/ # pillar templates + evidence.md + source-of-truth.md, used in the record and at stop
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
The session itself is written to `docs/
|
|
162
|
+
The session itself is written to `docs/research/{topic}-brainstorming/` (committed; moved to `docs/history/brainstorms/{topic}/` on harvest) — not here.
|
|
@@ -42,6 +42,8 @@ Write as if the transcript is already deleted — it will be. The folder must le
|
|
|
42
42
|
|
|
43
43
|
## `start`
|
|
44
44
|
|
|
45
|
+
First, consult the two indexes — never scan folders. `docs/research/Readme.md` lists **active** sessions; `docs/history/brainstorms/Readme.md` lists **harvested** ones. Match the topic against both: an active match → resume it (§3, reusing its folder); a harvested match → surface that prior exploration and ask whether to reopen it (move the folder back to `docs/research/{topic}-brainstorming/`) or branch a fresh topic; no match → a new session. Then:
|
|
46
|
+
|
|
45
47
|
### 1. The entry gate
|
|
46
48
|
|
|
47
49
|
A session needs substance before it opens. Ask for a **basis**: a reference document (path or URL), or a one-shot brain dump of the whole idea, right now, in prose.
|
|
@@ -62,7 +64,7 @@ Then propose the **aspect map**: the thinking dimensions for _this specific idea
|
|
|
62
64
|
|
|
63
65
|
### 3. Bootstrap
|
|
64
66
|
|
|
65
|
-
Session folder: `docs/
|
|
67
|
+
Session folder: `docs/research/{topic}-brainstorming/` — a **committed** design record, one folder per design topic (slug the topic; confirm it in one line). Add a row to the `docs/research/Readme.md` index. Resume an existing topic by reusing its folder if it already holds a `state.md`. The record lives here while the session is active; on close **and** harvest it moves to `docs/history/brainstorms/{topic}/` as the provenance the exit artifacts distil from (see `stop` and `exit-artifacts.md`). Create only the pillars the complexity calls for, from `templates/` (never overwrite existing files; if a template is missing, create the file from the field lists in **Pillars**). `basis/` holds the frozen inputs; `evidence/` materializes on the first session-produced analysis (memory contract, rule 3). Write top-level `state.md`:
|
|
66
68
|
|
|
67
69
|
```
|
|
68
70
|
STATE: open
|
|
@@ -136,8 +138,8 @@ Zero means _"audited against the five sources and clean"_ — never _"nothing ca
|
|
|
136
138
|
|
|
137
139
|
1. Run a final sync (wait for any in-flight sync first). It audits all five sources — self-containment included, so the record is verified standalone-readable exactly when it is about to become the only survivor of the session.
|
|
138
140
|
2. **Coherent** → say so and proceed. **Questions open** → list them plainly (English first, codes in parentheses) and offer per question: resolve now (mini-converge) / park explicitly (backlog or non-goals, with reason) / leave open and stop anyway — the folder keeps full state and resumes exactly where it left off. Flag parked **self-containment** gaps distinctly: parking one means the record ships not fully standalone.
|
|
139
|
-
3. **Publish exit artifacts** — see `exit-artifacts.md`. Offer the choice (`AskUserQuestion`, multi-select): a **source of truth** (one consolidated README-style doc — the standing reference for the thing designed), **plans** (executable work → `docs/history/plans/`), and/or **harvest into the living docs** (conclusions dispersed by scope into ADs — architecture decisions — the domain model, the backlog). The
|
|
140
|
-
4. Write `STATE: closed` + one-line reason. Print: _"Run `/brainstorm start` to resume."_
|
|
141
|
+
3. **Publish exit artifacts** — see `exit-artifacts.md`. Offer the choice (`AskUserQuestion`, multi-select): a **source of truth** (one consolidated README-style doc — the standing reference for the thing designed), **plans** (executable work → `docs/history/plans/`), and/or **harvest into the living docs** (conclusions dispersed by scope into ADs — architecture decisions — the domain model, the backlog). The session record is **kept** (committed) whichever you pick — it is the provenance every artifact traces back to and the seed the next session resumes from.
|
|
142
|
+
4. Write `STATE: closed` + one-line reason. If the harvest is complete (conclusions dispersed into the living docs), **move** the folder from `docs/research/{topic}-brainstorming/` to `docs/history/brainstorms/{topic}/` and update both indexes — drop its row from `docs/research/Readme.md`, add it to `docs/history/brainstorms/Readme.md`. If the session is only paused (questions parked, more to come), leave it in `docs/research/` and update its index row's status. Print: _"Run `/brainstorm start` to resume."_
|
|
141
143
|
|
|
142
144
|
## Conduct — holds for the whole session
|
|
143
145
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Exit artifacts
|
|
2
2
|
|
|
3
|
-
What `/brainstorm stop` publishes from a closed session. The
|
|
3
|
+
What `/brainstorm stop` publishes from a closed session. The session record is **kept
|
|
4
4
|
either way** — committed provenance, never a scratchpad. Exit artifacts copy the session's _conclusions_
|
|
5
|
-
outward into the form the work needs; the record stays as the source they trace back to
|
|
5
|
+
outward into the form the work needs; the record stays as the source they trace back to — and, once
|
|
6
|
+
harvested, moves from `docs/research/{topic}-brainstorming/` to `docs/history/brainstorms/{topic}/`.
|
|
6
7
|
|
|
7
8
|
At `stop`, after the final sync, **offer the artifact choice** (`AskUserQuestion`, multi-select — a session
|
|
8
9
|
can publish more than one):
|
|
@@ -54,9 +55,12 @@ not folders — a finding scoped to one module still lands in `docs/architecture
|
|
|
54
55
|
|
|
55
56
|
Append a changelog entry at `docs/history/changelog/YYYY-MM-DD-brainstorm-{slug}.md` listing what was published where.
|
|
56
57
|
|
|
57
|
-
## After publishing —
|
|
58
|
+
## After publishing — move the record to history
|
|
58
59
|
|
|
59
|
-
**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
**Move `docs/research/{topic}-brainstorming/` → `docs/history/brainstorms/{topic}/`, and update both
|
|
61
|
+
`Readme.md` indexes** (drop the row from `docs/research/Readme.md`, add it to
|
|
62
|
+
`docs/history/brainstorms/Readme.md`). The exit artifacts now carry the distilled conclusions; the record
|
|
63
|
+
itself is **kept** — never deleted — but as harvested provenance it belongs under `docs/history/brainstorms/`:
|
|
64
|
+
a traceable source for every published headline, and the seed the next `/brainstorm start` on this topic
|
|
65
|
+
resumes from. A session that is only **paused** (not harvested) stays in `docs/research/`. Retire a topic's
|
|
66
|
+
folder by hand only when the design line is truly dead.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> This is a **source-of-truth doc**: the standing, canonical reference for [thing]. Write it like a
|
|
4
4
|
> README — present tense, reader-first, the thing described as it _is_. It is **not a plan** (no steps,
|
|
5
5
|
> status, or sequencing — those go to `docs/history/plans/`) and **not the brainstorm record** (no
|
|
6
|
-
> `Q-N`/`D-N` codes, no "Why / How to apply" ledger, no rejected alternatives — those stay in
|
|
7
|
-
> `docs/
|
|
6
|
+
> `Q-N`/`D-N` codes, no "Why / How to apply" ledger, no rejected alternatives — those stay in the harvested
|
|
7
|
+
> record at `docs/history/brainstorms/{topic}/` and any ADs). One document; if a section outgrows it, link out, don't sprawl.
|
|
8
8
|
>
|
|
9
9
|
> **Placement.** In a repo with a feature-doc system this lands as `docs/features/{slug}.md` and carries
|
|
10
10
|
> that system's frontmatter (`owns:` / `module:` / `keywords:` / `status:`). Cross-cutting → `docs/architecture/{slug}.md`.
|
|
@@ -41,9 +41,9 @@ and what is explicitly out of scope.]
|
|
|
41
41
|
|
|
42
42
|
## Open questions
|
|
43
43
|
|
|
44
|
-
[One line pointing at `docs/
|
|
44
|
+
[One line pointing at `docs/history/brainstorms/{topic}/questions.md` if any remain open. Omit if none.]
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
|
-
_Distilled from `docs/
|
|
48
|
+
_Distilled from `docs/history/brainstorms/{topic}/`. That record holds the rationale, the rejected alternatives,
|
|
49
49
|
and the provenance for everything above._
|
|
@@ -21,7 +21,7 @@ Every document is exactly one of two things. Decide which before writing a word
|
|
|
21
21
|
| Named by | Topic: `auth.md`, `AD-003-persistence.md` | Date: `YYYY-MM-DD-slug.md` (or append position) |
|
|
22
22
|
| On change | Body rewritten in place the moment reality changes | Never edited — frozen at completion or append-only |
|
|
23
23
|
| Read to | Act correctly today | Trace provenance, diagnose, audit |
|
|
24
|
-
| Lives in | `docs/features/`, `docs/architecture/`, `docs/operations/`, `docs/tests/`, READMEs | `docs/history/` (plans, changelog, research, migrations), `docs/
|
|
24
|
+
| Lives in | `docs/features/`, `docs/architecture/`, `docs/operations/`, `docs/tests/`, READMEs | `docs/history/` (plans, changelog, brainstorms, research, migrations), `docs/research/`, `docs/memory/` |
|
|
25
25
|
|
|
26
26
|
The two guarantees are complementary and both break on mixing: a reader holding a **truth document** must never need history to interpret it; a reader holding a **record** must be able to trust it was never rewritten. So the natures never share a document body.
|
|
27
27
|
|
|
@@ -111,12 +111,12 @@ Each topic has one canonical location. Read from here, not from plans or changel
|
|
|
111
111
|
| Change records | `docs/history/changelog/` | Individual entries |
|
|
112
112
|
| Migration runbooks | `docs/history/migrations/` | YYYY-MM-DD-name.md |
|
|
113
113
|
| Deep-research artifacts | `docs/history/research/{topic}/` | README.md + findings.md + sources.md |
|
|
114
|
-
| Brainstorm design records | `docs/
|
|
114
|
+
| Brainstorm design records | `docs/research/{topic}-brainstorming/` (active) → `docs/history/brainstorms/{topic}/` (harvested) | state.md + pillars/ |
|
|
115
115
|
| Backlog | `docs/history/` | backlog.md |
|
|
116
116
|
|
|
117
117
|
## The Two Natures
|
|
118
118
|
|
|
119
|
-
Every doc is a **truth document** (states current absolutes, topic-named, updated in place) or a **record** (dated account of activity, frozen or append-only). `architecture/`, `features/`, `operations/`, `tests/` hold truth; `history/`, `
|
|
119
|
+
Every doc is a **truth document** (states current absolutes, topic-named, updated in place) or a **record** (dated account of activity, frozen or append-only). `architecture/`, `features/`, `operations/`, `tests/` hold truth; `history/`, `research/`, `memory/` hold records.
|
|
120
120
|
|
|
121
121
|
- Truth documents are rewritten in place when reality changes — the change-story goes to a changelog entry, never into the truth doc's body.
|
|
122
122
|
- Records freeze: plans at `Complete`/`Abandoned`, changelog entries and migration runbooks once written/executed. A scope change is a new dated record that links back.
|
|
@@ -132,7 +132,7 @@ Every doc is a **truth document** (states current absolutes, topic-named, update
|
|
|
132
132
|
- `docs/history/changelog/`: Records. Append-only.
|
|
133
133
|
- `docs/history/migrations/`: Records. One-shot migration/upgrade runbooks — authored before execution, outcome-stamped and frozen after.
|
|
134
134
|
- `docs/history/research/{topic}/`: Deep-research artifacts — the dumped output of a research pass, one folder per topic (conventionally `README.md` synthesis + `findings.md` verified claims & citations + `sources.md`). A point-in-time, cited record — **not** a living authority doc: it owns no code (no `owns:` frontmatter) and is never edited to "stay current." A spec/plan links to it for grounding; a new question gets a new topic folder.
|
|
135
|
-
- `docs/
|
|
135
|
+
- `docs/research/{topic}-brainstorming/` → `docs/history/brainstorms/{topic}/`: Brainstorm design records — the committed Brainstorming-Mode session for a topic (`state.md` + `pillars/`), written by the `brainstorm` skill. An active session lives under `docs/research/`; on close + harvest it **moves** to `docs/history/brainstorms/` and is **kept** as the provenance the truth layer distils from. Each of the two folders carries a `Readme.md` index (the skill reads it at start instead of scanning). Author-created (never scaffolded empty), one folder per design conversation. Owns no code (no `owns:` frontmatter); the harvest copies its conclusions into `architecture/`/`history/`. Retire a topic's folder by hand only when the design line is dead. (Distinct from `docs/history/research/{topic}/` above — that is a frozen deep-research record, not a brainstorm session.)
|
|
136
136
|
- `docs/history/backlog.md`: Tracked work items. Append new items under appropriate priority.
|
|
137
137
|
|
|
138
138
|
## Health Log
|
|
@@ -40,7 +40,7 @@ Three peer modes plus a Completion step — enter wherever the user's thinking a
|
|
|
40
40
|
| **LLD** (low-level design) | new feature work | `lld-mode` agent + `documentation` skill | Plan |
|
|
41
41
|
| **Plan** | an LLD is approved | `documentation` skill → `docs/history/plans/YYYY-MM-DD-{slug}.md` | Completion |
|
|
42
42
|
|
|
43
|
-
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a bug fix, one button) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm:
|
|
43
|
+
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a bug fix, one button) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm: in-progress sessions live under `docs/research/`, harvested ones under `docs/history/brainstorms/`, harvested doctrine under `docs/architecture/`. Runtimes without slash commands: read `.claude/skills/brainstorm/SKILL.md` and follow it inline. The LLD is the feature doc itself — `docs/features/{feature}.md`, design intent first, extended in place at Completion.
|
|
44
44
|
|
|
45
45
|
**On Plan Completion:**
|
|
46
46
|
|
|
@@ -50,7 +50,7 @@ Three peer modes plus a Completion step — enter wherever the user's thinking a
|
|
|
50
50
|
|
|
51
51
|
**On Brainstorm Close** (a separate procedure — when a brainstorm session ends, not when a plan completes):
|
|
52
52
|
|
|
53
|
-
- The session record lives at `docs/
|
|
53
|
+
- The session record lives at `docs/research/{topic}-brainstorming/` (committed) while active; on close + harvest it moves to `docs/history/brainstorms/{topic}/` as provenance — see `docs/structure.md`.
|
|
54
54
|
- Harvest conclusions by scope: doctrine, glossary, non-goals, information-architecture changes → `docs/architecture/`; decisions → `docs/architecture/decisions/` (one AD per subject — revising a recorded subject updates its AD in place); backlog items → `docs/history/backlog.md`.
|
|
55
55
|
- Open questions block close.
|
|
56
56
|
|
|
@@ -131,24 +131,25 @@ docs/
|
|
|
131
131
|
├── features/ # Feature specs — the only first-class doc unit (flat; ownership in each doc's `owns:` frontmatter)
|
|
132
132
|
│ └── {group}/ # browse-only subfolder for grouping; NEVER a module; may carry a Readme.md
|
|
133
133
|
├── operations/ # Setup, development, deployment, CI/CD
|
|
134
|
-
├──
|
|
135
|
-
│ └── {topic}/
|
|
134
|
+
├── research/ # Optional — in-progress brainstorm sessions ({topic}-brainstorming/) + standing research; Readme.md is the index
|
|
135
|
+
│ └── {topic}-brainstorming/ # created by the `brainstorm` skill; NOT scaffolded empty; moves to history/brainstorms/ on harvest
|
|
136
136
|
├── history/
|
|
137
137
|
│ ├── CHANGELOG.md # Master changelog index
|
|
138
138
|
│ ├── changelog/ # Individual entries
|
|
139
139
|
│ ├── plans/ # Implementation plans (Status field required)
|
|
140
|
+
│ ├── brainstorms/ # Harvested brainstorm sessions ({topic}/), kept as provenance; Readme.md is the index
|
|
140
141
|
│ └── backlog.md # Tracked work items by priority (P0-P3)
|
|
141
142
|
├── memory/ # index.md, main.md, {agent}.md — project knowledge + per-agent strategy memory
|
|
142
143
|
└── tests/ # Optional, author-maintained — create only if test docs exist
|
|
143
144
|
```
|
|
144
145
|
|
|
145
|
-
There is **no `docs/routing.md`**, **no `docs/modules/{m}/`**, **no `docs/pillars/`**, **no `docs/boundaries/`**. Code ownership lives in feature `owns:` frontmatter; a module is a `module:` label, not a folder; boundaries are diagnosed from source; brainstorm records
|
|
146
|
+
There is **no `docs/routing.md`**, **no `docs/modules/{m}/`**, **no `docs/pillars/`**, **no `docs/boundaries/`**. Code ownership lives in feature `owns:` frontmatter; a module is a `module:` label, not a folder; boundaries are diagnosed from source; brainstorm records live in `docs/research/` (active) and `docs/history/brainstorms/` (harvested).
|
|
146
147
|
|
|
147
|
-
>
|
|
148
|
+
> Brainstorm records are **author-created, never scaffolded** — the `brainstorm` skill writes an active session at `docs/research/{topic}-brainstorming/` and moves it to `docs/history/brainstorms/{topic}/` on harvest, kept (committed) as the provenance the steering pillars distil from. Recognize both as canonical: never flag them as docs "outside the structure" and never delete them during reconcile. Each folder carries a `Readme.md` index — keep it in sync with the folders it lists (every session has a row; no stale or missing rows), since the `brainstorm` skill reads the indexes instead of scanning.
|
|
148
149
|
|
|
149
150
|
### Step B1 — Inventory and classify
|
|
150
151
|
|
|
151
|
-
Glob every markdown file. Classify each: Architecture, Features, Operations, Plans, Changelogs, Backlog, Brainstorm records (stay), Stale/Deprecated (delete), Root docs (stay). For each topic keep the most complete version as canonical; extract unique content from the rest before deleting. **No redirect stubs** — when you move a file, delete the original and fix every reference (cross-doc links, memory files). Anything already under `docs/
|
|
152
|
+
Glob every markdown file. Classify each: Architecture, Features, Operations, Plans, Changelogs, Backlog, Brainstorm records (stay), Stale/Deprecated (delete), Root docs (stay). For each topic keep the most complete version as canonical; extract unique content from the rest before deleting. **No redirect stubs** — when you move a file, delete the original and fix every reference (cross-doc links, memory files). Anything already under `docs/research/{topic}-brainstorming/` or `docs/history/brainstorms/{topic}/` is a **kept design record** — leave it in place untouched; never reclassify its pillars as Architecture/Stale or relocate them.
|
|
152
153
|
|
|
153
154
|
While reading each markdown doc to classify it, if the doc names a code symbol it asserts exists that **statically resolves to nothing**, note it as an observation for the Part A audit — **only** on stacks where static resolution is reliable (stay silent on codegen/reflection/DI/barrel stacks); scoped to docs already being read here, never a whole-repo prose sweep; **docs only**, never code-file comments.
|
|
154
155
|
|
|
@@ -166,7 +167,7 @@ This is what makes baseline more than a fresh scaffold. Detect old-shape artifac
|
|
|
166
167
|
| `docs/OWNERSHIP_INDEX.md` (legacy derived ownership index) | delete — ownership is the union of feature `owns:` frontmatter, surfaced by the generated index |
|
|
167
168
|
| `docs/operations/guardrails.md` | fold durable contract notes into `docs/architecture/` |
|
|
168
169
|
| `docs/architecture/overview.md` | split into `domain-model.md` / `glossary.md` / `non-goals.md` / `references.md` / `open-questions.md` |
|
|
169
|
-
| a
|
|
170
|
+
| a legacy `docs/brainstorm/{topic}/`, or a root `brainstorm/`/`brainstorming/` folder | move each **active** record to `docs/research/{topic}-brainstorming/` and each **harvested** one to `docs/history/brainstorms/{topic}/` (dropping the suffix); create/refresh both `Readme.md` indexes; delete the emptied folder |
|
|
170
171
|
| no `harness-version` in `structure.md` | stamp it (Step B4) |
|
|
171
172
|
|
|
172
173
|
### Step B3 — Present the reconcile plan, then execute
|
|
@@ -128,13 +128,13 @@ The writing posture is a **mode** chosen at intake, folded into `build.md`:
|
|
|
128
128
|
|
|
129
129
|
## Exit artifacts
|
|
130
130
|
|
|
131
|
-
The session writes a
|
|
131
|
+
The session writes a design record at `docs/research/{topic}-brainstorming/` (one folder per topic), moved to `docs/history/brainstorms/{topic}/` on harvest. At `stop`, after the final five-source sync (self-containment included — the record is verified standalone-readable exactly when it's about to become the only survivor of the session), the skill _offers_ what to **publish** from it (`AskUserQuestion`, multi-select — a session can emit more than one):
|
|
132
132
|
|
|
133
133
|
- **Source of truth** — one consolidated, README-style canonical doc for the thing designed (`templates/source-of-truth.md`); lands in the repo's feature/architecture doc home, else a topic `Readme.md`.
|
|
134
134
|
- **Plans** — one or more executable plan docs → `docs/history/plans/` (Status: Draft).
|
|
135
135
|
- **Harvest into the living docs** — conclusions dispersed by scope into ADs (architecture decisions), the domain model, and the backlog.
|
|
136
136
|
|
|
137
|
-
The
|
|
137
|
+
The session record is **kept** whichever you pick — never deleted; on harvest it moves to `docs/history/brainstorms/{topic}/` as the provenance every artifact traces back to. See `exit-artifacts.md`.
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -159,4 +159,4 @@ brainstorm/ # the skill (in .claude/skills/)
|
|
|
159
159
|
└── templates/ # pillar templates + evidence.md + source-of-truth.md, used in the record and at stop
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
The session itself is written to `docs/
|
|
162
|
+
The session itself is written to `docs/research/{topic}-brainstorming/` (committed; moved to `docs/history/brainstorms/{topic}/` on harvest) — not here.
|
|
@@ -42,6 +42,8 @@ Write as if the transcript is already deleted — it will be. The folder must le
|
|
|
42
42
|
|
|
43
43
|
## `start`
|
|
44
44
|
|
|
45
|
+
First, consult the two indexes — never scan folders. `docs/research/Readme.md` lists **active** sessions; `docs/history/brainstorms/Readme.md` lists **harvested** ones. Match the topic against both: an active match → resume it (§3, reusing its folder); a harvested match → surface that prior exploration and ask whether to reopen it (move the folder back to `docs/research/{topic}-brainstorming/`) or branch a fresh topic; no match → a new session. Then:
|
|
46
|
+
|
|
45
47
|
### 1. The entry gate
|
|
46
48
|
|
|
47
49
|
A session needs substance before it opens. Ask for a **basis**: a reference document (path or URL), or a one-shot brain dump of the whole idea, right now, in prose.
|
|
@@ -62,7 +64,7 @@ Then propose the **aspect map**: the thinking dimensions for _this specific idea
|
|
|
62
64
|
|
|
63
65
|
### 3. Bootstrap
|
|
64
66
|
|
|
65
|
-
Session folder: `docs/
|
|
67
|
+
Session folder: `docs/research/{topic}-brainstorming/` — a **committed** design record, one folder per design topic (slug the topic; confirm it in one line). Add a row to the `docs/research/Readme.md` index. Resume an existing topic by reusing its folder if it already holds a `state.md`. The record lives here while the session is active; on close **and** harvest it moves to `docs/history/brainstorms/{topic}/` as the provenance the exit artifacts distil from (see `stop` and `exit-artifacts.md`). Create only the pillars the complexity calls for, from `templates/` (never overwrite existing files; if a template is missing, create the file from the field lists in **Pillars**). `basis/` holds the frozen inputs; `evidence/` materializes on the first session-produced analysis (memory contract, rule 3). Write top-level `state.md`:
|
|
66
68
|
|
|
67
69
|
```
|
|
68
70
|
STATE: open
|
|
@@ -136,8 +138,8 @@ Zero means _"audited against the five sources and clean"_ — never _"nothing ca
|
|
|
136
138
|
|
|
137
139
|
1. Run a final sync (wait for any in-flight sync first). It audits all five sources — self-containment included, so the record is verified standalone-readable exactly when it is about to become the only survivor of the session.
|
|
138
140
|
2. **Coherent** → say so and proceed. **Questions open** → list them plainly (English first, codes in parentheses) and offer per question: resolve now (mini-converge) / park explicitly (backlog or non-goals, with reason) / leave open and stop anyway — the folder keeps full state and resumes exactly where it left off. Flag parked **self-containment** gaps distinctly: parking one means the record ships not fully standalone.
|
|
139
|
-
3. **Publish exit artifacts** — see `exit-artifacts.md`. Offer the choice (`AskUserQuestion`, multi-select): a **source of truth** (one consolidated README-style doc — the standing reference for the thing designed), **plans** (executable work → `docs/history/plans/`), and/or **harvest into the living docs** (conclusions dispersed by scope into ADs — architecture decisions — the domain model, the backlog). The
|
|
140
|
-
4. Write `STATE: closed` + one-line reason. Print: _"Run `/brainstorm start` to resume."_
|
|
141
|
+
3. **Publish exit artifacts** — see `exit-artifacts.md`. Offer the choice (`AskUserQuestion`, multi-select): a **source of truth** (one consolidated README-style doc — the standing reference for the thing designed), **plans** (executable work → `docs/history/plans/`), and/or **harvest into the living docs** (conclusions dispersed by scope into ADs — architecture decisions — the domain model, the backlog). The session record is **kept** (committed) whichever you pick — it is the provenance every artifact traces back to and the seed the next session resumes from.
|
|
142
|
+
4. Write `STATE: closed` + one-line reason. If the harvest is complete (conclusions dispersed into the living docs), **move** the folder from `docs/research/{topic}-brainstorming/` to `docs/history/brainstorms/{topic}/` and update both indexes — drop its row from `docs/research/Readme.md`, add it to `docs/history/brainstorms/Readme.md`. If the session is only paused (questions parked, more to come), leave it in `docs/research/` and update its index row's status. Print: _"Run `/brainstorm start` to resume."_
|
|
141
143
|
|
|
142
144
|
## Conduct — holds for the whole session
|
|
143
145
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Exit artifacts
|
|
2
2
|
|
|
3
|
-
What `/brainstorm stop` publishes from a closed session. The
|
|
3
|
+
What `/brainstorm stop` publishes from a closed session. The session record is **kept
|
|
4
4
|
either way** — committed provenance, never a scratchpad. Exit artifacts copy the session's _conclusions_
|
|
5
|
-
outward into the form the work needs; the record stays as the source they trace back to
|
|
5
|
+
outward into the form the work needs; the record stays as the source they trace back to — and, once
|
|
6
|
+
harvested, moves from `docs/research/{topic}-brainstorming/` to `docs/history/brainstorms/{topic}/`.
|
|
6
7
|
|
|
7
8
|
At `stop`, after the final sync, **offer the artifact choice** (`AskUserQuestion`, multi-select — a session
|
|
8
9
|
can publish more than one):
|
|
@@ -54,9 +55,12 @@ not folders — a finding scoped to one module still lands in `docs/architecture
|
|
|
54
55
|
|
|
55
56
|
Append a changelog entry at `docs/history/changelog/YYYY-MM-DD-brainstorm-{slug}.md` listing what was published where.
|
|
56
57
|
|
|
57
|
-
## After publishing —
|
|
58
|
+
## After publishing — move the record to history
|
|
58
59
|
|
|
59
|
-
**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
**Move `docs/research/{topic}-brainstorming/` → `docs/history/brainstorms/{topic}/`, and update both
|
|
61
|
+
`Readme.md` indexes** (drop the row from `docs/research/Readme.md`, add it to
|
|
62
|
+
`docs/history/brainstorms/Readme.md`). The exit artifacts now carry the distilled conclusions; the record
|
|
63
|
+
itself is **kept** — never deleted — but as harvested provenance it belongs under `docs/history/brainstorms/`:
|
|
64
|
+
a traceable source for every published headline, and the seed the next `/brainstorm start` on this topic
|
|
65
|
+
resumes from. A session that is only **paused** (not harvested) stays in `docs/research/`. Retire a topic's
|
|
66
|
+
folder by hand only when the design line is truly dead.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
> This is a **source-of-truth doc**: the standing, canonical reference for [thing]. Write it like a
|
|
4
4
|
> README — present tense, reader-first, the thing described as it _is_. It is **not a plan** (no steps,
|
|
5
5
|
> status, or sequencing — those go to `docs/history/plans/`) and **not the brainstorm record** (no
|
|
6
|
-
> `Q-N`/`D-N` codes, no "Why / How to apply" ledger, no rejected alternatives — those stay in
|
|
7
|
-
> `docs/
|
|
6
|
+
> `Q-N`/`D-N` codes, no "Why / How to apply" ledger, no rejected alternatives — those stay in the harvested
|
|
7
|
+
> record at `docs/history/brainstorms/{topic}/` and any ADs). One document; if a section outgrows it, link out, don't sprawl.
|
|
8
8
|
>
|
|
9
9
|
> **Placement.** In a repo with a feature-doc system this lands as `docs/features/{slug}.md` and carries
|
|
10
10
|
> that system's frontmatter (`owns:` / `module:` / `keywords:` / `status:`). Cross-cutting → `docs/architecture/{slug}.md`.
|
|
@@ -41,9 +41,9 @@ and what is explicitly out of scope.]
|
|
|
41
41
|
|
|
42
42
|
## Open questions
|
|
43
43
|
|
|
44
|
-
[One line pointing at `docs/
|
|
44
|
+
[One line pointing at `docs/history/brainstorms/{topic}/questions.md` if any remain open. Omit if none.]
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
48
|
-
_Distilled from `docs/
|
|
48
|
+
_Distilled from `docs/history/brainstorms/{topic}/`. That record holds the rationale, the rejected alternatives,
|
|
49
49
|
and the provenance for everything above._
|
|
@@ -21,7 +21,7 @@ Every document is exactly one of two things. Decide which before writing a word
|
|
|
21
21
|
| Named by | Topic: `auth.md`, `AD-003-persistence.md` | Date: `YYYY-MM-DD-slug.md` (or append position) |
|
|
22
22
|
| On change | Body rewritten in place the moment reality changes | Never edited — frozen at completion or append-only |
|
|
23
23
|
| Read to | Act correctly today | Trace provenance, diagnose, audit |
|
|
24
|
-
| Lives in | `docs/features/`, `docs/architecture/`, `docs/operations/`, `docs/tests/`, READMEs | `docs/history/` (plans, changelog, research, migrations), `docs/
|
|
24
|
+
| Lives in | `docs/features/`, `docs/architecture/`, `docs/operations/`, `docs/tests/`, READMEs | `docs/history/` (plans, changelog, brainstorms, research, migrations), `docs/research/`, `docs/memory/` |
|
|
25
25
|
|
|
26
26
|
The two guarantees are complementary and both break on mixing: a reader holding a **truth document** must never need history to interpret it; a reader holding a **record** must be able to trust it was never rewritten. So the natures never share a document body.
|
|
27
27
|
|
|
@@ -111,12 +111,12 @@ Each topic has one canonical location. Read from here, not from plans or changel
|
|
|
111
111
|
| Change records | `docs/history/changelog/` | Individual entries |
|
|
112
112
|
| Migration runbooks | `docs/history/migrations/` | YYYY-MM-DD-name.md |
|
|
113
113
|
| Deep-research artifacts | `docs/history/research/{topic}/` | README.md + findings.md + sources.md |
|
|
114
|
-
| Brainstorm design records | `docs/
|
|
114
|
+
| Brainstorm design records | `docs/research/{topic}-brainstorming/` (active) → `docs/history/brainstorms/{topic}/` (harvested) | state.md + pillars/ |
|
|
115
115
|
| Backlog | `docs/history/` | backlog.md |
|
|
116
116
|
|
|
117
117
|
## The Two Natures
|
|
118
118
|
|
|
119
|
-
Every doc is a **truth document** (states current absolutes, topic-named, updated in place) or a **record** (dated account of activity, frozen or append-only). `architecture/`, `features/`, `operations/`, `tests/` hold truth; `history/`, `
|
|
119
|
+
Every doc is a **truth document** (states current absolutes, topic-named, updated in place) or a **record** (dated account of activity, frozen or append-only). `architecture/`, `features/`, `operations/`, `tests/` hold truth; `history/`, `research/`, `memory/` hold records.
|
|
120
120
|
|
|
121
121
|
- Truth documents are rewritten in place when reality changes — the change-story goes to a changelog entry, never into the truth doc's body.
|
|
122
122
|
- Records freeze: plans at `Complete`/`Abandoned`, changelog entries and migration runbooks once written/executed. A scope change is a new dated record that links back.
|
|
@@ -132,7 +132,7 @@ Every doc is a **truth document** (states current absolutes, topic-named, update
|
|
|
132
132
|
- `docs/history/changelog/`: Records. Append-only.
|
|
133
133
|
- `docs/history/migrations/`: Records. One-shot migration/upgrade runbooks — authored before execution, outcome-stamped and frozen after.
|
|
134
134
|
- `docs/history/research/{topic}/`: Deep-research artifacts — the dumped output of a research pass, one folder per topic (conventionally `README.md` synthesis + `findings.md` verified claims & citations + `sources.md`). A point-in-time, cited record — **not** a living authority doc: it owns no code (no `owns:` frontmatter) and is never edited to "stay current." A spec/plan links to it for grounding; a new question gets a new topic folder.
|
|
135
|
-
- `docs/
|
|
135
|
+
- `docs/research/{topic}-brainstorming/` → `docs/history/brainstorms/{topic}/`: Brainstorm design records — the committed Brainstorming-Mode session for a topic (`state.md` + `pillars/`), written by the `brainstorm` skill. An active session lives under `docs/research/`; on close + harvest it **moves** to `docs/history/brainstorms/` and is **kept** as the provenance the truth layer distils from. Each of the two folders carries a `Readme.md` index (the skill reads it at start instead of scanning). Author-created (never scaffolded empty), one folder per design conversation. Owns no code (no `owns:` frontmatter); the harvest copies its conclusions into `architecture/`/`history/`. Retire a topic's folder by hand only when the design line is dead. (Distinct from `docs/history/research/{topic}/` above — that is a frozen deep-research record, not a brainstorm session.)
|
|
136
136
|
- `docs/history/backlog.md`: Tracked work items. Append new items under appropriate priority.
|
|
137
137
|
|
|
138
138
|
## Health Log
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nurix/etna",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.22",
|
|
4
4
|
"description": "Bootstrap a project with a Nurix harness — copies the harness's CLAUDE.md, skills, agents, rules, and hooks directly into the project from a bundled payload (no marketplace fetch, no network).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|