Skip to content

WEB-001A2 — Provision isolated Firebase staging and publish an exact-source Hosting site #665

Closed

Description

@daliu

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 name MPRC 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 staging Firebase 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 build and 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.com release-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

  1. added
    priority:P1High-priority follow-up
    area:firebaseFirebase services and data
    area:webWeb application and hosting
    needs-external-configRequires provider console or external configuration
    on Aug 26, 2026
  2. daliu commented on Aug 26, 2026

    @daliu
    ContributorAuthor

    CLAIMED by Codex at 2026-08-26T16:47:56Z; branch codex/issue-665-firebase-staging; exact base a614c68

  3. daliu commented on Aug 26, 2026

    @daliu
    ContributorAuthor

    Completion evidence — 2026-08-26

    • Source changed: documentation-only commit 3bde9510cac7c1459a91cd47211f377153c5fd49 records the provider result and safety boundary.
    • Tests passed: Node 20.20.2 npm run test:firebase-hosting, 7/7; exact staging build, deploy binding, and executable-artifact verification passed before publication.
    • Code merged: PR WEB-001A2: record isolated Firebase staging deployment #666 merged as b115433542329f4ec8f0bbe242b461a5f7ea9b64.
    • Website published: https://run-mprc-staging.web.app; root and direct /events return 200. Signed-out desktop and phone navigation/rendering passed without broken images or horizontal overflow; empty Events settled to the fixed no-events state.
    • Firebase deployed: static Hosting only in club-owned run-mprc-staging; finalized version 3ffadcf2ac8cc760, release time 2026-08-26T16:53:11.810Z, from exact source a614c68d9a1a2be631a3be874a686d61e5d170a0.
    • Outside provider configured: none. Auth, Firestore, Functions, Rules, indexes, Storage data, App Check, and provider sandboxes were not created or deployed.
    • Production behavior verified: https://mid-peninsula-running-club.web.app still 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:firebaseFirebase services and dataarea:webWeb application and hostingneeds-external-configRequires provider console or external configurationpriority:P1High-priority follow-uptype:operationsOperational setup or runbook

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions