@nusoft/nuos-build-catalogue 0.11.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/cli.js +52 -39
  2. package/dist/commands/init.js +119 -42
  3. package/dist/commands/plan.d.ts +12 -0
  4. package/dist/commands/plan.js +83 -0
  5. package/dist/commands/write.js +16 -5
  6. package/dist/embedder/ollama.d.ts +14 -8
  7. package/dist/embedder/ollama.js +15 -9
  8. package/dist/path-resolution.d.ts +68 -0
  9. package/dist/path-resolution.js +147 -0
  10. package/dist/runtime/ac-parse.js +10 -6
  11. package/dist/runtime/markdown-edit.d.ts +5 -0
  12. package/dist/runtime/markdown-edit.js +13 -6
  13. package/dist/runtime/mis-adapter.js +7 -2
  14. package/package.json +2 -2
  15. package/templates/hooks/install-hooks.sh +44 -0
  16. package/templates/hooks/post-commit +96 -0
  17. package/templates/hooks/pre-commit +162 -0
  18. package/templates/protocols/end-of-session.md +101 -13
  19. package/templates/protocols/persona-new.md +64 -30
  20. package/templates/protocols/plan-orientation.md +122 -0
  21. package/templates/protocols/start-of-session.md +52 -13
  22. package/templates/protocols/wu-new.md +75 -50
  23. package/templates/starter-kit/docs/build/GLOSSARY.md +115 -0
  24. package/templates/starter-kit/docs/build/STATE.md +30 -16
  25. package/templates/starter-kit/docs/build/WELCOME.md +79 -0
  26. package/templates/starter-kit/docs/build/architecture/_index.md +39 -0
  27. package/templates/starter-kit/docs/build/architecture/module-template.md +47 -0
  28. package/templates/starter-kit/docs/build/contracts/_index.md +39 -0
  29. package/templates/starter-kit/docs/build/contracts/contract-template.md +64 -0
  30. package/templates/starter-kit/docs/build/decisions/_index.md +21 -17
  31. package/templates/starter-kit/docs/build/design-system/_index.md +57 -0
  32. package/templates/starter-kit/docs/build/design-system/accessibility.md +77 -0
  33. package/templates/starter-kit/docs/build/design-system/components/_index.md +29 -0
  34. package/templates/starter-kit/docs/build/design-system/components/_template.md +60 -0
  35. package/templates/starter-kit/docs/build/design-system/patterns/_index.md +37 -0
  36. package/templates/starter-kit/docs/build/design-system/patterns/_template.md +57 -0
  37. package/templates/starter-kit/docs/build/design-system/tokens-colour.md +52 -0
  38. package/templates/starter-kit/docs/build/design-system/tokens-motion.md +42 -0
  39. package/templates/starter-kit/docs/build/design-system/tokens-radius-elevation.md +34 -0
  40. package/templates/starter-kit/docs/build/design-system/tokens-spacing.md +48 -0
  41. package/templates/starter-kit/docs/build/design-system/tokens-typography.md +46 -0
  42. package/templates/starter-kit/docs/build/design-system/voice.md +53 -0
  43. package/templates/starter-kit/docs/build/maps/01-template.md +15 -112
  44. package/templates/starter-kit/docs/build/maps/02-template.md +52 -0
  45. package/templates/starter-kit/docs/build/maps/03-template.md +46 -0
  46. package/templates/starter-kit/docs/build/maps/99-template-power-user-operational-plan.md +126 -0
  47. package/templates/starter-kit/docs/build/maps/_index.md +17 -52
  48. package/templates/starter-kit/docs/build/open-questions/_index.md +27 -13
  49. package/templates/starter-kit/docs/build/personas/_index.md +26 -60
  50. package/templates/starter-kit/docs/build/risks/_index.md +20 -13
  51. package/templates/starter-kit/docs/build/sessions/_index.md +18 -16
  52. package/templates/starter-kit/docs/build/ui-ux/_index.md +48 -0
  53. package/templates/starter-kit/docs/build/ui-ux/surface-template.md +72 -0
  54. package/templates/starter-kit/docs/build/work-units/001-template-simple.md +43 -0
  55. package/templates/starter-kit/docs/build/work-units/_index.md +18 -20
  56. package/templates/starter-kit/methodfile.json +19 -8
  57. /package/templates/starter-kit/docs/build/work-units/{001-template.md → 001-template-full.md} +0 -0
@@ -1,126 +1,29 @@
1
- # Map [number][title]
1
+ # Map 1The Horizon
2
2
 
3
- > **The canonical operational plan for [workstream name].** Sequenced work units from "today" to "[goal state]", each with phase-step decomposition, contracts realised, and verification gates anchored in target-repo files. If a step isn't here, it isn't planned. This map is the single source of truth for [workstream name] — read this before any other planning surface.
3
+ > The whole journey from where we are now to a working {{PROJECT_NAME}}. One picture of the whole forest. No jargon. If you read only one map, read this one.
4
4
 
5
- > Replace the bracketed placeholders. Delete this hint block.
5
+ > *This template is filled in during the Orientation phase of planning. The AI walks you through the questions in conversation; you don't need to write this by hand.*
6
6
 
7
- ## How to read this map
7
+ ## What this project is
8
8
 
9
- The catalogue's decomposition (which this map operationalises):
9
+ [One paragraph in plain language. Describe what {{PROJECT_NAME}} is for someone who has never heard of it. What does it do? What problem does it solve? Why does it need to exist?]
10
10
 
11
- ```
12
- Contracts deep-module surfaces — what the system IS
13
-
14
- │ realised by
15
-
16
- Maps strategic plan — when, in what order, why
17
-
18
- │ ordering
19
-
20
- Work units (WUs) executable units against contract surfaces — what ships
21
-
22
- │ decomposed into
23
-
24
- Phases sub-units when a WU is too large for one shot
25
-
26
- │ decomposed into
27
-
28
- Phase steps the actual moves; each has acceptance + verification gate
29
- ```
11
+ ## Who it's for
30
12
 
31
- Maps own **sequencing and outline**. WU files own **acceptance design and execution log**. Contracts own **the surface specs**. Sessions own **the temporal history**. No other planning artefact.
13
+ [List the personas filed in `personas/`. One line per person, with their P-NNN handle and a sentence about who they are. The personas register has the detail.]
32
14
 
33
- ## The five agentic-age patterns this map enforces
15
+ ## What "done" looks like
34
16
 
35
- These are the load-bearing discipline for agent-led building (codified in [`THE-NUOS-BUILD-METHOD.md`](https://github.com/DarrenJCoxon/nuos/blob/main/docs/THE-NUOS-BUILD-METHOD.md) §post-Phase-3 epistemic discipline):
17
+ [Describe the destination. Not how you'll get there — the place itself. When {{PROJECT_NAME}} is finished, what's true in the world that wasn't true before? Write this as 3-6 short sentences a layperson can read.]
36
18
 
37
- 1. **Verification gates anchored in target-repo files** — every phase step names a specific file/grep/test as acceptance proof. Closes the spec-vs-reality drift loop.
38
- 2. **Maps as single canonical plan** — story-level detail lives here, not in side docs. Closes the proliferation loop.
39
- 3. **Contracts as immutable truth** — phase steps cite the contract surface they realise. Closes the "agent makes things up" loop.
40
- 4. **Hedge words as stop signal** — "likely", "presumably", "should be" indicate a missing verification step.
41
- 5. **Design alternatives before implementation** — Ousterhout's "design it twice"; produce at least two fundamentally different designs, evaluate, then pick or hybrid before generating non-trivial implementation. Phase steps that generate implementation carry an implicit prerequisite: design alternatives recorded in WU notes.
19
+ ## The shape of the journey
42
20
 
43
- ## Where we are now ([date])
21
+ [Two or three paragraphs in plain language describing the major stages — not by name yet, in narrative form. *"First we'll build X so that Y is possible. Once Y is in place, we can do Z, which is what really matters for [persona]. The last stretch is making it reliable enough for real classrooms."* — that kind of writing. The map should read like a story, not a Gantt chart.]
44
22
 
45
- | WU | Title | Status | Repo / branch |
46
- |---|---|---|---|
47
- | [WU number] | [title] | [🔵 ready / 🟡 in flight / 🟣 in_review / ✅ done / 🔴 blocked] | [repo + branch] |
23
+ ## What's not in scope
48
24
 
49
- ## What "[goal state]" means
25
+ [List 3-5 things that *might* be confused with the project but aren't part of it. This is load-bearing — every project has things adjacent to it that people will assume are included. Naming them as out-of-scope prevents drift.]
50
26
 
51
- The workstream is **complete** when all of the following hold simultaneously:
27
+ ## How this map changes
52
28
 
53
- 1. [Outcome 1]
54
- 2. [Outcome 2]
55
- 3. [Outcome 3]
56
- 4. ...
57
-
58
- (List the verifiable end-state of the workstream. Each outcome should be an observable fact about the system, not a process step.)
59
-
60
- ## Critical path
61
-
62
- ```
63
- [diagram of WU sequencing with dependencies — use ASCII art or describe in prose]
64
- ```
65
-
66
- ---
67
-
68
- ## WU [number] — [title]
69
-
70
- | Field | Value |
71
- |---|---|
72
- | Contracts realised | [which contract surface(s) this WU fulfils] |
73
- | Status | [🔵 / 🟡 / 🟣 / ✅ / 🔴] |
74
- | Repo | [repo + branch] |
75
- | Estimate | [working days] |
76
- | Depends on | [upstream WUs / npm publishes / external] |
77
-
78
- **Design alternatives considered (Pattern N — before any non-trivial implementation step):**
79
-
80
- > If this WU includes any non-trivial architectural choice (schema, migration, integration shape, adapter, RBAC, audit, retention, error-handling), record at least two fundamentally different design candidates here before phase steps that generate implementation. State the chosen one and why. Delete this block if the WU is purely incremental work against an already-decided design.
81
-
82
- - **Option A:** [first fundamentally different design]. Trade-offs: [...]. Errors created: [...].
83
- - **Option B:** [second fundamentally different design]. Trade-offs: [...]. Errors created: [...].
84
- - *(Option C if useful)*
85
- - **Chosen:** [A / B / C / hybrid] because [...]. Records as: [WU notes / D-NNN decision file].
86
-
87
- | # | Phase step | Acceptance | Verification gate |
88
- |---|---|---|---|
89
- | 1 | [what move is being made] | [what proves it produced the intended outcome] | [specific file/grep/test the operator runs to confirm] |
90
- | 2 | ... | ... | ... |
91
-
92
- **Done when:** [the overall WU acceptance — usually "all N steps complete + canonical green line + integration test"].
93
-
94
- **Risks:** [anything that could derail the WU; mitigations].
95
-
96
- ---
97
-
98
- ## WU [number] — [title]
99
-
100
- [Repeat the structure above for each WU on the critical path. Each WU with non-trivial design choices gets its own "Design alternatives considered" block; routine incremental WUs can omit it.]
101
-
102
- ---
103
-
104
- ## What runs in parallel
105
-
106
- [List independent workstreams that don't gate the critical path.]
107
-
108
- ## Trigger conditions for deferred WUs
109
-
110
- [List WUs that are deferred and what unblocks them.]
111
-
112
- ## What this map is not
113
-
114
- - It does NOT describe [out-of-scope topic 1] — see [other doc].
115
- - It does NOT cover [out-of-scope topic 2] — see [other doc].
116
-
117
- ## How to use this map
118
-
119
- - **At session start** — read this map plus the active WU's spec file. The map tells you which phase step is next + the verification gate; the WU spec tells you the deeper acceptance design.
120
- - **Mid-step** — if you find yourself writing a hedge word ("likely", "presumably", "should be"), stop. Run the verification gate's grep/test/file-read first. Replace the hedge with the result.
121
- - **At session end** — flip phase-step status here; if scope changed, edit the step description here (not in a side doc).
122
- - **When a phase completes** — flip the WU's phase status; update STATE.md to reflect; confirm the dependency graph still holds.
123
-
124
- ## Pointers
125
-
126
- - [List relevant WU files, contracts, decisions, prior maps]
29
+ This map is updated **only when the destination changes**. If "done" looks different than it did six months ago, that's a real horizon shift and the map gets rewritten. Day-to-day changes belong in Map 3 (the near-term plan) or in work-unit notes — not here.
@@ -0,0 +1,52 @@
1
+ # Map 2 — Phases in Detail
2
+
3
+ > The middle zoom: how the journey from Map 1 breaks into phases, what each phase delivers, and what has to be true to enter or exit each one.
4
+
5
+ > *This template is filled in during the Maps phase of planning (phase D), after architecture and contracts are in place. The AI walks you through it.*
6
+
7
+ ## Phases at a glance
8
+
9
+ | # | Phase | What it delivers | Entry condition | Exit condition |
10
+ | --- | --- | --- | --- | --- |
11
+ | 0 | Foundation | The basic scaffolding (project set up, persona established, first decisions filed) | _project started_ | Catalogue has substance: 1+ persona, Map 1 done |
12
+ | 1 | [phase name] | [what's shipped at end of phase] | [what must be true to start] | [what must be true to finish] |
13
+ | 2 | [phase name] | [...] | [...] | [...] |
14
+ | ... | | | | |
15
+
16
+ [Fill in the phases the AI walks you through. Most projects have 3-6 phases. The last phase usually ends at "ready to ship to first real users".]
17
+
18
+ ## Phase 0 — Foundation
19
+
20
+ **What ships in this phase:** [the project's basic understanding of itself — persona, horizon, initial architecture]
21
+
22
+ **Entry condition:** A blank project; nothing yet decided.
23
+
24
+ **Exit condition:** All of:
25
+
26
+ - At least one persona filed
27
+ - Map 1 (the horizon) written
28
+ - Architecture and contracts roughed out
29
+ - Initial design system tokens chosen
30
+ - First few work units identified
31
+
32
+ This phase is the planning arc itself. Phase 1 is where the first real work unit ships.
33
+
34
+ ## Phase 1 — [phase name]
35
+
36
+ [Each subsequent phase gets a section like this. Include:]
37
+
38
+ **What ships in this phase:** [end state]
39
+
40
+ **Entry condition:** [what has to be true to start]
41
+
42
+ **Exit condition:** [what has to be true to finish — verifiable, not aspirational]
43
+
44
+ **Work units expected to ship in this phase:** [list of WU handles; the work-units register has the detail]
45
+
46
+ **Risks during this phase:** [link to R-NNN entries in the risks register that apply specifically here]
47
+
48
+ ## How phases work in practice
49
+
50
+ Phases are signposts, not gates. Work doesn't strictly stop at a phase boundary — but the catalogue's progress is best measured by which phases have completed. When you finish a phase, update STATE.md, file a session log noting the phase transition, and Map 3 (the near-term plan) gets a fresh outlook for the next phase.
51
+
52
+ A phase can be revised. If you discover during Phase 2 that an assumption from Phase 1 was wrong, file the open question, file a decision if you've now resolved it, and update Map 2 to reflect what you actually know. The map's job is to match reality, not to be right the first time.
@@ -0,0 +1,46 @@
1
+ # Map 3 — The Near-Term Plan
2
+
3
+ > The day-by-day or week-by-week view. What's happening right now and over the next few weeks. This map ages fast and gets updated often.
4
+
5
+ > *This template is filled in during the Maps phase of planning (phase D), after Map 2 exists. The AI walks you through it.*
6
+
7
+ ## Where we are
8
+
9
+ **Today's date:** {{TODAY}}
10
+ **Current phase:** Phase 0 — Foundation (per Map 2)
11
+ **Active work unit:** [WU handle and title]
12
+ **Sessions this week:** [count or list]
13
+
14
+ ## This week
15
+
16
+ [Day-by-day or task-by-task list of what's planned to happen over the next 5-7 days. Be specific. "Build the morning briefing surface" is too vague; "Map 3 row: Tuesday afternoon — write the morning-briefing surface file in ui-ux/, then file 3 work units against it" is the right level of detail.]
17
+
18
+ | When | What | Who | Status |
19
+ | --- | --- | --- | --- |
20
+ | Mon | [task] | [person or "self"] | 🔵 / 🟡 / ✅ / 🔴 |
21
+ | Tue | [task] | [...] | [...] |
22
+ | Wed | [...] | [...] | [...] |
23
+ | Thu | [...] | [...] | [...] |
24
+ | Fri | [...] | [...] | [...] |
25
+
26
+ ## This month
27
+
28
+ [Higher-level: the 4-6 outcomes you'd like to see ship by the end of this month. Each should be a WU handle.]
29
+
30
+ - [WU handle] — [title] — [why this month, what depends on it]
31
+ - [WU handle] — [title] — [...]
32
+ - [...]
33
+
34
+ ## What's at risk this period
35
+
36
+ [Anything that could derail the plan above. Link to risks in `risks/_index.md`. If a risk is high-severity right now, surface it here even if it's "always" tracked.]
37
+
38
+ ## What follows
39
+
40
+ [One paragraph: what comes after this period. If this week is the last week of Phase 1, what does the first week of Phase 2 look like? Helps you wind down current work in the right shape.]
41
+
42
+ ## How this map gets updated
43
+
44
+ Every session, by `/end-of-session`. Anything started, finished, or pushed gets reflected. **The map is the truth about what's happening now; not what we wished was happening.** If reality and the map diverge, the map gets updated to match reality — and any decisions or risks that explain the divergence are filed.
45
+
46
+ When this week ends, the row table moves to next week. Past weeks land in a session log entry summarising what shipped; no need to keep historical map rows.
@@ -0,0 +1,126 @@
1
+ # Map [number] — [title]
2
+
3
+ > **The canonical operational plan for [workstream name].** Sequenced work units from "today" to "[goal state]", each with phase-step decomposition, contracts realised, and verification gates anchored in target-repo files. If a step isn't here, it isn't planned. This map is the single source of truth for [workstream name] — read this before any other planning surface.
4
+
5
+ > Replace the bracketed placeholders. Delete this hint block.
6
+
7
+ ## How to read this map
8
+
9
+ The catalogue's decomposition (which this map operationalises):
10
+
11
+ ```
12
+ Contracts deep-module surfaces — what the system IS
13
+
14
+ │ realised by
15
+
16
+ Maps strategic plan — when, in what order, why
17
+
18
+ │ ordering
19
+
20
+ Work units (WUs) executable units against contract surfaces — what ships
21
+
22
+ │ decomposed into
23
+
24
+ Phases sub-units when a WU is too large for one shot
25
+
26
+ │ decomposed into
27
+
28
+ Phase steps the actual moves; each has acceptance + verification gate
29
+ ```
30
+
31
+ Maps own **sequencing and outline**. WU files own **acceptance design and execution log**. Contracts own **the surface specs**. Sessions own **the temporal history**. No other planning artefact.
32
+
33
+ ## The five agentic-age patterns this map enforces
34
+
35
+ These are the load-bearing discipline for agent-led building (codified in [`THE-NUOS-BUILD-METHOD.md`](https://github.com/DarrenJCoxon/nuos/blob/main/docs/THE-NUOS-BUILD-METHOD.md) §post-Phase-3 epistemic discipline):
36
+
37
+ 1. **Verification gates anchored in target-repo files** — every phase step names a specific file/grep/test as acceptance proof. Closes the spec-vs-reality drift loop.
38
+ 2. **Maps as single canonical plan** — story-level detail lives here, not in side docs. Closes the proliferation loop.
39
+ 3. **Contracts as immutable truth** — phase steps cite the contract surface they realise. Closes the "agent makes things up" loop.
40
+ 4. **Hedge words as stop signal** — "likely", "presumably", "should be" indicate a missing verification step.
41
+ 5. **Design alternatives before implementation** — Ousterhout's "design it twice"; produce at least two fundamentally different designs, evaluate, then pick or hybrid before generating non-trivial implementation. Phase steps that generate implementation carry an implicit prerequisite: design alternatives recorded in WU notes.
42
+
43
+ ## Where we are now ([date])
44
+
45
+ | WU | Title | Status | Repo / branch |
46
+ |---|---|---|---|
47
+ | [WU number] | [title] | [🔵 ready / 🟡 in flight / 🟣 in_review / ✅ done / 🔴 blocked] | [repo + branch] |
48
+
49
+ ## What "[goal state]" means
50
+
51
+ The workstream is **complete** when all of the following hold simultaneously:
52
+
53
+ 1. [Outcome 1]
54
+ 2. [Outcome 2]
55
+ 3. [Outcome 3]
56
+ 4. ...
57
+
58
+ (List the verifiable end-state of the workstream. Each outcome should be an observable fact about the system, not a process step.)
59
+
60
+ ## Critical path
61
+
62
+ ```
63
+ [diagram of WU sequencing with dependencies — use ASCII art or describe in prose]
64
+ ```
65
+
66
+ ---
67
+
68
+ ## WU [number] — [title]
69
+
70
+ | Field | Value |
71
+ |---|---|
72
+ | Contracts realised | [which contract surface(s) this WU fulfils] |
73
+ | Status | [🔵 / 🟡 / 🟣 / ✅ / 🔴] |
74
+ | Repo | [repo + branch] |
75
+ | Estimate | [working days] |
76
+ | Depends on | [upstream WUs / npm publishes / external] |
77
+
78
+ **Design alternatives considered (Pattern N — before any non-trivial implementation step):**
79
+
80
+ > If this WU includes any non-trivial architectural choice (schema, migration, integration shape, adapter, RBAC, audit, retention, error-handling), record at least two fundamentally different design candidates here before phase steps that generate implementation. State the chosen one and why. Delete this block if the WU is purely incremental work against an already-decided design.
81
+
82
+ - **Option A:** [first fundamentally different design]. Trade-offs: [...]. Errors created: [...].
83
+ - **Option B:** [second fundamentally different design]. Trade-offs: [...]. Errors created: [...].
84
+ - *(Option C if useful)*
85
+ - **Chosen:** [A / B / C / hybrid] because [...]. Records as: [WU notes / D-NNN decision file].
86
+
87
+ | # | Phase step | Acceptance | Verification gate |
88
+ |---|---|---|---|
89
+ | 1 | [what move is being made] | [what proves it produced the intended outcome] | [specific file/grep/test the operator runs to confirm] |
90
+ | 2 | ... | ... | ... |
91
+
92
+ **Done when:** [the overall WU acceptance — usually "all N steps complete + canonical green line + integration test"].
93
+
94
+ **Risks:** [anything that could derail the WU; mitigations].
95
+
96
+ ---
97
+
98
+ ## WU [number] — [title]
99
+
100
+ [Repeat the structure above for each WU on the critical path. Each WU with non-trivial design choices gets its own "Design alternatives considered" block; routine incremental WUs can omit it.]
101
+
102
+ ---
103
+
104
+ ## What runs in parallel
105
+
106
+ [List independent workstreams that don't gate the critical path.]
107
+
108
+ ## Trigger conditions for deferred WUs
109
+
110
+ [List WUs that are deferred and what unblocks them.]
111
+
112
+ ## What this map is not
113
+
114
+ - It does NOT describe [out-of-scope topic 1] — see [other doc].
115
+ - It does NOT cover [out-of-scope topic 2] — see [other doc].
116
+
117
+ ## How to use this map
118
+
119
+ - **At session start** — read this map plus the active WU's spec file. The map tells you which phase step is next + the verification gate; the WU spec tells you the deeper acceptance design.
120
+ - **Mid-step** — if you find yourself writing a hedge word ("likely", "presumably", "should be"), stop. Run the verification gate's grep/test/file-read first. Replace the hedge with the result.
121
+ - **At session end** — flip phase-step status here; if scope changed, edit the step description here (not in a side doc).
122
+ - **When a phase completes** — flip the WU's phase status; update STATE.md to reflect; confirm the dependency graph still holds.
123
+
124
+ ## Pointers
125
+
126
+ - [List relevant WU files, contracts, decisions, prior maps]
@@ -1,63 +1,28 @@
1
- # Maps — index
1
+ # Maps
2
2
 
3
- > Maps are the canonical operational plan for a project running the NuOS Build Method. **Story-level detail lives in maps**, not in fragmented planning docs. If a phase step isn't here, it isn't planned. The maps are the single source of truth for sequencing.
3
+ A **map** is a picture of where the project is going. Three maps cover most projects each at a different zoom level:
4
4
 
5
- ## Why maps matter (the post-Phase-3 evolution)
5
+ - **Map 1 The Horizon.** The whole journey, in plain language. What this project is, who it serves, what "done" looks like. Written once and updated only when the destination genuinely changes. Read this if you only read one thing.
6
+ - **Map 2 — Phases in Detail.** What each phase delivers, with entry and exit conditions. The mid-zoom view: how the journey breaks into stages.
7
+ - **Map 3 — The Near-Term Plan.** What's happening this week, this month. Day-by-day where possible. Updated frequently — this map ages quickly and that's correct.
6
8
 
7
- The NuOS catalogue has many surfaces — decisions, contracts, work units, sessions, risks, open questions. Maps are what stops planning from sprawling across all of them. Maps own:
9
+ See [the glossary](../GLOSSARY.md#map) for the full definition.
8
10
 
9
- - **Sequencing** — which work unit comes when, with explicit dependencies
10
- - **Phase-step decomposition** — when a WU is too large for one shot, the phase steps live here, each with acceptance + verification gate
11
- - **Contracts realised** — every WU on the path cites the contract surface(s) it fulfils
11
+ ## Index
12
12
 
13
- This is one of the four agentic-age patterns codified in the NuOS Build Method (see [`docs/THE-NUOS-BUILD-METHOD.md`](https://github.com/DarrenJCoxon/nuos/blob/main/docs/THE-NUOS-BUILD-METHOD.md) §post-Phase-3). The pattern: **maps as single canonical plan** closes the proliferation loop. A fresh session — human or agent — should be able to read STATE.md + the active map and have full operational context.
13
+ | Map | Title | Last updated |
14
+ | --- | --- | --- |
15
+ | _none yet — the planning protocol fills these in during phases A (Map 1) and D (Maps 2 + 3)_ | | |
14
16
 
15
- ## Map conventions
17
+ ## When maps get written
16
18
 
17
- - **Map 1 the horizon.** The whole project journey, narrative form. Layperson-readable. If you read only one map, this is it.
18
- - **Map 2 phases-in-detail (optional).** When the project has clearly separated phases (e.g., NuOS's Phases 0–F), this map gives mid-level detail per phase.
19
- - **Map N — canonical operational plan(s).** One per major workstream. Story-level detail with verification gates. This is where the active work lives.
19
+ - **Map 1** is written during the **Orientation** phase of the planning arc (the AI's first conversation with you). It sets the whole-project picture.
20
+ - **Maps 2 and 3** are written during the **Maps** phase (phase D of planning). Map 2 needs Map 1 and the architecture phase to be done first; Map 3 needs Map 2.
20
21
 
21
- A small project may only need Map 1 + Map 2 (canonical plan). A larger project may have several Map N variants for parallel workstreams. The convention: numbered sequentially; the latest is the most operational.
22
+ You don't write maps by hand. The AI walks you through each one during its phase. Once written, maps are updated only by the protocol that updates them never by silent edit.
22
23
 
23
- ## Story-step shape
24
+ ## How maps interact with everything else
24
25
 
25
- Every executable phase step in a map has the following shape (per [`01-template.md`](01-template.md)):
26
+ Every work unit gets placed inside Map 2 (which phase does it belong to?) and surfaces in Map 3 (when is it being built?). When the situation changes — a date slips, a phase rescopes — the map gets updated and the change flows to the affected work units via the catalogue's normal mechanisms.
26
27
 
27
- ```
28
- | # | Phase step | Acceptance | Verification gate |
29
- |---|---|---|---|
30
- | 1 | <what move is being made> | <what proves it produced the intended outcome> | <specific file/grep/test in the target repo that the operator runs to confirm the gate> |
31
- ```
32
-
33
- The **verification gate** is the load-bearing column for agent-led work. *"This works"* is not a gate. *"`grep 'createSensightMisWriteAdapter' apps/web/lib/nuos/nuflow/runtime.ts` returns a hit"* is a gate. Vague gates leave room for plausible-looking work that doesn't match reality; precise gates close that loop.
34
-
35
- ## Hedge words are a stop signal
36
-
37
- If you find yourself writing *"likely"*, *"presumably"*, *"should be"* in a map, stop. The hedge word indicates a verification step you skipped. Replace it with the grep/test/file-read result before the map ships.
38
-
39
- ## Design alternatives before implementation
40
-
41
- For any non-trivial architectural choice — schema, migration, integration shape, adapter design, audit composition, RBAC pattern, error-handling strategy, retention policy — **produce at least two fundamentally different designs, evaluate them, then pick or hybrid before any implementation is generated.** This is Ousterhout's "design it twice" applied to agent-led work.
42
-
43
- Two syntactic variations of the same design (e.g., `USING` clause vs `WITH CHECK` clause for the same RLS pattern) do not count. Three fundamentally different designs (e.g., session-variable RLS / Supabase auth.uid() RLS / defense-in-depth + app-side enforcement) do count.
44
-
45
- Record the alternatives in the WU's Design notes (or as a D-NNN decision when the choice is durable enough). The audit trail of *"we considered A, B, C; chose B because X"* is catalogue value — future sessions can re-evaluate when context changes.
46
-
47
- In maps, any phase step whose work is *"generate non-trivial implementation"* carries an implicit prerequisite: design alternatives recorded in the WU notes. The gate fires before code is written, not after.
48
-
49
- ## Naming
50
-
51
- - `01-the-horizon.md` — the high-level narrative (recommend keep verbatim if adopting unchanged)
52
- - `02-<name>.md` — phases-in-detail or first canonical operational plan
53
- - `03-<name>.md`, `04-<name>.md`, etc. — additional canonical plans per workstream
54
-
55
- When a map is superseded (e.g., the project's operational shape changes), preserve the old map with a `(HISTORICAL)` header pointing at its replacement. Don't delete — the evolution is part of the audit trail.
56
-
57
- ## Maps in this catalogue
58
-
59
- | File | Title | Purpose |
60
- |---|---|---|
61
- | `01-template.md` | Map template | Shape for a canonical operational map (copy + rename) |
62
-
63
- Update this list as you add real maps.
28
+ A small project may only need Map 1 and Map 3 (skip the middle layer). A larger project may grow into having multiple operational plans for parallel workstreams; see `99-template-power-user-operational-plan.md` for the structured operational map shape used by mature projects.
@@ -1,26 +1,40 @@
1
- # Open Questions
1
+ # Open questions
2
2
 
3
- > Questions blocking work that have not yet been resolved into decisions. Each question is Q-NNN. Open questions exist in three states: `open` (under deliberation), `resolved` (resolved into a D-NNNlink forward), `withdrawn` (no longer relevant).
3
+ An **open question** is something the project hasn't decided yet but might need to. When an open question gets resolved, it becomes a [decision](../decisions/_index.md) (or it becomes obvious and gets closed). The open-questions register is where uncertainty lives visibly, with a handleuntil it's ready to settle. See [the glossary](../GLOSSARY.md#open-question) for the full definition.
4
4
 
5
5
  ## Index
6
6
 
7
7
  | ID | Question | Status | Blocks | Date opened |
8
8
  | --- | --- | --- | --- | --- |
9
- | _none yet_ | | | | |
9
+ | _none yet — file your first one with `/question-new` or `nuos-catalogue question create`_ | | | | |
10
10
 
11
- ## How to file an open question
11
+ ## When to file an open question
12
12
 
13
- 1. Add a new row with Q-NNN (next available number)
14
- 2. If the question warrants detail (multiple options, real trade-offs), write a `Q-NNN-short-title.md` file beside this index laying out the options
15
- 3. Reference the question from any blocked work unit
16
- 4. When the question resolves, file a D-NNN; mark this question `resolved` and link forward
13
+ - You hit something during planning or work that needs a choice, but you can't make it yet
14
+ - You're not sure what the right approach is and want to come back to it
15
+ - A work unit can't start until something gets answered — surface that visibly rather than letting the work stall silently
16
+ - You feel uneasy about something but it's not yet a decision naming it as a question gives it somewhere to live
17
17
 
18
- ## When a question becomes a decision
18
+ > Example: "Q003 Should the morning briefing run on-device or rely on the school's overnight server?" — both options have real trade-offs; we don't yet know which we'll pick.
19
19
 
20
- A question is "ready to resolve" when:
20
+ ## What status means
21
+
22
+ - 🟡 **open** — under deliberation
23
+ - 🟢 **resolved** — turned into a decision; the resolved row links forward to that D-NNN
24
+ - ⚫ **withdrawn** — no longer relevant (e.g. the work unit it was blocking got cut)
25
+
26
+ ## When an open question becomes a decision
27
+
28
+ A question is ready to resolve when:
21
29
 
22
30
  - The trade-offs are clear enough to choose between
23
- - The information needed to choose is available (or its absence is itself a decision)
24
- - An active or imminent work unit needs the answer
31
+ - The information needed to choose is available (or you've decided you'll commit anyway)
32
+ - A work unit can't continue until you choose
33
+
34
+ Resolving too early produces a fragile decision someone has to revisit. Resolving too late produces a work unit that's blocked or built on guesswork. The honest signal that it's time is *something is now blocked or about to be blocked*.
35
+
36
+ ## How to file one
37
+
38
+ Run `/question-new` (or `nuos-catalogue question create`). The AI walks you through the prompts and files the question with a fresh Q-NNN handle.
25
39
 
26
- Resolving prematurely produces fragile decisions. Resolving late produces blocked work units. The catalogue review walks open questions and forces the choice when blocking begins.
40
+ When a question is resolved, run `nuos-catalogue question resolve Q003 --became=D012 --reason="..."`. This marks the question resolved, links it to the new decision, and moves it to `resolved/`.
@@ -1,77 +1,43 @@
1
- # Personas Index
1
+ # Personas
2
2
 
3
- > Master list of the personas this project's work units serve. Personas are P-NNN-numbered, written along the seven dimensions, and refined with the acid-test. Reusable across multiple WUsa "paired outcome" (e.g., a customer-side outcome paired with an organiser-side one) cites two personas, both filed here.
3
+ A **persona** is one specific person the project serves. Not a market segment, not a demographic one person with a name, a situation, and a reason to need what you're building. Personas are first-class in this catalogue because everything downstream work units, UI/UX surfaces, contracts, decisions hangs off who specifically you're building for. See [the glossary](../GLOSSARY.md#persona) for the full definition.
4
4
 
5
- ## What a persona is
5
+ ## Index
6
6
 
7
- A persona is a **specification of who will use an outcome and what situation they will be in when they use it.** It is not a demographic snapshot; it is a design constraint. A persona that does not change a design decision is decoration — rewrite it until it does.
8
-
9
- The seven dimensions every persona addresses:
10
-
11
- 1. **Identity** — who they are in the context of *this system*. Not their age or job title in the abstract — their relationship to this particular system.
12
- 2. **Reality** — physical environment when they use the outcome. Device, connection quality, noise level, time pressure.
13
- 3. **Psychology** — technical confidence, stress level, tolerance for confusion.
14
- 4. **Trigger** — what brought them to this outcome. A real-world event, not a UI click.
15
- 5. **History** — what they have done before arriving at this outcome.
16
- 6. **Success** — what "done" looks like from their perspective. Not what the system logs — what they feel.
17
- 7. **Constraints** — what they cannot or will not do. Defines the outer boundary of acceptable design.
18
-
19
- Every persona is then refined into an **acid-test persona** — the hardest legitimate user, with the most demanding combination of real constraints. Design for the acid-test and the standard cases hold.
20
-
21
- ## How a persona is filed
22
-
23
- ```
24
- personas/
25
- ├── _index.md (this file)
26
- ├── 001-template.md (the template; copy when filing a new persona)
27
- ├── P001-<slug>.md (your first persona)
28
- ├── P002-<slug>.md ...
29
- └── done/ (when a persona retires — e.g., the user role no longer exists)
30
- ```
31
-
32
- Personas are P-NNN-numbered. Numbers are stable: a retired persona moves to `done/` but keeps its number. Cross-WU references use the stable handle (`{repo}:P-NNN` for cross-catalogue references; `[P-NNN](../personas/P-NNN-slug.md)` within the same catalogue).
33
-
34
- ## Personas — active
35
-
36
- | ID | Name | Used by WUs | Status |
7
+ | ID | Name | Status | Used by |
37
8
  | --- | --- | --- | --- |
9
+ | _none yet — file your first one with `/persona-new` or `nuos-catalogue persona create`_ | | | |
38
10
 
39
- [Add a row when you file a new persona. Status: `🟢 active`, `🟡 evolving` (the persona shape is being refined), `🟣 paired-with-PNNN` (this persona's outcomes are paired with another), `⚫ retired`.]
11
+ ## What status means
40
12
 
41
- ## Status legend
13
+ - 🟢 **active** — currently in use; referenced by one or more work units or surfaces
14
+ - 🟡 **evolving** — the persona's shape is still being refined as you learn
15
+ - ⚫ **retired** — no longer in use; lives in `done/` but keeps its handle
42
16
 
43
- - 🟢 `active` — in use; cited by one or more current WUs
44
- - 🟡 `evolving` — the seven dimensions are being refined as understanding deepens
45
- - 🟣 `paired-with-PNNN` — this persona pairs with another (e.g., customer + organiser)
46
- - ⚫ `retired` — no longer in use; moved to `done/`
17
+ ## The seven dimensions
47
18
 
48
- ## How to write a persona
19
+ When you file a persona, you describe seven things about this specific person:
49
20
 
50
- Use the file format established in `001-template.md`. A persona document has:
21
+ 1. **Identity** who they are *in the context of this project*. Their role, their relationship to what you're building. Not their age in the abstract — their relationship to your project.
22
+ 2. **Reality** — where they are when they need this. Their device, their environment, their time pressure.
23
+ 3. **Psychology** — how confident they are, how stressed, how patient with confusion.
24
+ 4. **Trigger** — what's happening in their day or week that makes them need this. Not a click — a real-world moment.
25
+ 5. **History** — what they've already done, tried, or experienced before reaching this point.
26
+ 6. **Success** — what "done" looks like *from their perspective*. Not what your system logs; what they feel.
27
+ 7. **Constraints** — what they cannot or will not do. The outer edge of what's acceptable for them.
51
28
 
52
- - Identity dimension
53
- - Reality dimension
54
- - Psychology dimension
55
- - Trigger dimension
56
- - History dimension
57
- - Success dimension
58
- - Constraints dimension
59
- - Acid-test refinement (the worst legitimate combination of constraints)
60
- - Paired persona (if any) — the persona on the other side of any outcome this persona triggers
61
- - WUs this persona is cited by
29
+ A persona is sharp when **swapping them for a different person would force at least one design decision to change**. If you can substitute the persona without changing anything, the persona is decorative — refine it until it constrains.
62
30
 
63
- A persona should be small enough to read in two minutes and specific enough that swapping it for a different persona would force at least one design decision to change. If you can substitute the persona without changing anything in the WU, the persona is decorative — rewrite it until it constrains.
31
+ ## When to file a persona
64
32
 
65
- ## How personas connect to WUs
33
+ You file the first 1-3 personas during the **Orientation** phase of planning. Most projects need 2-3 personas — primary user, secondary user, and sometimes an "operator" or "administrator" persona. More than 5-6 active personas usually means the project is overreaching; consider phasing.
66
34
 
67
- A WU's `Persona` field links the P-NNN that the outcome serves. A WU's `Trigger` field draws from the persona's Trigger dimension but specifies the *moment* (not just the class of event). A WU's `Walkthrough` is written from the persona's perspective, using their reality, psychology, and history to constrain what they need to be told and what they already know.
35
+ Add new personas later if a new kind of user enters scope. Retire old ones (move to `done/`) when a role no longer exists.
68
36
 
69
- If a WU has no clear persona, it is one of two things:
70
- 1. An infrastructure WU (build, publish, hardening) — mark the persona field `N/A — infrastructure WU`.
71
- 2. An unanchored feature — the WU describes a category of capability without a person doing a thing. Rewrite as an outcome with a real persona, or split into smaller outcomes.
37
+ ## How to file one
72
38
 
73
- ## How personas evolve
39
+ Run `/persona-new` (or `nuos-catalogue persona create`). The AI walks you through each of the seven dimensions as conversation — give them a name, describe their situation, what makes them need this — and files the result with a fresh P-NNN handle.
74
40
 
75
- Personas evolve as understanding deepens. The seven dimensions get sharper; the acid-test gets harder; new constraints surface. Update the persona file in place — but record the *date* of each refinement in the file itself, so a future reader can see how the understanding changed.
41
+ ## How personas connect to everything else
76
42
 
77
- If a persona's role in the system changes substantially (e.g., "customer" splits into "registered customer" + "guest customer"), file two new personas with new P-NNN numbers and mark the original `⚫ retired` rather than amending it.
43
+ Every work unit names a persona. Every UI/UX surface names a persona. Every contract is justified by what a persona needs. When you change a persona's reality or constraints, downstream artefacts referencing that persona may need updates file open questions for any you're not sure about.