@kontourai/flow-agents 2.3.0 → 3.0.0

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 (301) hide show
  1. package/.github/CODEOWNERS +16 -0
  2. package/.github/workflows/ci.yml +44 -0
  3. package/.github/workflows/trust-reconcile.yml +62 -4
  4. package/AGENTS.md +4 -4
  5. package/CHANGELOG.md +62 -0
  6. package/CONTEXT.md +35 -0
  7. package/README.md +9 -3
  8. package/agents/dev.json +1 -1
  9. package/agents/tool-code-reviewer.json +1 -1
  10. package/agents/tool-planner.json +3 -3
  11. package/agents/tool-verifier.json +3 -3
  12. package/build/src/cli/assignment-provider.d.ts +1 -0
  13. package/build/src/cli/assignment-provider.js +748 -0
  14. package/build/src/cli/console-learning-projection.js +3 -2
  15. package/build/src/cli/effective-assignment-provider-settings.d.ts +1 -0
  16. package/build/src/cli/effective-assignment-provider-settings.js +125 -0
  17. package/build/src/cli/init.js +104 -21
  18. package/build/src/cli/kit.js +37 -6
  19. package/build/src/cli/pull-work-provider.js +1 -1
  20. package/build/src/cli/usage-feedback.js +3 -3
  21. package/build/src/cli/validate-hook-influence.js +1 -0
  22. package/build/src/cli/validate-workflow-artifacts.js +27 -7
  23. package/build/src/cli/workflow-artifact-cleanup-audit.js +36 -2
  24. package/build/src/cli/workflow-sidecar.d.ts +14 -7
  25. package/build/src/cli/workflow-sidecar.js +938 -168
  26. package/build/src/cli.js +6 -0
  27. package/build/src/flow-kit/validate.d.ts +23 -0
  28. package/build/src/flow-kit/validate.js +67 -1
  29. package/build/src/index.d.ts +1 -1
  30. package/build/src/index.js +1 -1
  31. package/build/src/lib/flow-resolver.d.ts +6 -4
  32. package/build/src/lib/flow-resolver.js +125 -58
  33. package/build/src/lib/local-artifact-root.d.ts +14 -2
  34. package/build/src/lib/local-artifact-root.js +22 -5
  35. package/build/src/lib/workflow-learning-projection.js +2 -2
  36. package/build/src/runtime-adapters.d.ts +12 -0
  37. package/build/src/runtime-adapters.js +56 -16
  38. package/build/src/tools/build-universal-bundles.js +49 -16
  39. package/build/src/tools/generate-context-map.js +10 -8
  40. package/build/src/tools/validate-source-tree.js +24 -1
  41. package/console.telemetry.json +22 -0
  42. package/context/contracts/artifact-contract.md +40 -7
  43. package/context/contracts/assignment-provider-contract.md +239 -0
  44. package/context/contracts/builder-kit-workflow-state-contract.md +5 -2
  45. package/context/contracts/decision-registry-contract.md +265 -0
  46. package/context/contracts/delivery-contract.md +3 -1
  47. package/context/contracts/execution-contract.md +25 -0
  48. package/context/contracts/governance-adapter-contract.md +2 -0
  49. package/context/contracts/knowledge-store-contract.md +197 -0
  50. package/context/contracts/planning-contract.md +4 -1
  51. package/context/contracts/review-contract.md +7 -3
  52. package/context/contracts/sandbox-policy.md +2 -0
  53. package/context/contracts/standing-directives.md +13 -0
  54. package/context/contracts/verification-contract.md +11 -1
  55. package/context/contracts/work-item-contract.md +3 -1
  56. package/context/deferred/parallelization.md +1 -1
  57. package/context/gate-awareness.md +4 -4
  58. package/context/scripts/git-status.sh +2 -2
  59. package/context/scripts/hooks/config-protection.js +502 -2
  60. package/context/scripts/hooks/lib/config-protection-remedies.js +69 -0
  61. package/context/scripts/hooks/run-hook.js +14 -1
  62. package/context/scripts/hooks/stop-goal-fit.js +1140 -99
  63. package/context/scripts/hooks/workflow-steering.js +212 -6
  64. package/context/settings/assignment-provider-settings.json +33 -0
  65. package/docs/adr/0007-flow-skill-kit-tool-boundary.md +2 -0
  66. package/docs/adr/0015-flow-flow-agents-boundary-reconciliation.md +35 -0
  67. package/docs/adr/0019-kit-dependency-ownership.md +62 -0
  68. package/docs/adr/0020-trust-reconcile-manifest-and-claim-classification.md +290 -0
  69. package/docs/adr/0021-assignment-leases-and-stale-claim-takeover.md +221 -0
  70. package/docs/adr/0022-fail-closed-delivery-reconciliation-with-governed-exemptions.md +463 -0
  71. package/docs/agent-system-guidebook.md +3 -3
  72. package/docs/agent-usage-feedback-loop.md +6 -6
  73. package/docs/context-map.md +10 -7
  74. package/docs/decisions/decision-records.md +57 -0
  75. package/docs/decisions/index.md +17 -0
  76. package/docs/decisions/knowledge-store-provider.md +51 -0
  77. package/docs/decisions/model-routing.md +63 -0
  78. package/docs/decisions/promotion-gate.md +52 -0
  79. package/docs/decisions/standing-directives.md +66 -0
  80. package/docs/developer-architecture.md +1 -1
  81. package/docs/fixture-ownership.md +4 -0
  82. package/docs/flow-kit-repository-contract.md +5 -5
  83. package/docs/getting-started.md +12 -2
  84. package/docs/integrations/harness-install.md +2 -1
  85. package/docs/kit-authoring-guide.md +64 -5
  86. package/docs/knowledge-kit.md +5 -1
  87. package/docs/learnings/2026-07-improvement-program.md +203 -0
  88. package/docs/migrations.md +6 -5
  89. package/docs/north-star.md +2 -2
  90. package/docs/operating-layers.md +4 -3
  91. package/docs/repository-structure.md +5 -5
  92. package/docs/skills-map.md +8 -8
  93. package/docs/spec/runtime-hook-surface.md +19 -15
  94. package/docs/spikes/graph-provider-2026-07.md +155 -0
  95. package/docs/standards-register.md +7 -7
  96. package/docs/trust-anchor-adoption.md +105 -4
  97. package/docs/work-item-adapters.md +1 -1
  98. package/docs/workflow-artifact-lifecycle.md +72 -9
  99. package/docs/workflow-eval-strategy.md +3 -3
  100. package/docs/workflow-shared-contracts.md +3 -2
  101. package/docs/workflow-usage-guide.md +260 -21
  102. package/evals/acceptance/DEMO-false-completion.md +20 -11
  103. package/evals/acceptance/prove-capture-teeth-declared.sh +15 -15
  104. package/evals/acceptance/prove-capture-teeth.sh +11 -11
  105. package/evals/acceptance/test_kiro_harness.sh +1 -1
  106. package/evals/ci/antigaming-suite.sh +5 -0
  107. package/evals/ci/run-baseline.sh +71 -1
  108. package/evals/fixtures/assignment-provider/actor-a.json +6 -0
  109. package/evals/fixtures/assignment-provider/actor-b.json +6 -0
  110. package/evals/fixtures/assignment-provider/github-issue-claimed.json +27 -0
  111. package/evals/fixtures/assignment-provider/github-issue-unassigned.json +7 -0
  112. package/evals/fixtures/assignment-provider/liveness-fresh.json +9 -0
  113. package/evals/fixtures/assignment-provider/liveness-stale.json +9 -0
  114. package/evals/fixtures/flow-kit-repository/invalid-bad-dependency/flows/review.flow.json +26 -0
  115. package/evals/fixtures/flow-kit-repository/invalid-bad-dependency/kit.json +13 -0
  116. package/evals/fixtures/flow-kit-repository/valid-with-dependency/flows/review.flow.json +26 -0
  117. package/evals/fixtures/flow-kit-repository/valid-with-dependency/kit.json +13 -0
  118. package/evals/fixtures/hook-influence/cases.json +32 -0
  119. package/evals/fixtures/pull-work-provider/github-issues.json +6 -6
  120. package/evals/fixtures/trust-reconcile-exploits/fabricated-attestation.json +59 -0
  121. package/evals/fixtures/trust-reconcile-exploits/no-label-bypass.json +36 -0
  122. package/evals/fixtures/trust-reconcile-exploits/skip-assumed-bypass.json +59 -0
  123. package/evals/fixtures/trust-reconcile-exploits/status-misassertion.json +48 -0
  124. package/evals/fixtures/trust-reconcile-exploits/waived-command-check.json +44 -0
  125. package/evals/fixtures/trust-reconcile-mixed-bundle/mixed-bundle.json +159 -0
  126. package/evals/fixtures/trust-reconcile-ws3/ws3-bundle.json +920 -0
  127. package/evals/integration/test_actor_identity.sh +254 -0
  128. package/evals/integration/test_assignment_provider_github.sh +318 -0
  129. package/evals/integration/test_assignment_provider_local_file.sh +222 -0
  130. package/evals/integration/test_builder_step_producers.sh +33 -23
  131. package/evals/integration/test_bundle_install.sh +22 -16
  132. package/evals/integration/test_bundle_lifecycle.sh +11 -11
  133. package/evals/integration/test_captured_fail_reconciliation.sh +50 -50
  134. package/evals/integration/test_checkpoint_signing.sh +43 -0
  135. package/evals/integration/test_claim_lookup.sh +4 -4
  136. package/evals/integration/test_codex_hook_resolution.sh +114 -0
  137. package/evals/integration/test_command_log_concurrency.sh +8 -8
  138. package/evals/integration/test_command_log_fork_classification.sh +3 -3
  139. package/evals/integration/test_command_log_integrity.sh +16 -16
  140. package/evals/integration/test_console_learning_projection.sh +1 -1
  141. package/evals/integration/test_critique_supersession_roundtrip.sh +182 -0
  142. package/evals/integration/test_dual_emit_flow_step.sh +145 -0
  143. package/evals/integration/test_enforcer_expects_driven.sh +12 -12
  144. package/evals/integration/test_evidence_capture_hook.sh +14 -13
  145. package/evals/integration/test_fixture_retirement_audit.sh +2 -2
  146. package/evals/integration/test_flow_agents_statusline.sh +2 -2
  147. package/evals/integration/test_flow_kit_install_git.sh +52 -0
  148. package/evals/integration/test_flow_kit_repository.sh +2 -0
  149. package/evals/integration/test_flowdef_session_activation.sh +6 -6
  150. package/evals/integration/test_flowdef_union_floor_regression.sh +429 -0
  151. package/evals/integration/test_gate_bypass_chain.sh +52 -40
  152. package/evals/integration/test_gate_lockdown.sh +97 -73
  153. package/evals/integration/test_gate_review_inquiry_records.sh +3 -3
  154. package/evals/integration/test_goal_fit_escape_hatch.sh +10 -10
  155. package/evals/integration/test_goal_fit_ghost_session.sh +104 -0
  156. package/evals/integration/test_goal_fit_hook.sh +32 -32
  157. package/evals/integration/test_goal_fit_rederive.sh +9 -9
  158. package/evals/integration/test_hook_category_behaviors.sh +103 -0
  159. package/evals/integration/test_hook_influence_cases.sh +1 -0
  160. package/evals/integration/test_install_merge.sh +262 -1
  161. package/evals/integration/test_kit_identity_trust.sh +6 -6
  162. package/evals/integration/test_liveness_conflict_injection.sh +587 -0
  163. package/evals/integration/test_liveness_heartbeat.sh +677 -0
  164. package/evals/integration/test_liveness_verdict.sh +394 -0
  165. package/evals/integration/test_local_flow_kit_install.sh +15 -0
  166. package/evals/integration/test_phase_map_and_gate_claim.sh +63 -11
  167. package/evals/integration/test_promote_gate.sh +178 -0
  168. package/evals/integration/test_publish_delivery.sh +23 -6
  169. package/evals/integration/test_pull_work_assignment_join.sh +132 -0
  170. package/evals/integration/test_pull_work_liveness_preflight.sh +394 -0
  171. package/evals/integration/test_pull_work_provider.sh +2 -2
  172. package/evals/integration/test_reconcile_soundness.sh +37 -13
  173. package/evals/integration/test_resolvefirststep_security.sh +22 -0
  174. package/evals/integration/test_runtime_adapter_activation.sh +87 -18
  175. package/evals/integration/test_session_resume_roundtrip.sh +147 -0
  176. package/evals/integration/test_sidecar_field_preservation.sh +249 -0
  177. package/evals/integration/test_trust_reconcile.sh +11 -10
  178. package/evals/integration/test_trust_reconcile_manifest.sh +79 -0
  179. package/evals/integration/test_trust_reconcile_mixed_bundle.sh +96 -0
  180. package/evals/integration/test_trust_reconcile_negatives.sh +759 -0
  181. package/evals/integration/test_usage_feedback_global.sh +5 -5
  182. package/evals/integration/test_validate_artifacts_portability.sh +60 -0
  183. package/evals/integration/test_verify_cli.sh +2 -2
  184. package/evals/integration/test_veritas_governance_kit.sh +117 -0
  185. package/evals/integration/test_workflow_artifact_cleanup_audit.sh +26 -1
  186. package/evals/integration/test_workflow_artifacts.sh +33 -0
  187. package/evals/integration/test_workflow_sidecar_writer.sh +802 -74
  188. package/evals/integration/test_workflow_steering_hook.sh +175 -5
  189. package/evals/lib/codex-provider.sh +1 -1
  190. package/evals/lib/node.sh +19 -1
  191. package/evals/run.sh +32 -0
  192. package/evals/static/test_decisions.sh +150 -0
  193. package/evals/static/test_flowdef_codeowners_coverage.sh +62 -0
  194. package/evals/static/test_knowledge_providers.sh +23 -0
  195. package/evals/static/test_package.sh +19 -10
  196. package/evals/static/test_universal_bundles.sh +48 -3
  197. package/evals/static/test_workflow_skills.sh +41 -8
  198. package/kits/builder/flows/build.flow.json +3 -74
  199. package/kits/builder/flows/publish-learn.flow.json +90 -0
  200. package/kits/builder/kit.json +11 -0
  201. package/kits/builder/skills/builder-shape/SKILL.md +1 -1
  202. package/kits/builder/skills/deliver/SKILL.md +32 -11
  203. package/kits/builder/skills/design-probe/SKILL.md +4 -4
  204. package/kits/builder/skills/evidence-gate/SKILL.md +26 -1
  205. package/kits/builder/skills/execute-plan/SKILL.md +2 -2
  206. package/kits/builder/skills/fix-bug/SKILL.md +2 -0
  207. package/kits/builder/skills/gate-review/SKILL.md +6 -6
  208. package/kits/builder/skills/idea-to-backlog/SKILL.md +1 -1
  209. package/kits/builder/skills/learning-review/SKILL.md +7 -7
  210. package/kits/builder/skills/pickup-probe/SKILL.md +5 -4
  211. package/kits/builder/skills/plan-work/SKILL.md +27 -5
  212. package/kits/builder/skills/pull-work/SKILL.md +148 -5
  213. package/kits/builder/skills/release-readiness/SKILL.md +4 -4
  214. package/kits/builder/skills/review-work/SKILL.md +24 -1
  215. package/kits/builder/skills/tdd-workflow/SKILL.md +2 -0
  216. package/kits/builder/skills/verify-work/SKILL.md +8 -1
  217. package/kits/catalog.json +6 -0
  218. package/kits/knowledge/kit.json +35 -0
  219. package/kits/knowledge/providers/conformance/fixtures/git-repo/CONTEXT.md +12 -0
  220. package/kits/knowledge/providers/conformance/fixtures/git-repo/docs/decisions/old-sprocket-shape.md +13 -0
  221. package/kits/knowledge/providers/conformance/fixtures/git-repo/docs/decisions/sprocket-shape.md +14 -0
  222. package/kits/knowledge/providers/conformance/fixtures/git-repo/docs/decisions/widget-format.md +14 -0
  223. package/kits/knowledge/providers/conformance/fixtures/git-repo/docs/learnings/fixture-learning.md +7 -0
  224. package/kits/knowledge/providers/conformance/fixtures/work-item/issues.json +30 -0
  225. package/kits/knowledge/providers/conformance/suite.test.js +125 -0
  226. package/kits/knowledge/providers/git-repo/index.js +236 -0
  227. package/kits/knowledge/providers/health/health-pass.test.js +99 -0
  228. package/kits/knowledge/providers/health/index.js +153 -0
  229. package/kits/knowledge/providers/index.js +24 -0
  230. package/kits/knowledge/providers/lib/model.js +91 -0
  231. package/kits/knowledge/providers/lib/schema-validate.js +119 -0
  232. package/kits/knowledge/providers/markdown-vault/index.js +169 -0
  233. package/kits/knowledge/providers/work-item/index.js +204 -0
  234. package/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +178 -0
  235. package/kits/veritas-governance/docs/README.md +75 -0
  236. package/kits/veritas-governance/fixtures/readiness/not-ready.readiness-report.json +4645 -0
  237. package/kits/veritas-governance/fixtures/readiness/ready.readiness-report.json +4403 -0
  238. package/kits/veritas-governance/flows/readiness-check.flow.json +35 -0
  239. package/kits/veritas-governance/kit.json +16 -0
  240. package/package.json +11 -5
  241. package/packaging/README.md +2 -2
  242. package/packaging/conformance/fixtures/config-protection--allow-read-state-json.json +20 -0
  243. package/packaging/conformance/fixtures/config-protection--block-write-state-json.json +20 -0
  244. package/packaging/conformance/fixtures/stop-goal-fit--block-bundle-disputed-claim.json +1 -1
  245. package/packaging/conformance/fixtures/stop-goal-fit--block-capture-contradicts-claimed-pass.json +1 -1
  246. package/packaging/manifest.json +9 -10
  247. package/schemas/assignment-provider-settings.schema.json +125 -0
  248. package/schemas/decision-record.schema.json +109 -0
  249. package/schemas/knowledge/edge.schema.json +54 -0
  250. package/schemas/knowledge/health-report.schema.json +45 -0
  251. package/schemas/knowledge/node.schema.json +49 -0
  252. package/schemas/knowledge/proposal.schema.json +53 -0
  253. package/schemas/workflow-evidence.schema.json +1 -1
  254. package/schemas/workflow-state.schema.json +5 -0
  255. package/scripts/README.md +8 -3
  256. package/scripts/check-content-boundary.cjs +1 -1
  257. package/scripts/check-decisions.cjs +356 -0
  258. package/scripts/ci/derive-claim-status.mjs +74 -0
  259. package/scripts/ci/trust-reconcile.js +957 -103
  260. package/scripts/git-status.sh +2 -2
  261. package/scripts/hooks/claude-telemetry-hook.js +37 -3
  262. package/scripts/hooks/codex-telemetry-hook.js +36 -2
  263. package/scripts/hooks/config-protection.js +102 -30
  264. package/scripts/hooks/evidence-capture.js +3 -3
  265. package/scripts/hooks/lib/actor-identity.js +368 -0
  266. package/scripts/hooks/lib/config-protection-remedies.js +69 -0
  267. package/scripts/hooks/lib/liveness-heartbeat.js +361 -0
  268. package/scripts/hooks/lib/liveness-policy.js +127 -0
  269. package/scripts/hooks/lib/liveness-read.js +105 -12
  270. package/scripts/hooks/lib/liveness-write.js +46 -0
  271. package/scripts/hooks/lib/local-artifact-paths.js +12 -6
  272. package/scripts/hooks/opencode-telemetry-hook.js +27 -1
  273. package/scripts/hooks/pi-telemetry-hook.js +27 -1
  274. package/scripts/hooks/stop-goal-fit.js +157 -26
  275. package/scripts/hooks/workflow-steering.js +77 -3
  276. package/scripts/install-codex-home.sh +138 -38
  277. package/scripts/statusline/flow-agents-statusline.js +2 -2
  278. package/src/cli/assignment-provider.ts +845 -0
  279. package/src/cli/console-learning-projection.ts +3 -2
  280. package/src/cli/effective-assignment-provider-settings.ts +112 -0
  281. package/src/cli/init.ts +101 -21
  282. package/src/cli/kit.ts +37 -6
  283. package/src/cli/public-api.test.mjs +58 -6
  284. package/src/cli/pull-work-provider.ts +1 -1
  285. package/src/cli/trust-bundle-policy-order.test.mjs +87 -0
  286. package/src/cli/usage-feedback.ts +3 -3
  287. package/src/cli/validate-hook-influence.ts +1 -0
  288. package/src/cli/validate-workflow-artifacts.ts +27 -7
  289. package/src/cli/veritas-readiness-adapter.test.mjs +267 -0
  290. package/src/cli/workflow-artifact-cleanup-audit.ts +35 -2
  291. package/src/cli/workflow-sidecar.ts +933 -168
  292. package/src/cli.ts +6 -0
  293. package/src/flow-kit/validate.ts +74 -1
  294. package/src/index.ts +6 -2
  295. package/src/lib/flow-resolver.ts +123 -55
  296. package/src/lib/local-artifact-root.ts +24 -5
  297. package/src/lib/workflow-learning-projection.ts +2 -2
  298. package/src/runtime-adapters.ts +61 -15
  299. package/src/tools/build-universal-bundles.ts +49 -16
  300. package/src/tools/generate-context-map.ts +10 -8
  301. package/src/tools/validate-source-tree.ts +24 -1
@@ -50,13 +50,13 @@ Flow Agents may need local schemas for reliability glue that existing standards
50
50
 
51
51
  | Format | Purpose | Target Location | Status |
52
52
  | --- | --- | --- | --- |
53
- | Workflow state | Current phase, owner, next action, status, and resumability data | `.flow-agents/<slug>/state.json` | Draft schema: `schemas/workflow-state.schema.json` |
54
- | Acceptance criteria | Criteria, source request, evidence requirements, and goal-fit status | `.flow-agents/<slug>/acceptance.json` | Draft schema: `schemas/workflow-acceptance.schema.json` |
55
- | Evidence summary | Proof commands, standard refs, skipped checks, not-verified gaps, and external evidence links | `.flow-agents/<slug>/evidence.json` | Draft schema: `schemas/workflow-evidence.schema.json` |
56
- | Handoff | What another agent or future session needs to continue safely | `.flow-agents/<slug>/handoff.json` | Draft schema: `schemas/workflow-handoff.schema.json` |
57
- | Critique record | Reviewer passes, findings, severity, and resolution state for critique loops | `.flow-agents/<slug>/critique.json` | Draft schema: `schemas/workflow-critique.schema.json` |
58
- | Release readiness | Merge, release, deploy, hold, rollback, docs, and operational readiness decisions | `.flow-agents/<slug>/release.json` | Draft schema: `schemas/workflow-release.schema.json` |
59
- | Learning record | Repeated failure, correction, pattern, and recommended system update | `.flow-agents/<slug>/learning.json` or `.telemetry/outcomes.jsonl` | Draft schema: `schemas/workflow-learning.schema.json` |
53
+ | Workflow state | Current phase, owner, next action, status, and resumability data | `.kontourai/flow-agents/<slug>/state.json` | Draft schema: `schemas/workflow-state.schema.json` |
54
+ | Acceptance criteria | Criteria, source request, evidence requirements, and goal-fit status | `.kontourai/flow-agents/<slug>/acceptance.json` | Draft schema: `schemas/workflow-acceptance.schema.json` |
55
+ | Evidence summary | Proof commands, standard refs, skipped checks, not-verified gaps, and external evidence links | `.kontourai/flow-agents/<slug>/evidence.json` | Draft schema: `schemas/workflow-evidence.schema.json` |
56
+ | Handoff | What another agent or future session needs to continue safely | `.kontourai/flow-agents/<slug>/handoff.json` | Draft schema: `schemas/workflow-handoff.schema.json` |
57
+ | Critique record | Reviewer passes, findings, severity, and resolution state for critique loops | `.kontourai/flow-agents/<slug>/critique.json` | Draft schema: `schemas/workflow-critique.schema.json` |
58
+ | Release readiness | Merge, release, deploy, hold, rollback, docs, and operational readiness decisions | `.kontourai/flow-agents/<slug>/release.json` | Draft schema: `schemas/workflow-release.schema.json` |
59
+ | Learning record | Repeated failure, correction, pattern, and recommended system update | `.kontourai/flow-agents/<slug>/learning.json` or `.telemetry/outcomes.jsonl` | Draft schema: `schemas/workflow-learning.schema.json` |
60
60
  | Context map | Compact project map: structure, commands, conventions, test strategy, Kits, and recent state | Generated under `.flow-agents/` or configurable cache | Planned |
61
61
  | Kit Catalog | Product-facing catalog of Flow Kits and their activation, layered over the always-installed standalone base | `kits/catalog.json` plus generated export catalog metadata | Catalog: `kits/catalog.json` |
62
62
  | Governance adapter | Optional bridge from Flow Agents evidence gates to tools such as Veritas | `context/contracts/governance-adapter-contract.md` | Draft contract |
@@ -106,12 +106,91 @@ for the files that declare what CI runs:
106
106
 
107
107
  ```
108
108
  # Trust anchor config — requires owner review.
109
- # An agent cannot weaken verify-command without a human approving the change.
109
+ # An agent cannot weaken verify-command or the reconcile manifest without a human
110
+ # approving the change.
110
111
  .github/workflows/trust-verify.yml @your-org/owners
111
112
  package.json @your-org/owners
113
+ evals/ci/run-baseline.sh @your-org/owners
112
114
  ```
113
115
 
114
- Adjust paths and team names for your repo structure.
116
+ `package.json` covers both `trust-reconcile-verify` and the `trust-reconcile-manifest`
117
+ declaration (see below); `evals/ci/run-baseline.sh` covers the manifest registry when you
118
+ source the manifest from a `run-baseline.sh`-shaped registry. Adjust paths and team names
119
+ for your repo structure.
120
+
121
+ ## Declaring a Manifest (Multiple Commands)
122
+
123
+ The single `trust-reconcile-verify` command above is the anchor's standalone fresh-verify
124
+ (and the legacy reconcile path — a manifest of size 1). To reconcile **granular,
125
+ per-acceptance-criterion** evidence — some commands, some session-local/manual/provider
126
+ evidence — declare a **reconcile manifest**: a set of named, individually-re-runnable
127
+ commands, each of which must actually run in a required CI lane (see ADR 0020).
128
+
129
+ Resolution priority (first match wins):
130
+
131
+ 1. CLI `--manifest '<json>'`
132
+ 2. `TRUST_RECONCILE_MANIFEST` environment variable (JSON)
133
+ 3. `package.json` `"trust-reconcile-manifest"` — either an inline array, or a string
134
+ command that emits the JSON:
135
+
136
+ ```json
137
+ {
138
+ "trust-reconcile-manifest": [
139
+ { "id": "unit", "command": "npm test" },
140
+ { "id": "lint", "command": "npm run lint" },
141
+ { "id": "types", "command": "npm run typecheck" }
142
+ ]
143
+ }
144
+ ```
145
+
146
+ Every `id`/`command` here must be a command your required CI actually runs. If your repo
147
+ already has a lane registry that CI invokes, point the key at its machine-readable emit
148
+ instead of duplicating it (this is what Flow Agents does — see the mirror section):
149
+
150
+ ```json
151
+ { "scripts": { "trust-reconcile-manifest": "bash evals/ci/run-baseline.sh --manifest-json" } }
152
+ ```
153
+ 4. `evals/ci/run-baseline.sh --manifest-json` (auto-detected, if present).
154
+
155
+ **How classification works.** A claim reconciles per-command against fresh CI results only
156
+ when its evidence is `evidenceType: "test_output"` **and** its command matches a manifest
157
+ entry. Honest session-local evidence (`human_attestation`, `crawl_observation`,
158
+ `document_citation`, `policy_rule`, `source_excerpt`, `attestation`) is never flagged
159
+ "not-run" for lacking a command — it is accepted on its Surface-derived `verified`/`assumed`
160
+ status. A `test_output` claim whose command is not in the manifest is still a divergence
161
+ (you cannot self-label an arbitrary command `test_output` to dodge the manifest).
162
+
163
+ **Session-local passes are loudly, not quietly, marked.** A non-command-backed claim that
164
+ re-derives `verified` (and carries no waiver) is NOT independently re-runnable by CI — the
165
+ anchor can only confirm the bundle is internally self-consistent, not that the underlying
166
+ attestation is true. It prints a distinct line for every such claim:
167
+
168
+ ```
169
+ [trust-reconcile] ATTESTED (not independently verifiable at L0): '<claimId>' (<claimType>) evidenceType=<type> — accepted on bundle-internal consistency only; see ADR 0020 Residuals
170
+ ```
171
+
172
+ plus a summary count (`N attested claim(s) accepted without independent verification`). This
173
+ does not change the exit code — attestations are not blocked, only disclosed — so review the
174
+ `ATTESTED` lines and count in any bundle before trusting it. See the **Residuals** section of
175
+ [ADR 0020](adr/0020-trust-reconcile-manifest-and-claim-classification.md) for the full
176
+ disclosure (fabricated self-consistent attestations, unauthenticated `approved_by`, and the
177
+ evidenceType-laundering route).
178
+
179
+ **Waiving an accepted gap.** For an honestly-accepted gap, record it with both flags:
180
+
181
+ ```bash
182
+ npm run workflow:sidecar -- record-evidence <artifact-dir> --verdict pass \
183
+ --check-json '{"id":"load-test","kind":"external","status":"skip","summary":"sustained-load perf test"}' \
184
+ --accepted-gap-reason "load-test env not provisioned this cycle; tracked for the perf milestone" \
185
+ --waived-by "your-name"
186
+ ```
187
+
188
+ Both `--accepted-gap-reason` and `--waived-by` are required together — an accepted gap
189
+ with no justification or approver is refused (no silent waiver). Reuse a **separate**
190
+ `record-evidence` invocation for waived checks: the flags apply to every check in the
191
+ invocation. The anchor prints each waived claim on a distinct, un-suppressible
192
+ `[trust-reconcile] WAIVED: ...` line in the required job's own log — reviewed and visible,
193
+ never silent.
115
194
 
116
195
  ## Configuring the Verify Command
117
196
 
@@ -164,9 +243,14 @@ Flow Agents uses the same pattern in its own repository:
164
243
 
165
244
  - **`scripts/ci/trust-reconcile.js`** — the anchor script (runs in
166
245
  `.github/workflows/trust-reconcile.yml`).
167
- - **`package.json` `trust-reconcile-verify`** — `npm run build && npm run eval:static`.
246
+ - **`package.json` `trust-reconcile-verify`** — `npm run build && npm run eval:static`
247
+ (the standalone fresh-verify / legacy single-command reconcile path).
248
+ - **`package.json` `trust-reconcile-manifest`** — `bash evals/ci/run-baseline.sh
249
+ --manifest-json` (the reconcile manifest *is* the live `run-baseline.sh` `LANE_*`
250
+ registry — every entry runs in a required `ci.yml` lane by construction).
168
251
  - **`evals/ci/antigaming-suite.sh`** — the regression suite that proves the gate and
169
- anchor work; runs in the required `ci.yml` lane.
252
+ anchor work (including `test_trust_reconcile_manifest.sh` and the end-to-end
253
+ `test_trust_reconcile_mixed_bundle.sh`); runs in the required `ci.yml` lane.
170
254
  - **Branch protection** on `main` — `Trust Reconcile` required, `enforce_admins` on.
171
255
 
172
256
  ## Adoption Checklist
@@ -192,6 +276,23 @@ the mismatch. Fix the underlying test failure.
192
276
  **"trust divergence: command contains exit-code-laundering operator"**: A claimed
193
277
  command used `||`, `; true`, or `; exit 0`. These mask real exit codes. Remove them.
194
278
 
279
+ **"command is not in the reconcile manifest"**: A `test_output` claim named a command that
280
+ is not a manifest entry. Either declare the command in your `trust-reconcile-manifest` (and
281
+ ensure it runs in a required CI lane), or, if the evidence is genuinely session-local
282
+ (manual/provider/observation), record it with a non-`test_output` `evidenceType` so it is
283
+ classified session-local instead of expected to be CI-re-runnable.
284
+
285
+ **"session-local claim ... asserts pass ... but has no waiver and no Surface-derived
286
+ verified/assumed status"**: An honest session-local claim must either resolve a real
287
+ `verified`/`assumed` Surface status from its own evidence, or be explicitly waived with
288
+ `--accepted-gap-reason` + `--waived-by`. Classification is not a pass bypass.
289
+
195
290
  **"checkpoint-only bundle cannot be reconciled per-command"**: A `delivery/trust.bundle`
196
291
  was expected but only `delivery/trust.checkpoint.json` was found. The deliver skill
197
292
  publishes the full bundle; ensure it ran correctly.
293
+
294
+ **"ATTESTED (not independently verifiable at L0): ..."**: Not an error — the job still
295
+ passes. This is the anchor telling you a claim was accepted on bundle-internal consistency
296
+ only (no CI command to re-run and no independent, cryptographically-verified attestation).
297
+ Review each `ATTESTED` line and the summary count before trusting the bundle; see
298
+ [ADR 0020's Residuals section](adr/0020-trust-reconcile-manifest-and-claim-classification.md).
@@ -69,4 +69,4 @@ Do not treat missing CI, missing required review, missing branch protection data
69
69
 
70
70
  ## Artifact Lifecycle
71
71
 
72
- Local workflow artifacts under `.flow-agents/<slug>/` or a distribution-specific artifact root are runtime/session state by default. Provider records may link to those artifacts, but long-lived decisions should be promoted into durable docs, release notes, changelogs, ADRs, or provider comments/descriptions that are intended to persist.
72
+ Local workflow artifacts under `.kontourai/flow-agents/<slug>/` or a distribution-specific artifact root are runtime/session state by default. Provider records may link to those artifacts, but long-lived decisions should be promoted into durable docs, release notes, changelogs, ADRs, or provider comments/descriptions that are intended to persist.
@@ -4,7 +4,7 @@ title: Workflow Artifact Lifecycle
4
4
 
5
5
  # Workflow Artifact Lifecycle
6
6
 
7
- Flow Agents treats task artifacts as useful working memory, not permanent product documentation. Feature branches should promote durable planning, decisions, evidence pointers, and acceptance notes into normal project docs, source, schemas, or provider records instead of carrying `.flow-agents/` runtime files.
7
+ Flow Agents treats task artifacts as useful working memory, not permanent product documentation. Feature branches should promote durable planning, decisions, evidence pointers, and acceptance notes into normal project docs, source, schemas, or provider records instead of carrying `.kontourai/flow-agents/` runtime files.
8
8
 
9
9
  The local artifact root is a current-state dashboard first and a short-lived recovery cache second. It should answer "what needs attention now?" without forcing agents to sift through old successful deliveries.
10
10
 
@@ -17,17 +17,19 @@ npm run workflow-artifact-cleanup-audit -- --artifact-root .flow-agents
17
17
  npm run workflow-artifact-cleanup-audit -- --artifact-root .flow-agents --json
18
18
  ```
19
19
 
20
+ The default root for local runtime artifacts is `.kontourai/flow-agents`. `.flow-agents` may hold explicit durable Flow Agents config/install state, but it is not a runtime fallback. Move old local sessions with the migration script instead of relying on automatic fallback reads.
21
+
20
22
  The command scans immediate workflow directories, skips non-workflow lanes such as `archive/`, and reports active WIP separately from cleanup candidates, terminal done records, active learning follow-ups, and invalid sidecars. This first slice is dry-run classification only: it does not delete, archive, move, or rewrite runtime artifacts by default, and it has no apply mode.
21
23
 
22
24
  Use the Current-State Semantics and Local Retention Policy sections below to interpret each bucket. In particular, learning records with `learning.status: followup_required` or any `routing[].status: open` remain active learning follow-ups until every route is completed, opened elsewhere, deferred with a trigger, accepted, or rejected.
23
25
 
24
26
  ## Artifact Lanes
25
27
 
26
- Use one local lane under `.flow-agents/`:
28
+ Use one local non-durable lane under `.kontourai/flow-agents/`:
27
29
 
28
30
  | Lane | Path | Commit Policy | Purpose |
29
31
  | --- | --- | --- | --- |
30
- | Runtime workspace | `.flow-agents/<slug>/` | Do not commit | Local session state, sidecars, delegate events, scratch evidence, and recovery notes. |
32
+ | Runtime workspace | `.kontourai/flow-agents/<slug>/` | Do not commit | Local session state, sidecars, delegate events, scratch evidence, and recovery notes. |
31
33
 
32
34
  The runtime workspace stays local because it may contain stale session state, machine-specific paths, or noisy intermediate artifacts. When a branch needs cross-session or cross-person traceability, promote the durable summary, decisions, evidence pointers, and acceptance notes into docs, source, schemas, or provider records instead of committing runtime artifacts.
33
35
 
@@ -41,10 +43,71 @@ Treat `state.json` as the active-work signal for local users and `pull-work`.
41
43
  | `verified` with `next_action.status: continue` | Local evidence passed, but release, final acceptance, or learning is not closed. | Active shepherding candidate. |
42
44
  | `verified` with `next_action.status: done` | Evidence passed and the next phase was completed outside the state machine or by a provider record. | Cleanup candidate; should be advanced to a terminal state during final acceptance. |
43
45
  | `accepted` with `phase: learning` and `learning.status: followup_required` | Learning was captured but at least one routed follow-up is still open or undecided. | Active learning follow-up until routed to backlog, docs, evals, skills, knowledge, or an explicit deferred trigger. |
44
- | `delivered`, `accepted`, or `archived` with `phase: done`, or `accepted`/`archived` with closed learning routing | Completed local workflow. | Not active WIP; retain only while useful for recovery or audit. |
46
+ | `delivered`, `accepted`, or `archived` with `phase: done`, or `accepted`/`archived` with closed learning routing | Completed local workflow. | Terminal only once a promotion claim is recorded (see [Promote-Then-Archive Gate](#promote-then-archive-gate)); a delivered/accepted session with no promotion claim is a cleanup candidate, not terminal. Retain only while useful for recovery or audit. |
45
47
 
46
48
  `verified` is not a terminal state. It means the verifier supplied evidence. Final acceptance must still record the provider change, CI/release result, docs promotion decision, and any learning route before the workflow stops being active.
47
49
 
50
+ ## Promote-Then-Archive Gate
51
+
52
+ Archiving a delivered session is not a parallel chore to promoting its durable
53
+ residue — it is **gated on** it. The sequence is:
54
+
55
+ ```
56
+ final acceptance -> promote -> archive
57
+ ```
58
+
59
+ Durable-residue extraction is the archival act. A delivered session's decisions,
60
+ vocabulary, learnings, and doc updates must be promoted into durable living docs
61
+ (`docs/decisions/<slug>.md`, `CONTEXT.md`, `docs/learnings/*`, `README.md`,
62
+ `context/contracts/`, schemas, provider records) before the session is retired,
63
+ so no delivered work is retired without its knowledge extracted.
64
+
65
+ ### The promotion claim
66
+
67
+ The `promote` step records **what was promoted where** and writes a **promotion
68
+ claim** into the session `trust.bundle`:
69
+
70
+ ```bash
71
+ # Real durable residue: each --evidence-path must exist on disk at record time.
72
+ flow-agents workflow-sidecar promote <session-dir> \
73
+ --evidence-path docs/decisions/<slug>.md \
74
+ --evidence-path CONTEXT.md
75
+ ```
76
+
77
+ The claim is **session-local by construction** (check kind `policy` ->
78
+ `policy_rule` evidence, no command / `execution.label`). It therefore needs **no
79
+ new reconcile-manifest entry** and can **never** become a `[not-run]` /
80
+ unbacked-command divergence at CI `trust-reconcile`: the reconciler classifies it
81
+ session-local and accepts it as an ATTESTED claim. The durable doc paths are the
82
+ claim's evidence refs; each is verified to exist on disk when the claim is
83
+ recorded (a missing path fails loud), and they are mirrored into an auditable
84
+ `promotion.json` in the session directory. The claim is detectable by the archive
85
+ gate and validators via `claim.metadata.promotion` without any manifest change.
86
+
87
+ ### Empty-promotion path
88
+
89
+ When a delivered session genuinely produced **no durable residue** (e.g. a pure
90
+ refactor with no decision, vocabulary, or doc change), record an explicit,
91
+ auditable no-residue promotion rather than skipping the gate:
92
+
93
+ ```bash
94
+ flow-agents workflow-sidecar promote <session-dir> \
95
+ --none --reason "<why nothing durable was promoted>"
96
+ ```
97
+
98
+ This still produces a promotion claim (with `none: true` and the reason), so the
99
+ decision that nothing needed promoting is recorded, not silently assumed.
100
+
101
+ ### Archive enforcement
102
+
103
+ `workflow-artifact-cleanup-audit` classifies a **delivered or accepted** session
104
+ that reached a terminal shape **without** a promotion claim as a
105
+ `cleanup_candidate` (blocked from archive) with a reason naming the `promote`
106
+ remedy — not `terminal_done`. With the claim (real residue **or** `--none`) it
107
+ classifies `terminal_done` and may be archived. Already-`archived` sessions are
108
+ past the gate and are never re-flagged; this gate is not a backfill of historical
109
+ archives.
110
+
48
111
  ## Learning Closeout
49
112
 
50
113
  Learning records are a routing surface, not a permanent parking lot.
@@ -75,13 +138,13 @@ Durable learning should be promoted by target:
75
138
 
76
139
  ## Local Retention Policy
77
140
 
78
- For local-only users, keep enough local state to recover recent work, but do not use `.flow-agents/<slug>/` as the long-term system of record.
141
+ For local-only users, keep enough local state to recover recent work, but do not use `.kontourai/flow-agents/<slug>/` as the long-term system of record.
79
142
 
80
143
  Recommended defaults:
81
144
 
82
145
  | Artifact class | Retain locally | Durable destination |
83
146
  | --- | --- | --- |
84
- | Active WIP, blockers, and unresolved decisions | Until resolved | Current `.flow-agents/<slug>/` state and handoff. |
147
+ | Active WIP, blockers, and unresolved decisions | Until resolved | Current `.kontourai/flow-agents/<slug>/` state and handoff. |
85
148
  | Recently merged or accepted deliveries | 14-30 days, or until the next queue audit | PR body, issue comments, release records, promoted docs, or archived evidence refs. |
86
149
  | Security, migration, release, or provider-governance evidence | 30-90 days when useful for audit | Provider record, release note, durable doc, or external evidence store. |
87
150
  | Routine successful local runtime artifacts | Delete or archive after durable promotion and recovery window | Usually none beyond provider record and docs. |
@@ -117,10 +180,10 @@ Before merge to `main`:
117
180
 
118
181
  1. Promote durable behavior, contracts, decisions, operations notes, and usage guidance into long-lived docs such as `README.md`, `docs/`, `docs/adr/`, schema docs, runbooks, changelogs, or provider records.
119
182
  2. Make sure the durable record names the promotion targets and any accepted gaps.
120
- 3. Confirm `.flow-agents/` runtime artifacts remain untracked.
183
+ 3. Confirm `.kontourai/flow-agents/` runtime artifacts remain untracked.
121
184
  4. Keep links to provider records, durable docs, or archived external evidence instead of relying on temporary local files.
122
185
 
123
- `main` must not contain tracked files under `.flow-agents/`. If runtime artifacts still seem necessary after merge, their durable content has not been promoted yet.
186
+ `main` must not contain tracked files under `.kontourai/flow-agents/`. If runtime artifacts still seem necessary after merge, their durable content has not been promoted yet.
124
187
 
125
188
  ## Promotion Targets
126
189
 
@@ -138,4 +201,4 @@ Do not promote raw intermediate thinking wholesale. Promote the resulting decisi
138
201
 
139
202
  ## Enforcement
140
203
 
141
- Runtime state remains ignored under `.flow-agents/`. Static package validation fails if runtime artifacts are tracked. Reviewers should reject PRs that omit durable docs, source, schema, provider, or evidence updates needed to understand shipped behavior.
204
+ Runtime state remains ignored under `.kontourai/flow-agents/`. Static package validation fails if runtime artifacts are tracked. Reviewers should reject PRs that omit durable docs, source, schema, provider, or evidence updates needed to understand shipped behavior.
@@ -49,7 +49,7 @@ These check that skill contracts preserve non-negotiable guardrails:
49
49
 
50
50
  Static evals prove documented contracts did not drift. They do not prove the agent follows them in conversation.
51
51
 
52
- Activation-only behavioral evals may assert no write tools when the goal is trigger and boundary testing. Artifact-quality evals must allow controlled writes to `.flow-agents/<slug>/*.md` and inspect the resulting artifact contracts.
52
+ Activation-only behavioral evals may assert no write tools when the goal is trigger and boundary testing. Artifact-quality evals must allow controlled writes to `.kontourai/flow-agents/<slug>/*.md` and inspect the resulting artifact contracts.
53
53
 
54
54
  ### 2. Behavioral Activation Evals
55
55
 
@@ -79,7 +79,7 @@ These should verify:
79
79
 
80
80
  ### 3. Artifact Quality Evals
81
81
 
82
- Inspect generated `.flow-agents/<slug>/*.md` files and provider-backed work item drafts for required structure.
82
+ Inspect generated `.kontourai/flow-agents/<slug>/*.md` files and provider-backed work item drafts for required structure.
83
83
 
84
84
  The local artifact-quality gate is:
85
85
 
@@ -117,7 +117,7 @@ These cases check that the gates resist pressure and ambiguity:
117
117
  - CI passes only after unexplained reruns; `evidence-gate` should degrade confidence.
118
118
  - Prototype code exists; workflow should require learning review before production promotion.
119
119
  - Release notes, rollback, or observability are missing for production-impacting work; `release-readiness` should return `HOLD`, optionally routing missing evidence back to `evidence-gate`.
120
- - Agent tries to stop with an active `.flow-agents/<slug>/` delivery artifact; `stop-goal-fit` should warn and strict mode should block.
120
+ - Agent tries to stop with an active `.kontourai/flow-agents/<slug>/` delivery artifact; `stop-goal-fit` should warn and strict mode should block.
121
121
  - CI/merge acceptance happens but docs are not promoted; release readiness or learning review should record a docs follow-up or explain why durable docs are not needed.
122
122
  - Temporary verifier-local sidecar mismatch notes remain in the history; terminal artifacts must show final sidecar reconciliation before reporting clean delivery.
123
123
  - Deep-context delivery contains stale shortcuts; agent should ignore stale context and still preserve Definition Of Done, explicit `NOT_VERIFIED`, Goal Fit, and Final Acceptance.
@@ -10,6 +10,7 @@ The workflow system now separates durable process contracts from role-specific i
10
10
 
11
11
  Shared contracts live in `context/contracts/`:
12
12
 
13
+ - `standing-directives.md`
13
14
  - `artifact-contract.md`
14
15
  - `planning-contract.md`
15
16
  - `execution-contract.md`
@@ -17,7 +18,7 @@ Shared contracts live in `context/contracts/`:
17
18
  - `verification-contract.md`
18
19
  - `delivery-contract.md`
19
20
 
20
- These files define the stable rules for artifacts, planning, execution, review, verification, delivery loops, Goal Fit, and final acceptance.
21
+ These files define the stable rules for artifacts, planning, execution, review, verification, delivery loops, Goal Fit, and final acceptance. `standing-directives.md` is cross-cutting: it holds ratified owner directives that override default engineering conservatism, pointed to from the header of every other contract file so delegated agents receive it regardless of which phase contract they load.
21
22
 
22
23
  The durable resource shape for selected scope, workflow runs, run plans, status conditions, provider-backed Work Items, and sidecar compatibility direction is documented in the Kontour Resource Contract:
23
24
  https://github.com/kontourai/flow-agents/blob/main/docs/kontour-resource-contract.md
@@ -27,7 +28,7 @@ That reference is docs-only guidance for new resource-shaped contracts and does
27
28
  The lifecycle for in-progress and completed workflow artifacts is documented in the Workflow Artifact Lifecycle:
28
29
  https://github.com/kontourai/flow-agents/blob/main/docs/workflow-artifact-lifecycle.md
29
30
 
30
- Runtime workflow artifacts under `.flow-agents/` remain local and ignored. Completed work must promote durable behavior, decisions, contracts, and evidence into long-lived docs, source, schemas, or provider records before merge to `main`.
31
+ Runtime workflow artifacts under `.kontourai/flow-agents/` remain local and ignored. Explicit durable Flow Agents config/install state may live under `.flow-agents/` when documented, but runtime readers do not fall back there. Completed work must promote durable behavior, decisions, contracts, and evidence into long-lived docs, source, schemas, or provider records before merge to `main`.
31
32
 
32
33
  ## How Skills And Agents Use Them
33
34