Repository navigation
WEB-001A2 — Provision isolated Firebase staging and publish an exact-source Hosting site #665
Description
Outcome
Provision one dedicated, club-owned Firebase staging project under the already authenticated runmprc@gmail.com account and publish the exact reviewed WEB-001A1 source tree to Firebase Hosting. Verify the provider URL, static assets, SPA deep routes, responsive public UI, staging identity, and rollback/expiration evidence without touching production Hosting or production data.
Parent: #460 (WEB-001)
Exact source baseline: merge a614c68d9a1a2be631a3be874a686d61e5d170a0 / tree e518cdff884b07e74b33c0e3c915ca028c518008.
Invariant and allowed transitions
- Create exactly one staging project:
run-mprc-staging, display nameMPRC Staging, under the club Google account. - Create only the staging Firebase web app and default Hosting site needed for the static preview.
- Build with complete
stagingFirebase browser configuration and prove no known production Firebase identity appears in executable JavaScript. - Deploy only Hosting from the exact reviewed source tree. Do not deploy Auth, Firestore, Functions, Rules, indexes, extensions, Storage data, or production configuration.
- Do not create billing, IAM/WIF, service-account keys, legacy Firebase tokens, DNS records, custom domains, or production release branches in this child.
- Do not sign in, write data, invoke commerce/provider flows, or test production member/payment behavior.
runmprc.com, Netlify production, Firebase production Hosting, and all production data remain unchanged.
Acceptance criteria
- The club account can read the production Firebase project and the new staging project; public evidence contains no credentials or private IAM details.
- The staging project and web app use the exact approved identifiers and no production-equal field.
- The optimized artifact passes
scripts/firebase-hosting-contract.js verify buildand contains only staging Firebase identity. - Firebase Hosting serves
/, static assets, and direct SPA routes from the exact source tree with no broken images or document-level horizontal overflow. - Provider readback names the staging URL and Hosting release time; a rollback/expiration path is recorded.
- Production Hosting remains empty, Netlify remains published, and
runmprc.comrelease-marker readback is unchanged. - Engineering and officer docs distinguish source merged, staging project created, staging site published, production not deployed, DNS unchanged, and production behavior unverified.
Stop conditions
- The project would be created outside the club account, requires billing, or collides with an existing project.
- Any staging field equals a production Firebase identity or the artifact can fall back to production.
- A command targets production Hosting, backend resources, real data, DNS, custom domains, IAM, secrets, or credentials.
- Exact source/build identity or rollback evidence cannot be proven.
Officer impact: None live. Officers continue using the existing Netlify procedure; this creates an isolated engineering staging URL only.
Officer documentation: Update OFFICER_START_HERE.md, docs/officers/PUBLISH_AND_CHECK.md, docs/officers/SYSTEM_MAPS.md, docs/officers/ACCESS_CONTINUITY.md, and docs/officers/EMERGENCY_AND_RECOVERY.md with verified staging-only truth.
Deployment evidence: Record project/web-app/Hosting metadata, exact source tree, artifact scan, public route/UI checks, production Hosting 404, Netlify release marker, and rollback/expiration status.
Claim protocol
Creation is not a claim. Post CLAIMED by Codex at <UTC>; branch <branch>; exact base <40-character SHA> before provider or source changes.
Activity
daliu commentedon Aug 26, 2026
CLAIMED by Codex at 2026-08-26T16:47:56Z; branch codex/issue-665-firebase-staging; exact base a614c68
daliu commentedon Aug 26, 2026
Completion evidence — 2026-08-26
3bde9510cac7c1459a91cd47211f377153c5fd49records the provider result and safety boundary.npm run test:firebase-hosting, 7/7; exact staging build, deploy binding, and executable-artifact verification passed before publication.b115433542329f4ec8f0bbe242b461a5f7ea9b64.https://run-mprc-staging.web.app; root and direct/eventsreturn 200. Signed-out desktop and phone navigation/rendering passed without broken images or horizontal overflow; empty Events settled to the fixed no-events state.run-mprc-staging; finalized version3ffadcf2ac8cc760, release time2026-08-26T16:53:11.810Z, from exact sourcea614c68d9a1a2be631a3be874a686d61e5d170a0.https://mid-peninsula-running-club.web.appstill returns 404;runmprc.com, Netlify, GitHub Pages, DNS, accounts, sign-in, and production data were unchanged.Remaining gates stay with #460/#133: protected short-lived release authority, backend/provider staging, application security headers, a release marker, a second release plus rollback rehearsal,
production-web, custom-domain/DNS/TLS cutover, and provider readback.