Skip to content

Post-merge audit of Phases 1-4: unauthenticated-gh attestation degrade + Roadmap fixes - #23

Merged
F-e-u-e-r merged 6 commits into
mainfrom
review/phases-1-4-fixes
Jul 15, 2026
Merged

Post-merge audit of Phases 1-4: unauthenticated-gh attestation degrade + Roadmap fixes#23
F-e-u-e-r merged 6 commits into
mainfrom
review/phases-1-4-fixes

Conversation

@F-e-u-e-r

Copy link
Copy Markdown
Owner

What

Post-merge audit of the six merged Phase 1-4 PRs (#16-#21), with fixes for everything the audit surfaced:

  1. install.sh (Major, found by GPT-5.6-sol max, reproduced locally): gh attestation verify requires a github.com credential even for public repos. A fresh host with gh installed but never gh auth logined passed the version gate, then verify exited 4 (gh's documented "requires authentication" code) and aborted a checksum-verified install. Exit 4 now degrades to checksum-only with a loud note; any other non-zero verify exit stays fatal (authenticated rejection). No preflight auth probe: gh auth token can succeed from the macOS keychain in the same environment where verify reports unauthenticated, so the verify call's own documented exit code is the only faithful discriminator. New fake-gh test locks the degrade path; the verify_exit=1 test still locks the fatal path. Docs swept: README (en+zh), Configuration, Stability, Release-Checklist, CHANGELOG.
  2. docs/Roadmap.md (self-review + GPT): the eight landed "Now - v1.2 candidates" and three Process items now carry the file's (**done**) convention, and three stale facts were corrected (diagnose tag-detection precedence is flag > CONNECTOR_TAG env > identity file > convention; OpenRC examples now ship; macOS coverage is no longer fake-only).

Verification

  • 454 unit tests green (was 453; +1 new attestation test); shellcheck/ruff/mypy/parity/docs-links/package all clean.
  • F1 reproduced before fixing: isolated GH_CONFIG_DIR -> verify rc=4 pre-artifact; authenticated bogus verify rc=1; gh help exit-codes documents 4 = requires authentication.

Review status

  • Grok 4.5 (max): PROCEED on the merged phases (production/CI axes), PROCEED on this fix delta.
  • GPT-5.6-sol (max): round 1 returned FIX F1,F2 (both fixed here); round-2 confirmation pending and gates the merge.

🤖 Generated with Claude Code

F-e-u-e-r and others added 6 commits July 16, 2026 00:51
All eight "Now — v1.2 candidates" items (PRs #4, #15#20) and the three
Process items (PR #21) have merged to main, but only the Monitoring
integration steps carried the file's (done) convention — a Roadmap reader
could not tell the v1.2 'Now' list is finished. Mark them the same way.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… 4); Roadmap fact fixes

Round-1 external review findings on the phases 1-4 post-merge audit:

F1 (Major, GPT-5.6-sol): 'gh attestation verify' requires a github.com
credential even for public repos. A fresh host with gh installed but never
'gh auth login'ed passed the version gate, then verify exited 4 (gh's
documented 'requires authentication' code) and aborted a checksum-verified
install. Inability to check is not a rejection: exit 4 now degrades to
checksum-only with a loud note; any other non-zero verify exit stays fatal.
Reproduced locally in an isolated GH_CONFIG_DIR (rc=4 before the artifact is
examined; an authenticated failing verify exits 1). Docs swept: README (en+zh),
Configuration, Stability, Release-Checklist, CHANGELOG. New fake-gh test locks
the degrade path; the verify_exit=1 fatal test still locks the fail-closed path.

F2 (Minor, GPT-5.6-sol): Roadmap done-marker pass left stale facts — the
diagnose item described a wrong detection precedence (identity file before
flag, env missing; actual: flag > CONNECTOR_TAG env > identity file >
convention, diagnose.sh:27-29,97-108), and the OpenRC/macOS items still said
'currently has systemd/launchd/cron' / 'only fake-command tests exercise
today'. Rewritten to match shipped reality.

454 tests green; shellcheck/parity/docs-links clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tation egress hosts

Round-2 external review findings (GPT-5.6-sol), both validated:

F3: GH_TELEMETRY=false does not cover gh's separate update notifier — gh
checks for its own new releases once every 24h on ANY command (documented in
gh help environment), contradicting PRIVACY.md's 'no update check' promise.
Both gh invocations now also set GH_NO_UPDATE_NOTIFIER=1; the fake-gh call
log records and asserts both env values on every call.

F4: PRIVACY.md's 'every external service' install inventory omitted the
attestation-verification egress: the GitHub Attestations API
(api.github.com) and the TUF trust-root hosts (tuf-repo.github.com,
tuf-repo-cdn.sigstore.dev, tmaproduction.blob.core.windows.net) — host set
confirmed against GHSA-8xvp-7hj6-mcj9. Added the table row + wrapper note;
SECURITY.md's external-services list now names the GitHub endpoints too.

454 tests green; shellcheck/ruff/mypy/parity/docs-links clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d degrade

The egress row scoped the endpoints to 'an authenticated gh', but an
unauthenticated gh >= 2.93.0 still attempts the verify (and may contact
api.github.com) before install.sh degrades to checksum-only on exit 4. An
inventory documents when contact CAN happen, so widen the wording (reviewer
nearest-failure note, validated).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…itHub egress

Same class as the round-3 F4 fix, second exhaustive claim swept: the
No-Telemetry paragraph's category list omitted GitHub release-download /
branch-archive / attestation (API + TUF) traffic, so an operator building an
allowlist from that paragraph alone would block the installer's verification
path (GPT-5.6-sol round-4 F5, validated).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ll install.sh GitHub traffic is 'verification'

The bullet's exhaustive claim omitted the codeload branch-archive download
(install.sh's TAILSCALE_AI_EGRESS_BRANCH path), and labeling the GitHub
endpoints as used 'during verification' mislabeled that explicitly
unverified path (GPT-5.6-sol round-5 F6, validated). Mirrors the wording
already used by the No-Telemetry paragraph; class sweep shows no further
exhaustive egress claims.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@F-e-u-e-r
F-e-u-e-r merged commit f08ae10 into main Jul 15, 2026
12 checks passed
@F-e-u-e-r
F-e-u-e-r deleted the review/phases-1-4-fixes branch July 15, 2026 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant