@nurix/etna 0.20.35 → 0.20.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/catalog/rules/changelog.md +1 -1
- package/data/catalog/skills/nustack/SKILL.md +2 -2
- package/data/catalog/skills/nustack/references/cli-design.md +35 -35
- package/data/catalog/skills/nustack/references/monorepo-master-list.md +6 -6
- package/data/catalog/skills/nustack/references/monorepo-setup.md +13 -13
- package/data/catalog/skills/nustack/references/publishing.md +40 -39
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +4 -4
- package/data/harnesses/code/agents/brainstorm.md +2 -2
- package/data/harnesses/code/agents/lld-mode.md +2 -2
- package/data/harnesses/code/agents/maintenance.md +17 -17
- package/data/harnesses/code/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/code/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/code/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/code/docs/README.md +9 -17
- package/data/harnesses/code/docs/history/CHANGELOG.md +19 -18
- package/data/harnesses/code/docs/structure.md +60 -45
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/hooks/compliance.mjs +8 -2
- package/data/harnesses/code/hooks/lib/sweep.mjs +3 -2
- package/data/harnesses/code/rules/changelog.md +1 -1
- package/data/harnesses/code/skills/boundary/SKILL.md +33 -22
- package/data/harnesses/code/skills/boundary/references/index.md +2 -4
- package/data/harnesses/code/skills/boundary/references/mechanisms.md +3 -10
- package/data/harnesses/code/skills/boundary/references/packs/frontend.md +17 -17
- package/data/harnesses/code/skills/boundary/references/packs/generic-tail.md +1 -1
- package/data/harnesses/code/skills/brainstorm/README.md +11 -13
- package/data/harnesses/code/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/code/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/code/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/code/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/code/skills/design/SKILL.md +31 -35
- package/data/harnesses/code/skills/design/data/iconography.md +2 -2
- package/data/harnesses/code/skills/design/references/compose.md +14 -16
- package/data/harnesses/code/skills/design/references/foundations.md +5 -5
- package/data/harnesses/code/skills/design/references/intake.md +6 -6
- package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/code/skills/design/references/ship-gate.md +5 -5
- package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +4 -4
- package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +2 -2
- package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +1 -1
- package/data/harnesses/code/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/code/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/code/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/code/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/code/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/code/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/code/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/code/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/code/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/code/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/code/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/code/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/code/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/code/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/code/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/code/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/code/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/code/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/code/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/code/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/code/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/code/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/code/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/code/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/code/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/code/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/code/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/code/skills/issue-bridge/SKILL.md +51 -16
- package/data/harnesses/code/skills/issue-bridge/references/trackers/github.md +5 -5
- package/data/harnesses/code/skills/issue-bridge/references/trackers/jira.md +11 -8
- package/data/harnesses/code/skills/issue-bridge/references/trackers/linear.md +16 -11
- package/data/harnesses/code/skills/nustack-graph/SKILL.md +38 -29
- package/data/harnesses/code/skills/polygraph/references/dispatch.md +31 -18
- package/data/harnesses/code/skills/polygraph/references/rows.md +11 -6
- package/data/harnesses/code/skills/schema-design/SKILL.md +39 -41
- package/data/harnesses/code/skills/test/SKILL.md +38 -42
- package/data/harnesses/code/skills/testing/SKILL.md +83 -73
- package/data/harnesses/code/skills/workflow-mapper/SKILL.md +156 -193
- package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +15 -15
- package/data/harnesses/delivery/CLAUDE.md +1 -1
- package/data/harnesses/delivery/agents/brainstorm.md +2 -2
- package/data/harnesses/delivery/agents/lld-mode.md +2 -2
- package/data/harnesses/delivery/agents/maintenance.md +17 -17
- package/data/harnesses/delivery/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/delivery/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/delivery/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/delivery/harness.json +2 -2
- package/data/harnesses/delivery/rules/changelog.md +1 -1
- package/data/harnesses/delivery/skills/brainstorm/README.md +11 -13
- package/data/harnesses/delivery/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/delivery/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/delivery/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/delivery/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/delivery/skills/cost-report/SKILL.md +10 -10
- package/data/harnesses/delivery/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/delivery/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/delivery/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/delivery/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/delivery/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/delivery/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/delivery/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/delivery/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/delivery/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/delivery/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/delivery/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/delivery/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/delivery/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/delivery/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/delivery/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/delivery/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/delivery/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/delivery/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/delivery/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/delivery/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/delivery/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/delivery/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/delivery/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/delivery/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/delivery/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/delivery/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/delivery/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/delivery/skills/escalate/SKILL.md +11 -11
- package/data/harnesses/delivery/skills/prompt-eval/SKILL.md +8 -8
- package/data/harnesses/delivery/skills/prompt-library/SKILL.md +30 -9
- package/data/harnesses/delivery/skills/route/SKILL.md +8 -8
- package/data/harnesses/etna/CLAUDE.md +2 -2
- package/data/harnesses/etna/agents/brainstorm.md +2 -2
- package/data/harnesses/etna/agents/lld-mode.md +2 -2
- package/data/harnesses/etna/agents/maintenance.md +17 -17
- package/data/harnesses/etna/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/etna/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/etna/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/changelog.md +1 -1
- package/data/harnesses/etna/skills/boundary/SKILL.md +33 -22
- package/data/harnesses/etna/skills/boundary/references/index.md +2 -4
- package/data/harnesses/etna/skills/boundary/references/mechanisms.md +3 -10
- package/data/harnesses/etna/skills/boundary/references/packs/frontend.md +17 -17
- package/data/harnesses/etna/skills/boundary/references/packs/generic-tail.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/README.md +11 -13
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/etna/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/etna/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/etna/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/etna/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/etna/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/etna/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/etna/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/etna/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/etna/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/etna/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/etna/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/etna/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/etna/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/etna/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/etna/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/etna/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/etna/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/etna/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/etna/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/etna/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/etna/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/etna/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/etna/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/etna/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/etna/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/etna/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/etna/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/etna/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/etna/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/etna/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/etna/skills/workflow-mapper/SKILL.md +156 -193
- package/data/harnesses/etna/skills/workflow-mapper/references/patterns.md +15 -15
- package/data/harnesses/hr/harness.json +1 -1
- package/data/harnesses/hr/skills/evaluator/SKILL.md +71 -73
- package/data/harnesses/hr/skills/evaluator/criteria/code-quality.md +28 -47
- package/data/harnesses/hr/skills/evaluator/criteria/deployment-readiness.md +33 -43
- package/data/harnesses/hr/skills/evaluator/criteria/maintainability.md +34 -46
- package/data/harnesses/hr/skills/evaluator/criteria/mechanical-ambition.md +13 -13
- package/data/harnesses/hr/skills/evaluator/criteria/problem-substantiveness.md +7 -7
- package/data/harnesses/hr/skills/evaluator/criteria/testing.md +36 -41
- package/data/harnesses/hr/skills/evaluator/criteria/ux-mechanics.md +25 -11
- package/data/harnesses/hr/skills/evaluator/criteria/value-articulation.md +7 -7
- package/data/harnesses/hr/skills/evaluator/preflight.md +27 -46
- package/data/harnesses/hr/skills/interview-eval/SKILL.md +37 -42
- package/data/harnesses/hr/skills/interview-eval/rubric.md +21 -23
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Pack: frontend / client state / UI build
|
|
2
2
|
|
|
3
|
-
Load when: the touch list exhibits Redux Toolkit (`createSlice`, `configureStore`), RTK Query tags, react-router route tables, Tailwind 4 CSS (`@theme`, `personality.css`, `globals.css`), Vite config (`resolve.alias`, env), `@nurix/components` imports, localforage/redux-persist, or date handling crossing the wire.
|
|
3
|
+
Load when: the touch list exhibits Redux Toolkit (`createSlice`, `configureStore`), RTK Query tags, react-router route tables, Tailwind 4 CSS (`@theme`, `personality.css`, `design.tokens.css`, `globals.css`), Vite config (`resolve.alias`, env), `@nurix/components` imports, localforage/redux-persist, or date handling crossing the wire.
|
|
4
4
|
|
|
5
5
|
## redux-persist-shape-migration — CRITICAL · serialized-shape
|
|
6
6
|
**Contract:** State shapes frozen in the user's browser storage by redux-persist must be readable by the *current* reducers' `initialState` — `version`/`migrate` is the only bridge, and `whitelist`/`blacklist` reference reducer-map keys by literal string.
|
|
@@ -51,10 +51,10 @@ Load when: the touch list exhibits Redux Toolkit (`createSlice`, `configureStore
|
|
|
51
51
|
**Safe change:** Grep both consumer forms — utility stems (`bg-old`, `text-old`) and `var(--…-old)` including `node_modules/@nurix/components` dist CSS; keep the old token as an alias for one release; visually diff themed screens after the rename.
|
|
52
52
|
|
|
53
53
|
## tailwind-theme-inline-indirection — HIGH · config-elsewhere
|
|
54
|
-
**Contract:** `@theme inline { --color-primary: var(--primary) }` makes utilities emit the *referenced* variable (`background-color: var(--primary)`), resolved per-element at runtime — the org's theming (
|
|
55
|
-
**Detect:** `@theme inline`, plain `@theme {`, token values that are `var(--…)`, `
|
|
56
|
-
**Ships green, breaks:** Adding a var-referencing token to a plain (non-`inline`) `@theme` block compiles and looks correct in
|
|
57
|
-
**Safe change:** Any token whose value is `var(--app-var)` goes in the `@theme inline` block, raw literal values in plain `@theme`; after adding tokens, toggle `
|
|
54
|
+
**Contract:** `@theme inline { --color-primary: var(--primary) }` makes utilities emit the *referenced* variable (`background-color: var(--primary)`), resolved per-element at runtime — the org's theming (token values swapped under `.dark`, and the personality.css `:root`/`.dark` overrides) only flows through utilities via the `inline` form.
|
|
55
|
+
**Detect:** `@theme inline`, plain `@theme {`, token values that are `var(--…)`, `:root:not(.dark)`/`:root.dark` blocks in `design.tokens.css`, `:root`/`.dark` blocks in `personality.css`
|
|
56
|
+
**Ships green, breaks:** Adding a var-referencing token to a plain (non-`inline`) `@theme` block compiles and looks correct in light mode; toggling `.dark` or recompiling the personality then silently fails to restyle those utilities, because the theme variable captured the referenced var's value as resolved at `:root` — mode-scoped and subtree overrides never reach it. No warning, no error; only the alternate mode is wrong.
|
|
57
|
+
**Safe change:** Any token whose value is `var(--app-var)` goes in the `@theme inline` block, raw literal values in plain `@theme`; after adding tokens, toggle the `.dark` class on the root element in devtools and confirm the new utilities respond in both modes.
|
|
58
58
|
|
|
59
59
|
## tailwind-source-detection — HIGH · generated-artifact
|
|
60
60
|
**Contract:** The generated stylesheet contains only class names that appear as complete, unbroken literal strings in scanned source files — the build-time scanner vs class names assembled at runtime; the default scan set skips `.gitignore`d paths and `node_modules`.
|
|
@@ -62,16 +62,16 @@ Load when: the touch list exhibits Redux Toolkit (`createSlice`, `configureStore
|
|
|
62
62
|
**Ships green, breaks:** `bg-${color}-500` builds and renders unstyled — the utility is simply absent from the CSS. Class names stored in data or composed in unscanned code work only as long as some scanned file coincidentally contains the same literal — deleting that last literal usage breaks a "different" feature. Gitignored source directories are silently excluded from scanning.
|
|
63
63
|
**Safe change:** Always write full class literals and select via lookup maps (`{primary: 'bg-blue-600'}[variant]`); safelist genuinely dynamic sets with `@source inline("…")` (v4.1+); add explicit `@source "…"` for out-of-tree or ignored directories.
|
|
64
64
|
|
|
65
|
-
## dark-variant-
|
|
66
|
-
**Contract:** `@custom-variant dark (&:
|
|
67
|
-
**Detect:** `@custom-variant dark`, `
|
|
68
|
-
**Ships green, breaks:**
|
|
69
|
-
**Safe change:**
|
|
65
|
+
## dark-variant-class — HIGH · rendezvous-string
|
|
66
|
+
**Contract:** `@nurix/components` declares `@custom-variant dark (&:is(.dark *))` and ships its dark values compiled as `.dark { … }`; the app's toggle, its own `dark:` utilities and its token blocks (`:root.dark`) rendezvous on the exact class `dark` stamped on the root element (`document.documentElement.classList`).
|
|
67
|
+
**Detect:** `@custom-variant dark`, `classList.add('dark')`/`classList.toggle('dark'`, `:root.dark`, `.dark {`, and the mismatch signals `[data-theme=`, `dataset.theme`, `setAttribute('data-theme'`
|
|
68
|
+
**Ships green, breaks:** A toggle that stamps `data-theme="dark"` instead of the class renders half-flipped with zero errors: the app's own attribute-keyed tokens invert while every library surface — its `dark:` variants, its compiled `.dark { … }` values, its theme toggle and toaster — stays light, because the library's selectors are compiled into distributed CSS and cannot be re-keyed. Without `@custom-variant dark` in the CSS entry, the app's own `dark:` classes fall back to Tailwind's default `prefers-color-scheme: dark` media query and follow the OS setting instead of the toggle. Light is the org default: light values sit on `:root:not(.dark)`, so a page with no class renders light.
|
|
69
|
+
**Safe change:** Toggle only the `dark` class on the root element, from a pre-paint inline script plus the persisted-preference module; bind `@custom-variant dark (&:is(.dark *))` in the CSS entry; flip the class in devtools and verify both directions, plus the no-class default, on an app surface and a library component side by side.
|
|
70
70
|
|
|
71
71
|
## nurix-components-styles-tokens — HIGH · rendezvous-string
|
|
72
|
-
**Contract:** `@nurix/components` is imported by subpath (`@nurix/components/button`) but styled through two separate channels — its
|
|
73
|
-
**Detect:** `from '@nurix/components/`, the library `styles.css` `@import` line in `globals.css`, grep `var(--` in `node_modules/@nurix/components
|
|
74
|
-
**Ships green, breaks:** Omitting the `styles.css` import renders every component fully functional but unstyled — no JS error, no build warning, no missing-module failure. Renaming or dropping a
|
|
72
|
+
**Contract:** `@nurix/components` is imported by layered subpath (`@nurix/components/element/button`) but styled through two separate channels — its `styles.css` (CSS-`@import`ed in `globals.css`) and the CSS variables its rules read: the app's theme colors and `--radius`, the `--intent-*` family, and the personality layer (`--radius-scale`, `--density-*`, `--edge-*`, `--ring-*`, `--elevation-*`).
|
|
73
|
+
**Detect:** `from '@nurix/components/`, the library `styles.css` `@import` line in `globals.css`, grep `var(--` in `node_modules/@nurix/components/dist/styles.css`
|
|
74
|
+
**Ships green, breaks:** Omitting the `styles.css` import renders every component fully functional but unstyled — no JS error, no build warning, no missing-module failure. Renaming or dropping a token the library reads silently degrades components to fallback/`initial` values (e.g. a sharp-edge personality's `--radius-scale` override lost in a token refactor). The app's Tailwind compiles the library's utilities: `styles.css` omits `@import "tailwindcss"` and carries an `@source` over the compiled JS, so its classes resolve against the app's theme — a JS `import` of `styles.css` (in `main.tsx`) compiles it standalone with no theme loaded and fails the build.
|
|
75
75
|
**Safe change:** Keep the `styles.css` import at its mandated position in `globals.css`; before touching any personality token, grep the library's dist CSS for `var(--that-token)`; smoke-render a themed library component after every `@nurix/components` upgrade.
|
|
76
76
|
|
|
77
77
|
## vite-alias-tsconfig-paths — MED · dual-authority
|
|
@@ -81,10 +81,10 @@ Load when: the touch list exhibits Redux Toolkit (`createSlice`, `configureStore
|
|
|
81
81
|
**Safe change:** Single-source the mapping (`vite-tsconfig-paths`, or generate both from one constant); update both files in the same commit on any directory move; when suspicious, log `import.meta.url` from the module in dev to see which file actually loaded.
|
|
82
82
|
|
|
83
83
|
## css-import-order — MED · lifecycle-protocol
|
|
84
|
-
**Contract:** `globals.css
|
|
85
|
-
**Detect:** first ~10 lines of
|
|
86
|
-
**Ships green, breaks:** Any reorder compiles and mostly renders — the breakage is visual-only and theme/element-specific: importing the library's `styles.css` before `@import "tailwindcss"` lets preflight's `@layer base` resets land after (and wipe) library button/form styling at equal specificity, and flips which side wins app-utility-vs-library override wars. Nothing logs; a form-heavy screen just looks subtly wrong.
|
|
87
|
-
**Safe change:** Treat the
|
|
84
|
+
**Contract:** The CSS entry (`globals.css`, or whatever the manifest names) must import in the fixed sequence `@import "./fonts.css"` → the project's `design.tokens.css` → `@import "tailwindcss"` → the library's `styles.css` → the project's `personality.css` → `@theme inline {…}` — cascade-layer order is fixed at first appearance of each `@layer` name, and `personality.css` is bare `:root`/`.dark` blocks that only *tie* the library's unlayered `:root`/`.dark` (0,1,0), so it wins only by following `styles.css`. File position *is* the styling contract between Tailwind, the component library, and the personality tokens.
|
|
85
|
+
**Detect:** first ~10 lines of the CSS entry, `@import "tailwindcss"`, `@import` of `@nurix/components` styles, the `personality.css` `@import`, `@layer` declarations inside the library CSS
|
|
86
|
+
**Ships green, breaks:** Any reorder compiles and mostly renders — the breakage is visual-only and theme/element-specific: importing the library's `styles.css` before `@import "tailwindcss"` lets preflight's `@layer base` resets land after (and wipe) library button/form styling at equal specificity, and flips which side wins app-utility-vs-library override wars; importing `personality.css` before `styles.css` lets the library's neutral personality defaults win the tie, so the product's density, motion, radius and depth silently revert to neutral. Nothing logs; a form-heavy screen just looks subtly wrong. (`design.tokens.css` writes `:root:not(.dark)`/`:root.dark` at (0,2,0) and wins wherever it sits.)
|
|
87
|
+
**Safe change:** Treat the header as frozen; insert new global stylesheets at a deliberate position relative to `tailwindcss` and the library import, never appended blindly; after any reorder, visual-diff a form-heavy screen in light and dark (`.dark`).
|
|
88
88
|
|
|
89
89
|
## date-fns-local-tz — HIGH · serialized-shape
|
|
90
90
|
**Contract:** Datetimes cross the wire as UTC ISO strings or date-only `YYYY-MM-DD`, but date-fns `format()` and accessors operate in the runtime's local timezone — serializer and formatter must agree on the zone, and nothing checks that they do.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Generic tail — technologies outside the mandated stack
|
|
2
2
|
|
|
3
|
-
Load when: the touched code exhibits one of these technologies and no dedicated pack covers it.
|
|
3
|
+
Load when: the touched code exhibits one of these technologies and no dedicated pack covers it. Each entry is one gotcha and the safe-change essence; diagnose the rest from its mechanism in `mechanisms.md`. A technology the org adopts seriously gets its section promoted into a full pack.
|
|
4
4
|
|
|
5
5
|
## API styles
|
|
6
6
|
|
|
@@ -12,8 +12,8 @@ commits it.
|
|
|
12
12
|
|
|
13
13
|
## The architecture — one capability, two seats
|
|
14
14
|
|
|
15
|
-
Prose obligations decay in the conversing seat:
|
|
16
|
-
dying in every
|
|
15
|
+
Prose obligations decay in the conversing seat: an audit of real sessions finds the same rules
|
|
16
|
+
dying in every one, the successful ones included. So the capability is split:
|
|
17
17
|
|
|
18
18
|
| Seat | Component | Owns |
|
|
19
19
|
| --- | --- | --- |
|
|
@@ -27,17 +27,15 @@ line, the twin writes the result — so reconciliation is observable, never asse
|
|
|
27
27
|
|
|
28
28
|
## The session lifecycle
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
→ the user decides: delete or commit
|
|
40
|
-
```
|
|
30
|
+
- **`/brainstorm start`**
|
|
31
|
+
1. Basis gate — a document, a prior session folder in any format, or a brain dump.
|
|
32
|
+
2. Bootstrap `docs/research/{topic}-brainstorm/` — `ops/` untracked; the twin writes the surface.
|
|
33
|
+
3. Converse — dump, interview, probe, blindspot, converge — steerable in plain language.
|
|
34
|
+
4. "Let me read" anytime — compose on demand, read the thesis, come back.
|
|
35
|
+
- **`/brainstorm stop`**
|
|
36
|
+
1. Converge → manifest → **one** user approval → apply → uselessness test.
|
|
37
|
+
2. The folder moves to `docs/history/brainstorms/{topic}/` — the completion marker.
|
|
38
|
+
3. The user decides: delete or commit.
|
|
41
39
|
|
|
42
40
|
The working surface: `thesis.md` (claim → argument → what changed, recomposed whole, stamped),
|
|
43
41
|
`forks.md` (open questions with close conditions — the only convergence currency), `ledger.md`
|
|
@@ -9,165 +9,184 @@ Help the user think correctly about a large-scale change, in a record that reads
|
|
|
9
9
|
pause, and end with a harvest so complete the session folder is useless. You are the
|
|
10
10
|
**facilitator** — the conversation seat of a capability split across two seats:
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
12
|
+
| Seat | Owns | Writes |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| **You** (this skill, main loop) | the conversation; dispatching the twin at gates and relaying its reports | `ops/capture.md` every turn, the sync-log dispatch lines, the basis at intake — **nothing else** |
|
|
15
|
+
| **The twin** (the `brainstorm` agent, pinned strong tier) | the paper: distilling ops into the working surface, recomposing the thesis whole, audits, the harvest | every other file in the folder |
|
|
16
|
+
| **The detector** (`scripts/detector.mjs`, run by the twin) | mechanical integrity | — |
|
|
17
|
+
|
|
18
|
+
**Never write the working surface yourself** — prose obligations decay in the conversing seat, and
|
|
19
|
+
the split exists to keep them out of it.
|
|
20
|
+
|
|
21
|
+
Load each reference at its moment and read it in full — **never skim to save context**; this skill
|
|
22
|
+
is sized by completeness:
|
|
23
|
+
|
|
24
|
+
| Reference | Load when |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| `references/doctrine.md` | judging what a turn's substance *is* (force, fork, commitment), or how to word what you capture |
|
|
27
|
+
| `references/session-schema.md` | bootstrapping a session, or interpreting detector or twin output |
|
|
28
|
+
| `references/harvest.md` | at `stop`, before orchestrating the pipeline |
|
|
28
29
|
|
|
29
30
|
## The one habit that is yours: capture
|
|
30
31
|
|
|
31
|
-
Append to `ops/capture.md` **every turn**, both sides, lowest bar — raw notes, not prose:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
32
|
+
Append to `ops/capture.md` **every turn**, both sides, at the lowest bar — raw notes, not prose:
|
|
33
|
+
|
|
34
|
+
- what the user said that matters;
|
|
35
|
+
- your own substance — causal diagnoses, informed rejections of options you presented,
|
|
36
|
+
definitions, reasoning chains behind recommendations;
|
|
37
|
+
- residue you judge not worth filing.
|
|
38
|
+
|
|
39
|
+
Stamp each turn per the schema (`### T# · <ISO datetime>`). **Never distill here** — distillation is
|
|
40
|
+
the twin's. Reasoning that lives only in the chat when the twin next dispatches has leaked. The
|
|
41
|
+
folder plus ops is the session's whole memory, which is what makes every re-entry cheap.
|
|
38
42
|
|
|
39
43
|
## `start`
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
`docs/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
Find sessions by their folders — **no index keeps a row per session**. Active sessions are
|
|
46
|
+
`docs/research/*-brainstorm/`, harvested ones `docs/history/brainstorms/*/`; the folder name is the
|
|
47
|
+
topic and each `thesis.md` heading its subject.
|
|
48
|
+
|
|
49
|
+
| Topic matches | Do |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| an active session | resume it (Re-entry, below) |
|
|
52
|
+
| a harvested session, or a session folder in another format | offer it **as a basis** for a fresh session |
|
|
53
|
+
| nothing | open a new session |
|
|
54
|
+
|
|
55
|
+
**1 · The entry gate.** A session needs substance. Ask for a **basis**, now:
|
|
56
|
+
|
|
57
|
+
- a reference document (path or URL);
|
|
58
|
+
- a prior session folder, in any format — ingested exactly like a PRD: copied into `basis/`,
|
|
59
|
+
frozen, distilled; **never** operated on in place, **never** migrated;
|
|
60
|
+
- a one-shot brain dump in prose.
|
|
45
61
|
|
|
46
|
-
|
|
47
|
-
(path or URL), a prior session folder of *any* format or generation, or a one-shot brain dump in
|
|
48
|
-
prose, now. Information is information: an old v2 brainstorm folder is ingested exactly like a
|
|
49
|
-
PRD — copied into `basis/`, frozen, distilled; never operated on in place, never migrated.
|
|
50
|
-
Drip-sized input (a bug fix, one button) → say this skill is the wrong tool and don't open the
|
|
62
|
+
Drip-sized input (a bug fix, one button): say this skill is the wrong tool, and do not open the
|
|
51
63
|
session unless the user explicitly overrides. No basis, no session.
|
|
52
64
|
|
|
53
|
-
**2 · Bootstrap.**
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
**
|
|
65
|
+
**2 · Bootstrap.**
|
|
66
|
+
|
|
67
|
+
1. Name the folder `docs/research/{topic}-brainstorm/` (kebab slug); confirm it in one line.
|
|
68
|
+
2. Create `ops/` holding a `.gitignore` containing `*`, `ops/capture.md`, and `ops/sync-log.md`.
|
|
69
|
+
3. Copy the basis into `basis/`. Add no index row — the folder is the session's entry.
|
|
70
|
+
4. Write the sync-log dispatch line and dispatch the twin (gate: start) to write the initial
|
|
71
|
+
surface. **Never scaffold** `state.md`, `thesis.md`, `forks.md`, or `ledger.md` yourself.
|
|
72
|
+
|
|
73
|
+
**3 · Calibrate and frame.**
|
|
74
|
+
|
|
75
|
+
1. Distill the basis first — it seeds everything.
|
|
76
|
+
2. Calibrate from the living docs (the ownership index, recent decision records, any
|
|
77
|
+
open-questions doc), so your questions match this repo, not a template.
|
|
78
|
+
3. Ask one `AskUserQuestion` batch:
|
|
79
|
+
- **sitting** — single sprint (the default, and the shape that succeeds) or explicitly multi;
|
|
80
|
+
- **execution reality** — greenfield, brownfield, or hybrid; a migration gotcha found at plan
|
|
81
|
+
time is found too late;
|
|
82
|
+
- **where the idea is now** — fully in their head → dump; half-formed → interview.
|
|
83
|
+
4. Propose the **aspect map** — the thinking dimensions for *this* idea, derived from the basis,
|
|
84
|
+
from no fixed list. The user edits it; it lives in `state.md`.
|
|
85
|
+
|
|
86
|
+
**4 · Orient.** In 3–4 lines, written for a first-time user: how the session works (you talk, the
|
|
69
87
|
folder keeps everything), the steering verbs in plain words, "let me read" (pause and read the
|
|
70
88
|
thesis anytime), and what `stop` does (converge → your approval → harvest → the folder moves and
|
|
71
|
-
you choose delete or commit). Then begin — **always in dump or interview**; probe and converge
|
|
72
|
-
|
|
89
|
+
you choose delete or commit). Then begin — **always in dump or interview**; probe and converge are
|
|
90
|
+
mid-session moves, never starting postures.
|
|
73
91
|
|
|
74
92
|
## The moves
|
|
75
93
|
|
|
76
|
-
Five
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
- **converge** — burn forks down to commitments or explicit parks. `AskUserQuestion` for picks.
|
|
105
|
-
Each resolution carries Why + How to apply (the twin files it; you capture it).
|
|
94
|
+
Five user-steerable moves set who drives and how much gets asked. There is no `MODE:` field, no
|
|
95
|
+
switch ceremony, and no sanctioned trigger word: **any phrasing that implies a move triggers it**
|
|
96
|
+
("I want to poke holes" → probe; "what am I missing?" → blindspot; "let's decide" → converge). The
|
|
97
|
+
first time each move fires, name what you are doing in one line. When the signals call for a
|
|
98
|
+
switch (the user monologues mid-interview; every probe answer is "haven't thought about it"), offer
|
|
99
|
+
it once — never seize it.
|
|
100
|
+
|
|
101
|
+
- **dump** — the user drives. Ask no questions mid-stream. Reflect back the shape, contradictions,
|
|
102
|
+
and implications as they land — that reflection is the active listening; **never sit silent**.
|
|
103
|
+
- **interview** — you drive. `AskUserQuestion` batches of 2–3, one aspect at a time. Derive the
|
|
104
|
+
questions from the basis and the current surface — **never** from a template inventory, and
|
|
105
|
+
**never** interview to fill empty files.
|
|
106
|
+
- **probe** — you challenge: flaws, edge cases, conflicts with the tech or domain fragment. Note
|
|
107
|
+
each finding in ops and move on; **never** demand resolution mid-probe.
|
|
108
|
+
- **blindspot** — the hunt for unknown unknowns, **dispatched, never conversed**: you co-built the
|
|
109
|
+
frame, so the outside view belongs to the twin.
|
|
110
|
+
1. Dispatch the twin (gate: on demand, scope: blindspot) to cold-read the whole surface against
|
|
111
|
+
the thesis's stated goal. Its quality gate kills any candidate not grounded in this folder,
|
|
112
|
+
material to the design, new, and answerable; at most five survivors return, each already
|
|
113
|
+
filed as a fork.
|
|
114
|
+
2. Relay survivors in prose — finding → why it is material here → what answering it would
|
|
115
|
+
change — **never** as a question barrage: the user engages what matters, and converge burns
|
|
116
|
+
the rest down later. Zero survivors is one relay line; **never** manufacture findings.
|
|
117
|
+
3. Self-initiate a pass, without offering, whenever the frame settles — an aspect closes, a
|
|
118
|
+
converge burst lands, the thesis materially recomposes — by widening a reconcile dispatch's
|
|
119
|
+
scope. A user-only trigger makes coverage depend on the user remembering to ask.
|
|
120
|
+
- **converge** — burn forks down to commitments or explicit parks, with `AskUserQuestion` for
|
|
121
|
+
picks. Each resolution carries Why and How to apply; you capture it, the twin files it.
|
|
106
122
|
|
|
107
123
|
## Twin dispatches — the gates
|
|
108
124
|
|
|
109
|
-
Dispatch at
|
|
110
|
-
flight at a time
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
125
|
+
Dispatch at **start** (bootstrap), **on demand** (below), **pause**, and **stop** — **one dispatch in
|
|
126
|
+
flight at a time**.
|
|
127
|
+
|
|
128
|
+
1. Before each dispatch, write its line to `ops/sync-log.md`
|
|
129
|
+
(`S# | gate: <g> | dispatched: <ts> | scope: <s>`). The twin appends the result; the pairing
|
|
130
|
+
keeps reconciliation observable instead of asserted.
|
|
131
|
+
2. At the next turn break, relay the twin's one-line report ("4 edits · 2 new forks · 6 open ·
|
|
132
|
+
untouched: risks") plus what the recompose changed — a rewrite of the user's thinking is
|
|
133
|
+
**never** silent. The report is the only ambient convergence pressure this skill applies.
|
|
134
|
+
3. On a `failed` result, tell the user plainly and re-dispatch at the next gate.
|
|
135
|
+
|
|
136
|
+
**On demand** means the user asks ("let me read", "sync up", "what's open?"), or you judge the
|
|
137
|
+
capture has outrun the surface meaningfully. **"Let me read"** is a designed-for pause, not an
|
|
138
|
+
interruption: dispatch a compose (say honestly it takes a couple of minutes), point the user at
|
|
139
|
+
`thesis.md` — claim → argument → what changed, stamped — and resume when they return.
|
|
124
140
|
|
|
125
141
|
## Re-entry — resume, or context loss
|
|
126
142
|
|
|
127
|
-
Re-entry is a read, not a reconstruction
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
143
|
+
Re-entry is a read, not a reconstruction. It covers three triggers identically: resuming a parked
|
|
144
|
+
session, a new sitting, and **losing conversational context mid-session (compaction)** — finding
|
|
145
|
+
yourself mid-session without memory of it means running this procedure; nothing you "remembered"
|
|
146
|
+
matters.
|
|
147
|
+
|
|
148
|
+
1. Re-read this hub, `state.md` (posture line first), and the tail of `ops/capture.md`.
|
|
149
|
+
2. Dispatch the twin (gate: on demand) for a re-brief and freshness audit.
|
|
150
|
+
|
|
151
|
+
While a session folder exists, read `state.md` at the start of every turn.
|
|
134
152
|
|
|
135
153
|
## `stop` — the fixed pipeline
|
|
136
154
|
|
|
137
|
-
Read `references/harvest.md` first. The pipeline always runs — a stop *is* convergence plus
|
|
138
|
-
harvest
|
|
155
|
+
Read `references/harvest.md` first. The pipeline **always** runs — a stop *is* convergence plus
|
|
156
|
+
harvest. You orchestrate; the twin executes each leg.
|
|
139
157
|
|
|
140
|
-
1. **Converge** — every open fork
|
|
141
|
-
(mini-converge in conversation; the scope-guard trio in `harvest.md` disambiguates parks).
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
2. **Final sync
|
|
158
|
+
1. **Converge** — resolve every open fork now, or park it explicitly with a destination
|
|
159
|
+
(mini-converge in conversation; the scope-guard trio in `harvest.md` disambiguates parks). If no
|
|
160
|
+
blindspot round has run this session, offer one first, once — an unknown unknown found after
|
|
161
|
+
commitments freeze is the expensive kind.
|
|
162
|
+
2. **Final sync and manifest** — dispatch the twin (gate: stop). It builds the manifest only when
|
|
145
163
|
the detector's manifest gate is clean; relay anything blocking.
|
|
146
|
-
3. **One approval** — present the manifest via `AskUserQuestion`. Gap rounds
|
|
147
|
-
|
|
148
|
-
4. **Apply → uselessness test → move** — the twin's legs; relay results. Harvest fails loud:
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
5. **The offer** — after the move to `docs/history/brainstorms/{topic}
|
|
152
|
-
commit it
|
|
164
|
+
3. **One approval** — present the manifest via `AskUserQuestion`. Gap rounds re-enter here: every
|
|
165
|
+
write to canonical docs is user-approved, **no exceptions**.
|
|
166
|
+
4. **Apply → uselessness test → move** — the twin's legs; relay the results. Harvest fails loud: a
|
|
167
|
+
partial apply leaves the folder visibly unfinished in `docs/research/` and the user restarts the
|
|
168
|
+
stop — **never** resume silently.
|
|
169
|
+
5. **The offer** — after the move to `docs/history/brainstorms/{topic}/`, ask via
|
|
170
|
+
`AskUserQuestion`: **delete the folder, or commit it**. The user decides; the design assumes
|
|
171
|
+
deletion.
|
|
153
172
|
|
|
154
173
|
## Conduct — holds for the whole session
|
|
155
174
|
|
|
156
|
-
1. **Speak plain English; codes live in files.** Name every item by what it is
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
2. **No production code outside the session folder while open.** Illustrative snippets live
|
|
160
|
-
the folder. Asked for production code
|
|
175
|
+
1. **Speak plain English; codes live in files.** Name every item by what it is, with the code in
|
|
176
|
+
parentheses only where traceability needs it ("…the timeout question (F2)"). **Never** lead with
|
|
177
|
+
a bare `F3`/`D7`.
|
|
178
|
+
2. **No production code outside the session folder while it is open.** Illustrative snippets live
|
|
179
|
+
in the folder. Asked for production code, offer a sketch inside the folder, or `/brainstorm stop`
|
|
161
180
|
first.
|
|
162
|
-
3. **`AskUserQuestion` at exactly four sites:** the intake frame batch, interview batches,
|
|
163
|
-
|
|
181
|
+
3. **`AskUserQuestion` at exactly four sites:** the intake frame batch, interview batches, converge
|
|
182
|
+
picks, and the stop approvals (manifest; delete-or-commit). Everywhere else, prose.
|
|
164
183
|
4. **Suggested, never seized.** Moves, abstractions, probes — one offer each; accept refusal
|
|
165
|
-
without re-litigating.
|
|
166
|
-
conversational control
|
|
167
|
-
5. **Nothing lives only in the transcript.**
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
6. **The user decides when to converge and when to stop.** Distance-to-coherent is visible in
|
|
171
|
-
|
|
184
|
+
without re-litigating. The one exemption is a self-initiated blindspot dispatch: it takes no
|
|
185
|
+
conversational control, and its findings arrive as forks the user may ignore.
|
|
186
|
+
5. **Nothing lives only in the transcript.** What is not in the folder or in ops does not exist.
|
|
187
|
+
Flaws, gaps, and contradictions reach the twin as capture; the twin turns them into forks, the
|
|
188
|
+
only convergence currency.
|
|
189
|
+
6. **The user decides when to converge and when to stop.** Distance-to-coherent is visible in every
|
|
190
|
+
relayed twin report; **never** say "let's decide now."
|
|
172
191
|
7. **Only `/brainstorm start` and `/brainstorm stop` enter or leave a session.** No
|
|
173
192
|
auto-invocation, ever.
|