agentera 3.0.0-dev.72 → 3.0.0-dev.75

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 (93) hide show
  1. package/README.md +111 -0
  2. package/bundle/.agentera-build-source.json +8 -0
  3. package/bundle/CHANGELOG.md +17 -17
  4. package/bundle/extract-corpus-parity.json +1 -1
  5. package/bundle/references/adapters/package-publication.json +49 -53
  6. package/bundle/references/adapters/package-registry.yaml +5 -1
  7. package/bundle/references/adapters/package-surface-characterization.md +6 -4
  8. package/bundle/references/analysis/evidence-tier-authority.yaml +45 -4
  9. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  10. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  11. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  12. package/bundle/references/analysis/verification-policy.yaml +8 -13
  13. package/bundle/references/artifacts/glossary-entry-contract.yaml +1533 -35
  14. package/bundle/references/cli/update-channels.yaml +2 -2
  15. package/bundle/references/cli/vocabulary.md +1 -1
  16. package/bundle/references/meta/retained-reference-authority.yaml +16 -1
  17. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +11 -7
  18. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +6 -3
  19. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +13 -7
  20. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +5 -0
  21. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +7 -0
  22. package/dist/.agentera-build-source.json +8 -0
  23. package/dist/analytics/extractCorpus/copilotSessions.js +13 -4
  24. package/dist/analytics/extractCorpus/core.js +223 -3
  25. package/dist/analytics/extractCorpus/corpus.js +18 -1
  26. package/dist/analytics/extractCorpus/cursorSessions.js +22 -4
  27. package/dist/analytics/extractCorpus/evidenceTiers.js +123 -17
  28. package/dist/analytics/extractCorpus/filesystemSources.js +4 -0
  29. package/dist/analytics/extractCorpus/index.js +2 -2
  30. package/dist/analytics/extractCorpus/jsonlSessions.js +52 -3
  31. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -3
  32. package/dist/analytics/personalGlossaryAdmission.js +26 -46
  33. package/dist/analytics/personalGlossaryCandidateProjection.js +692 -0
  34. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  35. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  36. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  37. package/dist/analytics/personalGlossaryDecision.js +203 -0
  38. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  39. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  40. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  41. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  42. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  43. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  44. package/dist/analytics/personalGlossaryProfile.js +13 -3
  45. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  46. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  47. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  48. package/dist/capabilities/index.js +5 -1
  49. package/dist/capabilities/profile/instructions.js +50 -15
  50. package/dist/cli/commands/personalGlossaryCandidateReads.js +744 -0
  51. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  52. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  53. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  54. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  55. package/dist/cli/commands/prime/briefOrientation.js +118 -19
  56. package/dist/cli/commands/report.js +18 -2
  57. package/dist/cli/commands/schema.js +179 -0
  58. package/dist/cli/commands/verify.js +51 -9
  59. package/dist/cli/dispatch/lifecycle.js +51 -6
  60. package/dist/cli/help.js +48 -2
  61. package/dist/cli/migrationRequired.js +4 -1
  62. package/dist/core/atomicWriter.js +4 -1
  63. package/dist/core/developmentInvocation.js +4 -1
  64. package/dist/core/yaml.js +53 -1
  65. package/dist/eval/glossaryEvaluation.js +751 -0
  66. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  67. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  68. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  69. package/dist/registries/activationTuples.js +31 -3
  70. package/dist/registries/evidenceTierContract.js +4 -0
  71. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  72. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  73. package/dist/registries/glossaryCandidateContracts.js +820 -0
  74. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  75. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  76. package/dist/registries/glossaryCandidateProjectionAuthority.js +197 -0
  77. package/dist/registries/glossaryCandidateProjectionContract.js +104 -0
  78. package/dist/registries/glossaryEntryContract.js +105 -103
  79. package/dist/registries/glossaryEntryTemporal.js +12 -0
  80. package/dist/registries/glossaryMiningAuthority.js +764 -0
  81. package/dist/registries/glossaryProfileFullContract.js +24 -0
  82. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  83. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  84. package/dist/registries/glossaryTermIdentity.js +122 -0
  85. package/dist/registries/packagePublication.js +3 -3
  86. package/dist/registries/personalGlossaryContracts.js +1 -0
  87. package/dist/release/releaseMetadata.js +15 -8
  88. package/dist/upgrade/npxPlatformStatus.js +2 -1
  89. package/dist/upgrade/projectIntegration.js +7 -1
  90. package/dist/validate/activationArtifactEvidence.js +18 -4
  91. package/dist/validate/activationEvidenceManifest.js +101 -22
  92. package/package.json +2 -4
  93. package/dist/cli/commands/personalGlossary.js +0 -176
package/README.md CHANGED
@@ -112,6 +112,117 @@ reports full, summary-only, or unavailable detail without fabricating archives.
112
112
  See [UPGRADE.md](../../UPGRADE.md) for ownership, recovery, and migration
113
113
  details.
114
114
 
115
+ ## Private personal glossary candidate reads
116
+
117
+ The user-local candidate projection has a separate read-only surface. It does
118
+ not need a project checkout and never reads a project glossary.
119
+
120
+ ```bash
121
+ npx -y agentera@next report personal-glossary-candidates list --limit 20 --format json
122
+ npx -y agentera@next report personal-glossary-candidates get \
123
+ --candidate-id ID --candidate-revision REVISION \
124
+ --generation GENERATION --policy-version POLICY --format json
125
+ ```
126
+
127
+ List cursors bind the current generation, policy, filters, limit, order, and
128
+ expiry-aware safe-context availability snapshot. Safe context becomes
129
+ unavailable at its 30-day expiry without changing persisted projection bytes;
130
+ a cursor from an earlier availability view cannot resume. Exact reads return
131
+ opaque validated occurrence identities and a currently available safe context,
132
+ not raw source, anchor, session, project, or filesystem values. Both commands
133
+ are non-interactive and mutation-free.
134
+
135
+ ## Personal glossary decisions
136
+
137
+ Submit one host semantic classification receipt through the private, read-only
138
+ decision boundary. Copy the current `candidate_projection_sha256` from the
139
+ candidate read into the receipt. The CLI validates the receipt against the
140
+ current projection and evidence, then returns an admission outcome without
141
+ writing a review, profile entry, or project state.
142
+
143
+ ```bash
144
+ npx -y agentera@next report personal-glossary-decision --input receipt.json --format json
145
+ ```
146
+
147
+ Only a current explicit personal definition with a complete resolved
148
+ user-authored anchor can return `automatic_admission`. Inferred candidates stay
149
+ `review_required` or `abstain`, regardless of host confidence. The command does
150
+ not read a project glossary. File and stdin requests are limited to 16,384 UTF-8
151
+ bytes. The machine schema lists the only allowed reason codes for each outcome.
152
+
153
+ ## Personal glossary publication
154
+
155
+ Publish one current explicit automatic admission through the separate,
156
+ user-local mutation boundary:
157
+
158
+ ```bash
159
+ npx -y agentera@next report personal-glossary-publish --input publication.json --format json
160
+ ```
161
+
162
+ The bounded request contains `schema_version`, `receipt`, `decision`, and
163
+ `as_of`. It can additionally carry an opaque `review_authorization` with a
164
+ review ID and canonical review-record digest. It never accepts a profile or
165
+ project path. Immediately before an atomic replacement, Agentera revalidates the
166
+ current projection, candidate, receipt, CLI decision, evidence, scope, meaning,
167
+ revision, policy, and quality gate. An automatic publication still requires
168
+ `explicit_current_authorized`. A review-required publication additionally needs a
169
+ current stored `accept` or `correct` authorization. The command changes only the
170
+ owned `PROFILE.md` Glossary section and returns opaque bindings, not terms,
171
+ meanings, anchors, paths, or source content. Exact replay with the same date is
172
+ an `unchanged_replay`; malformed, stale, unavailable, or conflicting input leaves
173
+ profile bytes unchanged.
174
+
175
+ ## Personal glossary review records
176
+
177
+ Queue a current `review_required` decision when no question channel is available.
178
+ The queue takes the same bounded host receipt shape as the decision command and
179
+ revalidates it before writing private metadata.
180
+
181
+ ```bash
182
+ npx -y agentera@next report personal-glossary-reviews queue --input receipt.json --format json
183
+ npx -y agentera@next report personal-glossary-reviews disposition --input disposition.json --format json
184
+ npx -y agentera@next report personal-glossary-reviews list --status pending --limit 20 --format json
185
+ npx -y agentera@next report personal-glossary-reviews get \
186
+ --review-id ID --candidate-id ID --candidate-revision REVISION \
187
+ --generation GENERATION --policy-version POLICY --format json
188
+ ```
189
+
190
+ Records live only under the configured user profile. Queue metadata retains opaque
191
+ candidate, receipt, decision, semantic-fingerprint, scope, policy, reason, and
192
+ lifecycle bindings. A `correct` action can retain only its authority-approved
193
+ corrected meaning in the canonical user-local review record. Records never retain
194
+ a term, excerpt, raw evidence, source, session, project, path, tool content,
195
+ signature, nonce, or host proof.
196
+
197
+ The local host writes one canonical `trusted-local-host.json` document beside the
198
+ review store. It contains the current-user subject and an Ed25519 SPKI public key.
199
+ Only a fresh `agentera.personalGlossaryReviewApproval.v1` action from
200
+ `agentera-local-host` over `agentera-local-host-ipc`, signed by that key, can
201
+ disposition a queued review. The signed receipt binds the review ID, stable term,
202
+ revision, projection, semantic fingerprint, generation, policy, disposition,
203
+ correction fields, timestamps, and nonce. Exact receipt replay is idempotent;
204
+ reusing a nonce with changed signed content fails before effects.
205
+
206
+ Canonical v1 pending review stores remain readable through `list` and `get`
207
+ without changing their bytes. Only `disposition` can migrate one valid v1 record.
208
+ It revalidates the current receipt and projection, derives the missing scope from
209
+ that receipt, preserves immutable review bindings, and atomically writes the v2
210
+ lifecycle and replay state. Invalid or ambiguous v1 input leaves the store
211
+ unchanged.
212
+
213
+ Rejected and deferred records suppress a recurrence with the same stable identity,
214
+ semantic fingerprint, scope, and policy even when only corroborating evidence,
215
+ revision, or generation changes. A meaning, scope, or policy change creates a
216
+ bounded reopened record with a visible reason. Accepted or corrected records return
217
+ an opaque authorization for the separate publish command. They do not publish
218
+ directly. List and exact reads are noninteractive, owner-restricted,
219
+ cursor-bounded, and mutation-free.
220
+
221
+ Terminal metadata expires after 90 days. The bounded receipt replay index expires
222
+ with each approval receipt. Separate authenticated owner maintenance affects only
223
+ review metadata and replay digests. It does not modify a profile entry, project
224
+ state, candidate projection, or publication result.
225
+
115
226
  ## Contributors
116
227
 
117
228
  Requires Node.js 22+ and pnpm 10.30.3.
@@ -0,0 +1,8 @@
1
+ {
2
+ "schemaVersion": "agentera.generatedBuildSource.v1",
3
+ "commit": "01a0c460f2310bae5805a637973021af30960ee5",
4
+ "tree": "998eef2c833de05d61612ce021a02ecb28a0b2b5",
5
+ "files": 6748,
6
+ "workingTreeSha256": "3c780bac24a26ed1c40735614d2e9313eb30114901d6b71beb427a74e144bb22",
7
+ "identitySha256": "04d4e2a388eb6420f37ce0ee4c7052d3a85035d2e0e23e4eaaa980b96e36bf58"
8
+ }
@@ -18,10 +18,10 @@
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.
21
+ - Every passing `feat/v3` push now publishes one CI-allocated rolling
22
+ `3.0.0-dev.N` package to npm `@next` without a metadata-only commit. The
23
+ bounded workflow builds one isolated tarball, validates and smokes those exact
24
+ bytes, then publishes them directly. Stable publication remains protected by review.
25
25
  - Local staged verification now gives ordinary source changes targeted tests
26
26
  and typecheck with two workers in at most 60 seconds. State and documentation
27
27
  checks stay under 10 seconds, while specialized and global owners defer to
@@ -39,7 +39,7 @@
39
39
  --help` expose the exact `agentera.route_receipt.v1` schema, valid outcomes,
40
40
  nullability, compound and UTF-8 span rules, plus a runnable stdin round trip.
41
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
42
+ reuse valid evidence on resume, and construct or reuse one package artifact before
43
43
  separate approval, staged exact-version publication, and forward-only tag
44
44
  promotion. Invalid or stale evidence fails before release effects, while the
45
45
  review pause performs no metadata, approval, rebuild, or registry action.
@@ -113,32 +113,32 @@
113
113
  - Fixed native resource cleanup to replay historical Codex descriptor ownership
114
114
  IDs, preserve identity collisions and unowned files, and expose the complete
115
115
  retired native-resource vocabulary for v2-only upgrade discovery.
116
- - Fixed release qualification provenance and isolation. CI approvals now bind
117
- the contracted qualification repository, workflow, full branch ref, run, and
116
+ - Fixed release verification provenance and isolation. CI approvals now bind
117
+ the contracted source verification repository, workflow, full branch ref, run, and
118
118
  API-backed head SHA before environment approval or artifact mutation;
119
119
  stable shim releases require packaged-input source provenance; retained
120
120
  artifacts keep and revalidate mode `0444`; and npm/pnpm probes and mutation
121
121
  validation use fresh sanitized state. Added a three-run non-mutating
122
- qualification benchmark plus a content-bound, monotonic stage/L2/promote
123
- publication envelope with a strict two-minute budget, reconciled timing,
124
- replay evidence, and first-failure reporting. Source qualification now runs a
122
+ package verification benchmark plus a content-bound, monotonic publication envelope
123
+ with a strict two-minute budget, reconciled timing,
124
+ replay evidence, and first-failure reporting. Source verification now runs a
125
125
  bounded evidence DAG: one generated-overlap execution supplies source,
126
126
  package, build, and overlap proof beside isolated stress and typecheck owners,
127
127
  followed by a solo performance barrier and concurrent compact and
128
128
  capability-contract readers. The solo phase prevents CPU contention from
129
129
  invalidating machine-sensitive performance evidence. Failures preserve the
130
- first owner, settle overlap safely, block candidate work, and issue no
130
+ first owner, settle overlap safely, block package construction, and issue no
131
131
  receipt. Generated-overlap now receives the
132
132
  actual source deadline, reserves bounded cleanup and parent-reconciliation
133
133
  time, and removes its generated state after failure. Source receipts now mark
134
134
  and validate all nine successful gate outcomes and reject semantic tampering.
135
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.
138
- Candidate qualification timing now closes construction before exact-artifact
136
+ development preparation and direct diagnosis without running verification
137
+ gates or changing repository, package artifact, receipt, or registry state.
138
+ Package verification timing now closes construction before exact-artifact
139
139
  smoke and reconciles non-overlapping gate intervals with explicit overhead.
140
140
  Staging now rejects an absent exact version when the public tag already names
141
- that target, before candidate inspection, credentials, or publication.
141
+ that target, before artifact inspection, credentials, or publication.
142
142
 
143
143
  - Fixed bare `agentera prime` briefs to compact absolute path diagnostics before
144
144
  routing and history evidence, preserving executable plan selection, next-action
@@ -177,8 +177,8 @@
177
177
 
178
178
  ### Added
179
179
 
180
- - Added `agentera report profile-glossary --input <file|->` for Profile Full
181
- personal glossary output in `PROFILE.md`, with bounded
180
+ - Added `npx -y agentera@next report personal-glossary-publish --input <file|-> [--dry-run] --format json`
181
+ for authorized personal glossary publication in `PROFILE.md`, with bounded
182
182
  personal provenance, byte-preserving section replacement, deterministic
183
183
  confidence decay and refresh, retained permanence, and no project-glossary
184
184
  reads. Discuss, Plan, and Build consume it only through bounded glossary
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "agentera-extract-corpus-parity-v1",
3
- "adapter_version": "agentera-v3-corpus-2",
3
+ "adapter_version": "agentera-v3-corpus-3",
4
4
  "max_sqlite_sessions": 60,
5
5
  "max_sqlite_rows": 100000,
6
6
  "max_tool_arg_text": 500,
@@ -2,14 +2,14 @@
2
2
  "schemaVersion": "agentera.packagePublication.v2",
3
3
  "owner": "repository/package scripts",
4
4
  "invariants": {
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
- "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
- "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
- "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 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.",
5
+ "preparation": "Preparation is pure and registry-independent. CI allocates rolling development package metadata in an isolated construction tree without changing the checkout. 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
+ "sourceQualification": "Source verification 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
+ "candidateQualification": "Package verification 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
+ "publication": "Registry publication consumes the retained package artifact through one measured stage, independent staged package migration smoke, and promote envelope. Stage and promotion include their required registry convergence and observational checks. The envelope never reconstructs an artifact, reruns source verification, or rolls a tag back.",
9
+ "approval": "Manual development and stable release machinery requires artifact-bound approval. The routine feat/v3 push path instead derives its immutable version and git ref from the GitHub run and push SHA, validates and smokes the exact isolated tarball, and publishes those bytes directly to next. Stable publication retains explicit protected-environment review on main after the stable workflows land on the default branch.",
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
- "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."
12
+ "output": "Every transaction phase emits a bounded start and end result with package, version, phase, outcome, elapsedMs, executed, reused, and nextAction. The 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."
13
13
  },
14
14
  "packages": {
15
15
  "development": {
@@ -46,26 +46,30 @@
46
46
  "ci": {
47
47
  "repository": "jgabor/agentera",
48
48
  "qualificationWorkflow": {
49
- "name": "Qualify release candidate",
50
- "path": ".github/workflows/qualify-candidate.yml",
49
+ "name": "Publish development package",
50
+ "path": ".github/workflows/qualify.yml",
51
51
  "ref": "refs/heads/feat/v3"
52
52
  },
53
53
  "developmentPush": {
54
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",
55
+ "versionAuthority": "GitHub Actions workflow run number plus the fixed migration offset",
56
+ "runNumberOffset": 72,
58
57
  "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"
58
+ "version is 3.0.0-dev.(GITHUB_RUN_NUMBER + 72)",
59
+ "agentera.gitRef equals GITHUB_SHA",
60
+ "the checkout manifest is not modified",
61
+ "one isolated tarball is built, validated for version and git ref, and executable-smoked before those exact bytes are published to next",
62
+ "reruns reuse the same run number, SHA, and version; identical already-published bytes succeed without another upload",
63
+ "failed runs can create version gaps",
64
+ "before the first push, confirm qualify.yml is still unregistered at run 0 and npm 3.0.0-dev.73 is absent"
66
65
  ],
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."
66
+ "approval": "The routine push workflow publishes the locally validated exact tarball to next without the manual qualification, receipt, attestation, benchmark, approval, or artifact-handoff framework.",
67
+ "concurrency": "The publish-next-${{ github.ref }} group uses queue: max, which keeps up to 100 pending runs and does not cancel an active or pending push."
68
+ },
69
+ "stableVerificationWorkflow": {
70
+ "name": "Verify stable package",
71
+ "path": ".github/workflows/verify-stable.yml",
72
+ "ref": "refs/heads/main"
69
73
  },
70
74
  "publicationRunBinding": {
71
75
  "beforeArtifactDownload": [
@@ -80,13 +84,13 @@
80
84
  "run.conclusion"
81
85
  ],
82
86
  "refRule": "qualificationWorkflow.ref is a full refs/heads branch ref; run.head_branch must equal its exact branch name",
83
- "beforeEnvironmentApproval": "The content-validated candidate receipt metadataCommit must equal the API-backed run.head_sha"
87
+ "beforeEnvironmentApproval": "The content-validated package artifact receipt metadataCommit must equal the API-backed run.head_sha; development sourceCommit must also equal run.head_sha"
84
88
  }
85
89
  },
86
90
  "qualification": {
87
91
  "source": {
88
92
  "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.",
93
+ "issuanceAuthority": "A new source receipt can be issued only by the contracted GitHub Actions source verification workflow at the committed checkout SHA. Existing valid receipts remain reusable through the read-only source check.",
90
94
  "inputs": [
91
95
  "tracked_tree_except_package_version_gitRef",
92
96
  "verification_policy",
@@ -304,16 +308,16 @@
304
308
  "sha256": "03fe600a3a27f05daf0d1b59c16b00bedc354a13c70ea60be0b457175fdf743c"
305
309
  },
306
310
  "reference": {
307
- "count": 22,
308
- "sha256": "2b48c82bb7ee10388d9ebb4fa7ea3743ea82a7e9aaedfcd5a858eeedb9d891ae"
311
+ "count": 25,
312
+ "sha256": "2094946cd6e189c6ab3db16dd0725596cec759abcea88d8335b05215b65ccfc2"
309
313
  },
310
314
  "state": {
311
315
  "count": 38,
312
316
  "sha256": "7ab0dd6ef1b1b1ce66bd9ea94d1de3d542528233e928a44102e289bf12416681"
313
317
  },
314
318
  "package": {
315
- "count": 66,
316
- "sha256": "3548af7e84151c90690a6eb3d1cb6c7847f39b290161ecab599d8cb1bf0d2cb0"
319
+ "count": 67,
320
+ "sha256": "d73cd86fed39057cf9ae73e462a59e842372392b1e88846f2b220378a2ff75cc"
317
321
  },
318
322
  "bootstrap": {
319
323
  "count": 34,
@@ -321,17 +325,17 @@
321
325
  }
322
326
  },
323
327
  "total": {
324
- "count": 280,
325
- "sha256": "051ed9a57857a39e11ed8fb583bff9d2a67a306c5ab897a0ee829212468bc23a"
328
+ "count": 284,
329
+ "sha256": "3f30b26839aec47639f2197c9efda5caf2a73d5afca9fb38ff9a341e18a72b98"
326
330
  }
327
331
  }
328
332
  },
329
333
  "reuseCheck": {
330
334
  "command": "node packages/cli/scripts/release-qualification.mjs source-check --candidate-dir DIR [--json]",
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.",
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.",
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."
335
+ "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 verification.",
336
+ "effects": "Runs no verification gate and writes no repository, package artifact, receipt, or registry state. Success emits executed none and reused true without receipt content or private paths.",
337
+ "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.",
338
+ "scope": "Manual readiness preparation uses the check as a source-readiness prerequisite. Direct diagnostics may inspect reuse without executing a gate. Build, compact, parity, package verification, release metadata, approval, and publication remain mandatory at their owning stages."
335
339
  },
336
340
  "dag": {
337
341
  "batchA": ["generated-overlap", "stress", "typecheck"],
@@ -362,8 +366,8 @@
362
366
  "source": "source-receipt.json",
363
367
  "candidate": "candidate-receipt.json"
364
368
  },
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.",
369
+ "reuse": "A present source receipt is validated with the source reuse check instead of invoking source verification. A present package artifact receipt and retained artifact are validated instead of invoking package verification. Invalid, stale, incomplete, or mismatched evidence rejects the run before an issuance owner starts.",
370
+ "metadataReview": "A successful source verification or source-receipt reuse pauses before package artifact construction until the caller supplies the explicit reviewed metadata commit. The coordinator never prepares metadata, changes a version, commits, approves, rebuilds a valid package artifact, stages bytes, or mutates registry state.",
367
371
  "outcomes": ["paused", "ready", "rejected"],
368
372
  "exitCodes": {
369
373
  "paused": 0,
@@ -386,7 +390,7 @@
386
390
  "artifact_mode"
387
391
  ],
388
392
  "retainedArtifactMode": "0444",
389
- "timing": "Candidate qualification records monotonic, non-overlapping release-metadata, construction/equivalence, and exact-artifact-smoke intervals at their true boundaries. Their sum cannot exceed measured candidate elapsed time; explicit unattributed overhead completes an exact reconciliation.",
393
+ "timing": "Package verification records monotonic, non-overlapping release-metadata, construction/equivalence, and exact-artifact-smoke intervals at their true boundaries. Their sum cannot exceed measured package verification time; explicit unattributed overhead completes an exact reconciliation.",
390
394
  "gates": [
391
395
  "release-metadata",
392
396
  "dry-pack-observation-equivalence",
@@ -402,7 +406,7 @@
402
406
  },
403
407
  "trust": {
404
408
  "local": "A same-principal source receipt is a deterministic cache only. It cannot authorize registry mutation.",
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."
409
+ "ci": "Manual CI publication requires transferred artifacts, receipts, attestation, and artifact-bound approval. The routine feat/v3 push workflow is separate: it validates, smokes, and publishes one local isolated tarball directly. Stable main publication requires protected-environment review. OIDC provenance is deferred."
406
410
  },
407
411
  "registryStateTable": [
408
412
  {
@@ -419,7 +423,7 @@
419
423
  "candidateTag": "target version",
420
424
  "expectedTag": "older",
421
425
  "stage": "replay without upload and run observational smoke",
422
- "promote": "move expected tag forward after exact-version qualification"
426
+ "promote": "move expected tag forward after staged package migration smoke"
423
427
  },
424
428
  {
425
429
  "state": "promoted",
@@ -440,16 +444,16 @@
440
444
  ],
441
445
  "benchmark": {
442
446
  "environment": "Ubuntu runner or clean local Node 22, npm 10, and pnpm 10.30.3; record exact tool versions in receipts.",
443
- "fixture": "clean committed checkout and an external empty candidate directory; no tracked or checkout-local generated candidate files.",
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.",
447
+ "fixture": "clean committed checkout and an empty external artifact directory; no tracked or checkout-local generated package artifacts.",
448
+ "cacheNetwork": "Preflight uses no registry call. Every verification 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.",
445
449
  "repetitions": 3,
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.",
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.",
450
+ "statistic": "Package verification 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. 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.",
451
+ "coordinator": "packages/cli/scripts/release-benchmark.mjs has separate verification and publication commands. verification runs only preflight and source-plus-package verification and never receives npm credentials. publication runs only the approved stage, independent staged package migration smoke, and promote commands, measures them with one monotonic deadline, and never runs source verification.",
448
452
  "qualifiedPublication": {
449
453
  "command": "node packages/cli/scripts/release-benchmark.mjs publication --adapter ADAPTER --candidate-dir DIR --receipt-file FILE",
450
454
  "sequence": [
451
- "stage retained bytes on the candidate tag, wait for exact integrity convergence, and observe an isolated exact-version registry smoke",
452
- "run an independent exact-version L2 consumer check while the public tag is unchanged",
455
+ "stage the retained package artifact on the staging tag, wait for exact integrity convergence, and observe an isolated exact-version registry smoke",
456
+ "run an independent staged package migration smoke while the public tag is unchanged",
453
457
  "promote the expected tag forward, wait for tag and integrity convergence, and observe the final exact-version registry smoke"
454
458
  ],
455
459
  "receiptBindings": [
@@ -462,22 +466,14 @@
462
466
  "source_run_id"
463
467
  ],
464
468
  "timing": "The coordinator measures commands with a monotonic clock. Caller-supplied elapsed data is not accepted. Component floors plus unattributed elapsed time must equal the measured total, and total elapsed time must be strictly less than qualifiedPublicationMs.",
465
- "failure": "The first child failure label or timeout owner is retained, later phases do not start, and no rollback is attempted. A retry uses the same exact candidate; stage and promote replay matching registry state without upload or backward tag movement."
469
+ "failure": "The first child failure label or timeout owner is retained, later phases do not start, and no rollback is attempted. A retry uses the same exact package artifact; stage and promote replay matching registry state without upload or backward tag movement."
466
470
  },
467
471
  "timeouts": {
468
472
  "preflightMs": 30000,
469
473
  "sourceQualificationMs": 2400000,
470
474
  "qualifiedPublicationMs": 120000
471
475
  },
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
- }
476
+ "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, package construction, or registry mutation."
481
477
  },
482
478
  "bounds": {
483
479
  "registryAttempts": 6,
@@ -48,6 +48,11 @@ records:
48
48
  - id: routing-evaluation-corpus
49
49
  path: fixtures/routing/hybrid-corpus.yaml
50
50
  generated_files:
51
+ - id: build-source-identity
52
+ path: .agentera-build-source.json
53
+ format: json
54
+ classification: active
55
+ command_authority_reason: Build-generated source identity binds constructed dist and bundle output to one Git commit, tree, and exact working-tree digest; no source copy exists.
51
56
  - id: npx-bundle-marker
52
57
  path: .agentera-npx-bundle.json
53
58
  format: json
@@ -123,7 +128,6 @@ records:
123
128
  - {"path":"CHANGELOG.md","region":"line:160","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"273d7dae87662352c49e5723aaa528efa89c9a7dbc7d43d3cbc54c1a1b9771da","reason":"Changelog line:160 records exact release history for that scalar; it does not direct current execution."}
124
129
  - {"path":"CHANGELOG.md","region":"line:162","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"6d02d187f8e271cc6acc4b6966344a841615326891969dbec67815e40a51fe81","reason":"Changelog line:162 records exact release history for that scalar; it does not direct current execution."}
125
130
  - {"path":"CHANGELOG.md","region":"line:164","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"a5dd4c79ebfefc03bd1c6e3d159f362fd2c5f584d6ff8de7928edf88414133a9","reason":"Changelog line:164 records exact release history for that scalar; it does not direct current execution."}
126
- - {"path":"CHANGELOG.md","region":"line:180","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"7da30a1e06efa386074b418e5d9e935df15398b60c2558c11718c6d7f72453b5","reason":"Changelog line:180 records exact release history for that scalar; it does not direct current execution."}
127
131
  - {"path":"CHANGELOG.md","region":"line:190","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"df8119585a79f11d42187fd6f57375401442e761ce94e30dd5a4b280c7a6f9e9","reason":"Changelog line:190 records exact release history for that scalar; it does not direct current execution."}
128
132
  - {"path":"CHANGELOG.md","region":"line:198","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"0d5ca59bac58c2171d89e48ba4b9068ff7a8681a852272a09b3a4b28c6edf0a0","reason":"Changelog line:198 records exact release history for that scalar; it does not direct current execution."}
129
133
  - {"path":"CHANGELOG.md","region":"line:202","category":"argument_bearing","classification":"exact_exemption","normalized_sha256":"b5dc0e45378318464e595a7ccdbb15acc31ce67a2d55b2a9f8c3f8531c8e6ec7","reason":"Changelog line:202 records exact release history for that scalar; it does not direct current execution."}
@@ -56,11 +56,13 @@ checking generated behavior.
56
56
 
57
57
  [`package-publication.json`](./package-publication.json) owns the shared
58
58
  repository publication transaction and distinguishes the development
59
- TypeScript package from the transitional stable shim. Both require separately
60
- prepared and committed version and `gitRef` metadata, explicit publication
59
+ TypeScript package from the transitional stable shim. Normal development CI
60
+ derives version and `gitRef` metadata in isolated construction without changing
61
+ the checkout. Manual development recovery and stable publication retain their
62
+ separate prepared metadata paths. Both adapters require explicit publication
61
63
  authority, a clean tree, exact registry convergence, safe exact-version replay,
62
- and bounded phase results. Development retains isolated construction and the
63
- `next` tag; stable retains shim tests/construction and the `latest` tag. Each
64
+ and bounded phase results. Development uses the `next` tag; stable retains shim
65
+ tests/construction and the `latest` tag. Each
64
66
  adapter's only publication smoke is its non-mutating, no-project exact-version
65
67
  `--version` invocation, so publication does not absorb migration coverage.
66
68
 
@@ -72,7 +72,10 @@ tiers:
72
72
  optional:
73
73
  - project_path
74
74
  - session_id
75
- - conversation_key
75
+ - conversation_key
76
+ - origin_id
77
+ - content_fingerprint
78
+ - author_class
76
79
  source_identity_rule: >-
77
80
  `source_id` is the stable, content-addressable identity of one full
78
81
  record. It is derived deterministically from source kind and source parts
@@ -99,11 +102,16 @@ tiers:
99
102
  - timestamp
100
103
  - project_id
101
104
  - runtime
105
+ - source_class
102
106
  - source_product
107
+ - active_runtime
103
108
  - evidence_anchor
104
109
  optional:
105
110
  - conversation_key
106
111
  - session_id
112
+ - origin_id
113
+ - content_fingerprint
114
+ - author_class
107
115
  derivation_rule: >-
108
116
  The signal tier is a pure function of the full-evidence tier: identical
109
117
  inputs produce identical signal membership and ordering. It never stores
@@ -228,6 +236,35 @@ signal_semantics:
228
236
  severs the citation chain.
229
237
  derivable_from: signal record evidence_anchor -> full_evidence source_id
230
238
  consumer: glossary
239
+ session_id:
240
+ meaning: >-
241
+ The stable session identity needed to distinguish independent
242
+ conversation origins without exposing a raw session transcript.
243
+ derivable_from: conversation_turn session_id
244
+ consumer: glossary
245
+ origin_id:
246
+ meaning: >-
247
+ The stable, content-addressed identity of the source that originally
248
+ supplied transported content. It distinguishes one original
249
+ instruction origin from transcript copies without retaining the raw
250
+ source label.
251
+ derivable_from: explicit adapter transport provenance or session origin
252
+ consumer: glossary
253
+ content_fingerprint:
254
+ meaning: >-
255
+ A lowercase SHA-256 fingerprint of the source content used to prevent
256
+ copied or repeated conversation text from counting as independent.
257
+ derivable_from: source record content
258
+ consumer: glossary
259
+ author_class:
260
+ meaning: >-
261
+ The source author class, such as user, agent, or injected instruction,
262
+ used to keep agent-authored text from establishing personal terminology.
263
+ derivable_from: >-
264
+ explicit original author provenance when origin_id is transported;
265
+ otherwise conversation_turn actor metadata when no transported origin
266
+ is claimed
267
+ consumer: glossary
231
268
  preservation_rule: >-
232
269
  Fixing the contract must not remove the required meaning of any kind above
233
270
  from current consumers. Personal glossary synthesis is named here because it
@@ -313,6 +350,10 @@ consumer_map:
313
350
  - record_identity
314
351
  - date
315
352
  - evidence_anchor
353
+ - session_id
354
+ - origin_id
355
+ - content_fingerprint
356
+ - author_class
316
357
  rule: >-
317
358
  Personal glossary synthesis actively consumes bounded personal-history
318
359
  signals. Project-file provenance remains repository evidence under the
@@ -440,7 +481,7 @@ compatibility_states:
440
481
  reason: oversized
441
482
  outcome: degrade
442
483
  recovery: >-
443
- Refresh bounded tiers with `npx -y agentera@next stats refresh --consent
484
+ Refresh bounded tiers with `npx -y agentera@next report refresh --consent
444
485
  local-history` or read the signal tier, which is bounded to fit. Do not
445
486
  attempt to load the oversized artifact whole.
446
487
  determinism: >-
@@ -454,7 +495,7 @@ compatibility_states:
454
495
  reason: legacy_monolithic_state
455
496
  outcome: degrade
456
497
  recovery: >-
457
- Emit deterministic refresh guidance: run `npx -y agentera@next stats refresh
498
+ Emit deterministic refresh guidance: run `npx -y agentera@next report refresh
458
499
  --consent local-history` to publish bounded tiers. Legacy monolithic
459
500
  state receives refresh guidance rather than indefinite read
460
501
  compatibility.
@@ -467,7 +508,7 @@ compatibility_states:
467
508
  reason: no_evidence
468
509
  outcome: degrade
469
510
  recovery: >-
470
- Report `npx -y agentera@next stats refresh --consent local-history` and the
511
+ Report `npx -y agentera@next report refresh --consent local-history` and the
471
512
  `--corpus PATH` override. Must not auto-build, scan home directories, or
472
513
  run live extraction without consent.
473
514
  determinism: >-