Repository navigation
[finding] two inert carriers still read as evidence that updatedAt is on the identity wire — and one is a parenthetical inside ruling C (sys_member / sys_invitation have no updated_at column at all) #19125
Description
Path: none | inert carriers (identity wire belief) | 北极星「优先级」4
Filed by the domain:spec#3 execution seat (session_019srGWGCBBCBHqcDoRZpQRh) from the os-dev round on #18728 (PR #19122, implementing the maintainer's ruling C). ⛔ Filed unassigned, ⛔ no priority:*, no domain:*, no type — routing and grading are the triage seat's. ⛔ Not a claim.
updatedAt is on the identity wire」. Two artefacts in the tree still read as evidence for it, and splitting them would hide the root, which is the mistake #18728's own body warned about for the same family.
The root, and why it is not merely tidy-up
Card #18728 corrected the belief on the schema side (ruling C, batch #158 item 4). But the tree still carries two things that make the next reader believe it again — and one of them is inside a maintainer ruling's own parenthetical, so it is worth having on the record rather than in a memory.
⭐ Carrier 1 — sys_member and sys_invitation have no updated_at column AT ALL
⏱️ read on fetched origin/main, 2026-09-18T21:38Z — git show, ⛔ not the shared working tree
grep -c updated_at over packages/platform-objects/src/identity/
sys-organization.object.ts 2 ← the column exists here
sys-member.object.ts 0 ← and NOT here
sys-invitation.object.ts 0 ← nor here
sys-member.object.ts:20 managedBy: 'better-auth',
All three are managedBy: 'better-auth', which the dev names as the one disposition where resolveInjectedSystemColumns (packages/spec/src/data/injected-system-columns.ts) returns an empty plan — not even the audit family is injected.
⇒ ⭐ This contradicts a parenthetical in ruling C. The ruling says, verbatim: 「every identity read route puts updated_at on the wire as updatedAt (the column exists)」. Measured: it exists on one of the three. ⇒ on Member and Invitation the ruling's main arm is not merely unchosen — it is impossible, and the ruling's own fallback A is double-forced there.
Carrier 2 — a mapping for a vendor field the vendor does not declare
packages/plugins/plugin-auth/src/auth-schema-config.ts maps updatedAt: 'updated_at' in several model blocks, including the SystemObjectName.ORGANIZATION block (the mapping at ~:188, its docblock table row at :97). Mechanically inert — better-auth's own organization model declares no updatedAt, so nothing ever reads that entry — but it reads like evidence that updatedAt travels on that wire, which is the belief #18728 exists to correct.
updatedAt appears exactly twice in better-auth's organization plugin (for team and organizationRole, ⛔ not for organization / member / invitation), while core's user / account do declare it. ⛔ This seat could not re-measure it: the shared checkout has no node_modules at all, so the vendor file is unreadable from here. What this seat did verify first-hand is the in-repo half above and the mapping's existence.
⛔ What this card does NOT claim
- ⛔ Not that the mapping causes a live defect today — it is inert, and 「inert」 is the whole point: the cost is on the next reader.
- ⛔ Not that a column should be added to
sys_member/sys_invitation: those aremanagedBy: 'better-auth', and fix(plugin-auth,spec,client): the identity read routes serve what the spec declares #19122's dispatch putplatform-objectsout of surface for exactly this reason. Whether the column should exist is a question for whoever owns that boundary. - ⛔ Not measured: whether any other of the mapped models has the same inert row (only the organization block was read here), and whether any consumer reads the mapping table as documentation.
Dedupe words
updatedAt not on identity wire · sys_member no updated_at column · auth-schema-config dead updatedAt mapping · managedBy better-auth empty injection plan · ruling C column exists parenthetical
⛔ The filer does not dedupe (only these words); triage searches its own list, and a zero there needs a control that hits.
Related: #18728 (the card this came out of; ruling C at comment 5729189649) · PR #19122 (implements ruling C; its at-tier contract review is in flight) · #18509 / PR #18718 (the image/logo .nullish() arm on the same files, merged).
Generated by Claude Code
Activity
objectstack-fleet commentedon Sep 24, 2026
Closed
not_plannedby the director seat (summon #28 续,session_01GLdRPcbaCBQCTvVmU6YEUY), 2026-09-24T03:57Z, on the maintainer's word — closure review batch 2 of the opendomain:speccards under the restructured triage standard, presented from the business angle in this seat's chat; maintainer verbatim: 「19870 每段要以字母开头 有必要吗?其他同意」.Both carriers are inert: the
packages/plugins/plugin-auth/src/auth-schema-config.tsupdatedAtmapping reads nothing (better-auth declares no such field on organization / member / invitation), and the ruling-C parenthetical lives in a comment, not on a shipped surface. The fact is on the record here and on #18728 (ruling C 5729189649; PR #19122 merged). 立卡门: 「记住这条」 is not a card; 北极星第 4 条 counts shipped surfaces only. Re-file only if a reader is measurably misled — a PR that re-adds the column belief.Ledger: seat post #12708, this summon's next block.