Skip to content

RFC: a stored status claim should carry its basis, and out-of-band work should leave an in-band pointer #1719

Description

@amrmelsayed

RFC: a stored status claim should carry its basis, and out-of-band work should leave an in-band pointer

Sibling of #1711, and deliberately not folded into it — see Why this is not #1711 below.

Principle

1. A stored status field should carry the basis that produced it, co-located with the claim.

2. When authoritative work happens outside the tool, the record should carry an in-band pointer to where that authority lives.

The incident

A Shannon SPIR project's status.yaml produced three mutually inconsistent readings of the same phase, each individually defensible. Evidence below is first-hand from the project directory and git log.

(a) The status field is unqualified. phase_2 carries status: complete and nothing else.

(b) The basis for that field exists — in a different artifact. The phase was force-advanced at porch's safety ceiling, recorded only in the commit message: chore(porch): 5189 implement force-advance (safety ceiling reached at iter 3). A reader of status.yaml has no signal that a basis exists in git log, and no reason to look.

(c) The same file contradicts the field. Further down, the review iterations for plan_phase: phase_2 carry verdict: REQUEST_CHANGES.

So a reader who trusts the summary field concludes passed; a reader who scrolls to the detail concludes not passed. Both are wrong. The phase genuinely passed, in a review round that ran outside porch (a multi-model round adjudicated in GitHub comments). Nothing in the file could record that, and nothing in it says so.

⚠️ That is the part worth generalising: the record was not stale — it was structurally incapable of being right, and carried no marker of that incapacity. A reader cannot distinguish "this did not happen" from "this happened somewhere I do not index." Two separate reviewers, independently, read the missing record as a missing review. One of them had personally run the review that was missing.

(d) A third instance in the same file: evidence pointers that resolve on one machine. The verdict entries reference their consult transcripts by absolute local filesystem path into a builder worktree. For any reader on any other machine — or after that worktree is cleaned up — the pointer is dead. This is the same defect as (b): the basis is stored elsewhere, and here the pointer to it does not survive leaving the author's machine.

(e) A copied stale title. phase_3's title in status.yaml describes a design that was replaced; the plan deliberately kept its original title with an amendment beneath it (to preserve evidence of the redesign), and porch copied the title without the amendment. A copy inherits the claim and not the evidence.

Why this is not #1711

#1711 asks that a command report the state it is acting on — it protects the operator at action time.

This asks that a stored record carry its basis and point at out-of-band authority — it protects the reader at interpretation time.

They are complementary rather than overlapping, and neither fix prevents the other's incidents: #1711's fix would not have helped here, because nobody was running a command — they were reading a file days later. Same origin (porch state misleading readers), different moment, different reader.

Sketch of a fix

Not prescribing the design, but the shape:

  • A status field that was set by anything other than its normal path (force-advance, manual override, ceiling) says so in the field's own vicinity, not only in a commit message.
  • Where a phase's authority is external, the record carries a URL. One line naming where the review lives would have prevented every downstream error in this chain.
  • Evidence references are stored relative to the project, or as durable URLs — not as absolute paths into one machine's worktree.
  • Copied fields (titles) either carry the amendment or carry a marker that survives copying.

Scope note

Raised from the Shannon side as a consumer of codev; the placement call is the codev architect's. Filed here rather than in Shannon's architecture docs deliberately — a rule about porch's records, written in a document porch never reads, would reproduce the very co-location defect it describes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions