Measure unbound Terra users and watch corrected cohort sign-in
P2 db-terra-ca. Measurement completed 2026-10-06 and recorded in verified event: among 163 live active-grant Terra users, 108 unbound; seven TERRA-266 corrected, one other recorded correction (Quiroz), 100 without recorded Terra correction; exact stored-domain distribution and limits documented. Additional PM handoff from closed ENAMEL-73, spec event db-enamel-ca 2026-10-06 05:05:58Z: watch the eight corrected cátedra-listed profiles (TERRA-266 seven plus Quiroz) after a real Google retry. Current pre-retry state: eight live matching users with expected active Terra grants, zero bound; no post-correction retry evidenced. When cátedra reports retry/sign-in activity, read only the eight live users and relevant bind/sign-in events, report bound/unbound privately to PM and Enamel lane; record only aggregate counts and evidence limits on BWI, never addresses. Done for watch = a real post-correction retry is observed and its binding outcome is read back for all eight, or PM explicitly retires the watch with reason. No DB writes, no mail, no inference of binder failure from silence.
Activity
-
Read-only live census at 2026-10-06 05:05:36.261435Z on shared project: 163 nondeleted users with current active terra userGroups grant (grant nondeleted, fromAt<=now, toAt NULL/future, group active/nondeleted); 55 have supabaseAuthId, 108 NULL. TERRA-266 corrected cohort identified by the 7 distinct successful terra appEvents action=userEmailCorrected/resourceType=users at 2026-10-05 16:42-16:45Z, resourceId joined to users.id: all 7 live, entitled, unbound. Among the other 101 unbound, 1 has another recorded successful Terra email correction (Quiroz cohort) and 100 have NO RECORDED Terra correction event; absence of an event is not proof no historical manual edit. Stored canonical-email domains for all 108: consumer personal providers 98 (gmail.com 74, hotmail.com 20, yahoo.com.ar 3, outlook.com 1); academic institutional 4 (odontologia.uba.ar 3, um.edu.ar 1); other organization 2 (clinicabraverman.com 1, institutoferrari.com 1); internal/demo 4 (demo.local 3, enamel.internal 1). The 7 TERRA-266 corrected users all have gmail.com; the other corrected user also has a consumer-personal domain. Three of the 108 match currently open report session emails through public.canonicalizeEmail: 1732f5cb, e40c64e2, b4f72a1d. Vanhaster ceda0a10 has no users row, so PM initial four-of-108 arithmetic was off: 105 unbound entitled rows have no matching open report, including three isSynthetic=true demo rows. Domain is stored profile data, not proof of the address used for Google or of sign-in attempts; the 105 cannot be labeled a silent outage from this census alone. No individual email address recorded, no writes.
-
Done: timestamped read-only 108-user split, correction-event provenance, exact stored-domain distribution and inference limits recorded in verified event. Seven TERRA-266 corrected, one other recorded correction, 100 without recorded correction. Three of 108 match open reports; 105 do not. No mail or DB write.
-
PM handoff from closed ENAMEL-73 (pmmaster-evolutiva-cc-muw7q9942ki7): this row also owns the post-correction sign-in watch for the eight cátedra-listed profiles (TERRA-266 seven plus Quiroz). Last privacy-safe read on TERRA-271: 8/8 each had exactly one matching live users row and expected active Terra grant, 0/8 supabaseAuthId bound; seven had prior auth.users accounts at expected addresses, all prior to corrections, and one had no auth row yet. Latest Terra signInCompleted 2026-10-04 17:20:31Z; no post-correction retry evidenced. On cátedra retry, recheck the eight and report bound/unbound privately; do not infer binder failure from no traffic or put addresses on BWI. This watch is separate from ENAMEL-73 withdrawal correctness.
-
Measure unbound Terra users and watch corrected cohort sign-in
-
was: Read-only census of the 108 live, currently entitled Terra users with users.supabaseAuthId NULL (163 active Terra users minus 55 bound as measured 2026-10-06). Determine exactly how many belong to the seven-profile TERRA-266 corrected cohort versus never corrected, and the stored-email domain distribution: institutional versus personal, with exact domain counts as needed to make the classification reproducible. Done = record timestamped counts, cohort matching method, domain classification, and limits on inferring login behavior or actual Google address; no individual addresses in the row, no mail or DB writes. This is separate from the four access reports and their held reply drafts.
-
Census complete; eight-profile post-correction bind watch awaits real Google sign-in/retry activity from cátedra cohort. Last known 0/8 bound and no signInCompleted since 2026-10-04 17:20:31Z. Recheck on retry signal; no polling or inferred failure from silence.
-
Measured by support-evolutiva-cc 2026-10-06 from terra appEvents, action=signInCompleted, all time. This is the discriminating read pmmaster-evolutiva-cc asked for and it replaces the inference with a count. OUTCOME x bindOutcome census (6 combinations, all time): authorized/bound 51 rows, 51 distinct users, 2026-07-30 23:21 -> 2026-10-02 11:41 noProfile/noMatch 36 rows, 2026-07-30 10:02 -> 2026-10-01 23:17 authorized/(null) 28 rows, 5 distinct users, -> 2026-10-04 17:20 (already-bound users re-signing in; no bind needed) exchangeFailed 3, providerFailed 2, lookupFailed 1 (all <= 2026-08-16) ANSWER: people DID hit the wall silently - 36 noProfile/noMatch sign-ins - so 'the 105 simply have not tried' is false. But it is entirely HISTORICAL: the last wall-hit is 2026-10-01 23:17:17, which predates every email correction (2026-10-03 17:56 and 2026-10-05 16:42). Nobody has hit it since, and nobody has signed in at all since 2026-10-04 17:20. So there is nothing live to fix and no cohort investigation is warranted - the corrections have simply not been exercised. BOUND, not a headcount: actorUserId and detail.userId are both NULL on every noProfile row - by design, since no profile matched - so 36 is ATTEMPTS, not people, and the real figure is lower. This is the same identity gap TERRA-262 records on the login:no-profile rail. Of however many humans those 36 attempts represent, exactly FOUR filed an access-issue report. That is the reporting rate, and it is the argument for the repair surface rather than for outreach.
-
Read-only all-time terra appEvents signInCompleted outcome census at 2026-10-06 05:08:07Z. Total 121 events: 51 outcome=authorized/bindOutcome=bound (51 distinct actorUserIds); 70 not that pair, split as 36 noProfile/noMatch, 28 authorized/bindOutcome NULL (5 distinct actorUserIds; not classified as failure), 3 exchangeFailed, 2 providerFailed, 1 lookupFailed. The 36 noMatch events span 2026-07-30 10:02:37Z to 2026-10-01 23:17:17Z; 32 carry detail.authUserId representing 18 distinct GoTrue auth accounts, 4 early events have no authUserId. On Oct 1 alone: 25 noMatch events across 14 distinct auth accounts. Of the 18 all-time identified noMatch accounts, 5 have any live Terra accessIssueReport and 13 have no live report; 10 of those 13 had Oct 1 noMatch. Thus failure-to-match is observed outside the four open reports. The rail does NOT link unmatched auth accounts to the 105 currently unbound entitled users, so their membership in that 105 and actual Google/stored-email mismatch remain unproven. Latest noMatch is Oct 1, before Oct 5 corrections; no post-correction retry is evidenced. No individual IDs or addresses recorded; no writes.
-
Canonical email comparison guard for future readers: my initial raw lower(emailCanonical)=lower(sessionEmail) comparison falsely flagged De La Peña because Gmail dots are normalized. Rechecking with the LIVE public.canonicalizeEmail(sessionEmail) matched all three repaired profiles. Read-only fixture probe: a.b@gmail.com and ab@gmail.com canonicalize to the same key; a.b@example.com and ab@example.com remain distinct. Do not strip dots on non-Gmail domains; that would collapse two real mailboxes. No actual user address recorded here.
-
Census and signInCompleted read complete: 36 noProfile/noMatch events, 18 identifiable auth accounts, 13 without a live Terra access report; their relation to the 105 unbound entitled rows is unproven. Eight corrected-profile bind watch awaits real Google retries. PM has the result for any next triage; do not infer failure from post-correction silence or poll.
-
CORRECTION TO MY OWN NOTE ABOVE, twice, 2026-10-06. Both corrections narrow what I claimed and one of them cancels a proposed build. 1. 'Nothing live to fix / entirely historical' was WRONG and pmmaster-evolutiva-cc is right to refuse it. The last wall-hit predating every correction does not mean the population was covered - it means nobody has signed in since, which is the same absence of traffic that makes the corrections unexercised. Coverage cannot be read off a quiet rail. Correct status: coverage UNDETERMINED. 2. 'The human count is unknowable from here' was ALSO wrong, and wrong the same way my other errors tonight were - I checked actorUserId and detail.userId, found them NULL, and declared identity absent without checking the rest of the payload. detail.authUserId IS populated on noProfile/noMatch rows and has been since 2026-09-03: 32 of the 36 rows carry it (only the 4 oldest, 2026-07-30..2026-08-14, do not), giving 18 DISTINCT auth uids all time - 14 of them on 2026-10-01 alone. WHAT THAT MEASURES, and it is the figure that was called unmeasurable: 18 distinct Google accounts hit the no-profile wall; 8 profiles have been corrected. So on the order of 10 accounts' worth of exposure remains, pending the exact overlap - which needs a users-table join (these are auth uids, the 8 are users.id) and is db-terra-ca's read, aggregate only. BOUND: a distinct auth uid is a distinct Google ACCOUNT, not a distinct human. One person with two Google accounts produces two uids, which is exactly the open pattern on mars request 59. So 18 accounts, no more than 18 people. CONSEQUENCE for the proposed p1: 'record the server-resolved identity on a noProfile outcome' is ALREADY BUILT and has been logging since 2026-09-03. The field is detail.authUserId, server-resolved from the verified session, no caller-supplied address stored. What was missing was my query, not the telemetry. Do not build it twice; if anything is wanted there it is backfill-free documentation of the field.
-
Read-only TERRA-266 seven-profile PRE-correction domain check from shared public.userEmails history. Cohort anchored to seven distinct successful terra userEmailCorrected appEvents at 2026-10-05 16:42-16:45Z; each user has exactly one closed prior userEmails row and one current row (14 rows total), with prior toAt matching the correction window. Domain transitions: 5 hotmail.com -> gmail.com, 2 gmail.com -> gmail.com; ZERO institutional-domain preimages. This refutes a domain-shaped institutional-to-personal mechanism for TERRA-266; the corrected seven are consumer-to-consumer mismatches, including two within Gmail. Current stored-domain census cannot rule out the same mismatch among the 90 no-recorded-correction consumer-domain unbound users. Stored domain still does not reveal actual Google account or attempted sign-in; no individual addresses on row, no writes.
-
Provenance clarification per PM archive-specific request: the seven TERRA-266 pre-correction domain aggregate (5 hotmail.com->gmail.com, 2 gmail.com->gmail.com) was read from closed public.userEmails temporal-history rows, NOT a generic users archive. Live catalog has no usersArchive relation and no users archive trigger. Historical prior values exist in userEmails, but whether that mutable history satisfies identity-mutation archive policy is assigned to Enamel DB lane as ENAMEL-77; do not cite this event as generic archive proof. No addresses recorded or writes.
-
Read-only exact overlap for historical noProfile/noMatch auth accounts at 2026-10-06, aggregate only. From 36 noMatch signInCompleted events, 32 carry detail.authUserId -> 18 distinct auth.users rows. Join auth.users.email through public.canonicalizeEmail to current live users.emailCanonical; the eight corrected profiles are identified by their eight successful Terra userEmailCorrected events 2026-10-03..10-05. Result: all 8 corrected profiles match 8 of the 18 historical noMatch auth accounts; among the other 10 accounts, 3 now match other live Terra-granted user profiles and 7 still have no live canonical users match. Thus exact overlap is 8, not an inferred 8; current matching state is 11/18 with live Terra profiles, 7/18 unmatched. This DOES NOT show a successful post-correction bind or a distinct-human count; last noMatch Oct 1 and no sign-in after Oct 4 remain the exercise limits. No auth ids or addresses on row, no writes.
-
2026-10-06 cutoff read, mine, independent of db-terra-ca's and agreeing with it. signInCompleted outcome in (noProfile,noMatch), split at 2026-08-22 (b235a4f): pre-cutoff 4 rows, 0 with authUserId, 0 distinct, 2026-07-30 10:02:37 .. 2026-08-14 07:12:44 - permanently unattributable, do not fold into any count. post-cutoff 32 rows, 32 with authUserId, 18 DISTINCT, 2026-09-03 09:45:43 .. 2026-10-01 23:17:17. Rows MISSING the uid after the cutoff: ZERO. That zero is the part worth keeping: coder-terra-cc's claim that the uid is written on every outcome carrying a session is now measured, not asserted - 32 of 32, no exceptions. By day: 09-03 1 row/1 uid, 09-09 4/2, 09-11 2/1, 10-01 25 rows/14 uids. Combined with db-terra-ca's canonical join, the 18 accounts resolve 8/3/7: 8 are the corrected profiles (TERRA-266 seven + Quiroz), 3 now match a live Terra-granted profile they did not match at the time, 7 have no live profile at all. So the NAME-MATCH review queue is SEVEN, not thirteen. Reporting status does not partition this - profile existence does. The 3 that already match need no matching at all; they need an explanation, because their stored address is now correct and they still hit the wall, which is either purely historical for them or a difference between the callback's match predicate and a canonical-email join. Worth one read before it is assumed to be the former. And the 7 with no profile are Vanhaster's shape, not the correction shape: for them a name match onto an unbound entitled profile and 'not enrolled at all' are indistinguishable from the rail, and only the first would justify touching an address. Enrolment confirmation comes first - the same cátedra dependency as TERRA-261 - so the queue cannot be worked by matching alone. Coverage statement: 18 distinct GoTrue accounts (not humans - one person may hold two) hit the wall in the attributable window; 8 corrected; 10 not; zero post-correction bind successes observed, because no sign-in of any kind has occurred since 2026-10-04 17:20Z. NOT historical. The pre-cutoff 4 are outside every one of these numbers.
-
Read-only private candidate worklist completed per PM request. Source: 13 historical Terra noProfile/noMatch GoTrue auth accounts with no live Terra accessIssueReport; all 13 have Google provider identity_data.name. Target: 105 current live, unbound, active-grant Terra profiles without an open report. Case/accent/punctuation-normalized name token comparison (>=2 shared tokens) produced 7 one-to-one candidate pairs: 5 are already in the eight-profile corrected cohort AND currently match canonically, needing only a real retry; 2 are uncorrected name-only candidates with current canonical mismatch, requiring independent enrolment confirmation before any repair. The remaining 6 auth accounts had no >=2-token profile candidate in that target set. No candidate is an identity decision; no automatic fn_correctUserEmail call or outreach is authorized. Exact names and identifiers were sent ONLY by private DM to support-evolutiva-cc, tag db-terra-ca-muw84u0aah4o. No names, addresses, or auth/profile IDs are on this row; no DB writes.
-
Read-only follow-up on the three historical noMatch auth accounts that now match other live Terra profiles (outside eight Oct corrected profiles). All THREE current users.supabaseAuthId values equal the same GoTrue auth IDs that logged noMatch, and each has a later successful Terra supabaseAuthIdBound event: one noMatch Sep 3 -> bound Sep 8, two noMatch Sep 9 -> bound Sep 10. For the Sep 9 pair, current userEmails.fromAt is after the failed attempt, consistent with a later address change. For the Sep 3 case, current email-history fromAt and Terra grant both predate the noMatch; its historical failure cause is not established by these rows, though the same auth ID later bound. Therefore these three are not currently unmatched and do not establish a current callback-predicate divergence. No names/addresses/IDs on row, no writes.
-
Callback predicate checked against live shared DB (read-only, 2026-10-06): src/app/auth/callback/route.ts first resolves vUsersAdmin by supabaseAuthId; on a miss it passes the Google session user.email and user.id to bindSupabaseAuthId(email, authId, appKey=terra). Live bindSupabaseAuthId canonicalizes emailArg with public.canonicalizeEmail and matches live nonsynthetic/nondeleted users.emailCanonical. Live users.emailCanonical is STORED GENERATED canonicalizeEmail(email); vUsersAdmin excludes deleted/synthetic too. The callback and DB use the SAME canonical-email predicate for first bind; no raw-email or different normalization predicate found. Gmail/googlemail dots and plus tags normalize; non-Gmail dots stay significant. The three historical noMatch auth IDs are each currently bound to the same live profile after later success, so they do not demonstrate a current predicate divergence. Sep-9 pair may reflect later address changes; Sep-3 failure remains historically unexplained because current email-history and grant predate it. Historical 4 pre-cutoff noMatch rows lack authUserId and remain excluded from the 18-account count; 32/32 post-cutoff rows carry it. Seven currently unmatched auth accounts remain human enrolment-review cases; do not produce or use name-match queue for correction before per-case catedra confirmation. No DML.
-
Read-only surname follow-up requested by support (2026-10-06), aggregate only. Reproduced original 13 historical noProfile/noMatch GoTrue accounts without a live access report versus 105 live unbound Terra-granted profiles: 7 accounts had >=2 normalized shared name tokens, 6 did not. Rechecked the six against ALL 160 live nonsynthetic Terra-granted profiles (55 currently auth-bound), including profiles with open reports. For surname-only matching, normalized Google display-name final token was compared to normalized profile apellido tokens. Five of six accounts had a surname hit (7 account-profile pairs), one had none. Crucial partition: THREE of the six are ALREADY bound to their own Terra profile by exact supabaseAuthId, consistent with historical noMatch followed by success; they require no candidate repair. Of the other THREE, TWO had one surname-only hit each on a profile bound to a DIFFERENT auth ID; one had no surname hit. No unbound-profile or open-report-profile surname hit among those three. A shared surname is weak candidate evidence and does not establish a second Google account, one human, or enrolment; no email change, outreach, or queue action. The five prior canonical-current unbound matches need only a real sign-in retry, with mail gated by Elazar. Two earlier two-token name candidates and these new surname-only hits remain held for per-case catedra enrolment confirmation. Four pre-cutoff noMatch rows lack authUserId and are excluded from all account counts. No PII or writes.
-
CHRONOLOGY CORRECTION to my own note above, from db-terra-ca 2026-10-06. I wrote that the EARLIEST correction in the eight-profile cohort is 2026-10-05 16:42Z. Wrong by two days: Quiroz was corrected 2026-10-03 17:56Z, and only the SEVEN TERRA-266 profiles landed 2026-10-05 16:42-43Z. The conclusion is unaffected - the last noMatch anywhere is 2026-10-01 23:17Z, which still predates all eight - but the boundary I quoted was the wrong one and a two-day error in the direction of a wider gap is exactly the kind that makes a conclusion look safer than its evidence. Also corrected, same source: the three current-match accounts reached their bound state by their OWN later binds (Sep 8 and Sep 10, after their Sep 3 and Sep 9 noMatch), NOT by the October cohort corrections. I had implied the corrections explained them. Their success is self-evidenced and predates the cohort work entirely. Unchanged and still the open risk: zero sign-ins of any kind since 2026-10-04 17:20Z, so all eight post-correction retries remain unexercised.
-
Narrow Sep-3 historical noMatch coverage check, read-only, aggregate/no address. Failed Terra signInCompleted noProfile/noMatch at 2026-09-03 09:45:42Z; the now-bound users row and Terra grant were created/valid from 2026-08-05 19:07:08Z, before failure. userEmails has exactly ONE row for that user; its fromAt is backdated to 2026-08-05, but its actual createdAt is 2026-09-11 11:25:49Z, EIGHT DAYS AFTER the failed sign-in. It currently covers the Sep-3 timestamp and its address canonicalizes equal to the auth account current address, but because the temporal row was written after the failure, it does NOT independently prove the profile address or Google session email at failure time. No pre-Sep-3 userEmails write witness exists. Thus Sep-3 noMatch cause remains unresolved, even though same auth ID later bound successfully; neither a callback predicate divergence nor a code change is established. No DML or PII on row.
-
Partition reconciliation, read-only aggregate: the THREE two-token/surname-pass misses now bound to their own exact auth-ID profiles are exactly the SAME THREE accounts in the earlier 18-account canonical-overlap bucket of other current Terra matches. Direct auth-ID set intersection=3, both set differences=0. Thus original 18=8 corrected-current-match +3 other-current-match +7 currently unmatched remains valid; surname pass did not create a separate three-account bucket. Four pre-cutoff uid-less events remain excluded. No PII or writes.
-
Two other-bound surname cases, read-only aggregate/no addresses or names. Both target profiles are bound to a different GoTrue auth ID whose CURRENT canonical email matches the profile stored canonical email; neither failed auth account email matches its target profile. Case A: failed and bound accounts have same normalized email local part across DIFFERENT domains, but their Google display names share ZERO normalized tokens, a conflicting identity signal. Case B: same domain, different normalized local parts; Google display names share TWO tokens; failed display name equals profile full name, bound display name does not equal full profile name. Both bound auth IDs have Google identities/names. These are plausible second-account review signals, but neither address shape proves same human and neither establishes misbinding. No human-count decrement, account instruction, email mutation, or repair without per-case enrolment/identity confirmation. Two earlier two-token unbound candidates likewise remain held. No PII on row; no DML.
-
Sep-1 correction cross-check, read-only IDs-only comparison: exactly one successful userEmailCorrected appEvent on 2026-09-01, recorded with appKey=enamel; its resourceId does NOT equal the live users.id now bound to the 2026-09-03 Terra noMatch auth account (intersection 0/1). Thus that correction is unrelated and cannot explain or demonstrate a failed repair of the Sep-3 case. Sep-3 user/grant predated failure, but the sole userEmails history row was created Sep-11 with backdated fromAt Aug-05; actual Sep-3 stored address remains unwitnessed by that history. Cause unresolved. No names, addresses, IDs, or writes.
-
userEmails creation-time census (read-only, aggregate): 162 rows for 159 users were ACTUALLY created on 2026-09-11; all 162 have fromAt more than one day before createdAt (range 2026-07-30..2026-09-10), demonstrating a backfill. Later rows: Sep-22 1, Sep-28 3, Oct-03 1, Oct-05 7, each created contemporaneously with fromAt. Thus pre-Sep-11 fromAt is retrospective validity assertion, not a contemporaneous write witness. For the TWO Sep-9 noMatch accounts now bound: 4 userEmails rows total, ALL actually created Sep-11, NONE written by failed sign-in; both have a backfilled interval covering failure whose canonical email differs from their auth account CURRENT address, and both current intervals start after failure. This is consistent with a historical address change but does NOT independently prove one occurred before binding or caused noMatch; retract earlier phrasing that later fromAt alone evidenced a change. Sep-3 cause remains unresolved. No addresses/IDs or DML.
-
Historical-cause disposition after 2026-09-11 userEmails backfill census: REOPEN/UNKNOWN the causes of BOTH Sep-9 noMatch events previously explained by later current fromAt. All four rows for those two users were actually written Sep-11 after their failures; retrospective intervals cannot establish the address at sign-in or a change causing the miss. Sep-3 cause also UNKNOWN. This does NOT reopen their current access state: the same auth IDs later bound successfully Sep-8/10. No pre-Sep-11 userEmails write witness exists for anyone in the table; ENAMEL-77/76 owner notified of best-effort corroboration limit. No addresses or writes.
-
BACKFILL CONFIRMED, and it retracts an explanation this row was closed on. db-terra-ca measured userEmails.createdAt 2026-10-06: 162 rows written on 2026-09-11 covering 159 users, EVERY one carrying a fromAt more than a day earlier (range 2026-07-30..2026-09-10). Only the later rows are a real trail - Sep-22 one, Sep-28 three, Oct-03 one, Oct-05 seven - and those have contemporaneous fromAt, which is what makes the eight-profile correction cohort (Quiroz Oct-03 17:56Z, the TERRA-266 seven Oct-05 16:42-43Z) trustworthy as records. WHAT RETRACTS: 'the Sep-9 pair's email history starts after their failed attempts, which explains their noMatch' was an inference from RETROSPECTIVE validity, not a contemporaneous witness. All four of their history rows were written 2026-09-11, two days after the failure; zero existed when it happened. db-terra-ca asked for this retraction on their own phrasing and it is recorded here as such. What still stands independently is their RESOLUTION: the same auth ids bound successfully on 2026-09-10, which is self-evidencing. WHAT THIS DOES NOT SETTLE, and it is the next question rather than a conclusion: the backfill wrote CLOSED intervals carrying a different address and covering the failure window, so whoever ran it had access to some prior value. If the migration derived those intervals from a real pre-existing record, they are admissible second-hand evidence about the pre-failure address; if it synthesised them, they carry nothing. That is a property of the migration, not of the rows, and it is not readable from this repo - userEmails is an enamel object and the enamel migration tree is not checked out here. Asked of db-enamel-ca. GENERAL BOUND for anything built on this table: no address history before 2026-09-11 is a contemporaneous record. Any claim of the form 'their address changed at T' for T before that date is a claim about a backfill's reconstruction. This also weakens userEmails as corroboration in the ENAMEL-76/77 ruling - a limit to state in the artifact, not a reversal.
-
Support priority refinement, no identity conclusion: among the two different-bound-auth-ID surname review signals, one has failed Google display name exactly matching the profile full name while the currently bound Google display name does not. This makes possible misbinding the FIRST per-case enrolment/identity verification slot; do not default to a second-account instruction, email mutation, or exposure claim. At that verification, measure whether the profile holds Terra practica or paciente rows to determine potential exposure severity, without publishing patient/practica identifiers. The other signal remains a lower-priority candidate. Both are unverified; measured distinct-auth-account count stays 18, no human-count decrement. No writes.
-
Backfill provenance refinement after reading enamel_048 §2a/§2b source: the 2026-09-11 live createdAt cluster of 162 rows is explicitly 159 open userEmails rows backfilled from then-current users.email plus THREE closed prior-address rows reconstructed from named external evidence. TWO of the three reconstructed rows are the Sep-9 noMatch pair (TERRA-210), documented as hand-corrected Sep-10 in source; the third is the Sep-1 TERRA-104 correction. The migration says prior values were absent from the DB at seed time; source cites external records and the Sep-10 users.updatedAt/bind-event timestamp agreement, not a contemporaneous userEmails write. Therefore live userEmails.createdAt alone cannot close the Sep-9 cause; their historical reconstruction has separate provenance that must be assessed before labeling the cause proven. Current bound state is independently witnessed by Sep-10 bind events. No addresses/IDs or DB writes.
-
Case B priority read-only measurement, aggregate/no addresses. Live profile is bound to a different Google auth ID than the historical failed one. Bound auth email canonical equals stored profile email; its local-part structure spells profile first name + middle initials + surname, and bound Google display name is first name + surname (middle name omitted). Failed auth email local part spells surname + first + middle name plus digits; failed Google display name equals full profile name. Both accounts therefore have STRONG SAME-PERSON name/address-shape signals; omission of middle name from bound display name is not contrary-person evidence. This favors second account over misbinding but does NOT prove common ownership; no unbind, instruction, or human-count decrement without per-case identity confirmation. Exposure-linked row census for this profile: terraPracticas created live/all 0/0; live practice participation 0; distinct pacientes on linked live practices 0; Terra pacientes created live/all 0/0. Counts cover profile-linked rows, not every record a signed-in role may read. No clinical identifiers or DB writes.
-
Naming correction to prevent opposite dispositions under Case A: GATE EXAMPLE = the Galván-type surname cross-pair, two distinct people each already correctly bound to their own auth ID; closed as a demonstrated reason surname alone cannot authorize repair, NOT a review candidate. CASE A = different historical failed auth account whose bound-profile match has identical normalized email local part across domains but ZERO shared Google display-name tokens; conflicting identity signals, OPEN for per-case verification. CASE B = different historical failed auth account whose full Google display name matches profile; bound account omits middle name but both email/name shapes strongly suggest same person; OPEN, first verification slot; 0 profile-linked live/historical practica/paciente rows measured. Neither A nor B authorizes account instruction, unbind, correction, or human-count decrement. Both await independent identity/enrolment confirmation. No PII on row or writes.
-
Precise pre-2026-09-11 history limit after enamel_048 source review: userEmails has NO contemporaneous write witness before its Sep-11 creation/backfill. Of 162 rows created Sep-11, 159 open rows were seeded from then-current users.email and provide no transition history; THREE closed rows were reconstructed from named external records, not synthesized from current email. TWO reconstructed rows pertain to the Sep-9 noMatch pair and have external TERRA-210 provenance plus source-cited users.updatedAt/bind timestamp corroboration, pending independent assessment. The Sep-3 account has only one open backfilled row and no reconstructed prior-address row/citation in enamel_048, so within this history rail it remains evidence-free for the failed sign-in. Do not phrase the limit as no pre-Sep-11 address information exists anywhere; external records exist for the three reconstructed cases. No PII or writes.
-
SEP-9 CAUSE IS MEASURED, NOT UNKNOWN - and three lanes including me concluded 'unexplained' because we were all reading one table. The evidence sits in the file enamel_048 itself cites: terra/agents/db-terra/evidence/2026-09-10-terra_210-galvan-bindings.result.md, in the support checkout, readable without any credential. CONTEMPORANEOUS, on the AUTH side: both accounts carry email_confirmed_at 2026-09-09 22:25:48Z and 22:29:50Z with the auth-side email already equal to their gmail, and vUsersAccountState.lastSignInAt 2026-09-09 22:27:08Z and 22:30:31Z - which that file explicitly flags as Supabase-side authentication predating the bind and NOT an app sign-in. The pre-write read taken 2026-09-10 shows users.email still holding an outlook and a hotmail address, supabaseAuthId NULL on both, and no other users row holding either gmail as email or emailCanonical. So both people authenticated at gmail addresses while their profiles stored different-domain addresses: canonical mismatch, noMatch, exactly as the sub-first/canonical-email predicate specifies. NO DEFECT, and the bind correctly refused to guess. The Sep-10-versus-Sep-9 objection closes on the same read: the stored value was STILL the old address when the pre-write read was taken, so there is no intervening correction that could have changed it between the failure and that read. WHAT STANDS AND WHAT DOES NOT: the retraction about userEmails stands - it is not the witness for anything before 2026-09-11, and its three closed rows are reconstructions whose weight is their cited source's. What was wrong was treating 'no witness in userEmails' as 'no evidence anywhere'. The cause is established from auth.users plus a pre-write read, neither of which is that table. IDENTIFICATION: the Sep-9 pair and the GATE EXAMPLE are the same two accounts - the Galvan Padilla cross-pair, two distinct people sharing both surnames, each now correctly bound to their own profile. The pre-write read is also what makes that pair reversible, since it records both overwritten addresses. STILL UNEXPLAINED, and now the only one: the Sep-3 account. Its sole userEmails row is an open row seeded from then-current email with no reconstruction and no external citation, and no equivalent pre-write evidence file exists for it.
-
Historical-cause correction after direct review of contemporaneous TERRA-210 evidence/2026-09-10-terra_210-galvan-bindings.result.md (operator record, 2026-09-10): BOTH Sep-9 noMatch GoTrue accounts had auth.users confirmed at their Gmail addresses and Supabase-side sign-ins Sep-9 22:27/22:30Z; before Sep-10 writes, their live users.email rows still held DIFFERENT-domain addresses, were unbound, and no other users row held those Gmail addresses/auth IDs. The Sep-10 per-user transaction changed users.email to the Google address and called bindSupabaseAuthId with explicit bound-outcome assertion; both later bind events and current same-auth-ID state corroborate success. Thus canonical email mismatch explains BOTH Sep-9 noMatch events; close their historical cause as explained by contemporary auth-side and pre-write user-side reads, NOT by userEmails.fromAt. userEmails Sep-11 closed rows are second-hand reconstruction from that report. Sep-3 noMatch cause remains UNKNOWN: only an open Sep-11 backfilled row, no corresponding reconstructed preimage/source in enamel_048. The 18-distinct-auth-account measurement, 8/3/7 current profile partition, and four pre-cutoff uid-less exclusion remain unchanged. No addresses/IDs or DB writes.
-
AMENDMENT, the discriminator that makes the Sep-9 close airtight, and it comes from db-terra-ca's own migration read rather than mine: enamel_048 cites users.updatedAt for the TERRA-210 pair as matching the Sep-10 supabaseAuthIdBound event timestamp TO THE MICROSECOND. Since updatedAt carries the LAST write to the row, the last write before 2026-09-11 was the Sep-10 hand correction itself. So no write touched either row between the 2026-09-09 22:27/22:30Z authentications and the 2026-09-10 pre-write read - the stored address at failure was the address that read recorded. That converts 'no intervening correction exists' from my inference into a measurement, and it closes the only gap in the Sep-9 cause. Status of the three historical noMatch accounts, final as of this read: the Sep-9 PAIR (= the GATE EXAMPLE, the Galvan Padilla cross-pair) are EXPLAINED - authenticated at gmail addresses while their profiles stored outlook and hotmail addresses, canonical mismatch, predicate behaving as specified. The SEP-3 account remains the only unexplained failure and the only one with no reconstructed row, no external citation and no pre-write evidence file. One item from that evidence file worth carrying forward separately, because it is a standing caveat and not a historical note: it records that neither Galvan user had been OBSERVED completing a sign-in after the bind, and warns against reporting 'they can log in' until an outcome='authorized' row exists for them. That caveat was written 2026-09-10 and the same unexercised-path condition is still true of the whole eight-profile October cohort today.
-
PM-accepted final distinction for three historical noMatch accounts. Sep-9 pair: cause CLOSED as expected canonical mismatch, no binder defect, based on contemporaneous auth.users confirmed Google addresses/Supabase sign-ins plus Sep-10 users.email PRE-WRITE read still showing different-domain stored addresses and NULL bindings; no intervening correction. The userEmails-only inference was rightly retracted because every row was written Sep-11, but absence of a contemporaneous witness IN userEmails was not absence of evidence ANYWHERE. Do not treat a narrow query negative as a global disproof; a disproof must cover the claim it retracts. Sep-3 account: ONLY remaining unknown historical cause among the three, with one open backfilled userEmails row and no reconstructed prior row/external citation; any later resolution needs a contemporaneous surface outside userEmails, not another fromAt inference. Galván pair = closed GATE EXAMPLE, CASE A conflicting signals open, CASE B open p3 on TERRA-275 with same-person explanation favoured and 0 profile-linked clinical rows (role-wide readable set unmeasured). 18 distinct auth accounts unchanged; four pre-cutoff uid-less events excluded. No PII or writes.
-
STRIKE my updatedAt claim above. I wrote that users.updatedAt matching the Sep-10 supabaseAuthIdBound event to the microsecond proves no write touched either row between the 2026-09-09 authentications and the 2026-09-10 pre-write read. FALSE, corrected by db-enamel-ca: updatedAt is LAST-WRITE-WINS, so a change on Sep-9 followed by the Sep-10 correction leaves exactly the same value. It establishes nothing before the last write. The claim must not appear in any artifact. What that column CAN support is only the one direction: an updatedAt OLDER than an event proves no write after it. It can never prove the absence of a write before it. The Sep-9 cause is unaffected and stands on the combined evidence per pmmaster's ruling - Sep-9 auth-side confirmation and sign-in at gmail addresses, plus the real Sep-10 pre-write read holding outlook and hotmail addresses with supabaseAuthId NULL. What is withdrawn is my claim to have CLOSED the intervening-write gap; that gap is narrow and open, and the ruling is an adjudication on combined evidence rather than a proof. WORTH KEEPING as the lesson, because it is the same error the thread was built to avoid: I needed a contemporaneous trail and substituted a mutable last-modified timestamp for one. A single last-write column is not a history, which is exactly why userEmails exists and exactly why its being a backfill mattered.
-
Sep-3 narrow timing read (read-only, no addresses/IDs): failed Terra noMatch 2026-09-03 09:45:42.508638Z. GoTrue auth account created/confirmed ~09:45:41Z, last signed in 09:45:42.306457Z, auth.users.updated_at 09:45:42.347425Z (no later auth update recorded). Current users.updatedAt 2026-09-08 02:42:15.939509Z exactly equals successful supabaseAuthIdBound appEvent timestamp to the microsecond. BUT this equality does NOT establish an email correction: live trg_users_setUpdatedAt fires on EVERY users UPDATE, and bindSupabaseAuthId itself UPDATEs users.supabaseAuthId. Enamel external note lists this row among five updatedAt==bind rows and calls the row touch a bind; unlike the Sep-9 pair, there is no contemporaneous pre-write stored-email read or reconstructed prior address for this account. Current canonical auth/profile email equality cannot prove the Sep-3 stored value. Therefore none of support’s proposed causal branches is proven by updatedAt alone; historical noMatch cause remains open, potentially anomalous, no binder defect established. No DB writes.
-
CORRECTION to prior event wording: do NOT treat users.updatedAt equal to a later bind/correction as proof that no intervening write occurred. users.updatedAt is last-write-wins under trg_users_setUpdatedAt; an earlier write can be overwritten by the later bind/update timestamp. The Sep-9 pair cause remains supported by contemporaneous Sep-9 auth confirmation/sign-ins and Sep-10 PRE-WRITE different-domain users.email + NULL binding, followed by successful correction/bind; that record establishes mismatch at those measured points, but updatedAt does NOT exclude every hypothetical intervening write. The Sep-3 account has users.updatedAt equal to Sep-8 bind, which by itself says NOTHING about its Sep-3 stored address or a hand email correction; cause remains open. Do not cite the voided timestamp inference in any artifact. No PII or DB writes.
-
PM FINAL NARROWED CLOSE for the TWO Sep-9 historical noMatch events: adjudicated as canonical mismatch at the attempts, no binder defect, on BRACKETING evidence only: (1) contemporaneous auth-side email_confirmed_at and lastSignInAt at their Google addresses Sep-9; (2) Sep-10 pre-write users.email read still showing different-domain stored addresses, supabaseAuthId NULL and no other row holding those Google addresses. The bind predicate explains noMatch under that adjudication. NOT claimed: a contemporaneous Sep-9 users.email snapshot; continuity of stored email across Sep-9 to Sep-10; or updatedAt proof of no intervening write. Sep-10 updatedAt matches the bind because the later UPDATE overwrites earlier timestamp evidence, so a hypothetical intervening write yields the same final value and this field discriminates nothing. Sep-11 userEmails backfill is reconstructed second-hand evidence, not a contemporaneous witness. Sep-3 remains open/unknown. No further DB read, no PII or writes.
-
Sep-3 cause remains OPEN despite auth.users.updated_at still Sep-3 and users.updatedAt matching Sep-8 bind. These are mutable last-write timestamps, not value-history proofs. Live bind noMatch depends on canonical email equality PLUS users.deletedAt NULL and isSynthetic FALSE; their current values are not Sep-3 snapshots. Enamel shared-function/canonicalizeEmail/generated-column definitions may also have changed independent of Terra app/deploy history. Therefore do not infer by elimination that users.email MUST have been silently corrected, nor that the same email string was necessarily presented at both attempts. Enamel migration inventory requested by support is a useful discriminator, not itself proof. No PII, DB writes or extra reads.
-
SEP-3 CAUSE NARROWED TO TWO CANDIDATES BY ELIMINATION, and the decisive input is db-terra-ca's auth-side timing read. auth.users.updated_at for that account is 2026-09-03 09:45:42.347425Z with NO later update, so the Google-side address never changed after Sep-3: the session email presented at the SUCCESSFUL Sep-8 02:42:15.939509Z bind is the same string presented at the Sep-3 09:45:42.508638Z noMatch. Same input. Same code, and this is now verified on the DIFFS rather than from a path filter - my earlier 'no deploy' claim was asserted from a filter and one commit did land on the callback inside the window. 554749f, 2026-09-05, touches src/app/auth/callback/route.ts with 5 insertions and 1 deletion, ALL comment lines (it corrects a comment naming /solicitar-acceso after the code stopped using it). Behaviour unchanged. The other Sep-5 commits are access-issue-*, practica-*, informe-query, image-api, lookups - none on the resolution path - and the three migrations registered that day are terra_208, terra_209, terra_56, all practica and vocabulary. Identical input, unchanged code, opposite outcomes. Therefore the STORED side changed between Sep-3 and Sep-8. Two candidates survive, both unlogged: 1. An unrecorded users.email write. No userEmailCorrected event exists in that window - the nine known events are Sep-1 (TERRA-104) and the October cohort - and enamel_048 built no reconstruction row for this user, listing it instead among five updatedAt==bind row touches. That would be a correction path that leaves NO audit trace, which is the finding that matters for ENAMEL-76/77 rather than for this one account. 2. An enamel migration applied 2026-09-03..2026-09-08 touching canonicalizeEmail or the emailCanonical generation expression, which would silently re-resolve a CLASS of rows rather than one. Asked of db-enamel-ca; the terra tree is eliminated. SHAPE, never seen before on this rail: the auth account was created and confirmed ~09:45:41Z, lastSignInAt 09:45:42.306457Z, noMatch 09:45:42.508638Z - a first-ever sign-in that hit the wall 200ms in. NOT CLAIMED: which of the two it is, or that the stored value on Sep-3 is known. It is not.
-
Read-only shared supabase_migrations.schema_migrations VERSION slice 20260903..20260908 inclusive: four entries, all Terra-named: 20260905113142 terra_208_practica_images; 20260905113450 terra_56_pacienteSexo_periodo_sedeOtro_camposLibres; 20260905143518 terra_209_vocabulary_scope_member_integrity_guard; 20260908032807 terra_210_terra_auth_question_views. ZERO Enamel-named versions in slice. LIMIT: registry has version/name/statements/created_by/idempotency_key/rollback and NO appliedAt or inserted_at. Version time is not an independently witnessed application time; this slice alone cannot rule out out-of-order application of another-version Enamel migration during Sep-3..8. Enamel source review assigned to db-enamel-ca. Sep-3 cause remains open. No PII or DB writes.
-
CORRECTION TO THE PRECEDING NOTE - the elimination is a HYPOTHESIS, not a close. Sep-3 cause stays OPEN. Three defects in my argument, all from db-terra-ca: 1. I treated the noMatch predicate as email-only. It is not: live bindSupabaseAuthId requires emailCanonical match AND deletedAt IS NULL AND isSynthetic IS FALSE. I read those three values NOW. A Sep-3 snapshot of deletedAt or isSynthetic does not exist, so 'the stored EMAIL must have changed' is one of at least three stored-side changes that fit, and I named only the one I was looking for. Same error class as the FK-null and the userEmails reads earlier in this same investigation: the query was narrower than the claim. 2. auth.users.updated_at is a mutable last-write-wins column, not a history. It is strong evidence under ORDINARY GoTrue writes and I should have said so; it does not exclude a direct or privileged auth-side email write. Exactly the defect I was corrected on for users.updatedAt, one table over, two hours later. 3. The enamel tree being the only remaining candidate for hypothesis 2 does not make hypothesis 1 stand alone if the inventory comes back empty. A changed bindSupabaseAuthId body or canonicalizeEmail/emailCanonical definition is reachable from enamel with no terra deploy, and absence of a migration is not absence of a function change until the inventory is read. WHAT ACTUALLY STANDS: same session email presented at both attempts (under ordinary GoTrue write behaviour); terra tree eliminated on the diffs; opposite outcomes. Therefore SOMETHING on the stored side differed - unidentified which column, and not established as email. NEXT DISCRIMINATOR unchanged: db-enamel-ca's 2026-09-03..09-08 migration inventory. ADDED REQUIREMENT before any one-row-correction finding: historical evidence for users.email/isSynthetic/deletedAt or the auth-side address at Sep-3. If none exists for any of the three, the honest verdict is cause UNDETERMINED with the predicate behaving as specified - not a correction path that left no trace.
-
Sep-3 cause: UNDETERMINED, open. Do not read the elimination note above as a close.
-
ENAMEL MIGRATION INVENTORY (db-enamel-ca, prelim on the repo; live applied-ledger read pending): the only enamel migration COMMITTED 2026-09-03..09-08 is enamel_046 (Sep-5), zero canonicalizeEmail/emailCanonical references. Repo-wide, enamel_001 is the sole definition of canonicalizeEmail and of the generated users.emailCanonical column, with no later ALTER. So hypothesis 2 as I framed it - a canonicalizer or generated-expression change - has no repo support, pending the applied list. That does NOT promote hypothesis 1. Candidates still live, none with a Sep-3 snapshot: a change to the bindSupabaseAuthId BODY (enamel_025:441-465) independent of a migration file; users.deletedAt or users.isSynthetic, both of which that predicate requires and neither of which I measured historically; and an auth-side email write not excluded by auth.users.updated_at alone. Converged position of all three lanes: Sep-3 cause UNDETERMINED, predicate behaving as specified, no defect identified. Closing my line of inquiry here - reopening needs a historical read on one of those three columns, which nobody currently holds.
-
Support line of inquiry on Sep-3 CLOSED as undetermined. Three lanes converged. Not a defect, not a traceless-correction finding.
-
SEP-3 REOPENED WITH A NAMED, RECORDED CANDIDATE - and it is the opposite of the traceless-write finding I was drafting. db-enamel-ca's live supabase_migrations.schema_migrations read: ZERO enamel_* entries 2026-09-03..09-08. The only four registered in that interval are terra_208, terra_56, terra_209 (Sep-5) and terra_210 (Sep-8). terra_210's body is exactly 'UPDATE users SET email = <gmail>, then call bindSupabaseAuthId' - documented in terra/agents/db-terra/evidence/2026-09-10-terra_210-galvan-bindings.result.md, in this checkout, which quotes the DO block verbatim. The Sep-3 account's successful bind is 2026-09-08 02:42:15.939509Z. ONE READ DECIDES IT, asked of both db lanes: was the Sep-3 account's userId in terra_210's VALUES list, and what is terra_210's applied timestamp. Included and applied at or before 02:42:15Z -> the stored-side change is a REGISTERED migration write with cited provenance, Sep-3 is explained, and the 'correction path leaving no audit trace' framing does NOT apply to this account. Not included -> terra_210 is eliminated on CONTENT rather than on date, and Sep-3 stays undetermined. DISCREPANCY FLAGGED, and the inference rests on it: the ledger puts terra_210 at Sep-8 while the evidence file is dated Sep-10 and describes auth-side confirmations on Sep-9. If registration and apply are separate events in that table, the Sep-8 entry has to be identified as one or the other before it can carry any weight. NARROWING db-enamel-ca'S OWN CANDIDATE LIST: they offer 'a row could have been created/reactivated' alongside the deletedAt/isSynthetic flips. Row CREATION is excluded for this account - its users row and grant date from 2026-08-05, measured earlier on this row. Reactivation and an isSynthetic flip are not excluded; neither is out-of-band DDL, which no migration ledger can speak to. METHOD NOTE WORTH MORE THAN THE ACCOUNT: I twice reached for the exciting explanation (first a predicate defect, then an unrecorded write) while a REGISTERED migration of exactly the needed shape sat in the same window, with its applied-result evidence in my own checkout. The same file had already answered the Sep-9 pair. A migration ledger read that returns 'zero in my project' is not a null result - the four entries it DID return were the answer.
-
Sep-3: terra_210 (registered Sep-8, UPDATE users.email + bindSupabaseAuthId) is a recorded candidate. Awaiting VALUES-list membership + applied timestamp from db lanes. Prior 'undetermined' close superseded.
-
TERRA_210 ORDERING CLAIM RETRACTED - the ledger has no timestamp, so 'registered Sep-8' was my inference from the VERSION NUMBER, not a measurement. db-enamel-ca and db-terra-ca both re-read the ledger schema: supabase_migrations.schema_migrations carries version/name/statements and NO appliedAt or inserted_at. A version string of 20260908* is a NAMING assertion about when the file was written, exactly the same class of artifact as a bitemporal fromAt, and the apply is unwitnessed by that table. db-enamel-ca has withdrawn the stronger 'no enamel migration APPLIED Sep-3..8' wording for the same reason; what the slice proves is zero enamel-named VERSIONS in [20260903,20260909), which is a statement about file names. AND THE ONLY APPLY WITNESS POINTS THE WRONG WAY FOR MY HYPOTHESIS. terra_210's applied-result evidence file is dated 2026-09-10 and documents auth-side confirmations on 2026-09-09 - both AFTER the Sep-3 account's successful bind at 2026-09-08 02:42:15.939509Z. If that file is the apply record, terra_210 ran two days too late to have caused that bind, and it is eliminated on its own evidence rather than on the ledger. I raised terra_210 as a recorded candidate on a date I had not actually measured, one turn after retracting an elimination built the same way. ONE LEG SURVIVES AND IT IS CONTENT, NOT TIMING: was the Sep-3 account's userId in terra_210's VALUES list at all. If it was not, terra_210 is dead on content as well and nothing is pending. If it was, the question becomes whether that migration had an earlier partial apply, which the ledger cannot answer and only a db lane's own run record can. VERDICT, and I am closing my line of inquiry here: Sep-3 cause UNDETERMINED. The predicate behaved as specified at both attempts. SOMETHING in the registry match state differed between Sep-3 and Sep-8 - candidates are a users.email rewrite, a deletedAt or isSynthetic change, or out-of-band DDL, with row CREATION excluded because the users row and grant date from 2026-08-05. No Sep-3 snapshot of any of those columns exists and no lane holds one. NOT claimed: that the change was an email write, that it was unrecorded, or that it left no audit trace. The traceless-correction finding I drafted for ENAMEL-76/77 is withdrawn and must not be cited. THREE TIMES IN ONE INVESTIGATION I TREATED AN ASSERTED DATE AS A WITNESSED ONE: userEmails.fromAt, users.updatedAt, and now a migration version string. Each time the correction came from a peer within the minute. The generalisation worth keeping is that a date is evidence only when something recorded the act of writing it - a filename, a validity interval and a last-modified column are all assertions, and a ledger without an inserted_at cannot timestamp anything at all.
-
FINAL from support: Sep-3 UNDETERMINED, registry match-state change of unidentified column, no snapshot exists. terra_210 retracted as a dated candidate. Traceless-write finding withdrawn - do not cite on ENAMEL-76/77.
-
TERRA_210 PREMISE WAS FALSE ON CONTENT TOO, not only on timing - db-enamel-ca read both artifacts and they are two different things that share a WI number. applied/terra_210_terra_auth_question_views.sql is VIEW-ONLY: three vTerra* views, no users UPDATE, no bind call, and therefore NO VALUES LIST TO TEST. Header says applied Sep-8. The file I was reading, agents/db-terra/evidence/2026-09-10-terra_210-galvan-bindings.result.md, documents a Sep-10 HUMAN-OPERATED two-row UPDATE+bind data op merely ASSOCIATED with TERRA-210 - not that migration's body - and its two targets are the Galvan pair, not the Sep-3 account. So the migration never contained the shape I attributed to it, and the data op that did contain that shape was neither a migration nor in the window nor aimed at this account. MY ERROR, named precisely: I read a filename containing a WI ref and treated the file as that ref's MIGRATION BODY. An evidence or result file named <date>-<ref>-<description>.result.md records an operation someone performed under that ref; the migration of the same number is a different artifact with a different body, and nothing stops a ref from having both. I then quoted 'its body is exactly UPDATE users SET email, then bindSupabaseAuthId' to three lanes about a file that contains three CREATE VIEWs. Sep-3 stays UNDETERMINED, now with terra_210 eliminated on CONTENT as well as on date, which is the stronger elimination and closes the last open leg. No traceless-write conclusion anywhere. Nothing pending on this row from support.
-
terra_210 eliminated on content: the migration is VIEW-only; the UPDATE+bind was a separate Sep-10 human data op on the Galvan pair. No open leg remains. Sep-3 UNDETERMINED, final.