You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parent: #504. Connected release remains owned by #507.
Officer impact: In the preserved future My Account interface, a failed Reload after an uncertain profile-photo or finder-setting change will no longer replace the warning with a false assurance that nothing changed. The connected interface remains unavailable on production.
Officer documentation: Update SYSTEM_DESIGN.md, IMPLEMENTATION_PLAN.md, SECURITY.md, and the optional-directory one-sentence text alternative plus one no-terminal evidence-review procedure in docs/officers/EVENTS_SHOP_MEMBERS.md. The existing data-flow diagram does not change.
Deployment evidence: None at issue creation. This is source-only interface truth hardening. memberDirectoryAvailability.ts must remain byte-for-byte false; no Firebase, provider, account, sign-in, production-data, deployment, or live website action is authorized.
Atomic outcome
Preserve uncertain-change truth through failed profile reloads until one authoritative profile read succeeds.
Defect
An ordinary mutation failure or failed post-mutation readback correctly enters the fixed unknown-change state. If the person then chooses Reload settings and that read fails, the shared load effect currently changes the state to generic unavailable. The generic message says No setting was changed, even though the earlier visibility, upload, or removal may have committed.
Invariants and transitions
An ordinary visibility/upload/remove failure with unknown outcome enters the existing fixed could not confirm that change warning.
A mutation that resolves but whose authoritative readback fails enters the same unknown state.
After that uncertainty, each failed Reload settings within the same app and UID lifetime retains the uncertain-change warning. It must not display or imply No setting was changed.
Only a successful authoritative profile read clears uncertainty and displays the returned current photo/finder state.
Unknown and failed-reload states keep photo/finder mutation controls hidden, keep all prior draft bytes/data URLs discarded, and retain only Reload settings.
Reload creates no request ID and performs no visibility/upload/remove mutation or automatic retry.
Initial load failure and definitive-rejection readback failure remain generic unavailable states, but the generic load copy must not globally promise that no setting changed.
App change, UID change, and unmount reset the component lifetime; an older context's uncertainty or reload completion cannot change the new context.
only the optional-directory one-sentence text alternative and one separately named no-terminal 001I source-evidence procedure; no diagram change because data movement is unchanged.
Required tests
Capture trustworthy RED on the old runtime for a failed Reload replacing unknown truth.
Ordinary unknown mutation plus failed and repeated reloads retains the exact unknown warning and never renders No setting was changed.
Successful mutation plus failed authoritative readback follows the same failed/repeated reload behavior.
An eventual successful Reload clears uncertainty and shows the returned authoritative toggle/photo state.
Initial profile-load failure retains generic unavailable recovery without a false no-change promise.
Definitive mutation rejection whose confirming readback fails remains generic unavailable, not falsely elevated to known mutation uncertainty.
App and UID changes do not inherit the prior context's uncertainty; late old reloads are inert.
Every reload creates zero request IDs and zero visibility/upload/remove calls and restores no draft/data URL.
Default unavailable branch remains zero-context, zero-ID, and zero-call.
Existing profile, race, accessibility, photo-review, focus, privacy, and mobile tests remain green.
Explicit exclusions
Account wiring/tests/CSS, admin finder, client service adapters, and inbound WebP validation.
Functions, Rules, indexes, schemas, repair/backfill, packages, workflows, or release controls.
Assign the issue and post a timestamped CLAIMED marker naming the exact branch and released base before any edit. The claim remains active through reviewed merge, exact-main audit, closure, and explicit release.
Parent: #504. Connected release remains owned by #507.
Officer impact: In the preserved future My Account interface, a failed Reload after an uncertain profile-photo or finder-setting change will no longer replace the warning with a false assurance that nothing changed. The connected interface remains unavailable on production.
Officer documentation: Update
SYSTEM_DESIGN.md,IMPLEMENTATION_PLAN.md,SECURITY.md, and the optional-directory one-sentence text alternative plus one no-terminal evidence-review procedure indocs/officers/EVENTS_SHOP_MEMBERS.md. The existing data-flow diagram does not change.Deployment evidence: None at issue creation. This is source-only interface truth hardening.
memberDirectoryAvailability.tsmust remain byte-for-bytefalse; no Firebase, provider, account, sign-in, production-data, deployment, or live website action is authorized.Atomic outcome
Preserve uncertain-change truth through failed profile reloads until one authoritative profile read succeeds.
Defect
An ordinary mutation failure or failed post-mutation readback correctly enters the fixed unknown-change state. If the person then chooses Reload settings and that read fails, the shared load effect currently changes the state to generic unavailable. The generic message says No setting was changed, even though the earlier visibility, upload, or removal may have committed.
Invariants and transitions
false; the default branch remains inert and zero-context/zero-call.Exact ownership
src/pages/account/MemberDirectoryProfile.tsxsrc/pages/account/MemberDirectoryProfile.test.tsxSYSTEM_DESIGN.mdIMPLEMENTATION_PLAN.mdSECURITY.mddocs/officers/EVENTS_SHOP_MEMBERS.mdRequired tests
Explicit exclusions
Claim protocol
Assign the issue and post a timestamped
CLAIMEDmarker naming the exact branch and released base before any edit. The claim remains active through reviewed merge, exact-main audit, closure, and explicit release.