Repository navigation
fix: make the valid contrib-state fixture time-independent - #8
Merged
Merged
Conversation
The shipped valid fixture pinned expires=2026-09-24T00:00:00Z and lease_until=2026-09-17T17:22:10Z, both now in the past. check-contrib-state.py reads the real clock unless --now is given, so the gate reported "grant 'g-7': expired" (exit 1) against the repository's own valid fixture from 2026-09-25 onward, and the kit installer's post-install gate for protean-ops failed closed (exit 5) on a fresh machine. Align records/examples/valid/CONTRIB-STATE.md with its tests/fixtures/valid counterpart (expires=2099-01-01, lease_until=2099-01-01), which the gate suite already treats as the non-expiring valid case. Add the op-delegation and op-contrib-state commands the descriptor declares to the CI gate step; they were absent, so nothing exercised either gate or the fixture they read. Verified: python3 -m unittest discover -s tests passes (151 tests); every declared gate in protean-ingredient.json exits 0 from a fresh clone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
records/examples/valid/CONTRIB-STATE.mdis the repository's own valid fixture, but it carried two timestamps that are now in the past:expires=(grantg-7)2026-09-24T00:00:00Zlease_until=(lane row)2026-09-17T17:22:10Zscripts/protean-ops/check-contrib-state.pyreads the real clock unless--nowis passed, so from 2026-09-25 the gate fails against the repo's own valid fixture:This is not cosmetic:
op-contrib-stateis a declared post-install gate inprotean-ingredient.json, so a freshbash install.sh --allof the kit fails closed with exit 5 when it reachesprotean-ops.Fix
Align
records/examples/valid/CONTRIB-STATE.mdwith its already-correct twintests/fixtures/valid/CONTRIB-STATE.md, which uses non-expiring values (expires=2099-01-01T00:00:00Z,lease_until=2099-01-01T00:00:00Z). The two files were byte-identical except for these two fields.Also add the two declared-but-uncovered gates to the CI gate step —
op-delegationandop-contrib-state— so the fixture and the gate are exercised on every push/PR. They were absent from.github/workflows/verify.yml, which is why nothing caught this.Evidence
mainatab48260634c66525e107ece2736b1604d8156a6a(the gate fails on a pristine clone).python3 -m unittest discover -s tests→ 151 tests, OK.protean-ingredient.jsonexits 0 from a fresh clone, including the previously failingop-contrib-state:Scope
records/examples/valid/CONTRIB-STATE.md— 2 field values (fixture data, not schema or gate behaviour)..github/workflows/verify.yml— 2 added gate commands.CHANGELOG.md— Unreleased entry.No change to
protean-ingredient.json, the payload, install targets, gate names, or therequiresset, so this is a patch-level fix perCONTRIBUTING.md.Note on attribution
The commit is authored under the authenticated operator account (
abu-aska). Per the kit's commit-identity convention, team-owned repositories prefer a role codename; there is no per-codename token on this machine, so the operator identity is used. Happy to rewrite the commit under a specific codename if you name one.