loadout-ai 0.3.1 → 0.4.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 (49) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/MASTER_PLAN.md +177 -13
  3. package/README.md +157 -284
  4. package/dashboard/app.js +4 -4
  5. package/dashboard/index.html +4 -4
  6. package/dist/src/cli.js +27 -21
  7. package/dist/src/core/active-policy.js +172 -38
  8. package/dist/src/core/active-set.js +13 -4
  9. package/dist/src/core/adapters.js +10 -0
  10. package/dist/src/core/adopt.js +165 -32
  11. package/dist/src/core/agent-health-score.js +2 -2
  12. package/dist/src/core/catalog-coverage.js +2 -1
  13. package/dist/src/core/catalog-install.js +8 -1
  14. package/dist/src/core/catalog-release.js +2 -1
  15. package/dist/src/core/conformance.js +74 -0
  16. package/dist/src/core/install.js +11 -11
  17. package/dist/src/core/profiles.js +9 -4
  18. package/dist/src/core/ranking.js +1 -1
  19. package/dist/src/core/readme-claims.js +10 -0
  20. package/dist/src/core/readme-facts.js +40 -0
  21. package/dist/src/core/recommend.js +104 -12
  22. package/dist/src/core/runtime-tools.js +5 -2
  23. package/dist/src/core/scheduler.js +2 -1
  24. package/dist/src/core/snapshot.js +58 -13
  25. package/dist/src/core/state.js +8 -1
  26. package/dist/src/core/target-occupancy.js +50 -0
  27. package/dist/src/core/transaction.js +2 -1
  28. package/dist/src/core/uninstall.js +26 -2
  29. package/dist/src/dashboard.js +5 -2
  30. package/dist/src/shared/schemas.js +57 -0
  31. package/docs/FEATURE_TEST_MATRIX.md +16 -0
  32. package/docs/README_RESEARCH.md +36 -0
  33. package/docs/RELEASE_REVIEW.md +31 -5
  34. package/docs/REPOSITORY_STABILIZATION.md +190 -0
  35. package/docs/TESTING.md +50 -0
  36. package/docs/USER_TEST_GUIDE.md +42 -4
  37. package/docs/assets/loadout-hero.svg +259 -0
  38. package/docs/assets/loadout-mark.svg +54 -0
  39. package/docs/evidence/live-checks-2026-07-19.json +22 -0
  40. package/docs/evidence/live-checks.schema.json +28 -0
  41. package/docs/evidence/readme-claims.json +286 -0
  42. package/docs/superpowers/plans/2026-07-19-relatable-readme-hero.md +283 -0
  43. package/docs/superpowers/plans/2026-07-20-project-activation-safety.md +469 -0
  44. package/docs/superpowers/specs/2026-07-19-relatable-readme-hero-design.md +80 -0
  45. package/docs/superpowers/specs/2026-07-20-project-activation-safety-design.md +228 -0
  46. package/package.json +8 -4
  47. package/SIMPLE_PLAN.md +0 -44
  48. package/docs/plans/2026-07-18-release-0.3.md +0 -42
  49. package/docs/superpowers/plans/2026-07-18-cli-ux-polish.md +0 -86
package/CHANGELOG.md CHANGED
@@ -1,5 +1,72 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.1 - 2026-07-20
4
+
5
+ ### Added
6
+
7
+ - Detect local Node CLI, npm package, release, Vitest, Commander, Zod, MCP,
8
+ and security signals when recommending project tooling.
9
+ - Label recommendations as skill libraries, explicit MCP/runtime setup, or
10
+ unavailable instead of presenting every catalog record as automatically
11
+ activatable.
12
+
13
+ ### Changed
14
+
15
+ - Calculate project activation capacity separately for each agent and count
16
+ both Loadout-managed and pre-existing unmanaged skills toward `--limit`.
17
+ - Prefer compact, diverse project skill sets and reject mismatched Jest-only
18
+ guidance for Vitest-only repositories.
19
+
20
+ ### Fixed
21
+
22
+ - Allow project activation through recursively empty directories restored by
23
+ rollback while continuing to block files, symlinks, unreadable paths, and
24
+ unsupported entries.
25
+ - Re-check per-agent capacity and target occupancy inside the activation
26
+ transaction so filesystem changes after preview abort without partial edits.
27
+
28
+ ## 0.4.0 - 2026-07-20
29
+
30
+ ### Added
31
+
32
+ - Add generated, test-enforced README facts and bounded release claims so public
33
+ documentation cannot silently drift away from the shipped catalog, profiles,
34
+ adapters, commands, or verification surface.
35
+ - Add disposable filesystem lifecycle conformance coverage for all 12 configured
36
+ agent adapters and an offline README product journey covering library install,
37
+ activation, inspection, privacy-safe sharing, and rollback.
38
+ - Add a new Loadout visual identity and a proof-first README organized around the
39
+ Choose -> Inspect -> Preview -> Apply -> Undo workflow.
40
+
41
+ ### Changed
42
+
43
+ - Make CI and claim-generation paths portable on Windows, fetch the repository
44
+ history needed by evidence checks, and pin third-party Actions by immutable commit.
45
+ - Consolidate active planning in `MASTER_PLAN.md` and retain completed implementation
46
+ documents only as historical evidence.
47
+
48
+ ### Fixed
49
+
50
+ - Refuse explicit rollback when managed paths changed after a mutation, including
51
+ dashboard restores and unsupported filesystem entries, while retaining automatic
52
+ failed-transaction recovery.
53
+ - Bind adoption to the complete safe skill tree, reject drift and forged plans, and
54
+ record ownership only after verifying the final bytes.
55
+ - Record installed-profile state inside the setup transaction so Stable and other
56
+ profile changes can be rolled back consistently.
57
+
58
+ ## 0.3.2 - 2026-07-18
59
+
60
+ ### Fixed
61
+
62
+ - Treat recursively empty skill directories left by an older removal as unoccupied,
63
+ while continuing to block every directory containing a file, symlink, or other
64
+ unmanaged entry.
65
+ - Re-check target occupancy immediately before copying or replacing files to close the
66
+ preview/apply race.
67
+ - Remove recursively empty managed skill directories during complete uninstall so a
68
+ clean reinstall does not encounter false conflicts.
69
+
3
70
  ## 0.3.1 - 2026-07-18
4
71
 
5
72
  ### Fixed
package/MASTER_PLAN.md CHANGED
@@ -6,13 +6,14 @@ Category: Developer Tools
6
6
  Team size: 3
7
7
  Target submission: July 21, 2026 at 5:00 PM Pacific / July 22 at 4:00 AM Dubai
8
8
 
9
- ## Current remaining work (July 18, 2026)
9
+ ## Current status and remaining work (July 20, 2026)
10
10
 
11
11
  This is the authoritative active list. The long phase history below is retained as
12
- an engineering record, not a command to build every speculative system before users
13
- can test Loadout.
12
+ an archival engineering record, not a second active plan and not a command to build
13
+ every speculative system before users can test Loadout. Completed implementation
14
+ plans and contributor-specific plans have been consolidated here and removed.
14
15
 
15
- ### Required before calling the CLI polished for public testing
16
+ ### Implemented product work
16
17
 
17
18
  - [x] `P18-01 [TERRA]` Make the first CLI screen beginner-readable: a read-only
18
19
  `loadout guide`, concise default library summary, focused first-screen help,
@@ -21,9 +22,6 @@ can test Loadout.
21
22
  - [x] `P18-02 [TERRA]` Make core machine output honest: `catalog --json` returns
22
23
  JSON, and `update --package <id>` checks only that package rather than every
23
24
  tracked installation.
24
- - [ ] `P18-03 [HUMAN+TERRA]` Run the founder acceptance path in
25
- `docs/USER_TEST_GUIDE.md` on the real Codex and Claude profiles. Record each
26
- observed failure and turn reproducible ones into regression tests.
27
25
  - [x] `P18-04 [TERRA]` Bound and explain live network checks in `health --updates`
28
26
  and `watch --once`; they must show progress, a clear timeout, and an actionable
29
27
  result even when a large Maximum library is present.
@@ -36,9 +34,169 @@ can test Loadout.
36
34
  - [x] `P18-07 [TERRA]` Add a concise beginner section to README that links to the
37
35
  testing guide and explains Stable, Power, Maximum, project recommendations,
38
36
  daily discovery, and rollback in plain language.
39
- - [ ] `P18-08 [HUMAN+TERRA]` Run the full verification gate, publish the next npm
40
- patch/minor only after founder acceptance, and test that exact tarball in a
41
- fresh terminal.
37
+ - [x] `P18-15 [TERRA]` Bind material README claims to checked repository evidence,
38
+ add generated facts and adapter lifecycle coverage, test the documented product
39
+ flow, and separate deterministic, live, and human evidence.
40
+ - [x] `P18-16 [TERRA]` Make risky setup previews include every required approval
41
+ flag, reject unknown top-level commands, and make user-requested rollback fail
42
+ closed when files changed after a mutation or when a legacy snapshot lacks
43
+ post-mutation evidence. Internal failed-transaction recovery remains
44
+ authoritative.
45
+ - [x] `P18-19 [SOL+TERRA]` Re-audit the final unmerged development branch before deletion and preserve its
46
+ one valuable adoption-safety intent in the current architecture. Adoption now
47
+ binds the complete safe tree, rejects drift and special entries, records only
48
+ final verified bytes, conservatively attributes catalog review, deep-freezes
49
+ previews, and accepts only the exact same-process planner-issued plan
50
+ (`186daa0`, `09e0e0c`, `3f2cafe`, `10d6109`). No valuable work remains on the
51
+ retired branch; its local and remote copies were deleted after synchronization while
52
+ the user's ignored `.superpowers/` directory was preserved.
53
+ - [x] `P18-20 [SOL+TERRA]` Fix the fresh-clone live Stable rollback regression
54
+ without weakening drift protection. `5f8e38e` records installed-profile state
55
+ inside the catalog transaction before post-mutation evidence and makes the live
56
+ evidence journey roll Stable back before unrelated fixture transactions. An
57
+ unsafe proposal to ignore `state.json` drift was rejected because it could
58
+ orphan later installations.
59
+
60
+ All intended work through P18-20 is on remote `main`, and there are no open PRs. The
61
+ merged `codex/relatable-readme-hero` remote branch remains safe to delete after the
62
+ 0.4.0 release checkpoint.
63
+
64
+ ### Deterministic repository verification
65
+
66
+ - [x] `P18-08 [TERRA]` Run the complete clean-state verification gate after plan and
67
+ documentation consolidation, including formatting, lint, type checking, build,
68
+ evidence checks, unit and integration tests, CLI and README product flows,
69
+ package smoke, performance, dashboard Playwright, package contents, and
70
+ `git diff --check`. The July 20 integrated-main audit passed 113 test files with
71
+ 597 tests passing and one intentionally skipped, both product flows, package
72
+ smoke, the 1,000-skill performance gate at 2.40 seconds p95, and both dashboard
73
+ viewports.
74
+ The additional live Stable gate installed four pinned packages and completed
75
+ state and filesystem rollback assertions at `5f8e38e`.
76
+
77
+ ### Branch cleanup status
78
+
79
+ - [x] Review all unique history on the final unmerged development branch before
80
+ deletion; the adoption gap above was the only remaining valuable intent.
81
+ - [x] Reimplement and regression-test that intent in the current architecture.
82
+ - [x] Complete the second remote synchronization, confirm the four adoption commits
83
+ are reachable from remote `main`, and delete the superseded development
84
+ branches. The temporary worktree was removed and the unrelated ignored
85
+ `.superpowers/` directory was preserved. The later merged README hero branch is
86
+ retained only until the 0.4.0 release checkpoint.
87
+
88
+ ### Human and external work (not provable by local tests)
89
+
90
+ - [ ] `P18-03 [HUMAN+TERRA]` Run the founder acceptance path in
91
+ `docs/USER_TEST_GUIDE.md` on real Codex and Claude profiles. Record each
92
+ observed failure and turn reproducible ones into regression tests.
93
+ - [ ] `P18-13 [HUMAN+TERRA]` Publish `loadout-ai@0.4.0` to npm, then test that exact
94
+ registry tarball in a fresh terminal through Stable -> rollback -> Power ->
95
+ rollback -> Maximum -> project optimization -> complete uninstall.
96
+ Publication completed on July 20. A clean temporary install resolved the exact
97
+ registry tarball, reported version `0.4.0`, and completed `loadout demo` with
98
+ rollback verification. The founder's real Codex/Claude CLI lifecycle test
99
+ remains required before this item can be checked; dashboard testing was removed
100
+ after founder review rejected it as a conflicting product surface.
101
+ - [ ] `P18-17 [HUMAN]` Resolve the GitHub account billing or spending-limit condition
102
+ that prevents Actions jobs from starting, rerun CI and daily discovery on the
103
+ integrated commit, and record the result. CI runs
104
+ [`29691581581`](https://github.com/VirajMishra1/loadout/actions/runs/29691581581)
105
+ (`4fdc473`) and [`29692535521`](https://github.com/VirajMishra1/loadout/actions/runs/29692535521)
106
+ (`e74ba16`) failed before any step ran; their annotations cite failed recent
107
+ account payments or a spending limit that must be increased. They are external
108
+ runner-account failures, not product-test failures.
109
+ - [ ] `P18-18 [HUMAN]` Decide and configure appropriate `main` branch protection.
110
+ GitHub currently returns 404 for the protection endpoint, so protection is
111
+ absent or not observable; do not describe it as enabled.
112
+
113
+ ### Founder acceptance findings and 0.4.1 corrections
114
+
115
+ - [x] `P18-21A [HUMAN+TERRA]` Verify the published 0.4.0 Stable lifecycle on the
116
+ founder's real Claude Code and Codex paths. Stable installed four pinned sources
117
+ as 60 managed activations, preserved all 12 unmanaged Claude skills, reported no
118
+ managed drift, and restored the explicit pre-install snapshot successfully.
119
+ - [ ] `P18-21B [TERRA]` Make rollback history understandable before 0.4.1. The first
120
+ founder test exposed that bare `loadout rollback` selected a newer no-op
121
+ dashboard/sync snapshot whose pre-state already contained Stable. No data was
122
+ lost, but `rollback --list` showed opaque IDs only and `Restored snapshot` did
123
+ not disclose that zero effective files changed. Add timestamp, mutation kind,
124
+ affected scope, and no-op/current-state guidance; add a regression journey with
125
+ two adjacent snapshots and explicit older-snapshot rollback.
126
+ - [ ] `P18-22 [TERRA]` Remove the dashboard before the public release. Founder review
127
+ confirmed that it presents recommendation presets (`stable`, `web`,
128
+ `collaboration`, `maximum`) as policy profiles while the real CLI contract is
129
+ `stable`, `power`, `maximum`, and `custom`; its manifest-sync mutation model is
130
+ not the CLI setup workflow. Remove the command, loopback server, browser assets,
131
+ dashboard-only dependencies/tests/docs/evidence, and npm package contents.
132
+ Preserve any unique useful inspection capability through existing CLI commands.
133
+ - [ ] `P18-23 [HUMAN+TERRA]` Complete the remaining CLI-only founder path on the exact
134
+ npm package. Power and its explicit rollback are complete: snapshot
135
+ `1784546929191-9cfb0705dbed` restored zero Loadout-managed activations, retained
136
+ all 12 unmanaged Claude skills, returned Codex to zero skills, and left no
137
+ duplicate groups. Maximum setup is also complete: snapshot
138
+ `1784547473319-7581eb19ee9c` stored 2,316 screened skill copies from 29 packages
139
+ in the disabled library, activated none of them, and again preserved the 12
140
+ unmanaged Claude skills. Remaining path: project activation -> recommendation/
141
+ optimization -> Graphify install/remove -> credential-free MCP inventory ->
142
+ read-only update/discovery -> complete uninstall -> reinstall. Record every
143
+ mutation snapshot ID and use explicit rollback IDs during acceptance.
144
+ - [ ] `P18-24 [SOL+TERRA]` Redesign Power before 0.4.1 based on the real founder run.
145
+ The published transaction itself passed: eight immutable sources installed for
146
+ Claude Code and Codex, 100 managed activations were created, 12 unmanaged Claude
147
+ skills were preserved, duplicate targets were resolved, six rejected skill
148
+ units were excluded, and 1,170 managed files reported zero drift. The profile
149
+ policy failed acceptance: it activates 50 skills per agent despite Loadout's
150
+ recommended limit of 30; every selected package retained blocking static-risk
151
+ findings (79 total); only five of eight sources have an asserted SPDX license;
152
+ and one coarse prompt approves all package findings. Make Power a broad managed
153
+ library with no more than 30 project-relevant skills active per agent, preserve
154
+ per-package approval and rejection choices, persist and display excluded-unit
155
+ quarantine evidence, and make the health headline reflect blocking risk and
156
+ capacity failures instead of reporting the overall installation as healthy.
157
+ Add a release test proving Power preserves unmanaged skills, never exceeds its
158
+ active cap, reports every excluded unit and retained finding, and restores its
159
+ explicit setup snapshot without residue. The founder's published-package run
160
+ has now demonstrated that final rollback property successfully.
161
+ - [ ] `P18-25 [LUNA+TERRA]` Make health output honest and focused for empty or unmanaged
162
+ profiles. After the successful Power rollback, `loadout health --explain` led
163
+ with `Loadout health: healthy` and then reported 28/100 critical evidence for
164
+ Claude Code, 0/100 unknown for Codex, and similarly verbose sections for every
165
+ detected agent. Use an explicit `not configured`/`no managed packages` overall
166
+ state instead of healthy, keep the default summary concise, and let users scope
167
+ detailed evidence to selected agents while preserving the full explanation on
168
+ request. Add empty-state and mixed detected-agent CLI regression tests.
169
+ - [ ] `P18-26 [LUNA+TERRA]` Make Maximum's preview understandable without weakening
170
+ its safe defaults. The founder run proved the disabled-library contract, but
171
+ printed 50 unit-level quarantine blocks, 19 expected MCP/runtime deferrals, two
172
+ `No SKILL.md` preparation failures, and one coarse 28-package risk approval in
173
+ the default path. The subsequent scan reported 11 repository failures without
174
+ naming them. Default to a concise grouped summary with exact counts, severity,
175
+ source, and next commands; retain complete findings behind an explicit details
176
+ or JSON view. Classify no-skill MCP/runtime records as explicit setup rather
177
+ than failed skill preparation, distinguish high-confidence findings from likely
178
+ documentation/binary/metadata false positives, persist every excluded unit, and
179
+ name every failed repository with a short reason. Add snapshot tests for both
180
+ concise and detailed Maximum output.
181
+ - [x] `P18-27 [SOL+TERRA, LUNA copy review]` Correct project-aware activation safety
182
+ and relevance using
183
+ `docs/superpowers/specs/2026-07-20-project-activation-safety-design.md`.
184
+ Founder preview proved that activation currently ignores 12 unmanaged Claude
185
+ skills when calculating `--limit 30`, treats rollback-restored empty directories
186
+ as occupied for both agents, and proposes a generic, redundant 30-skill set from
187
+ only JavaScript/TypeScript and Playwright signals. Implement the approved shared
188
+ empty-target predicate, per-agent total active capacity, bounded Node CLI/npm/
189
+ Vitest/MCP project signals, diverse evidence-threshold selection, integration-
190
+ type labels, atomic apply revalidation, and the specified regression suite.
191
+ Implementation is complete on `codex/project-activation-safety`: the full local
192
+ release gate passes, including 114 unit-test files with 605 passing tests and
193
+ one intentional skip; the disposable two-agent CLI journey proves 12 unmanaged
194
+ Claude skills, distinct Claude/Codex budgets, empty rollback residue, one atomic
195
+ apply, and explicit rollback; the packed artifact is 468.0 kB with 145 files;
196
+ and the fresh scan benchmark passed at 1,583.5 ms p95 across seven real CLI
197
+ runs. Do
198
+ not resume real-profile activation until this branch is reviewed, integrated,
199
+ versioned, and published as the corrected release.
42
200
 
43
201
  ### Release 0.3 lifecycle hardening
44
202
 
@@ -52,9 +210,9 @@ can test Loadout.
52
210
  - [x] `P18-12 [TERRA]` Add a pinned Chrome DevTools MCP recipe and distinguish
53
211
  separately billed AI/model API keys from unrelated service credentials. The
54
212
  no-model-key inventory includes GitHub read-only with its token disclosed.
55
- - [ ] `P18-13 [HUMAN+TERRA]` Publish `0.3.1`, then run Stable -> rollback -> Power ->
56
- rollback -> Maximum -> project optimization -> dashboard -> complete uninstall
57
- against the exact npm package.
213
+ - [x] `P18-14 [TERRA]` Treat recursively empty directories from legacy cleanup as
214
+ unoccupied without weakening unmanaged-file protection, and make complete
215
+ uninstall remove empty nested directory shells.
58
216
 
59
217
  ### Explicitly deferred (do not expand during this usability pass)
60
218
 
@@ -66,6 +224,12 @@ can test Loadout.
66
224
  - A universal quality score, social-network scraping, or support claims for an agent
67
225
  that has not passed a real adapter test.
68
226
 
227
+ ## Archived implementation history
228
+
229
+ Sections 1–20 below preserve the original product design, allocation, completed work,
230
+ and deferred exploration. They are historical context. Only the current-status section
231
+ above defines active work.
232
+
69
233
  ## 1. Executive summary
70
234
 
71
235
  Loadout is a universal extension manager for AI coding agents. It detects the agents