Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions IMPLEMENTATION_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ MPRC can open a race or merchandise item for sale only when the platform can:

**WEB-002D completed release boundary:** [#659](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/659) completed one exact-artifact Netlify exception on 2026-08-14. Exact release merge `46e23647d8e0bf9fa3a574ea5c5f993be10a419d` published deploy `6a7ece87c5ca4d0007c1a3fc` from source `7496fe0881fb52908c4ff2f40f488df09c94c908`, tree `ccac4c189c195db8ab594e0eefe256ea9fa04996`, 62 files, and digest `e4c26e6f0fbcd086663d86238675f0be228fb649a00628c1c97d1166612f49c7`. Signed-out desktop route-focus and phone menu/route-focus checks passed. Repause merge `3138a00c1c48e1d5d1dcda0b44722b09a2194ff7` passed exact-main CI run `31783808994`; attempt `6a7ed0ddb00a46000818878d` remained unpublished and retained the verified deploy. The manifest is inactive, the temporary source/control/repause refs are absent, and rollback ref `codex/netlify-source-659-rollback` remains pinned to #623 source `c2d87d1f69f15e128a0bc9b1b9f915b7c8417aec`. #659 published only the reviewed #291 visible-focus, #490 phone-menu, and #657 route-focus behavior. It deployed no Firebase, Rules, Functions, or indexes; changed no outside-provider configuration, account, sign-in state, production data, payment, or connected directory behavior; and left directory availability literal `false`. Reusable hosting remains open under #460/#133/#136, and #507 still owns every connected-directory gate.

**WEB-CONTENT-001 pending release boundary:** [#685](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/685) arms one exact-artifact Netlify exception for the temporary Sept. 19 and Sept. 26 meeting-location banner. It is under review and is not published. Frozen source `41a9ae4ebc719212df610ff5cdcf9ca4eab18e71`, tree `7f75ebda7b9d295c5be26acc11b06b452dcc20c6`, and 62-file digest `cb4eba76c65c3501b37f9a0ad3cf00b6eefbc5a9c2e653f2b3c03607cfe64850` contain only the banner and its expiry tests on top of current live source `7496fe0881fb52908c4ff2f40f488df09c94c908`. Production remains #659 deploy `6a7ece87c5ca4d0007c1a3fc` unless the exact-parent release, marker, phone/desktop checks, and immediate repause all succeed. No Firebase, provider, account, sign-in, private data, payment, route, or permission change is included.

**Historical source-ref correction:** a 2026-09-14 remote read found the exact hot source refs for #473, #623, and #659 still present despite older absent/retired wording. Their manifests are inactive, so ordinary `main` merges remain paused, but an authorized manual rebuild of a historical active merge is a latent retry path. Do not treat that residual as resolved; retire those hot refs separately only after confirming their rollback refs.

**WEB-001A1 Firebase Hosting source foundation:** [#663](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/663) is the first bounded child of #460. It makes controlled optimized builds environment-explicit, keeps local/test on the demo emulators, requires complete staging-named public Firebase configuration, rejects production identities in staging, scans the executable synthetic CI artifact, changes the unqualified CLI default to `demo-mprc-local`, and adds the inert `build/` Hosting rewrite. It deliberately does not provision staging, configure short-lived authority or branch/environment protection, deploy Hosting/Firebase, automate `production-web`, add release readback/rollback/headers, alter Netlify/Pages, or touch DNS/TLS. Source/tests/merge and a synthetic build are not staging or production evidence.

**WEB-001A2 isolated static staging:** [#665](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/665) creates the club-owned `run-mprc-staging` Firebase project, one web app, and the static [run-mprc-staging.web.app](https://run-mprc-staging.web.app) Hosting site from exact merged source `a614c68d9a1a2be631a3be874a686d61e5d170a0`. The executable artifact scanner found the staging identity and rejected known production identities; provider, direct-route, desktop, and phone readback passed. This is signed-out visual staging only. It does not configure App Check, Auth test users, Firestore, Functions, Rules, indexes, Storage data, provider sandboxes, protected short-lived authority, a release marker, tested predecessor rollback, security headers, `production-web`, custom domains, DNS/TLS, or production publication.
Expand Down
4 changes: 4 additions & 0 deletions OFFICER_START_HERE.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ As of **2026-08-13**, a merge runs checks but does not start the GitHub release.

As of **2026-08-14**, [#659](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/659) completed one accessibility-only Netlify release. Deploy `6a7ece87c5ca4d0007c1a3fc` is live from frozen source `7496fe0881fb52908c4ff2f40f488df09c94c908`; its exact 62-file marker and signed-out desktop/phone route-focus and menu checks passed. Repause merge `3138a00c1c48e1d5d1dcda0b44722b09a2194ff7` made the manifest inactive. Its attempt `6a7ed0ddb00a46000818878d` published nothing and retained the verified deploy. #623 deploy `6a7e072f8f346b0008510d29` is the recorded rollback, not current production. #659 changed no Firebase, provider configuration, account, sign-in state, production data, payment, or connected directory behavior. Officers do not run commands, sign in, enter data, or approve this as a reusable release. Follow the completed record in [Review, merge, release, and check a change](./docs/officers/PUBLISH_AND_CHECK.md).

As of **2026-09-14**, [#685](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/685) is a temporary meeting-location notice under review and is not published. The reviewed banner gives the Sept. 19 Seal Point dog-park restroom pin and the Sept. 26 Baywinds Park meeting point, both at 8:45 AM, and removes each item after its Saturday in Pacific time. Production remains #659 deploy `6a7ece87c5ca4d0007c1a3fc` until an exact frozen preview, exact-parent merge, public marker, phone/desktop readback, and immediate repause all pass. Officers do not run commands, sign in, enter data, or reuse this one-shot release control.

Remote readback on 2026-09-14 found the old #473, #623, and #659 hot source refs still present; this supersedes older absent/retired wording. Their manifests are inactive and ordinary merges remain paused, but the latent manual-rebuild path is not yet retired. Officers do not remove refs; the platform owner must verify rollback refs before a separate cleanup.

As of **2026-08-26**, WEB-001A1 [#663](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/663) is merged, and WEB-001A2 [#665](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/665) created the club-owned `run-mprc-staging` project. CI-001C1 [#667](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/667) adds a separate protected read-only identity check: Dave Liu or Jeff Chang reviews exact `main`, and a keyless five-minute identity may read only the staging project identity. It cannot deploy Firebase. CI-001D1 [#669](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/669) adds an empty, delete-protected staging Firestore database and the exact reviewed Rules/index definitions. Anonymous reads of three fixed server-only paths were denied, and the database still had zero root collections after verification. CI-001D2 [#671](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/671) deploys password-required email/password Auth from exact merged source and proves it with disposable API and browser sign-in/sign-out checks. Readback shows improved email privacy, only the two staging domains, no other provider, billing disabled, and zero users/records after cleanup. CI-001D3 [#674](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/674) adds a code guard for a future deployment of only the two profile Functions. It does not deploy them, and billing remains unapproved. CI-001D4 [#676](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/676) now enforces App Check on staging Authentication and Firestore: exact source `bce911a7083201cfe2141edaa9660f210287bf57` is live at [run-mprc-staging.web.app](https://run-mprc-staging.web.app) as Hosting version `8556fc51210bdc66`; one score-based key is restricted to only the two staging hosts and registered to the one web app for one-hour tokens; and both services read `ENFORCED` with replay protection `OFF`. A made-up browser account completed create, sign-out, fresh sign-in, and post-enforcement sign-in; token-bearing empty Events reads worked signed in and signed out without browser warnings/errors. Requests without App Check were denied by Auth and Firestore, and cleanup returned users and root collections to zero. This remains an **ENGINEERING STAGING SITE ONLY**: Functions, outside-provider sandboxes, protected automatic release, release marker, tested rollback, complete security headers, custom domain, and officer publish control are still **NOT AVAILABLE YET**. The account page therefore shows a safe unavailable profile state. Officers do not sign in, enter data, run commands, configure providers, attach billing, or treat App Check as a complete member backend. Netlify still answers `runmprc.com`; production Firebase Hosting remains empty; and DNS, GitHub Pages, Netlify, production Firebase, production data, and live website behavior are unchanged.

The optional profile-photo and officer People-finder functions are still **NOT AVAILABLE YET**. #621 makes the frontend default an inert preview: My Account shows the future photo and separate finder-choice controls disabled, while the People finder stays behind the administrator guard and shows its name field and Search button disabled. The preview reads no saved photo or setting, accepts or uploads no photo, searches no name, and saves nothing; it shows no people or sample results. #623 published exactly that disabled interface as deploy `6a7e072f8f346b0008510d29`. Officers inspect the protected layouts only in synthetic local artifacts. The completed signed-out production review proved only the exact revision, normal sign-in and administrator guards, and absence of a member-directory network request. Do not sign in to production, choose a real photo, enter a real name, or treat the preview as a directory. #623 changed no Firebase, provider configuration, account, sign-in, or production data. #507 must later prove the privacy, authorization, staging, backend-first deployment, and readback gates before a separate reviewed source change may connect it. Follow the preview and source-review procedure in [Events, shop, members, and money](./docs/officers/EVENTS_SHOP_MEMBERS.md).
Expand Down
4 changes: 4 additions & 0 deletions OPERATIONS_RUNBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -741,6 +741,10 @@ WEB-002C [#623](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/623) compl

WEB-002D [#659](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/659) completed its one-shot Netlify accessibility release on 2026-08-14. Release ID `WEB-002D-KEYBOARD-FOCUS-2026-08-14` used pinned Deploy Preview `6a7ec998bf8fde00086d2bfe`, matched release-control head `137d8a8721339a6ca1079283cc34c1bd7cc2706c`, and passed PR CI run `31781730576`. Exact two-parent release merge `46e23647d8e0bf9fa3a574ea5c5f993be10a419d`, parents `95880748e15c03b0ee58da6e1ed11ac6c9526529` and `137d8a8721339a6ca1079283cc34c1bd7cc2706c`, tree `3ef47ed0f664e1e9a2c703332ca9071cfda27ad2`, passed exact-main CI run `31783141914`. Netlify deploy `6a7ece87c5ca4d0007c1a3fc` became ready and published at `2026-08-14T08:16:09.268Z`. Its marker and all 62 artifact paths matched source `7496fe0881fb52908c4ff2f40f488df09c94c908`, tree `ccac4c189c195db8ab594e0eefe256ea9fa04996`, previous source `c2d87d1f69f15e128a0bc9b1b9f915b7c8417aec`, rollback deploy `6a7e072f8f346b0008510d29`, and digest `e4c26e6f0fbcd086663d86238675f0be228fb649a00628c1c97d1166612f49c7`; the exact six-path live-source diff digest was `462eeb01e7a9858678802464f7dd4b76cd2fcb3c13be827efb4f98fa53ca809c`. Signed-out desktop `/shop` and phone `/events` checks passed: route changes left main focused at the top without horizontal overflow, and the phone menu exposed truthful open state before destination selection closed it and preserved normal route focus. Repause preview `6a7ecfbc90347c000804901c` matched head `94c949abed3759c15cdaa98afc6896343e8a6edd`, which passed PR CI run `31783487885`; exact repause merge `3138a00c1c48e1d5d1dcda0b44722b09a2194ff7`, parents `46e23647d8e0bf9fa3a574ea5c5f993be10a419d` and `94c949abed3759c15cdaa98afc6896343e8a6edd`, tree `c4667394dc9a2286c3a2eda028728314e925c22f`, passed all five exact-main jobs in run `31783808994`. Its attempt `6a7ed0ddb00a46000818878d` errored unpublished; provider and marker readback retained deploy `6a7ece87c5ca4d0007c1a3fc`. The manifest is inactive, the release/control/repause refs are absent, and rollback ref `codex/netlify-source-659-rollback` remains pinned to source `c2d87d1f69f15e128a0bc9b1b9f915b7c8417aec`. #659's frozen source differed from its predecessor only at `src/App.jsx`, `src/App.test.jsx`, `src/components/Navbar.jsx`, `src/components/ScrollToTop.jsx`, `src/headerClearance.test.jsx`, and `src/index.css`. It deployed no Firebase, Rules, Functions, or indexes; changed no outside-provider configuration, account, sign-in state, production data, content, route set, payment, or connected directory behavior; and left directory availability literal `false`. Follow the completed no-terminal audit record in `docs/officers/PUBLISH_AND_CHECK.md`; never use this exception as a general release button.

WEB-CONTENT-001 [#685](https://github.com/Run-MPRC/Run-MPRC.github.io/issues/685) is one active Netlify content exception under review and is not published. Release ID `WEB-CONTENT-001-SEPTEMBER-LOCATIONS-2026-09-14` pins source `41a9ae4ebc719212df610ff5cdcf9ca4eab18e71`, tree `7f75ebda7b9d295c5be26acc11b06b452dcc20c6`, 62 files, digest `cb4eba76c65c3501b37f9a0ad3cf00b6eefbc5a9c2e653f2b3c03607cfe64850`, exact expected first parent `925a677cd807dad1f925b4a85e89fc317b7a38b7`, and current production/rollback deploy `6a7ece87c5ca4d0007c1a3fc`. The source differs from current live source `7496fe0881fb52908c4ff2f40f488df09c94c908` only in `src/components/AnnouncementBanner.jsx` and `src/components/AnnouncementBanner.test.jsx`. Before merge, require the pinned preview marker, public notice/map checks at 390×844 and 1280×900, all hosted checks, an unchanged `main`, and a prepared manifest-disable branch. Stop and rebuild the control if `main` advances or any identity differs. After a successful live marker/readback, merge the disable change immediately and verify its attempt publishes nothing. This exception changes no Firebase, provider configuration, account, sign-in state, private data, payment, route, permission, or reusable release authority.

Remote-ref correction recorded 2026-09-14: the exact hot source refs for #473, #623, and #659 remain present, superseding older absent/retired statements in this record. Inactive manifests block ordinary `main` publication, but an authorized manual rebuild of a historical active merge remains a latent retry path. Do not call the refs retired. Confirm each rollback ref, then use a separate approved cleanup before removing the corresponding hot ref.

Incident record: on 2026-08-01, overbroad source `094af1096ed8721597561cd59bf695d4c4a9d210` was published by merge `40728ff6141e34a279b70cc41d983c22ac5f0daa` as deploy `6a6dc0167fbe68000816b448` after a release-blocker comment. Exact rollback merge `1099ee8e6fdb81141fd9460de175b6d854cbcfdd` published deploy `6a6dc219a8136300081811db`, restoring source `ed1b0833`, tree `878c6628d961f4484cb49208aef53f1e9f2e3b47`, 60 files, and digest `7570955c2a00926e5813aef135f1799172cfd046072ac89fb4e492bed0797092`. Safety merge `dee79511b6e371329aa129139729e112e7a51aad` re-paused the manifest; its Netlify attempt `6a6dc35767a4ef000877e74b` did not publish, and provider readback left the rollback deploy live. The overbroad release ref was deleted and verified absent. This incident changed no Firebase, outside-provider configuration, account, payment, or production data.

### Production approvals
Expand Down
Loading