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.
- package/README.md +5 -5
- package/bundle/CHANGELOG.md +21 -11
- package/bundle/UPGRADE.md +23 -7
- package/bundle/references/adapters/package-publication.json +68 -17
- package/bundle/references/adapters/package-registry.yaml +145 -145
- package/bundle/references/analysis/verification-policy.yaml +93 -18
- package/bundle/references/artifacts/state-storage-authority.yaml +50 -11
- package/bundle/skills/agentera/SKILL.md +7 -5
- package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +7 -6
- package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +6 -5
- package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +18 -10
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +3 -0
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +8 -6
- package/dist/capabilities/build/instructions.js +8 -5
- package/dist/cli/capabilityContext/build.js +12 -3
- package/dist/cli/capabilityContext/planState.js +6 -2
- package/dist/cli/capabilityContext/startupAggregation.js +1 -1
- package/dist/cli/commands/doctor.js +1 -1
- package/dist/cli/commands/prime/briefOrientation.js +0 -1
- package/dist/cli/commands/prime/collectOrientationState.js +13 -6
- package/dist/cli/commands/prime/orientationOutput.js +27 -5
- package/dist/cli/commands/state/write.js +4 -1
- package/dist/cli/dispatch/index.js +1 -1
- package/dist/cli/help.js +1 -0
- package/dist/cli/migrationRequired.js +40 -5
- package/dist/registries/activationTuples.js +3 -2
- package/dist/registries/packagePublication.js +51 -7
- package/dist/state/entityMigrationPreview.js +3 -9
- package/dist/state/entityPublicationContext.js +56 -3
- package/dist/state/planEntities.js +49 -4
- package/dist/state/progressWritePolicy.js +33 -0
- package/dist/state/stateMode.js +138 -1
- package/dist/state/todoDocsEntities.js +62 -7
- package/dist/state/todoReconciliationActivation.js +46 -4
- package/dist/state/todoReconciliationInspection.js +5 -3
- package/dist/state/todoReconciliationRepair.js +149 -1
- package/dist/state/todoReconciliationTransaction.js +20 -7
- package/dist/state/write/explain.js +17 -3
- package/dist/state/write/input.js +25 -1
- package/dist/state/write/runtimeOperations.js +4 -2
- package/dist/state/write/transaction.js +6 -1
- package/dist/validate/activationArtifactEvidence.js +49 -41
- package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
- package/dist/validate/activationEvidenceManifest.js +26 -10
- 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
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
|
package/bundle/CHANGELOG.md
CHANGED
|
@@ -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
|
-
|
|
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
|
|
34
|
-
|
|
35
|
-
publication, and forward-only tag
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
126
|
-
|
|
127
|
-
|
|
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
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
|
196
|
-
mutation inputs. `state migrate`, `state backfill`, projection repair,
|
|
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.
|
|
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
|
|
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
|
|
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":
|
|
288
|
-
"sha256": "
|
|
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":
|
|
301
|
-
"sha256": "
|
|
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": "
|
|
311
|
-
"scope": "
|
|
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
|
|
327
|
-
"isolation": "Every child receives a distinct HOME, cache, user config, global config, and report output. Batch A provides output isolation. Performance
|
|
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.
|
|
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
|
|
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
|
|
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":
|
|
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,
|