[DEL-A4] Deterministic Task Coordination Reducer and Task Admission Protocol
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- ai-infra-agents, backend, testing
Research direction
Start with hard dependency #316, which ratifies the input types and action vocabulary, and read the existing phase acceptance and execution paths to understand how proposals are recorded. Implement the reducer and tests for determinism, replay, budgets, import boundaries, Memory independence, and disabled-feature behavior. Done means all listed acceptance criteria pass without adding unannounced persisted fields or assuming a protocol number.
Written by the indexing model from the issue text.
Description
Parent: EPIC #315 · Stage M2 (deterministic coordination foundation) · Size L · Created 2026-10-25 (UTC) by the Memory-first reconciliation of #315, against main at f04db5f (state protocol 12).
Objective
Implement a pure, provider-neutral, deterministic decision layer for intra-issue task coordination. It decides what may happen next. It never launches an agent, never writes files itself and never touches GitHub; the engine executes its proposals through existing paths.
Contract: given the same recorded task state, policy version and evidence snapshot, the reducer returns the same decision.
Inputs (conceptual; #316 ratifies the types)
- authoritative task state and the task dependency graph;
- the policy snapshot and its version;
- provider capability observations, as recorded;
- the current candidate identity;
- verification outcomes from the existing gates;
- resource budgets and their recorded consumption;
- previous attempt outcomes;
- explicit operator decisions where the policy requires one.
Bounded advisory Memory context may be passed through to a launch's prompt. Natural-language memory text never becomes a decision input.
Outputs
Strictly typed action proposals, for example:
ADMIT_TASK
LAUNCH_WORKER
VERIFY_TASK
RETRY_TASK
REQUEST_OPERATOR_ACTION
WAIT
STOP
#316 ratifies the exact set before implementation. They are not shell commands and not GitHub effects. The engine records each proposal's outcome before the reducer runs again.
Properties
- Deterministic ordering and stable tie-breaking, independent of dictionary, set or API order and of time.
- Pure decision logic: no I/O, no clock, no randomness.
- Idempotent replay: on the recorded state after a crash it yields the same proposal, and it never proposes an outcome that is already recorded.
- No provider execution and no GitHub write.
- No independent scheduler: #176 / ADR 0008 own cross-issue scheduling, claims and the L0/L1/L2 locks.
- No new workflow authority: phase completion stays with the existing phase acceptance path.
- No implicit budget increase: a proposal that would exceed a budget becomes
STOPor the ratified operator action. - Unknown outcomes are explicit: a launch whose outcome is unknown is reconciled before anything else is proposed.
- Task admission is separate from phase completion.
Dependencies
- Hard (native): #316.
- Blocks (native): #319.
- Coordination: #317, for compatible
EvidenceRefand context contracts. There is no edge to DEL-A5 (the single-agent Memory integration under #315): the reducer and the Memory MVP progress independently once #316 is ratified. FTS5 and advanced retrieval (#324) never block this issue.
Acceptance criteria
- The reducer is a pure function over typed inputs, using the action vocabulary #316 ratified.
- Property tests prove determinism under input permutation and stable tie-breaking.
- Replay tests: for every recorded prefix of a fake run, the reducer reproduces the recorded decision. An interrupted launch with an unknown outcome leads to reconciliation, never to a second launch.
- Budget tests: an exhausted call, runtime, storage or attempt budget yields
STOP(or the ratified operator action); no proposal raises a budget. - A structural test proves the module imports no provider, executor, GitHub client or filesystem writer.
- Changing only the advisory Memory context leaves every decision unchanged.
- With the feature disabled, nothing calls the reducer and single-agent behaviour is unchanged.
- No persisted field lands without its announcement on #23; no protocol number is assumed.
Non-goals
An LLM Manager; launching or supervising agents; cross-issue scheduling; Memory storage; retrieval.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 6h
- Merged PRs (30d)
- 78
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from iceboundrock/AutoForge
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
iceboundrock/AutoForge#350 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
iceboundrock/AutoForge#304 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 1-2 days Newbie friendliness 46/100
iceboundrock/AutoForge#376 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
iceboundrock/AutoForge#375 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
iceboundrock/AutoForge#374 ·
Maintainers usually reply within 1 day
All issues in iceboundrock/AutoForge
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistenciesPossibly taken @github-actions claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
admission-deferred priority: medium status: ready work-class: scoped
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
melodic-software/claude-code-plugins#10887 · 4 comments ·
Maintainers usually reply within 1 day
-
backend bug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
PoCInnovation/Distribox#255 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
google/langextract#598 ·
Maintainers usually reply within 1 day