agentera 3.0.0-dev.5 → 3.0.0-dev.51

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 (598) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +119 -22
  3. package/bundle/CHANGELOG.md +1351 -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 +236 -0
  8. package/bundle/extract-corpus-parity.json +21 -0
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +437 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -189
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  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 +191 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3022 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  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 +155 -0
  27. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  28. package/bundle/references/cli/update-channels.yaml +19 -1
  29. package/bundle/references/cli/vocabulary-index.yaml +20 -17
  30. package/bundle/references/cli/vocabulary.md +326 -361
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/registry.json +13 -13
  33. package/bundle/skills/agentera/SKILL.md +224 -422
  34. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  35. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  36. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  37. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  38. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
  39. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  40. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  41. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
  42. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  44. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  45. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  47. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  50. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  52. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  53. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  56. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  58. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  61. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  62. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  63. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  64. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  65. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  66. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  67. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  68. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  69. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  71. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  72. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  73. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  74. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  75. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  78. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +178 -34
  80. package/bundle/skills/agentera/protocol.yaml +31 -31
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +39 -21
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +458 -36
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -17
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +342 -42
  93. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  94. package/dist/analytics/extractCorpus/cli.js +190 -0
  95. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  96. package/dist/analytics/extractCorpus/core.js +392 -0
  97. package/dist/analytics/extractCorpus/corpus.js +167 -0
  98. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  99. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  102. package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
  103. package/dist/analytics/extractCorpus/index.js +14 -0
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  107. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  108. package/dist/analytics/extractCorpus.js +2 -1791
  109. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  110. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  111. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  112. package/dist/analytics/personalGlossaryProfile.js +219 -0
  113. package/dist/analytics/profileSignals.js +211 -0
  114. package/dist/analytics/usageStats.js +169 -42
  115. package/dist/audit/terminologyDrift.js +281 -0
  116. package/dist/bin/agentera.js +3 -2
  117. package/dist/capabilities/audit/instructions.js +16 -0
  118. package/dist/capabilities/build/instructions.js +56 -0
  119. package/dist/capabilities/design/instructions.js +4 -0
  120. package/dist/capabilities/discuss/instructions.js +29 -0
  121. package/dist/capabilities/document/instructions.js +11 -0
  122. package/dist/capabilities/index.js +29 -27
  123. package/dist/capabilities/optimize/instructions.js +14 -0
  124. package/dist/capabilities/orchestrate/instructions.js +42 -0
  125. package/dist/capabilities/plan/instructions.js +33 -0
  126. package/dist/capabilities/profile/instructions.js +70 -0
  127. package/dist/capabilities/research/instructions.js +5 -0
  128. package/dist/capabilities/status/instructions.js +15 -0
  129. package/dist/capabilities/status/startupInstructions.js +34 -0
  130. package/dist/capabilities/vision/instructions.js +4 -0
  131. package/dist/cli/appContext.js +30 -24
  132. package/dist/cli/argvalidate.js +0 -1
  133. package/dist/cli/capabilityContext/benchmark.js +565 -0
  134. package/dist/cli/capabilityContext/bespoke.js +44 -0
  135. package/dist/cli/capabilityContext/build.js +242 -0
  136. package/dist/cli/capabilityContext/closeout.js +233 -0
  137. package/dist/cli/capabilityContext/contract.js +179 -0
  138. package/dist/cli/capabilityContext/evidence.js +463 -0
  139. package/dist/cli/capabilityContext/index.js +3 -0
  140. package/dist/cli/capabilityContext/orchestration.js +131 -0
  141. package/dist/cli/capabilityContext/planState.js +260 -0
  142. package/dist/cli/capabilityContext/progress.js +142 -0
  143. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  144. package/dist/cli/capabilityContext/shared.js +83 -0
  145. package/dist/cli/capabilityContext/slim.js +152 -0
  146. package/dist/cli/capabilityContext/startup.js +150 -0
  147. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  148. package/dist/cli/capabilityContext/types.js +56 -0
  149. package/dist/cli/capabilityContext.js +1 -2487
  150. package/dist/cli/commands/appHome.js +22 -0
  151. package/dist/cli/commands/capability.js +4 -4
  152. package/dist/cli/commands/compact.js +164 -14
  153. package/dist/cli/commands/doctor.js +122 -97
  154. package/dist/cli/commands/durability.js +81 -0
  155. package/dist/cli/commands/glossaryAdvice.js +138 -0
  156. package/dist/cli/commands/lint.js +26 -44
  157. package/dist/cli/commands/personalGlossary.js +176 -0
  158. package/dist/cli/commands/prime/briefOrientation.js +747 -0
  159. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  160. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  161. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  162. package/dist/cli/commands/prime/collectOrientationState.js +212 -0
  163. package/dist/cli/commands/prime/orientationOutput.js +399 -0
  164. package/dist/cli/commands/prime/types.js +1 -0
  165. package/dist/cli/commands/prime/v1Migration.js +38 -0
  166. package/dist/cli/commands/prime.js +80 -558
  167. package/dist/cli/commands/profileGrounding.js +55 -0
  168. package/dist/cli/commands/query.js +78 -53
  169. package/dist/cli/commands/report.js +96 -25
  170. package/dist/cli/commands/route.js +142 -0
  171. package/dist/cli/commands/schema.js +266 -143
  172. package/dist/cli/commands/state/decisions.js +387 -0
  173. package/dist/cli/commands/state/docs.js +70 -0
  174. package/dist/cli/commands/state/experimentRecords.js +151 -0
  175. package/dist/cli/commands/state/experiments.js +14 -0
  176. package/dist/cli/commands/state/get.js +129 -0
  177. package/dist/cli/commands/state/health.js +14 -0
  178. package/dist/cli/commands/state/index.js +16 -0
  179. package/dist/cli/commands/state/list.js +194 -0
  180. package/dist/cli/commands/state/objective.js +25 -0
  181. package/dist/cli/commands/state/plan.js +14 -0
  182. package/dist/cli/commands/state/planTasks.js +154 -0
  183. package/dist/cli/commands/state/plans.js +154 -0
  184. package/dist/cli/commands/state/progress.js +13 -0
  185. package/dist/cli/commands/state/shared.js +14 -0
  186. package/dist/cli/commands/state/todo.js +42 -0
  187. package/dist/cli/commands/state/write.js +430 -0
  188. package/dist/cli/commands/upgrade.js +146 -5
  189. package/dist/cli/commands/upgradeVerify.js +118 -0
  190. package/dist/cli/commands/validate.js +272 -223
  191. package/dist/cli/commands/verify.js +24 -9
  192. package/dist/cli/contracts/bundleStatus.js +1 -0
  193. package/dist/cli/contracts/orientationState.js +1 -0
  194. package/dist/cli/dispatch/argvParser.js +32 -0
  195. package/dist/cli/dispatch/check.js +372 -0
  196. package/dist/cli/dispatch/commands.js +27 -0
  197. package/dist/cli/dispatch/index.js +207 -0
  198. package/dist/cli/dispatch/lifecycle.js +652 -0
  199. package/dist/cli/dispatch/prime.js +139 -0
  200. package/dist/cli/dispatch/projections.js +17 -0
  201. package/dist/cli/dispatch/shared.js +63 -0
  202. package/dist/cli/dispatch/state.js +140 -0
  203. package/dist/cli/dispatch.js +1 -1294
  204. package/dist/cli/errors.js +16 -17
  205. package/dist/cli/help.js +394 -43
  206. package/dist/cli/migrationRequired.js +87 -0
  207. package/dist/cli/orientation/attention.js +61 -0
  208. package/dist/cli/orientation/corpusCoverage.js +102 -0
  209. package/dist/cli/orientation.js +438 -170
  210. package/dist/cli/planArtifacts.js +350 -0
  211. package/dist/cli/planEvidence.js +157 -0
  212. package/dist/cli/planLifecycleState.js +36 -0
  213. package/dist/cli/planTaskIndex.js +11 -0
  214. package/dist/cli/preCutoverCommand.js +32 -0
  215. package/dist/cli/prime-blob.js +71 -3
  216. package/dist/cli/profileAcquisition.js +167 -0
  217. package/dist/cli/startupCompletenessContract.js +59 -0
  218. package/dist/cli/stateQuery.js +56 -14
  219. package/dist/cli/structured.js +0 -1
  220. package/dist/cli/todoMarkdown.js +25 -12
  221. package/dist/cli/todoReadinessSelection.js +192 -0
  222. package/dist/cli/todoSeverity.js +18 -0
  223. package/dist/core/atomicWriter.js +20 -0
  224. package/dist/core/developmentChannel.js +1 -0
  225. package/dist/core/developmentInvocation.js +374 -0
  226. package/dist/core/difflib.js +0 -1
  227. package/dist/core/envPaths.js +20 -0
  228. package/dist/core/jsonValue.js +5 -0
  229. package/dist/core/paths.js +0 -1
  230. package/dist/core/pyjson.js +67 -3
  231. package/dist/core/shell.js +4 -0
  232. package/dist/core/skillIdentity.js +23 -0
  233. package/dist/core/sourceRoot.js +9 -12
  234. package/dist/core/text.js +10 -0
  235. package/dist/core/toml.js +0 -1
  236. package/dist/core/yaml.js +8 -1
  237. package/dist/eval/evalSkills.js +30 -26
  238. package/dist/eval/hybridRouteEvaluation.js +155 -0
  239. package/dist/eval/semanticEval.js +43 -20
  240. package/dist/eval/semanticFixtures.js +16 -5
  241. package/dist/hooks/common.js +11 -79
  242. package/dist/hooks/compaction/apply.js +446 -0
  243. package/dist/hooks/compaction/dryRun.js +184 -0
  244. package/dist/hooks/compaction/index.js +22 -0
  245. package/dist/hooks/compaction/parse.js +325 -0
  246. package/dist/hooks/compaction/retention.js +202 -0
  247. package/dist/hooks/compaction/status.js +360 -0
  248. package/dist/hooks/compaction/types.js +5 -0
  249. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  250. package/dist/hooks/validateArtifact/index.js +92 -0
  251. package/dist/hooks/validateArtifact/markdown.js +145 -0
  252. package/dist/hooks/validateArtifact/schema.js +546 -0
  253. package/dist/hooks/validateArtifact/traversal.js +107 -0
  254. package/dist/hooks/validateArtifact/violations.js +107 -0
  255. package/dist/migrate/v2HandoffManifest.js +452 -0
  256. package/dist/registries/activationContract.js +2 -0
  257. package/dist/registries/activationTuples.js +107 -0
  258. package/dist/registries/artifactProtocolIds.js +78 -0
  259. package/dist/registries/artifactRegistry.js +224 -63
  260. package/dist/registries/artifactSchemaProjection.js +45 -0
  261. package/dist/registries/capabilityContract.js +129 -2
  262. package/dist/registries/evaluatorHandoffContract.js +2 -3
  263. package/dist/registries/evidenceTierContract.js +371 -0
  264. package/dist/registries/glossaryAdviceContract.js +79 -0
  265. package/dist/registries/glossaryCaveatContract.js +67 -0
  266. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  267. package/dist/registries/glossaryEntryContract.js +757 -0
  268. package/dist/registries/glossaryTermIdentity.js +17 -0
  269. package/dist/registries/glossaryTermOccurrence.js +20 -0
  270. package/dist/registries/hybridRoute.js +274 -0
  271. package/dist/registries/hybridRouteReceipt.js +221 -0
  272. package/dist/registries/packagePublication.js +229 -0
  273. package/dist/registries/packageRegistry.js +187 -211
  274. package/dist/registries/todoReadinessContract.js +448 -0
  275. package/dist/registries/triggerLoader.js +174 -0
  276. package/dist/registries/verbosityBudgetContract.js +205 -0
  277. package/dist/release/releaseMetadata.js +385 -0
  278. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  279. package/dist/runtime/lifecycleAdapters.js +777 -0
  280. package/dist/runtime/lifecycleAuthority.js +453 -0
  281. package/dist/runtime/lifecycleOperationContract.js +123 -0
  282. package/dist/runtime/lifecycleOperations.js +634 -0
  283. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  284. package/dist/runtime/lifecyclePublication.js +415 -0
  285. package/dist/runtime/lifecycleSnapshot.js +438 -0
  286. package/dist/runtime/nativeResourceCleanup.js +502 -0
  287. package/dist/setup/opencode.js +20 -0
  288. package/dist/setup/opencodeConstants.js +1 -0
  289. package/dist/setup/sharedSkill.js +45 -0
  290. package/dist/setup/smokeChecks.js +21 -82
  291. package/dist/state/archiveDiscovery.js +580 -0
  292. package/dist/state/archivePublication.js +225 -0
  293. package/dist/state/archiveRecovery.js +237 -0
  294. package/dist/state/archiveReplay.js +53 -0
  295. package/dist/state/canonicalMigrationRecord.js +36 -0
  296. package/dist/state/changelog.js +221 -0
  297. package/dist/state/decisionEntities.js +367 -0
  298. package/dist/state/decisionLegacyValidation.js +215 -0
  299. package/dist/state/decisionMigrationProvenance.js +199 -0
  300. package/dist/state/decisionOverlay.js +254 -0
  301. package/dist/state/decisionRevision.js +256 -0
  302. package/dist/state/decisionRevisionMigration.js +89 -0
  303. package/dist/state/directRetrieval.js +323 -0
  304. package/dist/state/durability.js +324 -0
  305. package/dist/state/entityCutover.js +459 -0
  306. package/dist/state/entityCutoverGit.js +127 -0
  307. package/dist/state/entityGlossaryAuthority.js +13 -0
  308. package/dist/state/entityListProjection.js +187 -0
  309. package/dist/state/entityListRuntimeRegistry.js +85 -0
  310. package/dist/state/entityMigrationCausality.js +97 -0
  311. package/dist/state/entityMigrationIdentity.js +5 -0
  312. package/dist/state/entityMigrationPreview.js +846 -0
  313. package/dist/state/entityMigrationTodo.js +133 -0
  314. package/dist/state/entityPublicationContext.js +806 -0
  315. package/dist/state/entityRetrievalHelp.js +506 -0
  316. package/dist/state/entityStorage.js +899 -0
  317. package/dist/state/exactReplacementRecovery.js +18 -0
  318. package/dist/state/experimentArchive.js +63 -0
  319. package/dist/state/experimentIdentity.js +202 -0
  320. package/dist/state/healthEntities.js +262 -0
  321. package/dist/state/healthEntityValidation.js +18 -0
  322. package/dist/state/healthRepair.js +69 -0
  323. package/dist/state/installRoot.js +64 -25
  324. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  325. package/dist/state/legacyIdentity.js +47 -0
  326. package/dist/state/legacySummaryRecord.js +6 -0
  327. package/dist/state/listAccounting.js +54 -0
  328. package/dist/state/listClassification.js +17 -0
  329. package/dist/state/listCursor.js +42 -0
  330. package/dist/state/listRetrieval.js +781 -0
  331. package/dist/state/migrationSourceBinding.js +30 -0
  332. package/dist/state/objectiveExperimentEntities.js +322 -0
  333. package/dist/state/planEntities.js +982 -0
  334. package/dist/state/planIdentity.js +47 -0
  335. package/dist/state/planLineageValidation.js +52 -0
  336. package/dist/state/planReplacementTransaction.js +475 -0
  337. package/dist/state/planRetrieval.js +313 -0
  338. package/dist/state/planTaskRetrieval.js +294 -0
  339. package/dist/state/progressEntities.js +512 -0
  340. package/dist/state/progressGlossaryCaveat.js +168 -0
  341. package/dist/state/progressPublicationOrder.js +19 -0
  342. package/dist/state/projectRoot.js +62 -0
  343. package/dist/state/projectionPolicy.js +190 -0
  344. package/dist/state/retrievalAuthority.js +156 -0
  345. package/dist/state/safeProjectFile.js +155 -0
  346. package/dist/state/startupAnalysis/benchmark.js +432 -0
  347. package/dist/state/startupAnalysis/contract.js +160 -0
  348. package/dist/state/startupAnalysis/helpers.js +286 -0
  349. package/dist/state/startupAnalysis/index.js +6 -0
  350. package/dist/state/startupAnalysis/metrics.js +340 -0
  351. package/dist/state/startupAnalysis/records.js +198 -0
  352. package/dist/state/startupAnalysis/report.js +111 -0
  353. package/dist/state/startupAnalysis/threshold.js +512 -0
  354. package/dist/state/startupAnalysis.js +2 -1953
  355. package/dist/state/startupProjection.js +499 -0
  356. package/dist/state/stateMode.js +85 -0
  357. package/dist/state/stateStorageAuthority.js +47 -0
  358. package/dist/state/summaryEntityRead.js +25 -0
  359. package/dist/state/summaryMigrationProvenance.js +66 -0
  360. package/dist/state/summarySourceRowAuthority.js +36 -0
  361. package/dist/state/todoActivationSafety.js +58 -0
  362. package/dist/state/todoDocsEntities.js +1069 -0
  363. package/dist/state/todoDocsEntityValidation.js +158 -0
  364. package/dist/state/todoMarkdownProjection.js +51 -0
  365. package/dist/state/todoReconciliationActivation.js +140 -0
  366. package/dist/state/todoReconciliationInspection.js +169 -0
  367. package/dist/state/todoReconciliationRepair.js +170 -0
  368. package/dist/state/todoReconciliationTransaction.js +582 -0
  369. package/dist/state/write/assign.js +20 -0
  370. package/dist/state/write/candidateMutation.js +269 -0
  371. package/dist/state/write/errors.js +11 -0
  372. package/dist/state/write/experimentPublication.js +192 -0
  373. package/dist/state/write/explain.js +363 -0
  374. package/dist/state/write/fields.js +61 -0
  375. package/dist/state/write/glossaryPublication.js +263 -0
  376. package/dist/state/write/grammar.js +285 -0
  377. package/dist/state/write/helpers.js +29 -0
  378. package/dist/state/write/index.js +12 -0
  379. package/dist/state/write/input.js +367 -0
  380. package/dist/state/write/lock.js +837 -0
  381. package/dist/state/write/mutation.js +234 -0
  382. package/dist/state/write/operations.js +170 -0
  383. package/dist/state/write/planEvaluation.js +128 -0
  384. package/dist/state/write/planPublication.js +179 -0
  385. package/dist/state/write/runtimeOperations.js +144 -0
  386. package/dist/state/write/serialize.js +1 -0
  387. package/dist/state/write/transaction.js +52 -0
  388. package/dist/state/write/validate.js +7 -0
  389. package/dist/upgrade/appContentRefresh.js +383 -0
  390. package/dist/upgrade/appModel.js +8 -7
  391. package/dist/upgrade/atomicWriter.js +1 -0
  392. package/dist/upgrade/bundleEvidence.js +33 -0
  393. package/dist/upgrade/channels.js +12 -8
  394. package/dist/upgrade/compatibility.js +56 -21
  395. package/dist/upgrade/doctor.js +197 -192
  396. package/dist/upgrade/doctorClassifier.js +187 -0
  397. package/dist/upgrade/installedHooksRetirement.js +196 -0
  398. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  399. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  400. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  401. package/dist/upgrade/migrationPublication.js +122 -0
  402. package/dist/upgrade/nextMajorDoctor.js +42 -8
  403. package/dist/upgrade/npxPlatformStatus.js +22 -0
  404. package/dist/upgrade/projectIntegration.js +145 -187
  405. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  406. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  407. package/dist/upgrade/runtimeMigration.js +273 -363
  408. package/dist/upgrade/upgradeCommands.js +14 -1
  409. package/dist/upgrade/upgradeLock.js +85 -0
  410. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  411. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  412. package/dist/upgrade/versionResolution.js +8 -1
  413. package/dist/validate/activationArtifactEvidence.js +844 -0
  414. package/dist/validate/activationConjunction.js +816 -0
  415. package/dist/validate/activationEvidenceManifest.js +515 -0
  416. package/dist/validate/activationPackageSemantics.js +29 -0
  417. package/dist/validate/appHomeContract.js +5 -11
  418. package/dist/validate/bootstrapAuthority.js +44 -0
  419. package/dist/validate/capability.js +133 -12
  420. package/dist/validate/crossCapability.js +15 -10
  421. package/dist/validate/retainedReferenceAuthority.js +879 -0
  422. package/dist/validate/selfAudit.js +73 -37
  423. package/dist/validate/v1LegacyCruft.js +131 -0
  424. package/dist/validate/vocabularyAuthority.js +303 -0
  425. package/package.json +53 -27
  426. package/bundle/references/adapters/cursor.md +0 -213
  427. package/bundle/references/adapters/opencode.md +0 -530
  428. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  429. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  430. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  431. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  432. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  433. package/bundle/references/analysis/benchmark.md +0 -267
  434. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  435. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  436. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  437. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  438. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  439. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  440. package/bundle/references/meta/documentation-inventory.md +0 -43
  441. package/bundle/references/v1-section-mapping.md +0 -47
  442. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  443. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  444. package/bundle/skills/agentera/agents/hej.toml +0 -6
  445. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  446. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  447. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  448. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  449. package/bundle/skills/agentera/agents/planera.toml +0 -6
  450. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  451. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  452. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  453. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  454. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  456. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  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/schemas/artifacts.yaml +0 -76
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  461. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  462. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  463. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  464. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  465. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  466. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
  467. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  468. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  469. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  470. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  471. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  472. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  473. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  474. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  475. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  476. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  477. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  478. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  479. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  480. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  481. package/bundle/skills/agentera/references/contract.md +0 -1039
  482. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  483. package/bundle/skills/hej/SKILL.md +0 -69
  484. package/bundle/skills/hej/agents/hej.toml +0 -11
  485. package/bundle/skills/hej/agents/openai.yaml +0 -8
  486. package/dist/analytics/extractCorpus.js.map +0 -1
  487. package/dist/analytics/usageStats.js.map +0 -1
  488. package/dist/bin/agentera.js.map +0 -1
  489. package/dist/capabilities/dokumentera/instructions.js +0 -6
  490. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  491. package/dist/capabilities/hej/instructions.js +0 -6
  492. package/dist/capabilities/hej/instructions.js.map +0 -1
  493. package/dist/capabilities/index.js.map +0 -1
  494. package/dist/capabilities/inspektera/instructions.js +0 -6
  495. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  496. package/dist/capabilities/inspirera/instructions.js +0 -6
  497. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  498. package/dist/capabilities/optimera/instructions.js +0 -6
  499. package/dist/capabilities/optimera/instructions.js.map +0 -1
  500. package/dist/capabilities/orkestrera/instructions.js +0 -6
  501. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  502. package/dist/capabilities/planera/instructions.js +0 -6
  503. package/dist/capabilities/planera/instructions.js.map +0 -1
  504. package/dist/capabilities/profilera/instructions.js +0 -6
  505. package/dist/capabilities/profilera/instructions.js.map +0 -1
  506. package/dist/capabilities/realisera/instructions.js +0 -6
  507. package/dist/capabilities/realisera/instructions.js.map +0 -1
  508. package/dist/capabilities/resonera/instructions.js +0 -6
  509. package/dist/capabilities/resonera/instructions.js.map +0 -1
  510. package/dist/capabilities/visionera/instructions.js +0 -6
  511. package/dist/capabilities/visionera/instructions.js.map +0 -1
  512. package/dist/capabilities/visualisera/instructions.js +0 -6
  513. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  514. package/dist/cli/appContext.js.map +0 -1
  515. package/dist/cli/argvalidate.js.map +0 -1
  516. package/dist/cli/capabilityContext.js.map +0 -1
  517. package/dist/cli/commands/capability.js.map +0 -1
  518. package/dist/cli/commands/compact.js.map +0 -1
  519. package/dist/cli/commands/doctor.js.map +0 -1
  520. package/dist/cli/commands/lint.js.map +0 -1
  521. package/dist/cli/commands/prime.js.map +0 -1
  522. package/dist/cli/commands/query.js.map +0 -1
  523. package/dist/cli/commands/report.js.map +0 -1
  524. package/dist/cli/commands/schema.js.map +0 -1
  525. package/dist/cli/commands/state.js +0 -1023
  526. package/dist/cli/commands/state.js.map +0 -1
  527. package/dist/cli/commands/upgrade.js.map +0 -1
  528. package/dist/cli/commands/validate.js.map +0 -1
  529. package/dist/cli/commands/verify.js.map +0 -1
  530. package/dist/cli/dispatch.js.map +0 -1
  531. package/dist/cli/errors.js.map +0 -1
  532. package/dist/cli/help.js.map +0 -1
  533. package/dist/cli/orientation.js.map +0 -1
  534. package/dist/cli/prime-blob.js.map +0 -1
  535. package/dist/cli/stateQuery.js.map +0 -1
  536. package/dist/cli/structured.js.map +0 -1
  537. package/dist/cli/todoMarkdown.js.map +0 -1
  538. package/dist/core/difflib.js.map +0 -1
  539. package/dist/core/paths.js.map +0 -1
  540. package/dist/core/pyjson.js.map +0 -1
  541. package/dist/core/sourceRoot.js.map +0 -1
  542. package/dist/core/toml.js.map +0 -1
  543. package/dist/core/yaml.js.map +0 -1
  544. package/dist/eval/evalSkills.js.map +0 -1
  545. package/dist/eval/semanticEval.js.map +0 -1
  546. package/dist/eval/semanticFixtures.js.map +0 -1
  547. package/dist/hooks/common.js.map +0 -1
  548. package/dist/hooks/compaction.js +0 -935
  549. package/dist/hooks/compaction.js.map +0 -1
  550. package/dist/hooks/cursorPreToolUse.js +0 -19
  551. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  552. package/dist/hooks/cursorSessionStart.js +0 -71
  553. package/dist/hooks/cursorSessionStart.js.map +0 -1
  554. package/dist/hooks/sessionStart.js +0 -209
  555. package/dist/hooks/sessionStart.js.map +0 -1
  556. package/dist/hooks/sessionStop.js +0 -212
  557. package/dist/hooks/sessionStop.js.map +0 -1
  558. package/dist/hooks/validateArtifact.js +0 -935
  559. package/dist/hooks/validateArtifact.js.map +0 -1
  560. package/dist/registries/artifactRegistry.js.map +0 -1
  561. package/dist/registries/capabilityContract.js.map +0 -1
  562. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  563. package/dist/registries/packageRegistry.js.map +0 -1
  564. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  565. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  566. package/dist/setup/codex.js +0 -1197
  567. package/dist/setup/codex.js.map +0 -1
  568. package/dist/setup/copilot.js +0 -227
  569. package/dist/setup/copilot.js.map +0 -1
  570. package/dist/setup/cursor.js +0 -127
  571. package/dist/setup/cursor.js.map +0 -1
  572. package/dist/setup/doctor.js +0 -1297
  573. package/dist/setup/doctor.js.map +0 -1
  574. package/dist/setup/smokeChecks.js.map +0 -1
  575. package/dist/state/installRoot.js.map +0 -1
  576. package/dist/state/startupAnalysis.js.map +0 -1
  577. package/dist/upgrade/appModel.js.map +0 -1
  578. package/dist/upgrade/channels.js.map +0 -1
  579. package/dist/upgrade/compatibility.js.map +0 -1
  580. package/dist/upgrade/doctor.js.map +0 -1
  581. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  582. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  583. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  584. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  585. package/dist/upgrade/projectIntegration.js.map +0 -1
  586. package/dist/upgrade/runtimeMigration.js.map +0 -1
  587. package/dist/upgrade/upgradeCommands.js.map +0 -1
  588. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  589. package/dist/upgrade/versionResolution.js.map +0 -1
  590. package/dist/validate/appHomeContract.js.map +0 -1
  591. package/dist/validate/capability.js.map +0 -1
  592. package/dist/validate/crossCapability.js.map +0 -1
  593. package/dist/validate/lifecycleAdapters.js +0 -772
  594. package/dist/validate/lifecycleAdapters.js.map +0 -1
  595. package/dist/validate/selfAudit.js.map +0 -1
  596. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  597. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  598. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -0,0 +1,463 @@
1
+ import fs from "node:fs";
2
+ import { artifactPath } from "../appContext.js";
3
+ import { asList } from "../stateQuery.js";
4
+ import { capabilityContext } from "./contract.js";
5
+ import { docsConventions, sourceProvenance, uniqueList, hasRecordedValue } from "./shared.js";
6
+ import { selectEvidenceTarget, taskByRef } from "./planState.js";
7
+ import { progressVerificationSummary, retryState } from "./progress.js";
8
+ import { STATE_FAMILY_FALLBACK_COMMANDS, STATE_FAMILY_LIST_COMMANDS } from "./types.js";
9
+ import { deferredStartupFamilies } from "./startupAggregation.js";
10
+ import { preCutoverCommand } from "../preCutoverCommand.js";
11
+ export function dateFromIsoUtc(s) {
12
+ const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(s.trim());
13
+ if (!m)
14
+ return null;
15
+ const utc = Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3]));
16
+ const back = new Date(utc);
17
+ if (back.getUTCFullYear() !== Number(m[1]) || back.getUTCMonth() !== Number(m[2]) - 1 || back.getUTCDate() !== Number(m[3]))
18
+ return null;
19
+ return utc;
20
+ }
21
+ export function todayUtcMs() {
22
+ const now = new Date();
23
+ return Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
24
+ }
25
+ export function currentStateStatus(value, label, staleAfterDays = 30) {
26
+ if (typeof value !== "string" || !value.trim())
27
+ return ["unknown", null];
28
+ const observed = dateFromIsoUtc(value.trim().slice(0, 10));
29
+ if (observed === null)
30
+ return ["unknown", `${label} current-state date is not ISO-parseable in CLI state.`];
31
+ const ageDays = Math.round((todayUtcMs() - observed) / 86400000);
32
+ if (ageDays > staleAfterDays)
33
+ return ["stale", `${label} evidence is stale (${ageDays} days old; threshold=${staleAfterDays}).`];
34
+ return ["current", null];
35
+ }
36
+ export function evidenceDocsState(docs) {
37
+ const available = Boolean(docs.exists);
38
+ const nonEmptyFields = ["mapping_entries", "indexed_documents", "last_audit"].filter((f) => hasRecordedValue(docs[f]));
39
+ const [currentState, currentStateCaveat] = currentStateStatus(docs.last_audit, "Docs");
40
+ return {
41
+ status: available ? "available" : "unavailable",
42
+ source_provenance: sourceProvenance("docs", STATE_FAMILY_FALLBACK_COMMANDS.docs),
43
+ mapping_entries: docs.mapping_entries ?? 0,
44
+ indexed_documents: docs.indexed_documents ?? 0,
45
+ last_audit: docs.last_audit ?? null,
46
+ current_state: currentState,
47
+ non_empty_evidence_present: nonEmptyFields.length > 0,
48
+ non_empty_evidence_fields: nonEmptyFields,
49
+ caveats: [
50
+ ...(available ? [] : ["Docs state is unavailable in CLI docs state."]),
51
+ ...(available && currentStateCaveat ? [currentStateCaveat] : []),
52
+ ],
53
+ };
54
+ }
55
+ export function evidenceHealthState(health) {
56
+ const available = Boolean(health.exists);
57
+ const nonEmptyFields = ["id", "artifact", "trajectory", "grade"].filter((f) => hasRecordedValue(health[f]));
58
+ const auditDate = health.date ?? health.timestamp ?? null;
59
+ const [currentState, currentStateCaveat] = currentStateStatus(auditDate, "Health");
60
+ return {
61
+ status: available ? "available" : "unavailable",
62
+ source_provenance: sourceProvenance("health", STATE_FAMILY_LIST_COMMANDS.health),
63
+ id: health.id ?? null,
64
+ artifact: health.artifact ?? "health",
65
+ date: auditDate,
66
+ timestamp: auditDate,
67
+ trajectory: health.trajectory ?? null,
68
+ grade: health.grade ?? null,
69
+ degrading: Boolean(health.degrading),
70
+ current_state: currentState,
71
+ non_empty_evidence_present: nonEmptyFields.length > 0,
72
+ non_empty_evidence_fields: nonEmptyFields,
73
+ caveats: [
74
+ ...(available ? [] : ["Health state is unavailable in CLI health state."]),
75
+ ...(available && currentStateCaveat ? [currentStateCaveat] : []),
76
+ ],
77
+ };
78
+ }
79
+ export function evidenceTodoState(schemas, todoItems) {
80
+ const info = schemas.todo ?? { path: "TODO.md", record: undefined, schema: {}, fields: {} };
81
+ const exists = fs.existsSync(artifactPath(info, "todo"));
82
+ return {
83
+ status: exists ? "available" : "unavailable",
84
+ source_provenance: sourceProvenance("todo", STATE_FAMILY_FALLBACK_COMMANDS.todo),
85
+ open_count: todoItems.length,
86
+ items: todoItems,
87
+ non_empty_evidence_present: todoItems.length > 0,
88
+ non_empty_evidence_fields: todoItems.length > 0 ? ["items"] : [],
89
+ caveats: exists ? [] : ["TODO state is unavailable in CLI TODO state."],
90
+ };
91
+ }
92
+ export function evidenceProtectedStateChecks() {
93
+ const source = sourceProvenance("evidence_context", preCutoverCommand("prime --context audit --format json"), "protected_state_checks");
94
+ return {
95
+ status: "not_checked_by_design",
96
+ allowed_status_values: ["verified_local", "not_checked_by_design", "requires_manual_check", "unavailable"],
97
+ source_provenance: source,
98
+ checks: [
99
+ {
100
+ name: "vision_state",
101
+ status: "not_checked_by_design",
102
+ protected: true,
103
+ checked: false,
104
+ source_provenance: source,
105
+ caveats: ["Vision state is protected during execution cycles and was not read or modified."],
106
+ },
107
+ {
108
+ name: "objective_state",
109
+ status: "not_checked_by_design",
110
+ protected: true,
111
+ checked: false,
112
+ source_provenance: source,
113
+ caveats: ["Objective state is protected during execution cycles and was not read or modified."],
114
+ },
115
+ ],
116
+ caveats: ["Protected-state boundaries are reported without reading or modifying vision or objective state."],
117
+ };
118
+ }
119
+ export function evidenceVersionChecks(docs) {
120
+ const conventions = docsConventions(docs);
121
+ const versionFiles = asList(conventions.version_files);
122
+ const semverPolicy = conventions.semver_policy && typeof conventions.semver_policy === "object" && !Array.isArray(conventions.semver_policy) ? conventions.semver_policy : {};
123
+ const source = sourceProvenance("docs", STATE_FAMILY_FALLBACK_COMMANDS.docs, "summary.conventions");
124
+ const ec = (field) => sourceProvenance("evidence_context", preCutoverCommand("prime --context audit --format json"), field);
125
+ const checks = [
126
+ {
127
+ name: "docs_version_policy",
128
+ status: Object.keys(semverPolicy).length > 0 ? "verified_local" : "unavailable",
129
+ source_provenance: source,
130
+ evidence: { semver_policy: semverPolicy },
131
+ caveats: Object.keys(semverPolicy).length > 0 ? [] : ["Docs semver policy is unavailable in CLI docs state."],
132
+ },
133
+ {
134
+ name: "version_files",
135
+ status: versionFiles.length > 0 ? "verified_local" : "unavailable",
136
+ source_provenance: source,
137
+ evidence: { version_files: versionFiles },
138
+ caveats: versionFiles.length > 0 ? [] : ["Docs version files are unavailable in CLI docs state."],
139
+ },
140
+ {
141
+ name: "publication_evidence",
142
+ status: "requires_manual_check",
143
+ source_provenance: ec("version_checks.publication_evidence"),
144
+ remote_checks_performed: false,
145
+ registry_checks_performed: false,
146
+ caveats: ["Publication and registry evidence is not recorded in CLI evidence context and requires manual verification if needed."],
147
+ },
148
+ {
149
+ name: "remote_push_evidence",
150
+ status: "requires_manual_check",
151
+ source_provenance: ec("version_checks.remote_push_evidence"),
152
+ remote_checks_performed: false,
153
+ caveats: ["Remote push evidence is not recorded in CLI evidence context and requires manual verification if needed."],
154
+ },
155
+ {
156
+ name: "installed_app_refresh",
157
+ status: "not_checked_by_design",
158
+ source_provenance: ec("version_checks.installed_app_refresh"),
159
+ refresh_performed: false,
160
+ caveats: ["Installed app refresh state is deliberately not checked or changed by evidence context."],
161
+ },
162
+ ];
163
+ let status;
164
+ if (checks.some((c) => c.status === "requires_manual_check"))
165
+ status = "requires_manual_check";
166
+ else if (checks.some((c) => c.status === "unavailable"))
167
+ status = "unavailable";
168
+ else
169
+ status = "verified_local";
170
+ return {
171
+ status,
172
+ allowed_status_values: ["verified_local", "not_checked_by_design", "requires_manual_check", "unavailable"],
173
+ source_provenance: source,
174
+ checks,
175
+ caveats: checks.flatMap((c) => (c.caveats ?? [])),
176
+ };
177
+ }
178
+ export function evidencePlanCriteria(plan, target) {
179
+ const taskRefObj = target.task && typeof target.task === "object" && !Array.isArray(target.task) ? target.task : null;
180
+ const selected = taskByRef(plan, taskRefObj);
181
+ const criteria = selected && typeof selected === "object" ? asList(selected.acceptance) : [];
182
+ return {
183
+ status: criteria.length > 0 ? "available" : "incomplete",
184
+ source_provenance: sourceProvenance("plan", STATE_FAMILY_FALLBACK_COMMANDS.plan, "entries.acceptance"),
185
+ target: taskRefObj,
186
+ criteria,
187
+ criteria_count: criteria.length,
188
+ non_empty_evidence_present: criteria.length > 0,
189
+ non_empty_evidence_fields: criteria.length > 0 ? ["criteria"] : [],
190
+ caveats: criteria.length > 0 ? [] : ["Selected evaluation target has no acceptance criteria in CLI plan state."],
191
+ };
192
+ }
193
+ export function residualRiskEntry(category, status, message, sp) {
194
+ return { category, status, message, source_provenance: sp };
195
+ }
196
+ function decisionHistoryEntries(history) {
197
+ return asList(history.entries).flatMap((value) => {
198
+ if (!value || typeof value !== "object" || Array.isArray(value))
199
+ return [];
200
+ const entry = value;
201
+ const record = entry.record;
202
+ if (!record || typeof record !== "object" || Array.isArray(record))
203
+ return [];
204
+ return [{ ...record, id: entry.id ?? null, artifact: entry.artifact ?? "decisions", retrieval: entry.retrieval ?? null }];
205
+ });
206
+ }
207
+ function decisionHistoryCounts(history) {
208
+ return history.counts && typeof history.counts === "object" && !Array.isArray(history.counts)
209
+ ? history.counts
210
+ : {};
211
+ }
212
+ export function decisionContextRisk(history) {
213
+ const entries = decisionHistoryEntries(history);
214
+ const counts = decisionHistoryCounts(history);
215
+ if (history.command !== "state decisions list") {
216
+ return {
217
+ status: "unavailable",
218
+ source_provenance: sourceProvenance("decisions", STATE_FAMILY_LIST_COMMANDS.decisions),
219
+ summary: null,
220
+ caveats: ["Decision state is unavailable in CLI evidence context."],
221
+ };
222
+ }
223
+ const omitted = Number(counts.remaining ?? history.omitted_count ?? 0);
224
+ const missing = entries.filter((entry) => !entry.id || !entry.date || !entry.question || !entry.choice).length;
225
+ const caveats = uniqueList([
226
+ ...(omitted > 0 ? [`Decision startup history omits ${omitted} decision detail entr${omitted === 1 ? "y" : "ies"}; run ${STATE_FAMILY_LIST_COMMANDS.decisions} for the ordinary bounded list.`] : []),
227
+ ...(missing > 0 ? [`${missing} bounded decision entr${missing === 1 ? "y is" : "ies are"} missing review context fields.`] : []),
228
+ ]);
229
+ return {
230
+ status: caveats.length > 0 ? "caveated" : "available",
231
+ source_provenance: sourceProvenance("decisions", STATE_FAMILY_LIST_COMMANDS.decisions),
232
+ summary: {
233
+ total_entries: Number(counts.total ?? entries.length),
234
+ returned_entries: Number(counts.returned ?? entries.length),
235
+ omitted_entries: omitted,
236
+ entries_with_missing_fields: missing,
237
+ authority: "canonical_entity_files",
238
+ },
239
+ caveats,
240
+ };
241
+ }
242
+ export function parseDecisionReviewDate(value) {
243
+ if (typeof value !== "string" || !value.trim())
244
+ return null;
245
+ return dateFromIsoUtc(value.trim().slice(0, 10));
246
+ }
247
+ export function decisionReviewDue(entry) {
248
+ const satisfaction = entry.satisfaction && typeof entry.satisfaction === "object" && !Array.isArray(entry.satisfaction) ? entry.satisfaction : {};
249
+ const candidates = [
250
+ ["review_date", entry.review_date],
251
+ ["review_by", entry.review_by],
252
+ ["satisfaction.review_date", satisfaction.review_date],
253
+ ["satisfaction.review_by", satisfaction.review_by],
254
+ ["satisfaction.review_due", satisfaction.review_due],
255
+ ];
256
+ for (const [field, value] of candidates) {
257
+ const parsed = parseDecisionReviewDate(value);
258
+ if (parsed !== null)
259
+ return [field, parsed];
260
+ }
261
+ return [null, null];
262
+ }
263
+ export function decisionLabel(entry) {
264
+ const id = entry.id;
265
+ if (typeof id === "string" && id)
266
+ return `Decision ${id}`;
267
+ const number = entry.number;
268
+ if (number !== null && number !== undefined && number !== "")
269
+ return `Decision ${number}`;
270
+ const summary = entry.summary;
271
+ if (typeof summary === "string" && summary.trim())
272
+ return summary.trim().split(":", 1)[0];
273
+ return "Decision entry";
274
+ }
275
+ export function isoFromUtcMs(utc) {
276
+ const d = new Date(utc);
277
+ return `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}-${String(d.getUTCDate()).padStart(2, "0")}`;
278
+ }
279
+ export function decisionReviewPressure(history) {
280
+ const sp = sourceProvenance("decisions", STATE_FAMILY_LIST_COMMANDS.decisions);
281
+ if (history.command !== "state decisions list") {
282
+ return { status: "unavailable", source_provenance: sp, summary: null, stale_protected_decisions: [], caveats: [] };
283
+ }
284
+ const activeEntries = decisionHistoryEntries(history);
285
+ const counts = decisionHistoryCounts(history);
286
+ const omitted = Number(counts.remaining ?? history.omitted_count ?? 0);
287
+ const protectedActive = activeEntries.filter((e) => e.satisfaction && typeof e.satisfaction === "object" && !Array.isArray(e.satisfaction) && e.satisfaction.review_needed);
288
+ const protectedArchive = [];
289
+ const today = todayUtcMs();
290
+ const stale = [];
291
+ let caveats = omitted > 0
292
+ ? [`Decision review pressure is bounded with ${omitted} decision(s) omitted; continue with ${STATE_FAMILY_LIST_COMMANDS.decisions}.`]
293
+ : [];
294
+ for (const [collection, entries] of [["decisions", protectedActive], ["archive", protectedArchive]]) {
295
+ for (const entry of entries) {
296
+ const [field, reviewDate] = decisionReviewDue(entry);
297
+ if (reviewDate === null || reviewDate > today)
298
+ continue;
299
+ const label = decisionLabel(entry);
300
+ const message = `${label} requires protected decision review because ${field} elapsed on ${isoFromUtcMs(reviewDate)}.`;
301
+ stale.push({ label, collection, reason: "review_date_elapsed", review_date: isoFromUtcMs(reviewDate), source_field: field, message });
302
+ caveats.push(message);
303
+ }
304
+ }
305
+ const protectedOverflowCount = Math.max(protectedActive.length - 10, protectedArchive.length - 40, protectedActive.length + protectedArchive.length - 50, 0);
306
+ if (protectedOverflowCount) {
307
+ const message = "Protected decisions exceed the 10/40/50 compaction budget; " +
308
+ `${protectedOverflowCount} protected decision(s) require review before compaction can complete.`;
309
+ stale.push({ label: "decisions", collection: "decisions/archive", reason: "protected_compaction_budget_pressure", protected_overflow_count: protectedOverflowCount, message });
310
+ caveats.push(message);
311
+ }
312
+ caveats = uniqueList(caveats);
313
+ return {
314
+ status: stale.length > 0 || protectedOverflowCount > 0 ? "review_required" : omitted > 0 ? "degraded" : "available",
315
+ source_provenance: sp,
316
+ summary: {
317
+ protected_active_decisions: protectedActive.length,
318
+ protected_archive_decisions: protectedArchive.length,
319
+ protected_overflow_count: protectedOverflowCount,
320
+ stale_protected_decisions: stale.length,
321
+ returned_decisions: Number(counts.returned ?? activeEntries.length),
322
+ total_decisions: Number(counts.total ?? activeEntries.length),
323
+ omitted_decisions: omitted,
324
+ },
325
+ stale_protected_decisions: stale,
326
+ caveats,
327
+ };
328
+ }
329
+ export function auditEvidenceContext(capability, schemas, plan, progress, health, todoItems, docs, profile, bundle, decisionHistory) {
330
+ if (capability !== "audit")
331
+ return null;
332
+ const capabilityContract = capabilityContext(capability) ?? {};
333
+ const evaluationTarget = selectEvidenceTarget(plan);
334
+ const planCriteria = evidencePlanCriteria(plan, evaluationTarget);
335
+ const progressVerification = progressVerificationSummary(progress);
336
+ const docsState = evidenceDocsState(docs);
337
+ const healthState = evidenceHealthState(health);
338
+ const todoState = evidenceTodoState(schemas, todoItems);
339
+ const protectedStateChecks = evidenceProtectedStateChecks();
340
+ const versionChecks = evidenceVersionChecks(docs);
341
+ const decisionRisk = decisionContextRisk(decisionHistory);
342
+ const reviewPressure = decisionReviewPressure(decisionHistory);
343
+ let stateCaveats = [];
344
+ const attributedRisks = [];
345
+ for (const family of deferredStartupFamilies(capabilityContract)) {
346
+ const message = `${family} detail is deferred from prime --context startup.`;
347
+ stateCaveats.push(message);
348
+ attributedRisks.push(residualRiskEntry("deferred_state_detail", "caveated", message, sourceProvenance("prime", preCutoverCommand("prime --context audit --format json"), "capability_context.startup.availability")));
349
+ }
350
+ if (bundle.status !== "up_to_date") {
351
+ const message = "Agentera app files are not up to date; this is a caveat, not approval to repair or update app files.";
352
+ stateCaveats.push(message);
353
+ attributedRisks.push(residualRiskEntry("installed_app_state", "caveated", message, sourceProvenance("status", preCutoverCommand("prime --format json"), "app.status")));
354
+ }
355
+ if (profile.status !== "valid") {
356
+ const message = "profile-derived state is unavailable in prime --context response.";
357
+ stateCaveats.push(message);
358
+ attributedRisks.push(residualRiskEntry("profile_state", "unavailable", message, sourceProvenance("status", preCutoverCommand("prime --format json"), "profile.status")));
359
+ }
360
+ else if (profile.stale === true) {
361
+ const message = "profile-derived state is stale; this is a caveat, not approval to refresh profile state.";
362
+ stateCaveats.push(message);
363
+ attributedRisks.push(residualRiskEntry("profile_state", "caveated", message, sourceProvenance("status", preCutoverCommand("prime --format json"), "profile.stale")));
364
+ }
365
+ for (const component of [evaluationTarget, planCriteria, progressVerification, docsState, healthState, todoState, protectedStateChecks, versionChecks]) {
366
+ for (const caveat of (component.caveats ?? [])) {
367
+ stateCaveats.push(caveat);
368
+ // cast: component source_provenance comes from evidence builders backed by parsed artifact/decision state
369
+ const componentSp = component.source_provenance ?? sourceProvenance("evidence_context", preCutoverCommand("prime --context audit --format json"));
370
+ attributedRisks.push(residualRiskEntry("evidence_family", "caveated", caveat, componentSp));
371
+ }
372
+ }
373
+ for (const caveat of (decisionRisk.caveats ?? [])) {
374
+ stateCaveats.push(caveat);
375
+ attributedRisks.push(residualRiskEntry("decisions_context", decisionRisk.status, caveat, decisionRisk.source_provenance));
376
+ }
377
+ for (const caveat of (reviewPressure.caveats ?? [])) {
378
+ stateCaveats.push(caveat);
379
+ attributedRisks.push(residualRiskEntry("decision_review_pressure", reviewPressure.status, caveat, reviewPressure.source_provenance));
380
+ }
381
+ const retry = retryState();
382
+ for (const caveat of (retry.caveats ?? [])) {
383
+ stateCaveats.push(caveat);
384
+ attributedRisks.push(residualRiskEntry("retry_state", retry.status, caveat, retry.source_provenance));
385
+ }
386
+ stateCaveats = uniqueList(stateCaveats);
387
+ const dedupedRisks = [];
388
+ const seen = new Set();
389
+ for (const risk of attributedRisks) {
390
+ const key = `${risk.category}\u0000${risk.message}`;
391
+ if (!seen.has(key)) {
392
+ seen.add(key);
393
+ dedupedRisks.push(risk);
394
+ }
395
+ }
396
+ const requiredState = {
397
+ evaluation_target: evaluationTarget.status === "selected",
398
+ plan_criteria: planCriteria.status === "available",
399
+ progress_verification: progressVerification.status === "available",
400
+ docs_state: docsState.status === "available",
401
+ health_state: healthState.status === "available",
402
+ todo_state: todoState.status === "available",
403
+ source_contract: true,
404
+ };
405
+ const missingRequired = Object.entries(requiredState).filter(([, present]) => !present).map(([name]) => name);
406
+ const fallbackCommands = uniqueList([
407
+ STATE_FAMILY_FALLBACK_COMMANDS.plan,
408
+ STATE_FAMILY_FALLBACK_COMMANDS.progress,
409
+ STATE_FAMILY_FALLBACK_COMMANDS.docs,
410
+ STATE_FAMILY_FALLBACK_COMMANDS.health,
411
+ STATE_FAMILY_FALLBACK_COMMANDS.todo,
412
+ preCutoverCommand("state query --list-artifacts --format json"),
413
+ ]);
414
+ return {
415
+ capability: "audit",
416
+ evaluation_target: evaluationTarget,
417
+ plan_criteria: planCriteria,
418
+ progress_verification: progressVerification,
419
+ docs_state: docsState,
420
+ health_state: healthState,
421
+ todo_state: todoState,
422
+ protected_state_checks: protectedStateChecks,
423
+ version_checks: versionChecks,
424
+ decision_context: decisionRisk,
425
+ decision_review_pressure: reviewPressure,
426
+ residual_risks: {
427
+ status: dedupedRisks.length > 0 ? "caveated" : "none_recorded",
428
+ items: stateCaveats,
429
+ attributed_items: dedupedRisks,
430
+ caveats: [],
431
+ },
432
+ state_family_caveats: stateCaveats,
433
+ fallback_commands: fallbackCommands,
434
+ source_contract: {
435
+ complete_for_evidence_context: missingRequired.length === 0,
436
+ caveated: stateCaveats.length > 0,
437
+ raw_artifact_reads_required: false,
438
+ raw_artifact_read_policy: "Use this evidence_context and included status state first. Run listed routine/query CLI fallback commands " +
439
+ "for missing or incomplete evidence state; raw artifact reads are last-resort diagnostics, not normal evaluation startup behavior.",
440
+ required_evidence_state: requiredState,
441
+ missing_required_evidence_state: missingRequired,
442
+ fallback_commands: fallbackCommands,
443
+ caveats: stateCaveats,
444
+ owns: [
445
+ "evaluation target",
446
+ "plan criteria",
447
+ "progress verification",
448
+ "docs state",
449
+ "health state",
450
+ "TODO state",
451
+ "protected-state placeholder checks",
452
+ "version boundary checks",
453
+ "compacted decision caveats",
454
+ "protected decision review pressure",
455
+ "attributed residual risks",
456
+ "fallback commands",
457
+ "raw-read policy",
458
+ "truthful completeness metadata",
459
+ ],
460
+ deferred: [],
461
+ },
462
+ };
463
+ }
@@ -0,0 +1,3 @@
1
+ export { CAPABILITY_NAMES } from "./types.js";
2
+ export { validatePrimeCapability } from "./shared.js";
3
+ export { buildPrimeCapabilityContextPayload } from "./startup.js";
@@ -0,0 +1,131 @@
1
+ import { capabilityContext } from "./contract.js";
2
+ import { entryStatus, uniqueList } from "./shared.js";
3
+ import { formatPlanTaskDepRef, indexPlanTasksByNumber, orchestrationTaskSummary, planDependsOnList, resolvePlanTaskByRef, DONE_STATUSES_ORCH, BLOCKED_STATUSES_ORCH, } from "./planState.js";
4
+ import { progressVerificationSummary, retryState, evaluatorHandoff } from "./progress.js";
5
+ import { STATE_FAMILY_FALLBACK_COMMANDS } from "./types.js";
6
+ import { planLifecycleState } from "../planLifecycleState.js";
7
+ import { planTaskIndex } from "../planTaskIndex.js";
8
+ import { entityListFamily } from "../../state/entityRetrievalHelp.js";
9
+ import { deferredStartupFamilies } from "./startupAggregation.js";
10
+ import { preCutoverCommand, preCutoverCommandFromBare } from "../preCutoverCommand.js";
11
+ export function orchestrationContext(capability, plan, progress, health, todoItems, docs, profile, nextAction) {
12
+ if (capability !== "orchestrate")
13
+ return null;
14
+ const lifecycle = planLifecycleState(plan);
15
+ const tasks = lifecycle.current_plan_degraded === true
16
+ ? []
17
+ : planTaskIndex(plan);
18
+ const taskByNumber = indexPlanTasksByNumber(tasks);
19
+ const dependencyReady = [];
20
+ const blocked = [];
21
+ const complete = tasks.filter((task) => entryStatus(task, "pending") === "complete").length;
22
+ const superseded = tasks.filter((task) => entryStatus(task, "pending") === "superseded").length;
23
+ const statusCounts = tasks.reduce((counts, task) => {
24
+ const status = entryStatus(task, "pending");
25
+ counts[status] = (counts[status] ?? 0) + 1;
26
+ return counts;
27
+ }, {});
28
+ for (const task of tasks) {
29
+ const status = entryStatus(task, "pending");
30
+ if (DONE_STATUSES_ORCH.has(status))
31
+ continue;
32
+ const reasons = [];
33
+ if (BLOCKED_STATUSES_ORCH.has(status))
34
+ reasons.push(`task status is ${status}`);
35
+ for (const dep of planDependsOnList(task)) {
36
+ const dependency = resolvePlanTaskByRef(taskByNumber, dep);
37
+ if (dependency === undefined)
38
+ reasons.push(`dependency ${formatPlanTaskDepRef(dep)} is not present in plan tasks`);
39
+ else if (!DONE_STATUSES_ORCH.has(entryStatus(dependency, "pending"))) {
40
+ reasons.push(`dependency ${formatPlanTaskDepRef(dep)} is ${entryStatus(dependency, "pending")}`);
41
+ }
42
+ }
43
+ if (reasons.length > 0)
44
+ blocked.push({ ...orchestrationTaskSummary(task), blocked_reasons: reasons });
45
+ else
46
+ dependencyReady.push(orchestrationTaskSummary(task));
47
+ }
48
+ const selected = dependencyReady.length > 0 ? dependencyReady[0] : null;
49
+ const planTasks = entityListFamily("plan_tasks");
50
+ const queueCommand = plan.id
51
+ ? preCutoverCommand(`state ${planTasks.commandTokens.join(" ")} list ${String(plan.id)} --limit 100 --format json`)
52
+ : null;
53
+ const queueRetrieval = queueCommand
54
+ ? { list: queueCommand, restart: queueCommand, get: preCutoverCommandFromBare(planTasks.get) }
55
+ : null;
56
+ const stateCaveats = [];
57
+ let fallbackCommands = [];
58
+ const capabilityContract = capabilityContext(capability) ?? {};
59
+ for (const family of deferredStartupFamilies(capabilityContract)) {
60
+ stateCaveats.push(`${family} detail is deferred from prime --context startup.`);
61
+ }
62
+ if (!plan.exists) {
63
+ stateCaveats.push("plan state is unavailable; task queue cannot be complete.");
64
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.plan);
65
+ }
66
+ if (lifecycle.status === "degraded") {
67
+ stateCaveats.push(...(lifecycle.caveats ?? []));
68
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.plan);
69
+ }
70
+ if (!progress.exists) {
71
+ stateCaveats.push("progress state is unavailable; latest verification is not summarized here.");
72
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.progress);
73
+ }
74
+ if (!health.exists) {
75
+ stateCaveats.push("health state is unavailable or incomplete.");
76
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.health);
77
+ }
78
+ if (!docs.exists) {
79
+ stateCaveats.push("docs mapping state is unavailable or incomplete.");
80
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.docs);
81
+ }
82
+ if (todoItems.length === 0) {
83
+ stateCaveats.push("todo state has no open entries in prime --context response; absence may mean none open or unavailable.");
84
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.todo);
85
+ }
86
+ if (profile.status !== "valid") {
87
+ stateCaveats.push("profile-derived state is unavailable in prime --context response.");
88
+ }
89
+ else if (profile.stale === true) {
90
+ stateCaveats.push("profile-derived state is stale; this is a caveat, not approval to refresh profile state.");
91
+ }
92
+ fallbackCommands = uniqueList(fallbackCommands);
93
+ const progressVerification = progressVerificationSummary(progress);
94
+ const retry = retryState(selected, tasks);
95
+ const handoff = evaluatorHandoff(selected, progressVerification, retry, stateCaveats);
96
+ const contextComplete = Boolean(plan.exists) && tasks.length > 0 && stateCaveats.length === 0 && (dependencyReady.length + blocked.length === 0 || queueRetrieval !== null);
97
+ return {
98
+ capability: "orchestrate",
99
+ task_queue: { total: tasks.length, complete, superseded, status_counts: statusCounts, dependency_ready_tasks: dependencyReady, blocked_tasks: blocked, retrieval: queueRetrieval },
100
+ selected_next_task: selected,
101
+ selected_next_action: nextAction,
102
+ progress_verification: progressVerification,
103
+ retry_state: retry,
104
+ plan_lifecycle_state: lifecycle,
105
+ evaluator_handoff: handoff,
106
+ task_summaries: tasks.map((task) => orchestrationTaskSummary(task)),
107
+ state_family_caveats: stateCaveats,
108
+ fallback_commands: fallbackCommands,
109
+ source_contract: {
110
+ complete_for_orchestration_context: contextComplete,
111
+ raw_artifact_reads_required: false,
112
+ raw_artifact_read_policy: "Use this orchestration_context and included status state first. Run listed routine CLI fallback commands " +
113
+ "for missing or incomplete state families; raw artifact reads are last-resort diagnostics, not normal startup behavior.",
114
+ fallback_commands: fallbackCommands,
115
+ caveats: stateCaveats,
116
+ owns: [
117
+ "dependency-ready task queue",
118
+ "blocked task reasons",
119
+ "selected next task",
120
+ "task acceptance summaries",
121
+ "task evidence summaries",
122
+ "latest progress verification summary",
123
+ "retry_state provenance",
124
+ "evaluator handoff inputs",
125
+ "state-family caveats",
126
+ "plan lifecycle state",
127
+ ],
128
+ deferred: [],
129
+ },
130
+ };
131
+ }