feat(dispatcher): expose durable parent decision delivery #82

Merged
karsten merged 1 commit from fix/parent-execution-decisions into main 2026-11-11 06:02:36 +00:00
Owner

Source-only parent decision adapter

Adds plugin_dispatch decide and /dispatch decide, scoped to the authenticated parent session. Acceptance is distinct from pending/applied consumption. Readback is available via status field decisions. Nested workers and irrelevant resume text are rejected. No ledger editing, live activation, restart or self-update.

Source: src/dispatcher-plugin.ts; tests: test/dispatcher-decisions.test.mjs; contract/compatibility: docs/dispatcher-decisions.md.

Exact head: e41beee9d1. Local validation: 83/83 plugin adapter tests; 43 service tests (41 pass, 2 conditional skips); fritz 3/3; dashboard API 32/32 and actual Core host integration; agent-link build passed. New adapter + current Core main afacd45298d4174d8768405527ddb126bdd8b140: typecheck/build and full Core suite 1797 pass, 1 skip, 0 fail. New adapter + paired Core decision changes: typecheck/build, full Core suite 1810 pass, 1 skip, 0 fail. Native SDK initialized; test fixture umask 0022. Native plugins-ci must complete on this exact head.

Compatibility: optional structural capability projection compiles on older Core; decide fails explicitly there. Only paired new Core can durably consume decisions; it will pin this immutable Plugins head/hash. Core owns canonical contracts and fencing.

EXTERNAL authorized rollout/restart is required after source publication. Building does not activate the change. Execution ef9f5631-22fe-428f-8ef7-9896e45a1b1b and its ledger/checkpoints are untouched. No force-push or protection bypass.

## Source-only parent decision adapter Adds plugin_dispatch decide and /dispatch decide, scoped to the authenticated parent session. Acceptance is distinct from pending/applied consumption. Readback is available via status field decisions. Nested workers and irrelevant resume text are rejected. No ledger editing, live activation, restart or self-update. Source: src/dispatcher-plugin.ts; tests: test/dispatcher-decisions.test.mjs; contract/compatibility: docs/dispatcher-decisions.md. Exact head: e41beee9d12671820b77a985fffde50eb3fdc829. Local validation: 83/83 plugin adapter tests; 43 service tests (41 pass, 2 conditional skips); fritz 3/3; dashboard API 32/32 and actual Core host integration; agent-link build passed. New adapter + current Core main afacd45298d4174d8768405527ddb126bdd8b140: typecheck/build and full Core suite 1797 pass, 1 skip, 0 fail. New adapter + paired Core decision changes: typecheck/build, full Core suite 1810 pass, 1 skip, 0 fail. Native SDK initialized; test fixture umask 0022. Native plugins-ci must complete on this exact head. Compatibility: optional structural capability projection compiles on older Core; decide fails explicitly there. Only paired new Core can durably consume decisions; it will pin this immutable Plugins head/hash. Core owns canonical contracts and fencing. EXTERNAL authorized rollout/restart is required after source publication. Building does not activate the change. Execution ef9f5631-22fe-428f-8ef7-9896e45a1b1b and its ledger/checkpoints are untouched. No force-push or protection bypass.
feat(dispatcher): expose parent-scoped execution decisions
All checks were successful
plugins-ci / compatibility (push) Successful in 2m11s
e41beee9d1
Author
Owner

Final exact-head validation evidence

Paired source PRs: Core #327, Plugins #82. Core pins Plugins e41beee9d12671820b77a985fffde50eb3fdc829 plus dispatcher adapter hash 2e138566d583aeac1478f81fb9fc1391b0d5fde89b911ac42e84bef571361627.

Local exact committed Core head: npm run typecheck, npm test and npm run build passed. 1811 tests: 1810 pass, one existing skip, zero failures. Plugin adapter suite: 83/83 pass with real Core host fixtures. Plugin agent-link build passed. Additional service suite: 41 pass/2 conditional skips; Fritz 3/3; dashboard API 32/32 plus actual host integration passed. The native CI workflows additionally validate their exact fetched heads in isolated containers. Test environment: native Matrix SDK initialized and umask 0022 for existing permission fixtures; no assertions or required gates removed.

Compatibility proved: new adapter/current pre-decision Core afacd45298d4174d8768405527ddb126bdd8b140 typecheck/build/full suite (1797 pass, one skip). Missing host capability rejects decide explicitly. New Core/pinned new adapter supplies durable decisions; old adapter/new Core typechecks but does not expose the feature. Core canonical contracts are in src/execution.ts, src/dispatcher.ts and src/plugins.ts; propagation in src/dispatcher-sequential.ts and src/dispatcher-step-prompt.ts; adapter in Plugins src/dispatcher-plugin.ts. Audit/rejection/race and causal same-execution tests are in the linked diffs, with contract docs in Core docs/dispatcher.md and Plugins docs/dispatcher-decisions.md.

Branch protection settings were read, not changed; no enforced status contexts are currently configured. All actual checks on these exact heads are green. Both PRs remain open for normal review/merge; no forced push or protection bypass.

SOURCE ONLY. EXTERNAL authorized rollout/restart is required; building does not activate this change. No agent restart/self-update, deployment or mutation of execution ef9f5631-22fe-428f-8ef7-9896e45a1b1b, its ledger or checkpoints. Dirty operator worktrees were not modified. Git identity: Karsten Samaschke karsten@vanillacore.net.

## Final exact-head validation evidence - core `87b50e40bc888b61d13e66fef6859ad94afa6551`: [decision-interface-ci / full-validation (push)](https://git.vanillacore.net/harness/core/actions/runs/1/jobs/0) **success**; [decision-interface-ci / full-validation (pull_request)](https://git.vanillacore.net/harness/core/actions/runs/2/jobs/0) **success** - plugins `e41beee9d12671820b77a985fffde50eb3fdc829`: [plugins-ci / compatibility (push)](https://git.vanillacore.net/harness/plugins/actions/runs/104/jobs/0) **success** Paired source PRs: [Core #327](https://git.vanillacore.net/harness/core/pulls/327), [Plugins #82](https://git.vanillacore.net/harness/plugins/pulls/82). Core pins Plugins `e41beee9d12671820b77a985fffde50eb3fdc829` plus dispatcher adapter hash `2e138566d583aeac1478f81fb9fc1391b0d5fde89b911ac42e84bef571361627`. Local exact committed Core head: `npm run typecheck`, `npm test` and `npm run build` passed. **1811 tests: 1810 pass, one existing skip, zero failures**. Plugin adapter suite: **83/83 pass** with real Core host fixtures. Plugin agent-link build passed. Additional service suite: 41 pass/2 conditional skips; Fritz 3/3; dashboard API 32/32 plus actual host integration passed. The native CI workflows additionally validate their exact fetched heads in isolated containers. Test environment: native Matrix SDK initialized and umask 0022 for existing permission fixtures; no assertions or required gates removed. Compatibility proved: new adapter/current pre-decision Core afacd45298d4174d8768405527ddb126bdd8b140 typecheck/build/full suite (1797 pass, one skip). Missing host capability rejects decide explicitly. New Core/pinned new adapter supplies durable decisions; old adapter/new Core typechecks but does not expose the feature. Core canonical contracts are in src/execution.ts, src/dispatcher.ts and src/plugins.ts; propagation in src/dispatcher-sequential.ts and src/dispatcher-step-prompt.ts; adapter in Plugins src/dispatcher-plugin.ts. Audit/rejection/race and causal same-execution tests are in the linked diffs, with contract docs in Core docs/dispatcher.md and Plugins docs/dispatcher-decisions.md. Branch protection settings were read, not changed; no enforced status contexts are currently configured. All actual checks on these exact heads are green. Both PRs remain open for normal review/merge; no forced push or protection bypass. **SOURCE ONLY. EXTERNAL authorized rollout/restart is required; building does not activate this change.** No agent restart/self-update, deployment or mutation of execution ef9f5631-22fe-428f-8ef7-9896e45a1b1b, its ledger or checkpoints. Dirty operator worktrees were not modified. Git identity: Karsten Samaschke <karsten@vanillacore.net>.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
harness/plugins!82
No description provided.