Skip to content

test: pin remaining README 'What is live in this repo' sub-claims to code (promise audit, lane 1) - #64

Merged
nish3451 merged 1 commit into
mainfrom
seo-fix-kit/lane1-promise-audit-verify
Aug 9, 2026
Merged

nish3451 merged 1 commit into
mainfrom
seo-fix-kit/lane1-promise-audit-verify

Conversation

@nish3451

@nish3451 nish3451 commented Aug 9, 2026

Copy link
Copy Markdown
Owner

What

Fresh-verification follow-up to the lane-1 promise audit (PR #63, already merged). Re-ran the audit from a fresh origin/main and found three sub-claims inside already-pinned README bullets that had no regression pin of their own:

  1. Queued audit jobs — with status polling before the private report loads: no pin existed for the frontend job poller (pollAuditJob in src/App.jsx) or the /api/audit/jobs/ endpoint it hits (only the route list pin existed).
  2. Saved private report URLs — tied to the beta owner email and invite where available: audit_reports table existence was pinned, but not that reports are stored with owner_email + owner_invite_id (worker/lib/report-data.js) or that queued audits carry owner_invite_id: access.inviteId (worker/routes/audits.js).
  3. Public /support, /terms, /privacy pages with no ranking guarantees: routes were pinned, and methodology/packages/demo no-overclaim copy was pinned, but the affirmative no-ranking-promise copy on the three legal pages themselves was not.

Verification (all from fresh origin/main)

  • npm run test:promise-audit — 44/44 pass (was 41; +3 new pins)
  • Bullet-by-bullet sweep: all 48 What is live in this repo bullets now have a pin in shared/promise-audit.test.mjs, worker/routes/pages.test.mjs, or scripts/live-promise-spot-check.mjs
  • npm run audit:live-promise — /demo, /methodology, /packages all pass against https://seofixkit.com
  • Live pages byte-identical to shipped worker/routes/pages.js copy (independent fetch comparison)
  • npm run check — full pipeline passes including build

What changed

Only shared/promise-audit.test.mjs (+34 lines): three regression tests pinning the sub-claims above to load-bearing code strings, in the same style as PRs #60/#62/#63.

…code

The lane-1 audit (PR #63) pinned all 48 'What is live in this repo'
bullets, but fresh spot-checking found three sub-claims inside pinned
bullets with no regression pin of their own:

- queued audit jobs: 'status polling before the private report loads'
  (UI pollAuditJob + /api/audit/jobs/ endpoint were unpinned)
- saved private report URLs: 'tied to the beta owner email and invite
  where available' (owner_email/owner_invite_id storage was unpinned)
- public /support, /terms, /privacy pages 'with no ranking guarantees'
  (the affirmative no-ranking copy on those pages was unpinned)

Adds three pins to shared/promise-audit.test.mjs (44 tests total) so
these claims cannot silently drift.

@greptile-apps greptile-apps 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.

nish3451 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@nish3451, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 12 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 3de5bf00-8922-4d2d-937a-af1fe639df4e

📥 Commits

Reviewing files that changed from the base of the PR and between eda31d9 and b61bf38.

📒 Files selected for processing (1)
  • shared/promise-audit.test.mjs

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

@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: b61bf38eff

ℹ️ 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 on lines +529 to +530
assert.match(appSource, /async function pollAuditJob/, "the UI polls job status before the report loads");
assert.match(appSource, /\/api\/audit\/jobs\//, "polling hits the job status endpoint");

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 Assert that the polling helper is actually called

If the queued-audit submission path stops invoking pollAuditJob, these assertions still pass because they only find the unused helper declaration and the URL inside that helper. The test therefore does not protect the README claim that polling occurs before loading the private report; it should also pin the call from the queued response path, ideally together with its ordering before report loading.

AGENTS.md reference: AGENTS.md:L7-L7

Useful? React with 👍 / 👎.

Comment on lines +539 to +543
reportDataSource,
/INSERT INTO audit_reports[\s\S]*owner_email[\s\S]*owner_invite_id/,
"reports are stored with owner email and invite id"
);
assert.match(auditsSource, /owner_invite_id: access\.inviteId/, "queued audits carry the owner invite");

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 Verify ownership values are bound into saved reports

If the report insert continues naming owner_email and owner_invite_id but its .bind(...) values are changed to blanks, nulls, or unrelated fields, this test still passes; the separate queued-job assertion does not verify what saveAuditReportWithContext stores. That leaves the promised owner-bound report behavior unprotected, so the test should exercise the save operation or pin the corresponding bound access values.

AGENTS.md reference: AGENTS.md:L7-L7

Useful? React with 👍 / 👎.

Comment on lines +551 to +555
assert.match(pagesSource, /No ranking or traffic guarantee/, "terms page carries no ranking guarantee");
assert.match(pagesSource, /No ranking, traffic, or revenue promise is made/, "privacy page carries no ranking promise");
assert.match(
pagesSource,
/No ranking, indexing, traffic, revenue, or search-engine outcome is promised/,

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 Check the disclaimer on each claimed policy page

These matches search the entire pages.js module rather than the rendered page named by each assertion: the first phrase is in packagesHtml, the second is in supportHtml, and the third is in termsHtml, while privacyHtml currently has no no-ranking disclaimer at all. Consequently the test passes even though the privacy page does not satisfy the README claim and would keep passing if these phrases moved between pages; render supportHtml, termsHtml, and privacyHtml separately and assert against each result.

AGENTS.md reference: AGENTS.md:L7-L7

Useful? React with 👍 / 👎.

@nish3451
nish3451 merged commit d6c6b43 into main Aug 9, 2026
2 checks passed
nish3451 added a commit that referenced this pull request Aug 9, 2026
…code (#65)

The lane-1 promise audit (PR #60-#64) pinned all 48 'What is live in this
repo' bullets, but a fresh spot-check found eleven sub-claims inside pinned
bullets with no regression pin of their own:

- crawl inventory: 'from robots.txt and sitemaps' discovery was unpinned
- large crawls: 'stored frontier/proof/retry state' tables/logic unpinned
- competitor benchmarking: repair gaps added to reports and briefs unpinned
- AI readiness: optional /llms.txt reachability checks unpinned
- repair queue: acceptance checks, status, and action mode unpinned
- repair board: 'no external publishing side effects' copy unpinned
- implementation packs: approved change text requirement unpinned
- repair proposals: execution modes, owner approval, delivery state unpinned
- audit monitors: dashboard add/pause controls unpinned
- developer API: safe repair_queue issue status unpinned
- retention: cleanup for expired reports, sessions, and quota buckets unpinned

Adds eleven pins to shared/promise-audit.test.mjs (55 tests total) so these
claims cannot silently drift. Live spot-check of /demo, /methodology, and
/packages against https://seofixkit.com still passes.
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