@kontourai/flow-agents 1.4.0 → 2.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.
- package/.github/CODEOWNERS +29 -0
- package/.github/actions/trust-verify/action.yml +145 -0
- package/.github/workflows/ci.yml +11 -4
- package/.github/workflows/kit-gates-demo.yml +2 -2
- package/.github/workflows/publish-npm.yml +10 -2
- package/.github/workflows/release-please.yml +1 -1
- package/.github/workflows/trust-reconcile.yml +113 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +95 -0
- package/CONTRIBUTING.md +4 -4
- package/README.md +1 -0
- package/agents/tool-planner.json +1 -1
- package/build/src/cli/init.js +242 -20
- package/build/src/cli/validate-workflow-artifacts.js +19 -2
- package/build/src/cli/verify.d.ts +1 -0
- package/build/src/cli/verify.js +90 -0
- package/build/src/cli/workflow-sidecar.d.ts +300 -8
- package/build/src/cli/workflow-sidecar.js +1934 -83
- package/build/src/cli.js +2 -3
- package/build/src/lib/flow-resolver.d.ts +82 -0
- package/build/src/lib/flow-resolver.js +237 -0
- package/build/src/tools/build-universal-bundles.js +34 -22
- package/build/src/tools/generate-context-map.js +3 -16
- package/build/src/tools/validate-source-tree.d.ts +1 -1
- package/build/src/tools/validate-source-tree.js +42 -162
- package/context/contracts/artifact-contract.md +10 -0
- package/context/contracts/delivery-contract.md +1 -0
- package/context/contracts/review-contract.md +1 -0
- package/context/contracts/verification-contract.md +2 -0
- package/context/gate-awareness.md +39 -0
- package/context/scripts/hooks/stop-goal-fit.js +632 -70
- package/docs/adr/0001-flow-agents-consumes-flow.md +1 -1
- package/docs/adr/0002-flow-kits-as-extension-unit.md +1 -1
- package/docs/adr/0004-gates-expect-surface-claims.md +2 -0
- package/docs/adr/0005-kubernetes-inspired-resource-contracts.md +2 -0
- package/docs/adr/0007-skill-audit.md +1 -1
- package/docs/adr/0009-canonical-hook-core-kit-boundary.md +95 -0
- package/docs/adr/0010-workflow-trust-state-as-hachure-bundle.md +139 -0
- package/docs/adr/0011-mcp-posture.md +100 -0
- package/docs/adr/0012-agent-coordination-as-liveness-claims.md +119 -0
- package/docs/adr/0013-context-lifecycle.md +151 -0
- package/docs/adr/0014-core-vs-domain-kit-boundary.md +143 -0
- package/docs/adr/0015-flow-flow-agents-boundary-reconciliation.md +120 -0
- package/docs/adr/0016-three-hard-boundary-model.md +71 -0
- package/docs/adr/0017-anti-gaming-trust-security-model.md +155 -0
- package/docs/agent-system-guidebook.md +5 -12
- package/docs/context-map.md +4 -10
- package/docs/index.md +3 -2
- package/docs/integrations/framework-adapter.md +19 -6
- package/docs/integrations/index.md +2 -2
- package/docs/north-star.md +4 -4
- package/docs/operating-layers.md +3 -3
- package/docs/plans/adr-0010-phase2-gate-recompute.md +55 -0
- package/docs/repository-structure.md +2 -2
- package/docs/skills-map.md +1 -0
- package/docs/spec/runtime-hook-surface.md +62 -9
- package/docs/standards-register.md +3 -3
- package/docs/survey-utterance-check.md +1 -1
- package/docs/trust-anchor-adoption.md +197 -0
- package/docs/verifiable-trust.md +95 -0
- package/docs/veritas-integration.md +2 -2
- package/docs/workflow-usage-guide.md +69 -0
- package/evals/acceptance/DEMO-false-completion.md +144 -0
- package/evals/acceptance/demo-cast.sh +92 -0
- package/evals/acceptance/demo-false-completion.sh +72 -0
- package/evals/acceptance/demo-real-evidence.sh +104 -0
- package/evals/acceptance/demo.tape +29 -0
- package/evals/acceptance/prove-capture-teeth-declared.sh +335 -0
- package/evals/acceptance/prove-capture-teeth.sh +114 -0
- package/evals/acceptance/prove-teeth.sh +105 -0
- package/evals/ci/antigaming-suite.sh +54 -0
- package/evals/ci/run-baseline.sh +2 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-extension-asset/flows/review.flow.json +26 -0
- package/evals/fixtures/flow-kit-repository/invalid-missing-extension-asset/kit.json +20 -0
- package/evals/fixtures/flow-kit-repository/valid-unknown-extension/flows/review.flow.json +26 -0
- package/evals/fixtures/flow-kit-repository/valid-unknown-extension/kit.json +18 -0
- package/evals/integration/test_builder_step_producers.sh +379 -0
- package/evals/integration/test_bundle_install.sh +35 -71
- package/evals/integration/test_bundle_lifecycle.sh +39 -2
- package/evals/integration/test_captured_fail_reconciliation.sh +820 -0
- package/evals/integration/test_checkpoint_signing.sh +489 -0
- package/evals/integration/test_claim_lookup.sh +352 -0
- package/evals/integration/test_command_log_integrity.sh +275 -0
- package/evals/integration/test_context_map.sh +0 -2
- package/evals/integration/test_dual_emit_flow_step.sh +278 -0
- package/evals/integration/test_enforcer_expects_driven.sh +281 -0
- package/evals/integration/test_evidence_capture_hook.sh +185 -0
- package/evals/integration/test_flow_kit_repository.sh +2 -0
- package/evals/integration/test_flowdef_session_activation.sh +273 -0
- package/evals/integration/test_flowdef_session_history_preservation.sh +250 -0
- package/evals/integration/test_gate_bypass_chain.sh +448 -0
- package/evals/integration/test_gate_lockdown.sh +1137 -0
- package/evals/integration/test_gate_review_inquiry_records.sh +399 -0
- package/evals/integration/test_goal_fit_escape_hatch.sh +73 -0
- package/evals/integration/test_goal_fit_hook.sh +69 -4
- package/evals/integration/test_goal_fit_rederive.sh +263 -0
- package/evals/integration/test_install_merge.sh +1176 -0
- package/evals/integration/test_mint_attestation.sh +373 -0
- package/evals/integration/test_phase_map_and_gate_claim.sh +365 -0
- package/evals/integration/test_publish_delivery.sh +269 -0
- package/evals/integration/test_reconcile_soundness.sh +528 -0
- package/evals/integration/test_resolvefirststep_security.sh +208 -0
- package/evals/integration/test_session_resume_roundtrip.sh +286 -0
- package/evals/integration/test_trust_checkpoint.sh +325 -0
- package/evals/integration/test_trust_reconcile.sh +293 -0
- package/evals/integration/test_verify_cli.sh +208 -0
- package/evals/integration/test_workflow_sidecar_writer.sh +549 -34
- package/evals/lib/node.sh +0 -6
- package/evals/run.sh +45 -0
- package/evals/static/test_workflow_skills.sh +6 -13
- package/install.sh +0 -7
- package/integrations/strands-ts/README.md +25 -15
- package/integrations/veritas/flow-agents.adapter.json +1 -2
- package/kits/builder/flows/build.flow.json +59 -12
- package/kits/builder/kit.json +85 -15
- package/kits/builder/skills/continue-work/SKILL.md +116 -0
- package/kits/builder/skills/deliver/SKILL.md +36 -6
- package/kits/builder/skills/design-probe/SKILL.md +28 -0
- package/kits/builder/skills/execute-plan/SKILL.md +9 -1
- package/kits/builder/skills/gate-review/SKILL.md +234 -0
- package/kits/builder/skills/learning-review/SKILL.md +30 -0
- package/kits/builder/skills/pickup-probe/SKILL.md +29 -0
- package/kits/builder/skills/plan-work/SKILL.md +13 -1
- package/kits/builder/skills/pull-work/SKILL.md +19 -0
- package/kits/knowledge/adapters/default-store/index.js +38 -0
- package/kits/knowledge/adapters/flow-runner/index.js +1620 -0
- package/kits/knowledge/adapters/obsidian-store/index.js +36 -6
- package/kits/knowledge/docs/store-contract.md +314 -0
- package/kits/knowledge/evals/audit-freshness/suite.test.js +368 -0
- package/kits/knowledge/evals/canonicalize-category/suite.test.js +383 -0
- package/kits/knowledge/evals/contract-suite/suite.test.js +111 -0
- package/kits/knowledge/evals/detect-contradictions/suite.test.js +324 -0
- package/kits/knowledge/evals/entities/suite.test.js +40 -0
- package/kits/knowledge/evals/glossary-sync/suite.test.js +416 -0
- package/kits/knowledge/evals/hygiene-review/suite.test.js +396 -0
- package/kits/knowledge/evals/retirement/suite.test.js +145 -0
- package/kits/knowledge/flows/audit-freshness.flow.json +44 -0
- package/kits/knowledge/flows/canonicalize-category.flow.json +44 -0
- package/kits/knowledge/flows/detect-contradictions.flow.json +44 -0
- package/kits/knowledge/flows/glossary-sync.flow.json +61 -0
- package/kits/knowledge/flows/hygiene-review.flow.json +43 -0
- package/kits/knowledge/kit.json +51 -1
- package/package.json +4 -4
- package/packaging/conformance/README.md +10 -2
- package/packaging/conformance/fixtures/evidence-capture--allow-records-command.json +29 -0
- package/packaging/conformance/fixtures/stop-goal-fit--block-bundle-disputed-claim.json +29 -0
- package/packaging/conformance/fixtures/stop-goal-fit--block-capture-contradicts-claimed-pass.json +30 -0
- package/packaging/conformance/fixtures/stop-goal-fit--block-mode.json +23 -0
- package/packaging/conformance/fixtures/stop-goal-fit--off-mode.json +24 -0
- package/packaging/conformance/fixtures/stop-goal-fit--warn-active-delivery.json +5 -2
- package/packaging/conformance/fixtures/stop-goal-fit--warn-no-bundle.json +23 -0
- package/packaging/conformance/fixtures/workflow-steering--reground-active-prompt.json +30 -0
- package/packaging/conformance/fixtures/workflow-steering--reground-session-start.json +30 -0
- package/packaging/conformance/run-conformance.js +1 -1
- package/scripts/README.md +2 -1
- package/scripts/build-universal-bundles.js +0 -1
- package/scripts/ci/mint-attestation.js +221 -0
- package/scripts/ci/trust-reconcile.js +545 -0
- package/scripts/hooks/config-protection.js +423 -1
- package/scripts/hooks/evidence-capture.js +348 -0
- package/scripts/hooks/lib/liveness-read.js +113 -0
- package/scripts/hooks/run-hook.js +6 -1
- package/scripts/hooks/stop-goal-fit.js +1471 -79
- package/scripts/hooks/workflow-steering.js +135 -5
- package/scripts/install-codex-home.sh +39 -0
- package/scripts/install-merge.js +330 -0
- package/src/cli/init.ts +218 -20
- package/src/cli/validate-workflow-artifacts.ts +18 -2
- package/src/cli/verify.ts +100 -0
- package/src/cli/workflow-sidecar.ts +2064 -77
- package/src/cli.ts +2 -3
- package/src/lib/flow-resolver.ts +284 -0
- package/src/tools/build-universal-bundles.ts +34 -21
- package/src/tools/generate-context-map.ts +3 -17
- package/src/tools/validate-source-tree.ts +44 -104
- package/build/src/tools/filter-installed-packs.d.ts +0 -2
- package/build/src/tools/filter-installed-packs.js +0 -135
- package/packaging/packs.json +0 -49
- package/scripts/filter-installed-packs.js +0 -2
- package/src/tools/filter-installed-packs.ts +0 -132
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Code owners for security-critical paths — the anti-gaming trust gate, its
|
|
2
|
+
# enforcement hooks, and the CI anchor. Changes here can weaken the gate, so they
|
|
3
|
+
# require owner review.
|
|
4
|
+
#
|
|
5
|
+
# IMPORTANT: this file only takes effect once branch protection on `main` enables
|
|
6
|
+
# "Require a pull request before merging" + "Require review from Code Owners".
|
|
7
|
+
# Today main requires status checks + enforce_admins but NOT reviews — enabling
|
|
8
|
+
# code-owner review is the remaining server-side step to close the
|
|
9
|
+
# "agent weakens CI / the gate" residual (adversarial review Residual #1).
|
|
10
|
+
|
|
11
|
+
# CI definition + the anchor (an agent must not silently weaken enforcement)
|
|
12
|
+
/.github/ @briananderson1222
|
|
13
|
+
/evals/ci/ @briananderson1222
|
|
14
|
+
/scripts/ci/ @briananderson1222
|
|
15
|
+
|
|
16
|
+
# The verification config the CI anchor depends on — an agent must not redefine
|
|
17
|
+
# trust-reconcile-verify to a fake/laundered command or rewire the lane runner
|
|
18
|
+
# without owner review (convergence red-team finding).
|
|
19
|
+
/package.json @briananderson1222
|
|
20
|
+
/evals/run.sh @briananderson1222
|
|
21
|
+
|
|
22
|
+
# The anti-gaming gate + its enforcement hooks
|
|
23
|
+
/scripts/hooks/stop-goal-fit.js @briananderson1222
|
|
24
|
+
/scripts/hooks/config-protection.js @briananderson1222
|
|
25
|
+
/scripts/hooks/evidence-capture.js @briananderson1222
|
|
26
|
+
|
|
27
|
+
# FlowDefinition resolution + the trust producer/checkpoint/signing the gate depends on
|
|
28
|
+
/src/lib/flow-resolver.ts @briananderson1222
|
|
29
|
+
/src/cli/workflow-sidecar.ts @briananderson1222
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# trust-verify/action.yml — Reusable composite action: Flow Agents trust anchor.
|
|
2
|
+
#
|
|
3
|
+
# INTENDED AS A REQUIRED STATUS CHECK. Add this job to your workflow, then add
|
|
4
|
+
# "Trust Verify" as a required, no-bypass status check in GitHub branch protection.
|
|
5
|
+
# Once required, no PR can merge past it — the external CI anchor is armed.
|
|
6
|
+
#
|
|
7
|
+
# What it does:
|
|
8
|
+
# 1. Re-runs your canonical verify command FRESH in a clean CI environment that
|
|
9
|
+
# the agent does not control (build + tests + lint — whatever you declare).
|
|
10
|
+
# 2. If a delivery/trust.bundle is present, RECONCILES the agent's claimed-pass
|
|
11
|
+
# commands against CI's own fresh results. Any divergence (claimed pass + CI
|
|
12
|
+
# fail, laundered command, claim with no evidence, checkpoint-only bundle)
|
|
13
|
+
# fails the job with a clear diagnostic.
|
|
14
|
+
# 3. Optionally mints a signed in-toto attestation over CI's own fresh results
|
|
15
|
+
# (requires id-token: write in the calling job).
|
|
16
|
+
#
|
|
17
|
+
# Inputs:
|
|
18
|
+
# verify-command [required] Your comprehensive verify command (build + tests +
|
|
19
|
+
# lint). What the agent ran locally should match what
|
|
20
|
+
# this reruns in CI.
|
|
21
|
+
# bundle [optional] Path to the delivered trust.bundle (default:
|
|
22
|
+
# delivery/trust.bundle). Auto-discovered if present.
|
|
23
|
+
# fail-on-divergence [optional] Fail the job on any divergence (default: true).
|
|
24
|
+
# Set to false for observability-only mode.
|
|
25
|
+
# sign [optional] Mint a signed in-toto attestation after a clean
|
|
26
|
+
# reconcile (default: false). Requires id-token: write.
|
|
27
|
+
# node-version [optional] Node.js version (default: 24).
|
|
28
|
+
#
|
|
29
|
+
# Usage in a downstream repo:
|
|
30
|
+
#
|
|
31
|
+
# jobs:
|
|
32
|
+
# trust-verify:
|
|
33
|
+
# name: Trust Verify
|
|
34
|
+
# runs-on: ubuntu-latest
|
|
35
|
+
# permissions:
|
|
36
|
+
# contents: read
|
|
37
|
+
# id-token: write # only needed when sign: true
|
|
38
|
+
# steps:
|
|
39
|
+
# - uses: actions/checkout@<sha>
|
|
40
|
+
# - uses: kontourai/flow-agents/.github/actions/trust-verify@<sha>
|
|
41
|
+
# with:
|
|
42
|
+
# verify-command: "npm run build && npm test && npm run lint"
|
|
43
|
+
#
|
|
44
|
+
# Then in GitHub branch protection → "Require status checks":
|
|
45
|
+
# Add "Trust Verify" as a required check with no bypass option.
|
|
46
|
+
#
|
|
47
|
+
# The agent publishes delivery/trust.bundle during the deliver skill. When that file
|
|
48
|
+
# is present in the PR's checkout, this action reconciles per-command claimed passes
|
|
49
|
+
# against fresh CI truth. When absent, only the fresh verify is enforced (fail-open
|
|
50
|
+
# on bundle absence; fail-closed on divergence when the bundle is present).
|
|
51
|
+
#
|
|
52
|
+
# See docs/trust-anchor-adoption.md for the full adoption guide.
|
|
53
|
+
|
|
54
|
+
name: "Flow Agents Trust Verify"
|
|
55
|
+
description: >
|
|
56
|
+
Re-runs canonical verification fresh and reconciles a delivered trust.bundle's
|
|
57
|
+
claimed passes against CI results. Intended as a required status check.
|
|
58
|
+
|
|
59
|
+
inputs:
|
|
60
|
+
verify-command:
|
|
61
|
+
description: >
|
|
62
|
+
Canonical verify command (build + tests + lint). Comma-separated commands
|
|
63
|
+
are each run in sequence. Fail-closed if not provided and no
|
|
64
|
+
trust-reconcile-verify script is in package.json.
|
|
65
|
+
required: true
|
|
66
|
+
bundle:
|
|
67
|
+
description: >
|
|
68
|
+
Path to the delivered trust.bundle (relative to workspace root).
|
|
69
|
+
Auto-discovers delivery/trust.bundle if this input is not set.
|
|
70
|
+
required: false
|
|
71
|
+
default: "delivery/trust.bundle"
|
|
72
|
+
fail-on-divergence:
|
|
73
|
+
description: >
|
|
74
|
+
Fail the job when divergence is detected (default: true). Set to false for
|
|
75
|
+
observability-only mode (the step still reports divergence but does not
|
|
76
|
+
fail the job).
|
|
77
|
+
required: false
|
|
78
|
+
default: "true"
|
|
79
|
+
sign:
|
|
80
|
+
description: >
|
|
81
|
+
Mint a signed in-toto attestation after a clean reconcile (default: false).
|
|
82
|
+
Requires id-token: write permission in the calling job. The attestation is
|
|
83
|
+
uploaded as a workflow artifact named trust-attestation.
|
|
84
|
+
required: false
|
|
85
|
+
default: "false"
|
|
86
|
+
node-version:
|
|
87
|
+
description: "Node.js version to use."
|
|
88
|
+
required: false
|
|
89
|
+
default: "24"
|
|
90
|
+
|
|
91
|
+
runs:
|
|
92
|
+
using: "composite"
|
|
93
|
+
steps:
|
|
94
|
+
- name: Set up Node.js
|
|
95
|
+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
96
|
+
with:
|
|
97
|
+
node-version: ${{ inputs.node-version }}
|
|
98
|
+
|
|
99
|
+
# Resolve the bundle path: use the input value if the file exists, otherwise
|
|
100
|
+
# pass an empty string (trust-reconcile.js auto-discovers or operates fail-open).
|
|
101
|
+
- name: Trust verify
|
|
102
|
+
id: trust-verify
|
|
103
|
+
shell: bash
|
|
104
|
+
env:
|
|
105
|
+
VERIFY_COMMAND: ${{ inputs.verify-command }}
|
|
106
|
+
BUNDLE_INPUT: ${{ inputs.bundle }}
|
|
107
|
+
FAIL_ON_DIVERGENCE: ${{ inputs.fail-on-divergence }}
|
|
108
|
+
run: |
|
|
109
|
+
# Resolve bundle path: use the input if the file exists, empty otherwise.
|
|
110
|
+
if [ -n "$BUNDLE_INPUT" ] && [ -f "$BUNDLE_INPUT" ]; then
|
|
111
|
+
BUNDLE_ARG="--bundle $BUNDLE_INPUT"
|
|
112
|
+
else
|
|
113
|
+
BUNDLE_ARG=""
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
node "${{ github.action_path }}/../../scripts/ci/trust-reconcile.js" \
|
|
117
|
+
--commands "$VERIFY_COMMAND" \
|
|
118
|
+
--repo-root "${{ github.workspace }}" \
|
|
119
|
+
$BUNDLE_ARG || {
|
|
120
|
+
code=$?
|
|
121
|
+
if [ "$FAIL_ON_DIVERGENCE" = "true" ]; then
|
|
122
|
+
exit $code
|
|
123
|
+
fi
|
|
124
|
+
echo "[trust-verify] divergence detected (fail-on-divergence=false — continuing)"
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
# Phase 2 (optional): mint a signed in-toto attestation over CI's own fresh results.
|
|
128
|
+
# Only runs when sign=true and the trust-verify step passed.
|
|
129
|
+
# Requires id-token: write in the calling job for Sigstore keyless signing.
|
|
130
|
+
- name: Mint attestation
|
|
131
|
+
if: inputs.sign == 'true' && steps.trust-verify.outcome == 'success'
|
|
132
|
+
shell: bash
|
|
133
|
+
run: node "${{ github.action_path }}/../../scripts/ci/mint-attestation.js"
|
|
134
|
+
|
|
135
|
+
- name: Upload attestation
|
|
136
|
+
if: inputs.sign == 'true' && steps.trust-verify.outcome == 'success'
|
|
137
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
138
|
+
with:
|
|
139
|
+
name: trust-attestation
|
|
140
|
+
path: |
|
|
141
|
+
trust.attestation.sig.json
|
|
142
|
+
trust.attestation.intoto.json
|
|
143
|
+
trust.attestation.status.json
|
|
144
|
+
if-no-files-found: ignore
|
|
145
|
+
retention-days: 30
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -30,7 +30,7 @@ jobs:
|
|
|
30
30
|
- name: Set up Node.js
|
|
31
31
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
32
32
|
with:
|
|
33
|
-
node-version: "
|
|
33
|
+
node-version: "24"
|
|
34
34
|
|
|
35
35
|
- name: Install Node dependencies
|
|
36
36
|
run: npm ci
|
|
@@ -96,7 +96,7 @@ jobs:
|
|
|
96
96
|
- name: Set up Node.js
|
|
97
97
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
98
98
|
with:
|
|
99
|
-
node-version: "
|
|
99
|
+
node-version: "24"
|
|
100
100
|
|
|
101
101
|
- name: Install Node dependencies
|
|
102
102
|
run: npm ci
|
|
@@ -157,7 +157,7 @@ jobs:
|
|
|
157
157
|
- name: Set up Node.js
|
|
158
158
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
159
159
|
with:
|
|
160
|
-
node-version: "
|
|
160
|
+
node-version: "24"
|
|
161
161
|
|
|
162
162
|
- name: Install Node dependencies
|
|
163
163
|
run: npm ci
|
|
@@ -250,6 +250,13 @@ jobs:
|
|
|
250
250
|
continue-on-error: true
|
|
251
251
|
run: bash evals/ci/run-baseline.sh --check pull-work-provider-integration
|
|
252
252
|
|
|
253
|
+
# The anti-gaming + trust regression suite runs in this REQUIRED lane so that
|
|
254
|
+
# weakening the gate / CI anchor / their protections (or removing a regression
|
|
255
|
+
# test) is caught and cannot merge. Convergence red-team (Round 5/7) closure.
|
|
256
|
+
- name: Anti-gaming and trust suite
|
|
257
|
+
continue-on-error: true
|
|
258
|
+
run: bash evals/ci/run-baseline.sh --check anti-gaming-and-trust-suite
|
|
259
|
+
|
|
253
260
|
- name: Finalize CI evidence
|
|
254
261
|
if: always()
|
|
255
262
|
run: bash evals/ci/run-baseline.sh --finalize
|
|
@@ -278,7 +285,7 @@ jobs:
|
|
|
278
285
|
- name: Set up Node.js
|
|
279
286
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
280
287
|
with:
|
|
281
|
-
node-version: "
|
|
288
|
+
node-version: "24"
|
|
282
289
|
|
|
283
290
|
- name: Install Node dependencies
|
|
284
291
|
run: npm ci
|
|
@@ -42,7 +42,7 @@ jobs:
|
|
|
42
42
|
- name: Set up Node.js
|
|
43
43
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
44
44
|
with:
|
|
45
|
-
node-version: "
|
|
45
|
+
node-version: "24"
|
|
46
46
|
|
|
47
47
|
- name: Install Flow CLI
|
|
48
48
|
# Mirrors the FLOW_CLI_ROOT install pattern used in ci.yml.
|
|
@@ -108,7 +108,7 @@ jobs:
|
|
|
108
108
|
- name: Set up Node.js
|
|
109
109
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
110
110
|
with:
|
|
111
|
-
node-version: "
|
|
111
|
+
node-version: "24"
|
|
112
112
|
|
|
113
113
|
- name: Install Flow CLI
|
|
114
114
|
run: |
|
|
@@ -6,6 +6,14 @@ on:
|
|
|
6
6
|
- "v*"
|
|
7
7
|
workflow_dispatch:
|
|
8
8
|
|
|
9
|
+
# Serialize publish runs so a duplicate trigger (the release tag push and a
|
|
10
|
+
# workflow_dispatch firing within seconds of each other) cannot race: the second
|
|
11
|
+
# run waits for the first to finish, then the "Check Published Version" step sees
|
|
12
|
+
# the version already on npm and skips — instead of E403'ing on a double publish.
|
|
13
|
+
concurrency:
|
|
14
|
+
group: publish-npm
|
|
15
|
+
cancel-in-progress: false
|
|
16
|
+
|
|
9
17
|
permissions:
|
|
10
18
|
contents: read
|
|
11
19
|
|
|
@@ -21,7 +29,7 @@ jobs:
|
|
|
21
29
|
- name: Set up Node.js
|
|
22
30
|
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
23
31
|
with:
|
|
24
|
-
node-version: "
|
|
32
|
+
node-version: "24"
|
|
25
33
|
cache: npm
|
|
26
34
|
|
|
27
35
|
- name: Install dependencies
|
|
@@ -101,4 +109,4 @@ jobs:
|
|
|
101
109
|
|
|
102
110
|
- name: Publish public package
|
|
103
111
|
if: steps.published.outputs.published != 'true'
|
|
104
|
-
run: npm publish --access public
|
|
112
|
+
run: npm publish --access public --provenance
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
# author, so CI runs unassisted. See kontourai/flow-agents#38.
|
|
22
22
|
- name: Mint app token
|
|
23
23
|
id: app-token
|
|
24
|
-
uses: actions/create-github-app-token@
|
|
24
|
+
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
|
25
25
|
with:
|
|
26
26
|
app-id: ${{ vars.RELEASE_APP_ID }}
|
|
27
27
|
private-key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# trust-reconcile.yml — CI trust anchor: Phase 1 (external anti-gaming anchor) +
|
|
2
|
+
# Phase 2 (signed attestation over CI's own fresh results).
|
|
3
|
+
#
|
|
4
|
+
# Phase 1: re-runs canonical verification FRESH in a clean CI environment that
|
|
5
|
+
# the agent does not control, then reconciles a delivered checkpoint/bundle's
|
|
6
|
+
# claimed passes against CI reality. Any divergence (claimed pass + CI fail,
|
|
7
|
+
# claimed pass + laundering operator, claimed pass + command CI never ran,
|
|
8
|
+
# checkpoint-only bundle, claim with no evidence) fails the job with a clear
|
|
9
|
+
# diagnostic message.
|
|
10
|
+
#
|
|
11
|
+
# Canonical verify command: npm run trust-reconcile-verify
|
|
12
|
+
# = npm run build && npm run eval:static
|
|
13
|
+
# (integration + the anti-gaming regression suite run in ci.yml's required
|
|
14
|
+
# "Runtime and Kit" lane, not here — see evals/ci/antigaming-suite.sh)
|
|
15
|
+
# This is the REAL verification this repo runs (build + static evals + integration
|
|
16
|
+
# evals), not a compile-only check. The script is declared in package.json so
|
|
17
|
+
# trust-reconcile.js auto-discovers it without needing TRUST_RECONCILE_COMMANDS.
|
|
18
|
+
#
|
|
19
|
+
# Phase 2 (additive): after the reconcile step PASSES, mint a signed in-toto
|
|
20
|
+
# attestation over CI's own fresh results using Sigstore keyless signing
|
|
21
|
+
# (Fulcio + Rekor). The attestation is uploaded as a workflow artifact.
|
|
22
|
+
# Gated: the mint step only runs when the reconcile step passes (the job stays
|
|
23
|
+
# red when reconcile fails — Phase 1 behavior unchanged).
|
|
24
|
+
#
|
|
25
|
+
# Design: NEVER trusts agent-produced artifacts as a truth source. The bundle is
|
|
26
|
+
# read only to DETECT DIVERGENCE — CI's fresh run is the only authoritative result.
|
|
27
|
+
# The agent cannot self-declare success here: it cannot modify the CI environment,
|
|
28
|
+
# pre-disable this job, or post-forge results after the check runs.
|
|
29
|
+
#
|
|
30
|
+
# THIS JOB IS INTENDED TO BE A REQUIRED STATUS CHECK (branch protection).
|
|
31
|
+
# Enabling it as required is a server-side GitHub branch-protection configuration
|
|
32
|
+
# step — it is not wired here by code. Once required, no PR can merge past it.
|
|
33
|
+
#
|
|
34
|
+
# Additive — NOT a gate-hook change. Does not modify scripts/hooks/*, kits/knowledge,
|
|
35
|
+
# or continue-work. Mirrors the structure of .github/workflows/ci.yml.
|
|
36
|
+
|
|
37
|
+
name: Trust Reconcile
|
|
38
|
+
|
|
39
|
+
on:
|
|
40
|
+
pull_request:
|
|
41
|
+
push:
|
|
42
|
+
branches: ["main"]
|
|
43
|
+
workflow_dispatch:
|
|
44
|
+
|
|
45
|
+
permissions:
|
|
46
|
+
contents: read
|
|
47
|
+
|
|
48
|
+
concurrency:
|
|
49
|
+
group: trust-reconcile-${{ github.ref }}
|
|
50
|
+
cancel-in-progress: true
|
|
51
|
+
|
|
52
|
+
jobs:
|
|
53
|
+
trust-reconcile:
|
|
54
|
+
name: Trust Reconcile
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
timeout-minutes: 15
|
|
57
|
+
# Phase 2: id-token: write is required for Sigstore keyless signing (Fulcio OIDC).
|
|
58
|
+
# Mirrors the pattern in .github/workflows/publish-npm.yml.
|
|
59
|
+
permissions:
|
|
60
|
+
contents: read
|
|
61
|
+
id-token: write
|
|
62
|
+
|
|
63
|
+
steps:
|
|
64
|
+
- name: Checkout
|
|
65
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
66
|
+
|
|
67
|
+
- name: Set up Node.js
|
|
68
|
+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
|
69
|
+
with:
|
|
70
|
+
node-version: "24"
|
|
71
|
+
|
|
72
|
+
- name: Install Node dependencies
|
|
73
|
+
run: npm ci
|
|
74
|
+
|
|
75
|
+
- name: Install shell tools
|
|
76
|
+
run: |
|
|
77
|
+
sudo apt-get update
|
|
78
|
+
sudo apt-get install -y jq ripgrep
|
|
79
|
+
|
|
80
|
+
- name: Trust reconcile
|
|
81
|
+
id: trust-reconcile
|
|
82
|
+
run: node scripts/ci/trust-reconcile.js
|
|
83
|
+
# Canonical verify: auto-discovered from package.json scripts["trust-reconcile-verify"]
|
|
84
|
+
# = npm run build && npm run eval:static
|
|
85
|
+
# (integration + the anti-gaming regression suite run in ci.yml's required
|
|
86
|
+
# "Runtime and Kit" lane, not here — see evals/ci/antigaming-suite.sh)
|
|
87
|
+
# This runs the REAL verification (build + static + integration evals), NOT a
|
|
88
|
+
# compile-only check. Override via TRUST_RECONCILE_COMMANDS or --commands if needed.
|
|
89
|
+
# Bundle auto-discovery: if delivery/trust.bundle or delivery/trust.checkpoint.json
|
|
90
|
+
# exists in the checkout, CI reconciles per-command claimed passes against fresh
|
|
91
|
+
# results automatically. When absent, only the fresh verify is enforced (fail-open).
|
|
92
|
+
# Phase 2: on success, writes ci-trust-reconcile-results.json to RUNNER_TEMP
|
|
93
|
+
# for mint-attestation.js to consume.
|
|
94
|
+
|
|
95
|
+
# Phase 2: Mint signed attestation over CI's own fresh results.
|
|
96
|
+
# Runs only when the trust-reconcile step passes (default step condition:
|
|
97
|
+
# previous steps must succeed). The job stays red if reconcile fails.
|
|
98
|
+
- name: Mint attestation
|
|
99
|
+
run: node scripts/ci/mint-attestation.js
|
|
100
|
+
# Sigstore keyless signing uses the OIDC token from id-token: write (above).
|
|
101
|
+
# Locally (no OIDC): signStatementWithSigstore returns null → writes unsigned
|
|
102
|
+
# in-toto statement → exits 0 (fail-open). The job does not crash.
|
|
103
|
+
|
|
104
|
+
- name: Upload attestation
|
|
105
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
106
|
+
with:
|
|
107
|
+
name: trust-attestation
|
|
108
|
+
path: |
|
|
109
|
+
trust.attestation.sig.json
|
|
110
|
+
trust.attestation.intoto.json
|
|
111
|
+
trust.attestation.status.json
|
|
112
|
+
if-no-files-found: ignore
|
|
113
|
+
retention-days: 30
|
package/AGENTS.md
CHANGED
|
@@ -9,11 +9,24 @@ This bundle was generated from the canonical source in this repo. Treat the repo
|
|
|
9
9
|
- **Evidence hygiene:** issue/PR permalinks must pin a real commit SHA (`git rev-parse`, never typed by hand); claims about behavior need command/test evidence.
|
|
10
10
|
- `.flow-agents/` runtime artifacts stay untracked; durable records belong in docs/, issues, or tracked source.
|
|
11
11
|
|
|
12
|
+
### Operating discipline (working agreements)
|
|
13
|
+
|
|
14
|
+
Confirmed agreements for developing this repo — the *kit-discipline* bucket of ADR 0013, seeded here by hand (encoded by us, shipped uniform; the kit does not self-evolve on user machines). Keep this list short and principle-level; let stale entries be pruned.
|
|
15
|
+
|
|
16
|
+
- **Consume, never fork — survey before building.** Before adding any concept/command/schema, check what already exists (exported `@kontourai/*` types, ADRs, skills/commands) *and what's in flight* (open PRs, branches, `git worktree list`). Many agents run here in parallel; work is often already built or being built (ADR 0008/0010).
|
|
17
|
+
- **Coordinate shared-area changes; surface, don't brute-force.** When a change touches code another agent is actively in (e.g. `workflow-sidecar.ts`, the gate), prefer an additive change and flag the overlap on the issue; build on the latest `origin/main` in an isolated `git worktree`. **The working tree is shared across agents — clean up only the worktrees *you* created (match your own path prefix); never `git worktree remove` "all non-main" worktrees, which destroys another agent's uncommitted state** (branches/commits survive, but in-progress working-dir changes do not).
|
|
18
|
+
- **A "flake" or a silent success is a real bug — root-cause it, never re-run past it.** Flakiness is usually a real race or fail-open; an operation that can pass without doing its job, or drop data silently, *is* the bug.
|
|
19
|
+
- **Prove it; don't design on assumption.** Gate changes on the suite (`prove-capture-teeth`, conformance L2, `test_workflow_sidecar_writer`, `tsc`) before merge; verify load-bearing assumptions with a quick experiment, not reasoning alone.
|
|
20
|
+
- **Name the primitive, not the use-case.** Center the general mechanism (e.g. a *liveness policy*); the use-case is a label, the primitive is the abstraction.
|
|
21
|
+
- **Merge mechanics:** strict protection + a fast `main` makes CLI merges racy — `update-branch` for a clean window, then merge; never `--no-verify`; `pre-push` validation needs `node_modules/.bin` on `PATH`; keep dev + CI Node in sync via `.tool-versions`. **During a fast-`main` *burst*, do not reflexively `update-branch`** — each one resets CI to pending and you lose the race; let the *current* CI settle, then `--admin`-merge a **verified, isolated, conflict-free** PR (admin bypasses only the up-to-date requirement, never a check — use only when the change cannot conflict with the newer `main`).
|
|
22
|
+
- **Delegate the next increment via fresh-context handoff (`continue-work`).** A multi-slice item's next slice is best run in a *fresh* context that inherits the durable system, not this session's history (ADR 0013): spawn an agent (or a new session) pointed at the issue + these operating agreements + the precedent PRs. Prompt size scales with **novelty** — a precedented, mechanical slice needs only the minimal template (task + entry artifact + precedent); novel work (a new skill, a subtle composition) needs the subtlety spelled out. **Parallelize the *implementation*** of independent slices; **serialize only the *merge*** where they share a file (e.g. a kit's flow-runner).
|
|
23
|
+
|
|
12
24
|
## Shared Conventions
|
|
13
25
|
|
|
14
26
|
- `skills/`, `context/`, `powers/`, `prompts/`, `scripts/`, and `evals/` were copied from the canonical source.
|
|
15
27
|
- Cross-session task artifacts should live under `.flow-agents`.
|
|
16
28
|
- Kiro-only hook wiring was stripped from exported non-Kiro agents to keep the package portable.
|
|
29
|
+
- **Gate awareness:** `context/gate-awareness.md` — the three active gates (goal-fit/Stop, evidence-capture, reground), why a block is the system working, and how to diagnose a suspected missed block.
|
|
17
30
|
|
|
18
31
|
## Exported Agents
|
|
19
32
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,100 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.0.0](https://github.com/kontourai/flow-agents/compare/v1.4.0...v2.0.0) (2026-06-27)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* **liveness:** rename coord→liveness + lifecycle-driven liveness claims (ADR 0012) ([#154](https://github.com/kontourai/flow-agents/issues/154))
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* activate FlowDefinition-driven sessions + fix carry-forward history loss (ADR 0016 Abstraction A, Step 0+1) ([#208](https://github.com/kontourai/flow-agents/issues/208)) ([7e0120f](https://github.com/kontourai/flow-agents/commit/7e0120fd60779186dbe87db5cad313d479ff4ef8))
|
|
13
|
+
* **builder:** add continue-work skill for fresh-context slice handoff ([#190](https://github.com/kontourai/flow-agents/issues/190)) ([8353fef](https://github.com/kontourai/flow-agents/commit/8353fef09967f813304c39f111b31861f4ca6fd0))
|
|
14
|
+
* **builder:** phase_map + advance-state active-step + record-gate-claim mechanism (ADR 0016 Abstraction A, P-d increment 1) ([#206](https://github.com/kontourai/flow-agents/issues/206)) ([9c67730](https://github.com/kontourai/flow-agents/commit/9c677309e6716485f1d2df4e15071379b8dc28fe))
|
|
15
|
+
* **builder:** wire 6 step producers via record-gate-claim + flip required:true + fix --expectation targeting (ADR 0016 Abstraction A, P-d increment 2) ([#207](https://github.com/kontourai/flow-agents/issues/207)) ([4cf6e52](https://github.com/kontourai/flow-agents/commit/4cf6e524f97b7ea4dd739e9de83aedcfb07ba055))
|
|
16
|
+
* **ci:** CI mints a signed attestation over its own verification results (CI anchor Phase 2) ([#224](https://github.com/kontourai/flow-agents/issues/224)) ([017505b](https://github.com/kontourai/flow-agents/commit/017505b9f7d2200eacf2dd681182dc968d61dc23))
|
|
17
|
+
* **ci:** publish session bundle to delivery/ at delivery — feed the trust-reconcile anchor (Phase 1b) ([#223](https://github.com/kontourai/flow-agents/issues/223)) ([d9476d8](https://github.com/kontourai/flow-agents/commit/d9476d847310d348c20f53ba824756a30a1b23b0))
|
|
18
|
+
* **ci:** trust-reconcile job — the external anti-gaming anchor (CI anchor Phase 1) ([#222](https://github.com/kontourai/flow-agents/issues/222)) ([1678866](https://github.com/kontourai/flow-agents/commit/1678866f6c967117bb09e15b9546c89462b392f3))
|
|
19
|
+
* **context:** add gate-awareness self-critique doc + AGENTS.md reference ([#118](https://github.com/kontourai/flow-agents/issues/118)) ([#123](https://github.com/kontourai/flow-agents/issues/123)) ([45e3841](https://github.com/kontourai/flow-agents/commit/45e38410a8c9276713675531d25d4870f99b1be8))
|
|
20
|
+
* **coord:** agent coordination as liveness claims — claim/heartbeat/release/status (ADR 0012) ([#150](https://github.com/kontourai/flow-agents/issues/150)) ([ed248ed](https://github.com/kontourai/flow-agents/commit/ed248edbe39a39ac7403ffdce316d4c19fda25b0))
|
|
21
|
+
* **core:** FlowDefinition-driven claim production — shared flow-resolver + producer dual-emit (ADR 0016 Abstraction A, P-a/P-b) ([#204](https://github.com/kontourai/flow-agents/issues/204)) ([5368017](https://github.com/kontourai/flow-agents/commit/536801781d8bb2d2e00754539d16efa050cb2d42))
|
|
22
|
+
* **core:** gate enforces on the active FlowDefinition's expects[] (ADR 0016 Abstraction A, P-c) ([#205](https://github.com/kontourai/flow-agents/issues/205)) ([dd0dab2](https://github.com/kontourai/flow-agents/commit/dd0dab20d513e26ce57354137e9931bdd15c0633))
|
|
23
|
+
* **gate-review:** deterministic gate-calibration via canonical Surface InquiryRecord ([#119](https://github.com/kontourai/flow-agents/issues/119)) ([#132](https://github.com/kontourai/flow-agents/issues/132)) ([d5ec073](https://github.com/kontourai/flow-agents/commit/d5ec073bcd3c0ba3075993453db0f932cf381686))
|
|
24
|
+
* **goal-fit:** re-derive trust.bundle claim status at the gate (ADR 0010 Phase 2 hardening) ([#136](https://github.com/kontourai/flow-agents/issues/136)) ([face2cb](https://github.com/kontourai/flow-agents/commit/face2cb5f2bcacd65c70dc22da72e0585874cde3))
|
|
25
|
+
* **hooks:** capture-first evidence determinism for command checks ([#115](https://github.com/kontourai/flow-agents/issues/115)) ([a5bd12f](https://github.com/kontourai/flow-agents/commit/a5bd12f0ad7629b79043356dae3e34acd22aabd0))
|
|
26
|
+
* **hooks:** goal-fit teeth + active-goal reground (block false-completion, survive compaction) ([#113](https://github.com/kontourai/flow-agents/issues/113)) ([40ba70b](https://github.com/kontourai/flow-agents/commit/40ba70bdf351d885965ae2e70861e07745547237))
|
|
27
|
+
* **install:** extend merge-aware install to codex — preserve user hooks.json ([#117](https://github.com/kontourai/flow-agents/issues/117)) ([#158](https://github.com/kontourai/flow-agents/issues/158)) ([212f097](https://github.com/kontourai/flow-agents/commit/212f097de0ec266d5d6ea6e016a3123c3f39d465))
|
|
28
|
+
* **install:** merge opencode.json + uniform version stamp across all runtimes ([#117](https://github.com/kontourai/flow-agents/issues/117)) ([#159](https://github.com/kontourai/flow-agents/issues/159)) ([bab6f68](https://github.com/kontourai/flow-agents/commit/bab6f684c0c5bdc36588d4b25f6e595333e76939))
|
|
29
|
+
* **install:** merge-aware global installs — opencode/codex --global + codex-home (closes [#117](https://github.com/kontourai/flow-agents/issues/117) deferred gaps) ([#188](https://github.com/kontourai/flow-agents/issues/188)) ([a133b39](https://github.com/kontourai/flow-agents/commit/a133b39a77bd108ccc39b879086e74d4f93ed435))
|
|
30
|
+
* **install:** merge-aware install for claude-code — preserve user config + version stamp + --global ([#117](https://github.com/kontourai/flow-agents/issues/117)) ([#157](https://github.com/kontourai/flow-agents/issues/157)) ([01d03c0](https://github.com/kontourai/flow-agents/commit/01d03c006d41fd9b2579675637bc3a07f64d0624))
|
|
31
|
+
* **knowledge:** add glossary-sync and detect-contradictions hygiene flows ([#106](https://github.com/kontourai/flow-agents/issues/106)) ([#197](https://github.com/kontourai/flow-agents/issues/197)) ([6c34c38](https://github.com/kontourai/flow-agents/commit/6c34c38560120ea61c47a6c52946c6273e28f69a))
|
|
32
|
+
* **knowledge:** add hygiene-review orchestrator over the four hygiene flows ([#106](https://github.com/kontourai/flow-agents/issues/106)) ([#199](https://github.com/kontourai/flow-agents/issues/199)) ([34ecf37](https://github.com/kontourai/flow-agents/commit/34ecf37bf6cf125ac368800c1ba5aada53d37c82))
|
|
33
|
+
* **knowledge:** add knowledge.audit-freshness hygiene flow ([#106](https://github.com/kontourai/flow-agents/issues/106)) ([#189](https://github.com/kontourai/flow-agents/issues/189)) ([33f7ebb](https://github.com/kontourai/flow-agents/commit/33f7ebb2ebacce007ab690ea0f802b5476dc8385))
|
|
34
|
+
* **knowledge:** add knowledge.canonicalize-category hygiene flow ([#106](https://github.com/kontourai/flow-agents/issues/106)) ([#193](https://github.com/kontourai/flow-agents/issues/193)) ([e5a02ce](https://github.com/kontourai/flow-agents/commit/e5a02ceb703f51387623260df95c7a262709b633))
|
|
35
|
+
* **knowledge:** add store reindex() — rebuild graph index from records (recovery, [#106](https://github.com/kontourai/flow-agents/issues/106)) ([#185](https://github.com/kontourai/flow-agents/issues/185)) ([377bf59](https://github.com/kontourai/flow-agents/commit/377bf59802d29e6fce0dae0bfc793cd5f4e493dc))
|
|
36
|
+
* per-run trust checkpoint — terminal seal + freshness drift on resume (consume surface checkpointFromReport/diffFreshness) ([#210](https://github.com/kontourai/flow-agents/issues/210)) ([04a6e63](https://github.com/kontourai/flow-agents/commit/04a6e6344ff1e921b8f0c4bd8b93ddd753e61adb))
|
|
37
|
+
* productize the trust anchor — `flow-agents verify` CLI + reusable composite Action + adoption docs (CI anchor Phase 3) ([#231](https://github.com/kontourai/flow-agents/issues/231)) ([305515f](https://github.com/kontourai/flow-agents/commit/305515f2594fafc3815b847024c1d91a9a7db1fe))
|
|
38
|
+
* remove legacy packs layer entirely (no backwards compatibility) ([#121](https://github.com/kontourai/flow-agents/issues/121)) ([a7325b5](https://github.com/kontourai/flow-agents/commit/a7325b5447de1e91524a1118ab44a497ab462be8))
|
|
39
|
+
* **resume:** liveness-aware + claim-aware RESUME block on SessionStart ([#153](https://github.com/kontourai/flow-agents/issues/153), first slice) ([#184](https://github.com/kontourai/flow-agents/issues/184)) ([71155bd](https://github.com/kontourai/flow-agents/commit/71155bd01f6b5cb8c20cd7b9e75567f2e9dae9aa))
|
|
40
|
+
* retire the -legacy dual-emit shadow — FlowDefinition-driven sessions are declared-only (ADR 0016, P-d) ([#209](https://github.com/kontourai/flow-agents/issues/209)) ([d9073de](https://github.com/kontourai/flow-agents/commit/d9073decd73de3cc436669c9d8fab8070e515373))
|
|
41
|
+
* sign the terminal checkpoint at release — in-toto/DSSE attestation (consume surface Sigstore, the real external integrity anchor) ([#211](https://github.com/kontourai/flow-agents/issues/211)) ([df8df2f](https://github.com/kontourai/flow-agents/commit/df8df2f1a6bfdc8494fb064414975c48600b5627))
|
|
42
|
+
* tamper-evident command-log.jsonl via hash-chain — the gate detects an altered/removed capture entry (B2) ([#212](https://github.com/kontourai/flow-agents/issues/212)) ([ff9b058](https://github.com/kontourai/flow-agents/commit/ff9b05867370775f918377d1a9a647cc867fd18c))
|
|
43
|
+
* **trust-bundle:** maximal enrichment + gate enforces on the canonical bundle (ADR 0010 Ph1+2 core) ([#133](https://github.com/kontourai/flow-agents/issues/133)) ([fa4115e](https://github.com/kontourai/flow-agents/commit/fa4115eb84fde743db60e066de745a0811360ac4))
|
|
44
|
+
* **trust-mcp:** opt-in trust-mcp command to wire Surface's MCP for trust surfacing ([#137](https://github.com/kontourai/flow-agents/issues/137)) ([#141](https://github.com/kontourai/flow-agents/issues/141)) ([b7beb43](https://github.com/kontourai/flow-agents/commit/b7beb4335afcc2bdd6fd0abd278dd4023c08a63b))
|
|
45
|
+
* **trust-panel:** render-trust-panel — project the bundle to a standalone Surface Trust Panel (ADR 0010 Phase 3 local) ([#135](https://github.com/kontourai/flow-agents/issues/135)) ([e1b3c35](https://github.com/kontourai/flow-agents/commit/e1b3c357156c2b5b631e5ad68cda378b73a5aab5))
|
|
46
|
+
* **trust-panel:** render-trust-panel also emits trust-report.json (universal Surface input) ([#140](https://github.com/kontourai/flow-agents/issues/140)) ([c430634](https://github.com/kontourai/flow-agents/commit/c4306341a42948db3604b0b4b14d6f930301a4e5))
|
|
47
|
+
* **validate:** guard against duplicate ADR numbers in validate-source-tree ([#191](https://github.com/kontourai/flow-agents/issues/191)) ([d0592eb](https://github.com/kontourai/flow-agents/commit/d0592eb09f1206c7c77a3836dfba18935a19f2f3))
|
|
48
|
+
* **workflow-sidecar:** claim-lookup tool — status + failing evidence + how-to-verify + why ([#162](https://github.com/kontourai/flow-agents/issues/162)) ([#173](https://github.com/kontourai/flow-agents/issues/173)) ([4b72cba](https://github.com/kontourai/flow-agents/commit/4b72cbace5cb3007ddad593e947e03cb173e4df3))
|
|
49
|
+
* **workflow-sidecar:** deterministic session slug from work-item ref ([#161](https://github.com/kontourai/flow-agents/issues/161)) ([#165](https://github.com/kontourai/flow-agents/issues/165)) ([e69fa26](https://github.com/kontourai/flow-agents/commit/e69fa26fcb8b63f1f216d8f31ac43622decd808d))
|
|
50
|
+
* **workflow-sidecar:** dual-write workflow trust state as local Hachure trust.bundle (ADR 0010 Phase 1) ([#126](https://github.com/kontourai/flow-agents/issues/126)) ([#130](https://github.com/kontourai/flow-agents/issues/130)) ([a9b8fd6](https://github.com/kontourai/flow-agents/commit/a9b8fd6061d05a3d73321108c942769c005bff11))
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Fixes
|
|
54
|
+
|
|
55
|
+
* **goal-fit:** re-derive-tamper block fires independent of backstop + protect it in CI ([#196](https://github.com/kontourai/flow-agents/issues/196)) ([9d13212](https://github.com/kontourai/flow-agents/commit/9d13212bb9b72c979d7c1de0aa64299aeb483d53))
|
|
56
|
+
* **knowledge:** auto-close spent proposal artifact on retire apply ([#106](https://github.com/kontourai/flow-agents/issues/106)) ([#186](https://github.com/kontourai/flow-agents/issues/186)) ([9835c06](https://github.com/kontourai/flow-agents/commit/9835c066a61ad99c6addda07a5387aa5e606165b))
|
|
57
|
+
* **security:** captureCrossReference now sees declared-type claims — declared-type false-completions BLOCK (adversarial review Finding 1, CRITICAL) ([#214](https://github.com/kontourai/flow-agents/issues/214)) ([0d1d4de](https://github.com/kontourai/flow-agents/commit/0d1d4def66164bb2f584074796338d594c951cff))
|
|
58
|
+
* **security:** captured-FAIL reconciliation — close the namespace-agnostic false-completion bypass (Round 2 red-team CRITICAL) + fix [#216](https://github.com/kontourai/flow-agents/issues/216) over-block ([#218](https://github.com/kontourai/flow-agents/issues/218)) ([e9bf229](https://github.com/kontourai/flow-agents/commit/e9bf229ee3380282cb60db3645e7969f6129929c))
|
|
59
|
+
* **security:** checkpoint signature now signs the on-disk bytes — attestation moved to a companion file (adversarial review HIGH/A02) ([#213](https://github.com/kontourai/flow-agents/issues/213)) ([b27fd14](https://github.com/kontourai/flow-agents/commit/b27fd1478549f867409f7053e2a9044ba337fb85))
|
|
60
|
+
* **security:** CI anchor verifies the REAL deliverable, not just compilation (Round 5 soundness) ([#226](https://github.com/kontourai/flow-agents/issues/226)) ([1117624](https://github.com/kontourai/flow-agents/commit/111762482272658e56bbbf8d4f51d5af6ea4e647))
|
|
61
|
+
* **security:** close the full gate-bypass chain — path-traversal sanitization + empty-gateExpects union (adversarial review HIGH/A01/A04) ([#215](https://github.com/kontourai/flow-agents/issues/215)) ([2554656](https://github.com/kontourai/flow-agents/commit/2554656551c01e9b63b2acc98b83c862a1b29d59))
|
|
62
|
+
* **security:** lock down gate bypass surfaces — config protection, MAX_BLOCKS hard-block guard, fail-closed (adversarial review Findings 2 + fail-opens) ([#216](https://github.com/kontourai/flow-agents/issues/216)) ([370ebc5](https://github.com/kontourai/flow-agents/commit/370ebc5edfdc80a53a2c4154b0767e9be4221b6f))
|
|
63
|
+
* **security:** protect state.json + trust.bundle from agent Write/Edit; best-effort flag node -e/sed -i/python -c profile writes (Round 4 audit) ([#220](https://github.com/kontourai/flow-agents/issues/220)) ([ef68054](https://github.com/kontourai/flow-agents/commit/ef680545d5c351dca3a4abf4d21c95eb7e44576e))
|
|
64
|
+
* **security:** resolveFirstStep traversal + tee multi-file evasion (Round 2 audit MEDIUM/LOW) ([#217](https://github.com/kontourai/flow-agents/issues/217)) ([ac1f3cd](https://github.com/kontourai/flow-agents/commit/ac1f3cdc99b90e16a593dc5380eda5cc469af98a))
|
|
65
|
+
* **security:** robust laundering detection (any ||) + delivery/ bundle protection (Round 5) ([#227](https://github.com/kontourai/flow-agents/issues/227)) ([d09bebe](https://github.com/kontourai/flow-agents/commit/d09bebe14e30779b193e225f4ecc2ff98e0ca00c))
|
|
66
|
+
* **security:** run the anti-gaming suite in a REQUIRED CI lane + screen the canonical verify + own the verify config (Round 7) ([#228](https://github.com/kontourai/flow-agents/issues/228)) ([0d68ab1](https://github.com/kontourai/flow-agents/commit/0d68ab13caffd8f703f552e56a03a6c5499d1d51))
|
|
67
|
+
* **security:** status-independent false-completion check + drop Case B over-block + flag exit-code laundering (Round 4) ([#219](https://github.com/kontourai/flow-agents/issues/219)) ([ef53339](https://github.com/kontourai/flow-agents/commit/ef53339ef6ad5e92275f8753ee59d73628020142))
|
|
68
|
+
* untrack accidental node_modules symlink + harden .gitignore ([#181](https://github.com/kontourai/flow-agents/issues/181) fallout) ([#182](https://github.com/kontourai/flow-agents/issues/182)) ([9042ff6](https://github.com/kontourai/flow-agents/commit/9042ff6a029c75a4555d4b94daa2291b3284930a))
|
|
69
|
+
* **writers:** bundle-writers fail loudly instead of silently losing data ([#156](https://github.com/kontourai/flow-agents/issues/156)) ([#160](https://github.com/kontourai/flow-agents/issues/160)) ([6e9e3a6](https://github.com/kontourai/flow-agents/commit/6e9e3a69119f40c571360025426687d0ff69f3a4))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### Documentation
|
|
73
|
+
|
|
74
|
+
* **adr:** ADR 0011 — MCP posture (enforcement stays hooks; Surface owns MCP projection; no auto-injected config) ([#138](https://github.com/kontourai/flow-agents/issues/138)) ([e65f2ae](https://github.com/kontourai/flow-agents/commit/e65f2ae593617ef8e31a154a6847135f91d4ff83))
|
|
75
|
+
* **adr:** ADR 0012 — agent coordination as Hachure liveness claims ([#145](https://github.com/kontourai/flow-agents/issues/145)) ([c57138f](https://github.com/kontourai/flow-agents/commit/c57138f0ff075578a381c398d549baca814edb10))
|
|
76
|
+
* **adr:** ADR 0013 — context lifecycle (workflow-boundary compaction, freshness-gated reuse, learning split) ([#163](https://github.com/kontourai/flow-agents/issues/163)) ([0589687](https://github.com/kontourai/flow-agents/commit/0589687d46e42c951a64e5e1b9a727e7691fe384))
|
|
77
|
+
* **adr:** ADR 0015 reassessment — Tiers 1 & 2 closed-by-evaluation (audit overstated drift) ([#198](https://github.com/kontourai/flow-agents/issues/198)) ([dde8c21](https://github.com/kontourai/flow-agents/commit/dde8c212e0c5f974e6bb9097c72806288f4be53f))
|
|
78
|
+
* **adr:** ADR 0016 — the three-hard-boundary model (FlowDefinition-driven kit-agnostic core) + sync 0014/0009/0004/0005 ([#203](https://github.com/kontourai/flow-agents/issues/203)) ([6ded109](https://github.com/kontourai/flow-agents/commit/6ded109802679a11d0edf88207a429f92eef8321))
|
|
79
|
+
* **adr:** ADR 0017 — the anti-gaming trust security model (layered defense + external CI anchor) ([#229](https://github.com/kontourai/flow-agents/issues/229)) ([bf794ce](https://github.com/kontourai/flow-agents/commit/bf794ce06a7b5e71579479813affa15e0859ef41))
|
|
80
|
+
* **adr:** correct ADR 0015 — Tier 2 reopened as Resource Contract migration (was wrongly closed) ([#202](https://github.com/kontourai/flow-agents/issues/202)) ([ec3a67b](https://github.com/kontourai/flow-agents/commit/ec3a67b8ca82fa7fedc579b5b404b58dcd5a708e))
|
|
81
|
+
* **adr:** renumber Flow/Flow-Agents boundary ADR 0014 → 0015 (resolve duplicate) ([#181](https://github.com/kontourai/flow-agents/issues/181)) ([1b581b7](https://github.com/kontourai/flow-agents/commit/1b581b722a060961e4deae6b775da68f7c350616))
|
|
82
|
+
* **agents:** capture merge-burst + fresh-handoff learnings in operating agreements ([#192](https://github.com/kontourai/flow-agents/issues/192)) ([31d5473](https://github.com/kontourai/flow-agents/commit/31d547330771fc77a4930fa8727ac078151d8ff4))
|
|
83
|
+
* **agents:** scope worktree cleanup to your own paths (operating agreement) ([#201](https://github.com/kontourai/flow-agents/issues/201)) ([ae6cf41](https://github.com/kontourai/flow-agents/commit/ae6cf413a0b79658855d991a56fc4916400277db))
|
|
84
|
+
* **contracts:** fail-loud + flake-is-a-real-bug in core review/verification contracts ([#170](https://github.com/kontourai/flow-agents/issues/170)) ([c25b48c](https://github.com/kontourai/flow-agents/commit/c25b48c7e58cda0c2803a44646996615c4de6cf7))
|
|
85
|
+
* seed kit-development operating agreements in AGENTS.md (ADR 0013) ([#164](https://github.com/kontourai/flow-agents/issues/164)) ([0b6e765](https://github.com/kontourai/flow-agents/commit/0b6e765a2348ddc709f6829cc163c1379498193a))
|
|
86
|
+
* Verifiable Trust — user-facing value/use-case doc for the anti-gaming trust model ([#230](https://github.com/kontourai/flow-agents/issues/230)) ([8710e29](https://github.com/kontourai/flow-agents/commit/8710e29ec9a0ea15f6e22e82e5d695a19aadc3b6))
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
### Refactoring
|
|
90
|
+
|
|
91
|
+
* **goal-fit:** drop bespoke markdown/DELIVERY_TYPES gate parsing — verdict is bundle-driven (ADR 0010 2c) ([#139](https://github.com/kontourai/flow-agents/issues/139)) ([342d7aa](https://github.com/kontourai/flow-agents/commit/342d7aaecea93c156a11a49467cb7167af888654))
|
|
92
|
+
* **goal-fit:** gate consumers read the trust.bundle, not bespoke sidecars (ADR 0010 Phase 4b) ([#146](https://github.com/kontourai/flow-agents/issues/146)) ([7ae2e2c](https://github.com/kontourai/flow-agents/commit/7ae2e2ce04205c874810596c5db132dfdf0ad85a))
|
|
93
|
+
* **liveness:** rename coord→liveness + lifecycle-driven liveness claims (ADR 0012) ([#154](https://github.com/kontourai/flow-agents/issues/154)) ([4576e0e](https://github.com/kontourai/flow-agents/commit/4576e0e8a03eaa49a3de9acf46a35c22b4cc36aa))
|
|
94
|
+
* **workflow-sidecar:** bundle is the primary artifact, sidecars projected (ADR 0010 Phase 4a) ([#144](https://github.com/kontourai/flow-agents/issues/144)) ([256ee9e](https://github.com/kontourai/flow-agents/commit/256ee9ef0879344c9c61724a8b58314b9a48129c))
|
|
95
|
+
* **workflow-sidecar:** consume surface's validateTrustBundle — retire bespoke validator ([#175](https://github.com/kontourai/flow-agents/issues/175), Tier 0) ([#180](https://github.com/kontourai/flow-agents/issues/180)) ([0cee634](https://github.com/kontourai/flow-agents/commit/0cee63421c7b327b608abef54b3a327d2187b2b3))
|
|
96
|
+
* **workflow-sidecar:** retire bespoke sidecars — bundle-only workspace (ADR 0010 Phase 4c) ([#152](https://github.com/kontourai/flow-agents/issues/152)) ([03432cb](https://github.com/kontourai/flow-agents/commit/03432cb536eeb90a49638391d506ecd6df7acfaa))
|
|
97
|
+
|
|
3
98
|
## [1.4.0](https://github.com/kontourai/flow-agents/compare/v1.3.0...v1.4.0) (2026-06-16)
|
|
4
99
|
|
|
5
100
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -9,11 +9,11 @@ Agents. This file is the footnote for people developing the product itself.
|
|
|
9
9
|
|
|
10
10
|
- keep the core product generic — no machine-specific paths, usernames, or
|
|
11
11
|
private workspace assumptions in tracked source
|
|
12
|
-
- the public bundle ships the
|
|
13
|
-
inside that scope
|
|
12
|
+
- the public bundle ships the full standalone base (skills, agents, powers) plus
|
|
13
|
+
the Flow Kits; keep new work inside that scope
|
|
14
14
|
- prefer install/use clarity over maintainer cleverness
|
|
15
|
-
- update the relevant docs, `
|
|
16
|
-
whenever you add or remove a skill, agent, or
|
|
15
|
+
- update the relevant docs, `kits/catalog.json`, and `packaging/manifest.json`
|
|
16
|
+
whenever you add or remove a skill, agent, power, or kit
|
|
17
17
|
- keep `docs/context-map.md` current with `npm run context-map`
|
|
18
18
|
- run `npm run build && npm run validate:source && bash evals/ci/run-baseline.sh`
|
|
19
19
|
before opening a PR
|
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ Flow Agents addresses this with a process-discipline layer that sits between the
|
|
|
28
28
|
- **Durable workflow state** — schema-validated sidecars under `.flow-agents/` record acceptance criteria, evidence, critique, handoff, and learning, so any session can resume from recorded state instead of chat memory.
|
|
29
29
|
- **Four canonical policies** — workflow steering (phase reminders at each turn), quality gate (per-file checks after edits), stop-goal-fit (evidence check before the agent stops), and config protection (veto writes to linter/formatter configs). Each policy class has a canonical script under `scripts/hooks/` and compiles to the host's native hook format.
|
|
30
30
|
- **Evidence over confidence** — important work ends with tests, browser checks, CI results, review findings, governance reports, or an explicit `NOT_VERIFIED` gap. Optional [Veritas](docs/veritas-integration.md) integration attaches repo-governance evidence without making it mandatory.
|
|
31
|
+
- **Verifiable, un-gameable "done"** — the agent can't mark work complete that isn't: the gate re-derives the verdict from independent evidence, an external CI anchor re-runs the verification fresh and fails the merge on any divergence, and CI mints a Sigstore-signed record of what shipped. See [Verifiable Trust — why "done" actually means done](docs/verifiable-trust.md).
|
|
31
32
|
- **Evals that keep the bundle honest** — 77 integration and 36 static bundle assertions validate the skills, contracts, fixtures, and hook influence as the bundle evolves.
|
|
32
33
|
|
|
33
34
|
## Flow Agents as a process-discipline layer
|
package/agents/tool-planner.json
CHANGED
|
@@ -52,6 +52,6 @@
|
|
|
52
52
|
},
|
|
53
53
|
"name" : "tool-planner",
|
|
54
54
|
"description" : "Delegate to me for codebase analysis and execution planning. Explores code, identifies patterns and dependencies, and writes plan/sidecar artifacts under .flow-agents. No production file modifications.",
|
|
55
|
-
"prompt" : "You are a codebase analyst. You explore code and produce structured execution plans.\n\n## Shared Contracts\nFollow `context/contracts/artifact-contract.md` and `context/contracts/planning-contract.md`. Those contracts are the source of truth for plan artifact format, Definition Of Done, evidence-bearing acceptance criteria, stop-short risks, structured sidecars, and parallel wave rules.\n\n## Flow Kit Boundary\nFlow owns Flow Definition gate semantics, typed `expects`, `kind: \"trust.bundle\"`, trusted producer config, and gate overrides. Flow Agents coordinates Flow Kit installation, runtime adapters, local control, and workflow artifacts. For Builder Kit work, use Kit Catalog, Flow Kit, Builder Kit, Probe, and `design-probe` vocabulary.\n\n## Important: Explore First, Then Plan\nYou have full read-only access to the codebase. If `docs/context-map.md` exists, read it before broad exploration so you can use the known repo shape, commands, schemas, skills, agents, Flow Kits, and Kit Catalog instead of rediscovering everything. If the orchestrator's request lacks specifics (for example no target directory or implementation details), use your tools to explore and fill in the gaps. Only push back if the goal itself is genuinely unclear.\n\n## Input\nYou receive:\n- A goal description, and optionally a target directory and constraints\n- A todo_file path for the orchestrator's session artifact\n\n## Process\n1. Read `docs/context-map.md` when it exists, then explore the codebase structure, patterns, dependencies, and constraints needed for the task.\n2. Identify existing code to reuse.\n3. Produce a plan artifact beside the todo_file, using the artifact path rules from `context/contracts/artifact-contract.md`.\n4. Create or update `state.json`, `acceptance.json`, and `handoff.json` beside the workflow artifact using the schemas under `schemas/`.\n5. Decompose work into parallel waves using `context/contracts/planning-contract.md`.\n6. Return the plan content and sidecar paths in your response so the orchestrator can read them directly.\n\n## Rules\n- Do not write production code.\n- Every task needs concrete acceptance criteria and evidence expectations.\n- The Definition Of Done must describe the user-facing finish line, not just implementation tasks.\n- `acceptance.json` must preserve the Definition Of Done criteria as pending criteria until verification updates them.\n- `state.json` must name the current phase/status and next action.\n- `handoff.json` must give the next agent or future session enough context to continue.\n- Include enough context per task that a worker can execute without rediscovering the whole codebase.",
|
|
55
|
+
"prompt" : "You are a codebase analyst. You explore code and produce structured execution plans.\n\n## Shared Contracts\nFollow `context/contracts/artifact-contract.md` and `context/contracts/planning-contract.md`. Those contracts are the source of truth for plan artifact format, Definition Of Done, evidence-bearing acceptance criteria, stop-short risks, structured sidecars, and parallel wave rules.\n\n## Flow Kit Boundary\nFlow owns Flow Definition gate semantics, typed `expects`, `kind: \"trust.bundle\"`, trusted producer config, and gate overrides. Flow Agents coordinates Flow Kit installation, runtime adapters, local control, and workflow artifacts. For Builder Kit work, use Kit Catalog, Flow Kit, Builder Kit, Probe, and `design-probe` vocabulary.\n\n## Important: Explore First, Then Plan\nYou have full read-only access to the codebase. If `docs/context-map.md` exists, read it before broad exploration so you can use the known repo shape, commands, schemas, skills, agents, Flow Kits, and Kit Catalog instead of rediscovering everything. If the orchestrator's request lacks specifics (for example no target directory or implementation details), use your tools to explore and fill in the gaps. Only push back if the goal itself is genuinely unclear.\n\n## Input\nYou receive:\n- A goal description, and optionally a target directory and constraints\n- A todo_file path for the orchestrator's session artifact\n\n## Process\n1. Read `docs/context-map.md` when it exists, then explore the codebase structure, patterns, dependencies, and constraints needed for the task.\n2. Identify existing code to reuse. Before designing any NEW artifact, schema, type, data shape, status, or derivation/algorithm, survey what dependencies and contracts already define — exported types/schemas/builders from `@kontourai/*` packages and vendored schemas, plus `context/contracts/`. Prefer consuming the canonical concept over inventing a parallel one (consume-never-fork; ADR 0008/0010); name the existing concept you consumed, or note explicitly why none fits.\n3. Produce a plan artifact beside the todo_file, using the artifact path rules from `context/contracts/artifact-contract.md`.\n4. Create or update `state.json`, `acceptance.json`, and `handoff.json` beside the workflow artifact using the schemas under `schemas/`.\n5. Decompose work into parallel waves using `context/contracts/planning-contract.md`.\n6. Return the plan content and sidecar paths in your response so the orchestrator can read them directly.\n\n## Rules\n- Do not write production code.\n- Every task needs concrete acceptance criteria and evidence expectations.\n- The Definition Of Done must describe the user-facing finish line, not just implementation tasks.\n- `acceptance.json` must preserve the Definition Of Done criteria as pending criteria until verification updates them.\n- `state.json` must name the current phase/status and next action.\n- `handoff.json` must give the next agent or future session enough context to continue.\n- Include enough context per task that a worker can execute without rediscovering the whole codebase.",
|
|
56
56
|
"model" : "claude-sonnet-4.6-1m"
|
|
57
57
|
}
|