Task — engineering-spec@1

ship-tasks reconcile entry phase and depends_on evidence gating

doneTASK-IMP-101
module improvement · class product · priority p1 · created 2026-07-17 · shipped 2026-07-17
depends on TASK-IMP-100 · blocks none

TASK-IMP-101: ship-tasks reconcile entry phase and depends_on evidence gating

Summary

TASK-IMP-100 builds the measuring instrument; this task wires it into doctrine. ship-tasks gains a conditional entry phase - encountering a task whose status claims work this workflow cannot vouch for (past ready_to_implement with no manifest, a stale manifest, or missing phase artefacts) triggers task-reconcile and presents the report at a HITL gate with the three-way fork; and a depends_on evidence gate - a task is not started while an upstream done dependency lacks evidence (workflow artefacts or an accepted reconcile verdict), overridable only by the human at the gate. workflow_version 2.6.4 to 2.7.0: a new mechanism, not a wording fix.

Problem

The state engine's trust model had two legs (own manifests, own gates) and silently extended that trust to any status cell it read. After 086, "the index says done" is known to be a claim, not a fact - the workflow text must say what happens when claims outrun evidence, and must stop new work from stacking on unverified foundations by default.

Proposed Solution

Two normative additions in ship-tasks.md, plus chain wiring: (a) Reconcile entry §: the trigger conditions, the invocation (node .cyberos/docs-tools/task-reconcile.mjs <id> --run-tests), the HITL gate presenting the report's single recommendation with the fork {resume_at_phase / route_back / adopt_candidate - backfill artefacts then re-enter}, the rule that the agent NEVER executes any branch without the recorded verdict, and route_back's mechanics (§1.3, routed_back_count += 1). (b) depends_on evidence gate §: before starting any task, each depends_on id with status done MUST carry evidence - a coverage-gate artefact in either artefact home, or a reconcile-report with a human-accepted verdict; otherwise the task is BLOCKED and the block is presented at a gate where the human may override (override recorded as memory.status_overridden). (c) skill_chain gains conditional step 0 (skill: task-reconcile, condition: entry state drifted) with reconcile_report in outputs. t14 gates the two passages + 2.7.0 in source and payload; the t12/t09 exact pins move to 2.7.0 (the known pair, disclosed).

Alternatives Considered

Success Metrics

Scope

In scope: the two §§, step 0 chain entry, version bump, pin moves, t14.

Out of scope / Non-Goals

Dependencies

AI Authorship Disclosure

1. Description (normative)

2. Acceptance criteria

3. Edge cases

Audit

TASK-IMP-101-reconcile-entry-and-deps-gating spec audit - audit_rubric@2.0 (machine floor + judgment)

Machine floor: task-lint clean on first pass. Judgment families: metrics grounded in the recorded gap map and operator decisions; alternatives distinct with real rejection reasons (warn-only and hard-block both considered and rejected per the recorded decision); dependency ordering (100 blocks 101, same agent serial) declared per §11a; the no-silent- execution rule appears as a normative clause, keeping the two-gate doctrine intact; edge cases cover the double-handling risk with resume semantics and the historical-corpus false-block risk.

ISSUE ISS-001 (QA-004, wontfix-info): SKILL.md prose contract verified by recorded greps (same accepted pattern as TASK-IMP-090 AC 1).

SUMMARY verdict: pass issues_open: 0 issues_human: 0 next_action: ship

§gate-log

Populated during implementation (ship-tasks testing phase).