@thebassclef/lite 0.1.3 → 1.0.1

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 (293) hide show
  1. package/dist/cli.cjs +431 -135
  2. package/dist/cli.js +433 -137
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.bassclef-source.json +10 -0
  7. package/{substrate → dist/lite}/.claude/hooks/artifact-ingestion-gate.sh +0 -0
  8. package/{substrate → dist/lite}/.claude/hooks/assert-verify-steering.sh +0 -0
  9. package/{substrate → dist/lite}/.claude/hooks/bassclef-source-config-validate.sh +0 -0
  10. package/{substrate → dist/lite}/.claude/hooks/bassclef-sync.sh +0 -0
  11. package/{substrate → dist/lite}/.claude/hooks/compound-noun-scrub.sh +0 -0
  12. package/{substrate → dist/lite}/.claude/hooks/kiss-expansion-inject.sh +0 -0
  13. package/{substrate → dist/lite}/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -0
  14. package/{substrate → dist/lite}/.claude/hooks/plain-english-steering.sh +0 -0
  15. package/{substrate → dist/lite}/.claude/hooks/post-skill-friction-check.sh +0 -0
  16. package/{substrate → dist/lite}/.claude/hooks/post-skill-telemetry.sh +0 -0
  17. package/{substrate → dist/lite}/.claude/hooks/pre-build-gate.sh +0 -0
  18. package/{substrate → dist/lite}/.claude/hooks/pre-commit-gate.sh +0 -0
  19. package/{substrate → dist/lite}/.claude/hooks/session-end.sh +0 -0
  20. package/{substrate → dist/lite}/.claude/hooks/session-reflection.sh +0 -0
  21. package/{substrate → dist/lite}/.claude/hooks/skill-body-grade-gate.sh +0 -0
  22. package/{substrate → dist/lite}/.claude/hooks/skill-body-intent-drift.sh +0 -0
  23. package/{substrate → dist/lite}/.claude/hooks/state-validate.sh +0 -0
  24. package/{substrate → dist/lite}/.claude/hooks/substrate-clarity-gate.sh +0 -0
  25. package/{substrate → dist/lite}/.claude/hooks/temperance-gate.sh +0 -0
  26. package/{substrate → dist/lite}/.claude/hooks/testing-tier-enforce.sh +0 -0
  27. package/{substrate → dist/lite}/.claude/hooks/turn-prose-grade-measure.sh +0 -0
  28. package/{substrate → dist/lite}/.claude/hooks/turn-prose-kiss-check.sh +0 -0
  29. package/{substrate → dist/lite}/.claude/hooks/vocabulary-migration-check.sh +0 -0
  30. package/{substrate → dist/lite}/.claude/hooks/whereami-utc-gate.sh +0 -0
  31. package/dist/lite/.claude/settings.json +212 -0
  32. package/dist/lite/CLAUDE.md +41 -0
  33. package/dist/lite/gitignore +58 -0
  34. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  35. package/dist/lite/whereami.md +24 -0
  36. package/package.json +8 -2
  37. package/substrate/.bassclef/lite-manifest.json +0 -2701
  38. package/substrate/.claude/agents/architect.md +0 -70
  39. package/substrate/.claude/agents/builder.md +0 -114
  40. package/substrate/.claude/agents/designer.md +0 -156
  41. package/substrate/.claude/agents/reviewer.md +0 -88
  42. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  43. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  44. package/substrate/.claude/luminaries/alan-cooper.md +0 -170
  45. package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
  46. package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
  47. package/substrate/.claude/luminaries/ash-maurya.md +0 -121
  48. package/substrate/.claude/luminaries/bill-buxton.md +0 -210
  49. package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
  50. package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
  51. package/substrate/.claude/luminaries/don-norman.md +0 -173
  52. package/substrate/.claude/luminaries/edward-tufte.md +0 -179
  53. package/substrate/.claude/luminaries/eric-evans.md +0 -160
  54. package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
  55. package/substrate/.claude/luminaries/gang-of-four.md +0 -157
  56. package/substrate/.claude/luminaries/glenford-myers.md +0 -230
  57. package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
  58. package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
  59. package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
  60. package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
  61. package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
  62. package/substrate/.claude/luminaries/karl-popper.md +0 -132
  63. package/substrate/.claude/luminaries/kent-beck.md +0 -168
  64. package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
  65. package/substrate/.claude/luminaries/martin-fowler.md +0 -164
  66. package/substrate/.claude/luminaries/michael-feathers.md +0 -125
  67. package/substrate/.claude/luminaries/michael-nygard.md +0 -118
  68. package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
  69. package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
  70. package/substrate/.claude/luminaries/sophia-prater.md +0 -193
  71. package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
  72. package/substrate/.claude/luminaries/tony-hoare.md +0 -170
  73. package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
  74. package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
  75. package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
  76. package/substrate/.claude/rules/adr-discipline.md +0 -120
  77. package/substrate/.claude/rules/api-conventions.md +0 -125
  78. package/substrate/.claude/rules/artifact-ingestion.md +0 -179
  79. package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
  80. package/substrate/.claude/rules/blocked-items.md +0 -146
  81. package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
  82. package/substrate/.claude/rules/branching.md +0 -28
  83. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
  84. package/substrate/.claude/rules/commit-conventions.md +0 -22
  85. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
  86. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
  87. package/substrate/.claude/rules/context-engineering.md +0 -202
  88. package/substrate/.claude/rules/context-management.md +0 -85
  89. package/substrate/.claude/rules/defensive-bash.md +0 -68
  90. package/substrate/.claude/rules/deferred-actions.md +0 -233
  91. package/substrate/.claude/rules/destructive-operations.md +0 -69
  92. package/substrate/.claude/rules/diagnosis.md +0 -38
  93. package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
  94. package/substrate/.claude/rules/guardrails.md +0 -73
  95. package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
  96. package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
  97. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
  98. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
  99. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
  100. package/substrate/.claude/rules/loop-discipline.md +0 -81
  101. package/substrate/.claude/rules/manual-prod-approval.md +0 -100
  102. package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
  103. package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
  104. package/substrate/.claude/rules/new-dependency-check.md +0 -51
  105. package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
  106. package/substrate/.claude/rules/operator-facing-prose.md +0 -196
  107. package/substrate/.claude/rules/option-label-discipline.md +0 -108
  108. package/substrate/.claude/rules/pattern-annotation.md +0 -100
  109. package/substrate/.claude/rules/plain-english-discipline.md +0 -156
  110. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
  111. package/substrate/.claude/rules/pr-body-shape.md +0 -317
  112. package/substrate/.claude/rules/pr-strategy.md +0 -167
  113. package/substrate/.claude/rules/pr-title-shape.md +0 -161
  114. package/substrate/.claude/rules/prototype-workflow.md +0 -65
  115. package/substrate/.claude/rules/reserved-skill-names.md +0 -123
  116. package/substrate/.claude/rules/schema-management.md +0 -49
  117. package/substrate/.claude/rules/sdlc-gates.md +0 -149
  118. package/substrate/.claude/rules/security.md +0 -37
  119. package/substrate/.claude/rules/session-artifacts.md +0 -236
  120. package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
  121. package/substrate/.claude/rules/skill-description-clarity.md +0 -247
  122. package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
  123. package/substrate/.claude/rules/state-schema-validation.md +0 -162
  124. package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
  125. package/substrate/.claude/rules/substrate-config-schema.md +0 -98
  126. package/substrate/.claude/rules/test-list-discipline.md +0 -175
  127. package/substrate/.claude/rules/test-sufficiency.md +0 -210
  128. package/substrate/.claude/rules/testing-tier-config.md +0 -145
  129. package/substrate/.claude/rules/testing.md +0 -38
  130. package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
  131. package/substrate/.claude/rules/visual-hierarchy.md +0 -437
  132. package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
  133. package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
  134. package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
  135. package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
  136. package/substrate/.claude/skills/build/SKILL.md +0 -640
  137. package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
  138. package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
  139. package/substrate/.claude/skills/decompose/SKILL.md +0 -280
  140. package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
  141. package/substrate/.claude/skills/feynman/SKILL.md +0 -90
  142. package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
  143. package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
  144. package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
  145. package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
  146. package/substrate/.claude/skills/journal/SKILL.md +0 -209
  147. package/substrate/.claude/skills/kiss/SKILL.md +0 -449
  148. package/substrate/.claude/skills/launch/SKILL.md +0 -915
  149. package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
  150. package/substrate/.claude/skills/longrun/SKILL.md +0 -463
  151. package/substrate/.claude/skills/luminary/SKILL.md +0 -481
  152. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
  153. package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
  154. package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
  155. package/substrate/.claude/skills/personas/SKILL.md +0 -207
  156. package/substrate/.claude/skills/promote/SKILL.md +0 -283
  157. package/substrate/.claude/skills/requirement/SKILL.md +0 -98
  158. package/substrate/.claude/skills/retro/SKILL.md +0 -117
  159. package/substrate/.claude/skills/riff/SKILL.md +0 -114
  160. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
  161. package/substrate/.claude/skills/session-end/SKILL.md +0 -309
  162. package/substrate/.claude/skills/session-log/SKILL.md +0 -299
  163. package/substrate/.claude/skills/skills/SKILL.md +0 -228
  164. package/substrate/.claude/skills/spec/SKILL.md +0 -105
  165. package/substrate/.claude/skills/sprint/SKILL.md +0 -392
  166. package/substrate/.claude/skills/stage/SKILL.md +0 -384
  167. package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
  168. package/substrate/.claude/skills/temperance/SKILL.md +0 -108
  169. package/substrate/.claude/skills/use-case/SKILL.md +0 -417
  170. package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
  171. package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
  172. package/substrate/.claude/skills/verify/SKILL.md +0 -160
  173. package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
  174. package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
  175. package/substrate/.claude/skills/whereami/SKILL.md +0 -307
  176. package/substrate/AGENTS.md +0 -79
  177. package/substrate/CLAUDE-lite.md +0 -85
  178. package/substrate/CODE_OF_CONDUCT.md +0 -28
  179. package/substrate/CONTRIBUTING.md +0 -177
  180. package/substrate/README.md +0 -173
  181. package/substrate/SECURITY.md +0 -19
  182. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
  183. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
  184. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
  185. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
  186. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
  187. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
  188. package/substrate/lib/clean-artifacts-sweep.sh +0 -112
  189. package/substrate/lib/code-comment-discipline.sh +0 -144
  190. package/substrate/lib/composer-preflight.sh +0 -459
  191. package/substrate/lib/hook-inject.sh +0 -255
  192. package/substrate/lib/luminary-pick.sh +0 -96
  193. package/substrate/lib/output-discipline.sh +0 -143
  194. package/substrate/lib/prose-scan-boundary.sh +0 -171
  195. package/substrate/lib/rewrite-check.sh +0 -214
  196. package/substrate/lib/state.sh +0 -1372
  197. package/substrate/lib/telemetry.sh +0 -205
  198. package/substrate/lib/tier-check.sh +0 -187
  199. package/substrate/lib/tier-dependency-audit.sh +0 -1088
  200. package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
  201. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
  202. package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
  203. package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
  204. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
  205. package/substrate/scripts/aggregate-telemetry.sh +0 -217
  206. package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
  207. package/substrate/scripts/generate-lite-manifest.sh +0 -505
  208. package/substrate/scripts/generate-tier-manifest.sh +0 -28
  209. package/substrate/scripts/intent-drift-check.sh +0 -456
  210. package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
  211. package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
  212. package/substrate/standards/adr-template.md +0 -86
  213. package/substrate/standards/api-conventions/nextjs.md +0 -84
  214. package/substrate/standards/artifact-composition.md +0 -209
  215. package/substrate/standards/bash-hook-safety.md +0 -246
  216. package/substrate/standards/bassclef-configs-schema.md +0 -232
  217. package/substrate/standards/bassclef-evolution.md +0 -143
  218. package/substrate/standards/bassclef-internal-jargon.md +0 -244
  219. package/substrate/standards/bassclef-managed-sentinel.md +0 -96
  220. package/substrate/standards/bassclef-source-config.md +0 -228
  221. package/substrate/standards/branch-stacking.md +0 -408
  222. package/substrate/standards/code-safety-principles.md +0 -176
  223. package/substrate/standards/composer-prerequisites.md +0 -155
  224. package/substrate/standards/deferred-actions-schema.md +0 -204
  225. package/substrate/standards/dependency-discipline/cargo.md +0 -39
  226. package/substrate/standards/dependency-discipline/gem.md +0 -43
  227. package/substrate/standards/dependency-discipline/go-mod.md +0 -41
  228. package/substrate/standards/dependency-discipline/npm.md +0 -42
  229. package/substrate/standards/dependency-discipline/pip.md +0 -42
  230. package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
  231. package/substrate/standards/deployment-topology.md +0 -69
  232. package/substrate/standards/docs-sync-allowlist.md +0 -76
  233. package/substrate/standards/domain-and-dns.md +0 -145
  234. package/substrate/standards/frontend-stack.md +0 -67
  235. package/substrate/standards/frontmatter-schema.md +0 -154
  236. package/substrate/standards/graceful-exit.md +0 -227
  237. package/substrate/standards/hook-idempotency.md +0 -102
  238. package/substrate/standards/hook-injection-discipline.md +0 -202
  239. package/substrate/standards/hook-install-class.md +0 -215
  240. package/substrate/standards/input-handler-interface.md +0 -152
  241. package/substrate/standards/lite-manifest-schema-changes.md +0 -135
  242. package/substrate/standards/luminary-matching.md +0 -105
  243. package/substrate/standards/luminary-problem-patterns.md +0 -481
  244. package/substrate/standards/migration-discipline/active-record.md +0 -50
  245. package/substrate/standards/migration-discipline/alembic.md +0 -43
  246. package/substrate/standards/migration-discipline/gorm.md +0 -50
  247. package/substrate/standards/migration-discipline/prisma.md +0 -53
  248. package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
  249. package/substrate/standards/mobile-ephemeral-session.md +0 -167
  250. package/substrate/standards/model-routing-discipline.md +0 -160
  251. package/substrate/standards/ogilvy-writing-rules.md +0 -225
  252. package/substrate/standards/opener-discipline.md +0 -96
  253. package/substrate/standards/operator-facing-prose-discipline.md +0 -201
  254. package/substrate/standards/persona-schema.md +0 -229
  255. package/substrate/standards/pluggable-luminaries.md +0 -323
  256. package/substrate/standards/pr-body-discipline.md +0 -115
  257. package/substrate/standards/preview-state-schema.md +0 -189
  258. package/substrate/standards/project-directory-layout.md +0 -276
  259. package/substrate/standards/release-tagging.md +0 -137
  260. package/substrate/standards/reserved-skill-names.md +0 -120
  261. package/substrate/standards/scannable-multi-option-output.md +0 -261
  262. package/substrate/standards/sdlc-compliance.md +0 -286
  263. package/substrate/standards/sdlc-gates/typescript.md +0 -57
  264. package/substrate/standards/secrets-lifecycle.md +0 -210
  265. package/substrate/standards/security-scanner-adapter.md +0 -145
  266. package/substrate/standards/session-board.md +0 -256
  267. package/substrate/standards/skill-output-discipline.md +0 -90
  268. package/substrate/standards/state-spine-contract.md +0 -255
  269. package/substrate/standards/state-spine.md +0 -511
  270. package/substrate/standards/steering-hints/kiss-words.md +0 -11
  271. package/substrate/standards/substrate-config-schema.md +0 -267
  272. package/substrate/standards/tech-stack-config.md +0 -109
  273. package/substrate/standards/tier-dependency-analysis.md +0 -167
  274. package/substrate/standards/tier-runtime-deps/lite.md +0 -57
  275. package/substrate/standards/tier-tag-schema.md +0 -155
  276. package/substrate/standards/two-layer-config.md +0 -99
  277. package/substrate/standards/use-case-format.md +0 -292
  278. package/substrate/standards/user-story-invest.md +0 -268
  279. package/substrate/standards/velocity-and-appetite.md +0 -229
  280. package/substrate/standards/voice-input-pattern.md +0 -119
  281. package/substrate/standards/whereami-schema.md +0 -301
  282. package/substrate/standards/worktree-management.md +0 -211
  283. package/substrate/standards/writing-guide.md +0 -213
  284. package/substrate/templates/chronicle-template.md +0 -75
  285. package/substrate/templates/deferred-action-template.md +0 -45
  286. package/substrate/templates/memory-proposal-template.md +0 -77
  287. package/substrate/templates/persona-template.md +0 -200
  288. package/substrate/templates/pr-faq.md +0 -45
  289. package/substrate/templates/secret-rotation-template.md +0 -162
  290. package/substrate/templates/spec-template.md +0 -131
  291. package/substrate/templates/use-case-template.md +0 -194
  292. package/substrate/templates/user-story-template.md +0 -107
  293. package/substrate/templates/whereami-template.md +0 -101
@@ -1,150 +0,0 @@
1
- #!/usr/bin/env bash
2
- # tier: lite
3
- # Render human-readable companion doc from lite-manifest.json.
4
- #
5
- # Reads lite-manifest.json at repo root by default; writes docs/lite-manifest.md.
6
- # The companion doc IS the human-readable projection of the machine-readable
7
- # manifest — same source of truth, two projections per Ousterhout deep-modules.
8
- #
9
- # Per bassclef-upstream#1020 Step 4. Session 2026-08-01d option b.
10
- #
11
- # Cures per pre-mortem risk ledger docs/risk-ledgers/2026-08-01c-lite-manifest.md:
12
- # F3.4 — prominent version banner at top; every regeneration bumps timestamp
13
- # F-b.N3 — anchor on schema file (stable path) not manifest file (may move)
14
- #
15
- # Usage:
16
- # scripts/render-lite-manifest-doc.sh # reads root manifest, writes docs/lite-manifest.md
17
- # scripts/render-lite-manifest-doc.sh --dry-run # prints to stdout
18
- # scripts/render-lite-manifest-doc.sh --input PATH # read manifest from PATH
19
- # scripts/render-lite-manifest-doc.sh --output PATH # write to PATH
20
- # scripts/render-lite-manifest-doc.sh --root PATH # override repo root
21
-
22
- set -euo pipefail
23
-
24
- DRY_RUN=0
25
- INPUT_PATH=""
26
- OUTPUT_PATH=""
27
- REPO_ROOT_OVERRIDE=""
28
-
29
- while [[ $# -gt 0 ]]; do
30
- case "$1" in
31
- --dry-run) DRY_RUN=1; shift ;;
32
- --input) INPUT_PATH="${2:-}"; shift 2 ;;
33
- --output) OUTPUT_PATH="${2:-}"; shift 2 ;;
34
- --root) REPO_ROOT_OVERRIDE="${2:-}"; shift 2 ;;
35
- -h|--help)
36
- grep -E '^# ' "$0" | sed 's/^# \?//'
37
- exit 0
38
- ;;
39
- *) echo "Unknown arg: $1 (use --help)" >&2; exit 1 ;;
40
- esac
41
- done
42
-
43
- if [[ -n "$REPO_ROOT_OVERRIDE" ]]; then
44
- REPO_ROOT="$REPO_ROOT_OVERRIDE"
45
- else
46
- REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || true)"
47
- fi
48
-
49
- if [[ -z "$REPO_ROOT" || ! -d "$REPO_ROOT" ]]; then
50
- echo "render-lite-manifest-doc: cannot resolve repo root" >&2
51
- exit 1
52
- fi
53
-
54
- [[ -z "$INPUT_PATH" ]] && INPUT_PATH="${REPO_ROOT}/lite-manifest.json"
55
- [[ -z "$OUTPUT_PATH" ]] && OUTPUT_PATH="${REPO_ROOT}/docs/lite-manifest.md"
56
-
57
- if [[ ! -f "$INPUT_PATH" ]]; then
58
- echo "render-lite-manifest-doc: manifest not found at $INPUT_PATH" >&2
59
- echo "Run scripts/generate-lite-manifest.sh first." >&2
60
- exit 1
61
- fi
62
-
63
- if ! command -v jq >/dev/null 2>&1; then
64
- echo "render-lite-manifest-doc: missing dependency: jq" >&2
65
- exit 1
66
- fi
67
-
68
- VERSION=$(jq -r '.manifest_version' "$INPUT_PATH")
69
- GENERATED=$(jq -r '.generated_at' "$INPUT_PATH")
70
- COMMIT=$(jq -r '.upstream_commit' "$INPUT_PATH")
71
- SHORT_COMMIT="${COMMIT:0:7}"
72
- TOTAL=$(jq '.entries | length' "$INPUT_PATH")
73
-
74
- # Emit doc to stdout via function; caller decides where to redirect.
75
- render_doc() {
76
- echo "# Lite manifest — v${VERSION}"
77
- echo ""
78
- echo "<!-- Auto-generated by scripts/render-lite-manifest-doc.sh from lite-manifest.json. Do not edit by hand. -->"
79
- echo ""
80
- echo "**Version:** \`${VERSION}\` "
81
- echo "**Generated:** \`${GENERATED}\` "
82
- echo "**Upstream commit:** \`${SHORT_COMMIT}\` "
83
- echo "**Total entries:** ${TOTAL} "
84
- echo "**Schema:** [\`standards/lite-manifest.schema.json\`](../standards/lite-manifest.schema.json) "
85
- echo "**Machine-readable:** [\`lite-manifest.json\`](../lite-manifest.json) (at repo root)"
86
- echo ""
87
- echo "> Partners pin against \`manifest_version\`. Membership changes ship as manifest bumps with a changelog entry. Adding an entry is a minor bump; removing is a major bump (breaks partners); description or content-hash change without membership change is a patch bump."
88
-
89
- render_section "skill" "Skills"
90
- render_section "rule" "Rules"
91
- render_section "hook" "Hooks"
92
- render_section "luminary" "Luminaries"
93
- render_section "agent" "Agents"
94
- render_section "standard" "Standards"
95
- render_section "adr" "Architecture Decision Records"
96
- # Per #1392 Shape 3 (goal 2026-08-27a) — 5 install surfaces bassclef-cli needs
97
- render_section "lib" "Shared Libraries"
98
- render_section "script" "Scripts"
99
- render_section "presence-template" "Install Templates"
100
- render_section "template" "Content Templates"
101
- render_section "root-doc" "Root Documentation"
102
-
103
- echo ""
104
- echo "---"
105
- echo ""
106
- echo "## For partners"
107
- echo ""
108
- echo "- Fetch the manifest from repo root: \`lite-manifest.json\`"
109
- echo "- Validate against the schema at \`standards/lite-manifest.schema.json\` (JSON Schema draft 2020-12 strict)"
110
- echo "- Pin your build to a specific \`manifest_version\`; upgrade deliberately"
111
- echo "- Every \`entries[].path\` is repo-relative; the source file at that path is the authoritative content"
112
- echo "- Use \`entries[].content_hash\` to cache-invalidate"
113
- echo ""
114
- echo "## Semver bump policy"
115
- echo ""
116
- echo "| Change | Bump |"
117
- echo "|---|---|"
118
- echo "| Entry added to \`entries[]\` | Minor |"
119
- echo "| Entry removed from \`entries[]\` | Major (breaks partners) |"
120
- echo "| Description or content_hash change without membership change | Patch |"
121
- echo "| Schema shape change (new field added) | Minor |"
122
- echo "| Schema shape change (field removed or type changed) | Major |"
123
- echo ""
124
- echo "Refs — bassclef-upstream#1020 (this manifest) + bassclef-upstream#1030 (root location) + ADR-040 (lite profile) + ADR-031 (we don't break adopters)."
125
- }
126
-
127
- render_section() {
128
- local surface_type="$1"
129
- local title="$2"
130
- local count
131
- count=$(jq --arg t "$surface_type" '[.entries[] | select(.type == $t)] | length' "$INPUT_PATH")
132
- [[ "$count" -eq "0" ]] && return
133
-
134
- echo ""
135
- echo "## ${title} (${count})"
136
- echo ""
137
- jq -r --arg t "$surface_type" '
138
- .entries[] | select(.type == $t) |
139
- "- **" + .slug + "** — `" + .path + "`" +
140
- (if .description then " \n " + .description else "" end)
141
- ' "$INPUT_PATH"
142
- }
143
-
144
- if [[ "$DRY_RUN" == "1" ]]; then
145
- render_doc
146
- else
147
- mkdir -p "$(dirname "$OUTPUT_PATH")"
148
- render_doc > "$OUTPUT_PATH"
149
- echo "Wrote $OUTPUT_PATH ($TOTAL entries; commit $SHORT_COMMIT)" >&2
150
- fi
@@ -1,86 +0,0 @@
1
- ---
2
- tier: lite
3
- id: ADR-NNN
4
- title: <Short title — present-tense imperative, ≤80 chars>
5
- status: proposed
6
- date: <YYYY-MM-DD>
7
- supersedes: null
8
- superseded_by: null
9
- ---
10
-
11
- # ADR-NNN — <Title>
12
-
13
- ## Context
14
-
15
- What is the issue motivating this decision? Describe the forces at play. Include constraints (technical, business, organizational), prior options considered, and what's driving the need for a decision now.
16
-
17
- Keep this section descriptive, not prescriptive. The reader should understand the situation before encountering the decision.
18
-
19
- ## Decision
20
-
21
- What did we decide? State the choice in one or two sentences.
22
-
23
- Follow with the rationale — why this option, not the alternatives.
24
-
25
- ## Status
26
-
27
- `proposed` | `accepted` | `deprecated` | `superseded`
28
-
29
- Lifecycle:
30
- - `proposed` — drafted, under review
31
- - `accepted` — adopted; load-bearing
32
- - `deprecated` — no longer recommended, but not yet replaced
33
- - `superseded` — replaced by ADR-MMM (note in `superseded_by` frontmatter)
34
-
35
- ## Consequences
36
-
37
- What becomes easier? Harder? More expensive? Cheaper?
38
-
39
- What follow-on work does this decision enable or block?
40
-
41
- What invariants does this decision establish? Future decisions must respect them.
42
-
43
- ## References
44
-
45
- - Related ADRs: ADR-XXX, ADR-YYY
46
- - External sources: links to RFCs, blog posts, library docs that informed the decision
47
- - Source incidents: PRs, chronicles, or tickets that surfaced the need
48
-
49
- ---
50
-
51
- ## How to use this template
52
-
53
- 1. Copy this file to your project's ADR directory:
54
- - `docs/adrs/ADR-NNN-<slug>.md` (most common)
55
- - `architecture/decisions/ADR-NNN-<slug>.md` (bassclef's own layout)
56
- 2. Pick the next sequential ADR number (look at existing files)
57
- 3. Replace the placeholder content; fill every section
58
- 4. Set status to `proposed` on draft; flip to `accepted` after operator review
59
- 5. Touch the marker: `mkdir -p state/markers/adr && touch state/markers/adr/<decision-slug>-ADR-NNN.md`
60
- 6. Commit alongside the architectural change
61
-
62
- ## When to write an ADR
63
-
64
- Per `.claude/rules/adr-discipline.md`, ADRs are required for load-bearing decisions:
65
-
66
- - Schema changes (ORM schema files, migration creation)
67
- - Framework or library choice at the platform level (not per-component)
68
- - Deployment topology changes (orchestrator, region, service-mesh, single-vs-multi-region)
69
- - Cross-cutting concerns (auth, logging, multi-tenancy, observability stack)
70
- - Interface boundaries between bounded contexts (per Evans DDD)
71
- - Deprecating or superseding a prior ADR
72
-
73
- Skip ADRs for:
74
- - Routine code changes (bug fixes, feature additions within an existing pattern)
75
- - Component-level library choices (which icon library, which date-picker)
76
- - Cosmetic refactors (variable renames, file reorganizations without behavior change)
77
-
78
- When in doubt, write the ADR. The marginal cost is ten minutes; the value to future you reading "why" is large.
79
-
80
- ## Refs
81
-
82
- - Michael Nygard's original ADR proposal: [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
83
- - bassclef#1149 — adr-discipline rule + hook
84
- - `.claude/rules/adr-discipline.md` — the rule that fires
85
- - `.claude/hooks/adr-discipline-check.sh` — the mechanical check
86
- - `.claude/rules/blocked-items.md` — BLOCK protocol the hook fires
@@ -1,84 +0,0 @@
1
- ---
2
- tier: lite
3
- description: Stack-specific instantiation of .claude/rules/api-conventions.md for Next.js App Router.
4
- ---
5
-
6
- # API Conventions — Next.js App Router
7
-
8
- Stack-specific instantiation of `.claude/rules/api-conventions.md` for Next.js App Router. Composed under ARCH-T0 #1133 Path A.
9
-
10
- ## When this sibling fires
11
-
12
- When adopter's `.claude/bassclef-configs.jsonc` has `tech_stack.frontend: nextjs`. The loader (future ticket) reads this sibling and applies the Next.js-specific guidance below in addition to the universal principles in the parent rule.
13
-
14
- Until the loader ships, this sibling is discoverable via the cross-reference table in the parent rule.
15
-
16
- ## File location
17
-
18
- - API routes live under `src/app/api/`
19
- - Route handler files: `src/app/api/[resource]/route.ts`
20
- - Nested resources: `src/app/api/[parent]/[parentId]/[child]/route.ts`
21
- - Dynamic segments use bracket syntax per Next.js App Router conventions
22
-
23
- ## Globs (for hook + tooling targeting)
24
-
25
- - `src/app/api/**/*.ts`
26
- - `src/app/api/**/*.tsx`
27
-
28
- These globs scope hooks + linting rules that fire only when the adopter is on Next.js.
29
-
30
- ## Auth conventions
31
-
32
- Next.js-specific auth helpers:
33
-
34
- - Use `getServerSession()` from NextAuth.js (or equivalent for the adopter's auth provider) for session retrieval in route handlers
35
- - Middleware at `src/middleware.ts` runs before route handlers; use it for auth gating, redirects, tenant resolution
36
- - API routes that modify data MUST check the session at handler entry; no exceptions
37
-
38
- ## Validation conventions
39
-
40
- Recommended Next.js + TypeScript stack pattern:
41
-
42
- - Use Zod schemas for request body validation
43
- - Parse + validate at the start of the route handler:
44
-
45
- ```typescript
46
- import { z } from "zod";
47
-
48
- const CreateDealSchema = z.object({
49
- title: z.string().min(1).max(200),
50
- amount: z.number().positive(),
51
- });
52
-
53
- export async function POST(req: Request) {
54
- const body = await req.json();
55
- const parsed = CreateDealSchema.safeParse(body);
56
- if (!parsed.success) {
57
- return Response.json(
58
- { error: { code: "VALIDATION_ERROR", message: "Invalid input", details: parsed.error.issues } },
59
- { status: 400 }
60
- );
61
- }
62
- // ...
63
- }
64
- ```
65
-
66
- ## Tenant context resolution
67
-
68
- For multi-tenant Next.js apps:
69
-
70
- - Tenant context resolved in middleware or at route boundary
71
- - Passed through to queries via React Server Components context or explicit function arguments
72
- - Never resolved inside ORM query callbacks (race conditions, leak risk)
73
-
74
- ## Composition with universal principles
75
-
76
- Apply the universal principles from `.claude/rules/api-conventions.md` first; the Next.js-specific patterns above add detail without overriding. When the two conflict (e.g., a Next.js convention contradicts the universal route-naming rule), the universal principle wins; file a `/promote` ticket if you believe the convention should be amended.
77
-
78
- ## Refs
79
-
80
- - Parent rule: `.claude/rules/api-conventions.md`
81
- - ARCH-T0 #1133 — operator-stack-leakage audit + remediation
82
- - bassclef#1309 — this sibling (api-conventions Path A WU-6 of bet 2026-06-20e)
83
- - bassclef#1150 T18 — sister Path A (migration-discipline)
84
- - Next.js App Router docs: https://nextjs.org/docs/app/building-your-application/routing/route-handlers
@@ -1,209 +0,0 @@
1
- ---
2
- tier: lite
3
- description: The substrate has three artifact classes that logically compose into a work-decomposition tree.
4
- ---
5
-
6
- # Artifact-Composition Standard
7
-
8
- The substrate has three artifact classes that logically compose into a
9
- work-decomposition tree. This standard codifies that hierarchy and the
10
- typed cross-references that make it walkable.
11
-
12
- ## The composition tree
13
-
14
- ```
15
- Roadmap (multi-week, multi-stage strategic frame)
16
- └── Stage
17
- └── Iteration goal (scoped commitment, fixed time budget)
18
- └── Phase
19
- └── Stack manifest (physical implementation plan)
20
- └── WS branch → PR → merged
21
- ```
22
-
23
- Each level is a separate artifact in a separate directory. The
24
- relationship between levels is expressed via **typed frontmatter
25
- fields** — not implicit-by-date-prefix or implicit-by-prose-citation.
26
-
27
- ## When this standard applies
28
-
29
- Required for every roadmap, iteration goal, and stack manifest written
30
- in any sunj-labs repo (bassclef + consumers via bassclef-sync).
31
-
32
- Optional for older artifacts predating this standard — backfill
33
- opportunistically when touching them, not as a forcing migration.
34
-
35
- ## Required + optional cross-references
36
-
37
- | Artifact class | Location | Required frontmatter | Optional frontmatter |
38
- |---|---|---|---|
39
- | Roadmap | `docs/roadmaps/` | — | `bets: [list of paths]` (populated as bets shape) |
40
- | Iteration goal | `docs/iteration-bets/` | — | `parent_roadmap: <path>`, `stack_manifest: <path>` |
41
- | Stack manifest | `docs/stacks/` (or `docs/branch-stacks/` — see note) | `bet: <path>` | `parent_roadmap: <path>` (transitive convenience) |
42
-
43
- **Required** = if the relationship exists, the field MUST be present in
44
- frontmatter. A bet that descends from a roadmap MUST set
45
- `parent_roadmap:`. A bet that doesn't descend from any roadmap (small
46
- one-off bets) doesn't have the field.
47
-
48
- **Optional** = the field is present when the artifact has a downward
49
- relationship the parent should know about. A roadmap's `bets:` list
50
- can be empty until the first goal shapes; populating it is a
51
- maintenance discipline.
52
-
53
- ### Note on stack-manifest directory
54
-
55
- The standard's earlier `standards/project-directory-layout.md` named
56
- `docs/branch-stacks/` for stack manifests. Actual usage in bassclef
57
- landed at `docs/stacks/`. Both paths exist in some repos. Consolidation
58
- is a separate cleanup; this standard accepts either as a valid stack-
59
- manifest location and points at whichever the artifact resolves to.
60
-
61
- ## Cross-reference integrity rule
62
-
63
- **A half-broken cross-reference is a substrate-defect.** Specifically:
64
-
65
- | Pattern | Signal |
66
- |---|---|
67
- | Prose citation present, frontmatter field missing | Substrate-defect — fix the artifact |
68
- | Frontmatter field present, target path doesn't exist | Substrate-defect — broken link |
69
- | Frontmatter field present, target's reciprocal field missing | Substrate-defect — one-way reference |
70
-
71
- Reciprocal-field discipline:
72
-
73
- - A bet with `parent_roadmap:` SHOULD appear in that roadmap's `bets:`
74
- list (the parent maintains the index).
75
- - A bet with `stack_manifest:` MUST point to a stack manifest whose
76
- `bet:` field points back at this bet.
77
- - A stack manifest with `parent_roadmap:` SHOULD point to a roadmap
78
- whose `bets:` list includes the manifest's parent goal.
79
-
80
- These reciprocal checks are surface-level mechanical: a future
81
- `/compose` skill (or `/sprint --tree` extension) can validate them
82
- in one pass. Today they're agent self-discipline at artifact write
83
- time.
84
-
85
- ## Why typed, not implicit-by-prose
86
-
87
- The substrate already had implicit composition by date-prefix
88
- convention (a roadmap at `2026-04-25-...` is "the parent of" a bet at
89
- `2026-04-25-...` simply because they share a date). That implicit
90
- convention failed:
91
-
92
- - Bets without roadmaps share dates with bets that have them
93
- - Stack manifests reference bets via prose mention with no parseable
94
- link
95
- - New session pickup has to read three directories and infer
96
- relationships from filenames
97
-
98
- Typed frontmatter:
99
-
100
- - Makes the relationship machine-readable (skills can walk the tree)
101
- - Survives renames (path is explicit, not derived)
102
- - Self-documents at the artifact level (a reader of any one artifact
103
- sees its parent + children without external context)
104
-
105
- ## Walkable lineage
106
-
107
- Given a typed cross-reference graph, any tool can render the lineage
108
- from any starting point:
109
-
110
- ```
111
- $ /compose docs/iteration-bets/2026-04-25-example-pipeline.md
112
-
113
- Lineage:
114
- docs/roadmaps/2026-04-25-example-roadmap.md
115
- └── docs/iteration-bets/2026-04-25-example-pipeline.md (active, Phase A0)
116
- └── docs/stacks/2026-04-25-pipeline-stack.md (6 WSes, 1 pr-open)
117
-
118
- Siblings (other bets descending from same roadmap):
119
- - (none yet — pipeline is sole child)
120
- ```
121
-
122
- The `/compose` skill is a separate /promote (bassclef#275 Part 3,
123
- deferred from this WS). Until it ships, agents walk the lineage
124
- manually by reading frontmatter — but the discipline is the same.
125
-
126
- ## Anti-patterns
127
-
128
- **Don't substitute prose for frontmatter fields.** "This bet descends
129
- from a historical example roadmap" in the body is not a substitute for
130
- `parent_roadmap: docs/roadmaps/...` in the frontmatter. Prose is for
131
- narrative; frontmatter is for the machine-readable graph.
132
-
133
- **Don't forget reciprocal updates.** When you set `stack_manifest:` on
134
- a bet, also update the stack manifest's `bet:` field if it doesn't
135
- already point back. One-way edges silently break the walkable lineage.
136
-
137
- **Don't backfill mass migrations.** Older artifacts predating this
138
- standard don't need a forcing PR. Backfill opportunistically when you
139
- touch them. The cost of mass backfill (large diff, no behavior change)
140
- exceeds the value of consistency-now.
141
-
142
- **Don't add fields not in the table above.** If a new relationship
143
- shape emerges (e.g., a bet that supersedes a prior bet), propose
144
- extending this standard before adding ad-hoc frontmatter fields.
145
- Schema discipline matters because tools will eventually parse this.
146
-
147
- ## Composition with other standards
148
-
149
- - `standards/project-directory-layout.md` — defines WHERE artifacts
150
- go; this standard defines HOW they reference each other. Pair, not
151
- replace.
152
- - `standards/branch-stacking.md` — stack-manifest content discipline;
153
- this standard adds the `bet:` and `parent_roadmap:` cross-refs.
154
- - `standards/session-board.md` — session-board references active bets
155
- by path in its `active_bets:` frontmatter; that's another typed
156
- cross-ref pattern (session → bets), but the session-board owns the
157
- schema for that one.
158
- - `.claude/rules/artifact-ingestion.md` — "Sources read" block is the
159
- ingestion pattern at write time; cross-refs are the persistent graph
160
- the ingestion block samples from.
161
-
162
- ## Enforcement
163
-
164
- Methodology-level today. Future mechanical enforcement:
165
-
166
- 1. `/compose` skill validates reciprocal references and surfaces
167
- half-broken edges.
168
- 2. `/sprint` extension renders the lineage tree as an orientation aid
169
- at session start.
170
- 3. A hook on PR creation could grep the touched bet/manifest/roadmap
171
- files for required-field presence and flag missing cross-refs.
172
-
173
- Until those exist, the discipline is agent self-check at artifact
174
- write time. The "Sources read" block in any new artifact is the
175
- natural moment to verify cross-refs resolve — both directions.
176
-
177
- ## Override
178
-
179
- There is no override. Cross-references are either typed in frontmatter
180
- or they don't exist. Prose-only references don't count toward the
181
- graph and a future tooling pass will flag them.
182
-
183
- If a relationship genuinely doesn't exist (e.g., a one-off bet with no
184
- parent roadmap), don't fabricate one. Omit the field entirely. Empty
185
- fields are not the same as missing relationships — only set a field
186
- when the relationship it expresses is real.
187
-
188
- ## Retirement condition
189
-
190
- This standard retires when (a) all bassclef and consumer-repo
191
- roadmap/bet/stack artifacts conform AND (b) the `/compose` skill is
192
- shipped and validated AND (c) cross-ref drift hasn't surfaced as an
193
- operator-visible defect for ≥6 months.
194
-
195
- Until then, it's load-bearing for any session that writes or modifies
196
- an artifact in any of the three classes.
197
-
198
- ## Relationship to other standards/rules
199
-
200
- - `standards/project-directory-layout.md` — directory destinations
201
- (where) paired with this standard's relationships (how)
202
- - `standards/branch-stacking.md` — stack-manifest internal schema;
203
- this standard adds the upward cross-refs
204
- - `standards/session-board.md` — session-level coordinator; references
205
- bets by path (sibling cross-ref pattern)
206
- - `.claude/rules/artifact-ingestion.md` — write-time discipline that
207
- surfaces cross-ref work
208
- - bassclef#275 — promotion issue this standard partially closes
209
- (Part 1; the dir mv is WS-A0-4, the `/compose` skill is deferred)