Skip to content

[factory] Canary 5: clean dispatch probe on 0.1.81 — append one comment line to README #409

Description

@miyaontherelay

Purpose

Dispatch canary #5, filed 2026-08-28 on @agent-relay/factory@0.1.81.

Supersedes #394, which is now permanently un-dispatchable for the same reason #394 recorded about #390. The live sweep reaches it and refuses at the last gate:

[factory] skipped a work unit that cannot be dispatched right now
  {"issue":"394","error":"Refusing to dispatch 394: dispatch lifecycle is already terminal"}
[factory] readiness reconciliation skipped dispatch
  {"issue":"394","reason":"dispatch lifecycle already terminal","code":"dispatch-failed"}

Same for #390, #364, #350 and #186 — ten refusals in one sweep. Their durable
dispatch-lifecycle rows settled in complete/abandoned during the outage, so
claimDispatchLifecycle refuses (factory.ts:7105). The one repair path,
#clearTerminalRefusals, is armed only on a canonical-role edge
(done|humanReview -> readyForAgent). These issues never carried a terminal
label on GitHub, so that edge can never fire and the refusal is permanent.

This issue has no lifecycle history, so it is an uncontaminated test of the path
on 0.1.81, which contains the fixes that were verified this morning:

Deliverable — deliberately trivial

Append one line to the end of README.md:

<!-- dispatch-canary-5: 2026-08-28 -->

An HTML comment. Renders as nothing. No behaviour, build, or test is affected.

Definition of done

  • A branch factory/<issue-number>-* exists
  • A PR is open against main with exactly that one-line change
  • Nothing else modified

Out of scope

No refactoring. Do not touch source, tests, workflows, or config. Do not merge the PR — the merge gate belongs to the principal. If this looks like more than one line of work, stop and comment instead of expanding scope.

What it proves

A factory/* branch appearing is unfakeable evidence that dispatch works end to end. The container is live and healthy, the sweep now reaches every eligible issue, and readiness/scope/index all pass — the terminal latch was the only thing left. This is the measurement that distinguishes "fixed" from "still broken".

Metadata

Metadata

Assignees

No one assigned

    Labels

    factoryFactory automation trigger

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions