@kontourai/flow-agents 3.0.0 → 3.2.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 (158) hide show
  1. package/.github/workflows/ci.yml +12 -0
  2. package/CHANGELOG.md +32 -0
  3. package/CONTEXT.md +67 -1
  4. package/README.md +4 -0
  5. package/build/src/cli/assignment-provider.d.ts +188 -0
  6. package/build/src/cli/assignment-provider.js +193 -51
  7. package/build/src/cli/workflow-sidecar.d.ts +16 -6
  8. package/build/src/cli/workflow-sidecar.js +492 -45
  9. package/build/src/lib/flow-resolver.d.ts +12 -6
  10. package/build/src/lib/flow-resolver.js +30 -14
  11. package/build/src/tools/validate-source-tree.js +2 -1
  12. package/context/contracts/assignment-provider-contract.md +10 -1
  13. package/context/contracts/execution-contract.md +78 -0
  14. package/context/contracts/probe-docs-write-contract.md +187 -0
  15. package/context/scripts/hooks/config-protection.js +24 -4
  16. package/context/scripts/hooks/lib/config-protection-remedies.js +9 -0
  17. package/context/scripts/hooks/stop-goal-fit.js +262 -5
  18. package/context/scripts/hooks/workflow-steering.js +42 -0
  19. package/docs/adr/0001-flow-agents-consumes-flow.md +2 -0
  20. package/docs/adr/0002-flow-kits-as-extension-unit.md +2 -0
  21. package/docs/adr/0003-flow-agents-coordinates-kits-and-adapters.md +2 -0
  22. package/docs/adr/0004-gates-expect-surface-claims.md +2 -0
  23. package/docs/adr/0005-kubernetes-inspired-resource-contracts.md +2 -0
  24. package/docs/adr/0006-typescript-first-source-policy.md +2 -0
  25. package/docs/adr/0007-flow-skill-kit-tool-boundary.md +2 -0
  26. package/docs/adr/0007-skill-audit.md +2 -0
  27. package/docs/adr/0008-kit-operation-boundary.md +2 -0
  28. package/docs/adr/0009-canonical-hook-core-kit-boundary.md +2 -0
  29. package/docs/adr/0010-workflow-trust-state-as-hachure-bundle.md +2 -0
  30. package/docs/adr/0011-mcp-posture.md +2 -0
  31. package/docs/adr/0012-agent-coordination-as-liveness-claims.md +2 -0
  32. package/docs/adr/0013-context-lifecycle.md +2 -0
  33. package/docs/adr/0014-core-vs-domain-kit-boundary.md +2 -0
  34. package/docs/adr/0015-flow-flow-agents-boundary-reconciliation.md +2 -0
  35. package/docs/adr/0016-three-hard-boundary-model.md +2 -0
  36. package/docs/adr/0017-anti-gaming-trust-security-model.md +2 -0
  37. package/docs/adr/0018-freeze-local-shell-heuristics.md +2 -0
  38. package/docs/adr/0019-kit-dependency-ownership.md +2 -0
  39. package/docs/adr/0020-trust-reconcile-manifest-and-claim-classification.md +2 -0
  40. package/docs/adr/0021-assignment-leases-and-stale-claim-takeover.md +3 -1
  41. package/docs/adr/0022-fail-closed-delivery-reconciliation-with-governed-exemptions.md +113 -0
  42. package/docs/adr/README.md +49 -0
  43. package/docs/adr/index.md +34 -0
  44. package/docs/decisions/agent-coordination.md +20 -0
  45. package/docs/decisions/anti-gaming-trust-security.md +20 -0
  46. package/docs/decisions/context-lifecycle.md +18 -0
  47. package/docs/decisions/core-domain-kit-boundary.md +18 -0
  48. package/docs/decisions/flow-flow-agents-boundary.md +18 -0
  49. package/docs/decisions/flow-kit.md +20 -0
  50. package/docs/decisions/flow-skill-kit-tool-boundary.md +20 -0
  51. package/docs/decisions/graph-knowledge-provider.md +63 -0
  52. package/docs/decisions/hook-core-kit-boundary.md +18 -0
  53. package/docs/decisions/index.md +19 -0
  54. package/docs/decisions/kit-dependency-ownership.md +18 -0
  55. package/docs/decisions/kit-operation-boundary.md +18 -0
  56. package/docs/decisions/knowledge-promote-sub-flow.md +59 -0
  57. package/docs/decisions/kontour-resource-contract.md +18 -0
  58. package/docs/decisions/mcp-posture.md +18 -0
  59. package/docs/decisions/three-hard-boundary-model.md +18 -0
  60. package/docs/decisions/trust-reconcile.md +20 -0
  61. package/docs/decisions/typescript-source-policy.md +48 -0
  62. package/docs/decisions/workflow-enforcement.md +18 -0
  63. package/docs/decisions/workflow-trust-state.md +20 -0
  64. package/docs/fixture-ownership.md +1 -1
  65. package/docs/workflow-usage-guide.md +1 -1
  66. package/evals/ci/run-baseline.sh +6 -0
  67. package/evals/fixtures/assignment-provider/hostile-effective-state.json +11 -0
  68. package/evals/integration/test_checkpoint_signing.sh +4 -3
  69. package/evals/integration/test_current_json_per_actor.sh +516 -0
  70. package/evals/integration/test_ensure_session_ownership_guard.sh +435 -0
  71. package/evals/integration/test_gate_lockdown.sh +46 -0
  72. package/evals/integration/test_model_routing_escalation.sh +145 -0
  73. package/evals/integration/test_publish_delivery.sh +14 -6
  74. package/evals/integration/test_pull_work_liveness_preflight.sh +6 -1
  75. package/evals/integration/test_stop_hook_release.sh +552 -0
  76. package/evals/integration/test_trust_reconcile_negatives.sh +170 -0
  77. package/evals/integration/test_workflow_sidecar_writer.sh +12 -3
  78. package/evals/run.sh +10 -0
  79. package/evals/static/test_knowledge_providers.sh +13 -4
  80. package/evals/static/test_model_routing_hints.sh +107 -0
  81. package/evals/static/test_workflow_skills.sh +15 -2
  82. package/kits/builder/skills/builder-shape/SKILL.md +10 -0
  83. package/kits/builder/skills/deliver/SKILL.md +69 -11
  84. package/kits/builder/skills/design-probe/SKILL.md +47 -0
  85. package/kits/builder/skills/execute-plan/SKILL.md +13 -0
  86. package/kits/builder/skills/fix-bug/SKILL.md +17 -0
  87. package/kits/builder/skills/idea-to-backlog/SKILL.md +10 -0
  88. package/kits/builder/skills/pickup-probe/SKILL.md +4 -4
  89. package/kits/builder/skills/plan-work/SKILL.md +9 -0
  90. package/kits/builder/skills/pull-work/SKILL.md +10 -0
  91. package/kits/builder/skills/review-work/SKILL.md +11 -0
  92. package/kits/builder/skills/tdd-workflow/SKILL.md +17 -0
  93. package/kits/builder/skills/verify-work/SKILL.md +11 -0
  94. package/kits/knowledge/adapters/default-store/index.js +147 -18
  95. package/kits/knowledge/adapters/flow-runner/index.js +912 -16
  96. package/kits/knowledge/adapters/obsidian-store/index.js +97 -14
  97. package/kits/knowledge/adapters/shared/codec.js +265 -0
  98. package/kits/knowledge/docs/README.md +121 -2
  99. package/kits/knowledge/docs/store-contract.md +517 -7
  100. package/kits/knowledge/evals/audit-freshness/suite.test.js +92 -1
  101. package/kits/knowledge/evals/consolidate-incremental/suite.test.js +494 -0
  102. package/kits/knowledge/evals/consolidation/suite.test.js +1 -1
  103. package/kits/knowledge/evals/contract-suite/suite.test.js +212 -0
  104. package/kits/knowledge/evals/freshness/suite.test.js +339 -0
  105. package/kits/knowledge/evals/inbound-references/suite.test.js +351 -0
  106. package/kits/knowledge/evals/retirement/suite.test.js +1 -1
  107. package/kits/knowledge/evals/supersede-propagation/suite.test.js +384 -0
  108. package/kits/knowledge/flows/promote.flow.json +84 -0
  109. package/kits/knowledge/kit.json +15 -0
  110. package/kits/knowledge/promote/distill.js +96 -0
  111. package/kits/knowledge/promote/fixtures/contradiction-registry/CONTEXT.md +7 -0
  112. package/kits/knowledge/promote/fixtures/contradiction-registry/docs/decisions/cache-eviction-policy.md +12 -0
  113. package/kits/knowledge/promote/fixtures/contradiction-registry/docs/decisions/cache-eviction.md +12 -0
  114. package/kits/knowledge/promote/fixtures/repo/CONTEXT.md +11 -0
  115. package/kits/knowledge/promote/fixtures/repo/docs/decisions/index.md +9 -0
  116. package/kits/knowledge/promote/fixtures/repo/docs/decisions/liveness-claim.md +12 -0
  117. package/kits/knowledge/promote/fixtures/session/acceptance.json +9 -0
  118. package/kits/knowledge/promote/fixtures/session/agents/tool-planner/events.jsonl +1 -0
  119. package/kits/knowledge/promote/fixtures/session/agents/tool-verifier/events.jsonl +1 -0
  120. package/kits/knowledge/promote/fixtures/session/agents/tool-worker-1-1/events.jsonl +1 -0
  121. package/kits/knowledge/promote/fixtures/session/kontourai-flow-agents-287--deliver.md +47 -0
  122. package/kits/knowledge/promote/fixtures/session/learning.json +35 -0
  123. package/kits/knowledge/promote/fixtures/session/state.json +19 -0
  124. package/kits/knowledge/promote/health.js +137 -0
  125. package/kits/knowledge/promote/index.js +176 -0
  126. package/kits/knowledge/promote/ingest.js +103 -0
  127. package/kits/knowledge/promote/lib.js +132 -0
  128. package/kits/knowledge/promote/link.js +84 -0
  129. package/kits/knowledge/promote/promote.test.js +174 -0
  130. package/kits/knowledge/providers/conformance/suite.test.js +18 -0
  131. package/kits/knowledge/providers/index.js +1 -0
  132. package/kits/knowledge/providers/neo4j/connection.js +121 -0
  133. package/kits/knowledge/providers/neo4j/cypher.js +190 -0
  134. package/kits/knowledge/providers/neo4j/fake-driver.js +123 -0
  135. package/kits/knowledge/providers/neo4j/fixtures/spike-ground-truth.json +29 -0
  136. package/kits/knowledge/providers/neo4j/graph-queries.js +210 -0
  137. package/kits/knowledge/providers/neo4j/index.js +280 -0
  138. package/kits/knowledge/providers/neo4j/integration.test.js +122 -0
  139. package/kits/knowledge/providers/neo4j/neo4j.test.js +219 -0
  140. package/kits/knowledge/providers/neo4j/sync.js +235 -0
  141. package/package.json +4 -2
  142. package/schemas/workflow-handoff.schema.json +6 -0
  143. package/scripts/README.md +1 -0
  144. package/scripts/ci/mint-attestation.js +33 -6
  145. package/scripts/ci/trust-reconcile.js +144 -26
  146. package/scripts/freeze-adrs.mjs +364 -0
  147. package/scripts/hooks/config-protection.js +24 -4
  148. package/scripts/hooks/evidence-capture.js +4 -1
  149. package/scripts/hooks/lib/config-protection-remedies.js +9 -0
  150. package/scripts/hooks/lib/current-pointer.js +123 -0
  151. package/scripts/hooks/lib/liveness-heartbeat.js +75 -35
  152. package/scripts/hooks/stop-goal-fit.js +262 -5
  153. package/scripts/hooks/workflow-steering.js +42 -0
  154. package/scripts/statusline/flow-agents-statusline.js +3 -1
  155. package/src/cli/assignment-provider.ts +239 -59
  156. package/src/cli/workflow-sidecar.ts +529 -43
  157. package/src/lib/flow-resolver.ts +35 -14
  158. package/src/tools/validate-source-tree.ts +2 -1
@@ -0,0 +1,20 @@
1
+ ---
2
+ status: needs-decision
3
+ subject: Trust-reconcile and delivery reconciliation
4
+ decided: 2026-07-03
5
+ evidence:
6
+ - kind: adr
7
+ ref: docs/adr/0020-trust-reconcile-manifest-and-claim-classification.md
8
+ - kind: adr
9
+ ref: docs/adr/0022-fail-closed-delivery-reconciliation-with-governed-exemptions.md
10
+ ---
11
+ # Trust-reconcile and delivery reconciliation
12
+
13
+ This subject has provenance in frozen ADR history ([0020-trust-reconcile-manifest-and-claim-classification.md](../adr/0020-trust-reconcile-manifest-and-claim-classification.md), [0022-fail-closed-delivery-reconciliation-with-governed-exemptions.md](../adr/0022-fail-closed-delivery-reconciliation-with-governed-exemptions.md)) but no living
14
+ decision has been ratified yet under the topic-keyed decision registry
15
+ (`context/contracts/decision-registry-contract.md`). This stub records that the
16
+ subject is open and links the frozen ADR(s) as provenance; it is not a decision.
17
+
18
+ When a living decision is ratified for Trust-reconcile and delivery reconciliation, update this
19
+ file's `status` to `current`, add rationale, and keep the `adr` evidence
20
+ links as provenance for the history that led here.
@@ -0,0 +1,48 @@
1
+ ---
2
+ status: current
3
+ subject: TypeScript-first source policy
4
+ decided: 2026-07-04
5
+ evidence:
6
+ - kind: adr
7
+ ref: docs/adr/0006-typescript-first-source-policy.md
8
+ - kind: session-archive
9
+ ref: .kontourai/flow-agents/kontourai-flow-agents-311/kontourai-flow-agents-311--deliver.md
10
+ - kind: issue
11
+ ref: https://github.com/kontourai/flow-agents/issues/311
12
+ ---
13
+
14
+ # TypeScript-first source policy
15
+
16
+ Kontour product and runtime source defaults to TypeScript across Flow, Flow
17
+ Agents, Surface, Veritas, and `kontourai.io`. New durable product code, runtime
18
+ adapters, package APIs, CLI behavior, workflow orchestration, hooks, provider
19
+ bridges, and shared contracts are authored in TypeScript by default in
20
+ repositories that are TypeScript-enabled or migrating toward TypeScript.
21
+
22
+ ## Decision
23
+
24
+ - TypeScript-enabled repositories expose a typecheck or build validation that
25
+ proves the authored TypeScript surface compiles, and CI runs that validation
26
+ before code is treated as releasable.
27
+ - Narrow JavaScript/MJS/CJS exceptions remain acceptable: package/tool
28
+ configuration that expects JS/MJS, generated docs/site assets, thin
29
+ shell-adjacent launchers, fixtures/examples/tests following existing local
30
+ convention, and historical archived/vendored/generated artifacts that are not
31
+ edited as active source. Exceptions stay narrow — expanding product/runtime
32
+ behavior in JS/MJS is a deliberate exception or routed into a migration plan.
33
+ - Repositories with nontrivial non-TypeScript runtime source track staged
34
+ migration through repo-specific issues rather than being grandfathered as
35
+ permanent direction (see the original inventory and linked migration issues
36
+ in the frozen ADR below).
37
+
38
+ ## Rationale
39
+
40
+ Cross-repo shared source, contracts, adapters, and workflow tooling need a
41
+ consistent default language, or new work deepens fragmentation and turns every
42
+ existing non-TypeScript file into an implicit permanent exception. This is a
43
+ purely technical, already-settled call: the frozen ADR below made the decision
44
+ on 2026-05-31 and it has not changed. This entry upgrades the ADR-freeze
45
+ cutover's `needs-decision` stub for this subject (issue #314) to a living
46
+ decision — nothing new is decided here beyond recording that the frozen ADR's
47
+ call still stands, per the Probe docs-write contract's worked example
48
+ (`context/contracts/probe-docs-write-contract.md`).
@@ -0,0 +1,18 @@
1
+ ---
2
+ status: needs-decision
3
+ subject: Workflow Enforcement
4
+ decided: 2026-07-03
5
+ evidence:
6
+ - kind: adr
7
+ ref: docs/adr/0001-flow-agents-consumes-flow.md
8
+ ---
9
+ # Workflow Enforcement
10
+
11
+ This subject has provenance in frozen ADR history ([0001-flow-agents-consumes-flow.md](../adr/0001-flow-agents-consumes-flow.md)) but no living
12
+ decision has been ratified yet under the topic-keyed decision registry
13
+ (`context/contracts/decision-registry-contract.md`). This stub records that the
14
+ subject is open and links the frozen ADR(s) as provenance; it is not a decision.
15
+
16
+ When a living decision is ratified for workflow enforcement, update this
17
+ file's `status` to `current`, add rationale, and keep the `adr` evidence
18
+ links as provenance for the history that led here.
@@ -0,0 +1,20 @@
1
+ ---
2
+ status: needs-decision
3
+ subject: Workflow trust state
4
+ decided: 2026-07-03
5
+ evidence:
6
+ - kind: adr
7
+ ref: docs/adr/0004-gates-expect-surface-claims.md
8
+ - kind: adr
9
+ ref: docs/adr/0010-workflow-trust-state-as-hachure-bundle.md
10
+ ---
11
+ # Workflow trust state
12
+
13
+ This subject has provenance in frozen ADR history ([0004-gates-expect-surface-claims.md](../adr/0004-gates-expect-surface-claims.md), [0010-workflow-trust-state-as-hachure-bundle.md](../adr/0010-workflow-trust-state-as-hachure-bundle.md)) but no living
14
+ decision has been ratified yet under the topic-keyed decision registry
15
+ (`context/contracts/decision-registry-contract.md`). This stub records that the
16
+ subject is open and links the frozen ADR(s) as provenance; it is not a decision.
17
+
18
+ When a living decision is ratified for workflow trust state, update this
19
+ file's `status` to `current`, add rationale, and keep the `adr` evidence
20
+ links as provenance for the history that led here.
@@ -13,7 +13,7 @@ run `npm run validate:source --` and `npm run fixture:retirement-audit --`.
13
13
 
14
14
  | Fixture directory | Classification | Owners | Cleanup rule |
15
15
  | --- | --- | --- | --- |
16
- | `evals/fixtures/assignment-provider` | AssignmentProvider local-file and GitHub render/status fixtures (#290) | `evals/integration/test_assignment_provider_local_file.sh`, `evals/integration/test_assignment_provider_github.sh`, `evals/integration/test_pull_work_assignment_join.sh` | Keep while the assignment provider contract's claim/release/supersede/status/list operations and the assignment ⋈ liveness join are tested against local-file and GitHub fixture inputs. |
16
+ | `evals/fixtures/assignment-provider` | AssignmentProvider local-file and GitHub render/status fixtures (#290); hostile-effective-state.json is the #291 ensure-session ownership guard's AC9 sanitization fixture | `evals/integration/test_assignment_provider_local_file.sh`, `evals/integration/test_assignment_provider_github.sh`, `evals/integration/test_pull_work_assignment_join.sh`, `evals/integration/test_ensure_session_ownership_guard.sh` | Keep while the assignment provider contract's claim/release/supersede/status/list operations and the assignment ⋈ liveness join are tested against local-file and GitHub fixture inputs. |
17
17
  | `evals/fixtures/backlog-provider-settings` | settings precedence fixtures | `evals/integration/test_effective_backlog_settings.sh` | Keep while backlog provider settings resolution supports global defaults and project overrides. |
18
18
  | `evals/fixtures/builder-kit-workflow-state` | Builder Kit workflow-state fixtures | `evals/static/test_workflow_skills.sh` | Keep while Builder Kit state contract and resume behavior are documented in workflow skill contracts. |
19
19
  | `evals/fixtures/console-learning-projection` | console learning projection fixtures | `evals/integration/test_console_learning_projection.sh` | Keep while learning projection supports correction and open-route examples. |
@@ -255,7 +255,7 @@ When verification or evidence gates route work backward, the handoff must name b
255
255
 
256
256
  For pickup or planning alignment gaps, `decision_gap -> design-probe` means returning to the pickup Probe record, resolving the missing decision or recording an accepted gap, and only then retrying `plan-work`.
257
257
 
258
- Pickup Probe may update durable docs only when the decision is no longer a transient planning note. Use `CONTEXT.md` for glossary-style terminology decisions, create context files lazily only when a resolved term has no existing home, and create ADRs only for hard-to-reverse, surprising decisions that came from a real trade-off. Keep selected-work details, provider snapshots, unresolved questions, and accepted gaps in workflow artifacts until the work is accepted.
258
+ Pickup Probe may update durable docs only when the decision is no longer a transient planning note. Use `CONTEXT.md` for glossary-style terminology decisions, create context files lazily only when a resolved term has no existing home, and record decision subjects as decision-registry deltas (`docs/decisions/<slug>.md`, revise-vs-create against `docs/decisions/index.md`) rather than numbered ADRs see `context/contracts/probe-docs-write-contract.md`. Keep selected-work details, provider snapshots, unresolved questions, and accepted gaps in workflow artifacts until the work is accepted.
259
259
 
260
260
  ## 7. Check Goal Fit Before Stopping
261
261
 
@@ -24,7 +24,10 @@ CHECKS=(
24
24
  "Actor identity resolver integration|bash evals/integration/test_actor_identity.sh"
25
25
  "Assignment provider local-file integration|bash evals/integration/test_assignment_provider_local_file.sh"
26
26
  "Assignment provider github integration|bash evals/integration/test_assignment_provider_github.sh"
27
+ "Stop hook release-with-handoff integration|bash evals/integration/test_stop_hook_release.sh"
27
28
  "Pull work assignment join integration|bash evals/integration/test_pull_work_assignment_join.sh"
29
+ "Ensure-session ownership guard integration|bash evals/integration/test_ensure_session_ownership_guard.sh"
30
+ "Current.json per-actor integration|bash evals/integration/test_current_json_per_actor.sh"
28
31
  "Goal Fit hook integration|bash evals/integration/test_goal_fit_hook.sh"
29
32
  "Hook category behavior integration|bash evals/integration/test_hook_category_behaviors.sh"
30
33
  "Workflow steering hook integration|bash evals/integration/test_workflow_steering_hook.sh"
@@ -77,7 +80,10 @@ LANE_WORKFLOW_CONTRACTS=(
77
80
  "Actor identity resolver integration"
78
81
  "Assignment provider local-file integration"
79
82
  "Assignment provider github integration"
83
+ "Stop hook release-with-handoff integration"
80
84
  "Pull work assignment join integration"
85
+ "Ensure-session ownership guard integration"
86
+ "Current.json per-actor integration"
81
87
  )
82
88
 
83
89
  LANE_RUNTIME_AND_KIT=(
@@ -0,0 +1,11 @@
1
+ {
2
+ "_comment": "Hostile-string fixture for #291 AC9 (ensure-session ownership guard sanitization). Simulates the precomputed .effective JSON a GitHub-provider caller would pass via --effective-state-json, where the .assignee field originates from an attacker-postable GitHub login/comment. The assignee value below embeds a real ESC (ANSI CSI lead-in) and a real BEL control byte -- both must be stripped (never echoed raw) by ensure-session's guard before this value is interpolated into any die() remediation message.",
3
+ "effective": {
4
+ "effective_state": "human-held",
5
+ "reason": "assignee_is_human",
6
+ "holder": {
7
+ "assignee": "hostile-assignee\u001b[31;1mFAKE-ADMIN\u0007-login",
8
+ "idle_days": 3
9
+ }
10
+ }
11
+ }
@@ -298,10 +298,11 @@ else
298
298
  _fail "advance-state --status delivered exited $SEAL_EXIT (signing must not break the seal)"
299
299
  fi
300
300
 
301
- if [[ -f "$REPO_ROOT2/delivery/trust.bundle" ]]; then
302
- _pass "publish-delivery published into the explicit scratch --repo-root ($REPO_ROOT2/delivery/trust.bundle), not process.cwd()"
301
+ # #379: publishDelivery writes to the per-session path delivery/<slug>/trust.bundle.
302
+ if [[ -f "$REPO_ROOT2/delivery/$SLUG2/trust.bundle" ]]; then
303
+ _pass "publish-delivery published into the explicit scratch --repo-root ($REPO_ROOT2/delivery/$SLUG2/trust.bundle, #379 per-session), not process.cwd()"
303
304
  else
304
- _fail "publish-delivery did not write to the explicit scratch --repo-root ($REPO_ROOT2/delivery/trust.bundle) — check the --repo-root plumbing in advanceState"
305
+ _fail "publish-delivery did not write to the explicit scratch --repo-root ($REPO_ROOT2/delivery/$SLUG2/trust.bundle) — check the --repo-root plumbing in advanceState"
305
306
  fi
306
307
 
307
308
  if [[ -f "$SESSION_DIR2/trust.checkpoint.json" ]]; then