Skip to content

ci: verify static source and correct broken local links - #2

Merged
4444J99 merged 1 commit into
mainfrom
fix/static-source-ci-20261016
Oct 16, 2026
Merged

4444J99 merged 1 commit into
mainfrom
fix/static-source-ci-20261016

Conversation

@4444J99

@4444J99 4444J99 commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

The public site has Pages publication evidence but no source verification; its npm test command starts a development server. Source inspection found three favicon references to a missing directory and two links with incorrect OGOD filename case.

This adds a dependency-free gate for five existing HTML entrypoints, their 138 distinct local resource/link targets, and syntax of the ten explicitly listed first-party JavaScript files. It checks exact case, nonempty regular files, document structure and syntax, while rejecting symlink paths. The five broken URLs are corrected. Eight failure-mode tests verify the gate rejects actual defects.

The new public workflow uses read-only contents, pinned actions and a five-minute standard runner; it requires no npm install, private checkout, credentials, deployment or media changes. Documentation bounds the claim: browser rendering, external availability, CSS URLs, dynamic resources and fragments remain outside this static predicate.

Independent patch review is clear. All eight failure-mode tests and the ten actual JS syntax checks pass locally; exact Git tree metadata confirms all 138 referenced files are nonempty. Full verification against the real checked-out assets remains the hosted acceptance test.

Hosted acceptance now passes on 855e6aff5454c60c265f26dff88c82305cd36e3f: run 38978939360 completed both the failure-mode tests and full verification against the actual checked-out assets. Independent review found no blockers.

Summary by CodeRabbit

  • Bug Fixes
    • Corrected favicon links across the site and updated album links to point to the correctly capitalized page.
  • Quality Checks
    • Added automated checks for site pages, local links, referenced files, and JavaScript syntax, with coverage for common validation failures.
    • Added an automated workflow to run these checks on updates and pull requests.
  • Documentation
    • Documented how to run the checks and clarified the development server command.

@sourcery-ai

sourcery-ai Bot commented Oct 16, 2026

Copy link
Copy Markdown

Sorry @4444J99, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 5 days and 15 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T23:02:59.964502Z 855e6af PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@sourcery-ai

sourcery-ai Bot commented Oct 16, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR introduces a read-only, dependency-free CI gate that validates five HTML entrypoints, their local references, and ten first-party JavaScript files, with focused failure-mode tests and documented scope. It also fixes three favicon paths and two case-sensitive OGOD links, using pinned GitHub Actions and no npm/build or deployment requirements.

Sequence diagram for CI static source verification

sequenceDiagram
    participant Actions as GitHub Actions
    participant Verifier as verify-static-site.py
    participant HTML as HTML entrypoints
    participant Files as Local files
    participant Node as Node.js

    Actions->>Verifier: Run verification
    Verifier->>HTML: Parse entrypoints and collect references
    Verifier->>Files: require_file for local targets
    Files-->>Verifier: Exact-case nonempty regular files
    Verifier->>Node: node --check JavaScript files
    Node-->>Verifier: Syntax result
    Verifier-->>Actions: Pass or reject verification
Loading

Flow diagram for static site verification gate

flowchart TD
    Start[Run verify-static-site.py] --> Pages[Parse five HTML entrypoints]
    Pages --> Structure[Validate document structure]
    Structure --> References[Resolve local src, data-src, poster, and link targets]
    References --> Files[Require exact-case, nonempty regular files]
    Files --> Syntax[Check ten first-party JavaScript files]
    Syntax --> Pass[Verification passes]
    Files --> Fail[Reject missing, mis-cased, symlink, empty, or escaping paths]
    Syntax --> Fail
Loading

File-Level Changes

Change Details Files
Adds a dependency-free static verification gate for HTML references, document structure, regular files, exact path casing, symlink rejection, and first-party JavaScript syntax.
  • Verifies five HTML entrypoints and their local resource/link targets.
  • Parses selected HTML attributes while excluding external, fragment-only, and empty references.
  • Rejects missing, empty, incorrectly cased, escaping, or symlink-traversing paths.
  • Runs Node syntax checks for ten explicitly listed JavaScript files.
scripts/verify-static-site.py
Adds automated failure-mode coverage for the static verification gate.
  • Tests missing assets and entrypoints, malformed documents, invalid JavaScript, wrong filename case, symlinks, empty files, and escaping paths.
  • Confirms external and fragment-only URLs are excluded from local file checks.
scripts/test_verify_static_site.py
Publishes the verifier as a restricted, pinned GitHub Actions check and documents its scope and usage.
  • Runs on pushes, pull requests, and manual dispatch with read-only contents, pinned actions, Node 24, and a five-minute timeout.
  • Runs verifier unit tests and the real repository verification without npm installation or deployment.
  • Documents validation boundaries, including browser rendering, external resources, CSS URLs, dynamic resources, and fragments.
.github/workflows/static-source.yml
README.md
Corrects broken local references caused by missing favicon paths and OGOD filename casing.
  • Changes three favicon references from images/ to img/.
  • Updates both OGOD links to the case-sensitive OGOD.html filename.
OGOD.html
loophole.html
sitemap.html

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Oct 16, 2026

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 897fcb09-58e2-4b6e-828a-91116ebe01ad
📥 Commits

Reviewing files that changed from the base of the PR and between 8d9d0e7 and 855e6af.

📒 Files selected for processing: 7
  • .github/workflows/static-source.yml
  • OGOD.html
  • README.md
  • loophole.html
  • scripts/test_verify_static_site.py
  • scripts/verify-static-site.py
  • sitemap.html
+-------------------------------------------------------------------------------------------------------------------+
| Work with a user to think like a user. It's the best way to gain insight into how the system will really be used. |
+-------------------------------------------------------------------------------------------------------------------+
  \
   \     /)/)
        ( '')
        /  |
      o(___)
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@4444J99
4444J99 merged commit dfcbf0f into main Oct 16, 2026
3 of 4 checks passed
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