Skip to content

Add cloudfall release approve and its approval record (S-008-2, S-008-4, S-008-11, S-008-12) #160

Closed

Description

@shipmill-romamo

Builds part of spec S-008, docs/specs/008-enforce-manual-approval.md (feature issue #106): the acceptance criteria below. Each needs a test that names its id (test_s008_<k>_..., or a proves: S-008-2 comment line).

This is the cloudfall release approve command and its ReleaseApproval record.

  • S-008-2: release approve crm-backend --release R at a terminal, with R typed back, exits 0 and writes one file under decisions/releases/ that validates against release-approval.schema.json and holds the application, component, release, the artifact metadata's archiveSha256 and gitCommit, the component's servers, the approver, approvedAt, an expiresAt 24 hours later, and via: terminal
  • S-008-4: release approve with stdin from a pipe exits 4 PERSON_REQUIRED, a mistyped id exits 4 ATTESTATION_MISMATCH, both with --yes and without, and neither writes a file
  • S-008-11: release approve exits PRECONDITION with release_approval_not_required for a component of an automatic application, and with the lifecycle code (lifecycle_artifact_missing, lifecycle_artifact_digest_mismatch) for a missing or tampered artifact, before asking for the release id and without writing a file
  • S-008-12: release approve --valid-for 0 and --valid-for 169 are refused as usage errors naming --valid-for; --valid-for 2 writes an expiresAt two hours after approvedAt

Activity

  1. shipmill-romamo commented on Oct 30, 2026

    @shipmill-romamo
    ContributorAuthor

    Triage: implement. Serves: G-2. A build issue of spec S-008 (docs/specs/008-enforce-manual-approval.md, approved in #128), sub-issue of #106. The criteria above are the scope; each gets a test naming its id. It starts once every issue on its Depends on line has closed.

  2. added a commit that references this issue on Oct 30, 2026
    c7cc626
  3. shipmill-romamo commented on Oct 30, 2026

    @shipmill-romamo
    ContributorAuthor

    Released in v0.8.0rc11 (pre-release).
    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

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions