Skip to content

I2: exercise privileged identities on a schedule — a green job that did nothing is not evidence #92

Description

@bdelanghe

Implements I2 of docs/session-capability-invariants.mda privileged capability is exercised on a schedule, not only when needed. Currently graded Aspirational: nothing does this.

The evidence

registry-graph.yml reported success on every weekly scheduled run for over a month. The App identity it uses, bounded-systems-front-desk[bot], has never once successfully pushed to this repo.

Both statements are true because the job early-exits:

[ -z "$(git status --porcelain)" ] && { echo "in sync"; exit 0; }

Success meant "the registry hadn't changed". The proof is the absence of any branch either job would have left behind:

$ git ls-remote --heads origin | grep -E 'bootstrap-pin/bump|registry-graph/'
(no output)

Merging #84 was simply the first time anything needed that push, and it 403'd (#87). registry-graph.yml carries the identical latent failure and is not red today only because it has had no work to do — it will fail the first time the registry actually changes.

Why a scheduled probe rather than better assertions

#87 adds a preflight that would catch the missing scope at mint time — but only on a run that reaches the mint step with work to do. A capability nothing exercises stays unverified however good the assertions around it are. The gap here is temporal, not logical.

Shape

One scheduled workflow per privileged identity. Mint the token, push a no-op branch, delete it, fail loudly on any non-200. Report the identity and the operation in the failure so the log names what is missing.

This is the ticket-window pattern (board-parity.yml #58, claim-ticket.yml #61) turned on the org's own plumbing rather than on the board — the same argument, one layer in.

Worth considering: emit the last-successful-exercise timestamp somewhere durable, so "N days since this identity last worked" is a readable number rather than something reconstructed from run history and git ls-remote, which is how it was found today.

Done when

  • Each privileged identity has a probe that fails if its grant were removed.
  • The probe's failure names the identity and the operation, not a bare 403.
  • Removing a grant in a test installation turns the probe red within one cycle.

Blocked

Cannot go green until #87 grants contents: write. That is a feature — a probe that passes today would be lying. Land it red, or land it alongside the fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions