Skip to content

fix: enforce verified public repository provenance - #188

Merged
YuzeJ21 merged 7 commits into
mainfrom
codex/public-provenance-boundary
Aug 9, 2026
Merged

fix: enforce verified public repository provenance#188
YuzeJ21 merged 7 commits into
mainfrom
codex/public-provenance-boundary

Conversation

@YuzeJ21

@YuzeJ21 YuzeJ21 commented Aug 9, 2026

Copy link
Copy Markdown
Owner

User-confirmed requirement

The attached owner objective identifies a trust defect: a token-accessible private pull request could be treated as LIVE_PUBLIC_GITHUB because successful access was used as a proxy for public visibility. The owner confirmed Workstream 1: enforce genuine, typed, fail-closed public provenance across ingestion, persistence, CLI, Streamlit, export/reopen, and public-alpha qualification.

Evidence and change

  • Evidence level before the change: source and regression evidence demonstrated that authenticated access did not establish public visibility.
  • GitHub ingestion now requires matching repository identity plus exact public visibility metadata; private, internal, missing, malformed, mismatched, and ambiguous metadata fail closed.
  • Verified visibility is persisted through Pydantic-validated snapshots, reviews, exports, reopened records, and alpha records.
  • CLI and Streamlit share the same guard and cannot label unverified sources LIVE_PUBLIC_GITHUB.
  • Alpha qualification and outcome recording require verified-public provenance; legacy records without that fact remain ineligible until safely re-fetched.
  • Tokens remain session-only and absent from persisted records, logs, errors, and exports.
  • Public fixtures remain usable; private and malformed fixtures fail closed.
  • Independent review found no Critical issues. Its two Important findings were fixed: legacy unverified live-public labels now downgrade to legacy_unknown, and verified visibility appears in JSON, Markdown, CSV, and HTML exports.
  • GitHub review added two P2 findings, both fixed: local fixtures can no longer self-assert verified-public provenance, and unhashable malformed visibility metadata now receives the bounded fail-closed error.
  • This is the smallest safe slice: no private-repository support, accounts, hosted processing, generic review, auto-fix, or unrelated platform/release work was added.

Static implementation evidence is not runtime verification. The automated and browser results below are engineering evidence only; they do not establish participant, production, accessibility-conformance, or adoption evidence.

Verification

  • Focused regressions failed before the fix and passed after it.
  • Ruff passed.
  • Complete suite: 1,986 passed, 2 intentional skips; 95.06% combined coverage.
  • Repository contracts: 77 passed.
  • Deterministic benchmark: 12 cases / 13 criteria, zero mismatches, zero must-have False Ready outcomes, zero false blockers, zero unexecuted declared categories.
  • Comparison benchmark: 2 cases, zero mismatches.
  • Two exact-head wheel builds were byte-identical: e5da6d530ebe727277d6def98fe8b68f4678107a682b354ca0bc41a37101fdc5.
  • Clean dependency validation and installed CLI versions passed.
  • Installed benchmarks passed from outside the source tree.
  • Exact loopback workbench health passed and the process was cleaned up.
  • Installed-wheel Chromium regression: 3 passed at desktop and mobile sizes, with loopback-only networking and zero external requests, console errors, or page errors.
  • No untrusted target-repository code was executed.
  • Persisted and exported object changes remain Pydantic-validated.
  • Final diff and commit audit passed; only the unrelated untracked .coverage 2 remains and was preserved.

Remaining limitations

  • This macOS host provides Python 3.12 only. The PR CI matrix must resolve Python 3.11 and 3.13 on Linux before owner review.
  • Windows import/storage support, Linux desktop, non-Chromium browsers, real screen-reader workflows, native 200% zoom, and WCAG conformance remain unsupported or unproven. They are not claims of this PR.
  • Source-owner and reviewer identity remain asserted, not authenticated.
  • The GitHub Action remains opt-in and informational.
  • Stage 1 remains exactly 0/5 qualifying reviews, 0/3 independent practitioners, 0/3 public repositories, 0/3 independently observed under-ten-minute completions, and 0/2 reuse-intent signals.
  • Workstreams 2–5 remain gated until this PR is integrated.
  • Human decision required: merge this PR, hold it, or request changes. This task will not merge it without explicit owner authorization.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 59d154730f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scopeproof_core/cli.py
Comment thread scopeproof_core/github/client.py Outdated
@YuzeJ21
YuzeJ21 merged commit 077f935 into main Aug 9, 2026
8 checks passed
@YuzeJ21
YuzeJ21 deleted the codex/public-provenance-boundary branch August 9, 2026 18:54
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