@unbrained/pm-cli 2026.10.10 → 2026.10.11

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 (79) hide show
  1. package/.claude-plugin/marketplace.json +1 -36
  2. package/CHANGELOG.md +13 -4
  3. package/dist/cli-bundle/bundle-manifest.json +1 -382
  4. package/dist/cli-bundle/sdk-governance.js +1 -1
  5. package/dist/cli-bundle/sdk.js +9 -9
  6. package/dist/sdk/governance/artifact-ledgers.d.ts +59 -0
  7. package/dist/sdk/governance/artifact-ledgers.js +2 -0
  8. package/dist/sdk/governance.d.ts +1 -0
  9. package/dist/sdk/governance.js +1 -1
  10. package/dist/sdk/public-surface.json +1 -1
  11. package/docs/RELEASE_LEDGER_RECONCILIATION.md +148 -0
  12. package/docs/RELEASE_RELIABILITY.md +4 -0
  13. package/docs/RELEASING.md +34 -5
  14. package/docs/agent-task-token-baseline.json +1 -292
  15. package/docs/agent-task-transcripts.json +1 -478
  16. package/docs/ecosystem-review-2026-09-28.json +1 -2866
  17. package/docs/examples/policy-restricted-extension/manifest.json +1 -22
  18. package/docs/examples/policy-restricted-extension/package.json +1 -8
  19. package/docs/examples/sdk-agent-environment/package.json +1 -8
  20. package/docs/examples/sdk-app-embedding/package.json +1 -9
  21. package/docs/examples/sdk-contract-consumer/package.json +1 -11
  22. package/docs/examples/sdk-custom-tool/package.json +1 -13
  23. package/docs/examples/starter-extension/manifest.json +1 -33
  24. package/docs/examples/starter-extension/package.json +1 -10
  25. package/docs/performance/corpus-shape-comparison.json +1 -108
  26. package/docs/performance/latest-scale-report.json +1 -418
  27. package/docs/performance/scale-100k-report.json +1 -418
  28. package/docs/schemas/extension-manifest.schema.json +1 -165
  29. package/marketplace.json +1 -36
  30. package/package.json +1 -1
  31. package/packages/pm-beads/extensions/beads/manifest.json +1 -28
  32. package/packages/pm-beads/extensions/beads/package.json +1 -3
  33. package/packages/pm-beads/package.json +1 -50
  34. package/packages/pm-calendar/extensions/calendar/manifest.json +1 -22
  35. package/packages/pm-calendar/extensions/calendar/package.json +1 -3
  36. package/packages/pm-calendar/package.json +1 -51
  37. package/packages/pm-command-kit/extensions/command-kit/manifest.json +1 -22
  38. package/packages/pm-command-kit/extensions/command-kit/package.json +1 -3
  39. package/packages/pm-command-kit/package.json +1 -53
  40. package/packages/pm-digital-twin/extensions/digital-twin/manifest.json +1 -19
  41. package/packages/pm-digital-twin/extensions/digital-twin/package.json +1 -3
  42. package/packages/pm-digital-twin/package.json +1 -58
  43. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +1 -19
  44. package/packages/pm-governance-audit/extensions/governance-audit/package.json +1 -3
  45. package/packages/pm-governance-audit/package.json +1 -55
  46. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +1 -22
  47. package/packages/pm-guide-shell/extensions/guide-shell/package.json +1 -3
  48. package/packages/pm-guide-shell/package.json +1 -52
  49. package/packages/pm-kanban/extensions/kanban/manifest.json +1 -19
  50. package/packages/pm-kanban/extensions/kanban/package.json +1 -3
  51. package/packages/pm-kanban/package.json +1 -57
  52. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +1 -19
  53. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +1 -3
  54. package/packages/pm-lifecycle-hooks/package.json +1 -52
  55. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +1 -29
  56. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/package.json +1 -3
  57. package/packages/pm-linked-test-adapters/package.json +1 -53
  58. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +1 -29
  59. package/packages/pm-search-advanced/extensions/search-advanced/package.json +1 -3
  60. package/packages/pm-search-advanced/package.json +1 -54
  61. package/packages/pm-templates/extensions/templates/manifest.json +1 -22
  62. package/packages/pm-templates/extensions/templates/package.json +1 -3
  63. package/packages/pm-templates/package.json +1 -50
  64. package/packages/pm-todos/extensions/todos/manifest.json +1 -29
  65. package/packages/pm-todos/extensions/todos/package.json +1 -3
  66. package/packages/pm-todos/package.json +1 -51
  67. package/packages/pm-vcs/extensions/vcs/manifest.json +1 -19
  68. package/packages/pm-vcs/extensions/vcs/package.json +1 -3
  69. package/packages/pm-vcs/package.json +1 -55
  70. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -25
  71. package/plugins/pm-claude/.mcp.json +1 -8
  72. package/plugins/pm-claude/hooks/hooks.json +1 -17
  73. package/plugins/pm-claude/package.json +1 -9
  74. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -45
  75. package/plugins/pm-codex/.mcp.json +1 -11
  76. package/plugins/pm-codex/mcp.json +1 -11
  77. package/plugins/pm-codex/package.json +1 -9
  78. package/plugins/pm-codex/plugin.json +1 -45
  79. package/runtime-dependencies.json +1 -512
@@ -0,0 +1,148 @@
1
+ # Full-history release reconciliation
2
+
3
+ Owner: [pm-q91qyd](../.agents/pm/issues/pm-q91qyd.toon).
4
+ Upstream trigger evidence: [pm-prrlce](../.agents/pm/issues/pm-prrlce.toon).
5
+
6
+ The Release Reliability workflow compares every dated section in the
7
+ package-generated changelog, every release tag advertised by `origin`, and
8
+ every version in anonymous public npm metadata. It runs on the existing daily
9
+ schedule and completion triggers, even when a rolling reliability report fails.
10
+ Its separate `release-ledgers-<run>-<attempt>` artifact contains the complete
11
+ input inventories, counts, findings and exception dispositions for offline replay.
12
+
13
+ Missing public registry versions are declared-but-undelivered releases. Missing
14
+ changelog sections are delivered-but-undocumented releases. A tag missing its
15
+ section is tagged-but-unsectioned; an identity can belong to several classes.
16
+ Every missing ledger appears explicitly in the report, without counting one
17
+ identity several times or dropping overlapping classes.
18
+ The `classes` object names these three populations separately; `findings`
19
+ retains one row per discrepant identity.
20
+
21
+ The first complete census on 2026-10-10 found 14 discrepant identities among
22
+ 143 sections, 151 tags and 143 public versions. The exact historical signatures
23
+ and their individual dispositions are recorded in
24
+ [the reviewed exception policy](../config/release-ledger-exceptions.json).
25
+ Unpublished historical preparations are retained as abandoned publications;
26
+ historical documentation gaps remain visible without inventing shipped content.
27
+ These are explicit exceptions, not claims that the three historical sets agree.
28
+ No tag is deleted and no old artifact is published by this reporting path.
29
+
30
+ An exception matches one identity and one exact missing-ledger signature.
31
+ Additional missing evidence invalidates it. Correcting a historical gap makes
32
+ its exception stale and requires removing or revising that policy entry in a
33
+ reviewed change. A new discrepancy or stale exception fails the report.
34
+ Empty total inventories, incomplete populations, duplicate identities, malformed
35
+ remote output, registry failures and missing exception evidence refuse evaluation.
36
+
37
+ The registry request uses the same public npm metadata surface as release
38
+ acceptance, with explicit public registry selection, empty user/global
39
+ configuration and a fresh temporary cache. It runs outside the checkout and
40
+ removes inherited npm authentication/configuration. The report never archives
41
+ credentials, command output or environment values.
42
+ On Windows the collector invokes `cmd.exe` explicitly for npm's `.cmd` launcher.
43
+ The package name must satisfy the restricted registry identity grammar before
44
+ any child starts; the remaining arguments are fixed. Required Windows acceptance
45
+ executes real Git and public npm requests from paths containing spaces and `&`,
46
+ first proves that direct `npm.cmd` execution fails, then verifies the complete
47
+ inventory and temporary-directory cleanup through the repaired launcher.
48
+ No `shell: true` argument-array fallback or resource ceiling increase is used.
49
+ The parser supports npm 11's object and npm 12's single-result array, with
50
+ [captured public npm 12 metadata](../tests/fixtures/release-ledgers/npm-view-12.json)
51
+ as its format regression. Multiple package results refuse evaluation.
52
+
53
+ To run the actual collector after building:
54
+
55
+ ```bash
56
+ RELEASE_LEDGERS_OUTPUT=/absolute/report.json node --input-type=module -e '
57
+ import { main } from "./scripts/release/collect-release-ledgers.mjs";
58
+ const report = main();
59
+ console.log(JSON.stringify({ok:report.ok,counts:report.counts,findings:report.findings}));
60
+ process.exitCode = report.ok ? 0 : 1;
61
+ '
62
+ ```
63
+
64
+ Packages and non-release projects can use the same pure SDK primitive with
65
+ their own named artifact inventories and decision references:
66
+
67
+ ```ts
68
+ import { reconcileArtifactLedgers } from "@unbrained/pm-cli/sdk/governance";
69
+
70
+ const report = reconcileArtifactLedgers([
71
+ { name: "declared", complete: true, identities: ["artifact-1"] },
72
+ { name: "delivered", complete: true, identities: ["artifact-1"] },
73
+ ]);
74
+ ```
75
+
76
+ `ArtifactLedgerSnapshot`, `ArtifactLedgerException`, `ArtifactLedgerFinding`
77
+ and `ArtifactLedgerReport` describe this harness-independent contract.
78
+ The evaluator performs no filesystem, clock or network operations and preserves
79
+ caller inputs. For offline replay, feed the saved `snapshots` and `exceptions`
80
+ back into `reconcileArtifactLedgers`.
81
+
82
+ ## Tag-carried trigger declarations
83
+
84
+ New preparations create annotated tags whose bounded JSON message binds the
85
+ declared upstream event/origin, repository, run/attempt, reviewed source commit
86
+ and prepared target commit. Before publication, the Release workflow checks
87
+ the tag's peeled commit and source ancestry and compares the source declaration
88
+ with the exact GitHub run attempt, including repository, event, source SHA,
89
+ the producer workflow path and declared Auto Release run name. It independently
90
+ fetches the repository's default branch and requires the source run's branch to
91
+ match it. Auto Release uploads an immutable producer binding before pushing;
92
+ publication independently downloads that run attempt's artifact and compares
93
+ the exact tag name, target commit, tag object and canonical declaration. Missing,
94
+ expired, ambiguous or mismatched evidence stops publication; the artifact is
95
+ retained for 90 days. The verifier never assumes the default branch is named
96
+ `main`.
97
+
98
+ The separate `release-publication-origin-<run>-<attempt>` artifact retains the
99
+ tag-object SHA, upstream declaration, independent verification result and the
100
+ current publication/recovery trigger. An operator recovering a dispatcher
101
+ release therefore retains both origins. A rejected atomic push after sealing
102
+ refuses to rebase into a different target; a new preparation must establish a
103
+ new independent binding. Local preparation remains supported without pushing;
104
+ local `--push` refuses before Git inspection or release-asset mutation.
105
+
106
+ Historical lightweight tags and unrelated legacy annotations stay explicitly
107
+ unattributed only when publication matches the repository, tag name and exact
108
+ content-addressed object in the
109
+ [frozen pre-rollout inventory](../config/release-tag-legacy.json). That reviewed
110
+ inventory identifies all 152 origin tag objects observed before this rollout;
111
+ it is not extended automatically. Unknown lightweight tags, unrelated new
112
+ annotations and rewritten historical objects stop before publication, including
113
+ operator recovery. A missing or unreadable inventory fails closed. No origin is
114
+ inferred from a tag-push event or actor. Local preparation records an operator
115
+ declaration but hosted publication refuses it without a hosted producer.
116
+ Tag objects are content-addressed evidence; this does not assert that GitHub
117
+ release/tag immutability policy has been enabled.
118
+
119
+ The downstream tag-push workflow's run name still names `tag_push`; its verified
120
+ upstream origin lives in the summary and artifact. The remaining run-name and
121
+ operator-only manual follow-up contracts retain their existing owners
122
+ [pm-prrlce](../.agents/pm/issues/pm-prrlce.toon) and
123
+ [pm-uenmu9](../.agents/pm/issues/pm-uenmu9.toon). The one-automatic-release-per-UTC-day
124
+ guard and exact-tag recovery semantics are unchanged.
125
+
126
+ ## Installed acceptance path cost
127
+
128
+ Owner: [pm-release-acceptance-path-cost](../.agents/pm/issues/pm-release-acceptance-path-cost.toon).
129
+
130
+ The disposable installed-consumer layout uses concise directory names because
131
+ `init` repeats its workspace path throughout its complete JSON guidance. Long
132
+ macOS temporary ancestry previously made an otherwise valid public artifact
133
+ exceed the raw 12,000-character init ceiling. Shorter private paths retain every
134
+ output field, lifecycle assertion, deadline and ceiling. The
135
+ [captured public output regression](../tests/fixtures/release-acceptance/README.md)
136
+ checks the raw cost for independent control/candidate local npm, global npm and
137
+ Bun layouts; actual installed sessions remain separate acceptance evidence.
138
+
139
+ ## Publication metadata weight
140
+
141
+ Owner: [pm-998juj](../.agents/pm/tasks/pm-998juj.toon).
142
+
143
+ The publication stage compacts first-party JSON while leaving checkout files
144
+ readable and third-party runtime files unchanged. Every parsed value must survive
145
+ serialization exactly; invalid JSON and lossy representations, including negative
146
+ zero or overflowing numbers, stop packing. Real tarball regressions verify nested
147
+ extension data, Unicode, escaped text and the runtime ledger. Both committed size
148
+ profiles, required files and source-map exclusions remain enforced.
@@ -34,6 +34,10 @@ by release preparation, not the inferred cron occurrence. A delayed run cannot
34
34
  backdate a tag. Reporting never creates, retargets, retries, or publishes a tag.
35
35
  The unchanged [release recovery rules](RELEASING.md#failure-handling) apply.
36
36
 
37
+ The independent [full-history ledger report](RELEASE_LEDGER_RECONCILIATION.md)
38
+ also reconciles public registry versions, release tags and generated sections.
39
+ It preserves every historical exception and fails on new or changed drift.
40
+
37
41
  ## Evidence and denominator
38
42
 
39
43
  The collector paginates Auto Release runs over an explicit half-open UTC window
package/docs/RELEASING.md CHANGED
@@ -172,6 +172,17 @@ Pipeline entrypoint:
172
172
  node scripts/release/run-release-pipeline.mjs
173
173
  ```
174
174
 
175
+ Tracked by [pm-prrlce](../.agents/pm/issues/pm-prrlce.toon): hosted preparation
176
+ uses `--push --defer-push` to write an exact producer binding. Auto Release uploads
177
+ `release-producer-binding-<attempt>` before verifying and atomically pushing its
178
+ prepared refs. Publication independently fetches the verified run's artifact and
179
+ compares the tag name, target commit, tag object and declaration. Missing, expired,
180
+ ambiguous or mismatched evidence fails closed; artifact retention is 90 days.
181
+ A branch advance after sealing refuses publication rather than rebasing into a
182
+ different target. Local `--push` refuses before Git inspection or asset mutation;
183
+ local preparation without pushing remains supported. Historical admission remains
184
+ limited to the reviewed exact-object inventory.
185
+
175
186
  The pipeline performs:
176
187
 
177
188
  1. change detection + one-release-per-day guard
@@ -421,14 +432,28 @@ maintainer supplies
421
432
  pair that acknowledgement with migration guidance, compatible extension
422
433
  version bounds where applicable, and the next eligible date-based release.
423
434
 
424
- 5. Push branch and tag after local green.
435
+ 5. Land the implementation through a reviewed pull request, then use hosted
436
+ preparation for publication.
437
+
438
+ Local preparation without `--push` is a diagnostic preview. Its local producer
439
+ declaration cannot authorize publication. Once the reviewed implementation is on
440
+ `main`, dispatch the existing Auto Release workflow from that default branch:
425
441
 
426
442
  ```bash
427
- git push origin main
428
- git tag v<version>
429
- git push origin v<version>
443
+ gh workflow run auto-release.yml --ref main \
444
+ -f push=true -f dry_run=false -f telemetry_mode=off -f trigger_origin=operator
430
445
  ```
431
446
 
447
+ Hosted preparation runs the mandatory gates, creates the version commit and
448
+ annotated tag, and seals their exact producer binding in an immutable artifact
449
+ before verifying and atomically pushing either ref. It waits for the single
450
+ tag-driven Release workflow to publish and accept that exact package. Do not push
451
+ locally prepared tags or invoke `npm publish` separately.
452
+
453
+ If today's immutable tag already exists, use the exact-tag recovery procedure
454
+ below. A local diagnostic tag does not prove hosted preparation or publication;
455
+ never move a published tag or mint a second automatic version for the same UTC day.
456
+
432
457
  ## GitHub Workflow
433
458
 
434
459
  `.github/workflows/release.yml` runs on `v*.*.*` tags and handles:
@@ -454,7 +479,11 @@ git push origin v<version>
454
479
  - a base npm pack dry run, optional Sentry debug-ID injection, a second
455
480
  `sentry-injected` packlist budget over the exact publishable bytes, and only
456
481
  then optional Sentry release metadata/upload/finalization and the npx tarball
457
- smoke test
482
+ smoke test. Sentry release metadata and sourcemaps are uploaded only from
483
+ tag sources. Recovery of an already-published version from reviewed `main`
484
+ preserves that version's existing Sentry commits and sourcemaps; local debug-ID
485
+ injection still validates the candidate artifact budget without changing the
486
+ published release's symbolication data.
458
487
  - generated release notes from changelog plus sanitized tracker metadata. The
459
488
  tracker read projects only release-relevant fields and explicitly removes row
460
489
  and token limits. The generator validates the completeness receipt before
@@ -1,292 +1 @@
1
- {
2
- "version": 5,
3
- "transcript_version": 2,
4
- "transcript_digest": "sha256:6d4041acfaa4075dde1972d6127a74f18916f7661738b4f5d5fd47a61c179a78",
5
- "estimator": "ceil(utf8_bytes / 4)",
6
- "comparison_scope": "plan_recovery_tracker_root_canonicalized",
7
- "measurement_scope": "output_before_token_accounting",
8
- "published_with_release": true,
9
- "orientation": {
10
- "canonical_task_id": "orientation-context-intent",
11
- "required_capabilities": [
12
- "actionable_work",
13
- "active_ownership",
14
- "workspace_state"
15
- ],
16
- "measured_winner_tokens": 1087,
17
- "protocols": [
18
- {
19
- "task_id": "orientation-context-intent",
20
- "command_count": 1,
21
- "estimated_tokens": 1087,
22
- "capabilities": [
23
- "actionable_work",
24
- "active_ownership",
25
- "workspace_state"
26
- ],
27
- "capability_evidence": {
28
- "actionable_work": [
29
- {
30
- "step_id": "context",
31
- "field_path": "hierarchy"
32
- }
33
- ],
34
- "active_ownership": [
35
- {
36
- "step_id": "context",
37
- "field_path": "activity"
38
- }
39
- ],
40
- "workspace_state": [
41
- {
42
- "step_id": "context",
43
- "field_path": "summary.active_items"
44
- }
45
- ]
46
- }
47
- },
48
- {
49
- "task_id": "orientation-operating-rules",
50
- "command_count": 4,
51
- "estimated_tokens": 2325,
52
- "capabilities": [
53
- "actionable_work",
54
- "active_ownership",
55
- "workspace_state"
56
- ],
57
- "capability_evidence": {
58
- "actionable_work": [
59
- {
60
- "step_id": "open",
61
- "field_path": "items"
62
- }
63
- ],
64
- "active_ownership": [
65
- {
66
- "step_id": "in-progress",
67
- "field_path": "items"
68
- }
69
- ],
70
- "workspace_state": [
71
- {
72
- "step_id": "context",
73
- "field_path": "summary.active_items"
74
- }
75
- ]
76
- }
77
- },
78
- {
79
- "task_id": "orientation-contracts-next",
80
- "command_count": 2,
81
- "estimated_tokens": 5203,
82
- "capabilities": [
83
- "actionable_work",
84
- "active_ownership",
85
- "workspace_state"
86
- ],
87
- "capability_evidence": {
88
- "actionable_work": [
89
- {
90
- "step_id": "next",
91
- "field_path": "recommended.id"
92
- }
93
- ],
94
- "active_ownership": [
95
- {
96
- "step_id": "next",
97
- "field_path": "held_by_others"
98
- }
99
- ],
100
- "workspace_state": [
101
- {
102
- "step_id": "next",
103
- "field_path": "summary.in_progress"
104
- }
105
- ]
106
- }
107
- }
108
- ]
109
- },
110
- "tasks": [
111
- {
112
- "id": "orientation-context-intent",
113
- "max_estimated_tokens": 1087,
114
- "steps": [
115
- {
116
- "id": "context",
117
- "max_estimated_tokens": 1087,
118
- "accounting_mode": "self_reported"
119
- }
120
- ]
121
- },
122
- {
123
- "id": "orientation-contracts-next",
124
- "max_estimated_tokens": 5203,
125
- "steps": [
126
- {
127
- "id": "contracts",
128
- "max_estimated_tokens": 4481,
129
- "accounting_mode": "self_reported"
130
- },
131
- {
132
- "id": "next",
133
- "max_estimated_tokens": 722,
134
- "accounting_mode": "self_reported"
135
- }
136
- ]
137
- },
138
- {
139
- "id": "orientation-operating-rules",
140
- "max_estimated_tokens": 2325,
141
- "steps": [
142
- {
143
- "id": "context",
144
- "max_estimated_tokens": 1087,
145
- "accounting_mode": "self_reported"
146
- },
147
- {
148
- "id": "search",
149
- "max_estimated_tokens": 164,
150
- "accounting_mode": "self_reported"
151
- },
152
- {
153
- "id": "open",
154
- "max_estimated_tokens": 878,
155
- "accounting_mode": "self_reported"
156
- },
157
- {
158
- "id": "in-progress",
159
- "max_estimated_tokens": 196,
160
- "accounting_mode": "self_reported"
161
- }
162
- ]
163
- },
164
- {
165
- "id": "context-bootstrap",
166
- "max_estimated_tokens": 2010,
167
- "steps": [
168
- {
169
- "id": "triage",
170
- "max_estimated_tokens": 552,
171
- "accounting_mode": "self_reported"
172
- },
173
- {
174
- "id": "orient",
175
- "max_estimated_tokens": 1087,
176
- "accounting_mode": "self_reported"
177
- },
178
- {
179
- "id": "inspect",
180
- "max_estimated_tokens": 371,
181
- "accounting_mode": "self_reported"
182
- }
183
- ]
184
- },
185
- {
186
- "id": "closed-domain-recovery",
187
- "max_estimated_tokens": 630,
188
- "steps": [
189
- {
190
- "id": "refuse-intent",
191
- "max_estimated_tokens": 259,
192
- "accounting_mode": "self_reported"
193
- },
194
- {
195
- "id": "retry-intent",
196
- "max_estimated_tokens": 371,
197
- "accounting_mode": "self_reported"
198
- }
199
- ]
200
- },
201
- {
202
- "id": "unknown-option-recovery",
203
- "max_estimated_tokens": 596,
204
- "steps": [
205
- {
206
- "id": "refuse-option",
207
- "max_estimated_tokens": 433,
208
- "accounting_mode": "self_reported"
209
- },
210
- {
211
- "id": "retry-option",
212
- "max_estimated_tokens": 163,
213
- "accounting_mode": "self_reported"
214
- }
215
- ]
216
- },
217
- {
218
- "id": "lifecycle-mutation",
219
- "max_estimated_tokens": 812,
220
- "steps": [
221
- {
222
- "id": "create",
223
- "max_estimated_tokens": 20,
224
- "accounting_mode": "self_reported"
225
- },
226
- {
227
- "id": "inspect-open",
228
- "max_estimated_tokens": 363,
229
- "accounting_mode": "self_reported"
230
- },
231
- {
232
- "id": "close",
233
- "max_estimated_tokens": 31,
234
- "accounting_mode": "self_reported"
235
- },
236
- {
237
- "id": "inspect-closed",
238
- "max_estimated_tokens": 398,
239
- "accounting_mode": "self_reported"
240
- }
241
- ]
242
- },
243
- {
244
- "id": "bulk-effect-outcomes",
245
- "max_estimated_tokens": 326,
246
- "steps": [
247
- {
248
- "id": "create-bulk-target",
249
- "max_estimated_tokens": 20,
250
- "accounting_mode": "self_reported"
251
- },
252
- {
253
- "id": "partial-effect",
254
- "max_estimated_tokens": 174,
255
- "accounting_mode": "self_reported"
256
- },
257
- {
258
- "id": "no-effect",
259
- "max_estimated_tokens": 132,
260
- "accounting_mode": "self_reported"
261
- }
262
- ]
263
- },
264
- {
265
- "id": "plan-execution-mutations",
266
- "max_estimated_tokens": 806,
267
- "steps": [
268
- {
269
- "id": "create-plan",
270
- "max_estimated_tokens": 21,
271
- "accounting_mode": "self_reported"
272
- },
273
- {
274
- "id": "add-step",
275
- "max_estimated_tokens": 254,
276
- "accounting_mode": "self_reported"
277
- },
278
- {
279
- "id": "complete-step",
280
- "max_estimated_tokens": 253,
281
- "accounting_mode": "self_reported"
282
- },
283
- {
284
- "id": "inspect-plan",
285
- "max_estimated_tokens": 278,
286
- "accounting_mode": "self_reported"
287
- }
288
- ]
289
- }
290
- ],
291
- "composite_max_estimated_tokens": 13795
292
- }
1
+ {"version":5,"transcript_version":2,"transcript_digest":"sha256:6d4041acfaa4075dde1972d6127a74f18916f7661738b4f5d5fd47a61c179a78","estimator":"ceil(utf8_bytes / 4)","comparison_scope":"plan_recovery_tracker_root_canonicalized","measurement_scope":"output_before_token_accounting","published_with_release":true,"orientation":{"canonical_task_id":"orientation-context-intent","required_capabilities":["actionable_work","active_ownership","workspace_state"],"measured_winner_tokens":1087,"protocols":[{"task_id":"orientation-context-intent","command_count":1,"estimated_tokens":1087,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"context","field_path":"hierarchy"}],"active_ownership":[{"step_id":"context","field_path":"activity"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-operating-rules","command_count":4,"estimated_tokens":2325,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"open","field_path":"items"}],"active_ownership":[{"step_id":"in-progress","field_path":"items"}],"workspace_state":[{"step_id":"context","field_path":"summary.active_items"}]}},{"task_id":"orientation-contracts-next","command_count":2,"estimated_tokens":5203,"capabilities":["actionable_work","active_ownership","workspace_state"],"capability_evidence":{"actionable_work":[{"step_id":"next","field_path":"recommended.id"}],"active_ownership":[{"step_id":"next","field_path":"held_by_others"}],"workspace_state":[{"step_id":"next","field_path":"summary.in_progress"}]}}]},"tasks":[{"id":"orientation-context-intent","max_estimated_tokens":1087,"steps":[{"id":"context","max_estimated_tokens":1087,"accounting_mode":"self_reported"}]},{"id":"orientation-contracts-next","max_estimated_tokens":5203,"steps":[{"id":"contracts","max_estimated_tokens":4481,"accounting_mode":"self_reported"},{"id":"next","max_estimated_tokens":722,"accounting_mode":"self_reported"}]},{"id":"orientation-operating-rules","max_estimated_tokens":2325,"steps":[{"id":"context","max_estimated_tokens":1087,"accounting_mode":"self_reported"},{"id":"search","max_estimated_tokens":164,"accounting_mode":"self_reported"},{"id":"open","max_estimated_tokens":878,"accounting_mode":"self_reported"},{"id":"in-progress","max_estimated_tokens":196,"accounting_mode":"self_reported"}]},{"id":"context-bootstrap","max_estimated_tokens":2010,"steps":[{"id":"triage","max_estimated_tokens":552,"accounting_mode":"self_reported"},{"id":"orient","max_estimated_tokens":1087,"accounting_mode":"self_reported"},{"id":"inspect","max_estimated_tokens":371,"accounting_mode":"self_reported"}]},{"id":"closed-domain-recovery","max_estimated_tokens":630,"steps":[{"id":"refuse-intent","max_estimated_tokens":259,"accounting_mode":"self_reported"},{"id":"retry-intent","max_estimated_tokens":371,"accounting_mode":"self_reported"}]},{"id":"unknown-option-recovery","max_estimated_tokens":596,"steps":[{"id":"refuse-option","max_estimated_tokens":433,"accounting_mode":"self_reported"},{"id":"retry-option","max_estimated_tokens":163,"accounting_mode":"self_reported"}]},{"id":"lifecycle-mutation","max_estimated_tokens":812,"steps":[{"id":"create","max_estimated_tokens":20,"accounting_mode":"self_reported"},{"id":"inspect-open","max_estimated_tokens":363,"accounting_mode":"self_reported"},{"id":"close","max_estimated_tokens":31,"accounting_mode":"self_reported"},{"id":"inspect-closed","max_estimated_tokens":398,"accounting_mode":"self_reported"}]},{"id":"bulk-effect-outcomes","max_estimated_tokens":326,"steps":[{"id":"create-bulk-target","max_estimated_tokens":20,"accounting_mode":"self_reported"},{"id":"partial-effect","max_estimated_tokens":174,"accounting_mode":"self_reported"},{"id":"no-effect","max_estimated_tokens":132,"accounting_mode":"self_reported"}]},{"id":"plan-execution-mutations","max_estimated_tokens":806,"steps":[{"id":"create-plan","max_estimated_tokens":21,"accounting_mode":"self_reported"},{"id":"add-step","max_estimated_tokens":254,"accounting_mode":"self_reported"},{"id":"complete-step","max_estimated_tokens":253,"accounting_mode":"self_reported"},{"id":"inspect-plan","max_estimated_tokens":278,"accounting_mode":"self_reported"}]}],"composite_max_estimated_tokens":13795}