@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.
- package/.github/workflows/ci.yml +12 -0
- package/CHANGELOG.md +32 -0
- package/CONTEXT.md +67 -1
- package/README.md +4 -0
- package/build/src/cli/assignment-provider.d.ts +188 -0
- package/build/src/cli/assignment-provider.js +193 -51
- package/build/src/cli/workflow-sidecar.d.ts +16 -6
- package/build/src/cli/workflow-sidecar.js +492 -45
- package/build/src/lib/flow-resolver.d.ts +12 -6
- package/build/src/lib/flow-resolver.js +30 -14
- package/build/src/tools/validate-source-tree.js +2 -1
- package/context/contracts/assignment-provider-contract.md +10 -1
- package/context/contracts/execution-contract.md +78 -0
- package/context/contracts/probe-docs-write-contract.md +187 -0
- package/context/scripts/hooks/config-protection.js +24 -4
- package/context/scripts/hooks/lib/config-protection-remedies.js +9 -0
- package/context/scripts/hooks/stop-goal-fit.js +262 -5
- package/context/scripts/hooks/workflow-steering.js +42 -0
- package/docs/adr/0001-flow-agents-consumes-flow.md +2 -0
- package/docs/adr/0002-flow-kits-as-extension-unit.md +2 -0
- package/docs/adr/0003-flow-agents-coordinates-kits-and-adapters.md +2 -0
- 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/0006-typescript-first-source-policy.md +2 -0
- package/docs/adr/0007-flow-skill-kit-tool-boundary.md +2 -0
- package/docs/adr/0007-skill-audit.md +2 -0
- package/docs/adr/0008-kit-operation-boundary.md +2 -0
- package/docs/adr/0009-canonical-hook-core-kit-boundary.md +2 -0
- package/docs/adr/0010-workflow-trust-state-as-hachure-bundle.md +2 -0
- package/docs/adr/0011-mcp-posture.md +2 -0
- package/docs/adr/0012-agent-coordination-as-liveness-claims.md +2 -0
- package/docs/adr/0013-context-lifecycle.md +2 -0
- package/docs/adr/0014-core-vs-domain-kit-boundary.md +2 -0
- package/docs/adr/0015-flow-flow-agents-boundary-reconciliation.md +2 -0
- package/docs/adr/0016-three-hard-boundary-model.md +2 -0
- package/docs/adr/0017-anti-gaming-trust-security-model.md +2 -0
- package/docs/adr/0018-freeze-local-shell-heuristics.md +2 -0
- package/docs/adr/0019-kit-dependency-ownership.md +2 -0
- package/docs/adr/0020-trust-reconcile-manifest-and-claim-classification.md +2 -0
- package/docs/adr/0021-assignment-leases-and-stale-claim-takeover.md +3 -1
- package/docs/adr/0022-fail-closed-delivery-reconciliation-with-governed-exemptions.md +113 -0
- package/docs/adr/README.md +49 -0
- package/docs/adr/index.md +34 -0
- package/docs/decisions/agent-coordination.md +20 -0
- package/docs/decisions/anti-gaming-trust-security.md +20 -0
- package/docs/decisions/context-lifecycle.md +18 -0
- package/docs/decisions/core-domain-kit-boundary.md +18 -0
- package/docs/decisions/flow-flow-agents-boundary.md +18 -0
- package/docs/decisions/flow-kit.md +20 -0
- package/docs/decisions/flow-skill-kit-tool-boundary.md +20 -0
- package/docs/decisions/graph-knowledge-provider.md +63 -0
- package/docs/decisions/hook-core-kit-boundary.md +18 -0
- package/docs/decisions/index.md +19 -0
- package/docs/decisions/kit-dependency-ownership.md +18 -0
- package/docs/decisions/kit-operation-boundary.md +18 -0
- package/docs/decisions/knowledge-promote-sub-flow.md +59 -0
- package/docs/decisions/kontour-resource-contract.md +18 -0
- package/docs/decisions/mcp-posture.md +18 -0
- package/docs/decisions/three-hard-boundary-model.md +18 -0
- package/docs/decisions/trust-reconcile.md +20 -0
- package/docs/decisions/typescript-source-policy.md +48 -0
- package/docs/decisions/workflow-enforcement.md +18 -0
- package/docs/decisions/workflow-trust-state.md +20 -0
- package/docs/fixture-ownership.md +1 -1
- package/docs/workflow-usage-guide.md +1 -1
- package/evals/ci/run-baseline.sh +6 -0
- package/evals/fixtures/assignment-provider/hostile-effective-state.json +11 -0
- package/evals/integration/test_checkpoint_signing.sh +4 -3
- package/evals/integration/test_current_json_per_actor.sh +516 -0
- package/evals/integration/test_ensure_session_ownership_guard.sh +435 -0
- package/evals/integration/test_gate_lockdown.sh +46 -0
- package/evals/integration/test_model_routing_escalation.sh +145 -0
- package/evals/integration/test_publish_delivery.sh +14 -6
- package/evals/integration/test_pull_work_liveness_preflight.sh +6 -1
- package/evals/integration/test_stop_hook_release.sh +552 -0
- package/evals/integration/test_trust_reconcile_negatives.sh +170 -0
- package/evals/integration/test_workflow_sidecar_writer.sh +12 -3
- package/evals/run.sh +10 -0
- package/evals/static/test_knowledge_providers.sh +13 -4
- package/evals/static/test_model_routing_hints.sh +107 -0
- package/evals/static/test_workflow_skills.sh +15 -2
- package/kits/builder/skills/builder-shape/SKILL.md +10 -0
- package/kits/builder/skills/deliver/SKILL.md +69 -11
- package/kits/builder/skills/design-probe/SKILL.md +47 -0
- package/kits/builder/skills/execute-plan/SKILL.md +13 -0
- package/kits/builder/skills/fix-bug/SKILL.md +17 -0
- package/kits/builder/skills/idea-to-backlog/SKILL.md +10 -0
- package/kits/builder/skills/pickup-probe/SKILL.md +4 -4
- package/kits/builder/skills/plan-work/SKILL.md +9 -0
- package/kits/builder/skills/pull-work/SKILL.md +10 -0
- package/kits/builder/skills/review-work/SKILL.md +11 -0
- package/kits/builder/skills/tdd-workflow/SKILL.md +17 -0
- package/kits/builder/skills/verify-work/SKILL.md +11 -0
- package/kits/knowledge/adapters/default-store/index.js +147 -18
- package/kits/knowledge/adapters/flow-runner/index.js +912 -16
- package/kits/knowledge/adapters/obsidian-store/index.js +97 -14
- package/kits/knowledge/adapters/shared/codec.js +265 -0
- package/kits/knowledge/docs/README.md +121 -2
- package/kits/knowledge/docs/store-contract.md +517 -7
- package/kits/knowledge/evals/audit-freshness/suite.test.js +92 -1
- package/kits/knowledge/evals/consolidate-incremental/suite.test.js +494 -0
- package/kits/knowledge/evals/consolidation/suite.test.js +1 -1
- package/kits/knowledge/evals/contract-suite/suite.test.js +212 -0
- package/kits/knowledge/evals/freshness/suite.test.js +339 -0
- package/kits/knowledge/evals/inbound-references/suite.test.js +351 -0
- package/kits/knowledge/evals/retirement/suite.test.js +1 -1
- package/kits/knowledge/evals/supersede-propagation/suite.test.js +384 -0
- package/kits/knowledge/flows/promote.flow.json +84 -0
- package/kits/knowledge/kit.json +15 -0
- package/kits/knowledge/promote/distill.js +96 -0
- package/kits/knowledge/promote/fixtures/contradiction-registry/CONTEXT.md +7 -0
- package/kits/knowledge/promote/fixtures/contradiction-registry/docs/decisions/cache-eviction-policy.md +12 -0
- package/kits/knowledge/promote/fixtures/contradiction-registry/docs/decisions/cache-eviction.md +12 -0
- package/kits/knowledge/promote/fixtures/repo/CONTEXT.md +11 -0
- package/kits/knowledge/promote/fixtures/repo/docs/decisions/index.md +9 -0
- package/kits/knowledge/promote/fixtures/repo/docs/decisions/liveness-claim.md +12 -0
- package/kits/knowledge/promote/fixtures/session/acceptance.json +9 -0
- package/kits/knowledge/promote/fixtures/session/agents/tool-planner/events.jsonl +1 -0
- package/kits/knowledge/promote/fixtures/session/agents/tool-verifier/events.jsonl +1 -0
- package/kits/knowledge/promote/fixtures/session/agents/tool-worker-1-1/events.jsonl +1 -0
- package/kits/knowledge/promote/fixtures/session/kontourai-flow-agents-287--deliver.md +47 -0
- package/kits/knowledge/promote/fixtures/session/learning.json +35 -0
- package/kits/knowledge/promote/fixtures/session/state.json +19 -0
- package/kits/knowledge/promote/health.js +137 -0
- package/kits/knowledge/promote/index.js +176 -0
- package/kits/knowledge/promote/ingest.js +103 -0
- package/kits/knowledge/promote/lib.js +132 -0
- package/kits/knowledge/promote/link.js +84 -0
- package/kits/knowledge/promote/promote.test.js +174 -0
- package/kits/knowledge/providers/conformance/suite.test.js +18 -0
- package/kits/knowledge/providers/index.js +1 -0
- package/kits/knowledge/providers/neo4j/connection.js +121 -0
- package/kits/knowledge/providers/neo4j/cypher.js +190 -0
- package/kits/knowledge/providers/neo4j/fake-driver.js +123 -0
- package/kits/knowledge/providers/neo4j/fixtures/spike-ground-truth.json +29 -0
- package/kits/knowledge/providers/neo4j/graph-queries.js +210 -0
- package/kits/knowledge/providers/neo4j/index.js +280 -0
- package/kits/knowledge/providers/neo4j/integration.test.js +122 -0
- package/kits/knowledge/providers/neo4j/neo4j.test.js +219 -0
- package/kits/knowledge/providers/neo4j/sync.js +235 -0
- package/package.json +4 -2
- package/schemas/workflow-handoff.schema.json +6 -0
- package/scripts/README.md +1 -0
- package/scripts/ci/mint-attestation.js +33 -6
- package/scripts/ci/trust-reconcile.js +144 -26
- package/scripts/freeze-adrs.mjs +364 -0
- package/scripts/hooks/config-protection.js +24 -4
- package/scripts/hooks/evidence-capture.js +4 -1
- package/scripts/hooks/lib/config-protection-remedies.js +9 -0
- package/scripts/hooks/lib/current-pointer.js +123 -0
- package/scripts/hooks/lib/liveness-heartbeat.js +75 -35
- package/scripts/hooks/stop-goal-fit.js +262 -5
- package/scripts/hooks/workflow-steering.js +42 -0
- package/scripts/statusline/flow-agents-statusline.js +3 -1
- package/src/cli/assignment-provider.ts +239 -59
- package/src/cli/workflow-sidecar.ts +529 -43
- package/src/lib/flow-resolver.ts +35 -14
- 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
|
|
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
|
|
package/evals/ci/run-baseline.sh
CHANGED
|
@@ -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
|
-
|
|
302
|
-
|
|
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
|