Repository navigation
fix(keys-sync): hold signing subkeys to the ASF strength floor - #9
Draft
MakerFlyFly wants to merge 2 commits into
Draft
MakerFlyFly wants to merge 2 commits into
MakerFlyFly wants to merge 2 commits into
Conversation
Check each usable signing subkey and require a compliant signer instead of treating a strong certify-only primary as sufficient. Ignore unusable old subkeys during rotation and recognise GPG's disabled capability. Keep primary metadata and CLI interfaces stable, and cover the admission policy with regression tests, eval fixtures and the lifecycle specification. Generated-by: Codex (GPT-6)
Treat GPG validity e as unusable for both primary and signing subkeys, including on the expiry date. Let a compliant replacement proceed after the weak subkey expires, and reject an only signer that already expired. Keep the same-day advisory for unexpired records, suppress it for expired records, and document the calendar-only meaning of --today. Cover the reviewed boundary with regression tests and two additional eval cases. Generated-by: Codex (GPT-6)
This was referenced Oct 14, 2026
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.
Summary
eon the expiry date: a retired weak subkey does not block a compliant replacement, while an already-expired only signer is blocked. Expired primary keys also stay blocked, and expired records do not receive a non-blocking expiry advisory.--todayaffects calendar-date checks/advisories; it does not recompute GPG validity or change its clock. Five added eval cases cover the original gap and the reviewed expiry boundary.Type of change
Test plan
62322ff4; after the fix, all 61 keys-sync tests pass with no skips. The tests cover expired same-day subkeys, expired primaries, earlier date overrides, advisories and CLI compatibility.--key-file/date-override checks pass.git diff --checkpass.prek run --all-filespasses in the matching Linux Git snapshot with--init; the normal repository checks also pass in the commit hook.pre-first-pr-check: A–E pass, Ready, 0 blocking/advisory items.RFC-AI-0004 compliance
Linked issues
Refs #8.
Notes for reviewers
The F1 follow-up accepts the independently reproduced same-day expiry finding and uses GPG's computed expired status consistently in checking and retirement.
It preserves the advisory for same-day records not marked expired.
An earlier
--todaycannot reactivate a key markede; historical replay uses a listing captured at the intended instant.An additional timestamp engine or GPG clock override is unnecessary for this fix and is not introduced.
The deliberate policy of blocking an active weak signing subkey alongside a compliant signer is retained.
The downstream commands do not pin a compliant subkey, so every usable signer is checked.
This is the helper's conservative admission policy, rather than an explicit ASF mandate for mixed key groups.
Runtime changes stay in the helper and its tests; the follow-up adds two eval scenarios and related specification/count updates.
The original review document is preserved, with a separate local point-by-point disposition and evidence record.
Validation snapshots and model-eval mirrors were verified against this Windows checkout's bytes; no repository hook was bypassed.
AI disclosure: this AI-generated draft and implementation were prepared with OpenAI Codex (GPT-6).
The PR remains Draft for human audit and is not represented as human-reviewed or ready to merge.