Skip to content

Harden CI dispatch input and align Caring Contacts robots metadata - #2439

Merged
BigSimmo merged 6 commits into
mainfrom
cursor/audit-followup-hardening-c4bb
Aug 27, 2026
Merged

Harden CI dispatch input and align Caring Contacts robots metadata#2439
BigSimmo merged 6 commits into
mainfrom
cursor/audit-followup-hardening-c4bb

Conversation

@BigSimmo

@BigSimmoBigSimmo commented Aug 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bind the Lighthouse baseline-refresh dispatch input through step env and quote it in the classify-changed-files run: script, so GitHub context is no longer interpolated into a shell.
  • Point Caring Contacts at the shared PRIVATE_APP_ROBOTS_METADATA object so that route emits the same noindex extras as the root layout instead of a narrower child override.

These are two independently revertible commits from the Audit cluster follow-up. Distroless Dockerfile hits, Apiiro obfuscation false positives, and non-bug React residuals were left unchanged.

Verification

  • npm run verify:pr-local

PR-local verification summary: completed check:runtime, check:installed-lock-parity, format:changed, check:github-actions, check:ci-scope, check:gitleaks-pinned, check:ci-triage, check:pr-policy, check:gate-manifest, check:skills, check:pr-mergeability, check:verification-plan, lint, typecheck, test, check:repo-awareness-snapshot, build, check:rag:fixtures, check:medication-interactions, check:medication-lexicon-report; failed: (none).

Fresh unit suite (before receipt reuse): Test Files 893 passed (893) / Tests 10824 passed | 1 skipped (10825). Final handoff reused that receipt: [gate-receipts] REUSED — "vitest" already exited 0 on this exact content. Production build: ✓ Compiled successfully in 36.1s and Client bundle secret surface check passed. Offline RAG: Offline RAG fixture and manifest validation passed (36 golden cases, 26 suites).

Iteration also ran GATE_RECEIPTS=off node scripts/run-vitest.mjs run --reporter=dot tests/ci-cache-safety.test.ts tests/crawler-policy.test.tsTest Files 2 passed (2) / Tests 59 passed (59). npm run test:focused correctly fail-closed because the test files themselves changed.

Demo GET /caring-contacts on http://localhost:4461 (project identity clinical-kb:c52ddf65534b) now emits a single pair of robots tags matching root: noindex, nofollow, nocache and googlebot noindex, nofollow, nosnippet, noimageindex. Title remains Caring Contacts - Clinical KB.

  • npm run verify:ui when UI, routing, styling, browser behavior, reduced-motion, or forced-colors behavior changed

UI verification not run: Caring Contacts change is route metadata only (robots object swap). No chrome, layout, styling, or interaction behaviour changed.

  • npm run verify:release before release or handoff confidence claims

Verification not run: verify:release is provider-backed and not authorized for this change.

  • npm run eval:retrieval:quality (must stay 36/36) when retrieval, ranking, selection, chunking, or scoring behavior changed — CI cannot run it (needs live keys), so run it locally and paste the summary. A metadata/governance-weighting change once buried correct docs (recall 1.0→0.76) and only this eval caught it.

Verification not run: no retrieval, ranking, selection, chunking, or scoring behaviour changed.

  • npm run eval:rag -- --limit 15 + npm run eval:quality -- --rag-only when answer generation, the synthesis prompt, or answer post-processing changed (grounded-supported must not drop; citation-failure 0)

Verification not run: no answer-generation change.

  • npm run check:production-readiness when clinical workflow, privacy, environment, Supabase, source governance, or deployment behavior changed

Verification not run: no clinical workflow, privacy, environment, Supabase, source governance, or deployment behaviour changed.

  • npm run check:deployment-readiness when deployment startup, hosting, or rollout behavior changed

Verification not run: no deployment startup, hosting, or rollout behaviour changed.

Adversarial security review of the CI env bind found no remaining injection, and empty/false/true dispatch semantics stay equivalent to the previous quoted comparison.

Risk and rollout

  • Risk: low. The classify step still treats only the string true as a Lighthouse refresh; off-dispatch the env value is empty and the quoted comparison is false, matching the previous blank interpolation. Job-level if: expressions that already read github.event.inputs.refresh_lighthouse_baseline are unchanged. Caring Contacts remains noindexed; the child metadata now matches the private-app extras (nocache, Googlebot noimageindex/nosnippet) instead of emitting a narrower duplicate.
  • Rollback: revert the first commit to restore CI interpolation, and/or revert the second commit to restore the Caring Contacts-only { index: false, follow: false } robots object.
  • Provider or production effects: None. No live OpenAI, Supabase, Railway, or production psychiatry.tools calls. The workflow change affects GitHub Actions classification only after merge.
  • RAG impact: none

Clinical Governance Preflight

Not required. This PR does not touch ingestion, answer generation, search/ranking, source rendering, document access, privacy, production env, or clinical output.

Notes

Mixed operational (.github/workflows/ci.yml) and UI (src/app/caring-contacts/layout.tsx) files are bundled because both are tiny audit follow-ups; they remain separately revertible commits. No public XML sitemap and no search-engine submission.

Open in WebOpen in Cursor

cursoragentand others added 2 commits August 27, 2026 14:52
Bind github.event.inputs.refresh_lighthouse_baseline through step env and
quote it in the classify-changed-files run script instead of interpolating
GitHub context into the shell.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Use PRIVATE_APP_ROBOTS_METADATA so the route emits the same noindex extras
as the root layout instead of a narrower child override.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@coderabbitai

coderabbitaiBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 23 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 102 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 34f5d8d1-59c6-4bc1-b421-526520dddc3e

📥 Commits

Reviewing files that changed from the base of the PR and between b9cea4c and cbc77fc.

📒 Files selected for processing (4)
  • .github/workflows/ci.yml
  • src/app/caring-contacts/layout.tsx
  • tests/ci-cache-safety.test.ts
  • tests/crawler-policy.test.ts

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

@supabase

supabaseBot commented Aug 27, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@BigSimmo
BigSimmo marked this pull request as ready for review August 27, 2026 15:10
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@cursor

cursorBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_8a61cacc-3d36-419f-9b83-03639eb24c58)

@cursor

cursorBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_a557684a-ddcc-4baf-a980-5285d5fb4544)

@BigSimmo
BigSimmo enabled auto-merge (squash) August 27, 2026 17:20
@github-actions

Copy link
Copy Markdown
Contributor

CI triage

CI failed on this PR. Automated classification of the 2 failed job(s):

  • Production UI (3)needs investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.
  • PR requiredneeds investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.

Compared with main CI run #14362 (failure).

Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger.

@cursor

cursorBot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_306320a3-d1c7-4f45-9c4d-920d10db1973)

@BigSimmo
BigSimmo merged commit 6f32f92 into mainAug 27, 2026
29 checks passed
@BigSimmo
BigSimmo deleted the cursor/audit-followup-hardening-c4bb branch August 27, 2026 18:19
Sign up for freeto 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.

2 participants

@BigSimmo@cursoragent