@thebassclef/lite 1.9.9 → 1.9.10
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/README.md +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/hooks/pre-commit-gate.sh +31 -0
- package/dist/lite/.claude/hooks/pre-commit-identifier-leak-scrub.sh +58 -2
- package/dist/lite/.claude/hooks/session-reflection.d/83-install-written-paths-rebuild.sh +111 -0
- package/dist/lite/.claude/hooks/state-validate.sh +8 -0
- package/dist/lite/.claude/rules/install-written-paths-mediation.md +74 -0
- package/dist/lite/.claude/skills/autonomous/SKILL.md +53 -7
- package/dist/lite/.claude/skills/build/SKILL.md +34 -4
- package/dist/lite/.claude/skills/deploy-prod/SKILL.md +10 -0
- package/dist/lite/.claude/skills/launch/SKILL.md +26 -0
- package/dist/lite/.claude/skills/onboard-repo/SKILL.md +18 -18
- package/dist/lite/.claude/skills/personas/SKILL.md +1 -1
- package/dist/lite/bassclef-version.json +4 -4
- package/dist/lite/lib/capability-probe.sh +39 -1
- package/dist/lite/lib/composer-preflight.sh +8 -4
- package/dist/lite/lib/install-written-paths.sh +369 -0
- package/dist/lite/lib/luminary-pick.sh +35 -13
- package/dist/lite/lib/state.sh +71 -11
- package/dist/lite/standards/lite-manifest-schema-changes.md +45 -0
- package/dist/lite/standards/lite-manifest.json +40 -17
- package/dist/lite/standards/state-spine.md +1 -0
- package/package.json +1 -1
|
@@ -34,6 +34,51 @@ Every entry stays in this file for the life of the manifest. Never pruned. When
|
|
|
34
34
|
|
|
35
35
|
## Entries (newest first)
|
|
36
36
|
|
|
37
|
+
### cli#305 — identifier-leak scrub self-exclude + commit author check (v1.15.3 → v1.15.4, 2026-10-04)
|
|
38
|
+
|
|
39
|
+
- **Change type:** content-change (1 file: `.claude/hooks/pre-commit-identifier-leak-scrub.sh`). Check 2 now filters out hunks from the hook's own files, its test, the rule, and the pattern source. Check 3 added — scans `git var GIT_AUTHOR_IDENT` for the pattern set plus the `.local` suffix. BLOCK banner adds a resolution path pointing at the GitHub no-reply address.
|
|
40
|
+
- **Fields:** 444 entries (unchanged). Content hash shifts on the `pre-commit-identifier-leak-scrub` hook slug.
|
|
41
|
+
- **Version bump:** v1.15.3 → v1.15.4 (patch — content-only change on 1 slug; no entry count change). Rides on top of the Finding #7 bump (v1.15.3) when PRs land in order.
|
|
42
|
+
- **Rationale:** Kunal cli#305 — first commit after `bassclef init` blocked on the check's own files; author identity leaked silently when `user.email` was unset on Mac. Class A identity leak sister to cli#313 + cli#320 shipped in v1.15.2. Per PR #2062 (planned).
|
|
43
|
+
- **Downstream cure:** no action for adopters at exact-pin. Self-exclude paths are PATH-scoped, not pattern-scoped — leaks moved into non-self files still block. Author check is additive; adopters with clean emails see no change. Adopters whose git author ends in `.local` or carries a hostname pattern see the new BLOCK with a recipe pointing at `<username>@users.noreply.github.com`.
|
|
44
|
+
- **Old shape retired:** nothing retired. Check 1 (message) + Check 2 (staged content, now filtered) + Check 3 (author) chain is additive.
|
|
45
|
+
|
|
46
|
+
### #2036 Finding #7 — Playwright probe file-based fallback (v1.15.4 → v1.15.5, 2026-10-05)
|
|
47
|
+
|
|
48
|
+
- **Change type:** content-change (1 file: `lib/capability-probe.sh`). `probe_mcp_playwright()` extended with four MCP config file fallback paths after the `CLAUDE_MCP_PLAYWRIGHT` env-var fast path. Fail-soft on missing `jq` + malformed JSON.
|
|
49
|
+
- **Fields:** 444 entries (unchanged). Content hash shifts on the `capability-probe` lib slug.
|
|
50
|
+
- **Version bump:** v1.15.4 → v1.15.5 (patch — content-change on existing lib slug per policy). Rebased on top of cli#305 which landed first.
|
|
51
|
+
- **Rationale:** Kunal v1.6.4 adopter run installed Playwright MCP but did not set `CLAUDE_MCP_PLAYWRIGHT`; probe returned 1; `/riff` + `/build` skipped screenshots. Fallback now reads `.mcp.json`, project + user `.claude/settings.json`, and `~/.claude.json`. Per bassclef-upstream#2036 Finding #7 + PR #2060.
|
|
52
|
+
- **Downstream cure:** nothing — byte-for-byte unchanged when `CLAUDE_MCP_PLAYWRIGHT` is set (fast path first). Adopters without the env var set gain file-based detection on the fly.
|
|
53
|
+
- **Old shape retired:** immediately (new behavior is additive).
|
|
54
|
+
|
|
55
|
+
### cli#313 + cli#320 — identity-leak sweep in luminary-pick + personas (v1.15.1 → v1.15.2, 2026-10-04)
|
|
56
|
+
|
|
57
|
+
- **Change type:** content-change (2 files: `lib/luminary-pick.sh` + `.claude/skills/personas/SKILL.md`). luminary-pick basedir fallback moves from `$HOME/src/sunj-labs/bassclef` to `$CLAUDE_PROJECT_DIR` → `git rev-parse` → `pwd` chain, plus adds `.claude/luminaries/*.md` catalog fallback for lite tier. personas SKILL default slug changes from email-derived (`operator-[local-part]`) to plain `operator` (never from email).
|
|
58
|
+
- **Fields:** 444 entries (unchanged). Content hash shifts on the `luminary-pick` lib slug + `personas` skill slug.
|
|
59
|
+
- **Version bump:** v1.15.1 → v1.15.2 (patch; content-only on 2 slugs; no schema shape shift; no entry count change).
|
|
60
|
+
- **Rationale:** bassclef-cli#313 (luminary-pick hardcoded eng path; adopters hit "catalog dir missing" every /launch Phase 3.5) + bassclef-cli#320 (operator slug derived from git email leaked GitHub account ID into committed docs). Kunal cold-adopter smoke caught both; shared class is "engineering assumption in cold paths" (per plan doc Slot 3).
|
|
61
|
+
- **Downstream cure:** no action for adopters at exact-pin. Both changes are additive — lite tier adopters now get a working picker catalog; email-derived slugs never fire again. Operators wanting a display name beyond `operator` get an in-turn prompt instead.
|
|
62
|
+
- **Old shape retired:** nothing retired. Both old shapes stay viable (BASSCLEF_DIR env var still honored first; manual slug entry still allowed via operator reply).
|
|
63
|
+
|
|
64
|
+
### cli#307 — /build Phase 0 awk matches Step-N + WU-N (v1.15.0 → v1.15.1, 2026-10-04)
|
|
65
|
+
|
|
66
|
+
- **Change type:** content-change (1 file: `.claude/skills/build/SKILL.md`). Phase 0 safety floor awk pattern + prose at L276 updated to recognize both `### Step-N` (new vocab per ADR-040 D1) and `### WU-N` (legacy).
|
|
67
|
+
- **Fields:** 444 entries (unchanged). Content hash shifts on the `build` skill slug.
|
|
68
|
+
- **Version bump:** v1.15.0 → v1.15.1 (patch; content-only change on 1 slug; no schema shape shift; no entry count change).
|
|
69
|
+
- **Rationale:** bassclef-cli#307 — Kunal cold-adopter smoke caught the Phase 0 awk reading zero acceptance lines on Step-format specs. Partial-rename regression from ADR-040 D1 (Phase 1 grep got the rename, Phase 0 awk was missed).
|
|
70
|
+
- **Downstream cure:** no action for adopters at exact-pin — the fix is additive (both heading forms match). Step-format specs now trigger the floor as designed. WU-format specs continue to work (characterization).
|
|
71
|
+
- **Old shape retired:** nothing retired. The WU-only pattern leaves. The `(Step|WU)-` pattern stays indefinitely.
|
|
72
|
+
|
|
73
|
+
### #2036 — install-written-paths manifest + lib + rule (v1.14.4 → v1.15.0, 2026-10-03)
|
|
74
|
+
|
|
75
|
+
- **Change type:** content-add (3 new entries: `lib/install-written-paths.sh`, `.claude/rules/install-written-paths-mediation.md`, `.claude/hooks/session-reflection.d/83-install-written-paths-rebuild.sh`); content-change on `.claude/hooks/pre-commit-gate.sh` (filter block added for Kunal Finding #8 cure).
|
|
76
|
+
- **Fields:** 441 entries → 444 entries (3 adds, 1 content_hash shift).
|
|
77
|
+
- **Version bump:** v1.14.4 → v1.15.0 (content-add MINOR per discipline policy).
|
|
78
|
+
- **Rationale:** bassclef-upstream#2036 Finding #8 structural cure. See `architecture/reviews/2026-10-03.md` + plan doc `docs/next-session-plan-2026-10-04-kunal-slots-5-6.md` Slot 5.
|
|
79
|
+
- **Downstream cure:** no action for adopters at exact-pin — the new entries are additive and the lib's accessor API is new. Adopters pulling at `@thebassclef/lite@^1.15.0` get the cure automatically; the session-start fragment regenerates the install-written-paths manifest on first fresh-install session.
|
|
80
|
+
- **Old shape retired:** nothing retired. All existing entries preserved.
|
|
81
|
+
|
|
37
82
|
### #1777 — friction hook pattern adds stage|launch new skill vocabulary (v1.14.2 → v1.14.3, 2026-10-01)
|
|
38
83
|
|
|
39
84
|
- **Change type:** content-change (1 file: `post-skill-friction-check` hook)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tier": "lite",
|
|
3
|
-
"manifest_version": "1.
|
|
4
|
-
"generated_at": "2026-10-
|
|
3
|
+
"manifest_version": "1.15.5",
|
|
4
|
+
"generated_at": "2026-10-04T22:12:41Z",
|
|
5
5
|
"entries": [
|
|
6
6
|
{
|
|
7
7
|
"slug": "029-release-pipeline",
|
|
@@ -259,6 +259,14 @@
|
|
|
259
259
|
"content_hash": "sha256:f4db0541d27a06e3f94ba557e7c8a39e747601b8ca9fd7af7313891b69548afd",
|
|
260
260
|
"description": "Hook manifest staleness — flags standards/hook-cadence.json when it"
|
|
261
261
|
},
|
|
262
|
+
{
|
|
263
|
+
"slug": "83-install-written-paths-rebuild",
|
|
264
|
+
"type": "hook",
|
|
265
|
+
"path": ".claude/hooks/session-reflection.d/83-install-written-paths-rebuild.sh",
|
|
266
|
+
"tier": "lite",
|
|
267
|
+
"content_hash": "sha256:3b8268e67f0eb25b84dd8cb010cfa02912c50c3c8eba73302341e445d19f97c5",
|
|
268
|
+
"description": "Session-start fragment: rebuild install-written-paths manifest when missing/stale."
|
|
269
|
+
},
|
|
262
270
|
{
|
|
263
271
|
"slug": "90-release-backlog",
|
|
264
272
|
"type": "hook",
|
|
@@ -536,7 +544,7 @@
|
|
|
536
544
|
"type": "hook",
|
|
537
545
|
"path": ".claude/hooks/pre-commit-gate.sh",
|
|
538
546
|
"tier": "lite",
|
|
539
|
-
"content_hash": "sha256:
|
|
547
|
+
"content_hash": "sha256:5b0385b5c3ab415c522285e70c710ef2351e5843a86867bd4a73b138e0e12e02",
|
|
540
548
|
"description": "Observable failure trap — closes bassclef-upstream#1075 (silent-stderr class)."
|
|
541
549
|
},
|
|
542
550
|
{
|
|
@@ -544,7 +552,7 @@
|
|
|
544
552
|
"type": "hook",
|
|
545
553
|
"path": ".claude/hooks/pre-commit-identifier-leak-scrub.sh",
|
|
546
554
|
"tier": "lite",
|
|
547
|
-
"content_hash": "sha256:
|
|
555
|
+
"content_hash": "sha256:ea0f5430017f00b4cfe45e02f1c5232ab0532784258905dec28cc93eff1dfc65",
|
|
548
556
|
"description": "PreToolUse: Bash"
|
|
549
557
|
},
|
|
550
558
|
{
|
|
@@ -632,7 +640,7 @@
|
|
|
632
640
|
"type": "hook",
|
|
633
641
|
"path": ".claude/hooks/state-validate.sh",
|
|
634
642
|
"tier": "lite",
|
|
635
|
-
"content_hash": "sha256:
|
|
643
|
+
"content_hash": "sha256:89fd09175f45f55f3f61f75cf7f4ae13cd3c5e813e17424eba296849452d5aec",
|
|
636
644
|
"description": "state-validate.sh — PreToolUse hook that validates state-spine entity"
|
|
637
645
|
},
|
|
638
646
|
{
|
|
@@ -736,7 +744,7 @@
|
|
|
736
744
|
"type": "lib",
|
|
737
745
|
"path": "lib/capability-probe.sh",
|
|
738
746
|
"tier": "lite",
|
|
739
|
-
"content_hash": "sha256:
|
|
747
|
+
"content_hash": "sha256:f22929492ea24941e7652aeedaaeb136f9c646e72bb8528039717b8aaead36b4",
|
|
740
748
|
"description": "lib/capability-probe.sh — capability probe deep module."
|
|
741
749
|
},
|
|
742
750
|
{
|
|
@@ -768,7 +776,7 @@
|
|
|
768
776
|
"type": "lib",
|
|
769
777
|
"path": "lib/composer-preflight.sh",
|
|
770
778
|
"tier": "lite",
|
|
771
|
-
"content_hash": "sha256:
|
|
779
|
+
"content_hash": "sha256:70e8d5ac6a0c5c39c8e217206fe9e0d5bd3afe3ca402a98e095e5e041be5dc12",
|
|
772
780
|
"description": "lib/composer-preflight.sh — shared pre-flight check for composer skills."
|
|
773
781
|
},
|
|
774
782
|
{
|
|
@@ -835,12 +843,20 @@
|
|
|
835
843
|
"content_hash": "sha256:5bc5b46f0478817665a77787e9b26997be3452572c7514e5ce540f37a9b9188a",
|
|
836
844
|
"description": "Operator-identifier leak check for staged git content."
|
|
837
845
|
},
|
|
846
|
+
{
|
|
847
|
+
"slug": "install-written-paths",
|
|
848
|
+
"type": "lib",
|
|
849
|
+
"path": "lib/install-written-paths.sh",
|
|
850
|
+
"tier": "lite",
|
|
851
|
+
"content_hash": "sha256:38148e8de456928b13846c2999377c30ac303cf0369cc7755ecc0ba9a8f899fb",
|
|
852
|
+
"description": "Install-written-paths manifest + accessor lib."
|
|
853
|
+
},
|
|
838
854
|
{
|
|
839
855
|
"slug": "luminary-pick",
|
|
840
856
|
"type": "lib",
|
|
841
857
|
"path": "lib/luminary-pick.sh",
|
|
842
858
|
"tier": "lite",
|
|
843
|
-
"content_hash": "sha256:
|
|
859
|
+
"content_hash": "sha256:4d6d60d11a56c79e894a843a90550f10ee6f0160eebfd4e55402c840f2666741",
|
|
844
860
|
"description": "andon-allow: docs/operator-private/[a-z-]+/20[0-9][0-9]-[0-9]{2}"
|
|
845
861
|
},
|
|
846
862
|
{
|
|
@@ -920,7 +936,7 @@
|
|
|
920
936
|
"type": "lib",
|
|
921
937
|
"path": "lib/state.sh",
|
|
922
938
|
"tier": "lite",
|
|
923
|
-
"content_hash": "sha256:
|
|
939
|
+
"content_hash": "sha256:e8482e2cf41f90adfedb3dc58dc585547db93983a6ca71bb19ae3b0507a76307",
|
|
924
940
|
"description": "lib/state.sh — typed accessor library over bassclef's state spine."
|
|
925
941
|
},
|
|
926
942
|
{
|
|
@@ -1640,6 +1656,13 @@
|
|
|
1640
1656
|
"content_hash": "sha256:31df845d034bbd756172ad7895ff561cbfeab38aa0b744f29862ff4095e4300b",
|
|
1641
1657
|
"description": "Bassclef commits stay free of operator machine identifiers."
|
|
1642
1658
|
},
|
|
1659
|
+
{
|
|
1660
|
+
"slug": "install-written-paths-mediation",
|
|
1661
|
+
"type": "rule",
|
|
1662
|
+
"path": ".claude/rules/install-written-paths-mediation.md",
|
|
1663
|
+
"tier": "lite",
|
|
1664
|
+
"content_hash": "sha256:282a2c4303315417afa75efb02724bc0913d9b3aa77d53fcfe4a7eb88ef65137"
|
|
1665
|
+
},
|
|
1643
1666
|
{
|
|
1644
1667
|
"slug": "iteration-bet-brief-completeness",
|
|
1645
1668
|
"type": "rule",
|
|
@@ -2187,7 +2210,7 @@
|
|
|
2187
2210
|
"type": "skill",
|
|
2188
2211
|
"path": ".claude/skills/autonomous/SKILL.md",
|
|
2189
2212
|
"tier": "lite",
|
|
2190
|
-
"content_hash": "sha256:
|
|
2213
|
+
"content_hash": "sha256:731b6954a38c3735e13ff635d19a05178e739c5986384c48ffbf09121026b892",
|
|
2191
2214
|
"description": "Start or check an autonomous SDLC session. Two axes: who approves handoffs (you vs. the agent) and how work runs (one session vs. parallel agents). Defaults to operator-gated + sequential. Entry point for shipping features hands-off.",
|
|
2192
2215
|
"inputs": [
|
|
2193
2216
|
"start or check mode",
|
|
@@ -2226,7 +2249,7 @@
|
|
|
2226
2249
|
"type": "skill",
|
|
2227
2250
|
"path": ".claude/skills/build/SKILL.md",
|
|
2228
2251
|
"tier": "lite",
|
|
2229
|
-
"content_hash": "sha256:
|
|
2252
|
+
"content_hash": "sha256:a9196b9d0b89d8ed8619be911d3cae31b7e15b9bbe5d43592848c4310180cffb",
|
|
2230
2253
|
"description": "Take a plan from /launch and ship it. One builder per user story. Runs /verify. Opens PRs. Gates prod on a human. Refuses auth, schema, security, and tenant work. Two modes — full and degrade-with-note.",
|
|
2231
2254
|
"inputs": [
|
|
2232
2255
|
"A goal slug pointing to a spec on disk"
|
|
@@ -2327,7 +2350,7 @@
|
|
|
2327
2350
|
"type": "skill",
|
|
2328
2351
|
"path": ".claude/skills/deploy-prod/SKILL.md",
|
|
2329
2352
|
"tier": "lite",
|
|
2330
|
-
"content_hash": "sha256:
|
|
2353
|
+
"content_hash": "sha256:fcc46296bbb82876be97882d08b6408b4fd6f0d0a32e2d0f9dfea1e2b05673b5",
|
|
2331
2354
|
"description": "Production deployment procedure — test, build, push, CI, verify. Template for any project.",
|
|
2332
2355
|
"inputs": [
|
|
2333
2356
|
"Optional deploy-host override"
|
|
@@ -2614,7 +2637,7 @@
|
|
|
2614
2637
|
"type": "skill",
|
|
2615
2638
|
"path": ".claude/skills/launch/SKILL.md",
|
|
2616
2639
|
"tier": "lite",
|
|
2617
|
-
"content_hash": "sha256:
|
|
2640
|
+
"content_hash": "sha256:f0373719bb530dbdc5721c6d253dff7c628afb75a4f94112cf0a622ce039e4b0",
|
|
2618
2641
|
"description": "Compare variants of an idea. Get a mock gallery. Pick a direction. Get a spec, user stories, and a plan to build. Two sizes — medium and full. Three modes — full, local, scratch.",
|
|
2619
2642
|
"inputs": [
|
|
2620
2643
|
"A rough idea or ticket or canvas"
|
|
@@ -2737,7 +2760,7 @@
|
|
|
2737
2760
|
"type": "skill",
|
|
2738
2761
|
"path": ".claude/skills/onboard-repo/SKILL.md",
|
|
2739
2762
|
"tier": "lite",
|
|
2740
|
-
"content_hash": "sha256:
|
|
2763
|
+
"content_hash": "sha256:531b910cb45153b939b1f2a74dd1b214d2e87e4575ec3483624fe56510a4563c",
|
|
2741
2764
|
"description": "Bootstrap the bassclef framework in a new repo. Installs the sync hook. Scaffolds config, whereami, and CLAUDE.md. Modes: default, --with-deploy-host, --with-secrets, --full, --greenfield-from-intent (starts a new repo from a short intent paragraph).",
|
|
2742
2765
|
"inputs": [
|
|
2743
2766
|
"Optional flags — --with-deploy-host or --with-secrets or --full"
|
|
@@ -2773,7 +2796,7 @@
|
|
|
2773
2796
|
"type": "skill",
|
|
2774
2797
|
"path": ".claude/skills/personas/SKILL.md",
|
|
2775
2798
|
"tier": "lite",
|
|
2776
|
-
"content_hash": "sha256:
|
|
2799
|
+
"content_hash": "sha256:fa3040d1a1c604cfa49dfa2de0993ee4242104040bc69659007e763711602749",
|
|
2777
2800
|
"description": "Load, list, and manage user personas — the bassclef WHO record. Downstream skills (value-prop-canvas, synthetic-user, user-stories, jtbd-tasks) read from its output. Defaults to operator when no personas exist.",
|
|
2778
2801
|
"inputs": [
|
|
2779
2802
|
"Manage command — list or add or edit or delete"
|
|
@@ -3817,7 +3840,7 @@
|
|
|
3817
3840
|
"type": "standard",
|
|
3818
3841
|
"path": "standards/lite-manifest-schema-changes.md",
|
|
3819
3842
|
"tier": "lite",
|
|
3820
|
-
"content_hash": "sha256:
|
|
3843
|
+
"content_hash": "sha256:a3fb462a6061680fbb5416823055f0f7845d7b11c186479573bf7de7777a61ff",
|
|
3821
3844
|
"description": "Chronological ledger of every lite-manifest schema change. Adopters read this before sync to know what shifted."
|
|
3822
3845
|
},
|
|
3823
3846
|
{
|
|
@@ -4097,7 +4120,7 @@
|
|
|
4097
4120
|
"type": "standard",
|
|
4098
4121
|
"path": "standards/state-spine.md",
|
|
4099
4122
|
"tier": "lite",
|
|
4100
|
-
"content_hash": "sha256:
|
|
4123
|
+
"content_hash": "sha256:c7081fbbd72b6eac299f811ea3862dd68ac0d255fd60ef602087f12d79fec5af",
|
|
4101
4124
|
"description": "Schema'd JSON state spine for bassclef's substrate."
|
|
4102
4125
|
},
|
|
4103
4126
|
{
|
|
@@ -262,6 +262,7 @@ the schema doesn't constrain them.
|
|
|
262
262
|
| InputArtifact | `docs/input-artifacts/<slug>.json` | whole file |
|
|
263
263
|
| StackTemplate | `state/stack-templates/<slug>.json` | whole file |
|
|
264
264
|
| SubstrateHardening | `state/substrate-hardening/inventory.json` (per bassclef bet 2026-06-17a Phase Z) | whole file |
|
|
265
|
+
| InstallWrittenPaths | `state/install-written-paths.json` (per bassclef-upstream#2036 Finding #8 — manifest of install-written paths for discipline-hook mediation) | whole file |
|
|
265
266
|
|
|
266
267
|
These entities are machine-consumed; operator-readability isn't
|
|
267
268
|
load-bearing. Pure JSON; schema validates the whole file.
|