@unbrained/pm-cli 2026.10.8 → 2026.10.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/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +36 -0
- package/dist/cli/register-list-query.js +2 -2
- package/dist/cli/register-mutation.js +2 -2
- package/dist/cli-bundle/bundle-manifest.json +150 -150
- package/dist/cli-bundle/chunks/{chunk-MJVRF67I.js → chunk-2JYTSTQP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UGFN5NJ2.js → chunk-BXSXT5Z6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HFCIAXLP.js → chunk-ESRACL6K.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-34L2BS2Z.js → chunk-K2UTE75T.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZHIMZ65M.js → chunk-KNW3RSLS.js} +30 -30
- package/dist/cli-bundle/chunks/chunk-MEWBSWE3.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-RCFZ6H2Y.js → chunk-OBLO45UM.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FOLSEOJ2.js → chunk-RBPOO46D.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TNU56MZI.js → chunk-RUT3CCAG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-K6E2FFUT.js → chunk-S445XEYT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZBVAZ7XX.js → chunk-SSY4OSJR.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-OG66KEOF.js → chunk-YMLF6QT7.js} +75 -79
- package/dist/cli-bundle/chunks/{chunk-L7U5FSZ5.js → chunk-ZWRLAOA4.js} +2 -2
- package/dist/cli-bundle/chunks/{register-list-query-PYVSPGPV.js → register-list-query-T6BOR67M.js} +7 -7
- package/dist/cli-bundle/chunks/register-mutation-6NXR7SAJ.js +20 -0
- package/dist/cli-bundle/chunks/{register-operations-WL25C3NP.js → register-operations-PDOBQZUJ.js} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-PFKYNEQI.js → register-setup-MAYFPKBX.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-6TKAFFEB.js → chunk-2CJWTLQG.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-EOUORVJA.js → chunk-52UJEHEV.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-V3EPBB6V.js → chunk-AU6VJGTY.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-L3CZNKZE.js → chunk-B3YW6H2I.js} +16 -20
- package/dist/cli-bundle/focused-chunks/{chunk-XT7JAVHI.js → chunk-DMSADMEU.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-A3W6HFFO.js → chunk-EIOQNLBQ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-OLCJ2PJS.js → chunk-GVGFUD52.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-2KSPGWLH.js → chunk-JGFSSR3G.js} +16 -16
- package/dist/cli-bundle/focused-chunks/{chunk-MW2TQHZ3.js → chunk-KNJR2WUO.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-MJQ253F3.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-F2ME5MJY.js → chunk-PBCYGO7X.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-PBPPIGUL.js → chunk-PLTTMQAW.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-SIEGIPNT.js +165 -0
- package/dist/cli-bundle/focused-chunks/{chunk-DRHJOG5X.js → chunk-W5AE7GKZ.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-LZQGEVKT.js → chunk-WAOXID5J.js} +2 -2
- package/dist/cli-bundle/focused-chunks/{chunk-BDT5EALU.js → chunk-WOEZJUA2.js} +2 -2
- package/dist/cli-bundle/main.js +2 -2
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +1 -1
- package/dist/cli-bundle/sdk-core.js +22 -22
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +50 -50
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +9 -9
- package/dist/core/history/event-index.d.ts +1 -2
- package/dist/core/history/event-index.js +2 -2
- package/dist/core/item/item-format.d.ts +2 -0
- package/dist/core/item/item-format.js +3 -3
- package/dist/core/output/output.d.ts +16 -14
- package/dist/core/output/output.js +6 -10
- package/dist/core/schema/runtime-field-values.d.ts +2 -2
- package/dist/core/schema/runtime-field-values.js +1 -1
- package/dist/core/store/item-format-migration.js +1 -1
- package/dist/core/store/item-metadata-query-index.d.ts +1 -2
- package/dist/core/store/item-metadata-query-index.js +1 -1
- package/dist/core/store/item-store.js +1 -1
- package/dist/core/store/sqlite-runtime.d.ts +15 -0
- package/dist/core/store/sqlite-runtime.js +2 -0
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
- package/dist/sdk/governance/reliability.d.ts +74 -0
- package/dist/sdk/governance/reliability.js +2 -0
- package/dist/sdk/governance.d.ts +1 -0
- package/dist/sdk/governance.js +1 -1
- package/dist/sdk/output/table-rows.d.ts +37 -0
- package/dist/sdk/output/table-rows.js +2 -0
- package/dist/sdk/output.d.ts +1 -0
- package/dist/sdk/output.js +2 -2
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/read-output-contracts.d.ts +3 -3
- package/dist/sdk/read-output-contracts.js +1 -1
- package/dist/sdk/structured-mutations.d.ts +5 -1
- package/dist/sdk/structured-mutations.js +1 -1
- package/dist/sdk/test/workspace-snapshot.d.ts +1 -1
- package/dist/sdk/test/workspace-snapshot.js +1 -1
- package/docs/AGENT_OUTPUT_ENCODINGS.md +119 -0
- package/docs/PACKAGE_GATE_ACCEPTANCE.md +56 -0
- package/docs/QUALITY_EVIDENCE.md +52 -1
- package/docs/README.md +2 -0
- package/docs/RELEASE_RELIABILITY.md +54 -3
- package/docs/SDK.md +16 -2
- package/docs/TESTING.md +47 -3
- package/docs/agent-task-token-baseline.json +15 -14
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/package.json +2 -2
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/pm-codex/package.json +2 -2
- package/plugins/pm-codex/plugin.json +1 -1
- package/runtime-dependencies.json +2 -2
- package/dist/cli-bundle/chunks/chunk-JDTBPW4Y.js +0 -2
- package/dist/cli-bundle/chunks/register-mutation-WXP3YLIN.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-OSKXYRYZ.js +0 -165
- package/dist/cli-bundle/focused-chunks/chunk-PEBOVLEG.js +0 -2
package/docs/QUALITY_EVIDENCE.md
CHANGED
|
@@ -1,7 +1,58 @@
|
|
|
1
1
|
# Test strength and documentation content
|
|
2
2
|
|
|
3
3
|
Tracked by [pm-zclzll](../.agents/pm/tasks/pm-zclzll.toon) and
|
|
4
|
-
[pm-dvwm](../.agents/pm/chores/pm-dvwm.toon).
|
|
4
|
+
[pm-dvwm](../.agents/pm/chores/pm-dvwm.toon). Release acceptance and token
|
|
5
|
+
comparison contracts: [pm-gh1428](../.agents/pm/issues/pm-gh1428.toon),
|
|
6
|
+
[pm-gh1429](../.agents/pm/issues/pm-gh1429.toon), and
|
|
7
|
+
[pm-agent-token-path](../.agents/pm/issues/pm-agent-token-path.toon).
|
|
8
|
+
|
|
9
|
+
## Installed context and immutable release recovery
|
|
10
|
+
|
|
11
|
+
The installed-agent journey requests `context --for orient --limit 1` with an
|
|
12
|
+
explicit 512-token output budget. A complete successful result must report the
|
|
13
|
+
actual population: zero items before creation and one closed item after the
|
|
14
|
+
lifecycle. An omitted result cannot establish either fact. When the installed
|
|
15
|
+
version refuses an infeasible budget, the verifier checks exit 2, the omission
|
|
16
|
+
and budget receipts, and the exact advertised `outputBudget: "unbounded"`
|
|
17
|
+
recovery. It then repeats the same intent and amount with that recovery. Older
|
|
18
|
+
control releases may return complete bounded context immediately. Every step
|
|
19
|
+
keeps its existing character ceiling and process deadline; reports retain the
|
|
20
|
+
observed exit status and all refusal/recovery output costs.
|
|
21
|
+
|
|
22
|
+
Unexpected process failures retain classified status, signal, spawn error and
|
|
23
|
+
both output streams, with credential redaction before 512-character excerpts.
|
|
24
|
+
Unit tests own malformed receipts and failure diagnostics. Real npm/Bun
|
|
25
|
+
installations and the hosted candidate/control platform matrix own compatibility
|
|
26
|
+
with the actual SDK-backed CLI. A stubbed empty context object cannot satisfy
|
|
27
|
+
the population assertions.
|
|
28
|
+
|
|
29
|
+
Exact-tag recovery preserves reviewed artifact controls before selecting tagged
|
|
30
|
+
source. The preserved directory retains `scripts/release` and its parent script
|
|
31
|
+
dependencies, including temporary lifecycle and cleanup modules. The executable
|
|
32
|
+
workflow regression copies those real controls, packs a foreign workspace with
|
|
33
|
+
real npm, and checks the committed artifact budget. Removing a transitive import
|
|
34
|
+
must fail with its original module error. Preserved controls stay outside the
|
|
35
|
+
source checkout; published immutable versions are verified without republishing.
|
|
36
|
+
|
|
37
|
+
## Portable agent-task token comparisons
|
|
38
|
+
|
|
39
|
+
Version 5 of the agent-task baseline declares
|
|
40
|
+
`comparison_scope: "plan_recovery_tracker_root_canonicalized"`. Each replay
|
|
41
|
+
continues to report exact `emitted_bytes`, `estimated_tokens`, and accounting
|
|
42
|
+
receipt bytes for the actual transport. Its `comparison_emitted_bytes` and
|
|
43
|
+
`comparison_estimated_tokens` replace only the validated tracker suffixes in
|
|
44
|
+
Plan inspection, next-action and plan-detail recovery commands with the fixed
|
|
45
|
+
`/replay/.agents/pm` comparison root. The actual payload retains executable
|
|
46
|
+
commands targeting its real fixture. Other facts, paths and commands remain
|
|
47
|
+
part of the cost.
|
|
48
|
+
|
|
49
|
+
Step, completed-task and composite ceilings use those comparison measurements.
|
|
50
|
+
The orientation selector uses the same cost basis. Missing, negative,
|
|
51
|
+
non-integer or non-finite measurements and mismatched comparison scopes fail
|
|
52
|
+
closed. Short and long temporary roots must produce the same verdict while
|
|
53
|
+
their real emitted-byte counts may differ. Output growth still fails the
|
|
54
|
+
unchanged ceilings; normalization does not waive accounting, payload parity,
|
|
55
|
+
required-field or executable-recovery checks.
|
|
5
56
|
|
|
6
57
|
## SDK mutation testing
|
|
7
58
|
|
package/docs/README.md
CHANGED
|
@@ -35,6 +35,7 @@ pm guide release --json
|
|
|
35
35
|
- [Onboarding](ONBOARDING.md) - first-two-hours maintainer and contributor setup.
|
|
36
36
|
- [Agent Guide](AGENT_GUIDE.md) - canonical agent loop, tracker linking, and token-minimal command choices.
|
|
37
37
|
- [Agent Read and Test Receipts](AGENT_READ_AND_TEST_RECEIPTS.md) - JSON help provenance, linked-test persistence, and history diff continuation.
|
|
38
|
+
- [Fact-preserving Agent Output](AGENT_OUTPUT_ENCODINGS.md) - lossless SDK table cells, measured token ratchets, count aliases, and whole-response context budgets.
|
|
38
39
|
- [Agent Evidence Consistency](AGENT_EVIDENCE_CONSISTENCY.md) - literal annotations, concurrent history validation, and declared recovery help.
|
|
39
40
|
- [Actionable Item-read Evidence](GET_READ_EVIDENCE.md) - declared blocker status, historical separation, and truthful schedule/artifact omission receipts.
|
|
40
41
|
- [Command Reference](COMMANDS.md) - command families with examples and when to use each family.
|
|
@@ -43,6 +44,7 @@ pm guide release --json
|
|
|
43
44
|
- [Configuration](CONFIGURATION.md) - settings, storage formats, output, search, validation, and environment variables.
|
|
44
45
|
- [Semantic Batching and Retrieval Quality](SEARCH_QUALITY.md) - independent request bounds, execution receipts, and per-query quality floors.
|
|
45
46
|
- [Testing](TESTING.md) - sandbox-safe local tests and linked-test orchestration.
|
|
47
|
+
- [Faithful Package Acceptance](PACKAGE_GATE_ACCEPTANCE.md) - self-isolating package gates, independent Git snapshots, native diagnostics and isolated timing admission.
|
|
46
48
|
- [Completion Portability and Bounded Replication Checks](VALIDATION_PORTABILITY.md) - literal Bash choices across versions and locales, and semantic Git diff collection.
|
|
47
49
|
- [Build and Release Acceptance](BUILD_AND_RELEASE_ACCEPTANCE.md) - complete-build leases and cross-platform registry installation controls.
|
|
48
50
|
- [Security Governance](SECURITY_GOVERNANCE.md) - vulnerability reporting, review discipline, property fuzzing, and OpenSSF limitations.
|
|
@@ -7,7 +7,7 @@ installed-package diagnostics are tracked by
|
|
|
7
7
|
[pm-q7c36n](../.agents/pm/issues/pm-q7c36n.toon).
|
|
8
8
|
|
|
9
9
|
The **Release Reliability** workflow evaluates the preceding 30 days after a
|
|
10
|
-
|
|
10
|
+
default-branch Auto Release or Nightly Validation completes, daily at nominal 04:35 UTC, and on manual
|
|
11
11
|
dispatch. It saves a JSON report and fails its own check when policy is breached.
|
|
12
12
|
The report is independent of candidate correctness: historical failures must
|
|
13
13
|
remain visible while a reviewed repair can still pass publication gates.
|
|
@@ -48,6 +48,11 @@ be uploaded, the collector reads the declared run name. Historical dispatches
|
|
|
48
48
|
without either declaration appear in `pre_attribution_gap`; the failed
|
|
49
49
|
2026-09-28 morning dispatch cannot be attributed from its old run record.
|
|
50
50
|
Dispatcher rows retain creation time, queue delay, outcome, and failure stage.
|
|
51
|
+
The `origins` map also retains independent `native_schedule`, `operator`, and
|
|
52
|
+
`blocker_retry` series, each with original counts, failure stages and outcome
|
|
53
|
+
evidence completeness. Undeclared historical runs remain explicit attribution
|
|
54
|
+
gaps; event or actor never supplies an invented origin. These diagnostic series
|
|
55
|
+
do not alter the native scheduled policy denominator.
|
|
51
56
|
They omit nominal occurrence and dispatch delay because the native 02:35 UTC
|
|
52
57
|
cron is not the dispatcher's clock; the scheduled timing policy does not apply
|
|
53
58
|
to those rows.
|
|
@@ -85,8 +90,54 @@ hosted acceptance job limit.
|
|
|
85
90
|
|
|
86
91
|
The report is a rolling observation, not a permanent archive of all releases.
|
|
87
92
|
Retain exported receipts externally if a longer historical window is needed.
|
|
88
|
-
It does not
|
|
89
|
-
|
|
93
|
+
It does not change the manual same-day version policy or propagate upstream
|
|
94
|
+
origin through historical lightweight tags. Those remaining outcomes retain
|
|
95
|
+
their existing PM owners.
|
|
96
|
+
|
|
97
|
+
## Nightly recurrence and public SDK
|
|
98
|
+
|
|
99
|
+
[pm-2zjs0g](../.agents/pm/issues/pm-2zjs0g.toon) owns the nightly recurrence meter.
|
|
100
|
+
The same reporting workflow builds trusted default-branch code and writes a
|
|
101
|
+
separate `nightly-reliability-<run>-<attempt>` artifact, including when release
|
|
102
|
+
reporting is already red. Its [versioned policy](../config/nightly-reliability-policy.json)
|
|
103
|
+
requires seven completed original attempts per family and at most 10% failures
|
|
104
|
+
over 30 days. Breaches fail the operational report and appear in the workflow
|
|
105
|
+
summary; they remain distinct from checks evaluating a candidate repair.
|
|
106
|
+
|
|
107
|
+
The collector derives current leg identities from `nightly.yml` and each run's
|
|
108
|
+
applicable population from the workflow at its original head SHA. Immutable
|
|
109
|
+
definitions are cached within one census; legacy OS/Node matrices and today's
|
|
110
|
+
labelled shards both retain their actual generations. Newly introduced families
|
|
111
|
+
never gain synthetic pending attempts in older runs. It retains historical
|
|
112
|
+
observed legs, retrieves attempt 1 after reruns, and reads both open
|
|
113
|
+
and closed alert issues plus their complete comment pages. Original failures,
|
|
114
|
+
distinct affected UTC days and observed closure durations survive alert repair.
|
|
115
|
+
Every new alert carries the stable PM recurrence owner and a platform/Node family
|
|
116
|
+
identity. Counts do not depend on a maintained list of occurrence IDs. An absent
|
|
117
|
+
job is pending evidence; an empty family has a null rate and fails coverage.
|
|
118
|
+
|
|
119
|
+
Alert closure is the recorded latency endpoint, not proof of a product fix.
|
|
120
|
+
When one alert episode links several failed runs, its shared closure is the
|
|
121
|
+
endpoint for each recorded occurrence's alert-closure latency. This does not
|
|
122
|
+
assert that an independent per-attempt product repair was verified.
|
|
123
|
+
Product versus infrastructure cause stays `unknown` until independent evidence
|
|
124
|
+
classifies it. Repairs at or beyond the report cutoff remain unresolved in that
|
|
125
|
+
historical window. API errors, incomplete search results, missing pages,
|
|
126
|
+
duplicate identities and ambiguous jobs refuse a complete-census claim.
|
|
127
|
+
|
|
128
|
+
Packages can reuse the harness-independent evaluator through
|
|
129
|
+
`evaluateReliabilityWindow` from `@unbrained/pm-cli/sdk/governance`. Supply
|
|
130
|
+
`ReliabilityAttempt` records with unique `id`, stable `family`, `started_at`,
|
|
131
|
+
original `outcome` and optional `repaired_at`/`cause`, plus an explicit
|
|
132
|
+
`ReliabilityWindowPolicy` population, half-open window, maximum failure fraction
|
|
133
|
+
and minimum completed count. The typed result preserves per-family findings,
|
|
134
|
+
unknown causes and repair observations. No GitHub dependency, filesystem tracker,
|
|
135
|
+
clock read or network call is required by this SDK primitive.
|
|
136
|
+
|
|
137
|
+
For reproducible offline evaluation, retain the report's `attempts` and `policy`
|
|
138
|
+
with its exact window; rerun the SDK evaluator against those records. The GitHub
|
|
139
|
+
adapter accepts a caller-chosen clock and a 1–90 day policy window, allowing
|
|
140
|
+
historical family reconstruction while keeping the production 30-day policy fixed.
|
|
90
141
|
|
|
91
142
|
Provider contracts: [workflow run attempts](https://docs.github.com/en/rest/actions/workflow-runs#get-a-workflow-run-attempt)
|
|
92
143
|
and [completion-triggered workflows](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows#workflow_run).
|
package/docs/SDK.md
CHANGED
|
@@ -1552,8 +1552,22 @@ accepts either a direct `ItemDocument` or the envelope returned by
|
|
|
1552
1552
|
`pm get <id> --json`, strips read-only metadata, maps canonical snake-case item
|
|
1553
1553
|
fields to typed mutation options, and serializes linked facets through the same
|
|
1554
1554
|
repeatable option forms as create/update. Explicit options win over document
|
|
1555
|
-
values.
|
|
1556
|
-
|
|
1555
|
+
values. Pass `resolveRuntimeFieldRegistry(settings.schema).definitions` as the
|
|
1556
|
+
fourth argument to route workspace metadata keys through their declared SDK
|
|
1557
|
+
option names. CLI stdin automatically resolves the selected workspace schema.
|
|
1558
|
+
Schema aliases override document values through the same field registry.
|
|
1559
|
+
Declared extension fields use raw `name=value` assignments; explicit `field`
|
|
1560
|
+
entries override only matching names, preserving other document fields. Strings
|
|
1561
|
+
retain commas, equals signs, quotes, Unicode, and newlines; numbers, booleans,
|
|
1562
|
+
objects, and arrays retain their types. Unknown fields and near-miss built-in
|
|
1563
|
+
keys refuse before item or history writes.
|
|
1564
|
+
|
|
1565
|
+
Tracked by [pm-stdin-schema-fields](../.agents/pm/issues/pm-stdin-schema-fields.toon).
|
|
1566
|
+
Stored schema containers retain their decoded shape; repeated CLI container
|
|
1567
|
+
flags still select the final supplied value. Normal SDK item operations refuse
|
|
1568
|
+
ahead-of-runtime storage markers before schema or body validation and retain
|
|
1569
|
+
item identity/path in the structured error. Integrity diagnostics preserve
|
|
1570
|
+
future markers for inspection.
|
|
1557
1571
|
|
|
1558
1572
|
The built-in adapters stay deliberately thin:
|
|
1559
1573
|
|
package/docs/TESTING.md
CHANGED
|
@@ -57,8 +57,12 @@ fixtures must never create production incidents from a developer host.
|
|
|
57
57
|
|
|
58
58
|
Temporary directories must live outside the checkout and outside any ancestor
|
|
59
59
|
workspace with initialized tracker data. The runner rejects a checkout-local
|
|
60
|
-
temporary root
|
|
61
|
-
|
|
60
|
+
temporary root and every initialized standard or root-layout ancestor tracker,
|
|
61
|
+
including physical symlink aliases, before allocating fixtures or starting build
|
|
62
|
+
or test processes ([pm-bukwmy](../.agents/pm/issues/pm-bukwmy.toon),
|
|
63
|
+
[pm-runner-ancestor-tracker](../.agents/pm/issues/pm-runner-ancestor-tracker.toon)).
|
|
64
|
+
Unrelated valid settings files remain admissible; unreadable or invalid ancestor
|
|
65
|
+
settings refuse ancestry certification. If the default
|
|
62
66
|
temporary filesystem is full, set `TMPDIR` (or `TEMP`/`TMP` on Windows) to an
|
|
63
67
|
existing isolated scratch directory; an ignored directory inside the repository
|
|
64
68
|
is not isolated. Filesystem fixtures must honor `node:os`'s `tmpdir()` and remove
|
|
@@ -138,6 +142,42 @@ failed, skipped, stale, ambiguous, and different-tree results all fail.
|
|
|
138
142
|
`pnpm release:gates` includes the same non-skippable verification, so run it
|
|
139
143
|
only after the pushed reviewed head's hosted analyzers are terminal.
|
|
140
144
|
|
|
145
|
+
## Published Workspace Compatibility
|
|
146
|
+
|
|
147
|
+
Tracked by [pm-pae3wo](../.agents/pm/tasks/pm-pae3wo.toon).
|
|
148
|
+
Run `node scripts/release/workspace-compatibility.mjs --json` after building.
|
|
149
|
+
The policy in `scripts/release/workspace-compatibility-policy.json` requires
|
|
150
|
+
the two immediately preceding stable calendar releases. Each installed release
|
|
151
|
+
writes a disposable workspace read by the current runtime, and the current
|
|
152
|
+
runtime writes one read by that release. Exact scalar and container values must
|
|
153
|
+
survive CLI and public SDK reads, ordinary writes with their registration
|
|
154
|
+
disabled, history restoration, native Git merges, reconciliation, and history
|
|
155
|
+
verification. Missing releases, metadata loss, or invalid merged histories fail
|
|
156
|
+
the gate. CI, nightly quality, release publication, and local preflight require
|
|
157
|
+
this matrix alongside the independent legacy Markdown migration check.
|
|
158
|
+
|
|
159
|
+
Metadata probes and installs explicitly use the public npm registry with
|
|
160
|
+
separate empty user/global configurations and a fresh temporary cache. Inherited
|
|
161
|
+
npm settings and registry-auth environment variables are removed, so host
|
|
162
|
+
configuration cannot change the artifacts selected by the declared window.
|
|
163
|
+
|
|
164
|
+
The current item-operation boundary refuses a stored `pm_format_version`
|
|
165
|
+
ahead of its supported version with `item_format_version_unsupported` and
|
|
166
|
+
upgrade guidance. Reads, updates, deletion, and restoration preserve the
|
|
167
|
+
original item/history on refusal, including documents whose metadata/body
|
|
168
|
+
shapes are invalid for the current runtime. Admission precedes schema validation
|
|
169
|
+
so restore cannot misclassify newer data as ordinary corruption. Static fixture
|
|
170
|
+
modules read separate JSON data; published SDK probes use the public package
|
|
171
|
+
entrypoint from their own consumer directory. Raw parsers still preserve future version
|
|
172
|
+
markers for integrity inspection; inventory diagnostics are not permission to
|
|
173
|
+
rewrite an unsupported item.
|
|
174
|
+
|
|
175
|
+
Run the matrix from the built workspace root. Exact-tag release recovery retains
|
|
176
|
+
the reviewed matrix controls, policy and static fixtures outside the checkout,
|
|
177
|
+
then tests the selected tagged runtime through its manifest and public SDK. A
|
|
178
|
+
historical tag need not contain newly added gate scripts; recovery still runs
|
|
179
|
+
the mandatory matrix without rewriting the tagged source or skipping policy.
|
|
180
|
+
|
|
141
181
|
## Focused Test Runs
|
|
142
182
|
|
|
143
183
|
```bash
|
|
@@ -549,7 +589,11 @@ pm test <item-id> --run --workspace-context snapshot --override-linked-workspace
|
|
|
549
589
|
copy, and binds its `.agents/pm` path to the selected temporary tracker.
|
|
550
590
|
`.git`, `.agents`, coverage output, and common cache directories are excluded
|
|
551
591
|
at every directory depth, with reserved names matched case-insensitively for
|
|
552
|
-
portable admission.
|
|
592
|
+
portable admission. Git sources receive an independent commit/tag object store
|
|
593
|
+
with fresh configuration, no source hooks, and no origin remote. Repository
|
|
594
|
+
history remains available; this is execution isolation, not history redaction.
|
|
595
|
+
See [Faithful package acceptance](PACKAGE_GATE_ACCEPTANCE.md) for limits.
|
|
596
|
+
Each existing root or nested `node_modules`
|
|
553
597
|
directory is linked at its original relative path, including installations
|
|
554
598
|
already represented by directory symlinks. This preserves independent
|
|
555
599
|
monorepo dependency versions without copying dependency trees. Dependency
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version":
|
|
2
|
+
"version": 5,
|
|
3
3
|
"transcript_version": 2,
|
|
4
4
|
"transcript_digest": "sha256:6d4041acfaa4075dde1972d6127a74f18916f7661738b4f5d5fd47a61c179a78",
|
|
5
5
|
"estimator": "ceil(utf8_bytes / 4)",
|
|
6
|
+
"comparison_scope": "plan_recovery_tracker_root_canonicalized",
|
|
6
7
|
"measurement_scope": "output_before_token_accounting",
|
|
7
8
|
"published_with_release": true,
|
|
8
9
|
"orientation": {
|
|
@@ -12,12 +13,12 @@
|
|
|
12
13
|
"active_ownership",
|
|
13
14
|
"workspace_state"
|
|
14
15
|
],
|
|
15
|
-
"measured_winner_tokens":
|
|
16
|
+
"measured_winner_tokens": 1087,
|
|
16
17
|
"protocols": [
|
|
17
18
|
{
|
|
18
19
|
"task_id": "orientation-context-intent",
|
|
19
20
|
"command_count": 1,
|
|
20
|
-
"estimated_tokens":
|
|
21
|
+
"estimated_tokens": 1087,
|
|
21
22
|
"capabilities": [
|
|
22
23
|
"actionable_work",
|
|
23
24
|
"active_ownership",
|
|
@@ -47,7 +48,7 @@
|
|
|
47
48
|
{
|
|
48
49
|
"task_id": "orientation-operating-rules",
|
|
49
50
|
"command_count": 4,
|
|
50
|
-
"estimated_tokens":
|
|
51
|
+
"estimated_tokens": 2325,
|
|
51
52
|
"capabilities": [
|
|
52
53
|
"actionable_work",
|
|
53
54
|
"active_ownership",
|
|
@@ -109,11 +110,11 @@
|
|
|
109
110
|
"tasks": [
|
|
110
111
|
{
|
|
111
112
|
"id": "orientation-context-intent",
|
|
112
|
-
"max_estimated_tokens":
|
|
113
|
+
"max_estimated_tokens": 1087,
|
|
113
114
|
"steps": [
|
|
114
115
|
{
|
|
115
116
|
"id": "context",
|
|
116
|
-
"max_estimated_tokens":
|
|
117
|
+
"max_estimated_tokens": 1087,
|
|
117
118
|
"accounting_mode": "self_reported"
|
|
118
119
|
}
|
|
119
120
|
]
|
|
@@ -136,11 +137,11 @@
|
|
|
136
137
|
},
|
|
137
138
|
{
|
|
138
139
|
"id": "orientation-operating-rules",
|
|
139
|
-
"max_estimated_tokens":
|
|
140
|
+
"max_estimated_tokens": 2325,
|
|
140
141
|
"steps": [
|
|
141
142
|
{
|
|
142
143
|
"id": "context",
|
|
143
|
-
"max_estimated_tokens":
|
|
144
|
+
"max_estimated_tokens": 1087,
|
|
144
145
|
"accounting_mode": "self_reported"
|
|
145
146
|
},
|
|
146
147
|
{
|
|
@@ -162,7 +163,7 @@
|
|
|
162
163
|
},
|
|
163
164
|
{
|
|
164
165
|
"id": "context-bootstrap",
|
|
165
|
-
"max_estimated_tokens":
|
|
166
|
+
"max_estimated_tokens": 2010,
|
|
166
167
|
"steps": [
|
|
167
168
|
{
|
|
168
169
|
"id": "triage",
|
|
@@ -171,7 +172,7 @@
|
|
|
171
172
|
},
|
|
172
173
|
{
|
|
173
174
|
"id": "orient",
|
|
174
|
-
"max_estimated_tokens":
|
|
175
|
+
"max_estimated_tokens": 1087,
|
|
175
176
|
"accounting_mode": "self_reported"
|
|
176
177
|
},
|
|
177
178
|
{
|
|
@@ -262,7 +263,7 @@
|
|
|
262
263
|
},
|
|
263
264
|
{
|
|
264
265
|
"id": "plan-execution-mutations",
|
|
265
|
-
"max_estimated_tokens":
|
|
266
|
+
"max_estimated_tokens": 806,
|
|
266
267
|
"steps": [
|
|
267
268
|
{
|
|
268
269
|
"id": "create-plan",
|
|
@@ -271,12 +272,12 @@
|
|
|
271
272
|
},
|
|
272
273
|
{
|
|
273
274
|
"id": "add-step",
|
|
274
|
-
"max_estimated_tokens":
|
|
275
|
+
"max_estimated_tokens": 254,
|
|
275
276
|
"accounting_mode": "self_reported"
|
|
276
277
|
},
|
|
277
278
|
{
|
|
278
279
|
"id": "complete-step",
|
|
279
|
-
"max_estimated_tokens":
|
|
280
|
+
"max_estimated_tokens": 253,
|
|
280
281
|
"accounting_mode": "self_reported"
|
|
281
282
|
},
|
|
282
283
|
{
|
|
@@ -287,5 +288,5 @@
|
|
|
287
288
|
]
|
|
288
289
|
}
|
|
289
290
|
],
|
|
290
|
-
"composite_max_estimated_tokens":
|
|
291
|
+
"composite_max_estimated_tokens": 13795
|
|
291
292
|
}
|
|
@@ -4,12 +4,12 @@ Tracker: `pm-f05lsg`.
|
|
|
4
4
|
|
|
5
5
|
Every catalog code is listed. An `uncovered` row is an explicit closure obligation, never an omission or implied approval.
|
|
6
6
|
|
|
7
|
-
- Catalog error codes:
|
|
7
|
+
- Catalog error codes: 397
|
|
8
8
|
- Executable error codes: 19
|
|
9
9
|
- Executable-code ratchet floor: 18
|
|
10
10
|
- Required executable canonical codes: `bulk_ids_input_empty`, `bulk_ids_input_missing_path`, `bulk_ids_input_unreadable`, `invalid_argument_value`, `manifest_unknown_key`, `missing_lifecycle_target`, `missing_required_argument`, `no_version_bounds_declared`, `projection_options_mutually_exclusive`, `tracker_not_initialized`, `tracker_root_missing`, `tracker_root_not_directory`, `tracker_root_unreadable`, `unknown_context_intent`, `unknown_field_projection`, `unknown_option`, `unknown_subcommand`
|
|
11
|
-
- Uncovered error codes:
|
|
12
|
-
- Coverage fraction: 0.
|
|
11
|
+
- Uncovered error codes: 378
|
|
12
|
+
- Coverage fraction: 0.047859
|
|
13
13
|
- Closed-domain probes: 19
|
|
14
14
|
- Grammar probes: 117
|
|
15
15
|
|
|
@@ -177,6 +177,7 @@ Every catalog code is listed. An `uncovered` row is an explicit closure obligati
|
|
|
177
177
|
| `item_document_encoding_invalid` | `item_document_encoding_invalid` | uncovered | none | 0 |
|
|
178
178
|
| `item_document_invalid` | `item_document_invalid` | uncovered | none | 0 |
|
|
179
179
|
| `item_document_roundtrip_failed` | `item_document_roundtrip_failed` | uncovered | none | 0 |
|
|
180
|
+
| `item_format_version_unsupported` | `item_format_version_unsupported` | uncovered | none | 0 |
|
|
180
181
|
| `item_id_collision` | `item_id_collision` | uncovered | none | 0 |
|
|
181
182
|
| `item_identity_ambiguous` | `item_identity_ambiguous` | uncovered | none | 0 |
|
|
182
183
|
| `item_identity_conflict` | `item_identity_conflict` | uncovered | none | 0 |
|
package/marketplace.json
CHANGED
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"url": "https://github.com/unbraind/pm-cli"
|
|
6
6
|
},
|
|
7
7
|
"description": "Official marketplace for pm CLI — native git-based project management for Claude Code and AI coding agents.",
|
|
8
|
-
"version": "2026.10.
|
|
8
|
+
"version": "2026.10.10",
|
|
9
9
|
"plugins": [
|
|
10
10
|
{
|
|
11
11
|
"name": "pm-claude",
|
|
12
12
|
"source": "./plugins/pm-claude",
|
|
13
13
|
"description": "Native pm CLI integration for Claude Code — 32 MCP tools, 14 workflow skills with slash invocations, 4 subagents, hybrid TUI task tracking, session context injection, and coordination subagents for git-based project management without leaving Claude Code.",
|
|
14
|
-
"version": "2026.10.
|
|
14
|
+
"version": "2026.10.10",
|
|
15
15
|
"author": {
|
|
16
16
|
"name": "unbrained",
|
|
17
17
|
"url": "https://github.com/unbraind/pm-cli"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-digital-twin",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.10",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Beyond-PM exemplar: a temporal production-facility digital twin built entirely on public pm SDK and extension primitives.",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "pm-claude",
|
|
4
4
|
"displayName": "pm CLI",
|
|
5
5
|
"description": "Native pm CLI integration for Claude Code — 32 MCP tools, 14 skills with slash invocations, 4 subagents (coordinator, delivery-chain, triage, verification), hybrid TUI task tracking (pm as persistent store + Claude Code task panel as live view), session context injection, and full git-based project management without leaving Claude Code.",
|
|
6
|
-
"version": "2026.10.
|
|
6
|
+
"version": "2026.10.10",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "unbrained",
|
|
9
9
|
"url": "https://github.com/unbraind/pm-cli"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "pm-codex",
|
|
4
|
-
"version": "2026.10.
|
|
4
|
+
"version": "2026.10.10",
|
|
5
5
|
"description": "Repository-native project context workflows and a version-pinned pm MCP server for Codex.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "unbrained",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-cli",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.10",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@unbrained/pm-cli",
|
|
9
|
-
"version": "2026.10.
|
|
9
|
+
"version": "2026.10.10",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@sentry/node": "10.75.1",
|
|
12
12
|
"@toon-format/toon": "^4.1.1",
|