agentera 3.0.0-dev.25 → 3.0.0-dev.26

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 (270) hide show
  1. package/README.md +16 -20
  2. package/bundle/CHANGELOG.md +15 -25
  3. package/bundle/README.md +13 -34
  4. package/bundle/UPGRADE.md +71 -165
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
  6. package/bundle/references/adapters/package-registry.yaml +0 -145
  7. package/bundle/references/adapters/package-surface-characterization.md +13 -38
  8. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
  9. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
  10. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
  11. package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
  12. package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
  13. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  14. package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
  15. package/bundle/references/cli/capability-tool-classification.yaml +2 -2
  16. package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
  17. package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
  18. package/bundle/references/cli/upgrade-repair-wording.md +8 -28
  19. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
  20. package/bundle/references/cli/vocabulary.md +18 -23
  21. package/bundle/references/meta/documentation-inventory.md +1 -1
  22. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
  24. package/dist/cli/capabilityContext/bespoke.js +8 -2
  25. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  26. package/dist/cli/capabilityContext/closeout.js +3 -3
  27. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  28. package/dist/cli/capabilityContext/evidence.js +52 -40
  29. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  30. package/dist/cli/capabilityContext/startup.js +1 -1
  31. package/dist/cli/capabilityContext/startup.js.map +1 -1
  32. package/dist/cli/commands/doctor.js +6 -64
  33. package/dist/cli/commands/doctor.js.map +1 -1
  34. package/dist/cli/commands/durability.js +12 -48
  35. package/dist/cli/commands/durability.js.map +1 -1
  36. package/dist/cli/commands/prime/briefOrientation.js +2 -19
  37. package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
  38. package/dist/cli/commands/prime/bundleStatus.js +8 -2
  39. package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
  40. package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
  41. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
  42. package/dist/cli/commands/prime/collectOrientationState.js +31 -52
  43. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  44. package/dist/cli/commands/prime/orientationOutput.js +3 -11
  45. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  46. package/dist/cli/commands/prime.js +0 -5
  47. package/dist/cli/commands/prime.js.map +1 -1
  48. package/dist/cli/commands/query.js +17 -49
  49. package/dist/cli/commands/query.js.map +1 -1
  50. package/dist/cli/commands/schema.js +19 -78
  51. package/dist/cli/commands/schema.js.map +1 -1
  52. package/dist/cli/commands/state/decisions.js +11 -57
  53. package/dist/cli/commands/state/decisions.js.map +1 -1
  54. package/dist/cli/commands/state/docs.js +56 -120
  55. package/dist/cli/commands/state/docs.js.map +1 -1
  56. package/dist/cli/commands/state/experimentRecords.js +22 -121
  57. package/dist/cli/commands/state/experimentRecords.js.map +1 -1
  58. package/dist/cli/commands/state/experiments.js +9 -75
  59. package/dist/cli/commands/state/experiments.js.map +1 -1
  60. package/dist/cli/commands/state/get.js +62 -143
  61. package/dist/cli/commands/state/get.js.map +1 -1
  62. package/dist/cli/commands/state/health.js +9 -123
  63. package/dist/cli/commands/state/health.js.map +1 -1
  64. package/dist/cli/commands/state/index.js +2 -2
  65. package/dist/cli/commands/state/index.js.map +1 -1
  66. package/dist/cli/commands/state/list.js +20 -36
  67. package/dist/cli/commands/state/list.js.map +1 -1
  68. package/dist/cli/commands/state/objective.js +19 -86
  69. package/dist/cli/commands/state/objective.js.map +1 -1
  70. package/dist/cli/commands/state/plan.js +9 -388
  71. package/dist/cli/commands/state/plan.js.map +1 -1
  72. package/dist/cli/commands/state/planTasks.js +58 -93
  73. package/dist/cli/commands/state/planTasks.js.map +1 -1
  74. package/dist/cli/commands/state/plans.js +13 -40
  75. package/dist/cli/commands/state/plans.js.map +1 -1
  76. package/dist/cli/commands/state/progress.js +10 -55
  77. package/dist/cli/commands/state/progress.js.map +1 -1
  78. package/dist/cli/commands/state/todo.js +24 -133
  79. package/dist/cli/commands/state/todo.js.map +1 -1
  80. package/dist/cli/commands/state/write.js +11 -33
  81. package/dist/cli/commands/state/write.js.map +1 -1
  82. package/dist/cli/commands/upgrade.js +48 -18
  83. package/dist/cli/commands/upgrade.js.map +1 -1
  84. package/dist/cli/commands/upgradeVerify.js +21 -15
  85. package/dist/cli/commands/upgradeVerify.js.map +1 -1
  86. package/dist/cli/commands/validate.js +1 -9
  87. package/dist/cli/commands/validate.js.map +1 -1
  88. package/dist/cli/dispatch/check.js +5 -12
  89. package/dist/cli/dispatch/check.js.map +1 -1
  90. package/dist/cli/dispatch/index.js +30 -29
  91. package/dist/cli/dispatch/index.js.map +1 -1
  92. package/dist/cli/dispatch/lifecycle.js +23 -40
  93. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  94. package/dist/cli/help.js +20 -100
  95. package/dist/cli/help.js.map +1 -1
  96. package/dist/cli/migrationRequired.js +22 -19
  97. package/dist/cli/migrationRequired.js.map +1 -1
  98. package/dist/cli/orientation/attention.js +1 -97
  99. package/dist/cli/orientation/attention.js.map +1 -1
  100. package/dist/cli/stateQuery.js +1 -2
  101. package/dist/cli/stateQuery.js.map +1 -1
  102. package/dist/core/skillIdentity.js +24 -0
  103. package/dist/core/skillIdentity.js.map +1 -0
  104. package/dist/hooks/common.js +1 -1
  105. package/dist/hooks/common.js.map +1 -1
  106. package/dist/hooks/compaction/status.js +2 -1
  107. package/dist/hooks/compaction/status.js.map +1 -1
  108. package/dist/hooks/cursorSessionStart.js +4 -25
  109. package/dist/hooks/cursorSessionStart.js.map +1 -1
  110. package/dist/hooks/projectHookInput.js +26 -0
  111. package/dist/hooks/projectHookInput.js.map +1 -0
  112. package/dist/hooks/sessionStart.js +23 -239
  113. package/dist/hooks/sessionStart.js.map +1 -1
  114. package/dist/hooks/sessionStop.js +4 -12
  115. package/dist/hooks/sessionStop.js.map +1 -1
  116. package/dist/hooks/validateArtifact/traversal.js +1 -1
  117. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  118. package/dist/registries/artifactRegistry.js +2 -1
  119. package/dist/registries/artifactRegistry.js.map +1 -1
  120. package/dist/registries/packageRegistry.js +57 -231
  121. package/dist/registries/packageRegistry.js.map +1 -1
  122. package/dist/release/releaseMetadata.js +1 -13
  123. package/dist/release/releaseMetadata.js.map +1 -1
  124. package/dist/runtime/lifecycleAdapterContract.js +4 -4
  125. package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
  126. package/dist/runtime/lifecycleAdapters.js +14 -2
  127. package/dist/runtime/lifecycleAdapters.js.map +1 -1
  128. package/dist/runtime/lifecycleAuthority.js +5 -43
  129. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  130. package/dist/runtime/lifecycleOperationContract.js +3 -2
  131. package/dist/runtime/lifecycleOperationContract.js.map +1 -1
  132. package/dist/runtime/lifecyclePublication.js +21 -0
  133. package/dist/runtime/lifecyclePublication.js.map +1 -1
  134. package/dist/setup/opencode.js +20 -12
  135. package/dist/setup/opencode.js.map +1 -1
  136. package/dist/setup/sharedSkill.js +46 -0
  137. package/dist/setup/sharedSkill.js.map +1 -0
  138. package/dist/setup/smokeChecks.js +16 -43
  139. package/dist/setup/smokeChecks.js.map +1 -1
  140. package/dist/state/decisionEntities.js +7 -4
  141. package/dist/state/decisionEntities.js.map +1 -1
  142. package/dist/state/durability.js +4 -240
  143. package/dist/state/durability.js.map +1 -1
  144. package/dist/state/entityCutover.js +90 -186
  145. package/dist/state/entityCutover.js.map +1 -1
  146. package/dist/state/entityStorage.js +27 -8
  147. package/dist/state/entityStorage.js.map +1 -1
  148. package/dist/state/healthEntities.js +7 -4
  149. package/dist/state/healthEntities.js.map +1 -1
  150. package/dist/state/objectiveExperimentEntities.js +7 -5
  151. package/dist/state/objectiveExperimentEntities.js.map +1 -1
  152. package/dist/state/planEntities.js +14 -10
  153. package/dist/state/planEntities.js.map +1 -1
  154. package/dist/state/progressEntities.js +4 -2
  155. package/dist/state/progressEntities.js.map +1 -1
  156. package/dist/state/startupProjection.js +3 -2
  157. package/dist/state/startupProjection.js.map +1 -1
  158. package/dist/state/stateMode.js +7 -0
  159. package/dist/state/stateMode.js.map +1 -1
  160. package/dist/state/todoDocsEntities.js +6 -4
  161. package/dist/state/todoDocsEntities.js.map +1 -1
  162. package/dist/state/write/explain.js +1 -9
  163. package/dist/state/write/explain.js.map +1 -1
  164. package/dist/state/write/transaction.js +22 -532
  165. package/dist/state/write/transaction.js.map +1 -1
  166. package/dist/upgrade/appContentRefresh.js +43 -28
  167. package/dist/upgrade/appContentRefresh.js.map +1 -1
  168. package/dist/upgrade/doctor.js +5 -1
  169. package/dist/upgrade/doctor.js.map +1 -1
  170. package/dist/upgrade/installedHooksRetirement.js +46 -39
  171. package/dist/upgrade/installedHooksRetirement.js.map +1 -1
  172. package/dist/upgrade/legacyAgentCleanup.js +132 -32
  173. package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
  174. package/dist/upgrade/lifecycleUpgrade.js +65 -378
  175. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  176. package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
  177. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  178. package/dist/upgrade/migrationPublication.js +123 -0
  179. package/dist/upgrade/migrationPublication.js.map +1 -0
  180. package/dist/upgrade/projectIntegration.js +46 -113
  181. package/dist/upgrade/projectIntegration.js.map +1 -1
  182. package/dist/upgrade/projectIntegrationDecision.js +6 -96
  183. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  184. package/dist/upgrade/runtimeMigration.js +222 -402
  185. package/dist/upgrade/runtimeMigration.js.map +1 -1
  186. package/dist/upgrade/upgradeCommands.js +5 -4
  187. package/dist/upgrade/upgradeCommands.js.map +1 -1
  188. package/dist/upgrade/upgradeLock.js +73 -41
  189. package/dist/upgrade/upgradeLock.js.map +1 -1
  190. package/dist/upgrade/upgradeOrchestrator.js +91 -158
  191. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  192. package/dist/upgrade/v3CapabilitySurface.js +2 -2
  193. package/dist/validate/appHomeContract.js +0 -4
  194. package/dist/validate/appHomeContract.js.map +1 -1
  195. package/package.json +7 -5
  196. package/bundle/.codex-plugin/plugin.json +0 -92
  197. package/bundle/.cursor/agents/agentera.md +0 -7
  198. package/bundle/.cursor/hooks.json +0 -32
  199. package/bundle/.cursor-plugin/plugin.json +0 -34
  200. package/bundle/.github/hooks/postToolUse.json +0 -9
  201. package/bundle/.github/hooks/preToolUse.json +0 -8
  202. package/bundle/.github/hooks/sessionEnd.json +0 -8
  203. package/bundle/.github/hooks/sessionStart.json +0 -8
  204. package/bundle/.github/plugin/plugin.json +0 -7
  205. package/bundle/.opencode/agents/agentera.md +0 -12
  206. package/bundle/.opencode/commands/agentera.md +0 -5
  207. package/bundle/.opencode/package.json +0 -31
  208. package/bundle/.opencode/plugins/agentera.js +0 -820
  209. package/bundle/agents/openai.yaml +0 -87
  210. package/bundle/hooks/codex-hooks.json +0 -31
  211. package/bundle/hooks/codex-plugin-hooks.json +0 -31
  212. package/bundle/plugin.json +0 -13
  213. package/bundle/references/adapters/cursor.md +0 -224
  214. package/bundle/references/adapters/opencode.md +0 -529
  215. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
  216. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  217. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
  218. package/bundle/references/adapters/runtime-feature-parity.md +0 -129
  219. package/dist/cli/commands/backfill.js +0 -231
  220. package/dist/cli/commands/backfill.js.map +0 -1
  221. package/dist/cli/commands/migrate.js +0 -681
  222. package/dist/cli/commands/migrate.js.map +0 -1
  223. package/dist/registries/runtimeAdapterRegistry.js +0 -324
  224. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  225. package/dist/setup/copilot.js +0 -227
  226. package/dist/setup/copilot.js.map +0 -1
  227. package/dist/setup/cursor.js +0 -129
  228. package/dist/setup/cursor.js.map +0 -1
  229. package/dist/setup/cursorSurfaces.js +0 -67
  230. package/dist/setup/cursorSurfaces.js.map +0 -1
  231. package/dist/setup/doctor/core.js +0 -296
  232. package/dist/setup/doctor/core.js.map +0 -1
  233. package/dist/setup/doctor/diagnostics.js +0 -201
  234. package/dist/setup/doctor/diagnostics.js.map +0 -1
  235. package/dist/setup/doctor/opencode.js +0 -301
  236. package/dist/setup/doctor/opencode.js.map +0 -1
  237. package/dist/setup/doctor/report.js +0 -425
  238. package/dist/setup/doctor/report.js.map +0 -1
  239. package/dist/setup/doctor.js +0 -10
  240. package/dist/setup/doctor.js.map +0 -1
  241. package/dist/state/gitBackfill.js +0 -561
  242. package/dist/state/gitBackfill.js.map +0 -1
  243. package/dist/state/gitBackfillAuthority.js +0 -141
  244. package/dist/state/gitBackfillAuthority.js.map +0 -1
  245. package/dist/state/gitBackfillHistory.js +0 -278
  246. package/dist/state/gitBackfillHistory.js.map +0 -1
  247. package/dist/state/gitBackfillOutput.js +0 -209
  248. package/dist/state/gitBackfillOutput.js.map +0 -1
  249. package/dist/state/legacyMigration.js +0 -516
  250. package/dist/state/legacyMigration.js.map +0 -1
  251. package/dist/state/legacyMigrationParser.js +0 -489
  252. package/dist/state/legacyMigrationParser.js.map +0 -1
  253. package/dist/state/migrationAuthority.js +0 -413
  254. package/dist/state/migrationAuthority.js.map +0 -1
  255. package/dist/state/migrationEnrichment.js +0 -35
  256. package/dist/state/migrationEnrichment.js.map +0 -1
  257. package/dist/state/projectionRecovery.js +0 -458
  258. package/dist/state/projectionRecovery.js.map +0 -1
  259. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
  260. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  261. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  262. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  263. package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
  264. package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
  265. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
  266. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  267. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  268. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  269. package/dist/validate/lifecycleAdapters.js +0 -10
  270. package/dist/validate/lifecycleAdapters.js.map +0 -1
package/README.md CHANGED
@@ -2,8 +2,10 @@
2
2
 
3
3
  Native TypeScript CLI for Agentera 3.0, published as
4
4
  [`agentera`](https://www.npmjs.com/package/agentera). The npm package is
5
- self-contained: compiled commands live in `dist/` and runtime data, manifests,
6
- hooks, agents, skills, contracts, and documentation live in `bundle/`.
5
+ self-contained: compiled commands live in `dist/`; the canonical shared skill,
6
+ its schemas, required references, and `registry.json` live in `bundle/`. It
7
+ ships no host-native plugin, hook, command, agent, descriptor, or marketplace
8
+ surface.
7
9
 
8
10
  Until the stable dist-tag is promoted, run 3.0 through `@next`:
9
11
 
@@ -20,27 +22,21 @@ Status startup is one call: `prime --context status --format json` returns
20
22
  bytes). Omitted detail names its authoritative recovery command. `doctor`
21
23
  returns detailed read-only evidence and exact user actions.
22
24
 
23
- ## Runtime lifecycle
25
+ ## Shared-skill integration
24
26
 
25
- The four active runtimes are OpenCode, Codex, Cursor, and GitHub Copilot; their
26
- IDs are exactly `opencode`, `codex`, `cursor`, and `copilot`.
27
- Cursor Agent CLI and Cursor IDE are surfaces of one `cursor` identity; CLI is
28
- required and IDE is conditional. The canonical shared skill path is
29
- `~/.agents/skills/agentera`.
27
+ Agentera uses one portable integration: the Agentera CLI plus the shared skill
28
+ at `~/.agents/skills/agentera`. Normal upgrade previews and applies app/project
29
+ migration only. It has no current-runtime selector and does not create native
30
+ runtime resources.
30
31
 
31
32
  ```bash
32
- npx -y agentera@next upgrade --dry-run --channel development
33
- npx -y agentera@next upgrade --runtime all --dry-run
34
- npx -y agentera@next upgrade --runtime all --yes
33
+ npx -y agentera@next upgrade --channel development --project "$PWD" --dry-run
34
+ npx -y agentera@next upgrade --channel development --project "$PWD" --yes
35
35
  ```
36
36
 
37
- On v3 development, the selector-free dry-run previews all active runtimes.
38
- Use one active ID instead of `all` to scope runtime work. A selector-free apply
39
- remains app-only; runtime apply requires the selector and `--yes`. `--dry-run`
40
- has zero filesystem or state side effects. `--yes` approves only declared
41
- Agentera-owned operations; native install/update, authentication, enablement,
42
- and trust remain user-owned. Secure automatic apply is Linux-only and reports
43
- `action_required` elsewhere.
37
+ Preview has no side effects. The apply path is the explicit, one-way v2-to-v3
38
+ migration described in [UPGRADE.md](../../UPGRADE.md); it does not run a native
39
+ package installer.
44
40
 
45
41
  Retired Claude cleanup is intentionally separate:
46
42
 
@@ -72,8 +68,7 @@ plan task retrieval is active-only. Experiment history is objective-scoped and
72
68
  reports full, summary-only, or unavailable detail without fabricating archives.
73
69
 
74
70
  See [UPGRADE.md](../../UPGRADE.md) for ownership, recovery, and migration
75
- details and [runtime feature parity](../../references/adapters/runtime-feature-parity.md)
76
- for host-specific behavior.
71
+ details.
77
72
 
78
73
  ## Contributors
79
74
 
@@ -81,6 +76,7 @@ Requires Node.js 22+ and pnpm 10.30.3.
81
76
 
82
77
  ```bash
83
78
  pnpm -C packages/cli test
79
+ pnpm -C packages/cli run verify:package
84
80
  pnpm -C packages/cli run typecheck
85
81
  pnpm -C packages/cli build
86
82
  pnpm -C packages/cli run lint
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### Changed
6
6
 
7
- - Changed the v2-to-v3 development upgrade to one full Git-backed command that requires every migration input to match tracked `HEAD`, activates entity authority last, and validates state and `prime` startup automatically. The optional dry-run is read-only; cross-major apply is one-way and has no rollback, restore, non-Git, or partial workflow.
7
+ - Changed the v2-to-v3 development upgrade to one full Git-backed command that converts unchanged tracked input directly into canonical entities, accepts exact partial targets on retry, validates the complete graph, and activates entity authority last. Runtime blockers are reported as post-activation action-required work without modifying the blocked resource. The optional dry-run is read-only; cross-major apply is one-way and has no staging graph, recovery journal, rollback, restore, non-Git, or partial workflow.
8
8
  - Cut ordinary project state over to one canonical writer-owned file per entity. Public records now use only bare `id` and `artifact` identity, bounded `list` and exact `get --id` reads, and typed writers discovered through `agentera state <artifact> explain`; aggregate state files and ordinal selectors remain migration or historical evidence only.
9
9
  - Split lifecycle validation orchestration from the public validation facade while preserving its import surface and validation behavior.
10
10
  - Eliminated the monolithic `corpus.json` publication output from the extract CLI; report dry-run diagnostics now reference tier files and the `privacy.corpus_write` field is renamed to `privacy.tier_write`.
@@ -14,8 +14,8 @@
14
14
 
15
15
  ### Added
16
16
 
17
- - Added post-cutover entity-backed default state views, bare-ID durability diagnostics, and read-only migration-manifest target validation while preserving legacy numbered behavior before cutover.
18
- - Added a Git-backed entity cutover owned by the full development-channel `upgrade --yes` command, with deterministic projection, marker-last authority activation, and bounded forward-only interruption recovery.
17
+ - Added post-cutover entity-backed default state views, bare-ID durability diagnostics, and read-only historical migration-manifest target validation while preserving legacy numbered behavior before cutover.
18
+ - Added a Git-backed entity cutover owned by the full development-channel `upgrade --yes` command, with deterministic direct publication, exact-target retries, marker-last authority activation, and first-unresolved-path handoff.
19
19
  - Added post-cutover decision entities for immutable bases and content revisions, replaceable satisfaction ownership, bare-ID exact and bounded reads, deterministic effective provenance, stale-base and transition validation, and explicit same-decision conflict detection; marker-absent projects retain the legacy numbered authority without dual writes.
20
20
  - Added the post-cutover progress entity writer and `state progress get|list` reads with bare IDs, one canonical file per cycle, atomic replay-safe publication, full provenance, bounded snapshot pagination, and no legacy projection or archive writes; legacy projects remain unchanged until the durable cutover marker exists.
21
21
  - Added authority-driven, one-file-per-entity storage primitives with secure project-wide IDs, symlink-safe discovery, conflict-safe publication, relationship validation, and `agentera check validate state` diagnostics.
@@ -34,15 +34,11 @@
34
34
  - Added `agentera state decisions amend --number N [--question ... --context ... --alternative-chosen ... --alternative-rejected ... --choice ... --reasoning ... --confidence firm|provisional|exploratory --feeds-into ...] [--dry-run] --format json`: validates and publishes a record-local revision under `.agentera/revisions/decisions.yaml` that composes over the immutable numbered archive at read time. Apply never rewrites the decisions projection, preserves unrelated decisions' bytes (including comments, block scalars, quoting, and inherited legacy confidence labels), refuses a broken revision document or unsafe record-local boundary without side effects, retries converge on a stable revision identity, and an identical re-submission is an idempotent replay. Append, satisfaction update, and amend tolerate untouched inherited confidence labels as explicit legacy caveats while requiring current vocabulary for new or amended content.
35
35
 
36
36
  - Added an executable bounded-retrieval authority and reserved CLI grammar for plan tasks, plans, and objective-scoped experiments, including stable and legacy identity rules, experiment `0`, opaque cursors, explicit omissions, and structured compatibility errors; retrieval execution remains staged for subsequent tasks.
37
- - Added a canonical runtime lifecycle projection with deterministic snapshot identity, applicability, ownership, action classes, counts, and command eligibility for OpenCode, Codex, Cursor, and Copilot.
38
- - Added bounded prime/status lifecycle attention rows with runtime-scoped repair previews, exact manual procedures, and doctor diagnostics for non-executable blockers.
39
- - Added runtime lifecycle schemas and adapters for skills, plugins, hooks, agents, configuration, enablement, trust, and native actions across all four active runtimes.
40
- - Added append-only ownership-journal recovery, exact operation dependencies, Linux secure directory-relative publication, and outcomes `applied`, `noop`, `failed`, `blocked_unowned`, `skipped_dependency`, and `action_required`.
41
- - Added explicit retired cleanup through `agentera upgrade --legacy-cleanup claude --dry-run|--yes`; it can remove only the ledger-owned legacy Agentera skill link and excludes user data.
37
+ - Added one shared skill at `~/.agents/skills/agentera` plus the CLI and entity-backed project state as the active integration contract; host-native plugin, hook, agent, and package surfaces are not shipped.
38
+ - Retained runtime lifecycle contracts only as migration evidence and for explicit `agentera upgrade --legacy-cleanup claude --dry-run|--yes`, which can remove only the ownership-proven legacy Agentera skill link and excludes user data.
42
39
  - Added typed artifact writes under `agentera state`: progress/decision/audit appends, decision satisfaction updates, plan create/task/status/archive lifecycle operations, schema-derived `explain`, server-assigned identifiers, exact retry replay, dry-run diffs, project locking, strict mapped-path safety, staged 10/40/50 compaction, final-byte validation, and atomic publication.
43
40
  - Added `install_track` to `prime --format json` (`app_home.install_track`) and `doctor --format json`. Values are `v2`, `v3`, `source`, and `unknown`.
44
- - Added the native TypeScript CLI on the npm development channel (`npx -y agentera@next`), bundling app data at pack time via `prepack` (`tsc` + `scripts/copy-bundle.mjs`) and the `.agentera-npx-bundle.json` sentinel checked by `packages/cli/test/packaging/prepack.test.ts`.
45
- - Added `bash scripts/single-binary.sh` and the packaging contract in `docs/packaging/v3-packaging.md` for Bun `--compile` single-binary delivery alongside the npm tarball.
41
+ - Added the TypeScript CLI on the npm development channel (`npx -y agentera@next`), bundling app data at pack time via `prepack` (`tsc` + `scripts/copy-bundle.mjs`) and the `.agentera-npx-bundle.json` sentinel checked by `packages/cli/test/packaging/prepack.test.ts`.
46
42
  - Added `packages/cli/src/migrate/v2HandoffManifest.ts` to read `v3-handoff.json` during v2→v3 cleanup preflight per `references/cli/v3-handoff-manifest.schema.yaml`.
47
43
  - Added v3 `agentera doctor` coexistence detection in `packages/cli/src/upgrade/coexistenceProbe.ts` with regression coverage in `packages/cli/test/cli/coexistenceProbe.test.ts`.
48
44
  - Added maintainer gates under `agentera check` (`validate`, `verify`, `lint`, `compact`) with JSON parity oracles for validate families, verify eval targets, invalid-input envelopes, and `source_contract` emissions on `prime`, `prime --context`, `state plan`, and `state query --list-artifacts`.
@@ -51,13 +47,6 @@
51
47
 
52
48
  ### Changed
53
49
 
54
- - Changed `agentera state migrate` to inventory legacy project state locally within
55
- bounded file and byte limits, retain custom names with explicit provenance, and
56
- require exact selectors plus `--apply --force` before immutable archive, backup,
57
- and projection publication.
58
- - Changed `agentera state backfill` to remain optional local-Git enrichment: direct
59
- `--apply --force` revalidates the project, `HEAD`, candidate, reachability, and
60
- immutable target, while bounded history and no-remote behavior remain explicit.
61
50
  - Changed deterministic plan lifecycle migration to run inside the full
62
51
  development-channel v2-to-v3 upgrade. Legacy `active` and `completed` plan
63
52
  statuses become `open` and `complete` without rewriting retained task
@@ -72,12 +61,8 @@
72
61
  - Defined plan lifecycle status as `open` or `complete`, with activity derived from the current-plan path and forced unfinished archives remaining open and non-executable.
73
62
  - Enforced plan lifecycle surface classification with a bounded repository scan covering readers, writers, migrators, schemas, adapters, fixtures, and documented commitments.
74
63
  - Expanded lifecycle classification to every repository surface outside documented vendor, cache, generated-output, snapshot, symlink, and secret exclusions.
75
- - Changed v3 development-channel dry-runs without `--runtime` to show all active runtime lifecycle findings; generated lifecycle apply commands include `--runtime all --yes`, while apply without a selector remains app-only.
76
- - Changed lifecycle repair to fail closed on incomplete ownership provenance, isolate narrowed runtime selectors, and count explicit Claude cleanup separately from active-runtime work.
77
- - Changed corrupt or disconnected ownership-journal blockers to report stable causes without volatile event filenames across preview and apply.
78
- - Synchronized lifecycle projections across prime, status, project integration, and doctor while keeping Cursor CLI required, IDE conditional, and Claude cleanup explicit.
79
- - Changed lifecycle apply so native installation, update, authentication, enablement, and trust are always user-owned `action_required` steps. Automatic filesystem apply is Linux-only; other platforms retain complete preview and diagnosis.
80
- - Changed the npm package to include every declared OpenCode, Codex, Cursor, and GitHub Copilot manifest/hook/agent source and to reject package, documentation, runtime-ID, or version parity drift during validation.
64
+ - Separated source verification from package-boundary verification: source tests validate repository behavior, while extracted-package tests validate the self-contained CLI, shared skill, bundled contracts, and absence of host-native package surfaces.
65
+ - Changed packed v2-to-v3 upgrade reruns to converge after exact partial targets or completed migration, preserving canonical entity identities and producing no additional project or home-directory changes.
81
66
  - Renamed the top-level `bundle` field to `app` in `prime --format json`. Nested names are now `activeAppRoot`, `cliApp`, and `legacyAppRoot`; this is a breaking JSON output change.
82
67
  - Added v2/v3 coexistence warning to the orientation attention list when a v2 managed app is detected at the app home alongside a v3 CLI runtime. Uses the existing "pick one line" contract message from `references/cli/coexistence-probe.yaml`.
83
68
  - Promoted English names to canonical v3 capability IDs (`status`, `vision`, `discuss`, `research`, `plan`, `build`, `optimize`, `audit`, `document`, `profile`, `design`, `orchestrate`) and retired Swedish `-era` IDs from the active command surface.
@@ -89,6 +74,9 @@
89
74
 
90
75
  ### Fixed
91
76
 
77
+ - Fixed overlapping `upgrade --yes` runs to hold separate exclusive project and shared-runtime locks, reject stale or malformed lock state with bounded manual recovery, and release only a matching ownership token.
78
+ - Fixed migration-required recovery commands to shell-quote project paths so shell substitutions remain literal and the intended project receives the v2-to-v3 cutover.
79
+ - Fixed marker-absent v2 projects to select the entity cutover from project state under npm or source v3 execution, so the recovery command emitted by `prime` can complete the forward migration instead of reporting an unrelated no-op.
92
80
  - Fixed post-cutover routine query aliases, canonical-boundary Git recovery, migration-marker evidence binding, entity page byte caps, plan recovery guidance, and nested entity identity metadata.
93
81
  - Fixed the npm shim to diagnose a configured `AGENTERA_HOME` whose managed script is missing or not runnable before continuing through repository and `uvx` fallback resolution.
94
82
  - Fixed `agentera check lint` to report findings without failing by default, fail the same findings with `--strict`, and keep invalid input, authority failures, and validated plan publication nonzero.
@@ -113,7 +101,7 @@
113
101
  - Fixed `cliDistributionMajor` silently defaulting to v2 when `registry.json` version-authority was missing or corrupted. The function now reads `package.json#version` as a secondary signal before falling back to 2, and emits a one-time stderr diagnostic when both primary and secondary signals miss — preventing v3 installs with corrupted registry assets from being misclassified as v2 in runtime inference, cross-major boundary detection, channel resolution, and next-major doctor rendering.
114
102
  - Fixed `pnpm install` failing on hosts with a system-wide `vips` (Arch, Fedora, Nix with vips overlay, Homebrew on macOS): sharp's `useGlobalLibvips()` check returned true and the install hook fell through to a `node-gyp` source build that needed `node-addon-api`. Migrated the deprecated `pnpm.onlyBuiltDependencies` and `pnpm.overrides` from `package.json#pnpm` to `pnpm-workspace.yaml` (pnpm 10+ ignores the legacy key) and added a `preinstall` hook that re-execs `pnpm install` with `SHARP_IGNORE_GLOBAL_LIBVIPS=true` so sharp's prebuilt binary is always used.
115
103
  - Fixed `pnpm install` emitting `Failed to replace env in config: ${NPM_TOKEN}` on every invocation: scoped the npm auth config from repo root to `packages/cli/.npmrc`. Both publishing packages (the `agentera` 3.0 CLI on `@next` and the `agentera` 0.0.x shim on `@latest`) find the auth via npm's parent-directory walk; `pnpm install` from the repo root no longer reads any auth-bearing `.npmrc`.
116
- - Fixed v3 `agentera upgrade` skipping in-tree `.cursor/agents/*.md` copy-agent steps when the project already uses v3 capability instruction modules, so managed Cursor agents keep `Run agentera prime --context <name> --format json` instead of regressing to `Read …/capabilities/<name>/instructions.md`.
104
+ - Fixed v2-to-v3 migration skipping tracked legacy `.cursor/agents/*.md` inputs when the project already contains v3 capability instruction modules, so cleanup processes those migration inputs consistently.
117
105
  - Fixed `agentera prime --context orkestrera --format json` returning empty `dependency_ready_tasks` when plan `depends_on` references were complete but normalized differently from task numbers.
118
106
  - Fixed v2→v3 migration tests leaking OpenCode skill symlinks into the developer's real home by requiring `MigrationContext.env` in `planRuntimeMigrationItems` and adding `noHomeLeak.test.ts`.
119
107
  - Fixed `link-skill` apply failing on pre-existing dangling symlinks by unlinking symlink targets via `lstat` before `symlinkSync`.
@@ -126,11 +114,13 @@
126
114
  - Removed v1 legacy migration paths, standalone skill bundle wording, and obsolete v1 fixture assumptions from the 3.x tree after the 3.0 boundary (`packages/cli/test/cli/v1LegacyCruft.test.ts` guards against reintroduction).
127
115
  - Removed `hej`, `describe`, and `gate` from top-level `agentera --help` and dispatch; unsupported structured requests return runnable corrections to `agentera prime`, `agentera schema`, and `agentera check compact`.
128
116
  - Removed the requirement for `uv` or a git checkout on the development channel; `uvx --from git+https://github.com/jgabor/agentera@main agentera` remains the stable 2.x Python line only.
117
+ - Removed `agentera state migrate`, `agentera state backfill`, projection repair, and automatic v1 conversion. Recognized v2 aggregate projects now have one forward mutation path: full `agentera upgrade --yes`; `state migrate entities --dry-run` remains read-only.
118
+ - Removed host-native runtime selectors, repair actions, package manifests, plugins, hooks, agents, and Bun single-binary delivery from the v3 distribution. Migration fixtures, ownership evidence, and explicit Claude cleanup remain internal migration surfaces.
129
119
 
130
120
  ### Migration notes
131
121
 
132
122
  - **npm shim 0.0.2 v3 deprecation hint**: the `agentera@0.0.2` npm shim on `@latest` now emits a three-line stderr banner on every invocation pointing users to `npx -y agentera@next prime` for the v3 TypeScript CLI. `--help` lists the `@next` command; the install-help failure path leads with the `@next` pointer; `--version` stays banner-free so `--json` and pipe consumers stay clean. Set `AGENTERA_NO_V3_HINT=1` to suppress for CI and scripted invocations.
133
- - **npm shim 0.0.0 cwd preservation**: the `agentera@0.0.0` npm shim on `@latest` now forwards the user's working directory to the installed Python CLI for the `app-home` backend, so `npx -y agentera` state and prime reads resolve the project's `.agentera/` artifacts instead of the app home. The shim remains the 2.x transitional entry point; the native TypeScript CLI is `npx -y agentera@next` until the 3.0 cutover graduates `@latest`.
123
+ - **npm shim 0.0.0 cwd preservation**: the `agentera@0.0.0` npm shim on `@latest` now forwards the user's working directory to the installed Python CLI for the `app-home` backend, so `npx -y agentera` state and prime reads resolve the project's `.agentera/` artifacts instead of the app home. The shim remains the 2.x transitional entry point; the TypeScript CLI is `npx -y agentera@next` until the 3.0 cutover graduates `@latest`.
134
124
 
135
125
  ## [2.7.7] · 2026-06-03
136
126
 
package/bundle/README.md CHANGED
@@ -26,48 +26,27 @@ Run that from a git project. In an editor runtime, invoke `/agentera`
26
26
  (`$agentera` in Codex) for the rendered status dashboard.
27
27
 
28
28
  `prime` is deliberately bounded: it summarizes current project state and the
29
- next useful action. Use `doctor` when you need detailed install and runtime
30
- evidence.
29
+ next useful action. Use `doctor` when you need app, project-state, shared-skill,
30
+ and CLI evidence.
31
31
 
32
32
  ```bash
33
33
  npx -y agentera@next prime --format json
34
34
  npx -y agentera@next doctor --format json
35
35
  ```
36
36
 
37
- ## Supported runtimes
37
+ ## Runtime integration
38
38
 
39
- Agentera 3.0 has exactly four active runtime identities:
39
+ Agentera 3.0 uses one portable integration for compatible runtimes: the shared
40
+ skill at `~/.agents/skills/agentera` plus the Agentera CLI. Normal `upgrade`
41
+ previews and applies only app/project migration; it has no current-runtime
42
+ selector and creates no native plugin, hook, agent, command, descriptor, or
43
+ marketplace file. See [UPGRADE.md](./UPGRADE.md) for the distinct one-way v2
44
+ migration and explicit retired Claude cleanup route:
45
+ `agentera upgrade --legacy-cleanup claude --dry-run|--yes`.
40
46
 
41
- - OpenCode
42
- - Codex
43
- - Cursor
44
- - GitHub Copilot
45
-
46
- Cursor Agent CLI is the required Cursor surface and Cursor IDE is conditional;
47
- both belong to the single `cursor` runtime identity. The canonical portable
48
- skill is `~/.agents/skills/agentera`.
49
-
50
- On the v3 development channel, a dry-run without a selector previews lifecycle
51
- findings for all active runtimes without making changes. Approve Agentera-owned
52
- runtime operations separately:
53
-
54
- ```bash
55
- npx -y agentera@next upgrade --runtime all --dry-run
56
- npx -y agentera@next upgrade --runtime all --yes
57
- ```
58
-
59
- You can replace `all` with `opencode`, `codex`, `cursor`, or `copilot`.
60
- Preview creates no files, directories, locks, caches, telemetry, or state
61
- changes. Apply writes only declared Agentera-owned resources. Native package
62
- installation, authentication, enablement, and trust remain user-owned and are
63
- reported as `action_required`.
64
-
65
- Secure automatic lifecycle apply currently requires Linux `/proc/self/fd`.
66
- Other platforms still receive the complete preview and explicit manual actions,
67
- but filesystem operations remain `action_required`.
68
-
69
- `prime`, status, and project-integration output summarize the same lifecycle
70
- snapshot, including runtime counts, blockers, and the recommended next action.
47
+ `doctor` reports read-only app, project-state, shared-skill, and CLI evidence.
48
+ `prime`, status, and project-integration output use the app/project recommendation
49
+ and shared-skill diagnosis to select the next action.
71
50
 
72
51
  Claude Code is retired from active support. Its only lifecycle command is a
73
52
  separate, explicit cleanup of the exact Agentera-owned legacy skill link:
package/bundle/UPGRADE.md CHANGED
@@ -1,141 +1,74 @@
1
- # Upgrade and runtime lifecycle
1
+ # Upgrade and migration
2
2
 
3
- Agentera 3.0 uses one upgrade command for project/app migration and explicitly
4
- selected runtime lifecycle work. Preview and apply are separate operations.
3
+ Agentera 3.0 uses one upgrade command for app/project migration and explicit
4
+ retired Claude cleanup. Preview and apply are separate operations. Current
5
+ runtime installation and repair are not upgrade operations.
5
6
 
6
7
  Before the npm stable dist-tag promotion, use `agentera@next`. The stable 2.x
7
- channel remains `agentera@latest` until that promotion; this repository does
8
- not publish or retag as part of an upgrade run.
8
+ channel remains `agentera@latest` until that promotion; upgrade does not publish
9
+ or retag packages.
9
10
 
10
- ## Start with a preview
11
+ ## Active integration
11
12
 
12
- ```bash
13
- npx -y agentera@next upgrade --dry-run --channel development
14
- ```
13
+ Agentera has one active integration contract:
15
14
 
16
- On the v3 development channel, a dry-run without `--runtime` also observes all
17
- active runtimes so blocked app or channel phases do not hide lifecycle findings.
18
- The preview remains read-only. Runtime apply is explicit:
19
-
20
- ```bash
21
- npx -y agentera@next upgrade --runtime all --dry-run
22
- npx -y agentera@next upgrade --runtime cursor --dry-run
15
+ ```text
16
+ ~/.agents/skills/agentera + agentera CLI
23
17
  ```
24
18
 
25
- The active runtimes are OpenCode, Codex, Cursor, and GitHub Copilot. Selectors
26
- are `all`, `opencode`, `codex`, `cursor`, and `copilot`.
27
- `cursor-agent` is not a selector: Cursor Agent CLI and Cursor IDE are surfaces
28
- of the one `cursor` identity. CLI is required; IDE is conditional.
19
+ Normal `prime`, `doctor`, `schema`, help, and project-integration output reports
20
+ that shared skill and CLI/app/project state. Normal `upgrade` has no
21
+ current-runtime selector or native-resource operation set. It creates no current
22
+ plugin, hook, agent, command, descriptor, or marketplace file and does not run
23
+ runtime package managers, authentication, enablement, or trust operations.
29
24
 
30
- The preview is strictly read-only. It creates no files, directories, locks,
31
- caches, ownership journals, telemetry, or other state changes. Its output
32
- includes:
25
+ Passing `--runtime` fails before mutation. Remove `--runtime`, ensure the runtime
26
+ can read `~/.agents/skills/agentera`, and invoke the CLI directly. The supported
27
+ v2 migration and Claude cleanup routes below are separate from normal active
28
+ integration.
33
29
 
34
- - observed runtime and surface evidence;
35
- - skill, plugin, hook, agent, configuration, enablement, trust, and native-action state;
36
- - planned operations and dependencies;
37
- - current ownership evidence and blocked reasons;
38
- - exact manual or host-native actions;
39
- - required support-floor gaps.
30
+ ## Preview and apply
40
31
 
41
- `prime` exposes a bounded projection of the same snapshot. `doctor` exposes the
42
- detailed read-only diagnosis:
32
+ Preview normal app/project work:
43
33
 
44
34
  ```bash
45
- npx -y agentera@next prime --format json
46
- npx -y agentera@next doctor --format json
35
+ npx -y agentera@next upgrade --dry-run --channel development
47
36
  ```
48
37
 
49
- Status and project-integration recommendations use the same lifecycle identity,
50
- counts, blockers, and retry guidance as `prime` and `doctor`.
51
-
52
- ## Apply approved Agentera-owned work
53
-
54
- After reviewing an all-runtime preview, use its generated command or rerun the
55
- selection explicitly with `--runtime all --yes`:
38
+ The preview is strictly read-only: it creates no files, directories, locks,
39
+ caches, ownership records, telemetry, or other state. Apply only after reviewing
40
+ the generated command:
56
41
 
57
42
  ```bash
58
- npx -y agentera@next upgrade --runtime all --yes
43
+ npx -y agentera@next upgrade --yes --channel development
59
44
  ```
60
45
 
61
- An apply invoked without `--runtime` retains the existing app-only behavior.
62
- Named selectors such as `--runtime cursor` limit runtime-specific writes to that
63
- identity. Stable-channel v2 behavior remains app-only.
64
-
65
- Apply can write only resources declared by the lifecycle contract and proven
66
- Agentera-owned by the append-only ownership journal. Matching names or bytes do
67
- not establish ownership. User-owned, ambiguous, shadowed, or malformed targets
68
- remain blocked.
69
-
70
- For every blocked collision, the exact remediation is: “The destination is not
71
- ledger-owned; review the collision manually. Agentera will not adopt it by name
72
- or equality.” The destination remains unchanged until authoritative ownership is
73
- available.
74
-
75
- The operation outcomes are:
76
-
77
- - `applied` — the declared change was published;
78
- - `noop` — desired state was already exact;
79
- - `failed` — this operation failed; independent operations may continue;
80
- - `blocked_unowned` — ownership was not proven;
81
- - `skipped_dependency` — a prerequisite did not complete;
82
- - `action_required` — the user or host must perform the step.
46
+ `prime` and `doctor` expose the same app/project classification and shared-skill
47
+ state:
83
48
 
84
- Retries are designed to converge. Completed work becomes `noop`; failed or
85
- pending work is re-observed and retried. Corrupt, forked, disconnected, or
86
- non-contiguous ownership journals fail closed.
87
-
88
- Secure automatic filesystem publication currently requires Linux
89
- `/proc/self/fd`. On macOS, Windows, or a Linux environment without that secure
90
- primitive, preview and diagnosis still work but mutation is returned as
91
- `action_required`.
92
-
93
- ## Ownership and trust boundary
94
-
95
- The canonical skill is:
96
-
97
- ```text
98
- ~/.agents/skills/agentera
49
+ ```bash
50
+ npx -y agentera@next prime --format json
51
+ npx -y agentera@next doctor --format json
99
52
  ```
100
53
 
101
- Agentera can maintain declared Agentera-owned skill, plugin, hook, and agent
102
- resources. It does not run native runtime package managers or approve:
103
-
104
- - runtime installation or self-update;
105
- - authentication;
106
- - plugin or hook enablement;
107
- - trust prompts or organizational policy;
108
- - user-owned configuration collisions.
109
-
110
- Those steps are reported with exact remediation and remain user-owned.
111
-
112
- ## Cursor lifecycle
113
-
114
- Cursor is one runtime identity with two surfaces:
115
-
116
- | Surface | Support-floor role | Typical source |
117
- | --- | --- | --- |
118
- | Agent CLI | required | Cursor CLI binary and canonical shared skill |
119
- | IDE | conditional | `.cursor-plugin/plugin.json`, `.cursor/hooks.json`, `.cursor/agents/` |
120
-
121
- An absent IDE does not block a CLI-only installation. Once IDE evidence is
122
- present, its incomplete or denied mandatory evidence is reported beneath the
123
- same Cursor identity.
54
+ Retries re-observe the current app/project state. Completed migration work
55
+ converges to no change; interrupted v2 migration continues through the same full
56
+ apply command.
124
57
 
125
58
  ## Retired Claude cleanup
126
59
 
127
- Claude Code is not an active Agentera runtime and cannot be passed to
128
- `--runtime`. Its legacy cleanup is a separate explicit selection:
60
+ Claude cleanup is a distinct historical route, not a current-runtime selection:
129
61
 
130
62
  ```bash
131
63
  npx -y agentera@next upgrade --legacy-cleanup claude --dry-run
132
64
  npx -y agentera@next upgrade --legacy-cleanup claude --yes
133
65
  ```
134
66
 
135
- Cleanup is limited to the exact Agentera-owned legacy skill link recorded by
136
- the ownership ledger. It never removes Claude projects, transcripts, settings,
67
+ Cleanup is limited to the exact Agentera-owned legacy skill link recorded by the
68
+ ownership journal. It never removes Claude projects, transcripts, settings,
137
69
  credentials, caches, or other user data. Ambiguous or unowned resources remain
138
- blocked.
70
+ blocked. Preview is read-only; apply is idempotent and can be retried with the
71
+ same explicit selection.
139
72
 
140
73
  Historical transcript import is independent of cleanup. Default extraction and
141
74
  analytics do not read Claude history. Import requires explicit local consent:
@@ -145,9 +78,9 @@ npx -y agentera@next report refresh --import-source claude
145
78
  ```
146
79
 
147
80
  Imported records carry `historical_import` provenance, have no active runtime
148
- ID, and remain excluded from default active-runtime analytics.
81
+ ID, and remain excluded from default active-source analytics.
149
82
 
150
- ## Recommended upgrade v1 & v2 stable channel
83
+ ## Stable v2 line
151
84
 
152
85
  The stable `@latest` channel remains on the supported 2.x line. Preview before
153
86
  applying an in-line upgrade:
@@ -157,65 +90,35 @@ npx -y agentera@latest upgrade --dry-run
157
90
  npx -y agentera@latest upgrade --yes
158
91
  ```
159
92
 
160
- Use the v3 development migration below only when you explicitly intend to
161
- leave the stable line.
93
+ Use the v3 development migration below only when you explicitly intend to leave
94
+ the stable line.
162
95
 
163
- ## Upgrading v2 to v3 development channel (irreversible)
96
+ ## Upgrading v2 to v3 development channel
164
97
 
165
- Use the development channel explicitly while 3.0 is on `@next`:
98
+ Recognized marker-absent v2 aggregate state has one supported forward route:
166
99
 
167
100
  ```bash
168
101
  npx -y agentera@next upgrade --channel development --project "$PWD" --dry-run
169
102
  npx -y agentera@next upgrade --channel development --project "$PWD" --yes
170
103
  ```
171
104
 
172
- The dry-run is optional and read-only. Before applying, commit or restore the
173
- complete v2 migration source: every input must be a regular file tracked by Git
174
- and unchanged at `HEAD`. The apply command performs the full runtime and entity
175
- state upgrade, then validates state and representative `prime` startup.
176
-
177
- Forward migration to v3 is one-way. Returning to the Python 2.x line is not
178
- supported, and cross-major apply has no rollback, restore, non-Git, or partial
179
- workflow. If an apply is interrupted, rerun the same full apply command to
180
- continue forward.
181
-
182
- ## Legacy state and optional Git enrichment
183
-
184
- Project-state migration and historical Git enrichment are separate local
185
- operations. Migration does not read Git, contact a remote, or remove its source
186
- files. Its default inventory and `--dry-run` are read-only; apply requires the
187
- exact artifact and entry selectors with `--apply --force`:
188
-
189
- ```bash
190
- npx -y agentera@next state migrate --project "$PWD" --artifact progress --number N --dry-run --format json
191
- npx -y agentera@next state migrate --project "$PWD" --artifact progress --number N --apply --force --format json
192
- ```
193
-
194
- Git enrichment is optional. A preview is useful but not required before direct
195
- apply. Inventory and preview may use the current working directory when
196
- `--project` is omitted; direct apply must name `--project PATH` explicitly.
197
- Apply revalidates the selected project, current `HEAD`, allowed-ref
198
- reachability, candidate provenance and content, and the immutable archive target
199
- immediately before publication:
105
+ The optional preview is read-only. Before apply, commit or restore the complete
106
+ v2 migration source: every input must be a regular file tracked by Git and
107
+ unchanged at `HEAD`. Apply performs the full project rewiring and entity-state
108
+ cutover, then validates state and representative `prime` startup. Rewiring may
109
+ update recognized v2 project files; it does not install current native resources.
200
110
 
201
- ```bash
202
- npx -y agentera@next state backfill --project "$PWD" --artifact progress --number N --dry-run --format json
203
- npx -y agentera@next state backfill --project "$PWD" --artifact progress --number N --apply --force --format json
204
- ```
111
+ Forward migration is one-way. Returning to the Python 2.x line is unsupported,
112
+ and cross-major apply has no rollback, restore, non-Git, or partial workflow.
113
+ If apply is interrupted, rerun the same full apply command.
205
114
 
206
- The backfill contract is bounded to 100 result rows, 500 history units, and
207
- 16 MiB of Git output. It inspects only `HEAD`, local heads, and tags; remote and
208
- custom refs and operations are excluded. Returned provenance keeps the commit,
209
- path, blob ID, stable entry ID, content hash, and reachability so a result can
210
- be traced without adding commit fields to the archive record.
115
+ ## Unsupported legacy state
211
116
 
212
- `complete`, `degraded`, `blocked`, and `unavailable` are explicit outcomes.
213
- Changed, shallow, rewritten, ambiguous, corrupt, missing, bounded, unavailable,
214
- and immutable-conflict results are reported rather than guessed. Resolve the
215
- reported local condition and retry the same selectors; refused operations leave
216
- active projections and existing archives unchanged, and identical publication
217
- converges as a replay. The full command, limits, failure, recovery, and
218
- traceability contract is `references/artifacts/state-storage-authority.yaml`.
117
+ Pending v1 Markdown state and unknown marker-absent state are not automatic
118
+ mutation inputs. `state migrate`, `state backfill`, projection repair, v1
119
+ conversion, restore, and downgrade are unsupported. The read-only
120
+ `state migrate entities --dry-run` diagnostic may inventory cutover input but
121
+ cannot publish it.
219
122
 
220
123
  ## Verification and recovery
221
124
 
@@ -227,14 +130,11 @@ npx -y agentera@next prime --format json
227
130
  ```
228
131
 
229
132
  `upgrade --verify` without `--yes` is a read-only doctor and capability-context
230
- verification. With `--yes`, it runs those checks after the approved upgrade
231
- apply. Lifecycle selections with `--verify` require `--yes`.
232
- For lifecycle partial failure, rerun the same preview and apply selection. Do
233
- not delete or hand-edit the ownership journal to force adoption.
133
+ verification. With `--yes`, it runs those checks after approved migration.
134
+ Explicit Claude cleanup with `--verify` requires `--yes`.
234
135
 
235
136
  `--force` applies only where the owning migration contract explicitly permits
236
- replacement. It does not convert user-owned resources into Agentera-owned
237
- resources and does not approve native or trust actions.
137
+ replacement. It never adopts user-owned resources.
238
138
 
239
139
  ## Maintainer verification
240
140
 
@@ -244,8 +144,14 @@ Release preparation does not publish, tag, or push:
244
144
  pnpm -C packages/cli test
245
145
  pnpm -C packages/cli run typecheck
246
146
  pnpm -C packages/cli build
247
- node packages/cli/dist/bin/agentera.js check validate lifecycle-adapters
147
+ node packages/cli/dist/bin/agentera.js check validate capability-contract --format json
248
148
  node packages/cli/dist/bin/agentera.js check validate release-metadata
249
- pnpm -C packages/cli run bundle:data
250
- npm pack --dry-run --json --ignore-scripts
251
149
  ```
150
+
151
+ ## Mutation ownership
152
+
153
+ Upgrade apply holds the required project lock before migration begins. Explicit
154
+ Claude cleanup additionally uses its ownership journal and shared lock. Lock
155
+ creation is atomic, and release succeeds only for the matching ownership token.
156
+ A stale or malformed lock stops the operation; inspect the named lock file,
157
+ remove only that file after confirming no operation owns it, then rerun.