loadout-ai 0.9.0 → 0.9.2

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 (41) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +45 -50
  3. package/catalog/discovered.json +29156 -26656
  4. package/dist/src/commands/catalog-workflows.js +227 -9
  5. package/dist/src/commands/coordinate.js +148 -4
  6. package/dist/src/commands/coordination-discussions.js +71 -9
  7. package/dist/src/core/catalog/safety.js +46 -2
  8. package/dist/src/core/coordination/adapters/claude-code.js +15 -7
  9. package/dist/src/core/coordination/adapters/codex.js +29 -2
  10. package/dist/src/core/coordination/auto-contract.js +457 -0
  11. package/dist/src/core/coordination/coordinator.js +5 -4
  12. package/dist/src/core/coordination/daemon.js +6 -3
  13. package/dist/src/core/coordination/discussion-pipeline.js +313 -0
  14. package/dist/src/core/coordination/discussion.js +22 -2
  15. package/dist/src/core/coordination/git-ownership.js +217 -0
  16. package/dist/src/core/coordination/lock.js +34 -4
  17. package/dist/src/core/coordination/quick-start.js +200 -0
  18. package/dist/src/core/coordination/retention.js +67 -5
  19. package/dist/src/core/delegation/handoff-bundle.js +253 -0
  20. package/dist/src/core/delegation/handoff-templates.js +222 -0
  21. package/dist/src/core/delegation/handoff-verification.js +117 -0
  22. package/dist/src/core/delegation/handoff.js +218 -26
  23. package/dist/src/core/install/catalog-install.js +8 -2
  24. package/dist/src/core/install/snapshot.js +49 -6
  25. package/dist/src/core/install/source.js +8 -6
  26. package/dist/src/core/install/update.js +55 -1
  27. package/docs/DISCOVERED.md +249 -251
  28. package/docs/FEATURE_TEST_MATRIX.md +26 -11
  29. package/docs/LIVE_COLLABORATION.md +49 -0
  30. package/docs/REFERENCE.md +100 -0
  31. package/docs/USER_TEST_GUIDE.md +75 -2
  32. package/docs/evidence/coordination-provider-check-2026-09-05.md +33 -0
  33. package/docs/specs/HANDOFF_CONTEXT_BUNDLES.md +139 -0
  34. package/docs/specs/HANDOFF_VERIFICATION.md +83 -0
  35. package/docs/superpowers/plans/2026-09-04-handoff-context-bundles.md +109 -0
  36. package/docs/superpowers/plans/2026-09-04-handoff-verification.md +56 -0
  37. package/docs/superpowers/plans/2026-09-05-pre-release-hardening.md +175 -0
  38. package/docs/superpowers/plans/2026-09-05-public-readiness.md +20 -0
  39. package/package.json +3 -2
  40. package/skills/loadout-handoff/SKILL.md +68 -15
  41. package/docs/DEMO_SCRIPT.md +0 -152
package/CHANGELOG.md CHANGED
@@ -1,5 +1,102 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 0.9.2 - 2026-09-06
6
+
7
+ ### Changed
8
+
9
+ - Coordination discussion output now removes duplicate lifecycle noise, shows a
10
+ single outcome section, and identifies the provider in every provider error.
11
+ - Maximum Library preparation now skips packages that cannot be safely prepared
12
+ and clearly reports that the remaining reviewed library can still install.
13
+
14
+ ### Fixed
15
+
16
+ - Bound overlong provider-synthesized decisions to the coordination event limit
17
+ instead of failing after all paid discussion turns have completed.
18
+ - Materialize multi-path ownership claims once per normalized path so snapshots
19
+ and status output do not repeat the full claim for every path.
20
+ - Close the Claude Code subprocess stdin explicitly, avoiding its empty-input
21
+ wait before a bounded coordination turn begins.
22
+ - Forward cancellation and timeout signals natively to both Claude Code and the
23
+ Codex SDK so a timed-out paid turn cannot keep running while Loadout starts a
24
+ replacement turn.
25
+ - Restore files before reapplying read-only directory modes and reject snapshot
26
+ modes containing special permission bits.
27
+ - Preserve strictly increasing coordination sequence order after checkpoint
28
+ compaction.
29
+ - Treat all reviewed commits for a shared catalog repository as valid when
30
+ detecting upstream catalog drift.
31
+ - Apply the default repository timeout to generic HTTPS and SSH Git sources as
32
+ well as catalog GitHub sources.
33
+
34
+ ### Security
35
+
36
+ - Expand deterministic instruction-injection signatures and document the
37
+ repository-grounded threat model in `loadout-threat-model.md`.
38
+
39
+ ## 0.9.1 - 2026-09-05
40
+
41
+ ### Added
42
+
43
+ - Snapshot capture and restore preserve Unix file permission modes, with
44
+ validation that rejects out-of-range values and tolerance for legacy
45
+ snapshots missing the `mode` field.
46
+ - Provider cancellation via `AbortSignal` on adapter `start()` and
47
+ `submitTurn()` methods. Cancelled turns release the busy flag so new
48
+ turns can proceed.
49
+ - Opt-in `loadout handoff ... --bundle <paths...>` context snapshots give the
50
+ receiving agent exact source context, with versioned references and visible
51
+ truncation metadata, while preserving all existing handoff messages.
52
+ - Evidence-backed handoff completion with human criteria, optional shell-free
53
+ executable/JSON argv checks, bounded pass/fail evidence, and failed checks
54
+ that remain pending instead of being reported done.
55
+ - Reusable built-in and project-local handoff templates with positional
56
+ placeholder expansion, bounded context bundles, and verification defaults.
57
+ - Preview-first coordination setup, exact cross-boundary contract detection,
58
+ Git-author ownership mappings, and idempotent discussion-to-implementation
59
+ plans linked to their generated handoff tasks.
60
+
61
+ ### Changed
62
+
63
+ - Log compaction preserves ownership, contract, and decision state by
64
+ extracting the latest checkpoint for each state key before removing events.
65
+ Double compaction is stable.
66
+ - Auto-detected contracts handle mixed `import { A, type B }` syntax and
67
+ reject incomplete multi-line `const` declarations as unpublishable instead
68
+ of emitting truncated contract bodies.
69
+ - Auto-detected contracts preserve exact supported declarations, expose a
70
+ source hash, distinguish current from stale revisions, and require both
71
+ `--publish` and `--yes`. Unsupported declarations require manual completion.
72
+ - Git ownership confidence includes every author touching a directory and maps
73
+ agent identities explicitly with `agent=Git Author`.
74
+ - Verification processes run outside the handoff log lock, so other agents can
75
+ continue sending tasks while a long check runs; completion remains atomic.
76
+
77
+ ### Fixed
78
+
79
+ - Coordination lock recovery uses atomic rename so concurrent recoverers
80
+ cannot both delete and recreate the lock file. Post-acquisition token
81
+ verification ensures the winner still holds the lock after write.
82
+ - Normalized contract-scanner paths across Windows and POSIX platforms and made
83
+ the verification cwd test independent of Windows short-path spelling.
84
+ - Removed generated directories and redundant parent/child claims from
85
+ one-command coordination setup.
86
+
87
+ ### Security
88
+
89
+ - Handoff bundles are limited to 20 project-relative text files, 32 KiB per
90
+ file and 50 KiB total. Creation and reading reject symlinks, traversal,
91
+ binary files, and internal `.git/` or `.handoff/` sources; common secrets are
92
+ redacted before owner-only atomic persistence.
93
+ - Handoff text and completion output are redacted at the canonical write
94
+ boundary. Verification output is capped at 8 KiB per stream and command
95
+ execution requires `--run-verification`, is timeout-bounded, project-scoped,
96
+ and shell-free.
97
+ - Template names are validated before every read or delete so traversal cannot
98
+ escape `.handoff/templates/`.
99
+
3
100
  ## 0.9.0 - 2026-09-03
4
101
 
5
102
  ### Removed
package/README.md CHANGED
@@ -86,7 +86,7 @@ The second command detects your agents and previews the 30-skill Stable loadout.
86
86
  Nothing changes until you approve it. If anything goes wrong, start with the
87
87
  [user test guide](./docs/USER_TEST_GUIDE.md).
88
88
 
89
- For a reproducible install, pin the release: `npm install --global loadout-ai@0.9.0`.
89
+ For a reproducible install, pin the release: `npm install --global loadout-ai@0.9.2`.
90
90
 
91
91
  ## Use it from inside your agent
92
92
 
@@ -121,13 +121,13 @@ If you pay for both Claude and a ChatGPT plan, the two agents cannot see each
121
121
  other. Loadout gives them a shared, append-only task log:
122
122
 
123
123
  ```bash
124
- loadout handoff codex "write unit tests for auth" --context "see src/auth.ts"
124
+ loadout handoff codex "write unit tests for auth" --bundle src/auth.ts src/types.ts --verify "tests pass" --verify-command npm --verify-args '["test"]'
125
125
  ```
126
126
 
127
- That is the whole thing. The first send creates the log and adds a short managed
128
- block to `CLAUDE.md` and `AGENTS.md` telling each agent to check its inbox at the
129
- start of a session. Only the text between the `loadout:handoff` markers is
130
- managed; the rest of your file is left alone.
127
+ Bundles snapshot exact, secret-redacted text (50 KiB total). Verification runs
128
+ only with `--done --run-verification`, without a shell; failures stay pending. The first send adds
129
+ managed inbox blocks to `CLAUDE.md` and `AGENTS.md`. Treat bundles as untrusted
130
+ project data, review before committing, and never include credential files.
131
131
 
132
132
  ```bash
133
133
  loadout handoff codex # what is waiting for codex
@@ -142,29 +142,20 @@ acknowledgements over a shared project event stream — not a merged context
142
142
  window. See the [live coordination guide](./docs/LIVE_COLLABORATION.md).
143
143
 
144
144
  ```bash
145
- loadout coord own claude-code src/api
146
- loadout coord contract checkout-api --agent claude-code \
147
- --body "POST /api/checkout -> 201 { id: string }"
148
- loadout coord snapshot codex # what codex needs to know
149
- loadout coord replay # full timeline as a story
145
+ loadout coord start --agents claude-code,codex # preview ownership
146
+ loadout coord start --agents claude-code,codex --yes # apply it
147
+ loadout coord detect # shared interfaces
148
+ loadout handoff codex src/auth.ts --template write-tests
149
+ loadout coord discuss start "REST or GraphQL?" --agents claude-code,codex --rounds 2 --max-turns 5
150
+ loadout coord discuss implement <thread-id> # preview linked tasks
150
151
  ```
151
152
 
152
- `loadout serve` exposes the same operations as MCP tools for both hosts.
153
- The optional provider bridge (`loadout coord agents bridge`) resumes sessions
154
- and delivers events at safe turn boundaries never mid-turn.
155
-
156
- Start a bounded design discussion to have both agents challenge an approach
157
- before either writes code. Two rounds plus synthesis = five provider turns:
158
-
159
- ```bash
160
- loadout coord discuss start "REST or GraphQL for checkout?" \
161
- --agents claude-code,codex --rounds 2 --max-turns 5
162
- ```
163
-
164
- Each response is explicitly public, linked to the previous response, and saved
165
- in the project audit trail. The discussion prompt forbids edits and tool use;
166
- review the final decision, then choose whether to implement it. Existing
167
- sessions work with `--sessions claude-code:<id> codex:<id>`.
153
+ Contract publication and bounded design discussion implementation require a second `--yes`
154
+ approval. Exact supported declarations are marked current or stale; ambiguous
155
+ ones require manual review. The optional MCP server and provider bridge deliver
156
+ events at safe turn boundaries, never during an active turn. The
157
+ [coordination guide](./docs/LIVE_COLLABORATION.md) covers templates, Git-author
158
+ mappings, the local dashboard, limitations, and the complete workflow.
168
159
 
169
160
  ## How it works
170
161
 
@@ -315,7 +306,7 @@ Catalog maturity: **53 sourced**, **53 technically inspected**, and **4 selected
315
306
 
316
307
  <!-- loadout:daily-discovery:start -->
317
308
 
318
- **Discovery snapshot (generated 2026-09-04):** [239 repositories observed](./docs/DISCOVERED.md), including 222 uncataloged review candidates and 17 repositories already in the inspected catalog.
309
+ **Discovery snapshot (generated 2026-09-06):** [237 repositories observed](./docs/DISCOVERED.md), including 221 uncataloged review candidates and 16 repositories already in the inspected catalog.
319
310
  <!-- loadout:daily-discovery:end -->
320
311
 
321
312
  ## Trust and limits
@@ -353,27 +344,31 @@ Configured CI platforms describe a manually triggered workflow, not evidence tha
353
344
 
354
345
  ## Command reference
355
346
 
356
- | What it does | Command |
357
- | --------------------------------------- | ---------------------------------------------- |
358
- | Beginner-friendly guided path | `loadout guide` |
359
- | Preview the 30-skill Stable setup | `loadout setup --mode stable` |
360
- | Apply after reviewing the preview | `loadout setup --mode stable --yes` |
361
- | Show managed packages and active skills | `loadout status` · `loadout library` |
362
- | What fits this repository | `loadout recommend --project .` |
363
- | Project-specific active set | `loadout optimize --project . --limit 30` |
364
- | Scan existing skills across agents | `loadout scan` |
365
- | Check for source updates | `loadout update` |
366
- | Find newly launched candidates | `loadout discover --source all --queue` |
367
- | Install Loadout's own skill | `loadout skills install loadout-handoff --yes` |
368
- | Send a task to another agent | `loadout handoff codex "write tests"` |
369
- | Inspect shared agent state | `loadout coord snapshot codex` |
370
- | Detect live provider runtimes | `loadout coord agents detect` |
371
- | Debate one design with both providers | `loadout coord discuss start "<topic>" ...` |
372
- | Start the coordination MCP server | `loadout serve` |
373
- | Agent health check | `loadout doctor` |
374
- | Rollback the latest managed change | `loadout rollback` |
375
- | Preview complete removal | `loadout uninstall` |
376
- | Full CLI reference | `loadout --help` · `loadout advanced` |
347
+ | What it does | Command |
348
+ | --------------------------------------- | ---------------------------------------------------------- |
349
+ | Beginner-friendly guided path | `loadout guide` |
350
+ | Preview the 30-skill Stable setup | `loadout setup --mode stable` |
351
+ | Apply after reviewing the preview | `loadout setup --mode stable --yes` |
352
+ | Show managed packages and active skills | `loadout status` · `loadout library` |
353
+ | What fits this repository | `loadout recommend --project .` |
354
+ | Project-specific active set | `loadout optimize --project . --limit 30` |
355
+ | Scan existing skills across agents | `loadout scan` |
356
+ | Check for source updates | `loadout update` |
357
+ | Find newly launched candidates | `loadout discover --source all --queue` |
358
+ | Install Loadout's own skill | `loadout skills install loadout-handoff --yes` |
359
+ | Send a task to another agent | `loadout handoff codex "write tests"` |
360
+ | Use a reusable handoff template | `loadout handoff codex src/auth.ts --template write-tests` |
361
+ | Preview two-agent ownership setup | `loadout coord start --agents claude-code,codex` |
362
+ | Detect shared contract candidates | `loadout coord detect` |
363
+ | Inspect shared agent state | `loadout coord snapshot codex` |
364
+ | Detect live provider runtimes | `loadout coord agents detect` |
365
+ | Debate one design with both providers | `loadout coord discuss start "<topic>" ...` |
366
+ | Turn a decision into linked tasks | `loadout coord discuss implement <thread-id>` |
367
+ | Start the coordination MCP server | `loadout serve` |
368
+ | Agent health check | `loadout doctor` |
369
+ | Rollback the latest managed change | `loadout rollback` |
370
+ | Preview complete removal | `loadout uninstall` |
371
+ | Full CLI reference | `loadout --help` · `loadout advanced` |
377
372
 
378
373
  Most mutating commands are dry runs first. Add `--yes` to apply.
379
374
 
@@ -396,7 +391,7 @@ npm run verify:full
396
391
 
397
392
  <!-- loadout:verification-summary:start -->
398
393
 
399
- `verify` invokes `format:check`, `lint`, `typecheck`, `check:audit`, `check:evidence`, `test`, `test:e2e:cli`, `test:e2e:readme`, `test:package`, `test:performance` in that order. `verify:full` runs that gate and the coverage suite.
394
+ `verify` invokes `format:check`, `lint`, `typecheck`, `check:audit`, `check:evidence`, `test`, `test:e2e:cli`, `test:e2e:readme`, `test:e2e:coordination`, `test:package`, `test:performance` in that order. `verify:full` runs that gate and the coverage suite.
400
395
 
401
396
  <!-- loadout:verification-summary:end -->
402
397