agentera 3.0.0-dev.4 → 3.0.0-dev.46

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 (585) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +108 -22
  3. package/bundle/.agentera-npx-bundle.json +1 -1
  4. package/bundle/CHANGELOG.md +1351 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +143 -0
  8. package/bundle/UPGRADE.md +236 -0
  9. package/bundle/extract-corpus-parity.json +21 -0
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +437 -0
  12. package/bundle/references/adapters/package-registry.yaml +434 -189
  13. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  14. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  15. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  16. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  17. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  18. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  19. package/bundle/references/analysis/verification-policy.yaml +191 -0
  20. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  21. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  22. package/bundle/references/artifacts/state-storage-authority.yaml +2982 -0
  23. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  24. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  25. package/bundle/references/cli/capability-instruction-contract.yaml +97 -59
  26. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  27. package/bundle/references/cli/routing-model.md +155 -0
  28. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  29. package/bundle/references/cli/update-channels.yaml +35 -2
  30. package/bundle/references/cli/vocabulary-index.yaml +23 -20
  31. package/bundle/references/cli/vocabulary.md +337 -366
  32. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  33. package/bundle/registry.json +14 -14
  34. package/bundle/skills/agentera/SKILL.md +218 -408
  35. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  36. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  37. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  38. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  39. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
  40. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  41. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  42. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  44. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  45. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  46. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  48. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  52. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  53. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  55. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  57. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  59. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  62. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  63. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  64. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  65. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  66. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  67. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  68. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  69. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  71. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  72. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  75. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  77. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  79. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
  81. package/bundle/skills/agentera/protocol.yaml +31 -31
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +421 -33
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +143 -53
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +345 -31
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  95. package/dist/analytics/extractCorpus/cli.js +190 -0
  96. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  97. package/dist/analytics/extractCorpus/core.js +392 -0
  98. package/dist/analytics/extractCorpus/corpus.js +167 -0
  99. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  100. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  101. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  102. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  103. package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
  104. package/dist/analytics/extractCorpus/index.js +14 -0
  105. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  106. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  107. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  108. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  109. package/dist/analytics/extractCorpus.js +2 -1791
  110. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  111. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  112. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  113. package/dist/analytics/personalGlossaryProfile.js +219 -0
  114. package/dist/analytics/profileSignals.js +211 -0
  115. package/dist/analytics/usageStats.js +169 -42
  116. package/dist/audit/terminologyDrift.js +281 -0
  117. package/dist/bin/agentera.js +3 -2
  118. package/dist/capabilities/audit/instructions.js +16 -0
  119. package/dist/capabilities/build/instructions.js +56 -0
  120. package/dist/capabilities/design/instructions.js +4 -0
  121. package/dist/capabilities/discuss/instructions.js +29 -0
  122. package/dist/capabilities/document/instructions.js +11 -0
  123. package/dist/capabilities/index.js +40 -0
  124. package/dist/capabilities/optimize/instructions.js +14 -0
  125. package/dist/capabilities/orchestrate/instructions.js +40 -0
  126. package/dist/capabilities/plan/instructions.js +32 -0
  127. package/dist/capabilities/profile/instructions.js +70 -0
  128. package/dist/capabilities/research/instructions.js +5 -0
  129. package/dist/capabilities/status/instructions.js +11 -0
  130. package/dist/capabilities/status/startupInstructions.js +34 -0
  131. package/dist/capabilities/vision/instructions.js +4 -0
  132. package/dist/cli/appContext.js +30 -24
  133. package/dist/cli/argvalidate.js +0 -1
  134. package/dist/cli/capabilityContext/benchmark.js +565 -0
  135. package/dist/cli/capabilityContext/bespoke.js +44 -0
  136. package/dist/cli/capabilityContext/build.js +242 -0
  137. package/dist/cli/capabilityContext/closeout.js +233 -0
  138. package/dist/cli/capabilityContext/contract.js +179 -0
  139. package/dist/cli/capabilityContext/evidence.js +463 -0
  140. package/dist/cli/capabilityContext/index.js +3 -0
  141. package/dist/cli/capabilityContext/orchestration.js +131 -0
  142. package/dist/cli/capabilityContext/planState.js +260 -0
  143. package/dist/cli/capabilityContext/progress.js +142 -0
  144. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  145. package/dist/cli/capabilityContext/shared.js +83 -0
  146. package/dist/cli/capabilityContext/slim.js +152 -0
  147. package/dist/cli/capabilityContext/startup.js +150 -0
  148. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  149. package/dist/cli/capabilityContext/types.js +56 -0
  150. package/dist/cli/capabilityContext.js +1 -2421
  151. package/dist/cli/commands/appHome.js +22 -0
  152. package/dist/cli/commands/capability.js +5 -12
  153. package/dist/cli/commands/compact.js +41 -13
  154. package/dist/cli/commands/doctor.js +127 -97
  155. package/dist/cli/commands/durability.js +81 -0
  156. package/dist/cli/commands/glossaryAdvice.js +138 -0
  157. package/dist/cli/commands/lint.js +26 -44
  158. package/dist/cli/commands/personalGlossary.js +176 -0
  159. package/dist/cli/commands/prime/briefOrientation.js +747 -0
  160. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  161. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  162. package/dist/cli/commands/prime/collectEntityOrientation.js +311 -0
  163. package/dist/cli/commands/prime/collectOrientationState.js +212 -0
  164. package/dist/cli/commands/prime/orientationOutput.js +397 -0
  165. package/dist/cli/commands/prime/types.js +1 -0
  166. package/dist/cli/commands/prime/v1Migration.js +38 -0
  167. package/dist/cli/commands/prime.js +80 -558
  168. package/dist/cli/commands/profileGrounding.js +55 -0
  169. package/dist/cli/commands/query.js +78 -53
  170. package/dist/cli/commands/report.js +96 -25
  171. package/dist/cli/commands/route.js +142 -0
  172. package/dist/cli/commands/schema.js +266 -143
  173. package/dist/cli/commands/state/decisions.js +387 -0
  174. package/dist/cli/commands/state/docs.js +70 -0
  175. package/dist/cli/commands/state/experimentRecords.js +151 -0
  176. package/dist/cli/commands/state/experiments.js +14 -0
  177. package/dist/cli/commands/state/get.js +129 -0
  178. package/dist/cli/commands/state/health.js +14 -0
  179. package/dist/cli/commands/state/index.js +16 -0
  180. package/dist/cli/commands/state/list.js +194 -0
  181. package/dist/cli/commands/state/objective.js +25 -0
  182. package/dist/cli/commands/state/plan.js +14 -0
  183. package/dist/cli/commands/state/planTasks.js +154 -0
  184. package/dist/cli/commands/state/plans.js +154 -0
  185. package/dist/cli/commands/state/progress.js +13 -0
  186. package/dist/cli/commands/state/shared.js +14 -0
  187. package/dist/cli/commands/state/todo.js +42 -0
  188. package/dist/cli/commands/state/write.js +434 -0
  189. package/dist/cli/commands/upgrade.js +146 -5
  190. package/dist/cli/commands/upgradeVerify.js +118 -0
  191. package/dist/cli/commands/validate.js +272 -213
  192. package/dist/cli/commands/verify.js +24 -9
  193. package/dist/cli/contracts/bundleStatus.js +1 -0
  194. package/dist/cli/contracts/orientationState.js +1 -0
  195. package/dist/cli/dispatch/argvParser.js +32 -0
  196. package/dist/cli/dispatch/check.js +372 -0
  197. package/dist/cli/dispatch/commands.js +27 -0
  198. package/dist/cli/dispatch/index.js +207 -0
  199. package/dist/cli/dispatch/lifecycle.js +652 -0
  200. package/dist/cli/dispatch/prime.js +139 -0
  201. package/dist/cli/dispatch/projections.js +17 -0
  202. package/dist/cli/dispatch/shared.js +63 -0
  203. package/dist/cli/dispatch/state.js +140 -0
  204. package/dist/cli/dispatch.js +1 -996
  205. package/dist/cli/errors.js +52 -0
  206. package/dist/cli/help.js +390 -43
  207. package/dist/cli/migrationRequired.js +87 -0
  208. package/dist/cli/orientation/attention.js +59 -0
  209. package/dist/cli/orientation/corpusCoverage.js +102 -0
  210. package/dist/cli/orientation.js +444 -173
  211. package/dist/cli/planArtifacts.js +350 -0
  212. package/dist/cli/planEvidence.js +157 -0
  213. package/dist/cli/planLifecycleState.js +36 -0
  214. package/dist/cli/planTaskIndex.js +11 -0
  215. package/dist/cli/preCutoverCommand.js +32 -0
  216. package/dist/cli/prime-blob.js +71 -3
  217. package/dist/cli/profileAcquisition.js +167 -0
  218. package/dist/cli/startupCompletenessContract.js +59 -0
  219. package/dist/cli/stateQuery.js +63 -14
  220. package/dist/cli/structured.js +0 -1
  221. package/dist/cli/todoMarkdown.js +46 -0
  222. package/dist/cli/todoReadinessSelection.js +192 -0
  223. package/dist/cli/todoSeverity.js +18 -0
  224. package/dist/core/atomicWriter.js +20 -0
  225. package/dist/core/developmentChannel.js +1 -0
  226. package/dist/core/developmentInvocation.js +374 -0
  227. package/dist/core/difflib.js +0 -1
  228. package/dist/core/envPaths.js +20 -0
  229. package/dist/core/jsonValue.js +5 -0
  230. package/dist/core/paths.js +0 -1
  231. package/dist/core/pyjson.js +67 -3
  232. package/dist/core/shell.js +4 -0
  233. package/dist/core/skillIdentity.js +23 -0
  234. package/dist/core/sourceRoot.js +9 -12
  235. package/dist/core/text.js +10 -0
  236. package/dist/core/toml.js +0 -1
  237. package/dist/core/yaml.js +8 -1
  238. package/dist/eval/evalSkills.js +30 -26
  239. package/dist/eval/hybridRouteEvaluation.js +155 -0
  240. package/dist/eval/semanticEval.js +43 -20
  241. package/dist/eval/semanticFixtures.js +16 -5
  242. package/dist/hooks/common.js +11 -81
  243. package/dist/hooks/compaction/apply.js +446 -0
  244. package/dist/hooks/compaction/dryRun.js +184 -0
  245. package/dist/hooks/compaction/index.js +22 -0
  246. package/dist/hooks/compaction/parse.js +325 -0
  247. package/dist/hooks/compaction/retention.js +202 -0
  248. package/dist/hooks/compaction/status.js +360 -0
  249. package/dist/hooks/compaction/types.js +5 -0
  250. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  251. package/dist/hooks/validateArtifact/index.js +92 -0
  252. package/dist/hooks/validateArtifact/markdown.js +145 -0
  253. package/dist/hooks/validateArtifact/schema.js +546 -0
  254. package/dist/hooks/validateArtifact/traversal.js +107 -0
  255. package/dist/hooks/validateArtifact/violations.js +107 -0
  256. package/dist/migrate/v2HandoffManifest.js +452 -0
  257. package/dist/registries/activationContract.js +2 -0
  258. package/dist/registries/activationTuples.js +106 -0
  259. package/dist/registries/artifactProtocolIds.js +78 -0
  260. package/dist/registries/artifactRegistry.js +224 -63
  261. package/dist/registries/artifactSchemaProjection.js +45 -0
  262. package/dist/registries/capabilityContract.js +141 -13
  263. package/dist/registries/evaluatorHandoffContract.js +170 -0
  264. package/dist/registries/evidenceTierContract.js +371 -0
  265. package/dist/registries/glossaryAdviceContract.js +79 -0
  266. package/dist/registries/glossaryCaveatContract.js +67 -0
  267. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  268. package/dist/registries/glossaryEntryContract.js +757 -0
  269. package/dist/registries/glossaryTermIdentity.js +17 -0
  270. package/dist/registries/glossaryTermOccurrence.js +20 -0
  271. package/dist/registries/hybridRoute.js +274 -0
  272. package/dist/registries/hybridRouteReceipt.js +221 -0
  273. package/dist/registries/packagePublication.js +229 -0
  274. package/dist/registries/packageRegistry.js +187 -211
  275. package/dist/registries/todoReadinessContract.js +448 -0
  276. package/dist/registries/triggerLoader.js +174 -0
  277. package/dist/registries/verbosityBudgetContract.js +205 -0
  278. package/dist/release/releaseMetadata.js +385 -0
  279. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  280. package/dist/runtime/lifecycleAdapters.js +777 -0
  281. package/dist/runtime/lifecycleAuthority.js +453 -0
  282. package/dist/runtime/lifecycleOperationContract.js +123 -0
  283. package/dist/runtime/lifecycleOperations.js +634 -0
  284. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  285. package/dist/runtime/lifecyclePublication.js +415 -0
  286. package/dist/runtime/lifecycleSnapshot.js +438 -0
  287. package/dist/runtime/nativeResourceCleanup.js +502 -0
  288. package/dist/setup/opencode.js +20 -0
  289. package/dist/setup/opencodeConstants.js +1 -0
  290. package/dist/setup/sharedSkill.js +45 -0
  291. package/dist/setup/smokeChecks.js +21 -82
  292. package/dist/state/archiveDiscovery.js +580 -0
  293. package/dist/state/archivePublication.js +225 -0
  294. package/dist/state/archiveRecovery.js +237 -0
  295. package/dist/state/archiveReplay.js +53 -0
  296. package/dist/state/canonicalMigrationRecord.js +36 -0
  297. package/dist/state/changelog.js +221 -0
  298. package/dist/state/decisionEntities.js +367 -0
  299. package/dist/state/decisionLegacyValidation.js +215 -0
  300. package/dist/state/decisionMigrationProvenance.js +199 -0
  301. package/dist/state/decisionOverlay.js +254 -0
  302. package/dist/state/decisionRevision.js +256 -0
  303. package/dist/state/decisionRevisionMigration.js +89 -0
  304. package/dist/state/directRetrieval.js +323 -0
  305. package/dist/state/durability.js +324 -0
  306. package/dist/state/entityCutover.js +459 -0
  307. package/dist/state/entityCutoverGit.js +127 -0
  308. package/dist/state/entityGlossaryAuthority.js +13 -0
  309. package/dist/state/entityListProjection.js +187 -0
  310. package/dist/state/entityListRuntimeRegistry.js +85 -0
  311. package/dist/state/entityMigrationCausality.js +97 -0
  312. package/dist/state/entityMigrationIdentity.js +5 -0
  313. package/dist/state/entityMigrationPreview.js +846 -0
  314. package/dist/state/entityMigrationTodo.js +133 -0
  315. package/dist/state/entityPublicationContext.js +806 -0
  316. package/dist/state/entityRetrievalHelp.js +506 -0
  317. package/dist/state/entityStorage.js +896 -0
  318. package/dist/state/exactReplacementRecovery.js +18 -0
  319. package/dist/state/experimentArchive.js +63 -0
  320. package/dist/state/experimentIdentity.js +202 -0
  321. package/dist/state/healthEntities.js +262 -0
  322. package/dist/state/healthEntityValidation.js +18 -0
  323. package/dist/state/healthRepair.js +69 -0
  324. package/dist/state/installRoot.js +64 -25
  325. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  326. package/dist/state/legacyIdentity.js +47 -0
  327. package/dist/state/legacySummaryRecord.js +6 -0
  328. package/dist/state/listAccounting.js +54 -0
  329. package/dist/state/listClassification.js +17 -0
  330. package/dist/state/listCursor.js +42 -0
  331. package/dist/state/listRetrieval.js +781 -0
  332. package/dist/state/migrationSourceBinding.js +30 -0
  333. package/dist/state/objectiveExperimentEntities.js +322 -0
  334. package/dist/state/planEntities.js +530 -0
  335. package/dist/state/planIdentity.js +47 -0
  336. package/dist/state/planRetrieval.js +313 -0
  337. package/dist/state/planTaskRetrieval.js +294 -0
  338. package/dist/state/progressEntities.js +512 -0
  339. package/dist/state/progressGlossaryCaveat.js +168 -0
  340. package/dist/state/progressPublicationOrder.js +19 -0
  341. package/dist/state/projectRoot.js +62 -0
  342. package/dist/state/projectionPolicy.js +190 -0
  343. package/dist/state/retrievalAuthority.js +156 -0
  344. package/dist/state/safeProjectFile.js +155 -0
  345. package/dist/state/startupAnalysis/benchmark.js +432 -0
  346. package/dist/state/startupAnalysis/contract.js +160 -0
  347. package/dist/state/startupAnalysis/helpers.js +286 -0
  348. package/dist/state/startupAnalysis/index.js +6 -0
  349. package/dist/state/startupAnalysis/metrics.js +340 -0
  350. package/dist/state/startupAnalysis/records.js +198 -0
  351. package/dist/state/startupAnalysis/report.js +111 -0
  352. package/dist/state/startupAnalysis/threshold.js +512 -0
  353. package/dist/state/startupAnalysis.js +2 -1953
  354. package/dist/state/startupProjection.js +499 -0
  355. package/dist/state/stateMode.js +85 -0
  356. package/dist/state/stateStorageAuthority.js +47 -0
  357. package/dist/state/summaryEntityRead.js +25 -0
  358. package/dist/state/summaryMigrationProvenance.js +66 -0
  359. package/dist/state/summarySourceRowAuthority.js +36 -0
  360. package/dist/state/todoDocsEntities.js +1064 -0
  361. package/dist/state/todoDocsEntityValidation.js +158 -0
  362. package/dist/state/todoMarkdownProjection.js +51 -0
  363. package/dist/state/todoReconciliationActivation.js +132 -0
  364. package/dist/state/todoReconciliationInspection.js +173 -0
  365. package/dist/state/todoReconciliationRepair.js +170 -0
  366. package/dist/state/todoReconciliationTransaction.js +582 -0
  367. package/dist/state/write/assign.js +20 -0
  368. package/dist/state/write/candidateMutation.js +269 -0
  369. package/dist/state/write/errors.js +11 -0
  370. package/dist/state/write/experimentPublication.js +192 -0
  371. package/dist/state/write/explain.js +332 -0
  372. package/dist/state/write/fields.js +61 -0
  373. package/dist/state/write/glossaryPublication.js +263 -0
  374. package/dist/state/write/grammar.js +280 -0
  375. package/dist/state/write/helpers.js +29 -0
  376. package/dist/state/write/index.js +12 -0
  377. package/dist/state/write/input.js +367 -0
  378. package/dist/state/write/lock.js +837 -0
  379. package/dist/state/write/mutation.js +234 -0
  380. package/dist/state/write/operations.js +169 -0
  381. package/dist/state/write/planEvaluation.js +128 -0
  382. package/dist/state/write/planPublication.js +179 -0
  383. package/dist/state/write/runtimeOperations.js +142 -0
  384. package/dist/state/write/serialize.js +1 -0
  385. package/dist/state/write/transaction.js +52 -0
  386. package/dist/state/write/validate.js +7 -0
  387. package/dist/upgrade/appContentRefresh.js +383 -0
  388. package/dist/upgrade/appModel.js +8 -7
  389. package/dist/upgrade/atomicWriter.js +1 -0
  390. package/dist/upgrade/bundleEvidence.js +33 -0
  391. package/dist/upgrade/channels.js +12 -8
  392. package/dist/upgrade/compatibility.js +56 -21
  393. package/dist/upgrade/doctor.js +197 -192
  394. package/dist/upgrade/doctorClassifier.js +187 -0
  395. package/dist/upgrade/installedHooksRetirement.js +196 -0
  396. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  397. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  398. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  399. package/dist/upgrade/migrationPublication.js +122 -0
  400. package/dist/upgrade/nextMajorDoctor.js +155 -0
  401. package/dist/upgrade/npxPlatformStatus.js +22 -0
  402. package/dist/upgrade/projectIntegration.js +145 -187
  403. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  404. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  405. package/dist/upgrade/runtimeMigration.js +278 -352
  406. package/dist/upgrade/upgradeCommands.js +14 -1
  407. package/dist/upgrade/upgradeLock.js +85 -0
  408. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  409. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  410. package/dist/upgrade/versionResolution.js +12 -5
  411. package/dist/validate/activationArtifactEvidence.js +844 -0
  412. package/dist/validate/activationConjunction.js +816 -0
  413. package/dist/validate/activationEvidenceManifest.js +515 -0
  414. package/dist/validate/activationPackageSemantics.js +29 -0
  415. package/dist/validate/appHomeContract.js +5 -11
  416. package/dist/validate/bootstrapAuthority.js +44 -0
  417. package/dist/validate/capability.js +144 -15
  418. package/dist/validate/crossCapability.js +15 -10
  419. package/dist/validate/retainedReferenceAuthority.js +879 -0
  420. package/dist/validate/selfAudit.js +73 -37
  421. package/dist/validate/v1LegacyCruft.js +131 -0
  422. package/dist/validate/vocabularyAuthority.js +303 -0
  423. package/package.json +53 -27
  424. package/bundle/references/adapters/cursor.md +0 -213
  425. package/bundle/references/adapters/opencode.md +0 -530
  426. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  427. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  428. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  429. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  430. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  431. package/bundle/references/analysis/benchmark.md +0 -267
  432. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  433. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  434. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  435. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  436. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  437. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  438. package/bundle/references/meta/documentation-inventory.md +0 -43
  439. package/bundle/references/v1-section-mapping.md +0 -47
  440. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  441. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  442. package/bundle/skills/agentera/agents/hej.toml +0 -6
  443. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  444. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  445. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  446. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  447. package/bundle/skills/agentera/agents/planera.toml +0 -6
  448. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  449. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  450. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  451. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  452. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  453. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  454. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  456. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  457. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  458. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  459. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  461. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  462. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  463. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  464. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  465. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  466. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  467. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  468. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
  471. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  472. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  473. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  474. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  475. package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  478. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  479. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  481. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  482. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  483. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  484. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  485. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  486. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  487. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  488. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  489. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  490. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  491. package/bundle/skills/agentera/references/contract.md +0 -1039
  492. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  493. package/bundle/skills/hej/SKILL.md +0 -69
  494. package/bundle/skills/hej/agents/hej.toml +0 -11
  495. package/bundle/skills/hej/agents/openai.yaml +0 -8
  496. package/dist/analytics/extractCorpus.js.map +0 -1
  497. package/dist/analytics/usageStats.js.map +0 -1
  498. package/dist/bin/agentera.js.map +0 -1
  499. package/dist/cli/appContext.js.map +0 -1
  500. package/dist/cli/argvalidate.js.map +0 -1
  501. package/dist/cli/capabilityContext.js.map +0 -1
  502. package/dist/cli/commands/backfill.js +0 -84
  503. package/dist/cli/commands/backfill.js.map +0 -1
  504. package/dist/cli/commands/capability.js.map +0 -1
  505. package/dist/cli/commands/compact.js.map +0 -1
  506. package/dist/cli/commands/doctor.js.map +0 -1
  507. package/dist/cli/commands/lint.js.map +0 -1
  508. package/dist/cli/commands/prime.js.map +0 -1
  509. package/dist/cli/commands/query.js.map +0 -1
  510. package/dist/cli/commands/report.js.map +0 -1
  511. package/dist/cli/commands/schema.js.map +0 -1
  512. package/dist/cli/commands/state.js +0 -1012
  513. package/dist/cli/commands/state.js.map +0 -1
  514. package/dist/cli/commands/upgrade.js.map +0 -1
  515. package/dist/cli/commands/validate.js.map +0 -1
  516. package/dist/cli/commands/verify.js.map +0 -1
  517. package/dist/cli/dispatch.js.map +0 -1
  518. package/dist/cli/help.js.map +0 -1
  519. package/dist/cli/orientation.js.map +0 -1
  520. package/dist/cli/prime-blob.js.map +0 -1
  521. package/dist/cli/stateQuery.js.map +0 -1
  522. package/dist/cli/structured.js.map +0 -1
  523. package/dist/core/difflib.js.map +0 -1
  524. package/dist/core/git.js +0 -43
  525. package/dist/core/git.js.map +0 -1
  526. package/dist/core/paths.js.map +0 -1
  527. package/dist/core/pyjson.js.map +0 -1
  528. package/dist/core/sourceRoot.js.map +0 -1
  529. package/dist/core/toml.js.map +0 -1
  530. package/dist/core/yaml.js.map +0 -1
  531. package/dist/eval/evalSkills.js.map +0 -1
  532. package/dist/eval/semanticEval.js.map +0 -1
  533. package/dist/eval/semanticFixtures.js.map +0 -1
  534. package/dist/hooks/common.js.map +0 -1
  535. package/dist/hooks/compaction.js +0 -935
  536. package/dist/hooks/compaction.js.map +0 -1
  537. package/dist/hooks/cursorPreToolUse.js +0 -19
  538. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  539. package/dist/hooks/cursorSessionStart.js +0 -71
  540. package/dist/hooks/cursorSessionStart.js.map +0 -1
  541. package/dist/hooks/sessionStart.js +0 -209
  542. package/dist/hooks/sessionStart.js.map +0 -1
  543. package/dist/hooks/sessionStop.js +0 -212
  544. package/dist/hooks/sessionStop.js.map +0 -1
  545. package/dist/hooks/validateArtifact.js +0 -933
  546. package/dist/hooks/validateArtifact.js.map +0 -1
  547. package/dist/registries/artifactRegistry.js.map +0 -1
  548. package/dist/registries/capabilityContract.js.map +0 -1
  549. package/dist/registries/packageRegistry.js.map +0 -1
  550. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  551. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  552. package/dist/setup/codex.js +0 -1056
  553. package/dist/setup/codex.js.map +0 -1
  554. package/dist/setup/copilot.js +0 -227
  555. package/dist/setup/copilot.js.map +0 -1
  556. package/dist/setup/cursor.js +0 -127
  557. package/dist/setup/cursor.js.map +0 -1
  558. package/dist/setup/doctor.js +0 -1297
  559. package/dist/setup/doctor.js.map +0 -1
  560. package/dist/setup/smokeChecks.js.map +0 -1
  561. package/dist/state/installRoot.js.map +0 -1
  562. package/dist/state/progressCommit.js +0 -289
  563. package/dist/state/progressCommit.js.map +0 -1
  564. package/dist/state/startupAnalysis.js.map +0 -1
  565. package/dist/upgrade/appModel.js.map +0 -1
  566. package/dist/upgrade/channels.js.map +0 -1
  567. package/dist/upgrade/compatibility.js.map +0 -1
  568. package/dist/upgrade/doctor.js.map +0 -1
  569. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
  570. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  571. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  572. package/dist/upgrade/projectIntegration.js.map +0 -1
  573. package/dist/upgrade/runtimeMigration.js.map +0 -1
  574. package/dist/upgrade/upgradeCommands.js.map +0 -1
  575. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  576. package/dist/upgrade/versionResolution.js.map +0 -1
  577. package/dist/validate/appHomeContract.js.map +0 -1
  578. package/dist/validate/capability.js.map +0 -1
  579. package/dist/validate/crossCapability.js.map +0 -1
  580. package/dist/validate/lifecycleAdapters.js +0 -772
  581. package/dist/validate/lifecycleAdapters.js.map +0 -1
  582. package/dist/validate/selfAudit.js.map +0 -1
  583. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  584. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  585. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -1,32 +1,25 @@
1
1
  # Todo Artifact Schema
2
2
  #
3
- # Open issues and tasks maintained by realisera and inspektera. Severity-ranked
4
- # checklist of work to be done, resolved items, and deferred work.
3
+ # Open issues and tasks maintained by build and audit. Severity-ranked
4
+ # checklist of work to be done, resolved items, and deferred work. New writes
5
+ # use the typed record below; the legacy description form remains readable only
6
+ # through the explicit compatibility boundary used by entity migration.
5
7
  #
6
- # Note: TODO.md is a human-facing Markdown artifact. It remains at the
7
- # project root and is not migrated to YAML. This schema exists for validation
8
- # and CLI discovery consistency.
8
+ # Marker-absent projects retain TODO.md as legacy authority. After durable
9
+ # entity cutover, each item is authoritative in one shared-contract entity
10
+ # file and `agentera state todo list` renders the bounded human-facing view.
9
11
 
10
12
  meta:
11
13
  name: todo
12
14
  version: "1.0.0"
13
15
  description: >-
14
16
  Open issues and tasks. Produced by capabilities that file work or findings.
15
- Human-facing: remains Markdown at project root.
17
+ Human-facing legacy aggregate before cutover; bounded entity view after cutover.
16
18
  artifact_type: human_facing
17
19
  path: "TODO.md"
18
20
  producer:
19
- [
20
- dokumentera,
21
- inspektera,
22
- inspirera,
23
- optimera,
24
- orkestrera,
25
- realisera,
26
- resonera,
27
- visualisera,
28
- ]
29
- consumers: [hej, all_skills]
21
+ [document, audit, research, optimize, orchestrate, build, discuss, design]
22
+ consumers: [status, all_skills]
30
23
  format: markdown
31
24
 
32
25
  GROUP_PREFIXES:
@@ -38,6 +31,7 @@ GROUP_PREFIXES:
38
31
  BUDGET:
39
32
  1:
40
33
  id: TB1
34
+ scope: full_file
41
35
  token_budget: 5000
42
36
  description: >-
43
37
  Maximum tokens for TODO.md content. Exceeding triggers compaction.
@@ -55,13 +49,58 @@ ITEM:
55
49
  - "Must be one of: critical, degraded, normal, annoying"
56
50
  2:
57
51
  id: TI2
58
- field: description
52
+ field: kind
59
53
  type: string
60
54
  required: true
61
55
  description: >-
62
- Brief description of the task or issue.
56
+ Work kind rendered as the public `[kind:target]` marker. It is not
57
+ severity; severity describes immediate impact.
63
58
  3:
64
59
  id: TI3
60
+ field: target_version
61
+ type: string_or_null
62
+ required: true
63
+ clearable: true
64
+ description: >-
65
+ Release target used with release_blocker; stable-cut dependencies need
66
+ not be critical.
67
+ 4:
68
+ id: TI4
69
+ field: title
70
+ type: string
71
+ required: true
72
+ description: Short public TODO title, owned by TODO.md.
73
+ 5:
74
+ id: TI5
75
+ field: requirements
76
+ type: string_list
77
+ required: true
78
+ clearable: true
79
+ description: Typed public requirements; an empty list is an explicit clear.
80
+ 6:
81
+ id: TI6
82
+ field: acceptance
83
+ type: string_list
84
+ required: true
85
+ clearable: true
86
+ description: Typed public acceptance criteria; an empty list is an explicit clear.
87
+ 7:
88
+ id: TI7
89
+ field: release_blocker
90
+ type: boolean
91
+ required: true
92
+ description: Release-gate state. Do not infer it from severity.
93
+ 8:
94
+ id: TI8
95
+ field: description
96
+ type: string
97
+ required: false
98
+ compatibility: legacy_only
99
+ description: >-
100
+ Legacy public prose retained for existing entities. New typed records
101
+ use title and never store the `[kind:target]` marker in prose.
102
+ 9:
103
+ id: TI9
65
104
  field: status
66
105
  type: string
67
106
  required: true
@@ -69,6 +108,219 @@ ITEM:
69
108
  Current status: open or resolved.
70
109
  validation:
71
110
  - "Must be one of: open, resolved"
111
+ 10:
112
+ id: TI10
113
+ field: readiness
114
+ type: mapping
115
+ required: false
116
+ description: >-
117
+ Reviewer-declared state readiness. Absence means needs-triage and MUST
118
+ NOT be interpreted from description prose. When present, the complete
119
+ nested shape is owned by READINESS below.
120
+
121
+ PUBLIC_OWNERSHIP:
122
+ description: >-
123
+ TODO.md owns public kind, target version, title, requirements, acceptance,
124
+ release blocker, severity, checkbox status, and within-severity order.
125
+ Agentera owns readiness, dependencies, gates, evidence, and lifecycle
126
+ transition metadata. A public disagreement is a conflict, never a silent
127
+ winner.
128
+ render: "[kind:target] title"
129
+ severity: >-
130
+ Immediate impact only. Release gating is release_blocker plus target_version;
131
+ a stable-cut dependency does not need critical severity.
132
+
133
+ LIFECYCLE:
134
+ description: >-
135
+ activate is a flag-only reconciliation transition that requires the
136
+ preview effect SHA-256 and explicit confirmation. Item lifecycle transitions
137
+ set-severity, supersede, resolve, and reopen require a reason and date;
138
+ supersede additionally requires a distinct existing replacement ID. These
139
+ operations never accept structured record content or use Markdown
140
+ strikethrough.
141
+ clearable_patch_fields: [target_version, requirements, acceptance, readiness]
142
+ cli_owned_fields: [id, artifact, status, public_order, lifecycle]
143
+ transition_fields: [reason, date, replacement]
144
+
145
+ READINESS:
146
+ schema_version: agentera.todoReadiness.v1
147
+ description: >-
148
+ Single authority for a TODO item's intended destination, eligibility,
149
+ attention, recovery, and ordering semantics. Request routing remains
150
+ separate and open-ended language remains host-owned.
151
+ destination:
152
+ phase_authority: protocol.yaml#PHASES[*].capabilities
153
+ description: >-
154
+ The exact allowed destination set is the union of capabilities in the
155
+ canonical PHASES entries. A capability's containing PHASES entry is its
156
+ phase; TODO does not repeat either list or mapping.
157
+ excluded_capabilities:
158
+ status: >-
159
+ Orientation consumes readiness but is not work a TODO can request.
160
+ orchestrate: >-
161
+ Execution mode selects plan tasks but is not a TODO's work intent.
162
+ fields:
163
+ capability:
164
+ type: string
165
+ required: true
166
+ enum_source: protocol.yaml#PHASES[*].capabilities
167
+ description: Reviewer-approved capability that owns the next action.
168
+ reason:
169
+ type: string
170
+ required: true
171
+ non_empty: true
172
+ description: Durable intent explaining why the destination is correct.
173
+ dependencies:
174
+ type: list
175
+ required: true
176
+ description: >-
177
+ Zero or more TODO prerequisites. Only canonical TODO entity IDs are
178
+ valid; artifact-qualified references make cross-artifact mistakes
179
+ explicit instead of guessing identity.
180
+ entries:
181
+ artifact:
182
+ type: string
183
+ required: true
184
+ const: todo
185
+ id:
186
+ type: string
187
+ required: true
188
+ pattern: "^[a-z]{10}$"
189
+ blocked:
190
+ type: [mapping, "null"]
191
+ required: true
192
+ description: Explicit blocker, or null when no blocker is declared.
193
+ fields:
194
+ reason: {type: string, required: true, non_empty: true}
195
+ recovery: {type: string, required: true, non_empty: true}
196
+ gate:
197
+ type: [mapping, "null"]
198
+ required: true
199
+ description: Explicit external or approval gate, or null when ungated.
200
+ fields:
201
+ state: {type: string, required: true, enum: [pending, satisfied]}
202
+ reason: {type: string, required: true, non_empty: true}
203
+ recovery: {type: string, required: true, non_empty: true}
204
+ queue_rank:
205
+ type: integer
206
+ required: true
207
+ minimum: 1
208
+ description: >-
209
+ Reviewer-assigned durable intent order for nonprojected queues and for
210
+ projected entities intentionally absent from managed Markdown. Managed
211
+ projected rows use Markdown order instead. Lower values run first when
212
+ queue rank applies; the number is priority, not time.
213
+ order_reason:
214
+ type: string
215
+ required: true
216
+ non_empty: true
217
+ description: Durable reason for the queue_rank assignment.
218
+ evaluation:
219
+ precedence:
220
+ - todo_resolved
221
+ - readiness_absent
222
+ - blocked
223
+ - gate_pending
224
+ - dependency_cross_artifact
225
+ - dependency_missing
226
+ - dependency_cycle
227
+ - dependency_open
228
+ - ordering_conflict
229
+ - actionable
230
+ description: >-
231
+ Evaluate once in this order against complete entity state. The first
232
+ matching item result is final; bounded output projection happens afterward.
233
+ ordering_conflict applies only in nonprojected ordering mode.
234
+ outcomes:
235
+ todo_resolved:
236
+ result: resolved
237
+ eligible: false
238
+ attention: none
239
+ recovery: null
240
+ readiness_absent:
241
+ result: needs-triage
242
+ eligible: false
243
+ attention: item
244
+ recovery: Review the item and declare readiness through the typed TODO writer.
245
+ blocked:
246
+ result: blocked
247
+ eligible: false
248
+ attention: item
249
+ recovery: Emit only the declared bounded blocked.recovery action.
250
+ gate_pending:
251
+ result: gated
252
+ eligible: false
253
+ attention: none
254
+ recovery: Emit only the declared bounded gate.recovery action; re-evaluate after the gate is satisfied.
255
+ dependency_cross_artifact:
256
+ result: needs-triage
257
+ eligible: false
258
+ attention: item
259
+ recovery: Replace the reference with a canonical TODO dependency or remove it after review.
260
+ dependency_missing:
261
+ result: needs-triage
262
+ eligible: false
263
+ attention: item
264
+ recovery: Restore the referenced TODO or remove the stale dependency after review.
265
+ dependency_cycle:
266
+ result: needs-triage
267
+ eligible: false
268
+ attention: item
269
+ recovery: Break the cycle by reviewing and updating at least one TODO dependency.
270
+ dependency_open:
271
+ result: waiting
272
+ eligible: false
273
+ attention: none
274
+ recovery: Resolve the canonical TODO dependency, then re-evaluate this item.
275
+ dependency_resolved:
276
+ result: satisfied
277
+ eligible: null
278
+ attention: none
279
+ recovery: null
280
+ ordering_conflict:
281
+ result: needs-triage
282
+ eligible: false
283
+ attention: item
284
+ recovery: Assign distinct queue_rank values to same-severity actionable items after review.
285
+ actionable:
286
+ result: actionable
287
+ eligible: true
288
+ attention: none
289
+ recovery: null
290
+ queue_outcomes:
291
+ mixed_actionable_and_triage:
292
+ selection: highest_ordered_actionable
293
+ attention: bounded_triage_summary
294
+ recovery: Review unannotated or invalid items separately; do not displace actionable work.
295
+ all_non_actionable:
296
+ selection: abstain
297
+ attention: bounded_highest_severity_summary
298
+ recovery: Emit the first matching contract-owned item recovery; never infer plan or build from prose.
299
+ ordering:
300
+ primary: protocol.yaml#SEVERITY_ISSUE
301
+ modes:
302
+ nonprojected:
303
+ within_severity: queue_rank_ascending
304
+ duplicate_rank: ordering_conflict
305
+ prohibited_tiebreakers:
306
+ - entity_id
307
+ - file_order
308
+ - filesystem_time
309
+ - created_or_modified_time
310
+ - description_text
311
+ projected_startup:
312
+ entity_annotation: required_for_every_entity
313
+ eligibility: before_order
314
+ managed_before_absent: true
315
+ managed_within_severity: markdown_order_ascending
316
+ managed_duplicate_rank: ignored
317
+ absent_within_severity: queue_rank_then_id
318
+ absent_duplicate_rank: entity_id_ascending
319
+ description: >-
320
+ Severity remains primary. Nonprojected callers retain reviewed queue-rank
321
+ conflict behavior. Projected startup declares one order annotation for
322
+ every entity, filters operationally ineligible items first, then orders
323
+ managed rows by Markdown and absent rows by queue rank and ID.
72
324
 
73
325
  CONVENTION:
74
326
  1:
@@ -76,16 +328,17 @@ CONVENTION:
76
328
  field: type_tag
77
329
  level: advisory
78
330
  description: >-
79
- Each item should carry a type tag such as [fix], [feat], [chore],
80
- [test], [perf], or [docs] for commit-scope alignment and scan
81
- discoverability.
331
+ Each item should carry a type tag such as [fix], [feat], [refactor],
332
+ [chore], [test], [perf], or [docs] for commit-scope alignment and
333
+ scan discoverability.
82
334
  2:
83
335
  id: TC2
84
336
  field: version_suffix
85
337
  level: advisory
86
338
  description: >-
87
- Feature and fix items should include a version scope like [fix:2.4.x]
88
- or [feat:2.3.x] when the work targets a specific release train.
339
+ Optional train scope in `[type:train]` form, e.g. `[fix:train]`, when
340
+ the work targets a specific release train; most common on feat and fix
341
+ items. Omit the train suffix when the item is not train-scoped.
89
342
  3:
90
343
  id: TC3
91
344
  field: title_format
@@ -95,16 +348,77 @@ CONVENTION:
95
348
  either all plain prose or all "**BoldTitle**: description".
96
349
  4:
97
350
  id: TC4
98
- field: resolved_summary
351
+ field: resolved_checkbox
99
352
  level: advisory
100
353
  description: >-
101
- Resolved items should end with resolved by ..." to distinguish
102
- completed work from open or deferred items at a glance.
354
+ Resolved items should use a checked GitHub task-list checkbox
355
+ (`- [x]`) before the task text. Open items use `- [ ]`. The
356
+ checkbox state is the canonical completion marker; do not wrap
357
+ resolved text in Markdown strikethrough.
103
358
  5:
104
359
  id: TC5
105
- field: resolved_strikethrough
360
+ field: severity_band_policy
361
+ level: required
362
+ description: >-
363
+ Severity band policy: all four severity bands (⇶ Critical, ⇉
364
+ Degraded, → Normal, ⇢ Annoying) may be header-only when they
365
+ have no open work. Open items use `- [ ]` only. Resolved items
366
+ must not appear in severity bands (see TC6). Executable checks
367
+ live in packages/cli/src/hooks/validateArtifact/markdown.ts
368
+ `validateMdItems` and packages/cli/src/hooks/compaction/parse.ts.
369
+ 6:
370
+ id: TC6
371
+ field: resolved_section_placement
372
+ level: required
373
+ description: >-
374
+ Resolved ledger policy: completed items live only under
375
+ `## ✓ Resolved` as `- [x] [type:train]` checkboxes. Severity
376
+ bands must not contain `- [x]` or legacy `~~` strikethrough
377
+ resolved rows. The compaction gate counts every resolved row
378
+ (including mis-placed rows until migrated) against the uniform
379
+ 10/40/50 retention cap. `compact --mode fix` migrates mis-placed
380
+ rows into `## ✓ Resolved` before applying retention.
381
+ 7:
382
+ id: TC7
383
+ field: resolved_line_provenance
106
384
  level: advisory
107
385
  description: >-
108
- Resolved items should wrap the original task text in Markdown
109
- strikethrough (~~text~~) before the resolution summary, keeping
110
- the original intent readable while visually marking it closed.
386
+ Resolved provenance uses `resolved YYYY-MM-DD` or `resolved @
387
+ <semver>` after the item description. Do not use `resolved on
388
+ feat/v3 @ <hash>` or dual-branch hash reconciliation; git history
389
+ is the archaeology source. Fold the Resolved move into the
390
+ implementation commit — no follow-up hash-backfill commit.
391
+ 8:
392
+ id: TC8
393
+ field: single_resolved_section
394
+ level: required
395
+ description: >-
396
+ Exactly one `## ✓ Resolved` section is permitted. Two or more
397
+ `## ✓ Resolved` sections hide the trailing entries from parsing
398
+ (which processes only the first) and from the compaction budget
399
+ gate. Validation (`validateTodoResolvedPlacement`) and compaction
400
+ (status + apply) refuse with an actionable diagnostic when more
401
+ than one is present; merge the duplicates into a single section
402
+ before compacting. See TC6 for placement and TC9 for recovery.
403
+ 9:
404
+ id: TC9
405
+ field: bounded_queue_not_lossless_archive
406
+ level: required
407
+ description: >-
408
+ TODO.md is a bounded human-facing queue, not a lossless numbered
409
+ archive. It is excluded from the lossless numbered-archive model
410
+ that governs progress, decisions, and health (those preserve
411
+ verified numbered archives; TODO does not). Older resolved
412
+ entries and their detail bodies may be summarized to one-line or
413
+ removed entirely to stay within the 10/40/50 retention cap;
414
+ removal is destructive in the working tree. The first ten
415
+ resolved rows are the recent/full-detail tier even when they have
416
+ no indented body; rows 11 through 50 are the summary tier; rows
417
+ beyond 50 are dropped. Git history is the designated archaeology
418
+ source for dropped resolved entries, and only for previously
419
+ committed content: inspect prior versions with
420
+ `git log -p -- :/TODO.md` (the `:/` pathspec is project-root-safe
421
+ regardless of the current working directory). Non-Git projects
422
+ have no historical recovery for dropped entries. Compaction
423
+ diagnostics MUST report removed entries as `dropped` and MUST NOT
424
+ describe TODO compaction as a lossless projection.
@@ -35,13 +35,13 @@ meta:
35
35
  name: vision
36
36
  version: "1.0.0"
37
37
  description: >-
38
- Project vision. Produced by visionera and direction-shaping capabilities.
38
+ Project vision. Produced by vision and direction-shaping capabilities.
39
39
  Consumed by capabilities that need strategic alignment. No compaction:
40
40
  vision is not a growing artifact.
41
41
  artifact_type: agent_facing
42
42
  path: ".agentera/vision.yaml"
43
- producer: [inspirera, realisera, resonera, visionera]
44
- consumers: [dokumentera, hej, inspektera, orkestrera, planera, realisera, resonera, visionera, visualisera]
43
+ producer: [research, build, discuss, vision]
44
+ consumers: [document, status, audit, orchestrate, plan, build, discuss, vision, design]
45
45
  format: yaml
46
46
 
47
47
  GROUP_PREFIXES:
@@ -0,0 +1,190 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { defaultOutputPath, } from "./core.js";
4
+ import { defaultTiersDir, publishEvidenceTiers } from "./evidenceTiers.js";
5
+ import { buildCorpus } from "./corpus.js";
6
+ import { COVERAGE_EXIT_FLAGGED, corpusEnvelopeCoverage, formatCoverageSummaryText, runCoverageAudit, } from "./coverageAudit.js";
7
+ import { formatTruncationWarnings, resolveSqliteCaps } from "./sqliteCaps.js";
8
+ import { resolveCopilotStorePath, resolveCursorChatsPath, resolveCursorProjectsPath, resolveOpencodeDbPath, } from "./cursorSessions.js";
9
+ export function parseExtractArgs(argv, env = process.env, platform = process.platform) {
10
+ const home = env.HOME || (platform === "win32" ? env.USERPROFILE : undefined) || os.homedir();
11
+ const args = {
12
+ output: defaultOutputPath(env, platform),
13
+ tierOutput: null,
14
+ projectRoot: [],
15
+ codexSessionsDir: path.join(home, ".codex", "sessions"),
16
+ claudeProjectsDir: path.join(home, ".claude", "projects"),
17
+ opencodeConversationsDir: null,
18
+ copilotConversationsDir: null,
19
+ cursorProjectsDir: null,
20
+ cursorChatsDir: null,
21
+ noCodex: false,
22
+ importSources: [],
23
+ noOpencode: false,
24
+ noCopilot: false,
25
+ noCursor: false,
26
+ acceptCoverageGap: false,
27
+ coverageAuditOnly: false,
28
+ format: "text",
29
+ };
30
+ let claudeProjectsDirExplicit = false;
31
+ for (let i = 0; i < argv.length; i++) {
32
+ const a = argv[i];
33
+ const val = (name) => {
34
+ if (a === name)
35
+ return argv[++i] ?? null;
36
+ if (a.startsWith(name + "="))
37
+ return a.slice(name.length + 1);
38
+ return null;
39
+ };
40
+ let v;
41
+ // `--output` is a deprecated no-op for back-compat: it targeted the
42
+ // eliminated monolithic corpus.json write. Refresh now publishes bounded
43
+ // tiers via `--tier-output` (default: `defaultTiersDir`). `--output` is
44
+ // accepted to keep older callers from hard-crashing but has no effect.
45
+ if ((v = val("--output")) !== null)
46
+ args.output = v;
47
+ else if ((v = val("--tier-output")) !== null)
48
+ args.tierOutput = v;
49
+ else if ((v = val("--project-root")) !== null)
50
+ args.projectRoot.push(v);
51
+ else if ((v = val("--codex-sessions-dir")) !== null)
52
+ args.codexSessionsDir = v;
53
+ else if ((v = val("--claude-projects-dir")) !== null) {
54
+ args.claudeProjectsDir = v;
55
+ claudeProjectsDirExplicit = true;
56
+ }
57
+ else if ((v = val("--import-source")) !== null) {
58
+ if (v !== "claude")
59
+ throw new Error(`extract-corpus: unsupported historical import source '${v}'; valid source: claude`);
60
+ if (!args.importSources.includes(v))
61
+ args.importSources.push(v);
62
+ }
63
+ else if ((v = val("--opencode-conversations-dir")) !== null)
64
+ args.opencodeConversationsDir = v;
65
+ else if ((v = val("--copilot-conversations-dir")) !== null)
66
+ args.copilotConversationsDir = v;
67
+ else if ((v = val("--cursor-projects-dir")) !== null)
68
+ args.cursorProjectsDir = v;
69
+ else if ((v = val("--cursor-chats-dir")) !== null)
70
+ args.cursorChatsDir = v;
71
+ else if (a === "--no-codex")
72
+ args.noCodex = true;
73
+ else if (a === "--no-opencode")
74
+ args.noOpencode = true;
75
+ else if (a === "--no-copilot")
76
+ args.noCopilot = true;
77
+ else if (a === "--no-cursor")
78
+ args.noCursor = true;
79
+ else if (a === "--accept-coverage-gap")
80
+ args.acceptCoverageGap = true;
81
+ else if (a === "--coverage-audit-only")
82
+ args.coverageAuditOnly = true;
83
+ else if ((v = val("--max-sqlite-sessions")) !== null) {
84
+ args.maxSqliteSessions = Number.parseInt(v, 10);
85
+ if (!Number.isFinite(args.maxSqliteSessions) || args.maxSqliteSessions < 1) {
86
+ throw new Error(`extract-corpus: invalid --max-sqlite-sessions: ${v}`);
87
+ }
88
+ }
89
+ else if ((v = val("--max-sqlite-rows")) !== null) {
90
+ args.maxSqliteRows = Number.parseInt(v, 10);
91
+ if (!Number.isFinite(args.maxSqliteRows) || args.maxSqliteRows < 1) {
92
+ throw new Error(`extract-corpus: invalid --max-sqlite-rows: ${v}`);
93
+ }
94
+ }
95
+ else if ((v = val("--format")) !== null) {
96
+ if (v !== "text" && v !== "json")
97
+ throw new Error(`extract-corpus: unsupported format '${v}'`);
98
+ args.format = v;
99
+ }
100
+ else
101
+ throw new Error(`extract-corpus: unrecognized argument: ${a}`);
102
+ }
103
+ if (claudeProjectsDirExplicit && !args.importSources.includes("claude")) {
104
+ throw new Error("extract-corpus: --claude-projects-dir requires explicit --import-source claude");
105
+ }
106
+ return args;
107
+ }
108
+ /** Engine entry point mirroring scripts/extract_corpus.py main(). */
109
+ export function extractCorpusMain(argv, io = {}) {
110
+ const out = io.out ?? ((t) => process.stdout.write(t + "\n"));
111
+ const err = io.err ?? ((t) => process.stderr.write(t + "\n"));
112
+ const env = io.env ?? process.env;
113
+ const platform = io.platform ?? process.platform;
114
+ const cwd = io.cwd ?? process.cwd();
115
+ let args;
116
+ try {
117
+ args = parseExtractArgs(argv, env, platform);
118
+ }
119
+ catch (exc) {
120
+ err(exc.message);
121
+ return 2;
122
+ }
123
+ const projectRoots = args.projectRoot.length > 0 ? args.projectRoot : [cwd];
124
+ if (args.importSources.includes("claude")) {
125
+ err("Historical import warning: Claude transcripts can contain secrets, file contents, and command output. " +
126
+ "Import is local and read-only; records are labeled historical_import and excluded from active-runtime analytics.");
127
+ }
128
+ const audit = runCoverageAudit(args, env, platform, args.acceptCoverageGap);
129
+ if (args.format === "json") {
130
+ out(JSON.stringify({ coverage_audit: audit }, null, 2));
131
+ }
132
+ else {
133
+ out(formatCoverageSummaryText(audit));
134
+ }
135
+ if (audit.coverage_gap_flagged) {
136
+ err("coverage gap flagged (EX2): available runtime(s) skipped; pass --accept-coverage-gap to proceed");
137
+ return COVERAGE_EXIT_FLAGGED;
138
+ }
139
+ if (args.coverageAuditOnly)
140
+ return 0;
141
+ const sqliteCaps = resolveSqliteCaps(env, {
142
+ maxSessions: args.maxSqliteSessions,
143
+ maxRows: args.maxSqliteRows,
144
+ });
145
+ const skipCursor = args.noCursor;
146
+ const corpus = buildCorpus({
147
+ projectRoots,
148
+ codexSessionsDir: args.noCodex ? null : args.codexSessionsDir,
149
+ claudeProjectsDir: args.importSources.includes("claude") ? args.claudeProjectsDir : null,
150
+ opencodeConversationsDir: args.noOpencode ? null : args.opencodeConversationsDir || resolveOpencodeDbPath(env),
151
+ copilotConversationsDir: args.noCopilot ? null : args.copilotConversationsDir || resolveCopilotStorePath(env),
152
+ cursorProjectsDir: skipCursor ? null : args.cursorProjectsDir || resolveCursorProjectsPath(env),
153
+ cursorChatsDir: skipCursor ? null : args.cursorChatsDir || resolveCursorChatsPath(env),
154
+ coverage: corpusEnvelopeCoverage(audit),
155
+ sqliteCaps,
156
+ });
157
+ const truncationWarning = formatTruncationWarnings(corpus.metadata.runtime_statuses);
158
+ if (truncationWarning)
159
+ err(truncationWarning);
160
+ const total = corpus.metadata.total_records;
161
+ const familyBits = Object.entries(corpus.metadata.families)
162
+ .map(([name, summary]) => `${name}=${summary.count}`)
163
+ .join(", ");
164
+ // Publish bounded evidence tiers as the canonical bounded publication output.
165
+ // The monolithic corpus envelope write is eliminated: all bounded consumers
166
+ // (usage, report, prime coverage, startup analysis, profile synthesis) read
167
+ // the signal tier and full-evidence shards directly. Legacy monolithic state
168
+ // receives deterministic refresh guidance rather than read compatibility.
169
+ const tiersDir = args.tierOutput ?? defaultTiersDir(env, platform);
170
+ const publication = publishEvidenceTiers(corpus.records, {
171
+ tiersDir,
172
+ adapterVersion: corpus.metadata.adapter_version,
173
+ runtimeStatuses: corpus.metadata.runtime_statuses,
174
+ env,
175
+ platform,
176
+ corpusMetadata: {
177
+ extracted_at: corpus.metadata.extracted_at,
178
+ runtime_statuses: corpus.metadata.runtime_statuses,
179
+ coverage_envelope: {
180
+ available_runtimes: corpus.metadata.available_runtimes,
181
+ selected_runtimes: corpus.metadata.selected_runtimes,
182
+ available_but_not_selected: corpus.metadata.available_but_not_selected,
183
+ },
184
+ },
185
+ });
186
+ out(`published tiers: ${tiersDir} (generation ${publication.generation}; ` +
187
+ `${publication.shard_count} shards; ${publication.signal_count} signals; ` +
188
+ `${publication.signal_bytes} bytes${publication.signal_selection.capped ? "; selection applied" : ""}) [${total} records; ${familyBits}]`);
189
+ return 0;
190
+ }