wowbagger 0.1.0-alpha.2 → 0.1.0-alpha.4
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/CHANGELOG.md +29 -0
- package/README.md +74 -35
- package/adapters/claude-code/wowbagger-adapter.json +1 -1
- package/docs/adapter-contract.md +1280 -0
- package/docs/work-claim-contract.md +21 -4
- package/package.json +3 -1
- package/skills/wowbagger/SKILL.md +37 -5
- package/src/adapter/entrypoint-main.js +19 -5
- package/src/claim-coordinator.js +113 -7
- package/src/claim-journal.js +45 -2
- package/src/claim-publication.js +121 -59
- package/src/claim-store.js +20 -8
- package/src/cli.js +118 -11
- package/src/mutation.js +151 -32
- package/src/ready.js +64 -38
- package/src/report-html.js +198 -0
- package/src/report-markdown.js +171 -0
- package/src/report.js +396 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ consolidation. The first tagged release inherits this file.
|
|
|
7
7
|
|
|
8
8
|
## Unreleased
|
|
9
9
|
|
|
10
|
+
## 0.1.0-alpha.4 - 2026-08-14
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `report` validates a ledger and atomically writes a deterministic,
|
|
15
|
+
self-contained HTML report from `.wowbagger/report.json`. The report includes
|
|
16
|
+
canonical readiness, semantic-field search, filters, sorting, grouping,
|
|
17
|
+
three detail levels, terminal history, and optional area-diverse swarm
|
|
18
|
+
batches. This repository includes a local report configuration and ignores
|
|
19
|
+
the generated artifact.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- The Claude Code adapter now declares Darwin `supported`. Native Darwin
|
|
24
|
+
conformance passes all 183 common-vector assertions across all 15 cases, so
|
|
25
|
+
configured consumer workspaces can invoke the published adapter read path.
|
|
26
|
+
|
|
27
|
+
## 0.1.0-alpha.3 - 2026-08-12
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
|
|
31
|
+
- Published install and upgrade guidance now names this release's immutable Git
|
|
32
|
+
tag and uses the prerelease `next` npm channel instead of the older `latest`
|
|
33
|
+
artifact. Item 62.
|
|
34
|
+
- The installed plugin skill now requires the exact core distribution version
|
|
35
|
+
that shipped with it, in addition to core contract version 2. This detects an
|
|
36
|
+
older core that shares the contract number but lacks behavior required by the
|
|
37
|
+
newer skill. Item 64; item 63 records the rejected capability-schema change.
|
|
38
|
+
|
|
10
39
|
## 0.1.0-alpha.2 - 2026-08-12
|
|
11
40
|
|
|
12
41
|
### Fixed
|
package/README.md
CHANGED
|
@@ -14,13 +14,15 @@ putting a database or hosted service inside your repository.
|
|
|
14
14
|
> scope is deliberately narrow: cooperative writers in one working copy, one
|
|
15
15
|
> item at a time. A Claude Code adapter and plugin ship from this
|
|
16
16
|
> repository; the adapter answers the negotiation surface of the harness-neutral
|
|
17
|
-
> contract and passes all 183 assertions across all 15 cases on native Darwin
|
|
18
|
-
>
|
|
19
|
-
>
|
|
20
|
-
> definitions are not
|
|
17
|
+
> contract and passes all 183 assertions across all 15 cases on native Darwin.
|
|
18
|
+
> The Claude Code adapter declares Darwin `supported`; all other shipped adapter
|
|
19
|
+
> platform declarations remain `unverified`. The shipped core mutation contract
|
|
20
|
+
> and adapter contract are version 2; their frozen version 1 definitions are not
|
|
21
|
+
> silently negotiated.
|
|
21
22
|
>
|
|
22
|
-
>
|
|
23
|
-
>
|
|
23
|
+
> A work claim is not a lock or an exclusive dispatch lease. On Git-backed
|
|
24
|
+
> ledgers, claims coordinate cooperating agents through a durable journal in
|
|
25
|
+
> Git's shared common directory. `claim acquire` uses
|
|
24
26
|
> observed-state compare-and-swap. `publish-claimed` fences one item against
|
|
25
27
|
> the active owner generation and expected revision. `claim-verify` reconciles
|
|
26
28
|
> response-loss and post-merge outcomes. This is **merge-coordinated**, not
|
|
@@ -34,7 +36,7 @@ Install the core CLI, then verify it:
|
|
|
34
36
|
```sh
|
|
35
37
|
npm install -g wowbagger@next # public npm prerelease
|
|
36
38
|
# or, from this release's Git tag:
|
|
37
|
-
# npm install -g github:lstutzman/wowbagger#v0.1.0-alpha.
|
|
39
|
+
# npm install -g github:lstutzman/wowbagger#v0.1.0-alpha.4
|
|
38
40
|
wowbagger capabilities --json
|
|
39
41
|
```
|
|
40
42
|
|
|
@@ -45,11 +47,12 @@ In Claude Code, add the plugin:
|
|
|
45
47
|
/plugin install wowbagger@wowbagger
|
|
46
48
|
```
|
|
47
49
|
|
|
48
|
-
The plugin drives the installed core rather than bundling one, so a
|
|
49
|
-
|
|
50
|
-
`capabilities
|
|
51
|
-
|
|
52
|
-
would bypass validation
|
|
50
|
+
The plugin drives the installed core rather than bundling one, so a mismatch is
|
|
51
|
+
detectable instead of silent. Its skill reads `wowbagger --version` and
|
|
52
|
+
`capabilities`; it requires the same distribution version as the plugin and
|
|
53
|
+
core contract version 2. It refuses an absent or incompatible core. It will not
|
|
54
|
+
fall back to editing ledger files by hand, because that would bypass validation
|
|
55
|
+
and atomic publication.
|
|
53
56
|
|
|
54
57
|
For an isolated consumer pilot, create or select the disposable worktree before
|
|
55
58
|
the agent starts. Then launch a new session with that worktree as its project
|
|
@@ -69,29 +72,30 @@ two supported install routes:
|
|
|
69
72
|
- **npm registry** — `npm install -g wowbagger@next` installs the current
|
|
70
73
|
prerelease.
|
|
71
74
|
- **git tag** —
|
|
72
|
-
`npm install -g github:lstutzman/wowbagger#v0.1.0-alpha.
|
|
75
|
+
`npm install -g github:lstutzman/wowbagger#v0.1.0-alpha.4` installs this
|
|
73
76
|
release. Installing at a ref installs the core and every adapter that ref
|
|
74
77
|
carries.
|
|
75
78
|
|
|
76
79
|
Either route installs the core and the `wowbagger` command. The Claude Code
|
|
77
80
|
plugin is a separate artifact (see [Start here](#start-here)); the core and the
|
|
78
|
-
plugin are installed
|
|
79
|
-
|
|
81
|
+
plugin are installed independently. Install their matching distribution
|
|
82
|
+
versions.
|
|
80
83
|
|
|
81
84
|
### Compatibility
|
|
82
85
|
|
|
83
|
-
The
|
|
86
|
+
The contract version is top-level `contract_version`, reported by
|
|
84
87
|
`wowbagger capabilities --json`. Contracts change it; refactors do not. The
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
npm/Git distribution version names release bytes. General API consumers
|
|
89
|
+
negotiate the contract version. The shipped plugin skill additionally requires
|
|
90
|
+
the exact core distribution version that shipped with it, because its
|
|
91
|
+
instructions can depend on additive behavior from that release.
|
|
88
92
|
|
|
89
93
|
- **Node.js:** 20 and later. The adapter conformance vectors run against Node
|
|
90
94
|
20 and the current runtime before each release.
|
|
91
|
-
- **Platforms:** the core runs wherever Node.js runs
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
because the CLI starts.
|
|
95
|
+
- **Platforms:** the core runs wherever Node.js runs. The Claude Code adapter
|
|
96
|
+
declares Darwin `supported` from native common-vector evidence. Linux,
|
|
97
|
+
Windows, and the other shipped adapter targets remain `unverified`; do not
|
|
98
|
+
infer support only because the CLI starts.
|
|
95
99
|
- **Other tooling:** `wowbagger` manages a Git-tracked Markdown ledger. It
|
|
96
100
|
needs an accessible Git checkout for work-claim and namespace operations.
|
|
97
101
|
Before `provision`, run
|
|
@@ -131,8 +135,8 @@ wowbagger core, this is how you move forward safely.
|
|
|
131
135
|
Upgrade the pieces you installed:
|
|
132
136
|
|
|
133
137
|
```sh
|
|
134
|
-
npm install -g wowbagger@
|
|
135
|
-
npm install -g github:lstutzman/wowbagger
|
|
138
|
+
npm install -g wowbagger@next # public npm registry
|
|
139
|
+
npm install -g github:lstutzman/wowbagger#v0.1.0-alpha.4 # immutable Git release
|
|
136
140
|
git pull && npm ci # or: a direct checkout
|
|
137
141
|
```
|
|
138
142
|
|
|
@@ -143,15 +147,15 @@ In Claude Code, update the plugin the same way it was installed:
|
|
|
143
147
|
/plugin update wowbagger@wowbagger
|
|
144
148
|
```
|
|
145
149
|
|
|
146
|
-
Then verify, exactly as on first install:
|
|
147
|
-
|
|
148
150
|
```sh
|
|
151
|
+
wowbagger --version
|
|
149
152
|
wowbagger capabilities --json
|
|
150
153
|
```
|
|
151
154
|
|
|
152
|
-
The
|
|
153
|
-
|
|
154
|
-
|
|
155
|
+
The plugin requires its exact core distribution version and top-level core
|
|
156
|
+
`contract_version: 2`. Direct API consumers must check the contract version
|
|
157
|
+
they support; installed plugin users must also keep the plugin and core
|
|
158
|
+
distribution versions equal.
|
|
155
159
|
|
|
156
160
|
The shipped adapter selects only adapter contract version 2 and requires core
|
|
157
161
|
contract version 2. A v1-only consumer receives
|
|
@@ -275,6 +279,7 @@ npm ci
|
|
|
275
279
|
./bin/wowbagger.js validate --ledger path/to/ledger --json
|
|
276
280
|
./bin/wowbagger.js ready --ledger path/to/ledger --as-of 2030-01-15 --json
|
|
277
281
|
./bin/wowbagger.js ready --ledger path/to/ledger --as-of 2030-01-15
|
|
282
|
+
./bin/wowbagger.js report --ledger path/to/ledger --as-of 2030-01-15 --json
|
|
278
283
|
./bin/wowbagger.js capabilities --json
|
|
279
284
|
./bin/wowbagger.js mint-id --json
|
|
280
285
|
./bin/wowbagger.js inspect --ledger path/to/ledger --id wb_... --json
|
|
@@ -314,6 +319,39 @@ directories ending in `.md` remain containers and are traversed. These checks
|
|
|
314
319
|
provide deterministic read hygiene; they are not a sandbox against a privileged
|
|
315
320
|
process racing filesystem changes.
|
|
316
321
|
|
|
322
|
+
`report` validates the complete ledger, reads `.wowbagger/report.json`, and
|
|
323
|
+
atomically publishes one self-contained HTML file. The output must be outside
|
|
324
|
+
the ledger. Relative configured output paths resolve from `.wowbagger/`;
|
|
325
|
+
relative `--out` overrides resolve from the caller's working directory.
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
{
|
|
329
|
+
"report_version": 1,
|
|
330
|
+
"repository": { "name": "Example repository", "logo": "logo.svg" },
|
|
331
|
+
"title": "Ledger report",
|
|
332
|
+
"output": "../../ledger-report.html",
|
|
333
|
+
"fields": {
|
|
334
|
+
"area": "/priority_area",
|
|
335
|
+
"complexity": "/complexity",
|
|
336
|
+
"rank": "/priority_rank"
|
|
337
|
+
},
|
|
338
|
+
"swarm": { "eligible_complexities": ["small", "medium"] }
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
`repository.logo`, `fields`, and `swarm` are optional. Field values resolve
|
|
343
|
+
from parsed frontmatter with RFC 6901 JSON Pointers. A swarm requires mapped
|
|
344
|
+
`area` and `complexity` fields. The report shows canonical readiness, filters,
|
|
345
|
+
sorting, grouping, three detail levels, terminal history, and area-diverse
|
|
346
|
+
ready batches. It contains no external runtime dependency.
|
|
347
|
+
|
|
348
|
+
This repository keeps its report configuration in
|
|
349
|
+
`ledger/.wowbagger/report.json`. Generate the ignored local report with:
|
|
350
|
+
|
|
351
|
+
```sh
|
|
352
|
+
npm run report -- --as-of 2026-08-14
|
|
353
|
+
```
|
|
354
|
+
|
|
317
355
|
`inspect` returns a lossless raw-byte snapshot and its SHA-256 revision.
|
|
318
356
|
`create` publishes only a caller-supplied canonical ID through atomic
|
|
319
357
|
no-clobber publication — `mint-id` prints one, so no consumer writes base32
|
|
@@ -340,8 +378,9 @@ top-level `contract_version` from core `capabilities`. Read
|
|
|
340
378
|
`result.operations.work_claim.api_version` from
|
|
341
379
|
`claim capabilities --ledger <dir> --json`. A claim response's top-level
|
|
342
380
|
`contract_version` is the legacy claim-envelope marker; do not compare it with
|
|
343
|
-
the core version. A consumer that receives an unsupported version
|
|
344
|
-
rather than guessing.
|
|
381
|
+
the core version. A contract consumer that receives an unsupported version
|
|
382
|
+
refuses rather than guessing. The shipped plugin skill also requires its exact
|
|
383
|
+
core distribution version. Direct checkout use—`./bin/wowbagger.js` from a
|
|
345
384
|
clone—remains supported and is what this repository's own ledger uses.
|
|
346
385
|
|
|
347
386
|
## Verify a checkout
|
|
@@ -446,9 +485,9 @@ It is the durable work ledger beneath those systems.
|
|
|
446
485
|
- Separate optional reusable mechanisms from consumer-specific policy.
|
|
447
486
|
- Stabilize the machine-readable command contract and compatibility evidence.
|
|
448
487
|
- Ship Claude Code and Codex adapters. **Claude Code, Codex, and OpenCode
|
|
449
|
-
packages share the version 2 engine; the Claude Code
|
|
450
|
-
all 183 assertions
|
|
451
|
-
declarations remain unverified.**
|
|
488
|
+
packages share the version 2 engine; the Claude Code manifest declares Darwin
|
|
489
|
+
`supported` after passing all 183 native assertions. Other adapter targets and
|
|
490
|
+
platform declarations remain unverified.**
|
|
452
491
|
- Document the generic tool contract for other agent harnesses.
|
|
453
492
|
- Implement merge-coordinated work claims for cooperating Git worktrees.
|
|
454
493
|
**Implemented with durable claim operations, claim-protected single-item
|