Repository navigation
WEB-002C — Publish the bounded inert member-directory interface preview #623
Description
Parent: #621. Related feature parent: #504. Backend/full release remains #507. Hosting parent: #460. Prior verified production: #473 / #617.
Officer impact: Publish only the honest disabled profile-photo/searchability and administrator-guarded People finder layouts. People cannot select/read/upload/remove/save a photo or choice. Officers cannot enter a name or receive a person/result. The backend remains unavailable.
Officer documentation: update the exact temporary-release procedure in docs/officers/PUBLISH_AND_CHECK.md, matching hosting/directory current-truth sections in root security/design/operations docs, and the existing officer directory procedure/status after publication and repause readback.
Deployment evidence: this issue owns one bounded Netlify web-only publication with exact provenance and rollback. Firebase Rules/indexes/Functions, DNS, outside-provider configuration, production sign-in/data, real names/photos, and connected behavior remain unchanged and excluded.
Outcome
Publish a production-safe, frontend-only directory interface from a frozen projection based directly on current live source 39ab8649df411262c8109a3c81a57bc38f1e168b, without publishing accumulated current main. Arm the existing one-shot exact-artifact Netlify gate, publish only after a verified pinned preview and exact-parent two-parent merge, verify signed-out production plus provenance, then repause the gate and retire temporary refs.
This is not a cherry-pick of #621. The live source predates #505/#506. The projection must re-express only the inert layout and guard behavior with no connected service/client/backend source.
Invariant
- The frozen Account layout is static and disabled. It reads no directory state/file, creates no directory request, and imports no directory service.
/admin/member-directoryremains inside the existingAdminGuard. Its empty name input and Search button are disabled; it renders no sample, fake, or real result.- A source-controlled browser flag is not authorization. This bounded artifact contains no connected directory branch at all.
- Production publication changes only Netlify website bytes/pointer. Firebase, providers, DNS, accounts, roles, records, and production data do not change.
- The exact live artifact remains atomically restorable as deploy
6a6dc9ea588b0c0008036312.
Exact frozen-source scope
Create a dedicated source ref from exact live source 39ab8649df411262c8109a3c81a57bc38f1e168b. Own only:
- new pure
src/pages/account/MemberDirectoryProfilePreview.tsxplus focused preview test and narrow-screen CSS; src/pages/account/Account.tsx: one import and one render insertion after the existing Profile section;- new pure
src/pages/admin/members/AdminMemberDirectory.tsxplus focused preview/guard test; src/App.jsx: one lazy import and/admin/member-directoryroute;src/pages/admin/AdminHome.tsxandsrc/pages/admin/members/AdminMembers.tsx: preview link/copy only.
No connected directory service, availability flip, #505/#506 module, Function, Rules, index, storage/schema, package/lock, environment, analytics, or provider source may enter the projection. Preserve every other live-source byte.
Exact release-control scope
From exact current main 019353361210021483f23003e09ee6924b78e67c, after re-reading current production and all claims:
- dedicated frozen source and rollback refs;
config/netlify-production-release.json: one canonical active manifest with unique release ID, exact expected first parent, pinned source ref/commit/tree, exact artifact count/digest, predecessor source39ab8649..., and rollback deploy6a6dc9ea...;tests/release-workflow.test.js: only exact manifest/release-policy expectations required for that one-shot release, then the matching repause expectations;- separately named WEB-002C current-truth/procedure hunks in
SECURITY.md,SYSTEM_DESIGN.md,IMPLEMENTATION_PLAN.md,OPERATIONS_RUNBOOK.md,OFFICER_START_HERE.md,docs/officers/README.md,docs/officers/PUBLISH_AND_CHECK.md, and the existing directory section indocs/officers/EVENTS_SHOP_MEMBERS.md; - Netlify automatic production attempt, public provider/readback evidence, then an exact
active:falserepause and temporary-ref retirement.
Active #616 owns functions/strava.js, functions/strava.test.js, and its separately named SECURITY OAUTH-001A2L row; preserve those byte-for-byte. #507 owns the later connected backend/full release and availability flip. Reusable Netlify/Firebase Hosting automation remains #133/#136/#460 work.
Required proof before publication
- Enumerated executable live-to-candidate diff contains only the exact frozen-source paths above.
- Focused tests prove every directory control is disabled/off/empty, no result appears,
AdminGuardremains, and no directory service/request symbol exists. - Full source-compatible frontend tests and diagnostic build pass.
- Synthetic local browser proof at desktop and 320 pixels shows no horizontal overflow, useful labels/descriptions, no enabled directory action, and no directory network request.
- Pinned preview marker matches control/source/tree/previous source/rollback/count/digest; headers and
noindexare correct. - Preview artifact contains the inert interface copy but no connected callable/service identifiers.
- Signed-out
/accountand/admin/member-directorypreserve login/admin boundaries; no production sign-in is permitted. - Exact rollback source/projection and a pre-reviewed repause are ready.
- Independent frontend, security/privacy, release-governance, and backup-officer reviews are GO.
Publication and verification
- Freeze unrelated
mainmerges after the active control candidate is finalized. - Merge the active release control with a two-parent merge commit only; never squash/rebase.
- Stop unless its first parent is the exact manifest parent and the Netlify production attempt uses that merge.
- Verify Netlify published the exact deploy and the public JSON marker matches every pinned field.
- Verify public routes/headers/robots/assets signed out at phone and desktop widths; never sign in or enter a name/file.
- Confirm the live artifact contains no connected directory service/callable identifiers and makes no public member-directory request.
- Confirm Firebase/deployments/providers/data are unchanged.
- Merge the reviewed repause, confirm its attempt is skipped/unpublished, re-read production, and retire temporary refs.
Stop conditions
Stop for any accumulated-main file, connected directory/service symbol, enabled control, saved-state implication, fake/result card, invalid/missing marker, hash/ref/tree/count/digest mismatch, main advance, missing rollback/repause, production sign-in, real name/photo/data, Firebase/provider/DNS action, unexpected Netlify publication, or broader control than the exact one-shot gate.
Migration and undo
No data or provider migration. If publication does not occur, leave 6a6dc9ea588b0c0008036312 live. If any live check fails, atomically restore that exact deploy, verify its #473 marker, and stop. If provider restore is unavailable, use only the reviewed exact Git rollback path; disabling the manifest alone is not rollback.
Acceptance criteria
- Frozen projection is exact, minimal, tested, and independently reviewed.
- Valid pinned preview and exact rollback/repause evidence exist before merge.
- Exact-parent two-parent release control publishes the pinned artifact.
- Public marker, routes, headers, assets, disabled-copy identifiers, and no-connected-symbol checks pass signed out.
- Firebase, outside providers, accounts, and production data remain unchanged.
- Repause is merged/read back and temporary refs are retired.
- Final evidence distinguishes source, tests, merge, website publication,
runmprc.com, Firebase, providers, production data, and connected behavior.
Activity
daliu commentedon Aug 13, 2026
CLAIMED by
/rootat2026-08-13T17:16:17Z.Two coordinated branches/bases, one bounded production outcome:
codex/netlify-source-623-member-directory-preview, exact live-source base39ab8649df411262c8109a3c81a57bc38f1e168b/ treed76b496cdc5e79015bc048cb961758abbe88b9ce.codex/issue-623-netlify-release, exact current-main base019353361210021483f23003e09ee6924b78e67c/ treee403c15f6588ea9ed4ecb5cb958b33ce4e6c4768.Exact frozen-source ownership:
src/pages/account/MemberDirectoryProfilePreview.tsxand focused test;src/assets/styles/memberDirectoryPreview.cssshared by both preview surfaces;src/pages/account/Account.tsx: import and one unconditional post-Profile render insertion only;AdminGuard-wrappedsrc/pages/admin/members/AdminMemberDirectory.tsxand focused guard/preview test;src/App.jsx: one lazy import and route;src/pages/admin/AdminHome.tsxandsrc/pages/admin/members/AdminMembers.tsx: preview link/current-truth copy only;src/App.test.jsx: minimum route-wiring expectation only if needed.Every other live-source byte is immutable. The projection contains no availability flag, connected attempt, directory client/service, request-ID creator, Function, Rules, index, schema/storage, environment, package/lock, provider, or data change.
Exact release-control ownership:
codex/netlify-source-623-rollbackpinned to current live source;config/netlify-production-release.json: one active WEB-002C — Publish the bounded inert member-directory interface preview #623 manifest, then exactactive:falserepause;tests/release-workflow.test.js: only exact WEB-002C — Publish the bounded inert member-directory interface preview #623 active/repause expectations;SECURITY.md,SYSTEM_DESIGN.md,IMPLEMENTATION_PLAN.md,OPERATIONS_RUNBOOK.md,OFFICER_START_HERE.md,docs/officers/README.md,docs/officers/PUBLISH_AND_CHECK.md, anddocs/officers/EVENTS_SHOP_MEMBERS.md; add only other historical WEB-002A — Publish bounded Shop and Events permissions containment #473-matching continuity path hunks if independent backup-officer review proves they are required before the active-control PR;Active #616's
functions/strava.js,functions/strava.test.js, and separately named SECURITY OAUTH-001A2L row are immutable. #504/#507 connected backend/privacy/authorization/staging/data scope is excluded. #460/#133/#136 reusable automation remains unresolved and is not claimed.Invariant: production may receive only the enumerated inert overlay built from exact live source, with controls disabled/off/empty and zero directory service/request symbols. Publication requires exact pinned source/tree/artifact/marker, a prepared rollback to deploy
6a6dc9ea588b0c0008036312, a pre-reviewed repause, four independent GO reviews, and an exact-parent two-parent release merge. No production sign-in, real name/photo, Firebase/provider/DNS/data action, or direct preview promotion is authorized.Officer impact: the exact disabled interface may become visible after protected sign-in, but no photo/name input or directory result becomes usable. Public verification remains signed out.
Officer documentation: the exact #623 temporary-release and directory current-truth sections named above.
Deployment evidence: none yet. Production remains exact #473 deploy
6a6dc9ea588b0c0008036312; Firebase, providers, accounts, and production data remain unchanged. Claim remains active through source/ref review, exact preview, release merge, production readback, repause, final-truth closure, and explicit release.daliu commentedon Aug 13, 2026
CLAIM REFINEMENT before edit: add one separately named current-truth comment hunk in
netlify.toml, confined to the existing[context.deploy-preview]comment immediately above the unchanged preview build command. The old comment says the temporary manifest is inactive; #623 must make that statement true while the one-shot manifest is active and again after repause. No Netlify command, context, ignore gate, header, redirect, build environment, script, workflow, or reusable automation behavior changes.tests/release-workflow.test.jsremains the already-claimed exact active/repause expectation surface.daliu commentedon Aug 13, 2026
FROZEN SOURCE CANDIDATE — exact live-based projection is independently reviewed and immutable.
39ab8649df411262c8109a3c81a57bc38f1e168b, treed76b496cdc5e79015bc048cb961758abbe88b9ce.94ce1845ed995e1569ed8d2e2b31361ed3229473, tree61d1ac38e1310fefe3e919ec379c402c269c6b0c, sole parent exact live source.8b23ef3804947819d4f7b87b8fbcde2e6e298dc38fb2ee44cea3038c2d8940a1.f54e04aad3ea37cb951bd21d27eba47c812c6770291f669213427a649310e24c.clientWidth == scrollWidth == 320), normal fixed-header clearance, AdminGuard behavior, and zero console errors. No production sign-in or real data.Rollback ref
codex/netlify-source-623-rollbackremains pinned to39ab8649...; current production remains deploy6a6dc9ea588b0c0008036312. No Firebase, Rules, Functions, provider, DNS, account, role, or data action occurred. The source ref must not merge to main. #623 claim remains active through control preview, exact-parent release, production readback, repause, ref retirement, closure, and explicit release.daliu commentedon Aug 13, 2026
FROZEN SOURCE SUPERSEDE / CONTRAST FIX
Independent release review found the People Finder link on the existing white Admin Members page used a light color intended for a dark surface. Nothing was published. The earlier frozen candidate
94ce1845/ tree61d1ac38/ digestf54e04aa…is superseded and must not be released.The corrected exact frozen source is now:
c2d87d1f69f15e128a0bc9b1b9f915b7c8417aec411aa6ec9a9459f5d923030533ffc7c007fe690839ab8649df411262c8109a3c81a57bc38f1e168b9bd54ca4bbe4a559725c6c72d6ab74cb53cafd144dcaab63dda50a3d23eff6e5d837272a1e5efc1575809e87f532276b38d1a63f1dd79ec1aef0533f6da8afb1The only delta from the superseded candidate is the inline People Finder link color/hover contrast plus its exact regression expectation. Focused frontend tests pass 8/8. A clean remote-fetch protected builder reproduced the new exact count/digest. The active control candidate has been refreshed everywhere to the new commit/tree/digest; its full Node 20 repository test set passes 105/105. The candidate remains under review and NOT PUBLISHED. Production remains deploy
6a6dc9ea588b0c0008036312; Firebase, provider configuration, sign-in, accounts, and production data are unchanged.daliu commentedon Aug 13, 2026
PINNED PREVIEW / EXACT-HEAD GO
PR #624 exact head
1fdb31f71fcaf01c33b5e57a4cd28fc473a4a737, tree41b6d024d369d93f28ea49940b4f4e5710d3ab52, sole parent/exact main019353361210021483f23003e09ee6924b78e67c. Exact 11-path control diff SHA-256f692b5501ada2acda6c9c71d9ca1b29e2d3418282b7472f004a74a4ee73ac7c6.Exact-head CI run
31728469418passed all five jobs. Pinned Netlify Deploy Preview6a7e05febf8fde00084cf9e0is ready athttps://deploy-preview-624--luminous-fox-7c393f.netlify.app, contextdeploy-preview, commit1fdb31f..., and did not deploy Netlify or edge Functions. Its marker is real JSON with no-store/nosniff/HSTS/noindex and exactly records releaseWEB-002C-MEMBER-DIRECTORY-PREVIEW-2026-08-13, issue 623, control1fdb31f..., sourcec2d87d1f..., tree411aa6ec..., previous source39ab8649..., rollback deploy6a6dc9ea..., 62 files, and digestd837272a....Signed-out
/,/shop,/shop/mprc-hat,/events,/events/calendar,/account,/admin/member-directory, and/robots.txtall return 200. Bundle readback contains the disabled photo/finder and “search is not connected” copy; connected service/callable and availability-flag symbols are absent. No production sign-in or real name/photo was used.Prepared repause head
d401daa409176dce0906c245adf3f20310cb513bhas sole parent1fdb31f...and only the three reviewed inactive-control files; exact diff SHA-256e89a6e115f55c9c3da4ce9c80fb48e5b640b70f5f8d8496fb69741e42a2d443e. Three independent repause reviews are GO; release tests pass 14/14; its production gate is confirmed paused.Final freeze readback: remote main remains exact
0193533...; release/source/repause/rollback refs match the reviewed SHAs; active #616 remains disjoint with no imminent merge marker. Production still remains #473 deploy6a6dc9ea.... No Firebase, Rules, Functions, indexes, provider configuration, accounts/sign-in, or production data action occurred. Candidate is GO for the exact two-parent merge; any mismatch still stops.daliu commentedon Aug 13, 2026
PRODUCTION PUBLICATION VERIFIED — REP AUSE NEXT
PR #624 merged with the required exact two-parent topology as
9d5cc8612b4321172370bd949d307e7e4ac0ec7d, tree41b6d024d369d93f28ea49940b4f4e5710d3ab52, parents in order[019353361210021483f23003e09ee6924b78e67c, 1fdb31f71fcaf01c33b5e57a4cd28fc473a4a737].Netlify production deploy
6a7e072f8f346b0008510d29isready, contextproduction, branchmain, commit9d5cc861..., published at2026-08-13T18:05:35.983Z. Provider site readback sayspublished_deploy.id == 6a7e072f8f346b0008510d29. Summary: one new file uploaded, one redirect and one header rule, no Netlify Functions, no edge Functions.Public marker is valid JSON and exact: release
WEB-002C-MEMBER-DIRECTORY-PREVIEW-2026-08-13, issue 623, control9d5cc861..., sourcec2d87d1f..., tree411aa6ec..., previous source39ab8649..., rollback deploy6a6dc9ea..., 62 files, digestd837272a.... Marker headers are HTTPS 200, no-store, JSON, nosniff, and HSTS. Public hashes: roota648de526d7d9118e9fe3dd48a3e3ad96303208985e572c9352e91849897f674; markerb74498854585346aa66c0341e29c829245445ce986806c3864cad526b267876f; main JSfce68a668400db70f99b941c46d34153b15877034bbbfbb294debb0796e53fd3; main CSScdeca3ce6f603f57e4628a3ccc81a80594d2ebd3327ab9a7c097af406e140344.Signed-out
/,/shop,/shop/mprc-hat,/events,/events/calendar,/account,/admin/member-directory, and/robots.txtare 200. Browser readback confirms both protected deep links render the normal Login guard; neither exposes the protected photo/finder layout while signed out. Live bundles contain the disabled photo/finder and “search is not connected” copy and contain none of the connected get/set/remove/search callable symbols or availability flag. No production sign-in, real name/photo, Firebase, Rules, Functions, indexes, provider configuration, account, or production-data action occurred.The release is live and bounded. PR #625 is the already three-review-approved immediate repause; merge only after its exact-head CI finishes green, then prove its production attempt remains unpublished and this deploy/marker remains live.
daliu commentedon Aug 13, 2026
FINAL-TRUTH CLAIM REFINEMENT after verified publication and repause, before editing: the original claim already owns the named final-truth hunks in the eight root/officer release and directory documents plus
tests/release-workflow.test.js. Independent current-truth review found four additional existing #473/current-live statements that would otherwise contradict the verified #623 production state. Add only these separately named current-truth hunks:README.mdcurrent production lines;docs/officers/ACCESS_CONTINUITY.mdcurrent public marker line;docs/officers/REQUEST_A_CHANGE.mdcurrent live bounded-release line; and the existing Netlify plus member-directory status/diagram/text-alternative sections indocs/officers/SYSTEM_MAPS.md. No other section/path is owned.Exact final truth: #624 merge
9d5cc861...published ready deploy6a7e072f8f346b0008510d29; #625 repause mergec8678c623afdd9becf77d596b71f36f26f04b746produced unpublished/error attempt6a7e081e73fdd60009f7ba57; provider and marker still name the verified deploy/control; manifest is inactive; one-shot release source is absent; rollback ref remains pinned to prior live source. Connected directory behavior, Firebase, Rules, Functions, indexes, providers, accounts/sign-in, and production data remain unchanged/not deployed. Active #616 files and named SECURITY OAUTH row remain immutable.daliu commentedon Aug 13, 2026
CLOSURE STATE CORRECTION: GitHub auto-closed #623 when PR #624 merged because the PR description mentioned closing after later gates. That close was premature. The issue is reopened while final-truth documentation and exact-main review/merge remain. Production publication and repause are verified, but the claim remains active until final truth lands, branches are cleaned up, and an explicit COMPLETE/CLOSED/CLAIM RELEASED marker is posted.
daliu commentedon Aug 13, 2026
COMPLETE / CLOSED / CLAIM RELEASED
WEB-002C is complete. The bounded inert member-directory interface is live, the one-shot production authority is inactive, the frozen release source is retired, and all #623 source/control/documentation claims are released.
Exact release evidence:
1fdb31f71fcaf01c33b5e57a4cd28fc473a4a737as exact two-parent merge9d5cc8612b4321172370bd949d307e7e4ac0ec7d.6a7e072f8f346b0008510d29is ready and published from exact frozen sourcec2d87d1f69f15e128a0bc9b1b9f915b7c8417aec, tree411aa6ec9a9459f5d923030533ffc7c007fe6908, 62 files, digestd837272a1e5efc1575809e87f532276b38d1a63f1dd79ec1aef0533f6da8afb1.c8678c623afdd9becf77d596b71f36f26f04b746; exact-main CI31729248865passed all five jobs. Attempt6a7e081e73fdd60009f7ba57published nothing and retained the verified deploy.8c7dcadd05ec6909333475258b0e7b6ed556f195, treeace2a98aaf33f3330658cc38e04dd14347ba1830, parentc8678c623afdd9becf77d596b71f36f26f04b746, and 13-path diff SHA-256e306c11e12d92a0514f2e6ada0860a82e23011c401bad3abb891c9e4ff6a151c. It merged as exact maind09ddb242cc9ec25578c11c6b8f078d10753abd5with parents[c8678c623afdd9becf77d596b71f36f26f04b746, 8c7dcadd05ec6909333475258b0e7b6ed556f195].31730857187and exact-main CI31731106781passed all five required jobs. Final main attempt6a7e0d55259aa40008c44187errored unpublished; provider readback still reports published deploy6a7e072f8f346b0008510d29and the exact WEB-002C — Publish the bounded inert member-directory interface preview #623 marker.codex/netlify-source-623-rollbackremains pinned to prior live source39ab8649df411262c8109a3c81a57bc38f1e168b.Officer impact: The profile-photo/searchability and officer People Finder layouts are visible only as a truthful inert preview after their normal guards. Their controls are disabled; no photo, preference, name, or result is read, accepted, sent, searched, or saved.
Officer documentation:
OFFICER_START_HERE.md,docs/officers/README.md,docs/officers/ACCESS_CONTINUITY.md,docs/officers/EVENTS_SHOP_MEMBERS.md,docs/officers/PUBLISH_AND_CHECK.md,docs/officers/REQUEST_A_CHANGE.md, anddocs/officers/SYSTEM_MAPS.mdnow record final verified truth.Deployment evidence: Website publication and repause are verified as above. No Firebase, Rules, Functions, indexes, provider configuration, account/sign-in, or production data changed. Connected behavior remains NOT AVAILABLE YET under #507. Active #616's two Strava files and named SECURITY row were preserved byte-for-byte.
daliu commentedon Aug 14, 2026
PRE-CLAIM coordination for #659 / WEB-002D. Current production is reverified as exact #623 deploy
6a7e072f8f346b0008510d29, control9d5cc8612b4321172370bd949d307e7e4ac0ec7d, sourcec2d87d1f69f15e128a0bc9b1b9f915b7c8417aec, tree411aa6ec9a9459f5d923030533ffc7c007fe6908, 62 files, digestd837272a1e5efc1575809e87f532276b38d1a63f1dd79ec1aef0533f6da8afb1.#659 will use that source as the sole parent of a six-path frozen accessibility projection, create a new rollback ref pinned to it, and use a separate active-control PR plus pre-reviewed repause. It will not mutate or merge the old #623 source, control, or repause refs; directly promote a preview; call a production CLI deploy/hook; or dispatch the Firebase/GitHub Pages workflow. The old deploy remains live unless and until an exact-parent two-parent control merge passes every marker/provider/browser check. Send STOP for a #623 provenance/rollback/control collision.