Skip to content

Enforce explicit decision ownership before implementation - #6

Merged
areshand merged 3 commits into
mainfrom
codex/enforce-decision-lifecycle
Aug 13, 2026
Merged

Enforce explicit decision ownership before implementation#6
areshand merged 3 commits into
mainfrom
codex/enforce-decision-lifecycle

Conversation

@areshand

@areshand areshand commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Why

Multi-agent consensus could silently turn ambiguous, user-owned choices into implementation details. The orchestrator also had no mandatory phase boundary that forced post-implementation findings back through evidence collection, decision ownership, and user approval before another writer started. Because workers received partial assignment prompts, they could miss constraints already decided in the orchestrator's full context.

This change makes those decisions explicit and durable before implementation begins.

What changed

  • Bundle a mandatory pre-implementation -> implementation -> post-implementation lifecycle into every normal launcher-created orchestrator session.
  • Add an independent, read-only decision-authority reviewer that identifies omitted choices, gathers bounded evidence, and distinguishes user-owned decisions from reversible orchestrator routing.
  • Require bin/decision.sh to contain a committed selected plan and require an immutable approved-implementation-context hash before exploitation assignments can be created or spawned.
  • Keep structured lifecycle metadata separate from the semantic approved implementation context handed to workers.
  • Persist lifecycle phases, TODOs, reviews, skip evidence, decision revisions, and prompt hashes under the run state directory.
  • Return every accepted post-implementation TODO through pre-implementation before another writable iteration.
  • Require decision-drift, scope, technical, and reflection reviews against the current candidate diff, then also run the existing hash-bound technical gate-check before completion.
  • Treat the verifier iteration count as an escalation threshold, never an acceptance condition.

Enforcement model

This is normal-path enforcement in the launcher, subagent utility, lifecycle state machine, and completion helper. It is deliberately documented as not being a security boundary: an orchestrator with unrestricted shell and state-file access can still bypass it. A trusted supervisor that exclusively owns writable-worker launch remains the stronger follow-up design.

Validation

  • tests/run.sh — passed in full; Git commit signing was disabled only for the test process to avoid the local SSH signing-key prompt.
  • tests/lifecycle.sh — passed.
  • shellcheck -e SC2016 launch.sh bin/subagent.sh bin/workflow.sh bin/prompt-bundle.sh bin/orchestrator.sh tests/lifecycle.sh — passed. SC2016 excludes two existing informational warnings in unchanged format strings.
  • Bash syntax checks — passed.
  • git diff --check — passed.

Multi-agent consensus could silently turn ambiguous, user-owned choices into implementation details, while post-review findings could be routed back to writers without another authority check.

Bundle a durable lifecycle into the launcher, require a committed decision and complete approved capsule before writable workers start, return accepted TODOs through pre-implementation, and require current-diff governance reviews plus the existing technical gate before completion.

This remains normal-path enforcement; the README documents the trusted-supervisor boundary needed for strict enforcement.
The previous capsule name obscured the boundary between structured lifecycle metadata and the semantic document handed to workers.

Rename the document, state fields, CLI option, validator, prompts, and tests to approved implementation context. The helper is now validated_assignment_context_path because it validates assignment metadata and returns the context path rather than creating a container.
The embedded Python heredoc made workflow.sh look inert and prevented normal Python tooling, syntax highlighting, and imports. Move the state machine into multiagent_framework.workflow and keep workflow.sh as a compatibility launcher without changing commands or state format.
@areshand
areshand marked this pull request as ready for review August 13, 2026 00:28
@areshand
areshand merged commit 874b60b into main Aug 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant