Repository navigation
feat: deploy staging branch to isolated ClawHub staging - #3877
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: blocked before merge. Reviewed October 1, 2026, 5:31 PM ET / 21:31 UTC (Revision 9). ClawSweeper reviewWhat this changesThe branch adds an isolated staging deployment, branch-specific edge authentication, staging scan and publication workers, deployment checks, and updated frontend dependencies with compatible CSP nonce handling. Merge readiness⛔ Blocked before merge - 4 items remain Keep open: the isolated staging capability is absent from current main, and this collaborator-authored PR remains useful. No blocking code findings remain; the previous authority-proof gaps are addressed. Priority: P2 Review scores
Verification
How this fits togetherClawHub's deployment pipeline connects GitHub revisions to its Vercel frontend and Convex backend. Staging requests and publication workers use separate backend credentials while preserving production and disposable Preview paths. flowchart TD
A[Staging branch revision] --> B[Exact revision CI]
B --> C[Isolated Convex deployment]
C --> D[Vercel staging frontend]
D --> E[OIDC and branch secret check]
E --> F[API and archive responses]
C --> G[Staging publication workers]
Decision needed
Why: The PR explicitly leaves callback verification incomplete, and accepting that limitation changes which staging workflows are available. Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep staging isolated through deployment, request authentication, and worker execution, with verified frontend compatibility and an explicit sign-in rollout contract. Do we have a high-confidence way to reproduce the issue? Not applicable to the staging feature request; source comparison establishes that main lacks this permanent isolated deployment, and supplied live observations exercise the new request and worker paths. Is this the best way to solve the issue? Yes, the separate backend and branch-bound deployment pipeline are an appropriate solution; reusing the existing disposable Preview path would not provide permanent staging isolation. OAuth rollout scope and the final deployment result remain unresolved. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 72a32c262670. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (8 earlier review cycles)
|
Summary
staginga permanent, isolated Convex backend (cheery-civet-733) and branch-scoped Vercel configuration.staging, using the Staging GitHub environment, fixed staging backend, and isolated concurrency.Landed and deployed
Merged as
58865c42d91f574bc78a564eb83788f1f1e4d8e1.The protected permanent
stagingbranch remains at the validated and deployed revision135d2524a8611eec155a15905364bb80c190e6b9.Before and after proof
artful-cuttlefish-632X-ClawHub-Staging-Backend: cheery-civet-733, and build SHA135d2524a8611eec155a15905364bb80c190e6b9staging-worker-proof@1.0.1pending, both checks pendingAutomatic publish proof:
rn7dkyx0p1xgjs6zgazd5tb1b98ffyy7, versionyx73z2d5txhzfhggjh3sykfbjd8fehe9.Automatic security-scan proof:
vs78q41vtw1mz5chscyp2adtf18ffq40succeeded with clean analysis; the shared shard completed and the priority shard entered its normal bounded polling window.An earlier manual staging publish also published
staging-worker-proof@1.0.0with both scanners clean. Its authorized archive download returned HTTP 200 /application/zipcontainingSKILL.mdand_meta.json, exercising signed-manifest issuance, verification, and archive assembly.Security boundary proof
A temporary sibling deployment in the same Vercel project verified its real runtime token's signature, issuer, audience, expiry, project, and Preview environment. It had no staging edge credential. Its staging API and archive-manifest requests both received 401, with no manifest or quota headers and zero test-IP quota rows before and after. The temporary deployment was removed.
A staging-only revocation drill temporarily changed Convex's edge credential while the frontend retained the previously valid value. API and archive requests received 401/plain text, and all 30
httpRateLimitKeysrows were unchanged across the denied requests. Restoring the matching credential returned the API to 200. This temporary revocation test is separate from the earlier permanent rotation of Vercel Preview bypass tokens.Validation and dependency patch
bun run ci:staticbun run ci:unit -- --maxWorkers=8— 7,373 passed, 3 skipped. An initial load-related weekly-digest timeout passed its focused 11-test retry and full rerun.bun run ci:types-build, including schema and CLI TypeScript checks; Convex deploy typecheck passed.bun run ci:playwright-smoke— 19 passed.React Start 1.168.60 / Router 1.170.41 resolve start-server-core 1.169.39, as required by TanStack's CVE-2026-102989 advisory. The official patch was allowed through the local package-age filter for that single install command. No persistent age-policy change, CSP relaxation, or Vercel vulnerability bypass was added. Vercel accepted and deployed the patched release.
Operational notes
SECURITY_SCAN_EVENT_DISPATCH_ENABLED=1and staged prepublication checks are enabled on staging. General Convex crons remain disabled there.stg.clawhub.aiawaits DNS-owner verification:TXT _vercel.clawhub.ai = vc-domain-verify=stg.clawhub.ai,42f428eb4b2f7aa99a97. Its A record is configured; the Foundation hostname is working now.https://cheery-civet-733.convex.site/api/auth/callback/github; these proofs do not claim a completed browser sign-in.