← All patterns

FFA-002 · hypothetical · executable

Result-channel mismatch

Scope and affected architecture

Applies to orchestrators that start a background worker and wait for completion, especially when results can travel through both an orchestration protocol and a filesystem artifact.

Symptom and observable signature

The worker has completed and returned a valid result, while the parent remains active until a timeout because it is polling a different channel.

Root mechanism

Producer and consumer do not share one result contract. The worker returns JSON through the supported channel, while the parent invents result.json as an implicit second protocol.

Minimal safe fixture

The fixture creates an inline result and performs three bounded existence checks for a file the worker never promised to create. It demonstrates the mismatch without sleeping, starting a process, or leaving a file behind.

python3 atlas.py run FFA-002 --mode reproduce

Deterministic detector

Flag a run when the declared worker channel contains a terminal result while the parent is still waiting on an absent, undeclared artifact.

python3 atlas.py run FFA-002 --mode detect

Repair invariant

Each job has one declared authoritative result channel. The consumer validates and consumes it once. Missing or malformed results terminate with a bounded error instead of opening another polling path.

Regression check

The repaired fixture consumes the inline JSON result directly and asserts the job identity without consulting the filesystem.

python3 atlas.py run FFA-002 --mode regress

False positives and non-applicable cases

Polling is not inherently wrong. A durable artifact can be the authoritative contract when its exact path, schema, atomic-write behavior, deadline, and cleanup are declared before the worker starts.

Provenance

Hypothetical. The names, identifiers, and control flow are synthetic. The entry describes a generic protocol mismatch and makes no external incident claim.