agentera 3.0.0-dev.7 → 3.0.0-dev.72

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 (723) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -22
  3. package/bundle/CHANGELOG.md +1361 -0
  4. package/bundle/DESIGN.md +229 -0
  5. package/bundle/LICENSE +201 -0
  6. package/bundle/README.md +143 -0
  7. package/bundle/UPGRADE.md +252 -0
  8. package/bundle/extract-corpus-parity.json +2 -4
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +488 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -188
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -34
  13. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  14. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  15. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  16. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  17. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  18. package/bundle/references/analysis/verification-policy.yaml +266 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  24. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  25. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  26. package/bundle/references/cli/routing-model.md +152 -93
  27. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  28. package/bundle/references/cli/update-channels.yaml +4 -2
  29. package/bundle/references/cli/vocabulary-index.yaml +5 -7
  30. package/bundle/references/cli/vocabulary.md +51 -93
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/skills/agentera/SKILL.md +183 -63
  33. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  34. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  35. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  36. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  37. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  38. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  39. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  40. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  41. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  42. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  43. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  44. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  45. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  49. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  50. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  51. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  52. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  53. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  54. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  56. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  60. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  61. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  62. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  63. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +9 -4
  64. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +4 -4
  65. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  66. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +61 -3
  67. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  68. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  69. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  70. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  71. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  72. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  73. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  74. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  75. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  76. package/bundle/skills/agentera/protocol.yaml +4 -4
  77. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  78. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  79. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
  80. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  81. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
  82. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
  83. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  84. package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
  85. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  86. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +457 -32
  87. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
  88. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
  89. package/dist/analytics/extractCorpus/cli.js +52 -11
  90. package/dist/analytics/extractCorpus/copilotSessions.js +6 -4
  91. package/dist/analytics/extractCorpus/core.js +40 -12
  92. package/dist/analytics/extractCorpus/corpus.js +39 -17
  93. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  94. package/dist/analytics/extractCorpus/cursorSessions.js +6 -4
  95. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  96. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  97. package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
  98. package/dist/analytics/extractCorpus/index.js +3 -1
  99. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
  100. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  101. package/dist/analytics/extractCorpus/sqliteSessions.js +0 -1
  102. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  103. package/dist/analytics/extractCorpus.js +0 -1
  104. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  105. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  106. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  107. package/dist/analytics/personalGlossaryProfile.js +219 -0
  108. package/dist/analytics/profileSignals.js +211 -0
  109. package/dist/analytics/usageStats.js +150 -23
  110. package/dist/audit/terminologyDrift.js +281 -0
  111. package/dist/bin/agentera.js +3 -2
  112. package/dist/capabilities/audit/instructions.js +16 -6
  113. package/dist/capabilities/build/instructions.js +59 -6
  114. package/dist/capabilities/design/instructions.js +3 -4
  115. package/dist/capabilities/discuss/instructions.js +29 -6
  116. package/dist/capabilities/document/instructions.js +11 -6
  117. package/dist/capabilities/index.js +16 -14
  118. package/dist/capabilities/optimize/instructions.js +14 -6
  119. package/dist/capabilities/orchestrate/instructions.js +42 -6
  120. package/dist/capabilities/plan/instructions.js +30 -3
  121. package/dist/capabilities/profile/instructions.js +70 -6
  122. package/dist/capabilities/research/instructions.js +4 -5
  123. package/dist/capabilities/status/instructions.js +15 -6
  124. package/dist/capabilities/status/startupInstructions.js +34 -0
  125. package/dist/capabilities/vision/instructions.js +3 -5
  126. package/dist/cli/appContext.js +14 -7
  127. package/dist/cli/argvalidate.js +0 -1
  128. package/dist/cli/capabilityContext/benchmark.js +5 -4
  129. package/dist/cli/capabilityContext/bespoke.js +14 -6
  130. package/dist/cli/capabilityContext/build.js +116 -42
  131. package/dist/cli/capabilityContext/closeout.js +30 -27
  132. package/dist/cli/capabilityContext/contract.js +18 -27
  133. package/dist/cli/capabilityContext/evidence.js +84 -77
  134. package/dist/cli/capabilityContext/index.js +0 -1
  135. package/dist/cli/capabilityContext/orchestration.js +42 -18
  136. package/dist/cli/capabilityContext/planState.js +89 -96
  137. package/dist/cli/capabilityContext/progress.js +51 -12
  138. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  139. package/dist/cli/capabilityContext/shared.js +9 -20
  140. package/dist/cli/capabilityContext/slim.js +52 -8
  141. package/dist/cli/capabilityContext/startup.js +51 -114
  142. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  143. package/dist/cli/capabilityContext/types.js +26 -10
  144. package/dist/cli/capabilityContext.js +0 -1
  145. package/dist/cli/commands/appHome.js +0 -1
  146. package/dist/cli/commands/capability.js +2 -2
  147. package/dist/cli/commands/compact.js +163 -13
  148. package/dist/cli/commands/doctor.js +117 -11
  149. package/dist/cli/commands/durability.js +81 -0
  150. package/dist/cli/commands/glossaryAdvice.js +138 -0
  151. package/dist/cli/commands/lint.js +22 -8
  152. package/dist/cli/commands/personalGlossary.js +176 -0
  153. package/dist/cli/commands/prime/briefOrientation.js +746 -0
  154. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  155. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  156. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  157. package/dist/cli/commands/prime/collectOrientationState.js +126 -63
  158. package/dist/cli/commands/prime/orientationOutput.js +267 -56
  159. package/dist/cli/commands/prime/types.js +0 -1
  160. package/dist/cli/commands/prime/v1Migration.js +0 -1
  161. package/dist/cli/commands/prime.js +76 -11
  162. package/dist/cli/commands/profileGrounding.js +55 -0
  163. package/dist/cli/commands/query.js +74 -52
  164. package/dist/cli/commands/report.js +73 -19
  165. package/dist/cli/commands/route.js +142 -0
  166. package/dist/cli/commands/schema.js +257 -138
  167. package/dist/cli/commands/state/decisions.js +40 -56
  168. package/dist/cli/commands/state/docs.js +58 -85
  169. package/dist/cli/commands/state/experimentRecords.js +151 -0
  170. package/dist/cli/commands/state/experiments.js +11 -65
  171. package/dist/cli/commands/state/get.js +129 -0
  172. package/dist/cli/commands/state/health.js +11 -113
  173. package/dist/cli/commands/state/index.js +6 -41
  174. package/dist/cli/commands/state/list.js +194 -0
  175. package/dist/cli/commands/state/objective.js +21 -65
  176. package/dist/cli/commands/state/plan.js +11 -170
  177. package/dist/cli/commands/state/planTasks.js +154 -0
  178. package/dist/cli/commands/state/plans.js +154 -0
  179. package/dist/cli/commands/state/progress.js +11 -45
  180. package/dist/cli/commands/state/shared.js +0 -1
  181. package/dist/cli/commands/state/todo.js +28 -107
  182. package/dist/cli/commands/state/write.js +433 -0
  183. package/dist/cli/commands/upgrade.js +146 -5
  184. package/dist/cli/commands/upgradeVerify.js +118 -0
  185. package/dist/cli/commands/validate.js +235 -136
  186. package/dist/cli/commands/verify.js +23 -8
  187. package/dist/cli/contracts/bundleStatus.js +0 -1
  188. package/dist/cli/contracts/orientationState.js +0 -1
  189. package/dist/cli/dispatch/argvParser.js +0 -1
  190. package/dist/cli/dispatch/check.js +84 -40
  191. package/dist/cli/dispatch/commands.js +3 -3
  192. package/dist/cli/dispatch/index.js +77 -52
  193. package/dist/cli/dispatch/lifecycle.js +117 -62
  194. package/dist/cli/dispatch/prime.js +37 -2
  195. package/dist/cli/dispatch/projections.js +17 -0
  196. package/dist/cli/dispatch/shared.js +1 -2
  197. package/dist/cli/dispatch/state.js +62 -66
  198. package/dist/cli/dispatch.js +0 -1
  199. package/dist/cli/errors.js +16 -17
  200. package/dist/cli/help.js +358 -39
  201. package/dist/cli/migrationRequired.js +122 -0
  202. package/dist/cli/orientation/attention.js +19 -19
  203. package/dist/cli/orientation/corpusCoverage.js +32 -1
  204. package/dist/cli/orientation.js +346 -129
  205. package/dist/cli/planArtifacts.js +350 -0
  206. package/dist/cli/planEvidence.js +157 -0
  207. package/dist/cli/planLifecycleState.js +36 -0
  208. package/dist/cli/planTaskIndex.js +11 -0
  209. package/dist/cli/preCutoverCommand.js +32 -0
  210. package/dist/cli/prime-blob.js +71 -3
  211. package/dist/cli/profileAcquisition.js +167 -0
  212. package/dist/cli/startupCompletenessContract.js +11 -8
  213. package/dist/cli/stateQuery.js +47 -12
  214. package/dist/cli/structured.js +0 -1
  215. package/dist/cli/todoMarkdown.js +25 -12
  216. package/dist/cli/todoReadinessSelection.js +192 -0
  217. package/dist/cli/todoSeverity.js +0 -1
  218. package/dist/core/atomicWriter.js +20 -0
  219. package/dist/core/developmentChannel.js +1 -0
  220. package/dist/core/developmentInvocation.js +374 -0
  221. package/dist/core/difflib.js +0 -1
  222. package/dist/core/envPaths.js +0 -1
  223. package/dist/core/jsonValue.js +0 -1
  224. package/dist/core/paths.js +0 -1
  225. package/dist/core/pyjson.js +0 -1
  226. package/dist/core/shell.js +4 -0
  227. package/dist/core/skillIdentity.js +23 -0
  228. package/dist/core/sourceRoot.js +9 -12
  229. package/dist/core/text.js +10 -0
  230. package/dist/core/toml.js +0 -1
  231. package/dist/core/yaml.js +8 -1
  232. package/dist/eval/evalSkills.js +13 -14
  233. package/dist/eval/hybridRouteEvaluation.js +155 -0
  234. package/dist/eval/semanticEval.js +0 -1
  235. package/dist/eval/semanticFixtures.js +0 -1
  236. package/dist/hooks/common.js +3 -56
  237. package/dist/hooks/compaction/apply.js +224 -47
  238. package/dist/hooks/compaction/dryRun.js +2 -1
  239. package/dist/hooks/compaction/index.js +5 -6
  240. package/dist/hooks/compaction/parse.js +73 -6
  241. package/dist/hooks/compaction/retention.js +28 -25
  242. package/dist/hooks/compaction/status.js +145 -26
  243. package/dist/hooks/compaction/types.js +0 -1
  244. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  245. package/dist/hooks/validateArtifact/index.js +6 -65
  246. package/dist/hooks/validateArtifact/markdown.js +9 -10
  247. package/dist/hooks/validateArtifact/schema.js +96 -9
  248. package/dist/hooks/validateArtifact/traversal.js +12 -11
  249. package/dist/hooks/validateArtifact/violations.js +5 -3
  250. package/dist/migrate/v2HandoffManifest.js +8 -3
  251. package/dist/registries/activationContract.js +2 -0
  252. package/dist/registries/activationTuples.js +108 -0
  253. package/dist/registries/artifactProtocolIds.js +2 -1
  254. package/dist/registries/artifactRegistry.js +207 -60
  255. package/dist/registries/artifactSchemaProjection.js +45 -0
  256. package/dist/registries/capabilityContract.js +5 -21
  257. package/dist/registries/evaluatorHandoffContract.js +0 -1
  258. package/dist/registries/evidenceTierContract.js +371 -0
  259. package/dist/registries/glossaryAdviceContract.js +79 -0
  260. package/dist/registries/glossaryCaveatContract.js +67 -0
  261. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  262. package/dist/registries/glossaryEntryContract.js +757 -0
  263. package/dist/registries/glossaryTermIdentity.js +17 -0
  264. package/dist/registries/glossaryTermOccurrence.js +20 -0
  265. package/dist/registries/hybridRoute.js +274 -0
  266. package/dist/registries/hybridRouteReceipt.js +221 -0
  267. package/dist/registries/packagePublication.js +273 -0
  268. package/dist/registries/packageRegistry.js +184 -209
  269. package/dist/registries/todoReadinessContract.js +448 -0
  270. package/dist/registries/triggerLoader.js +7 -44
  271. package/dist/registries/verbosityBudgetContract.js +205 -0
  272. package/dist/release/releaseMetadata.js +155 -5
  273. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  274. package/dist/runtime/lifecycleAdapters.js +777 -0
  275. package/dist/runtime/lifecycleAuthority.js +453 -0
  276. package/dist/runtime/lifecycleOperationContract.js +123 -0
  277. package/dist/runtime/lifecycleOperations.js +634 -0
  278. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  279. package/dist/runtime/lifecyclePublication.js +415 -0
  280. package/dist/runtime/lifecycleSnapshot.js +438 -0
  281. package/dist/runtime/nativeResourceCleanup.js +502 -0
  282. package/dist/setup/opencode.js +20 -13
  283. package/dist/setup/opencodeConstants.js +1 -0
  284. package/dist/setup/sharedSkill.js +45 -0
  285. package/dist/setup/smokeChecks.js +14 -75
  286. package/dist/state/archiveDiscovery.js +580 -0
  287. package/dist/state/archivePublication.js +225 -0
  288. package/dist/state/archiveRecovery.js +237 -0
  289. package/dist/state/archiveReplay.js +53 -0
  290. package/dist/state/canonicalMigrationRecord.js +36 -0
  291. package/dist/state/changelog.js +221 -0
  292. package/dist/state/decisionEntities.js +367 -0
  293. package/dist/state/decisionLegacyValidation.js +215 -0
  294. package/dist/state/decisionMigrationProvenance.js +199 -0
  295. package/dist/state/decisionOverlay.js +254 -0
  296. package/dist/state/decisionRevision.js +256 -0
  297. package/dist/state/decisionRevisionMigration.js +89 -0
  298. package/dist/state/directRetrieval.js +323 -0
  299. package/dist/state/durability.js +324 -0
  300. package/dist/state/entityCutover.js +459 -0
  301. package/dist/state/entityCutoverGit.js +127 -0
  302. package/dist/state/entityGlossaryAuthority.js +13 -0
  303. package/dist/state/entityListProjection.js +187 -0
  304. package/dist/state/entityListRuntimeRegistry.js +85 -0
  305. package/dist/state/entityMigrationCausality.js +97 -0
  306. package/dist/state/entityMigrationIdentity.js +5 -0
  307. package/dist/state/entityMigrationPreview.js +840 -0
  308. package/dist/state/entityMigrationTodo.js +133 -0
  309. package/dist/state/entityPublicationContext.js +859 -0
  310. package/dist/state/entityRetrievalHelp.js +506 -0
  311. package/dist/state/entityStorage.js +899 -0
  312. package/dist/state/exactReplacementRecovery.js +18 -0
  313. package/dist/state/experimentArchive.js +63 -0
  314. package/dist/state/experimentIdentity.js +202 -0
  315. package/dist/state/healthEntities.js +262 -0
  316. package/dist/state/healthEntityValidation.js +18 -0
  317. package/dist/state/healthRepair.js +69 -0
  318. package/dist/state/installRoot.js +15 -7
  319. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  320. package/dist/state/legacyIdentity.js +47 -0
  321. package/dist/state/legacySummaryRecord.js +6 -0
  322. package/dist/state/listAccounting.js +54 -0
  323. package/dist/state/listClassification.js +17 -0
  324. package/dist/state/listCursor.js +42 -0
  325. package/dist/state/listRetrieval.js +781 -0
  326. package/dist/state/migrationSourceBinding.js +30 -0
  327. package/dist/state/objectiveExperimentEntities.js +322 -0
  328. package/dist/state/planEntities.js +1027 -0
  329. package/dist/state/planIdentity.js +47 -0
  330. package/dist/state/planLineageValidation.js +52 -0
  331. package/dist/state/planReplacementTransaction.js +475 -0
  332. package/dist/state/planRetrieval.js +313 -0
  333. package/dist/state/planTaskRetrieval.js +294 -0
  334. package/dist/state/progressEntities.js +512 -0
  335. package/dist/state/progressGlossaryCaveat.js +168 -0
  336. package/dist/state/progressPublicationOrder.js +19 -0
  337. package/dist/state/progressWritePolicy.js +33 -0
  338. package/dist/state/projectRoot.js +62 -0
  339. package/dist/state/projectionPolicy.js +190 -0
  340. package/dist/state/retrievalAuthority.js +156 -0
  341. package/dist/state/safeProjectFile.js +155 -0
  342. package/dist/state/startupAnalysis/benchmark.js +70 -9
  343. package/dist/state/startupAnalysis/contract.js +44 -10
  344. package/dist/state/startupAnalysis/helpers.js +1 -2
  345. package/dist/state/startupAnalysis/index.js +0 -1
  346. package/dist/state/startupAnalysis/metrics.js +0 -1
  347. package/dist/state/startupAnalysis/records.js +0 -1
  348. package/dist/state/startupAnalysis/report.js +0 -1
  349. package/dist/state/startupAnalysis/threshold.js +13 -1
  350. package/dist/state/startupAnalysis.js +0 -1
  351. package/dist/state/startupProjection.js +499 -0
  352. package/dist/state/stateMode.js +222 -0
  353. package/dist/state/stateStorageAuthority.js +47 -0
  354. package/dist/state/summaryEntityRead.js +25 -0
  355. package/dist/state/summaryMigrationProvenance.js +66 -0
  356. package/dist/state/summarySourceRowAuthority.js +36 -0
  357. package/dist/state/todoActivationSafety.js +58 -0
  358. package/dist/state/todoDocsEntities.js +1124 -0
  359. package/dist/state/todoDocsEntityValidation.js +158 -0
  360. package/dist/state/todoMarkdownProjection.js +51 -0
  361. package/dist/state/todoReconciliationActivation.js +182 -0
  362. package/dist/state/todoReconciliationInspection.js +171 -0
  363. package/dist/state/todoReconciliationRepair.js +318 -0
  364. package/dist/state/todoReconciliationTransaction.js +595 -0
  365. package/dist/state/write/assign.js +20 -0
  366. package/dist/state/write/candidateMutation.js +269 -0
  367. package/dist/state/write/errors.js +11 -0
  368. package/dist/state/write/experimentPublication.js +192 -0
  369. package/dist/state/write/explain.js +377 -0
  370. package/dist/state/write/fields.js +61 -0
  371. package/dist/state/write/glossaryPublication.js +263 -0
  372. package/dist/state/write/grammar.js +285 -0
  373. package/dist/state/write/helpers.js +29 -0
  374. package/dist/state/write/index.js +12 -0
  375. package/dist/state/write/input.js +391 -0
  376. package/dist/state/write/lock.js +837 -0
  377. package/dist/state/write/mutation.js +234 -0
  378. package/dist/state/write/operations.js +170 -0
  379. package/dist/state/write/planEvaluation.js +128 -0
  380. package/dist/state/write/planPublication.js +179 -0
  381. package/dist/state/write/runtimeOperations.js +146 -0
  382. package/dist/state/write/serialize.js +1 -0
  383. package/dist/state/write/transaction.js +57 -0
  384. package/dist/state/write/validate.js +7 -0
  385. package/dist/upgrade/appContentRefresh.js +77 -36
  386. package/dist/upgrade/appModel.js +0 -1
  387. package/dist/upgrade/atomicWriter.js +1 -0
  388. package/dist/upgrade/bundleEvidence.js +0 -1
  389. package/dist/upgrade/channels.js +6 -9
  390. package/dist/upgrade/compatibility.js +43 -17
  391. package/dist/upgrade/doctor.js +55 -32
  392. package/dist/upgrade/doctorClassifier.js +11 -1
  393. package/dist/upgrade/installedHooksRetirement.js +46 -40
  394. package/dist/upgrade/legacyAgentCleanup.js +187 -21
  395. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  396. package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
  397. package/dist/upgrade/migrationPublication.js +122 -0
  398. package/dist/upgrade/nextMajorDoctor.js +0 -1
  399. package/dist/upgrade/npxPlatformStatus.js +0 -1
  400. package/dist/upgrade/projectIntegration.js +121 -159
  401. package/dist/upgrade/projectIntegrationDecision.js +42 -85
  402. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  403. package/dist/upgrade/runtimeMigration.js +262 -453
  404. package/dist/upgrade/upgradeCommands.js +14 -1
  405. package/dist/upgrade/upgradeLock.js +85 -0
  406. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  407. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  408. package/dist/upgrade/versionResolution.js +0 -1
  409. package/dist/validate/activationArtifactEvidence.js +852 -0
  410. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  411. package/dist/validate/activationConjunction.js +816 -0
  412. package/dist/validate/activationEvidenceManifest.js +531 -0
  413. package/dist/validate/activationPackageSemantics.js +29 -0
  414. package/dist/validate/appHomeContract.js +1 -7
  415. package/dist/validate/bootstrapAuthority.js +44 -0
  416. package/dist/validate/capability.js +11 -3
  417. package/dist/validate/crossCapability.js +14 -9
  418. package/dist/validate/retainedReferenceAuthority.js +879 -0
  419. package/dist/validate/selfAudit.js +39 -45
  420. package/dist/validate/v1LegacyCruft.js +131 -0
  421. package/dist/validate/vocabularyAuthority.js +8 -8
  422. package/package.json +41 -13
  423. package/bundle/references/adapters/cursor.md +0 -214
  424. package/bundle/references/adapters/opencode.md +0 -530
  425. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  426. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  427. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  428. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  429. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  430. package/bundle/references/analysis/benchmark.md +0 -267
  431. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  432. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  433. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  434. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  435. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  436. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  437. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  438. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  439. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  440. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  441. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  442. package/bundle/references/meta/documentation-inventory.md +0 -49
  443. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  444. package/bundle/skills/agentera/agents/audit.toml +0 -6
  445. package/bundle/skills/agentera/agents/build.toml +0 -6
  446. package/bundle/skills/agentera/agents/design.toml +0 -6
  447. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  448. package/bundle/skills/agentera/agents/document.toml +0 -6
  449. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  450. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  451. package/bundle/skills/agentera/agents/plan.toml +0 -6
  452. package/bundle/skills/agentera/agents/profile.toml +0 -6
  453. package/bundle/skills/agentera/agents/research.toml +0 -6
  454. package/bundle/skills/agentera/agents/status.toml +0 -6
  455. package/bundle/skills/agentera/agents/vision.toml +0 -6
  456. package/bundle/skills/agentera/references/contract.md +0 -1048
  457. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  458. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  459. package/dist/analytics/extractCorpus/core.js.map +0 -1
  460. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  461. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  462. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  463. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  464. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  465. package/dist/analytics/extractCorpus/index.js.map +0 -1
  466. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  467. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  468. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  469. package/dist/analytics/extractCorpus.js.map +0 -1
  470. package/dist/analytics/usageStats.js.map +0 -1
  471. package/dist/bin/agentera.js.map +0 -1
  472. package/dist/capabilities/audit/instructions.js.map +0 -1
  473. package/dist/capabilities/build/instructions.js.map +0 -1
  474. package/dist/capabilities/design/instructions.js.map +0 -1
  475. package/dist/capabilities/discuss/instructions.js.map +0 -1
  476. package/dist/capabilities/document/instructions.js.map +0 -1
  477. package/dist/capabilities/dokumentera/instructions.js +0 -6
  478. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  479. package/dist/capabilities/hej/instructions.js +0 -6
  480. package/dist/capabilities/hej/instructions.js.map +0 -1
  481. package/dist/capabilities/index.js.map +0 -1
  482. package/dist/capabilities/inspektera/instructions.js +0 -6
  483. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  484. package/dist/capabilities/inspirera/instructions.js +0 -6
  485. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  486. package/dist/capabilities/optimera/instructions.js +0 -6
  487. package/dist/capabilities/optimera/instructions.js.map +0 -1
  488. package/dist/capabilities/optimize/instructions.js.map +0 -1
  489. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  490. package/dist/capabilities/orkestrera/instructions.js +0 -6
  491. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  492. package/dist/capabilities/plan/instructions.js.map +0 -1
  493. package/dist/capabilities/planera/instructions.js +0 -6
  494. package/dist/capabilities/planera/instructions.js.map +0 -1
  495. package/dist/capabilities/profile/instructions.js.map +0 -1
  496. package/dist/capabilities/profilera/instructions.js +0 -6
  497. package/dist/capabilities/profilera/instructions.js.map +0 -1
  498. package/dist/capabilities/realisera/instructions.js +0 -6
  499. package/dist/capabilities/realisera/instructions.js.map +0 -1
  500. package/dist/capabilities/research/instructions.js.map +0 -1
  501. package/dist/capabilities/resonera/instructions.js +0 -6
  502. package/dist/capabilities/resonera/instructions.js.map +0 -1
  503. package/dist/capabilities/status/instructions.js.map +0 -1
  504. package/dist/capabilities/vision/instructions.js.map +0 -1
  505. package/dist/capabilities/visionera/instructions.js +0 -6
  506. package/dist/capabilities/visionera/instructions.js.map +0 -1
  507. package/dist/capabilities/visualisera/instructions.js +0 -5
  508. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  509. package/dist/cli/appContext.js.map +0 -1
  510. package/dist/cli/argvalidate.js.map +0 -1
  511. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  512. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  513. package/dist/cli/capabilityContext/build.js.map +0 -1
  514. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  515. package/dist/cli/capabilityContext/contract.js.map +0 -1
  516. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  517. package/dist/cli/capabilityContext/index.js.map +0 -1
  518. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  519. package/dist/cli/capabilityContext/planState.js.map +0 -1
  520. package/dist/cli/capabilityContext/progress.js.map +0 -1
  521. package/dist/cli/capabilityContext/realisera.js +0 -174
  522. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  523. package/dist/cli/capabilityContext/shared.js.map +0 -1
  524. package/dist/cli/capabilityContext/slim.js.map +0 -1
  525. package/dist/cli/capabilityContext/startup.js.map +0 -1
  526. package/dist/cli/capabilityContext/types.js.map +0 -1
  527. package/dist/cli/capabilityContext.js.map +0 -1
  528. package/dist/cli/commands/appHome.js.map +0 -1
  529. package/dist/cli/commands/backfill.js +0 -84
  530. package/dist/cli/commands/backfill.js.map +0 -1
  531. package/dist/cli/commands/capability.js.map +0 -1
  532. package/dist/cli/commands/compact.js.map +0 -1
  533. package/dist/cli/commands/doctor.js.map +0 -1
  534. package/dist/cli/commands/lint.js.map +0 -1
  535. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  536. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  537. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  538. package/dist/cli/commands/prime/routeOutput.js +0 -50
  539. package/dist/cli/commands/prime/routeOutput.js.map +0 -1
  540. package/dist/cli/commands/prime/types.js.map +0 -1
  541. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  542. package/dist/cli/commands/prime.js.map +0 -1
  543. package/dist/cli/commands/query.js.map +0 -1
  544. package/dist/cli/commands/report.js.map +0 -1
  545. package/dist/cli/commands/schema.js.map +0 -1
  546. package/dist/cli/commands/state/decisions.js.map +0 -1
  547. package/dist/cli/commands/state/docs.js.map +0 -1
  548. package/dist/cli/commands/state/experiments.js.map +0 -1
  549. package/dist/cli/commands/state/health.js.map +0 -1
  550. package/dist/cli/commands/state/index.js.map +0 -1
  551. package/dist/cli/commands/state/objective.js.map +0 -1
  552. package/dist/cli/commands/state/plan.js.map +0 -1
  553. package/dist/cli/commands/state/progress.js.map +0 -1
  554. package/dist/cli/commands/state/shared.js.map +0 -1
  555. package/dist/cli/commands/state/todo.js.map +0 -1
  556. package/dist/cli/commands/state.js +0 -1023
  557. package/dist/cli/commands/state.js.map +0 -1
  558. package/dist/cli/commands/upgrade.js.map +0 -1
  559. package/dist/cli/commands/validate.js.map +0 -1
  560. package/dist/cli/commands/verify.js.map +0 -1
  561. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  562. package/dist/cli/contracts/orientationState.js.map +0 -1
  563. package/dist/cli/dispatch/argvParser.js.map +0 -1
  564. package/dist/cli/dispatch/check.js.map +0 -1
  565. package/dist/cli/dispatch/commands.js.map +0 -1
  566. package/dist/cli/dispatch/index.js.map +0 -1
  567. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  568. package/dist/cli/dispatch/prime.js.map +0 -1
  569. package/dist/cli/dispatch/shared.js.map +0 -1
  570. package/dist/cli/dispatch/state.js.map +0 -1
  571. package/dist/cli/dispatch.js.map +0 -1
  572. package/dist/cli/errors.js.map +0 -1
  573. package/dist/cli/help.js.map +0 -1
  574. package/dist/cli/orientation/attention.js.map +0 -1
  575. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  576. package/dist/cli/orientation.js.map +0 -1
  577. package/dist/cli/prime-blob.js.map +0 -1
  578. package/dist/cli/startupCompletenessContract.js.map +0 -1
  579. package/dist/cli/stateQuery.js.map +0 -1
  580. package/dist/cli/structured.js.map +0 -1
  581. package/dist/cli/todoMarkdown.js.map +0 -1
  582. package/dist/cli/todoSeverity.js.map +0 -1
  583. package/dist/core/difflib.js.map +0 -1
  584. package/dist/core/envPaths.js.map +0 -1
  585. package/dist/core/git.js +0 -43
  586. package/dist/core/git.js.map +0 -1
  587. package/dist/core/jsonValue.js.map +0 -1
  588. package/dist/core/paths.js.map +0 -1
  589. package/dist/core/pyjson.js.map +0 -1
  590. package/dist/core/sourceRoot.js.map +0 -1
  591. package/dist/core/toml.js.map +0 -1
  592. package/dist/core/yaml.js.map +0 -1
  593. package/dist/eval/evalSkills.js.map +0 -1
  594. package/dist/eval/semanticEval.js.map +0 -1
  595. package/dist/eval/semanticFixtures.js.map +0 -1
  596. package/dist/hooks/common.js.map +0 -1
  597. package/dist/hooks/compaction/apply.js.map +0 -1
  598. package/dist/hooks/compaction/dryRun.js.map +0 -1
  599. package/dist/hooks/compaction/index.js.map +0 -1
  600. package/dist/hooks/compaction/parse.js.map +0 -1
  601. package/dist/hooks/compaction/retention.js.map +0 -1
  602. package/dist/hooks/compaction/status.js.map +0 -1
  603. package/dist/hooks/compaction/todoResolved.js +0 -137
  604. package/dist/hooks/compaction/todoResolved.js.map +0 -1
  605. package/dist/hooks/compaction/types.js.map +0 -1
  606. package/dist/hooks/compaction.js +0 -935
  607. package/dist/hooks/compaction.js.map +0 -1
  608. package/dist/hooks/cursorPreToolUse.js +0 -19
  609. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  610. package/dist/hooks/cursorSessionStart.js +0 -79
  611. package/dist/hooks/cursorSessionStart.js.map +0 -1
  612. package/dist/hooks/sessionStart.js +0 -216
  613. package/dist/hooks/sessionStart.js.map +0 -1
  614. package/dist/hooks/sessionStop.js +0 -206
  615. package/dist/hooks/sessionStop.js.map +0 -1
  616. package/dist/hooks/todoLayout.js +0 -177
  617. package/dist/hooks/todoLayout.js.map +0 -1
  618. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  619. package/dist/hooks/validateArtifact/index.js.map +0 -1
  620. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  621. package/dist/hooks/validateArtifact/runtime.js +0 -86
  622. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  623. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  624. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  625. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  626. package/dist/hooks/validateArtifact.js +0 -924
  627. package/dist/hooks/validateArtifact.js.map +0 -1
  628. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  629. package/dist/registries/artifactProtocolIds.js.map +0 -1
  630. package/dist/registries/artifactRegistry.js.map +0 -1
  631. package/dist/registries/capabilityContract.js.map +0 -1
  632. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  633. package/dist/registries/packageRegistry.js.map +0 -1
  634. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  635. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  636. package/dist/registries/triggerLoader.js.map +0 -1
  637. package/dist/release/releaseMetadata.js.map +0 -1
  638. package/dist/routing/index.js +0 -2
  639. package/dist/routing/index.js.map +0 -1
  640. package/dist/routing/routeEngine.js +0 -189
  641. package/dist/routing/routeEngine.js.map +0 -1
  642. package/dist/setup/codex/agents.js +0 -96
  643. package/dist/setup/codex/agents.js.map +0 -1
  644. package/dist/setup/codex/cli.js +0 -161
  645. package/dist/setup/codex/cli.js.map +0 -1
  646. package/dist/setup/codex/configToml.js +0 -639
  647. package/dist/setup/codex/configToml.js.map +0 -1
  648. package/dist/setup/codex/constants.js +0 -29
  649. package/dist/setup/codex/constants.js.map +0 -1
  650. package/dist/setup/codex/installRoot.js +0 -64
  651. package/dist/setup/codex/installRoot.js.map +0 -1
  652. package/dist/setup/codex/state.js +0 -270
  653. package/dist/setup/codex/state.js.map +0 -1
  654. package/dist/setup/codex.js +0 -12
  655. package/dist/setup/codex.js.map +0 -1
  656. package/dist/setup/copilot.js +0 -227
  657. package/dist/setup/copilot.js.map +0 -1
  658. package/dist/setup/cursor.js +0 -129
  659. package/dist/setup/cursor.js.map +0 -1
  660. package/dist/setup/cursorSurfaces.js +0 -67
  661. package/dist/setup/cursorSurfaces.js.map +0 -1
  662. package/dist/setup/doctor/core.js +0 -300
  663. package/dist/setup/doctor/core.js.map +0 -1
  664. package/dist/setup/doctor/diagnostics.js +0 -240
  665. package/dist/setup/doctor/diagnostics.js.map +0 -1
  666. package/dist/setup/doctor/opencode.js +0 -313
  667. package/dist/setup/doctor/opencode.js.map +0 -1
  668. package/dist/setup/doctor/report.js +0 -425
  669. package/dist/setup/doctor/report.js.map +0 -1
  670. package/dist/setup/doctor.js +0 -10
  671. package/dist/setup/doctor.js.map +0 -1
  672. package/dist/setup/opencode.js.map +0 -1
  673. package/dist/setup/smokeChecks.js.map +0 -1
  674. package/dist/state/installRoot.js.map +0 -1
  675. package/dist/state/progressCommit.js +0 -289
  676. package/dist/state/progressCommit.js.map +0 -1
  677. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  678. package/dist/state/startupAnalysis/contract.js.map +0 -1
  679. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  680. package/dist/state/startupAnalysis/index.js.map +0 -1
  681. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  682. package/dist/state/startupAnalysis/records.js.map +0 -1
  683. package/dist/state/startupAnalysis/report.js.map +0 -1
  684. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  685. package/dist/state/startupAnalysis.js.map +0 -1
  686. package/dist/upgrade/appContentRefresh.js.map +0 -1
  687. package/dist/upgrade/appModel.js.map +0 -1
  688. package/dist/upgrade/bundleEvidence.js.map +0 -1
  689. package/dist/upgrade/channels.js.map +0 -1
  690. package/dist/upgrade/cliProbe.js +0 -22
  691. package/dist/upgrade/cliProbe.js.map +0 -1
  692. package/dist/upgrade/coexistenceProbe.js +0 -107
  693. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  694. package/dist/upgrade/compatibility.js.map +0 -1
  695. package/dist/upgrade/doctor.js.map +0 -1
  696. package/dist/upgrade/doctorClassifier.js.map +0 -1
  697. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  698. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  699. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  700. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  701. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  702. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  703. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  704. package/dist/upgrade/projectIntegration.js.map +0 -1
  705. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  706. package/dist/upgrade/runtimeMigration.js.map +0 -1
  707. package/dist/upgrade/upgradeCommands.js.map +0 -1
  708. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  709. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  710. package/dist/upgrade/versionResolution.js.map +0 -1
  711. package/dist/validate/appHomeContract.js.map +0 -1
  712. package/dist/validate/capability.js.map +0 -1
  713. package/dist/validate/crossCapability.js.map +0 -1
  714. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  715. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  716. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  717. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  718. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  719. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  720. package/dist/validate/lifecycleAdapters.js +0 -62
  721. package/dist/validate/lifecycleAdapters.js.map +0 -1
  722. package/dist/validate/selfAudit.js.map +0 -1
  723. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -9,9 +9,24 @@
9
9
  * `## ✓ Resolved`.
10
10
  */
11
11
  import { parseTodoMarkdownListItem } from "../../cli/todoMarkdown.js";
12
- import { SPECS, escapeRe } from "./dryRun.js";
12
+ import { MAX_FULL_ENTRIES, MAX_TOTAL_ENTRIES } from "../common.js";
13
+ import { SPECS, escapeRe, formatTodoOneline } from "./dryRun.js";
13
14
  const SEVERITY_HEADING_RE = /^##\s*(⇶|⇉|→|⇢)\s/m;
14
15
  const STRIKETHROUGH_ITEM_RE = /^(\s*)-\s+~~(.+?)~~\s*(.*)$/;
16
+ // Shared case-insensitive resolved-heading matcher. Duplicate detection
17
+ // (countTodoResolvedSectionHeadings), validation (markdown.ts), classification
18
+ // (isTodoResolvedSectionHeading), and extraction (extractResolvedSection) all
19
+ // use these so they accept the same variants: `## ✓ Resolved`, `## Resolved`,
20
+ // `## resolved`, `## RESOLVED`. Formerly extractResolvedSection used `\s+`
21
+ // (requiring a space after ##) without the `i` flag, silently rejecting
22
+ // case variants and `##Resolved`; now unified.
23
+ const TODO_RESOLVED_HEADING_RE = /^##\s*(?:✓\s+)?Resolved\s*$/im;
24
+ const TODO_RESOLVED_HEADING_GLOBAL_RE = /^##\s*(?:✓\s+)?Resolved\s*$/gim;
25
+ // TODO.md is a bounded human-facing queue, not a lossless numbered archive:
26
+ // dropped resolved entries are recoverable only via project history (Git),
27
+ // and only if previously committed. Surfaced in compaction diagnostics
28
+ // alongside the `dropped` count.
29
+ export const TODO_DROPPED_RECOVERY_GUIDANCE = "dropped resolved entries are not retained in a lossless archive; recover previously committed content via Git: `git log -p -- :/TODO.md` (non-Git projects have no historical recovery)";
15
30
  export function splitArchive(text, archiveHeading) {
16
31
  if (!archiveHeading)
17
32
  return [text, ""];
@@ -70,7 +85,7 @@ export function parseOnelineEntries(text, spec) {
70
85
  return entries;
71
86
  }
72
87
  export function extractResolvedSection(text) {
73
- const m = /^##\s+(?:✓\s+)?Resolved\s*$/m.exec(text);
88
+ const m = TODO_RESOLVED_HEADING_RE.exec(text);
74
89
  if (!m)
75
90
  return [-1, -1, ""];
76
91
  const bodyStart = m.index + m[0].length + 1;
@@ -124,7 +139,17 @@ export function isTodoSeveritySectionHeading(line) {
124
139
  return SEVERITY_HEADING_RE.test(line.trim());
125
140
  }
126
141
  export function isTodoResolvedSectionHeading(line) {
127
- return /^##\s*(?:✓\s+)?Resolved\s*$/im.test(line.trim());
142
+ return TODO_RESOLVED_HEADING_RE.test(line.trim());
143
+ }
144
+ /**
145
+ * Count `## ✓ Resolved` section headings in a TODO.md. A well-formed queue has
146
+ * exactly one; duplicates make parsing silently process only the first and
147
+ * hide the remaining entries from the compaction budget. Callers (validation,
148
+ * compaction status, compaction apply) refuse when this returns a value > 1.
149
+ */
150
+ export function countTodoResolvedSectionHeadings(text) {
151
+ const matches = text.match(TODO_RESOLVED_HEADING_GLOBAL_RE);
152
+ return matches ? matches.length : 0;
128
153
  }
129
154
  export function classifyTodoSectionHeading(line) {
130
155
  if (isTodoSeveritySectionHeading(line))
@@ -171,11 +196,54 @@ export function countTodoResolvedEntries(content) {
171
196
  const spec = SPECS["todo-resolved"];
172
197
  const resolvedSection = parseTodoResolved(content, spec);
173
198
  const misplaced = countTodoResolvedInSeverityBands(content);
199
+ const total = resolvedSection.length + misplaced;
200
+ // Positional tiering per TC9: the first ten resolved rows are the
201
+ // recent/full-detail tier even when they have no indented body; rows
202
+ // 11+ are the summary tier. This keeps status reporting consistent
203
+ // with how compactTodoEntries assigns tiers (positional, not
204
+ // body-presence-based), so a compacted file with 10 header-only rows
205
+ // + 40 summaries reports 10/40 (not 0/50).
174
206
  return {
175
- full: resolvedSection.filter((e) => e.kind === "full").length,
176
- oneline: resolvedSection.filter((e) => e.kind === "oneline").length + misplaced,
207
+ full: Math.min(total, MAX_FULL_ENTRIES),
208
+ oneline: Math.max(0, total - MAX_FULL_ENTRIES),
177
209
  };
178
210
  }
211
+ /**
212
+ * Count resolved entries in positions 11-50 that need ≤15-word summarization
213
+ * but are not yet summaries. An entry needs summarization when:
214
+ * - it has an indented body (should be stripped), or
215
+ * - its kind is "full" (should be demoted to the summary tier), or
216
+ * - its header differs from what `formatTodoOneline` would produce (i.e.
217
+ * it is a long verbatim header, not a ≤15-word summary).
218
+ *
219
+ * Returns 0 when the Resolved section is already compacted (idempotent).
220
+ * `check compact` uses this to detect in-budget (≤50) TODOs that still need
221
+ * a formatting rewrite, so `--mode fix` is triggered before entries overflow.
222
+ */
223
+ export function countTodoPendingSummarization(content) {
224
+ const spec = SPECS["todo-resolved"];
225
+ const entries = parseTodoResolved(content, spec);
226
+ if (entries.length <= MAX_FULL_ENTRIES)
227
+ return 0;
228
+ const summaryTier = entries.slice(MAX_FULL_ENTRIES, MAX_TOTAL_ENTRIES);
229
+ let count = 0;
230
+ for (const entry of summaryTier) {
231
+ if (entry.body) {
232
+ count++;
233
+ continue;
234
+ }
235
+ if (entry.kind === "full") {
236
+ count++;
237
+ continue;
238
+ }
239
+ // kind=oneline, no body: check if header matches the summary format
240
+ // by forcing kind="full" through formatTodoOneline (truncation path).
241
+ const expected = formatTodoOneline({ ...entry, kind: "full" });
242
+ if (entry.header.trim() !== expected.trim())
243
+ count++;
244
+ }
245
+ return count;
246
+ }
179
247
  /**
180
248
  * Move resolved rows from severity bands into `## ✓ Resolved`, creating the
181
249
  * section when absent. Newly migrated rows are prepended (newest-first folds).
@@ -255,4 +323,3 @@ export function parseEntries(text, specName) {
255
323
  const onelineEntries = parseOnelineEntries(archiveBody, spec);
256
324
  return [...fullEntries, ...onelineEntries];
257
325
  }
258
- //# sourceMappingURL=parse.js.map
@@ -5,11 +5,11 @@
5
5
  * by `apply.ts` (which writes the compacted result back to disk)
6
6
  * and by `status.ts` (which counts overflow without writing).
7
7
  */
8
- import { MAX_FULL_ENTRIES, MAX_ONELINE_ENTRIES, applyRetentionCaps } from "../common.js";
8
+ import { MAX_FULL_ENTRIES, MAX_ONELINE_ENTRIES, MAX_TOTAL_ENTRIES, applyRetentionCaps } from "../common.js";
9
9
  import { truncateWords } from "./dryRun.js";
10
10
  export function overLimitCount(activeCount, archiveCount) {
11
11
  const totalCount = activeCount + archiveCount;
12
- return Math.max(Math.max(activeCount - MAX_FULL_ENTRIES, 0), Math.max(archiveCount - MAX_ONELINE_ENTRIES, 0), Math.max(totalCount - 50, 0));
12
+ return Math.max(Math.max(activeCount - MAX_FULL_ENTRIES, 0), Math.max(archiveCount - MAX_ONELINE_ENTRIES, 0), Math.max(totalCount - MAX_TOTAL_ENTRIES, 0));
13
13
  }
14
14
  export function stableSortBy(arr, key, reverse = false) {
15
15
  return arr
@@ -100,13 +100,16 @@ export function yamlArchiveEntry(specName, entry) {
100
100
  const summary = yamlSummaryText(e, "trajectory", "grades");
101
101
  return { summary: `Audit ${number}${datePart}: ${summary}` };
102
102
  }
103
+ if (specName === "experiments") {
104
+ return { number: e.number, summary: yamlSummaryText(e, "conclusion", "label") };
105
+ }
103
106
  if (specName === "session") {
104
107
  return { timestamp: String(e.timestamp ?? ""), summary: yamlSummaryText(e, "summary") };
105
108
  }
106
109
  return { summary: yamlSummaryText(e, "summary") };
107
110
  }
108
111
  export function yamlSortEntries(entries, specName) {
109
- if (specName === "decisions" || specName === "health") {
112
+ if (specName === "decisions" || specName === "health" || specName === "experiments") {
110
113
  return stableSortBy(entries, yamlEntryNumber);
111
114
  }
112
115
  if (specName === "session") {
@@ -114,12 +117,12 @@ export function yamlSortEntries(entries, specName) {
114
117
  }
115
118
  return stableSortBy(entries, yamlEntryNumber, true);
116
119
  }
117
- export function yamlRecentFullAndOlder(entries, specName) {
120
+ export function yamlRecentFullAndOlder(entries, specName, fullCapacity = MAX_FULL_ENTRIES) {
118
121
  const newestFirst = specName === "session"
119
122
  ? stableSortBy(entries, yamlEntryTimestamp, true)
120
123
  : stableSortBy(entries, yamlEntryNumber, true);
121
- const recent = newestFirst.slice(0, MAX_FULL_ENTRIES);
122
- const older = newestFirst.slice(MAX_FULL_ENTRIES);
124
+ const recent = newestFirst.slice(0, fullCapacity);
125
+ const older = newestFirst.slice(fullCapacity);
123
126
  return [yamlSortEntries(recent, specName), older];
124
127
  }
125
128
  function yamlArchiveSortKey(entry) {
@@ -155,7 +158,7 @@ function decisionSatisfactionState(entry) {
155
158
  const state = satisfaction.state;
156
159
  return typeof state === "string" ? state : null;
157
160
  }
158
- function decisionRequiresUserReview(entry) {
161
+ export function decisionRequiresUserReview(entry) {
159
162
  if (!entry || typeof entry !== "object")
160
163
  return true;
161
164
  // cast: decision record fields read from parsed decisions.yaml
@@ -163,37 +166,37 @@ function decisionRequiresUserReview(entry) {
163
166
  if (!satisfaction || typeof satisfaction !== "object")
164
167
  return true;
165
168
  const confirmation = satisfaction.user_confirmation;
169
+ const confirmedBy = confirmation && typeof confirmation === "object" ? confirmation.confirmed_by : null;
170
+ const confirmedAt = confirmation && typeof confirmation === "object" ? confirmation.confirmed_at : null;
166
171
  return (decisionSatisfactionState(entry) !== "user_confirmed_satisfied" ||
167
172
  !confirmation ||
168
173
  typeof confirmation !== "object" ||
169
- Object.keys(confirmation).length === 0);
174
+ typeof confirmedBy !== "string" ||
175
+ confirmedBy.trim() === "" ||
176
+ typeof confirmedAt !== "string" ||
177
+ confirmedAt.trim() === "");
178
+ }
179
+ export function decisionSatisfiedActiveCount(active) {
180
+ return active.filter((e) => !decisionRequiresUserReview(e)).length;
170
181
  }
171
182
  export function decisionProtectedOverflowCount(active, archive) {
172
183
  const protectedActive = active.filter((e) => decisionRequiresUserReview(e)).length;
173
184
  const protectedArchive = archive.filter((e) => decisionRequiresUserReview(e)).length;
174
- return Math.max(protectedActive - MAX_FULL_ENTRIES, protectedArchive - MAX_ONELINE_ENTRIES, protectedActive + protectedArchive - 50, 0);
185
+ return Math.max(protectedActive - MAX_FULL_ENTRIES, protectedArchive - MAX_ONELINE_ENTRIES, protectedActive + protectedArchive - MAX_TOTAL_ENTRIES, 0);
175
186
  }
176
- export function selectDecisionActiveEntries(active) {
187
+ export function selectDecisionActiveEntries(active, fullCapacity = MAX_FULL_ENTRIES) {
177
188
  const protectedEntries = active.filter((e) => decisionRequiresUserReview(e));
178
- if (protectedEntries.length > MAX_FULL_ENTRIES) {
179
- throw new Error("decisions: protected-overflow review pressure; " +
180
- `${protectedEntries.length} protected active decision(s) exceed ${MAX_FULL_ENTRIES} full-detail slots`);
181
- }
182
189
  const satisfied = active.filter((e) => !decisionRequiresUserReview(e));
183
190
  const newestSatisfied = stableSortBy(satisfied, yamlEntryNumber, true);
184
- const keepSatisfied = newestSatisfied.slice(0, MAX_FULL_ENTRIES - protectedEntries.length);
185
- const compactSatisfied = newestSatisfied.slice(MAX_FULL_ENTRIES - protectedEntries.length);
191
+ const satisfiedCapacity = Math.max(fullCapacity - protectedEntries.length, 0);
192
+ const keepSatisfied = newestSatisfied.slice(0, satisfiedCapacity);
193
+ const compactSatisfied = newestSatisfied.slice(satisfiedCapacity);
186
194
  return [yamlSortEntries([...protectedEntries, ...keepSatisfied], "decisions"), compactSatisfied];
187
195
  }
188
196
  export function selectDecisionArchiveEntries(archiveCandidates) {
189
- const protectedEntries = archiveCandidates.filter((e) => decisionRequiresUserReview(e));
190
- if (protectedEntries.length > MAX_ONELINE_ENTRIES) {
191
- throw new Error("decisions: protected-overflow review pressure; " +
192
- `${protectedEntries.length} protected archived decision(s) exceed ${MAX_ONELINE_ENTRIES} archive slots`);
193
- }
194
- const satisfied = archiveCandidates.filter((e) => !decisionRequiresUserReview(e));
195
- const keepSatisfied = yamlArchiveEntries(satisfied).slice(0, MAX_ONELINE_ENTRIES - protectedEntries.length);
196
- return yamlSortEntries([...protectedEntries, ...keepSatisfied], "decisions");
197
+ // Review pressure is a projection concern, not a write failure. Capacity
198
+ // selection happens after archive recovery so protected records are never
199
+ // discarded merely because they are unresolved.
200
+ return yamlSortEntries(archiveCandidates, "decisions");
197
201
  }
198
202
  export { applyRetentionCaps };
199
- //# sourceMappingURL=retention.js.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Compaction status reporting (read-only).
2
+ * Compaction status reporting and projection repair.
3
3
  *
4
4
  * Walks each tracked artifact path, counts active/archive entries, and
5
5
  * builds a `CompactionStatus` per artifact plus a per-status operation
@@ -11,13 +11,19 @@ import path from "node:path";
11
11
  import { DEFAULT_ARTIFACT_PATHS, parseDocsYamlMapping } from "../common.js";
12
12
  import { loadYamlMapping } from "../../core/yaml.js";
13
13
  import { COMPACTABLE_YAML_ARTIFACTS, NON_COMPACTABLE_ARTIFACTS } from "./dryRun.js";
14
- import { decisionProtectedOverflowCount, overLimitCount, yamlArchiveEntries, } from "./retention.js";
15
- import { compactFile, compactYamlFile } from "./apply.js";
16
- import { countTodoResolvedEntries } from "./parse.js";
14
+ import { detectStateMode } from "../../state/stateMode.js";
15
+ import { discoverEntities } from "../../state/entityStorage.js";
16
+ import { decisionProtectedOverflowCount, decisionSatisfiedActiveCount, overLimitCount, yamlArchiveEntries, } from "./retention.js";
17
+ import { compactFile, compactYamlBytes, compactYamlFile } from "./apply.js";
18
+ import { countTodoResolvedEntries, countTodoResolvedSectionHeadings, countTodoPendingSummarization, TODO_DROPPED_RECOVERY_GUIDANCE, } from "./parse.js";
17
19
  import { YAML_SPEC_BY_ARTIFACT } from "./dryRun.js";
20
+ import { InjectedMutationFailure, withStateMutation, } from "../../state/write/mutation.js";
21
+ import { hydrateDecisionRecords } from "../../state/decisionOverlay.js";
22
+ import { loadProjectionPolicy } from "../../state/projectionPolicy.js";
23
+ import { ARTIFACT_PROTOCOL_PATHS } from "../../registries/artifactProtocolIds.js";
18
24
  function artifactPaths(projectRoot) {
19
25
  const paths = { ...DEFAULT_ARTIFACT_PATHS };
20
- const docsPath = path.join(projectRoot, ".agentera", "docs.yaml");
26
+ const docsPath = path.join(projectRoot, ARTIFACT_PROTOCOL_PATHS.docs);
21
27
  if (fs.existsSync(docsPath)) {
22
28
  Object.assign(paths, parseDocsYamlMapping(fs.readFileSync(docsPath, "utf8")));
23
29
  }
@@ -71,8 +77,9 @@ function yamlLists(p, activeKey, archiveKey) {
71
77
  const archive = data[archiveKey] || [];
72
78
  return [Array.isArray(active) ? active : [], Array.isArray(archive) ? archive : []];
73
79
  }
74
- function countStatus(artifact, p, activeCount, archiveCount, protectedOverflowCount = 0) {
80
+ function countStatus(artifact, p, activeCount, archiveCount, protectedOverflowCount = 0, budgetActiveCount, projectionRecovery, projectionState) {
75
81
  const totalCount = activeCount + archiveCount;
82
+ const budgetActive = budgetActiveCount ?? activeCount;
76
83
  return {
77
84
  artifact,
78
85
  path: p,
@@ -80,19 +87,100 @@ function countStatus(artifact, p, activeCount, archiveCount, protectedOverflowCo
80
87
  active_count: activeCount,
81
88
  archive_count: archiveCount,
82
89
  total_count: totalCount,
83
- over_limit_count: overLimitCount(activeCount, archiveCount),
84
- reason: protectedOverflowCount ? "protected-overflow review pressure" : "uniform_10_40_50",
90
+ over_limit_count: projectionState ? 0 : overLimitCount(budgetActive, archiveCount),
91
+ reason: projectionState
92
+ ? projectionState === "over_defaults"
93
+ ? "lossless projection exceeds display defaults; numbered archives remain authoritative"
94
+ : "lossless projection is within display defaults"
95
+ : protectedOverflowCount
96
+ ? "protected-overflow review pressure"
97
+ : "uniform_10_40_50",
85
98
  protected_overflow_count: protectedOverflowCount,
86
99
  exists: true,
100
+ ...(projectionState ? { projection_state: projectionState } : {}),
101
+ ...(projectionRecovery ? { projection_recovery: projectionRecovery } : {}),
87
102
  };
88
103
  }
104
+ function projectionRecoveryFor(projectRoot, artifact, p) {
105
+ try {
106
+ return compactYamlBytes(fs.readFileSync(p, "utf8"), artifact, projectRoot).result.recovery;
107
+ }
108
+ catch {
109
+ return undefined;
110
+ }
111
+ }
89
112
  export function computeCompactionStatus(projectRoot) {
113
+ if (detectStateMode(projectRoot) === "entities") {
114
+ const discovered = discoverEntities(projectRoot);
115
+ const issueCount = discovered.issues.length;
116
+ return [{
117
+ artifact: "entity_state",
118
+ path: path.join(projectRoot, ".agentera", "entities"),
119
+ classification: issueCount ? "error" : "canonical_entities",
120
+ active_count: discovered.entities.length,
121
+ archive_count: 0,
122
+ total_count: discovered.entities.length,
123
+ over_limit_count: 0,
124
+ reason: issueCount
125
+ ? `${issueCount} canonical entity validation issue(s); run agentera check validate state --format json`
126
+ : "canonical entity state is independently stored and is not compacted",
127
+ protected_overflow_count: 0,
128
+ exists: true,
129
+ }];
130
+ }
90
131
  const paths = artifactPaths(projectRoot);
132
+ const projectionPolicy = loadProjectionPolicy();
91
133
  const statuses = [];
92
134
  const todoPath = paths.todo;
93
135
  if (fs.existsSync(todoPath)) {
94
- const counts = countTodoResolvedEntries(fs.readFileSync(todoPath, "utf8"));
95
- statuses.push(countStatus("todo#Resolved", todoPath, counts.full, counts.oneline));
136
+ const todoText = fs.readFileSync(todoPath, "utf8");
137
+ const headingCount = countTodoResolvedSectionHeadings(todoText);
138
+ if (headingCount > 1) {
139
+ // Refuse rather than silently process only the first `## ✓ Resolved`
140
+ // section: duplicates hide the trailing entries from the budget and
141
+ // from fix-mode migration. TODO has no lossless numbered archive, so
142
+ // recovery once entries are dropped is Git-only.
143
+ statuses.push({
144
+ artifact: "todo#Resolved",
145
+ path: todoPath,
146
+ classification: "error",
147
+ active_count: null,
148
+ archive_count: null,
149
+ total_count: null,
150
+ over_limit_count: null,
151
+ reason: `TODO.md has ${headingCount} '## ✓ Resolved' sections; merge into exactly one before compacting. ` +
152
+ `Compaction drops oldest resolved entries and is destructive (no lossless archive); ` +
153
+ TODO_DROPPED_RECOVERY_GUIDANCE,
154
+ protected_overflow_count: 0,
155
+ exists: true,
156
+ });
157
+ }
158
+ else if (headingCount === 0) {
159
+ statuses.push({
160
+ artifact: "todo#Resolved",
161
+ path: todoPath,
162
+ classification: "error",
163
+ active_count: null,
164
+ archive_count: null,
165
+ total_count: null,
166
+ over_limit_count: null,
167
+ reason: "TODO.md has no required '## ✓ Resolved' section; add exactly one before compacting.",
168
+ protected_overflow_count: 0,
169
+ exists: true,
170
+ });
171
+ }
172
+ else {
173
+ const counts = countTodoResolvedEntries(todoText);
174
+ const status = countStatus("todo#Resolved", todoPath, counts.full, counts.oneline);
175
+ // Detect in-budget (≤50) TODOs that still need a formatting rewrite:
176
+ // rows 11-50 that are long verbatim headers instead of ≤15-word
177
+ // summaries. This triggers `--mode fix` before entries overflow.
178
+ const pendingSummarization = countTodoPendingSummarization(todoText);
179
+ if (pendingSummarization > 0) {
180
+ status.pending_summarization_count = pendingSummarization;
181
+ }
182
+ statuses.push(status);
183
+ }
96
184
  }
97
185
  else {
98
186
  statuses.push(missingStatus("todo#Resolved", todoPath, "compactable"));
@@ -109,8 +197,17 @@ export function computeCompactionStatus(projectRoot) {
109
197
  statuses.push(yamlErrorStatus(artifact, p, exc.message));
110
198
  continue;
111
199
  }
112
- const protectedOverflowCount = artifact === "decisions" ? decisionProtectedOverflowCount(active, archive) : 0;
113
- statuses.push(countStatus(artifact, p, active.length, archive.length, protectedOverflowCount));
200
+ const protectedOverflowCount = artifact === "decisions"
201
+ ? decisionProtectedOverflowCount(hydrateDecisionRecords(active, projectRoot), hydrateDecisionRecords(archive, projectRoot))
202
+ : 0;
203
+ const budgetActiveCount = artifact === "decisions"
204
+ ? decisionSatisfiedActiveCount(hydrateDecisionRecords(active, projectRoot))
205
+ : undefined;
206
+ statuses.push(countStatus(artifact, p, active.length, archive.length, protectedOverflowCount, budgetActiveCount, projectionRecoveryFor(projectRoot, artifact, p), active.length > projectionPolicy.activeEntries ||
207
+ archive.length > projectionPolicy.summaryEntries ||
208
+ active.length + archive.length > projectionPolicy.totalEntries
209
+ ? "over_defaults"
210
+ : "within_defaults"));
114
211
  }
115
212
  else {
116
213
  statuses.push(missingStatus(artifact, p, "compactable"));
@@ -182,21 +279,35 @@ function operationForStatus(status, mode) {
182
279
  return base("error", status.reason);
183
280
  if (status.classification !== "compactable")
184
281
  return base("skipped", status.reason);
185
- if (status.protected_overflow_count) {
186
- return base("protected_overflow", `protected-overflow review pressure by ${status.protected_overflow_count}`);
282
+ if (status.projection_recovery?.refused_count) {
283
+ return base("refused", `projection retained ${status.projection_recovery.retained_full} full entr${status.projection_recovery.retained_full === 1 ? "y" : "ies"}; archive recovery is required before summarization`);
187
284
  }
188
- if (!status.over_limit_count)
189
- return base("ok", "within uniform_10_40_50 limits");
190
- return base(mode === "check" ? "over_limit" : "pending_fix", `over uniform_10_40_50 limit by ${status.over_limit_count}`);
285
+ if (status.projection_state === "over_defaults") {
286
+ return base(mode === "fix" ? "pending_projection" : "projection", "projection exceeds display defaults; archive history remains lossless");
287
+ }
288
+ if (!status.over_limit_count && !status.pending_summarization_count) {
289
+ return base("ok", status.projection_state === "within_defaults"
290
+ ? "within configured lossless projection defaults"
291
+ : "within uniform_10_40_50 limits");
292
+ }
293
+ if (status.over_limit_count) {
294
+ return base(mode === "check" ? "over_limit" : "pending_fix", `over uniform_10_40_50 limit by ${status.over_limit_count}`);
295
+ }
296
+ // pending_summarization_count > 0 but within budget: rows 11-50 need
297
+ // ≤15-word summary formatting, not entry removal.
298
+ const n = status.pending_summarization_count;
299
+ return base(mode === "check" ? "formatting" : "pending_formatting", `${n} resolved entr${n === 1 ? "y" : "ies"} in summary tier need ≤15-word summarization`);
191
300
  }
192
301
  export function checkCompaction(projectRoot) {
193
302
  return computeCompactionStatus(projectRoot).map((status) => operationForStatus(status, "check"));
194
303
  }
195
- export function fixCompaction(projectRoot) {
304
+ function fixCompactionUnlocked(projectRoot, transaction) {
196
305
  const operations = [];
197
306
  for (const status of computeCompactionStatus(projectRoot)) {
198
307
  const baseline = operationForStatus(status, "fix");
199
- if (baseline.action !== "pending_fix") {
308
+ if (baseline.action !== "pending_fix" &&
309
+ baseline.action !== "pending_projection" &&
310
+ baseline.action !== "pending_formatting") {
200
311
  operations.push(baseline);
201
312
  continue;
202
313
  }
@@ -204,10 +315,10 @@ export function fixCompaction(projectRoot) {
204
315
  let result;
205
316
  try {
206
317
  if (status.artifact === "todo#Resolved") {
207
- result = compactFile(p, "todo-resolved");
318
+ result = transaction.mutateProjection(p, (stage) => compactFile(stage, "todo-resolved"));
208
319
  }
209
320
  else if (status.artifact in YAML_SPEC_BY_ARTIFACT) {
210
- result = compactYamlFile(p, status.artifact);
321
+ result = transaction.mutateProjection(p, (stage) => compactYamlFile(stage, status.artifact, projectRoot));
211
322
  }
212
323
  else {
213
324
  operations.push({ status, mode: "fix", action: "skipped", changed: false, result: null, message: `no fixer registered for ${status.artifact}` });
@@ -215,6 +326,8 @@ export function fixCompaction(projectRoot) {
215
326
  }
216
327
  }
217
328
  catch (exc) {
329
+ if (exc instanceof InjectedMutationFailure)
330
+ throw exc;
218
331
  operations.push({ status, mode: "fix", action: "error", changed: false, result: null, message: exc.message });
219
332
  continue;
220
333
  }
@@ -226,16 +339,22 @@ export function fixCompaction(projectRoot) {
226
339
  result,
227
340
  message: `full ${result.full_before}->${result.full_after}; ` +
228
341
  `archive ${result.oneline_before}->${result.oneline_after}; ` +
229
- `dropped ${result.dropped}`,
342
+ `omitted ${result.omitted_count ?? 0}; dropped ${result.dropped}`,
230
343
  });
231
344
  }
232
345
  return operations;
233
346
  }
234
- export function runCompaction(projectRoot, mode = "check") {
347
+ export function fixCompaction(projectRoot, options = {}) {
348
+ return withStateMutation(projectRoot, (transaction) => fixCompactionUnlocked(projectRoot, transaction), options);
349
+ }
350
+ export function runCompaction(projectRoot, mode = "check", options = {}) {
235
351
  if (mode === "check")
236
352
  return checkCompaction(projectRoot);
237
- if (mode === "fix")
238
- return fixCompaction(projectRoot);
353
+ if (mode === "fix") {
354
+ if (detectStateMode(projectRoot) === "entities") {
355
+ return computeCompactionStatus(projectRoot).map((status) => operationForStatus(status, "fix"));
356
+ }
357
+ return fixCompaction(projectRoot, options);
358
+ }
239
359
  throw new Error(`unknown compaction mode: ${mode}`);
240
360
  }
241
- //# sourceMappingURL=status.js.map
@@ -3,4 +3,3 @@
3
3
  * status reporting, the apply writers, and the CLI consumers.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=types.js.map
@@ -7,4 +7,3 @@
7
7
  import { ARTIFACT_PROTOCOL_PATHS, HUMAN_FACING_ARTIFACT_IDS } from "../../registries/artifactProtocolIds.js";
8
8
  export { ARTIFACT_PROTOCOL_PATHS, HUMAN_FACING_ARTIFACT_IDS };
9
9
  export const AGENT_FACING_ARTIFACT_IDS = new Set(Object.keys(ARTIFACT_PROTOCOL_PATHS).filter((id) => !HUMAN_FACING_ARTIFACT_IDS.has(id)));
10
- //# sourceMappingURL=agentFacing.js.map
@@ -1,9 +1,6 @@
1
1
  /**
2
- * Public surface for the validate-artifact hook. The CLI command
3
- * (`packages/cli/src/cli/commands/validate.ts`), the smoke checks, and
4
- * the dispatch entry all import the public classes from this barrel
5
- * to keep import paths stable as the file is split across the
6
- * per-responsibility submodules.
2
+ * Artifact validation used by the explicit `agentera check validate artifact`
3
+ * command and state publication.
7
4
  */
8
5
  import fs from "node:fs";
9
6
  import path from "node:path";
@@ -11,10 +8,8 @@ import { loadYamlMapping } from "../../core/yaml.js";
11
8
  import { resolvePath } from "../../core/paths.js";
12
9
  import { normalizeArtifactProtocolId } from "../../registries/artifactProtocolIds.js";
13
10
  import { DEFAULT_ARTIFACT_PATHS } from "../common.js";
14
- import { ArtifactWrite, RuntimeEventParser } from "./runtime.js";
15
- import { isMapping } from "./schema.js";
16
11
  import { validateMd } from "./markdown.js";
17
- import { artifactForWrite, defaultArtifactPath, readIfNeeded, compactAfterValidWrite, } from "./traversal.js";
12
+ import { defaultArtifactPath, readIfNeeded, } from "./traversal.js";
18
13
  import { schemasDirDefault, validateYamlContent } from "./violations.js";
19
14
  import { AGENT_FACING_ARTIFACT_IDS, HUMAN_FACING_ARTIFACT_IDS } from "./agentFacing.js";
20
15
  export class ArtifactSchemaValidator {
@@ -43,37 +38,6 @@ export class ArtifactSchemaValidator {
43
38
  validateMarkdown(content, name, schema = null) {
44
39
  return validateMd(content, name, schema);
45
40
  }
46
- validateWrite(write, cwd) {
47
- const absPath = path.isAbsolute(write.file_path) ? write.file_path : path.join(cwd, write.file_path);
48
- const rel = path.relative(cwd, absPath).replace(/\\/g, "/");
49
- const basename = path.basename(absPath);
50
- const artifact = artifactForWrite(absPath, rel, basename, cwd);
51
- if (artifact && AGENT_FACING_ARTIFACT_IDS.has(artifact)) {
52
- const schema = this.loadSchema(artifact);
53
- if (schema === null)
54
- return [];
55
- if (Object.keys(schema).length === 0)
56
- return [`${artifact}: schema file is empty or contains no valid definitions`];
57
- const content = readIfNeeded(write.content, absPath);
58
- if (content === null)
59
- return [];
60
- let violations = this.validateYaml(content, schema, artifact);
61
- if (violations.length > 0)
62
- return violations;
63
- return compactAfterValidWrite(artifact, absPath);
64
- }
65
- if (artifact && HUMAN_FACING_ARTIFACT_IDS.has(artifact)) {
66
- const content = readIfNeeded(write.content, absPath);
67
- if (content === null)
68
- return [];
69
- const schema = this.loadSchema(artifact);
70
- const violations = this.validateMarkdown(content, artifact, schema);
71
- if (violations.length > 0)
72
- return violations;
73
- return compactAfterValidWrite(artifact, absPath);
74
- }
75
- return [];
76
- }
77
41
  validateExplicit(artifact, filePath, cwd) {
78
42
  const content = readIfNeeded(null, filePath);
79
43
  if (content === null)
@@ -103,33 +67,11 @@ export class ArtifactSchemaValidator {
103
67
  export function loadSchema(name) {
104
68
  return new ArtifactSchemaValidator().loadSchema(name);
105
69
  }
106
- export class HookCliAdapter {
107
- parser;
70
+ export class ArtifactValidationAdapter {
108
71
  validator;
109
- constructor(parser, validator) {
110
- this.parser = parser ?? new RuntimeEventParser();
72
+ constructor(validator) {
111
73
  this.validator = validator ?? new ArtifactSchemaValidator();
112
74
  }
113
- run(raw, defaultCwd = null) {
114
- let data;
115
- try {
116
- if (!raw.trim())
117
- return [0, []];
118
- data = JSON.parse(raw);
119
- }
120
- catch {
121
- return [0, []];
122
- }
123
- if (!isMapping(data))
124
- return [0, []];
125
- const write = this.parser.parse(data);
126
- if (write === null)
127
- return [0, []];
128
- // cast: cwd read from the runtime hook's JSON stdin payload
129
- const cwd = (data.cwd ?? defaultCwd ?? process.cwd());
130
- const violations = this.validator.validateWrite(write, cwd);
131
- return violations.length > 0 ? [2, violations] : [0, []];
132
- }
133
75
  runExplicit(artifact, filePath, cwd) {
134
76
  artifact = artifact.trim();
135
77
  const defaultPath = defaultArtifactPath(artifact, cwd);
@@ -147,5 +89,4 @@ export class HookCliAdapter {
147
89
  return violations.length > 0 ? [2, payload] : [0, payload];
148
90
  }
149
91
  }
150
- export { ArtifactWrite, RuntimeEventParser, resolvePath };
151
- //# sourceMappingURL=index.js.map
92
+ export { resolvePath };
@@ -5,18 +5,14 @@
5
5
  * section check (ITEM, RELEASE, TOKEN).
6
6
  */
7
7
  import { parseTodoMarkdownListItem } from "../../cli/todoMarkdown.js";
8
- import { classifyTodoSectionHeading, isLegacyStrikethroughTodoLine, } from "../compaction/parse.js";
8
+ import { classifyTodoSectionHeading, countTodoResolvedSectionHeadings, isLegacyStrikethroughTodoLine, } from "../compaction/parse.js";
9
9
  import { isMapping } from "./schema.js";
10
- const TODO_RESOLVED_HEADING_RE = /^##\s*(?:✓\s+)?Resolved\s*$/im;
11
10
  function validateTodoResolvedPlacement(content, name) {
12
11
  const violations = [];
13
12
  let section = "other";
14
- let hasResolvedHeading = TODO_RESOLVED_HEADING_RE.test(content);
15
- let hasResolvedItems = false;
16
13
  for (const line of content.split(/\r\n|\r|\n/)) {
17
14
  const kind = classifyTodoSectionHeading(line);
18
15
  if (kind === "resolved") {
19
- hasResolvedHeading = true;
20
16
  section = "resolved";
21
17
  continue;
22
18
  }
@@ -33,20 +29,24 @@ function validateTodoResolvedPlacement(content, name) {
33
29
  continue;
34
30
  const parsed = parseTodoMarkdownListItem(trimmed);
35
31
  if (parsed?.status === "resolved") {
36
- hasResolvedItems = true;
37
32
  if (section === "severity") {
38
33
  violations.push(`${name}: resolved checkbox item must live under '## ✓ Resolved', not in severity bands`);
39
34
  break;
40
35
  }
41
36
  }
42
37
  if (isLegacyStrikethroughTodoLine(trimmed)) {
43
- hasResolvedItems = true;
44
38
  violations.push(`${name}: legacy strikethrough resolved items are not allowed; use '- [x]' under '## ✓ Resolved'`);
45
39
  break;
46
40
  }
47
41
  }
48
- if (hasResolvedItems && !hasResolvedHeading) {
49
- violations.push(`${name}: missing '## Resolved' section for resolved items`);
42
+ // Exactly one section keeps parsing and compaction unambiguous, including
43
+ // before the first item is resolved. See todo.yaml TC8.
44
+ const resolvedHeadingCount = countTodoResolvedSectionHeadings(content);
45
+ if (resolvedHeadingCount === 0) {
46
+ violations.push(`${name}: missing required '## ✓ Resolved' section`);
47
+ }
48
+ else if (resolvedHeadingCount > 1) {
49
+ violations.push(`${name}: ${resolvedHeadingCount} '## ✓ Resolved' sections found; merge into exactly one (duplicate sections hide entries from the compaction gate and parsing processes only the first).`);
50
50
  }
51
51
  return violations;
52
52
  }
@@ -143,4 +143,3 @@ export function validateMdTokens(content, name, violations) {
143
143
  violations.push(`${name}: missing YAML code block with token definitions (expected '\`\`\`yaml')`);
144
144
  }
145
145
  }
146
- //# sourceMappingURL=markdown.js.map