agentera 3.0.0-dev.51 → 3.0.0-dev.69

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 (45) hide show
  1. package/README.md +5 -5
  2. package/bundle/CHANGELOG.md +21 -11
  3. package/bundle/UPGRADE.md +23 -7
  4. package/bundle/references/adapters/package-publication.json +68 -17
  5. package/bundle/references/adapters/package-registry.yaml +145 -145
  6. package/bundle/references/analysis/verification-policy.yaml +93 -18
  7. package/bundle/references/artifacts/state-storage-authority.yaml +50 -11
  8. package/bundle/skills/agentera/SKILL.md +7 -5
  9. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +7 -6
  10. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +6 -5
  11. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +18 -10
  12. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +3 -0
  13. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +8 -6
  14. package/dist/capabilities/build/instructions.js +8 -5
  15. package/dist/cli/capabilityContext/build.js +12 -3
  16. package/dist/cli/capabilityContext/planState.js +6 -2
  17. package/dist/cli/capabilityContext/startupAggregation.js +1 -1
  18. package/dist/cli/commands/doctor.js +1 -1
  19. package/dist/cli/commands/prime/briefOrientation.js +0 -1
  20. package/dist/cli/commands/prime/collectOrientationState.js +13 -6
  21. package/dist/cli/commands/prime/orientationOutput.js +27 -5
  22. package/dist/cli/commands/state/write.js +4 -1
  23. package/dist/cli/dispatch/index.js +1 -1
  24. package/dist/cli/help.js +1 -0
  25. package/dist/cli/migrationRequired.js +40 -5
  26. package/dist/registries/activationTuples.js +3 -2
  27. package/dist/registries/packagePublication.js +51 -7
  28. package/dist/state/entityMigrationPreview.js +3 -9
  29. package/dist/state/entityPublicationContext.js +56 -3
  30. package/dist/state/planEntities.js +49 -4
  31. package/dist/state/progressWritePolicy.js +33 -0
  32. package/dist/state/stateMode.js +138 -1
  33. package/dist/state/todoDocsEntities.js +62 -7
  34. package/dist/state/todoReconciliationActivation.js +46 -4
  35. package/dist/state/todoReconciliationInspection.js +5 -3
  36. package/dist/state/todoReconciliationRepair.js +149 -1
  37. package/dist/state/todoReconciliationTransaction.js +20 -7
  38. package/dist/state/write/explain.js +17 -3
  39. package/dist/state/write/input.js +25 -1
  40. package/dist/state/write/runtimeOperations.js +4 -2
  41. package/dist/state/write/transaction.js +6 -1
  42. package/dist/validate/activationArtifactEvidence.js +49 -41
  43. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  44. package/dist/validate/activationEvidenceManifest.js +26 -10
  45. package/package.json +11 -6
package/README.md CHANGED
@@ -56,11 +56,11 @@ npx -y agentera@next state todo repair --effect-sha256 EFFECT_SHA256 --yes --for
56
56
 
57
57
  Unsafe inactive evidence (unmatched projections, duplicate public work, stale
58
58
  entity status, or prospective resurrection) reports a bounded, content-private
59
- diagnosis but no effect digest or apply command. It has no repair path before
60
- activation. Correct the Markdown-owned public rows and Agentera-owned entity
61
- state, then replan any required mutation. `check validate state` reports the
62
- same read-only diagnosis. Healthy active TODO projections keep the existing
63
- output.
59
+ diagnosis and an owner-correction preview. Supply a complete `id` and
60
+ one-based `source_line` mapping for every managed row, then confirm the exact
61
+ effect-bound apply command. The correction preserves Markdown-owned public
62
+ state and Agentera-owned operational fields without an intermediate activation.
63
+ `check validate state` reports the same read-only diagnosis. Healthy active TODO projections keep the existing output.
64
64
 
65
65
  ## Shared-skill integration
66
66
 
@@ -18,9 +18,17 @@
18
18
 
19
19
  ### Changed
20
20
 
21
+ - Serialized `feat/v3` integrations now allocate one committed
22
+ `3.0.0-dev.N+1` version locally, then automatically qualify and publish that
23
+ exact build to npm `@next`. Stable publication from `main` remains protected
24
+ by review.
25
+ - Local staged verification now gives ordinary source changes targeted tests
26
+ and typecheck with two workers in at most 60 seconds. State and documentation
27
+ checks stay under 10 seconds, while specialized and global owners defer to
28
+ their authoritative CI conjunction instead of running a local release lane.
21
29
  - `agentera prime` now returns TODO state only through the canonical `todo`
22
- field. Requests for the retired `issues` field fail with one structured
23
- correction to `todo` instead of emitting a duplicate alias and warning.
30
+ field. Requests for the retired `issues` field fail with one structured correction to `todo` instead of emitting a duplicate alias and warning.
31
+ - Build progress logging now retains durable project outcomes, while release receipts remain authoritative for attempt evidence.
24
32
  - `agentera prime --context <capability> --format json` now returns one bounded
25
33
  startup availability projection with an `ok`, `degraded`, or `blocked`
26
34
  outcome. Deferred detail names its exact read command; writer payloads are
@@ -30,17 +38,17 @@
30
38
  `agentera route request --input - --format json` and `agentera route receipt
31
39
  --help` expose the exact `agentera.route_receipt.v1` schema, valid outcomes,
32
40
  nullability, compound and UTF-8 span rules, plus a runnable stdin round trip.
33
- - Development releases now separate explicit metadata preparation, source and
34
- candidate qualification, candidate-bound approval, staged exact-version
35
- publication, and forward-only tag promotion. Preparation is registry-free;
36
- qualification retains one immutable artifact with content-addressed receipts
37
- and cold-state smoke evidence; ordinary CI pushes cannot publish it.
41
+ - Development releases now run source checks once before explicit metadata review,
42
+ reuse valid evidence on resume, and construct or reuse one candidate before
43
+ separate approval, staged exact-version publication, and forward-only tag
44
+ promotion. Invalid or stale evidence fails before release effects, while the
45
+ review pause performs no metadata, approval, rebuild, or registry action.
38
46
  - State record families now use canonical bounded `list` and exact `get` reads,
39
47
  with predictable summary counts, selectors, queue ordering, omission metadata,
40
48
  and exact-detail recovery generated from the retrieval authority.
41
49
  - TODO state now reconciles repository-first `TODO.md` edits with operational
42
50
  entity state and publishes requested mutations through one recoverable atomic
43
- transaction.
51
+ transaction, including effect-bound unsafe owner correction before activation.
44
52
  - State mutation behavior now comes from one code-owned 25-operation registry,
45
53
  with declarative discovery in `references/artifacts/state-storage-authority.yaml`
46
54
  required to match it before commands run. `state <family> explain --all`,
@@ -84,6 +92,8 @@
84
92
 
85
93
  ### Fixed
86
94
 
95
+ - Fixed large unsafe inactive TODO status startup to fit its 22,500-byte JSON limit with bounded recovery details.
96
+ - Fixed fresh projects so they can initialize Plan entity state without a legacy upgrade route.
87
97
  - Fixed `agentera doctor --format json` to report bounded, read-only retirement
88
98
  diagnostics for stale native resources. Each candidate now names its exact ID,
89
99
  path-only evidence, and a `doctor --retired-resource ID` preview command;
@@ -122,9 +132,9 @@
122
132
  actual source deadline, reserves bounded cleanup and parent-reconciliation
123
133
  time, and removes its generated state after failure. Source receipts now mark
124
134
  and validate all nine successful gate outcomes and reject semantic tampering.
125
- The read-only `source-check` command now lets explicitly configured
126
- version/gitRef-only pre-commits reuse matching source evidence without
127
- skipping build, compact, parity, or later release qualification.
135
+ The read-only `source-check` command validates matching source evidence for
136
+ development preparation and direct diagnosis without running qualification
137
+ gates or changing repository, candidate, receipt, or registry state.
128
138
  Candidate qualification timing now closes construction before exact-artifact
129
139
  smoke and reconciles non-overlapping gate intervals with explicit overhead.
130
140
  Staging now rejects an absent exact version when the public tag already names
package/bundle/UPGRADE.md CHANGED
@@ -52,10 +52,26 @@ npx -y agentera@next doctor --format json
52
52
  ```
53
53
 
54
54
  Before stable promotion, `prime --context status --format json` is the one-call
55
- bootstrap for clean, v2, partially migrated, and v3 projects. Marker-absent
56
- clean, v2, and partial projects return bounded `blocked` output with the exact
57
- full entity-upgrade recovery; v3 returns `ok` unless health is degraded. No
58
- recovery resolves `@latest`, and healthy v3 needs no second dashboard call.
55
+ bootstrap for fresh, v2, partially migrated, and v3 projects. A Git-root project
56
+ with no `.agentera` state is `fresh_uninitialized`: `prime --context plan` stays
57
+ read-only and operable, and the first `state plan create` is its sole initializer.
58
+ Recognized v2 remains on the full upgrade route; partial, corrupt, and unknown
59
+ marker-absent state stays bounded and blocked behind read-only recovery. No fresh
60
+ startup response recommends `upgrade --yes`, no recovery resolves `@latest`, and
61
+ healthy v3 needs no second dashboard call.
62
+
63
+ ### Fresh Plan initialization
64
+
65
+ For a fresh Git project, use the typed Plan writer. Its dry run previews the
66
+ marker, plan, and task publication without changing the project; apply publishes
67
+ the complete plan graph and then the entity-state marker, rolling back ordinary
68
+ publication failures. Other state writers never initialize fresh state.
69
+
70
+ ```bash
71
+ npx -y agentera@next prime --context plan --format json
72
+ npx -y agentera@next state plan create --input PLAN.yaml --dry-run --format json
73
+ npx -y agentera@next state plan create --input PLAN.yaml --format json
74
+ ```
59
75
 
60
76
  `doctor --format json` also reports bounded `retired_resources` candidates. Each
61
77
  entry has an exact retired resource ID, a path-only or fingerprint-safe
@@ -192,9 +208,9 @@ create dual authority, or add a repair or import command.
192
208
 
193
209
  ## Unsupported legacy state
194
210
 
195
- Pending v1 Markdown state and unknown marker-absent state are not automatic
196
- mutation inputs. `state migrate`, `state backfill`, projection repair, v1
197
- conversion, restore, and downgrade are unsupported. Only
211
+ Pending v1 Markdown, partial, corrupt, and unknown marker-absent state are not
212
+ automatic mutation inputs. `state migrate`, `state backfill`, projection repair,
213
+ v1 conversion, restore, and downgrade are unsupported. Only
198
214
  `npx -y agentera@next upgrade --channel development --project "$PWD" --dry-run`
199
215
  may inventory cutover input; it cannot publish it.
200
216
 
@@ -2,11 +2,11 @@
2
2
  "schemaVersion": "agentera.packagePublication.v2",
3
3
  "owner": "repository/package scripts",
4
4
  "invariants": {
5
- "preparation": "Preparation is pure and registry-independent. It accepts an explicit target version and source commit, changes only package version and agentera.gitRef, and leaves the diff for review and commit.",
5
+ "preparation": "Preparation is pure and registry-independent. Serialized feat/v3 integration preparation requires a clean committed source tree, allocates exactly dev.N+1 locally, sets agentera.gitRef to that source HEAD, and changes only the development manifest for a final metadata commit. The manual readiness preparation path first validates a current normalized source receipt, then accepts an explicit target version and source commit. Stable preparation retains its separate source-provenance contract.",
6
6
  "sourceQualification": "Source qualification never repairs source. It issues a content-addressed receipt only after every declared source gate succeeds against a clean committed tree. A matching receipt is a deterministic local cache, not an authorization boundary.",
7
7
  "candidateQualification": "Candidate qualification validates a current source receipt, constructs one retained immutable tarball with the contract-required retained mode, proves dry-pack observation equivalence, and runs a local exact-artifact smoke in an empty isolated npm state before any registry effect.",
8
8
  "publication": "Registry publication consumes the retained candidate bytes through one measured stage, independent exact-version L2, and promote envelope. Stage and promotion include their required registry convergence and observational checks. The envelope never reconstructs an artifact, reruns source qualification, or rolls a tag back.",
9
- "approval": "Registry mutation requires an explicit approval bound to the candidate receipt digest, target version, integrity, package, registry, and tag. A branch push is never approval.",
9
+ "approval": "Registry mutation requires an approval bound to the candidate receipt digest, target version, integrity, package, registry, and tag. A serialized push to feat/v3 may issue the development approval automatically only after the committed dev.N increment, source qualification, candidate qualification, and CI attestation pass. Stable publication retains explicit protected-environment review on main. A push never substitutes for candidate binding.",
10
10
  "replay": "A matching exact version, integrity, and required tag state is a successful no-upload replay. Conflicting integrity, an escaped artifact, a stale tag, or any unrecognized registry state fails before mutation.",
11
11
  "credentials": "Registry inspection runs before credentials are required. Only the npm mutation child receives a mode-0600 temporary user config. Tool probes and every npm, pnpm, and npx child, including receipt validation during stage and promotion, use isolated user/global config, home, cache, and sanitized npm/pnpm environments.",
12
12
  "output": "Every transaction phase emits a bounded start and end result with package, version, phase, outcome, elapsedMs, executed, reused, and nextAction. The qualified-publication coordinator emits one content-bound timing receipt in JSON or equivalent human output with measured component and total durations, strict budget status, first failure, reconciliation, and replay state. Diagnostics redact credentials and private absolute paths."
@@ -50,6 +50,23 @@
50
50
  "path": ".github/workflows/qualify-candidate.yml",
51
51
  "ref": "refs/heads/feat/v3"
52
52
  },
53
+ "developmentPush": {
54
+ "trigger": "push to refs/heads/feat/v3",
55
+ "versionAuthority": "packages/cli/package.json committed by the serialized local feat/v3 integrator",
56
+ "preparationCommand": "pnpm cli:prepare:dev-push -- --json",
57
+ "validationCommand": "pnpm cli:validate:dev-push -- --before-commit BEFORE --metadata-commit HEAD --json",
58
+ "rules": [
59
+ "BEFORE must be an ancestor of the source commit",
60
+ "HEAD must be one non-merge metadata-only commit after the source commit",
61
+ "source must retain the BEFORE development version",
62
+ "HEAD must increment dev.N exactly once and set agentera.gitRef to the source commit",
63
+ "routine CI defers its duplicate release conjunction on direct feat/v3 pushes",
64
+ "CI never allocates a version or uses github.run_number",
65
+ "reruns reuse the same version, candidate, and source run identity"
66
+ ],
67
+ "approval": "After exact candidate qualification and CI attestation, the workflow issues a machine candidate-bound development approval and publishes to next without a review environment.",
68
+ "concurrency": "The local integrator waits for the prior development workflow to finish before another push. One non-cancelling workflow group protects the active run; it is not used as an unbounded queue."
69
+ },
53
70
  "publicationRunBinding": {
54
71
  "beforeArtifactDownload": [
55
72
  "run.id",
@@ -69,6 +86,7 @@
69
86
  "qualification": {
70
87
  "source": {
71
88
  "component": "release-source",
89
+ "issuanceAuthority": "A new source receipt can be issued only by the contracted GitHub Actions qualification workflow at the committed checkout SHA. Existing valid receipts remain reusable through the read-only source check.",
72
90
  "inputs": [
73
91
  "tracked_tree_except_package_version_gitRef",
74
92
  "verification_policy",
@@ -97,6 +115,12 @@
97
115
  "owner": "packages/cli/scripts/verify-lane.mjs#performance",
98
116
  "correction": "pnpm -C packages/cli run test:performance"
99
117
  },
118
+ {
119
+ "name": "capacity",
120
+ "command": ["pnpm", "-C", "packages/cli", "run", "test:capacity"],
121
+ "owner": "packages/cli/scripts/verify-lane.mjs#capacity",
122
+ "correction": "pnpm -C packages/cli run test:capacity"
123
+ },
100
124
  {
101
125
  "name": "package",
102
126
  "command": ["pnpm", "-C", "packages/cli", "run", "verify:package"],
@@ -158,7 +182,7 @@
158
182
  ],
159
183
  "performanceEvidenceSchema": "agentera.entityAuthorityPerformanceEvidence.v1",
160
184
  "overlapEvidenceSchema": "agentera.generatedOverlapEvidence.v1",
161
- "gateEvidence": "A source receipt contains the exact ten governed gates in contract order. Every gate has its governed origin and phase, outcome passed, a finite non-negative duration, the exact executed/reused shape, and gate-relevant observations. Digest validation precedes semantic validation; either kind of one-field tampering fails closed.",
185
+ "gateEvidence": "A source receipt contains the exact eleven governed gates in contract order. Every gate has its governed origin and phase, outcome passed, a finite non-negative duration, the exact executed/reused shape, and gate-relevant observations. Digest validation precedes semantic validation; either kind of one-field tampering fails closed.",
162
186
  "activationConjunction": {
163
187
  "gateIdentity": "agentera.activationConjunction.v1",
164
188
  "classes": ["cli", "capability", "runtime", "reference", "state", "package", "bootstrap"],
@@ -284,8 +308,8 @@
284
308
  "sha256": "2b48c82bb7ee10388d9ebb4fa7ea3743ea82a7e9aaedfcd5a858eeedb9d891ae"
285
309
  },
286
310
  "state": {
287
- "count": 37,
288
- "sha256": "ca87acdb0fda04ba46a52163fc30ec6578c077e61fcb64597f861a36fdce1dc4"
311
+ "count": 38,
312
+ "sha256": "7ab0dd6ef1b1b1ce66bd9ea94d1de3d542528233e928a44102e289bf12416681"
289
313
  },
290
314
  "package": {
291
315
  "count": 66,
@@ -297,22 +321,22 @@
297
321
  }
298
322
  },
299
323
  "total": {
300
- "count": 279,
301
- "sha256": "b92cd469f858e9584682d05b4d9bb03c2fc4b905f3485475723786c0a978c138"
324
+ "count": 280,
325
+ "sha256": "051ed9a57857a39e11ed8fb583bff9d2a67a306c5ab897a0ee829212468bc23a"
302
326
  }
303
327
  }
304
328
  },
305
329
  "reuseCheck": {
306
330
  "command": "node packages/cli/scripts/release-qualification.mjs source-check --candidate-dir DIR [--json]",
307
- "precommitEnvironment": "AGENTERA_PRECOMMIT_SOURCE_CANDIDATE_DIR",
308
331
  "authority": "The external path is input only. Reuse requires digest, full receipt semantics, exact governed gates, current toolchain, and matching current staged and working tracked-tree identities under the same package version and agentera.gitRef normalization used at source qualification.",
309
332
  "effects": "Runs no qualification gate and writes no repository, candidate, receipt, or registry state. Success emits executed none and reused true without receipt content or private paths.",
310
- "fallback": "An absent environment variable preserves existing routing. A missing, invalid, ambiguous, or stale receipt never skips tests; pre-commit runs the existing broader policy.",
311
- "scope": "Reused source evidence may skip only scripts/precommit-vitest.sh source/release policy execution. Build, compact, parity, candidate qualification, release metadata, approval, and publication remain mandatory at their owning stages."
333
+ "fallback": "A missing, invalid, ambiguous, or stale receipt fails before manual readiness metadata effects. Serialized integration preparation and the local staged-verification lane do not consume release receipts.",
334
+ "scope": "Manual readiness preparation uses the check as a source-readiness prerequisite. Direct diagnostics may inspect reuse without executing a gate. Build, compact, parity, candidate qualification, release metadata, approval, and publication remain mandatory at their owning stages."
312
335
  },
313
336
  "dag": {
314
337
  "batchA": ["generated-overlap", "stress", "typecheck"],
315
338
  "performanceBarrier": ["performance"],
339
+ "capacityBarrier": ["capacity"],
316
340
  "generatedOverlapOrigins": ["source", "package", "build", "generated-overlap"],
317
341
  "barrierB": ["compact", "capability-contract", "activation-conjunction"],
318
342
  "generatedOutputWriter": "generated-overlap",
@@ -323,10 +347,29 @@
323
347
  "capability-contract": 3000,
324
348
  "activation-conjunction": 6000
325
349
  },
326
- "failure": "The coordinator passes generated-overlap and the solo performance barrier the actual source deadline. Overlap stops owned work 10000ms before that deadline, settles and cleans its generated state, and returns at least 4000ms before the deadline for parent reconciliation. The first observed owner failure cancels only cancellable process groups. generated-overlap is cooperatively stopped and never force-killed; performance, barrier B, and receipt issuance remain blocked after any batch failure, and barrier B and receipt issuance remain blocked after any performance failure.",
327
- "isolation": "Every child receives a distinct HOME, cache, user config, global config, and report output. Batch A provides output isolation. Performance additionally runs alone after batch A settles to provide resource isolation for machine-sensitive evidence."
350
+ "failure": "The coordinator passes generated-overlap, the solo performance barrier, and the serial capacity barrier the actual source deadline. Overlap stops owned work 10000ms before that deadline, settles and cleans its generated state, and returns at least 4000ms before the deadline for parent reconciliation. The first observed owner failure cancels only cancellable process groups. generated-overlap is cooperatively stopped and never force-killed; performance, capacity, barrier B, and receipt issuance remain blocked after any batch failure, capacity, barrier B, and receipt issuance remain blocked after any performance failure, and barrier B and receipt issuance remain blocked after any capacity failure.",
351
+ "isolation": "Every child receives a distinct HOME, cache, user config, global config, and report output. Batch A provides output isolation. Performance runs alone with one worker on the policy-declared authoritative runner after batch A settles. Capacity then runs serially before the reader barrier."
328
352
  },
329
- "parallelism": "Batch A runs generated-overlap, stress, and typecheck concurrently. generated-overlap is the sole checkout generated-output writer and sole execution origin for source, package, build, and overlap evidence. After batch A settles and passes, performance runs alone in fresh isolated state. After performance passes, compact, capability-contract, and activation-conjunction run concurrently as readers of the settled generation."
353
+ "parallelism": "Batch A runs generated-overlap, stress, and typecheck concurrently. generated-overlap is the sole checkout generated-output writer and sole execution origin for source, package, build, and overlap evidence. After batch A settles and passes, performance runs alone in fresh isolated state with one worker. Capacity runs alone after performance. After capacity passes, compact, capability-contract, and activation-conjunction run concurrently as readers of the settled generation."
354
+ },
355
+ "readiness": {
356
+ "schemaVersion": "agentera.releaseReadiness.v1",
357
+ "component": "release-readiness",
358
+ "adapter": "development",
359
+ "command": "node packages/cli/scripts/release-readiness.mjs development --candidate-dir DIR --target-version VERSION --source-commit COMMIT [--metadata-commit COMMIT] [--json]",
360
+ "phases": ["source-readiness", "metadata-review", "candidate-readiness"],
361
+ "receipts": {
362
+ "source": "source-receipt.json",
363
+ "candidate": "candidate-receipt.json"
364
+ },
365
+ "reuse": "A present source receipt is validated with the source reuse check instead of invoking source qualification. A present candidate receipt and retained artifact are validated instead of invoking candidate qualification. Invalid, stale, incomplete, or mismatched evidence rejects the run before an issuance owner starts.",
366
+ "metadataReview": "A successful source qualification or source-receipt reuse pauses before candidate construction until the caller supplies the explicit reviewed metadata commit. The coordinator never prepares metadata, changes a version, commits, approves, rebuilds a valid candidate, stages bytes, or mutates registry state.",
367
+ "outcomes": ["paused", "ready", "rejected"],
368
+ "exitCodes": {
369
+ "paused": 0,
370
+ "ready": 0,
371
+ "rejected": 1
372
+ }
330
373
  },
331
374
  "candidate": {
332
375
  "component": "release-candidate",
@@ -359,7 +402,7 @@
359
402
  },
360
403
  "trust": {
361
404
  "local": "A same-principal source receipt is a deterministic cache only. It cannot authorize registry mutation.",
362
- "ci": "CI registry mutation requires the transferred exact artifact and receipts, a CI attestation bound to the candidate receipt and source run, and an explicit candidate-bound approval. OIDC provenance is deferred."
405
+ "ci": "CI registry mutation requires the transferred exact artifact and receipts, a CI attestation bound to the candidate receipt and source run, and a candidate-bound approval. The feat/v3 push workflow may issue development approval automatically after every prior bound check passes; stable main publication requires protected-environment review. OIDC provenance is deferred."
363
406
  },
364
407
  "registryStateTable": [
365
408
  {
@@ -400,7 +443,7 @@
400
443
  "fixture": "clean committed checkout and an external empty candidate directory; no tracked or checkout-local generated candidate files.",
401
444
  "cacheNetwork": "Preflight uses no registry call. Every qualification DAG child and each smoke use a distinct empty HOME, npm cache, user config, global config, and report output; public npm dependency network access is allowed and recorded as cold-cache. Publication reads the registry before credentials.",
402
445
  "repetitions": 3,
403
- "statistic": "Qualification reports median wall milliseconds over exactly three cold-cache repetitions. Concurrent owner-duration totals are reported separately; only owners in the same parallel phase overlap, while the solo performance barrier contributes ordered wall time. Phase timing reconciles through measured DAG wall time rather than by summing nested owner durations. Qualified publication reports one actual approved transaction because registry mutation is not a benchmark repetition; replays run the same measured envelope and report reused registry phases.",
446
+ "statistic": "Qualification reports median wall milliseconds over exactly three cold-cache repetitions. Concurrent owner-duration totals are reported separately; only owners in the same parallel phase overlap, while the solo performance and serial capacity barriers contribute ordered wall time. Phase timing reconciles through measured DAG wall time rather than by summing nested owner durations. Qualified publication reports one actual approved transaction because registry mutation is not a benchmark repetition; replays run the same measured envelope and report reused registry phases.",
404
447
  "coordinator": "packages/cli/scripts/release-benchmark.mjs has separate qualification and publication commands. qualification runs only preflight and source-plus-candidate qualification and never receives npm credentials. publication runs only the approved stage, independent exact-version L2, and promote commands, measures them with one monotonic deadline, and never runs source qualification.",
405
448
  "qualifiedPublication": {
406
449
  "command": "node packages/cli/scripts/release-benchmark.mjs publication --adapter ADAPTER --candidate-dir DIR --receipt-file FILE",
@@ -423,10 +466,18 @@
423
466
  },
424
467
  "timeouts": {
425
468
  "preflightMs": 30000,
426
- "sourceQualificationMs": 420000,
469
+ "sourceQualificationMs": 2400000,
427
470
  "qualifiedPublicationMs": 120000
428
471
  },
429
- "failureRule": "The first observed failing owner remains the reported label. Cancellable peers are stopped, generated-overlap is allowed to settle without forced termination, barrier B and receipt issuance are blocked, and completed/cancelled failures are reported. No timeout or failure authorizes repair, candidate work, or registry mutation."
472
+ "failureRule": "The first observed failing owner remains the reported label. Cancellable peers are stopped, generated-overlap is allowed to settle without forced termination, barrier B and receipt issuance are blocked, and completed/cancelled failures are reported. No timeout or failure authorizes repair, candidate work, or registry mutation.",
473
+ "workflow": {
474
+ "path": ".github/workflows/qualification-benchmark.yml",
475
+ "trigger": "workflow_dispatch only until default-branch scheduling is explicitly authorized",
476
+ "checkoutRef": "refs/heads/feat/v3",
477
+ "command": "pnpm cli:benchmark:qualification -- --adapter development --candidate-root DIR --json",
478
+ "retainedReport": "qualification-benchmark-${{ github.run_id }}",
479
+ "credentials": "No npm token, approval, publication, stage, promote, or registry mutation path is present."
480
+ }
430
481
  },
431
482
  "bounds": {
432
483
  "registryAttempts": 6,