Skip to content

chore: promote qualified public candidate - #6

Open
kazazes wants to merge 2 commits into
mainfrom
chore/promote-qualified-candidate-335010d6
Open

chore: promote qualified public candidate#6
kazazes wants to merge 2 commits into
mainfrom
chore/promote-qualified-candidate-335010d6

Conversation

@kazazes

@kazazes kazazes commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Summary

  • promote the exact reviewed ECN SDK distribution candidate without downstream transformation
  • include the pinned public protocol conformance corpus used by the release checks
  • harden publication-content checks across exported source, generated reports, and documentation
  • keep documentation source links bound to public repository identities

The SDK runtime, public API, wire protocol, authentication model, and supported platform set are unchanged.

Promotion record

  • private candidate commit: 95c9b3d4f8078104f8a72be26e1018979cc03b5b
  • exported files: 514
  • withheld internal files: 28
  • export tree SHA-256: 23b094b49632f9c928c916fcb90050560ad26fdfb5218befc9508820a2a5d061

Verification

  • committed public checkout re-verified byte-for-byte against the authoritative export record after Git initialization
  • focused public validation passed: Ruff, mypy, 299 Python tests, 26 documentation compatibility tests, and the license-policy gate
  • no downstream repair or content transformation was applied

Merge only after required public checks and independent review clear for public head 353dd4316a8a8415afe667bcd2d9608ba653fd6c.

Summary by CodeRabbit

  • Documentation

    • Documentation source links now point to the applicable release tag or main branch.
    • Updated version menus, footers, and error pages display clearer public source references.
    • Removed retired reference materials and refreshed compatibility guidance.
    • Legacy documentation navigation links have been removed.
  • Release Improvements

    • Release validation now requires a clean working tree and checks public content and assets more consistently.
    • Contributor guidance now documents the clean-worktree release requirement.
  • Conformance

    • Added versioned, hash-pinned conformance fixtures and validation for topic grammar, payloads, and stream delivery policies.
  • Maintenance

    • Updated licensing, notices, packaging, and repository guidance to reflect the current public project structure.

private-candidate-commit: 335010d666f10229dafa763fee241307b93b3690

export-tree-sha256: 2ca49200d3e8111d037a04a067807a3470bed3745e647ca9958b97dfa353e7fc

file-count: 510
@kazazes
kazazes requested a review from a team as a code owner August 12, 2026 22:42
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR aligns release validation and package policy with the public repository, enforces clean release worktrees, changes documentation links to tags or main, removes retired parity artifacts, and adds a versioned wire-conformance corpus.

Changes

Public release alignment

Layer / File(s) Summary
Release policy and publication validation
.github/workflows/*, Makefile, scripts/release-policy.json, scripts/release_checks.py, scripts/verify_release.py, tests/release/*
Release checks now scan publication content, validate surface-specific brand assets, reject dirty worktrees and assistant artifacts, and remove parity requirements.
Public documentation references
docs/site/*, docs/src/*, docs/README.md, MANIFEST.in
Documentation source links now use release tags or main. Retired reference documents and routes are no longer packaged or published.
Release boundary tests and package probes
scripts/installed_*.py, tests/examples/*, tests/contract/*, tests/release/*
Tests cover broader non-public references, encoded content, package import boundaries, clean worktrees, and surface-specific assets.
Repository policy and notices
.github/*, .gitignore, NOTICE.md, scripts/verify_types.py, CHANGELOG.md
Repository comments, notices, ignore rules, type-check guidance, and release documentation were updated.

Wire conformance corpus

Layer / File(s) Summary
Conformance fixtures and verification
tests/fixtures/conformance/*, tests/unit/test_conformance_corpus.py
Version 0.2 fixtures and tests cover manifest hashes, canonical JSON, topic grammar, malformed payloads, and stream drop policies.

Estimated code review effort: 4 (Complex) | ~60 minutes

Mergeability Score: 🟠 High · up to 353dd

The release checks can miss certain encoded private paths, which could allow unintended internal references into the promoted public distribution. Merge should wait for the decoder fix and regression coverage.

Sequence Diagram(s)

sequenceDiagram
  participant ReleaseWorkflow
  participant VerifyRelease
  participant ReleaseChecks
  participant DocumentationSite
  ReleaseWorkflow->>VerifyRelease: normalized release state
  VerifyRelease->>ReleaseChecks: worktree and publication content
  ReleaseChecks->>DocumentationSite: documentation and brand validation
  DocumentationSite-->>VerifyRelease: validation results
Loading

Possibly related PRs

Suggested reviewers: mrpicodevsec

Poem

A rabbit checks each release tag,
And keeps the worktree clean.
The docs hop to main or tags,
While conformance paths stay keen.
New fixtures thump in place.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: promoting a qualified public candidate.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/promote-qualified-candidate-335010d6

Comment @coderabbitai help to get the list of available commands.

@coderabbitai
coderabbitai Bot requested a review from mrpicodevsec August 12, 2026 22:42

@coderabbitai coderabbitai 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.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
scripts/release_checks.py (1)

1755-1766: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Apply public-reference checks at every release boundary.

_scan_content contains the new SDK and repository checks. Generated-site and worktree validation call scan_secret_and_address_content directly. They do not execute these checks. A generated output can therefore contain a non-public SDK reference or an unapproved Picogrid repository URL and still pass release verification.

Extract these checks into a shared scanner. Call it from both _scan_content and the worktree and generated-output validation paths.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/release_checks.py` around lines 1755 - 1766, Extract the non-public
SDK, unapproved Picogrid repository, private package index, and private API
checks from _scan_content into a shared scanner. Invoke that scanner from
_scan_content and both the worktree and generated-output validation paths that
call scan_secret_and_address_content, preserving the existing
ArtifactPolicyError messages and behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/site/tests/documentation.spec.ts`:
- Around line 562-564: Update the test’s public source identity setup around
publicReference, publicSourceKind, and publicTitle to use the identity resolved
by resolveVersionControl instead of defaulting to main and branch when
DOCS_GIT_TAG is unset. Pass or reuse the resolver’s resolved reference and
source kind so clean v${version} checkouts produce the selected release tag.

In `@scripts/verify_release.py`:
- Around line 4128-4132: Update the git_worktree_status collection near
_require_clean_release_worktree to include ignored status entries, then filter
only approved generated roots from _EXPECTED_IGNORED_ROOTS before the
clean-worktree validation. Preserve rejection of any unexpected ignored path,
and add a regression test covering that case.

In `@tests/release/test_release_checks.py`:
- Around line 1108-1115: Update
test_content_scan_allows_the_public_documentation_package_name to invoke
_scan_content directly, or inspect a synthetic artifact through the path that
exercises it, while retaining the picogrid-ecn-sdk-docs input and policy setup
so the regression test verifies the new import detector allow case.

---

Outside diff comments:
In `@scripts/release_checks.py`:
- Around line 1755-1766: Extract the non-public SDK, unapproved Picogrid
repository, private package index, and private API checks from _scan_content
into a shared scanner. Invoke that scanner from _scan_content and both the
worktree and generated-output validation paths that call
scan_secret_and_address_content, preserving the existing ArtifactPolicyError
messages and behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 143ab084-890b-44df-a323-630b5585294d

📥 Commits

Reviewing files that changed from the base of the PR and between db68caf and 80c870b.

📒 Files selected for processing (37)
  • .github/CODEOWNERS
  • .github/workflows/release.yml
  • .github/workflows/scorecard.yml
  • .gitignore
  • CONTRIBUTING.md
  • MANIFEST.in
  • Makefile
  • NOTICE.md
  • docs/README.md
  • docs/cspell.json
  • docs/reference/evidence-status.md
  • docs/reference/original-ecn-integration-parity.md
  • docs/site/check-built-site.mjs
  • docs/site/public-routes.mjs
  • docs/site/tests/documentation.spec.ts
  • docs/site/version-control.mjs
  • docs/site/version-control.test.mjs
  • docs/src/components/DocumentationFooter.astro
  • docs/src/components/VersionSelect.astro
  • docs/src/content.config.ts
  • docs/src/pages/404.astro
  • docs/src/styles/picogrid.css
  • pyproject.toml
  • scripts/installed_examples.py
  • scripts/installed_wheel_probe.py
  • scripts/original-guide-inventory.json
  • scripts/release-policy.json
  • scripts/release_checks.py
  • scripts/verify_release.py
  • scripts/verify_types.py
  • tests/contract/test_synthetic_fixtures.py
  • tests/differential/test_public_boundary.py
  • tests/examples/conftest.py
  • tests/examples/test_examples.py
  • tests/release/test_operator_artifact_release.py
  • tests/release/test_release_checks.py
  • tests/release/test_version_sync.py
💤 Files with no reviewable changes (10)
  • pyproject.toml
  • docs/reference/original-ecn-integration-parity.md
  • scripts/original-guide-inventory.json
  • .gitignore
  • docs/reference/evidence-status.md
  • docs/site/public-routes.mjs
  • tests/differential/test_public_boundary.py
  • docs/src/content.config.ts
  • scripts/installed_wheel_probe.py
  • MANIFEST.in

Comment thread docs/site/tests/documentation.spec.ts Outdated
Comment thread scripts/verify_release.py
Comment thread tests/release/test_release_checks.py

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/release_checks.py`:
- Around line 1872-1881: Update the variant expansion logic around the HTML-file
handling and _scan_nonpublic_references flow to apply both percent decoding and
html_unescape to newly generated variants until reaching a fixed point, while
enforcing a small maximum iteration depth. Preserve deduplication and existing
scan behavior, and add a regression case in the release-check tests covering
&`#37`;2finternal&`#37`;2fstatus.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI (base), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 69091b38-824c-4288-b7b5-235b53cf0694

📥 Commits

Reviewing files that changed from the base of the PR and between 80c870b and 353dd43.

📒 Files selected for processing (12)
  • CHANGELOG.md
  • docs/site/tests/documentation.spec.ts
  • docs/site/url-compatibility.test.mjs
  • scripts/release_checks.py
  • scripts/verify_release.py
  • tests/contract/test_synthetic_fixtures.py
  • tests/examples/test_examples.py
  • tests/fixtures/conformance/drop_policy.json
  • tests/fixtures/conformance/manifest.json
  • tests/fixtures/conformance/topic_grammar.json
  • tests/release/test_release_checks.py
  • tests/unit/test_conformance_corpus.py

Comment thread scripts/release_checks.py

@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: 353dd4316a

ℹ️ 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 scripts/release_checks.py
Comment on lines +1873 to +1877
percent_variant_count = len(scan_texts)
for index in range(percent_variant_count):
decoded = html_unescape(scan_texts[index])
if decoded != scan_texts[index] and decoded not in scan_texts:
scan_texts.append(decoded)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Re-run percent decoding after HTML unescaping

When an HTML artifact encodes percent signs as entities, such as %2Finternal%2Fstatus, the percent-decoding loop runs before html_unescape, and the resulting %2Finternal%2Fstatus variant is never decoded again. Consequently scan_publication_content accepts a browser-resolvable private API path (and similarly encoded non-public references), bypassing the publication boundary this change adds; iterate both decoders to a bounded fixed point or percent-decode each HTML-decoded variant.

Useful? React with 👍 / 👎.

Comment on lines +69 to +71
expected = metadata.get("canonical_sha256")
if expected is None:
continue

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Require canonical hashes for applicable corpus families

If canonical_sha256 is accidentally removed from a json_entity, json_location, or task_envelope manifest entry while its raw file hash remains, this test silently skips that fixture and every other corpus test still passes because the manifest itself is not integrity-pinned. That permits the new corpus to stop enforcing a canonical encoding without CI noticing; require this field for every family to which canonical encoding applies and reserve the skip only for explicitly non-canonical families.

Useful? React with 👍 / 👎.

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