Repository navigation
OBS-001A4 — Prove signup failure logs stay free of member data #146
Description
Officer impact: None — this adds regression proof for an existing fixed signup failure message and changes no member or officer task.
Officer documentation: None — no procedure, navigation, permission, collected field, deployment duty, or external account changes.
Deployment evidence: Closure must record source/tests/merge separately from website publication, exact runmprc.com, Firebase deployment, outside-provider configuration, and live behavior. This test-only outcome must not claim any production change.
Problem
Parent #111 requires synthetic canary proof for every covered monitoring/log sink. Merged #118 source ignores the caught signup error, emits one fixed failure phrase, and returns a generic error, but its tests exercise only successful signup create/preserve behavior. No test makes profile creation fail and inspects the signup Function's console arguments.
Invariant
The Auth signup trigger must never log a user, email, phone, token, provider response, request/body value, or caught error. Success emits no console message. Failure emits exactly the existing fixed phrase and returns only the existing generic internal error. A diagnostic test must not contact Firebase or any outside provider.
Atomic outcome
Add focused hostile-canary regression coverage for the merged signup log boundary. Make the mocked profile transaction reject with synthetic private values, invoke the exported trigger, inspect every console argument, and prove the result remains generic. Also prove a successful invocation emits no error log.
Exact implementation boundary
functions/ensureMemberProfile.test.jsonly
Excluded and immutable: functions/signup.js, functions/memberProfile.js, every other runtime file, frontend/Sentry/Analytics diagnostics, Stripe/webhooks, Strava/OAuth, Firestore Rules, root documents, officer guides, provider consoles, production data, and public/sitemap.xml.
Acceptance criteria
- A mocked profile-transaction failure contains synthetic email, phone/token, provider-response, request-body, and URL/capability canaries.
-
onSignUpfailure callsconsole.errorexactly once with onlyMember profile setup failed during account creation. - Serialized console arguments and the returned error code/message contain none of the canaries or caught-error details.
- The returned error remains the existing generic
internal/Failed to create member recordresponse. - A successful signup invocation produces no
console.errorcall. - Focused and complete Functions tests plus lint/diff checks pass on Node 20 using mocks only.
- Closure explicitly states that a source test and merge do not prove website publication,
runmprc.com, Firebase deployment, provider configuration, or production behavior.
Dependencies and coordination
- Parent: OBS-001A — Remove personal data and session replay from current monitoring and logs #111.
- AUTH-PROFILE-001 — Restore safe profile setup and editing after the Firebase cutover #118 is complete and released
functions/ensureMemberProfile.test.js; its runtime behavior is immutable here. - Read-only audit at exact
mainf2caaae3b3f25adfd4fc552008871408f18e5931found no open PR and no other open issue naming this test path. - DATA-001B — Inventory personal data and approve a minimization/retention matrix #110 remains the owner for any telemetry purpose, consent, retention, access, deletion, or re-enablement decision.
Claim protocol
Creation is not a claim. Before editing, assign the issue, add status:in-progress, post CLAIMED by <canonical agent> at <UTC>; branch <branch>, and re-read comments. Earliest valid claim wins.
Activity
daliu commentedon Jul 13, 2026
CLAIMED by Codex agent
/rootat 2026-07-13T11:18:06Z; branchcodex/issue-146-signup-log-test; exact basef2caaae3b3f25adfd4fc552008871408f18e5931.Ownership is test-only:
functions/ensureMemberProfile.test.js. No runtime or documentation file is claimed.functions/signup.js,functions/memberProfile.js, #145's frontend/Auth-mail paths, Sentry, Analytics, frontend diagnostics, Stripe/webhooks, Strava/OAuth, Rules, providers, production data, andpublic/sitemap.xmlare immutable/excluded.The pre-claim audit found no open PR and no other open issue naming the test path. Tests will use only the existing Firebase mocks and synthetic canaries. Any newer overlapping claim is a stop-and-coordinate condition.
daliu commentedon Jul 13, 2026
Implementation complete; claim retained for exact-head review.
e14fbf86b0efef830a528d86912dc532b4721789f2caaae3b3f25adfd4fc552008871408f18e59312ec3c40d2d4b3f77911ada9750e7731ad77e8811ee3d984a7970df3d9427745ffunctions/ensureMemberProfile.test.js; no runtime or documentation change.The test first proves success emits no error log. It then passes a hostile synthetic Auth user plus caught provider failure containing UID/name/email/phone/token/provider/request/URL canaries, and proves exactly one fixed console argument plus the existing generic returned error. Hosted CI and two independent exact-head reviews are running.
No website,
runmprc.com, Firebase deployment, provider configuration, production record, real account, or live behavior was changed or tested.test: cover every signup console level (#146)
daliu commentedon Jul 13, 2026
REVIEW BLOCKER RESOLVED — claim retained.
329b58808b8e09d0f284c2f6b7369920aa6afdc6f2caaae3b3f25adfd4fc552008871408f18e5931e3a40a405ffaa79d1cffdbfd336e27edeae20e986f8e2ea4f24fc16abce14ff6The first test version inspected only
console.error. The final test spiesdebug,error,info,log, andwarn; all five must be silent after success, failure permits exactly one one-argument fixederrorcall, every other level must remain empty, all captured calls are included in the canary scan, and every spy is restored infinally.Node 20 final local proof remains focused 20/20, complete Functions 160 passed / 1 existing emulator-only skip, Functions lint, and diff check. Fresh exact-head reviews and hosted CI are running. No runtime/documentation/provider/production scope changed.
test: prove signup logs redact private data (#146)
daliu commentedon Jul 13, 2026
Completed in PR #147 and merged to
mainas8d250073d8911d42031fa694c8c0e784911461b0.Acceptance evidence:
329b58808b8e09d0f284c2f6b7369920aa6afdc6f2caaae3b3f25adfd4fc552008871408f18e5931e3a40a405ffaa79d1cffdbfd336e27edeae20e986f8e2ea4f24fc16abce14ff6functions/ensureMemberProfile.test.js; signup/member-profile runtime is unchanged.console.error. The corrected exact head spiesdebug,error,info,log, andwarn; both independent exact-head re-reviews approved it.29246004213passed frontend, Functions, and Firestore Rules.29246166838passed frontend, Functions, and Firestore Rules.Deployment truth:
8d250073d8911d42031fa694c8c0e784911461b0.runmprc.comverified: no exact revision was checked live.Officer impact: None — member and officer tasks/screens are unchanged.
Officer documentation: None — no officer procedure, navigation, permission, collected field, deployment duty, or external account changed.