agentera 3.0.0-dev.15 → 3.0.0-dev.16

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 (154) hide show
  1. package/README.md +43 -22
  2. package/bundle/.codex-plugin/plugin.json +92 -0
  3. package/bundle/.cursor/agents/agentera.md +7 -0
  4. package/bundle/.cursor/hooks.json +32 -0
  5. package/bundle/.cursor-plugin/plugin.json +34 -0
  6. package/bundle/.github/hooks/postToolUse.json +9 -0
  7. package/bundle/.github/hooks/preToolUse.json +8 -0
  8. package/bundle/.github/hooks/sessionEnd.json +8 -0
  9. package/bundle/.github/hooks/sessionStart.json +8 -0
  10. package/bundle/.github/plugin/plugin.json +7 -0
  11. package/bundle/.opencode/agents/agentera.md +12 -0
  12. package/bundle/.opencode/commands/agentera.md +5 -0
  13. package/bundle/.opencode/package.json +31 -0
  14. package/bundle/.opencode/plugins/agentera.js +820 -0
  15. package/bundle/CHANGELOG.md +1075 -0
  16. package/bundle/DESIGN.md +233 -0
  17. package/bundle/LICENSE +201 -0
  18. package/bundle/README.md +137 -0
  19. package/bundle/UPGRADE.md +188 -0
  20. package/bundle/agents/openai.yaml +87 -0
  21. package/bundle/extract-corpus-parity.json +2 -4
  22. package/bundle/hooks/codex-hooks.json +31 -0
  23. package/bundle/hooks/codex-plugin-hooks.json +31 -0
  24. package/bundle/plugin.json +13 -0
  25. package/bundle/references/adapters/cursor.md +50 -40
  26. package/bundle/references/adapters/opencode.md +22 -23
  27. package/bundle/references/adapters/package-manifest-interface-model.yaml +36 -43
  28. package/bundle/references/adapters/package-registry.yaml +19 -52
  29. package/bundle/references/adapters/package-surface-characterization.md +61 -47
  30. package/bundle/references/adapters/runtime-adapter-characterization.md +44 -79
  31. package/bundle/references/adapters/runtime-adapter-registry.yaml +7 -169
  32. package/bundle/references/adapters/runtime-feature-parity.md +99 -167
  33. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +288 -0
  34. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +73 -0
  35. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +83 -0
  36. package/bundle/references/adapters/runtime-retired-resources.yaml +33 -0
  37. package/bundle/references/analysis/benchmark.md +5 -5
  38. package/bundle/references/analysis/startup-measurement-contract.yaml +19 -8
  39. package/bundle/references/cli/bundle-skill-vocabulary.yaml +2 -2
  40. package/bundle/references/cli/vocabulary-index.yaml +1 -1
  41. package/bundle/references/cli/vocabulary.md +7 -7
  42. package/bundle/skills/agentera/references/contract.md +10 -3
  43. package/dist/analytics/extractCorpus/cli.js +19 -5
  44. package/dist/analytics/extractCorpus/cli.js.map +1 -1
  45. package/dist/analytics/extractCorpus/copilotSessions.js +6 -3
  46. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -1
  47. package/dist/analytics/extractCorpus/core.js +40 -11
  48. package/dist/analytics/extractCorpus/core.js.map +1 -1
  49. package/dist/analytics/extractCorpus/corpus.js +39 -16
  50. package/dist/analytics/extractCorpus/corpus.js.map +1 -1
  51. package/dist/analytics/extractCorpus/coverageAudit.js +44 -44
  52. package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -1
  53. package/dist/analytics/extractCorpus/cursorSessions.js +6 -3
  54. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -1
  55. package/dist/analytics/extractCorpus/extractCorpusParity.js +2 -2
  56. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -1
  57. package/dist/analytics/extractCorpus/filesystemSources.js +1 -4
  58. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -1
  59. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -4
  60. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -1
  61. package/dist/analytics/usageStats.js +51 -7
  62. package/dist/analytics/usageStats.js.map +1 -1
  63. package/dist/bin/agentera.js +3 -1
  64. package/dist/bin/agentera.js.map +1 -1
  65. package/dist/capabilities/discuss/instructions.js +1 -1
  66. package/dist/capabilities/discuss/instructions.js.map +1 -1
  67. package/dist/capabilities/orchestrate/instructions.js +1 -1
  68. package/dist/capabilities/orchestrate/instructions.js.map +1 -1
  69. package/dist/capabilities/profile/instructions.js +1 -1
  70. package/dist/capabilities/profile/instructions.js.map +1 -1
  71. package/dist/cli/capabilityContext/startup.js +1 -0
  72. package/dist/cli/capabilityContext/startup.js.map +1 -1
  73. package/dist/cli/commands/doctor.js +66 -4
  74. package/dist/cli/commands/doctor.js.map +1 -1
  75. package/dist/cli/commands/prime/collectOrientationState.js +15 -1
  76. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  77. package/dist/cli/commands/prime/orientationOutput.js +12 -1
  78. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  79. package/dist/cli/commands/report.js +19 -4
  80. package/dist/cli/commands/report.js.map +1 -1
  81. package/dist/cli/commands/schema.js +75 -3
  82. package/dist/cli/commands/schema.js.map +1 -1
  83. package/dist/cli/commands/upgrade.js +18 -2
  84. package/dist/cli/commands/upgrade.js.map +1 -1
  85. package/dist/cli/commands/verify.js +6 -6
  86. package/dist/cli/commands/verify.js.map +1 -1
  87. package/dist/cli/dispatch/lifecycle.js +71 -3
  88. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  89. package/dist/cli/help.js +18 -6
  90. package/dist/cli/help.js.map +1 -1
  91. package/dist/cli/startupCompletenessContract.js +1 -1
  92. package/dist/cli/startupCompletenessContract.js.map +1 -1
  93. package/dist/eval/evalSkills.js +13 -13
  94. package/dist/eval/evalSkills.js.map +1 -1
  95. package/dist/hooks/validateArtifact/runtime.js +4 -4
  96. package/dist/migrate/v2HandoffManifest.js +4 -0
  97. package/dist/migrate/v2HandoffManifest.js.map +1 -1
  98. package/dist/registries/packageRegistry.js +36 -3
  99. package/dist/registries/packageRegistry.js.map +1 -1
  100. package/dist/registries/runtimeAdapterRegistry.js +22 -16
  101. package/dist/registries/runtimeAdapterRegistry.js.map +1 -1
  102. package/dist/runtime/lifecycleAdapterContract.js +436 -0
  103. package/dist/runtime/lifecycleAdapterContract.js.map +1 -0
  104. package/dist/runtime/lifecycleAdapters.js +707 -0
  105. package/dist/runtime/lifecycleAdapters.js.map +1 -0
  106. package/dist/runtime/lifecycleAuthority.js +443 -0
  107. package/dist/runtime/lifecycleAuthority.js.map +1 -0
  108. package/dist/runtime/lifecycleOperationContract.js +109 -0
  109. package/dist/runtime/lifecycleOperationContract.js.map +1 -0
  110. package/dist/runtime/lifecycleOperations.js +627 -0
  111. package/dist/runtime/lifecycleOperations.js.map +1 -0
  112. package/dist/runtime/lifecycleOwnershipJournal.js +623 -0
  113. package/dist/runtime/lifecycleOwnershipJournal.js.map +1 -0
  114. package/dist/runtime/lifecyclePublication.js +395 -0
  115. package/dist/runtime/lifecyclePublication.js.map +1 -0
  116. package/dist/runtime/lifecycleSnapshot.js +174 -0
  117. package/dist/runtime/lifecycleSnapshot.js.map +1 -0
  118. package/dist/runtime/retiredRuntimeCleanup.js +232 -0
  119. package/dist/runtime/retiredRuntimeCleanup.js.map +1 -0
  120. package/dist/setup/codex/installRoot.js +1 -1
  121. package/dist/setup/codex/installRoot.js.map +1 -1
  122. package/dist/setup/copilot.js +1 -1
  123. package/dist/setup/copilot.js.map +1 -1
  124. package/dist/setup/cursor.js +1 -1
  125. package/dist/setup/cursor.js.map +1 -1
  126. package/dist/setup/doctor/core.js +3 -3
  127. package/dist/setup/doctor/core.js.map +1 -1
  128. package/dist/setup/doctor/diagnostics.js +0 -39
  129. package/dist/setup/doctor/diagnostics.js.map +1 -1
  130. package/dist/setup/smokeChecks.js +1 -3
  131. package/dist/setup/smokeChecks.js.map +1 -1
  132. package/dist/upgrade/appContentRefresh.js +8 -1
  133. package/dist/upgrade/appContentRefresh.js.map +1 -1
  134. package/dist/upgrade/doctor.js +4 -0
  135. package/dist/upgrade/doctor.js.map +1 -1
  136. package/dist/upgrade/lifecycleUpgrade.js +386 -0
  137. package/dist/upgrade/lifecycleUpgrade.js.map +1 -0
  138. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  139. package/dist/upgrade/runtimeMigration.js +1 -8
  140. package/dist/upgrade/runtimeMigration.js.map +1 -1
  141. package/dist/upgrade/upgradeCommands.js +8 -0
  142. package/dist/upgrade/upgradeCommands.js.map +1 -1
  143. package/dist/upgrade/upgradeOrchestrator.js +148 -5
  144. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  145. package/dist/validate/appHomeContract.js +1 -1
  146. package/dist/validate/appHomeContract.js.map +1 -1
  147. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +2 -9
  148. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +1 -1
  149. package/dist/validate/lifecycleAdapters/shared.js +1 -1
  150. package/dist/validate/lifecycleAdapters/shared.js.map +1 -1
  151. package/dist/validate/lifecycleAdapters.js +77 -2
  152. package/dist/validate/lifecycleAdapters.js.map +1 -1
  153. package/package.json +1 -1
  154. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
@@ -0,0 +1,288 @@
1
+ schema_version: agentera.runtimeLifecycleAdapters.v1
2
+ status: active_contract
3
+ decision: 92
4
+ authority: references/adapters/runtime-lifecycle-authority.yaml
5
+ operation_contract: references/adapters/runtime-lifecycle-operation-contract.yaml
6
+ categories:
7
+ - skills
8
+ - plugins
9
+ - hooks
10
+ - agents
11
+ - configuration
12
+ - enablement
13
+ - trust
14
+ - native_actions
15
+ category_contract:
16
+ required_fields:
17
+ - capability
18
+ - evidence
19
+ - remediation
20
+ capabilities:
21
+ - repairable
22
+ - observable
23
+ - action_required
24
+ - unsupported
25
+ - unverified
26
+ - not_applicable
27
+ evidence_states:
28
+ - confirmed
29
+ - absent
30
+ - drifted
31
+ - shadowed
32
+ - denied
33
+ - unknown
34
+ - blocked_unowned
35
+ - unsupported
36
+ - not_applicable
37
+ - action_required
38
+ remediation_kinds:
39
+ - none
40
+ - repair
41
+ - action_required
42
+ - unavailable
43
+ support_floor:
44
+ authority: references/adapters/runtime-lifecycle-authority.yaml#support_floor
45
+ required_category: skills
46
+ required_capability: repairable
47
+ unknown_or_unverified_required_detection_blocks: true
48
+ incomplete_required_diagnosis_blocks: true
49
+ unknown_or_missing_mandatory_evidence_blocks: true
50
+ denied_required_trust_blocks: true
51
+ known_false_presence_install_enable_is_diagnosed_degraded: true
52
+ not_applicable_only_for_unobserved_conditional_surface: true
53
+ native_policy:
54
+ execution: forbidden
55
+ exact_action_required_only: true
56
+ install_update_enable_auth_trust_are_user_owned: true
57
+ path_policy:
58
+ destination_templates_are_declarations: true
59
+ matching_ledger_required_for_existing_resources: true
60
+ equality_or_name_never_establishes_ownership: true
61
+ forbidden_destination_segments:
62
+ - cache
63
+ - caches
64
+ - cacheddata
65
+ - node_modules
66
+ - .npm
67
+ - .pnpm-store
68
+ - marketplace-cache
69
+ known_caveats:
70
+ - Append-only ownership journal recovery accepts only a strict contiguous hash chain, ignores uniquely named non-authoritative publication temporaries, blocks malformed or disconnected final events, and re-observes every resource before retry.
71
+ shared_resources:
72
+ - id: canonical_skill
73
+ category: skills
74
+ kind: symlink
75
+ source: "{source_root}/skills/agentera"
76
+ destination: "{home}/.agents/skills/agentera"
77
+ required: true
78
+ managed_resources:
79
+ - id: opencode.plugin
80
+ runtime_id: opencode
81
+ surface_id: host
82
+ category: plugins
83
+ kind: file
84
+ source: "{source_root}/.opencode/plugins/agentera.js"
85
+ destination: "{opencode_config}/plugins/agentera.js"
86
+ required: false
87
+ - id: opencode.agent
88
+ runtime_id: opencode
89
+ surface_id: host
90
+ category: agents
91
+ kind: file
92
+ source: "{source_root}/.opencode/agents/agentera.md"
93
+ destination: "{opencode_config}/agents/agentera.md"
94
+ required: false
95
+ - id: codex.hooks
96
+ runtime_id: codex
97
+ surface_id: cli
98
+ category: hooks
99
+ kind: file
100
+ source: "{source_root}/hooks/codex-hooks.json"
101
+ destination: "{home}/.codex/hooks.json"
102
+ required: false
103
+ - id: codex.agents
104
+ runtime_id: codex
105
+ surface_id: cli
106
+ category: agents
107
+ kind: directory_files
108
+ source: "{source_root}/skills/agentera/agents"
109
+ destination: "{home}/.codex/agents"
110
+ extension: .toml
111
+ required: false
112
+ - id: cursor.plugin
113
+ runtime_id: cursor
114
+ surface_id: ide
115
+ category: plugins
116
+ kind: file
117
+ source: "{source_root}/.cursor-plugin/plugin.json"
118
+ destination: "{project}/.cursor-plugin/plugin.json"
119
+ required: false
120
+ - id: cursor.hooks
121
+ runtime_id: cursor
122
+ surface_id: ide
123
+ category: hooks
124
+ kind: file
125
+ source: "{source_root}/.cursor/hooks.json"
126
+ destination: "{project}/.cursor/hooks.json"
127
+ required: false
128
+ - id: cursor.agent
129
+ runtime_id: cursor
130
+ surface_id: ide
131
+ category: agents
132
+ kind: file
133
+ source: "{source_root}/.cursor/agents/agentera.md"
134
+ destination: "{project}/.cursor/agents/agentera.md"
135
+ required: false
136
+ adapters:
137
+ - runtime_id: opencode
138
+ binaries:
139
+ host: [opencode]
140
+ resource_refs: [canonical_skill, opencode.plugin, opencode.agent]
141
+ skill_locations:
142
+ - path: "{project}/.opencode/skills/agentera"
143
+ scope: project_runtime
144
+ - path: "{project}/.agents/skills/agentera"
145
+ scope: project_shared
146
+ - path: "{home}/.agents/skills/agentera"
147
+ scope: personal_shared
148
+ canonical: true
149
+ - path: "{opencode_config}/skills/agentera"
150
+ scope: personal_runtime
151
+ categories:
152
+ skills:
153
+ host: { capability: repairable, evidence: filesystem, remediation: shared_engine, required: true }
154
+ plugins:
155
+ host: { capability: repairable, evidence: filesystem, remediation: shared_engine }
156
+ hooks:
157
+ host: { capability: observable, evidence: managed_resource:opencode.plugin, remediation: shared_engine:opencode.plugin }
158
+ agents:
159
+ host: { capability: repairable, evidence: filesystem, remediation: shared_engine }
160
+ configuration:
161
+ host: { capability: not_applicable, evidence: plugin_autodiscovery, remediation: none }
162
+ enablement:
163
+ host: { capability: observable, evidence: managed_resource:opencode.plugin, remediation: shared_engine:opencode.plugin }
164
+ trust:
165
+ host: { capability: unverified, evidence: external_observation, remediation: unavailable }
166
+ native_actions:
167
+ host: { capability: unverified, evidence: no_verified_native_action, remediation: unavailable }
168
+ native_actions: []
169
+ - runtime_id: codex
170
+ binaries:
171
+ cli: [codex]
172
+ resource_refs: [canonical_skill, codex.hooks, codex.agents]
173
+ skill_locations:
174
+ - path: "{project}/.agents/skills/agentera"
175
+ scope: project_shared
176
+ - path: "{home}/.agents/skills/agentera"
177
+ scope: personal_shared
178
+ canonical: true
179
+ categories:
180
+ skills:
181
+ cli: { capability: repairable, evidence: filesystem, remediation: shared_engine, required: true }
182
+ plugins:
183
+ cli: { capability: unverified, evidence: external_observation, remediation: unavailable }
184
+ hooks:
185
+ cli: { capability: repairable, evidence: filesystem, remediation: shared_engine }
186
+ agents:
187
+ cli: { capability: repairable, evidence: filesystem, remediation: shared_engine }
188
+ configuration:
189
+ cli: { capability: observable, evidence: "path:{home}/.codex/config.toml", remediation: action_required }
190
+ enablement:
191
+ cli: { capability: unverified, evidence: external_observation, remediation: unavailable }
192
+ trust:
193
+ cli: { capability: observable, evidence: external_observation, remediation: action_required }
194
+ native_actions:
195
+ cli: { capability: unverified, evidence: no_verified_native_action, remediation: unavailable }
196
+ native_actions: []
197
+ - runtime_id: cursor
198
+ binaries:
199
+ cli: [cursor-agent]
200
+ ide: [cursor]
201
+ resource_refs: [canonical_skill, cursor.plugin, cursor.hooks, cursor.agent]
202
+ skill_locations:
203
+ - path: "{project}/.agents/skills/agentera"
204
+ scope: project_shared
205
+ surfaces: [cli, ide]
206
+ - path: "{project}/.cursor/skills/agentera"
207
+ scope: project_runtime
208
+ surfaces: [cli, ide]
209
+ - path: "{home}/.agents/skills/agentera"
210
+ scope: personal_shared
211
+ surfaces: [cli, ide]
212
+ canonical: true
213
+ - path: "{home}/.cursor/skills/agentera"
214
+ scope: personal_runtime
215
+ surfaces: [cli, ide]
216
+ categories:
217
+ skills:
218
+ cli: { capability: repairable, evidence: filesystem, remediation: shared_engine, required: true }
219
+ ide: { capability: repairable, evidence: filesystem, remediation: shared_engine, required: false }
220
+ plugins:
221
+ cli: { capability: not_applicable, evidence: no_cli_plugin_claim, remediation: none }
222
+ ide: { capability: repairable, evidence: filesystem, remediation: shared_engine }
223
+ hooks:
224
+ cli: { capability: unverified, evidence: no_verified_cli_hook_claim, remediation: unavailable }
225
+ ide: { capability: repairable, evidence: filesystem, remediation: shared_engine }
226
+ agents:
227
+ cli: { capability: unverified, evidence: no_verified_cli_agent_claim, remediation: unavailable }
228
+ ide: { capability: repairable, evidence: filesystem, remediation: shared_engine }
229
+ configuration:
230
+ cli: { capability: not_applicable, evidence: skill_autodiscovery, remediation: none }
231
+ ide: { capability: not_applicable, evidence: plugin_manifest, remediation: none }
232
+ enablement:
233
+ cli: { capability: observable, evidence: canonical_skill, remediation: shared_engine:canonical_skill }
234
+ ide: { capability: unverified, evidence: external_observation, remediation: unavailable }
235
+ trust:
236
+ cli: { capability: unverified, evidence: external_observation, remediation: unavailable }
237
+ ide: { capability: observable, evidence: external_observation, remediation: action_required }
238
+ native_actions:
239
+ cli: { capability: unverified, evidence: no_verified_native_action, remediation: unavailable }
240
+ ide: { capability: unverified, evidence: no_verified_native_action, remediation: unavailable }
241
+ native_actions: []
242
+ - runtime_id: copilot
243
+ binaries:
244
+ cli: [copilot]
245
+ resource_refs: [canonical_skill]
246
+ skill_locations:
247
+ - path: "{project}/.github/skills/agentera"
248
+ scope: project_runtime
249
+ - path: "{project}/.agents/skills/agentera"
250
+ scope: project_shared
251
+ - path: "{home}/.copilot/skills/agentera"
252
+ scope: personal_runtime
253
+ - path: "{home}/.agents/skills/agentera"
254
+ scope: personal_shared
255
+ canonical: true
256
+ categories:
257
+ skills:
258
+ cli: { capability: repairable, evidence: filesystem, remediation: shared_engine, required: true }
259
+ plugins:
260
+ cli: { capability: unverified, evidence: external_observation, remediation: unavailable }
261
+ hooks:
262
+ cli: { capability: unverified, evidence: external_observation, remediation: unavailable }
263
+ agents:
264
+ cli: { capability: unsupported, evidence: no_verified_agent_surface, remediation: unavailable }
265
+ configuration:
266
+ cli: { capability: observable, evidence: env:AGENTERA_HOME, remediation: action_required }
267
+ enablement:
268
+ cli: { capability: observable, evidence: canonical_skill, remediation: shared_engine:canonical_skill }
269
+ trust:
270
+ cli: { capability: unverified, evidence: external_observation, remediation: unavailable }
271
+ native_actions:
272
+ cli: { capability: action_required, evidence: verified_host_actions, remediation: action_required }
273
+ native_actions:
274
+ - id: copilot.skills.list
275
+ surface_id: cli
276
+ action_kind: slash_action
277
+ command: /skills list
278
+ instruction: Run `/skills list` in Copilot CLI to inspect discovered skills.
279
+ - id: copilot.skills.info
280
+ surface_id: cli
281
+ action_kind: slash_action
282
+ command: /skills info agentera
283
+ instruction: Run `/skills info agentera` in Copilot CLI to inspect the Agentera skill.
284
+ - id: copilot.skills.reload
285
+ surface_id: cli
286
+ action_kind: slash_action
287
+ command: /skills reload
288
+ instruction: Run `/skills reload` in Copilot CLI after an approved filesystem repair.
@@ -0,0 +1,73 @@
1
+ schema_version: agentera.runtimeLifecycleAuthority.v1
2
+ status: active_authority
3
+ decision: 92
4
+ operation_contract: references/adapters/runtime-lifecycle-operation-contract.yaml
5
+ adapter_contract: references/adapters/runtime-lifecycle-adapters.yaml
6
+ retired_cleanup_contract: references/adapters/runtime-retired-resources.yaml
7
+ canonical_skill:
8
+ path: ~/.agents/skills/agentera
9
+ required_for_support_floor: true
10
+ evidence_contract:
11
+ mandatory_fields:
12
+ - host_present
13
+ - installed
14
+ - enabled
15
+ - trusted
16
+ values:
17
+ - true
18
+ - false
19
+ - unknown
20
+ - denied
21
+ - not_applicable
22
+ trust_policy: Trust is observed only; unknown trust must never be promoted to trusted.
23
+ support_floor:
24
+ requirements:
25
+ - canonical_shared_skill_detected
26
+ - diagnosis_complete
27
+ - mandatory_evidence_resolved
28
+ evidence_rules:
29
+ unknown_or_missing_mandatory_blocks: true
30
+ denied_mandatory_trust_blocks: true
31
+ known_false_diagnoses_degraded:
32
+ - host_present
33
+ - installed
34
+ - enabled
35
+ not_applicable_scope: unobserved_conditional_surface_only
36
+ unmet_blocks_release: true
37
+ active_runtimes:
38
+ - id: opencode
39
+ display_name: OpenCode
40
+ surfaces:
41
+ - id: host
42
+ display_name: OpenCode host
43
+ presence: required
44
+ - id: codex
45
+ display_name: Codex
46
+ surfaces:
47
+ - id: cli
48
+ display_name: Codex CLI
49
+ presence: required
50
+ - id: cursor
51
+ display_name: Cursor
52
+ surfaces:
53
+ - id: cli
54
+ display_name: Cursor Agent CLI
55
+ presence: required
56
+ - id: ide
57
+ display_name: Cursor IDE
58
+ presence: conditional
59
+ - id: copilot
60
+ display_name: GitHub Copilot
61
+ surfaces:
62
+ - id: cli
63
+ display_name: Copilot CLI
64
+ presence: required
65
+ retired_runtime_inputs:
66
+ - id: claude
67
+ purposes:
68
+ - consent_gated_historical_import
69
+ - owned_legacy_resource_cleanup
70
+ migration_aliases:
71
+ cursor-agent:
72
+ runtime_id: cursor
73
+ surface_id: cli
@@ -0,0 +1,83 @@
1
+ schema_version: agentera.lifecycleOperationContract.v1
2
+ status: active_contract
3
+ decision: 92
4
+ scope: runtime_neutral_filesystem_resources
5
+ ownership:
6
+ manifest_schema: agentera.lifecycleOwnershipManifest.v1
7
+ ledger_schema: agentera.lifecycleOwnershipLedger.v1
8
+ owner: agentera
9
+ mutation_rule: A destination declaration is always required. Existing resources additionally require one matching whole-resource ledger record.
10
+ equality_rule: Content equality and resource names never establish ownership.
11
+ collision_rule: Pre-existing resources without matching ledger ownership are never replaced or removed.
12
+ identity_rule: Managed and published pending-create records bind the filesystem device and inode observed at publication.
13
+ removal_rule: Removal requires a matching whole-resource ledger identity and fingerprint, a pinned non-symlink parent, and Linux /proc/self/fd directory-relative access.
14
+ interrupted_create_rule: A pending_create record may be finalized when its recorded identity and expected fingerprint match, or when the durable pre-create record survived and the exclusively declared resource is observed at the exact expected kind and fingerprint after restart.
15
+ journal_rule: Apply publishes fsynced append-only ledger snapshots atomically at final names and accepts only a contiguous sequence-one hash chain with no gaps, forks, duplicate sequences, digest mismatches, or disconnected events.
16
+ journal_statuses:
17
+ absent: No journal directory exists; preview remains zero-write and apply may publish sequence one.
18
+ clean: Every authoritative final event is complete, schema-valid, digest-valid, and connected; mutation may append the next sequence.
19
+ recoverable_terminal_tail: Exactly one syntactically incomplete final event follows the clean prefix with no successor; reads preserve the prefix but every mutation is blocked until the tail is resolved.
20
+ corrupt: Any malformed complete event, middle incomplete event, gap, fork, duplicate sequence, body or filename mismatch, digest mismatch, disconnection, or unsafe entry blocks every mutation.
21
+ recovery_rule: Restart ignores uniquely named non-authoritative publication temporaries, folds only the strict connected final chain, and re-observes each resource before retry; append never continues from a rolled-back prefix or past an unresolved final tail.
22
+ resource_states:
23
+ - exact
24
+ - modified
25
+ - missing
26
+ - legacy
27
+ - symlinked
28
+ - wrong_type
29
+ - partial_managed
30
+ - unowned
31
+ - unsafe_path
32
+ - ambiguous_ownership
33
+ plan_actions:
34
+ - create
35
+ - update
36
+ - remove
37
+ - finalize_ownership
38
+ - noop
39
+ - blocked_unowned
40
+ - action_required
41
+ apply_results:
42
+ - applied
43
+ - noop
44
+ - failed
45
+ - blocked_unowned
46
+ - skipped_dependency
47
+ - action_required
48
+ aggregate_rule: Required results other than applied or noop make the aggregate non_success.
49
+ dependency_rule: Independent operations continue after failure. Dependents skip with their failed dependency IDs.
50
+ retry_rule: Successful work replans to noop; pending and failed work retries from observed filesystem and ledger state.
51
+ preview_policy:
52
+ mode: strictly_read_only
53
+ forbidden:
54
+ - filesystem mutation
55
+ - directory creation
56
+ - locks
57
+ - temporary target files
58
+ - ownership record writes
59
+ - caches
60
+ - telemetry
61
+ - native commands
62
+ - package managers
63
+ - authentication
64
+ - trust changes
65
+ path_safety:
66
+ - Destinations must be absolute and contained by an explicit existing allowed root.
67
+ - Apply pins the allowed root and every parent through Linux /proc/self/fd, then revalidates directory identities at the final publication boundary.
68
+ - Parent symlink traversal, parent identity substitution, link-target escapes, target identity substitution, hard-linked files, wrong types, partial ownership, and ambiguous ownership require action or fail safely.
69
+ publication_policy:
70
+ supported_platform: linux_proc_self_fd
71
+ unsupported_platform_result: action_required
72
+ apply_serialization: lifecycle apply prepares a complete fsynced uniquely named lock directory and atomically renames it into final position; a complete live preparation blocks contenders, and the immutable owner record binds token, PID, Linux boot ID, and /proc process start ticks.
73
+ lock_recovery: Malformed or incomplete final locks fail closed. A complete lock is stale only when boot ID or process start ticks prove that exact owner identity is gone; release verifies the full identity and token before removing the owner record and lock directory.
74
+ journal_publication: Event bytes are fsynced under a unique non-authoritative temporary name, hard-linked atomically to the exclusive final event name, and followed by directory fsync before temporary cleanup.
75
+ create_protocol: directory-relative exclusive no-follow creation with no sibling temporary path
76
+ owned_file_update_protocol: directory-relative no-follow open, ledger and observation identity match, descriptor-local fingerprint check, in-place descriptor write, and post-write path identity check
77
+ destructive_path_mutations: owned_removal_only
78
+ destructive_path_reason: Removal is limited to declared resources whose whole-resource ledger identity and fingerprint still match through a pinned parent; every weaker case fails closed.
79
+ cleanup_rule: Publication creates no sibling temporary entry and never unlinks a colliding or replaced path; approved cleanup may unlink only the validated owned resource.
80
+ crash_boundary: Creates and owned file updates preserve the never-overwrite-unowned invariant but are not promised crash-atomic; a recorded pending identity makes partial Agentera-created files retryable.
81
+ native_policy:
82
+ install_update_auth_trust_operations: forbidden
83
+ trust_is_observed_only: true
@@ -0,0 +1,33 @@
1
+ schema_version: agentera.retiredRuntimeResources.v1
2
+ status: retired_migration_contract
3
+ decision: 92
4
+ authority: references/adapters/runtime-lifecycle-authority.yaml
5
+ operation_contract: references/adapters/runtime-lifecycle-operation-contract.yaml
6
+ policy:
7
+ active_inventory_exposure: forbidden
8
+ preview: strictly_read_only
9
+ apply_requires: explicit_approval
10
+ ownership: matching_whole_resource_legacy_ledger_identity_and_fingerprint
11
+ unsupported_platform_result: action_required
12
+ retired_runtimes:
13
+ - id: claude
14
+ display_name: Claude Code historical migration
15
+ active_runtime: false
16
+ source_product: claude-code
17
+ resources:
18
+ - id: claude.agentera-skill-link
19
+ kind: symlink
20
+ intent: remove
21
+ destination: "{home}/.claude/skills/agentera"
22
+ ledger_status: legacy
23
+ never_touch:
24
+ - "{home}/.claude/projects"
25
+ - "{home}/.claude/statsig"
26
+ - "{home}/.claude/settings.json"
27
+ - "{home}/.claude/settings.local.json"
28
+ - "{home}/.claude.json"
29
+ - "{home}/.claude/cache"
30
+ - "{home}/.claude/caches"
31
+ - "{home}/.claude/conversations"
32
+ - "{home}/.claude/credentials"
33
+ safety_note: Only the declared Agentera skill symlink may be removed, and only when a matching legacy ownership ledger still binds its identity and target fingerprint. Transcript, settings, credential, conversation, stats, cache, and ambiguous paths are never cleanup targets.
@@ -83,11 +83,11 @@ Status interpretation is intentionally split:
83
83
  | No matching records | `sparse` / `no_matching_records` | Candidate storage was readable and schema-compatible, but no supported records were extracted. Treat this as sparse coverage evidence. |
84
84
  | Successful zero-record window | `ok` / `records_extracted` with `record_count: 0` and `error_count: 0` | Extraction succeeded, but the incremental benchmark window has no records after the previous watermark. Treat this as compatible successful behavior. |
85
85
 
86
- Current known runtime caveats are extraction caveats, not CLI behavior evidence:
87
- `claude-code` is degraded by `schema_divergent` with 4836 candidates, 0 records,
88
- and 2 errors; `github-copilot` is degraded by `schema_divergent` with 1
89
- candidate, 0 records, and 1 error; `opencode` currently contributes records;
90
- `codex` can validly report `ok` with zero records and zero errors for an empty
86
+ Known active-runtime caveats are extraction caveats, not CLI behavior evidence:
87
+ `cursor` is degraded by `schema_divergent` with 4836 candidates, 0 records,
88
+ and 2 errors; `copilot` is degraded by `schema_divergent` with 1 candidate,
89
+ 0 records, and 1 error; `opencode` currently contributes records; `codex` can
90
+ validly report `ok` with zero records and zero errors for an empty
91
91
  incremental window.
92
92
 
93
93
  Runtime-store runs are incremental by default. The first run for a runtime scope
@@ -15,7 +15,7 @@ boundary:
15
15
  rule: include records with timestamps strictly after committed_at
16
16
 
17
17
  section_22_compatibility:
18
- consumes_adapter_version: agentera-v2-corpus-1
18
+ consumes_adapter_version: agentera-v3-corpus-2
19
19
  required_record_families:
20
20
  - conversation_turn
21
21
  - tool_call
@@ -39,7 +39,9 @@ benchmark_execution:
39
39
  live_host_checks: forbidden_by_default
40
40
  runtime_path_approval: >-
41
41
  Running mage bench:startupState authorizes inspection of the documented
42
- default runtime stores for codex, claude-code, opencode, and github-copilot.
42
+ default active-runtime stores for codex, cursor, opencode, and copilot.
43
+ Claude history is excluded unless the caller separately supplies
44
+ --import-source claude with its concrete local path.
43
45
  Custom runtime history sources must be supplied as exact runtime labels and
44
46
  concrete filesystem paths. A generic consent flag or runtime label without
45
47
  its concrete path is insufficient for custom sources.
@@ -59,10 +61,10 @@ benchmark_execution:
59
61
 
60
62
  runtime_extraction_contract:
61
63
  supported_runtime_order:
62
- - codex
63
- - claude-code
64
64
  - opencode
65
- - github-copilot
65
+ - codex
66
+ - cursor
67
+ - copilot
66
68
  normalized_record_fields:
67
69
  required:
68
70
  - source_id
@@ -70,6 +72,9 @@ runtime_extraction_contract:
70
72
  - project_id
71
73
  - source_kind
72
74
  - runtime
75
+ - source_class
76
+ - source_product
77
+ - active_runtime
73
78
  - adapter_version
74
79
  - data
75
80
  optional:
@@ -94,11 +99,11 @@ runtime_extraction_contract:
94
99
  - record_count, which may be zero or partial
95
100
  - error_count greater than zero
96
101
  current_examples:
97
- - runtime: claude-code
102
+ - runtime: cursor
98
103
  file_count: 4836
99
104
  record_count: 0
100
105
  error_count: 2
101
- - runtime: github-copilot
106
+ - runtime: copilot
102
107
  file_count: 1
103
108
  record_count: 0
104
109
  error_count: 1
@@ -127,7 +132,7 @@ runtime_extraction_contract:
127
132
  - runtime: codex
128
133
  record_count: 0
129
134
  error_count: 0
130
- supported_runtimes:
135
+ source_products:
131
136
  codex:
132
137
  accepted_input_schema_classes:
133
138
  - JSONL session files containing session_meta or turn_context records
@@ -146,6 +151,9 @@ runtime_extraction_contract:
146
151
  - Do not retain cwd, project_path, store_path, file_path, raw session ids, or generated salted hashes.
147
152
  - Retain only canonical runtime labels, canonical artifact labels, bounded counts, and aggregate status fields.
148
153
  claude-code:
154
+ source_class: historical_import
155
+ active_runtime: false
156
+ inclusion_rule: explicit --import-source claude only; excluded from default active-runtime metrics
149
157
  accepted_input_schema_classes:
150
158
  - JSONL project session files with top-level role or type user/assistant events
151
159
  - JSONL message objects with nested message.role plus content/text/message content variants
@@ -180,6 +188,9 @@ runtime_extraction_contract:
180
188
  - Do not retain SQLite file paths, project paths, transcript text, raw session ids, or generated salted hashes.
181
189
  - Retain only canonical runtime labels, canonical artifact labels, bounded counts, and aggregate status fields.
182
190
  github-copilot:
191
+ runtime: copilot
192
+ source_class: active_runtime
193
+ active_runtime: true
183
194
  accepted_input_schema_classes:
184
195
  - SQLite session-store.db with sessions and turns tables
185
196
  - session id columns id, session_id, or sessionID
@@ -65,8 +65,8 @@ canonical_concepts:
65
65
  - bundled suite
66
66
  plugin_shipped_hooks:
67
67
  definition: >-
68
- Hooks that are shipped by runtime plugin package surfaces such as Codex,
69
- OpenCode, Claude, or GitHub plugin metadata.
68
+ Hooks that are shipped by active runtime plugin package surfaces such as
69
+ Codex, OpenCode, Cursor, or GitHub plugin metadata.
70
70
  allowed_terms:
71
71
  - plugin-shipped hooks
72
72
  - plugin-bundled hooks
@@ -33,7 +33,7 @@ normalization_rules:
33
33
  use: single Agentera agent, capabilities (the product word); "skill" and "plugin" survive only as internal transport (the skills/ directory and plugin.json manifests host editors require)
34
34
  avoid: '"Agentera skill" or "plugin" as product words; "twelve-skill suite" or "plugin suite" for the capability set.'
35
35
  - rule: Agentera is the agent; the host is the harness (Decision 74).
36
- use: host runtime, harness, host coding agent (Claude, Cursor, Codex, Copilot, OpenCode); the CLI owns routing, memory, capability prose, and the worker-spec contract
36
+ use: host runtime, harness, host coding agent (OpenCode, Codex, Cursor, Copilot); the CLI owns routing, memory, capability prose, and the worker-spec contract
37
37
  avoid: Calling host coding agents peers or extension hosts of Agentera; implying Agentera is a module loaded into the host.
38
38
  - rule: /agentera is the main invocation.
39
39
  use: /agentera, $agentera for Codex-specific docs