Skip to content

Stale proposals (S-001-1 to S-001-9) #97

Closed

Description

@shipmill-romamo

Builds part of spec S-001, docs/specs/001-stale-proposals.md: the acceptance criteria below. Each needs a test that names its id (test_s001_<k>_..., or a proves: S-001-1 comment line).

  • S-001-1: A proposed decision whose basis names host hz1 observed at T1 reads "stale": true with "staleHosts": ["hz1"] in decisions list once hz1's observation file in the basis folder says observedAt T2 later than T1
  • S-001-2: The same decision reads "stale": false and no staleHosts when the observation file still says T1, when it is missing, or when the basis names no host
  • S-001-3: A decision with any status other than proposed has no stale or staleHosts key in decisions list, decisions show, or cloudfall why output, whatever the observations say
  • S-001-4: decisions list --stale returns only the stale decisions, and decisions list --stale --status proposed returns the same set
  • S-001-5: cloudfall why --stale returns only the stale decisions and reports stale and staleHosts as decisions list does
  • S-001-6: decisions show <id> reports stale and staleHosts for a stale proposed decision
  • S-001-7: Working out staleness writes nothing: the decision record file's bytes are unchanged after decisions list, decisions show, and cloudfall why
  • S-001-8: decisions approve on a stale proposal names each stale host and its newer observedAt in the attestation prompt and, once the id is typed, runs as it does for a fresh proposal
  • S-001-9: An observation file in the basis folder that isn't valid JSON makes decisions list exit RECORD_INVALID with an error naming the file

Activity

  1. shipmill-romamo commented on Oct 20, 2026

    @shipmill-romamo
    ContributorAuthor

    Triage: implement: the build of spec S-001 (docs/specs/001-stale-proposals.md, merged in #71), all nine criteria in one PR.

    This is the spec's only build issue, so its PR also sets the spec to status: built, fills its Issues and Verification sections, and closes #26. I'll link the PR here.

  2. shipmill-romamo commented on Oct 20, 2026

    @shipmill-romamo
    ContributorAuthor

    The build is in #105: staleness is worked out on read from the basis observations, with no stored status or schema change. stale and staleHosts sit at the top level of each proposed decision in decisions list, show and why; --stale filters; decisions approve names the stale hosts in its prompt. The PR also sets the spec to status: built with its Verification lines.

    Trade-off: every *.json in the basis folder must parse, so one broken observation file fails decisions list, show, why and approve with RECORD_INVALID naming the file, even when the basis doesn't name that host. S-001-8 (the approve prompt) is proven by a test at a simulated terminal, not by hand. This issue and #26 close when #105 merges.

  3. shipmill-romamo commented on Oct 20, 2026

    @shipmill-romamo
    ContributorAuthor

    Released in v0.8.0rc1 (pre-release). uv tool install --prerelease allow cloudfall==0.8.0rc1
    A plain install gets it with the next stable release.
    If you filed this: react 👍 on this comment once it works for you, or reply if it doesn't.

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