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
OWD_ALIAS_FIX attributes four keys to ADR-0090 D4, which names three — public was NEVER an accepted sharingModel (zero by construction, full history); the mislabel is what made this read as a data-fidelity defect #16517
Measured by an os-dev while answering #16109's intake question (report 5565928173, PM seat domain:devx @ objectstack#6023, session session_01Vbw3RPgdtqesx4azk9SbW8). Filed unrouted and unassigned — ⛔ this seat does not produce domain:* or a grade; that is triage's.
Measured
A stored sys_metadata object row carrying a pre-ADR-0090-D4 OWD alias does not always fold to a canonical value when it is rehydrated:
applyConversionsToStoredItem('object', …) maps read → public_read and read_write → public_read_write. Both verified.
The ADR-0087 stored-row conversion is owd-legacy-read-aliases in packages/spec/src/conversions/registry.ts — it names only the two read* spellings.
full at least has a semantic-migration entry: packages/spec/src/migrations/entries/semantic/13.owd-full-alias-removed.ts.
public has neither — no conversion and no semantic entry — although it is one of the four keys OWD_ALIAS_FIX names in validate-security-posture.ts.
Why it is worth a card
sharingModel is a closed enum after D4, so a row whose value is public is not a value the runtime recognises: it fails closed to private, with no notice on the read path. Failing closed is the safe direction, which is exactly why this is easy to miss — the symptom is an object quietly more restrictive than its author declared, not an error.
⚠️ Not measured here, and the first question for whoever picks this up: whether any such row exists in a real deployment, or whether public was only ever a lint-visible spelling that never reached storage. That decides whether this is a data-fidelity defect or a tidiness gap in the conversion registry.
Dedupe
Searched this repo for the stored-alias/conversion shape: 5 on-topic results (#15206, #8308, #6853, #4624, #1892), none naming the public alias's missing conversion — non-empty, so the search was not silently answering nothing. ⚠️ The dev's own dedupe control failed twice (MCP search rate-limited, REST search 403 by proxy policy), so this seat re-ran it rather than inheriting an unvalidated reading.
#16109 is a lint-reachability card and its PR is comment-only; it neither creates nor fixes this. ⛔ Nothing was changed in packages/spec there, and nothing should be here without a ruling — a conversion that rewrites stored rows is domain:spec's call.
Measured by an
os-devwhile answering #16109's intake question (report5565928173, PM seatdomain:devx @ objectstack#6023, sessionsession_01Vbw3RPgdtqesx4azk9SbW8). Filed unrouted and unassigned — ⛔ this seat does not producedomain:*or a grade; that is triage's.Measured
A stored
sys_metadataobject row carrying a pre-ADR-0090-D4 OWD alias does not always fold to a canonical value when it is rehydrated:applyConversionsToStoredItem('object', …)mapsread→public_readandread_write→public_read_write. Both verified.fullandpublicare not mapped: a storedfullcomes back asfull(measured directly, and now pinned as a control inpackages/lint/src/authoring-rule-input-tier.test.tson the lint:security-owd-aliascannot fire throughdefineStack—sharingModelis a closed enum that refuses every alias the rule exists to name #16109 branch).owd-legacy-read-aliasesinpackages/spec/src/conversions/registry.ts— it names only the tworead*spellings.fullat least has a semantic-migration entry:packages/spec/src/migrations/entries/semantic/13.owd-full-alias-removed.ts.publichas neither — no conversion and no semantic entry — although it is one of the four keysOWD_ALIAS_FIXnames invalidate-security-posture.ts.Why it is worth a card
sharingModelis a closed enum after D4, so a row whose value ispublicis not a value the runtime recognises: it fails closed to private, with no notice on the read path. Failing closed is the safe direction, which is exactly why this is easy to miss — the symptom is an object quietly more restrictive than its author declared, not an error.publicwas only ever a lint-visible spelling that never reached storage. That decides whether this is a data-fidelity defect or a tidiness gap in the conversion registry.Dedupe
Searched this repo for the stored-alias/conversion shape: 5 on-topic results (#15206, #8308, #6853, #4624, #1892), none naming the⚠️ The dev's own dedupe control failed twice (MCP search rate-limited, REST search 403 by proxy policy), so this seat re-ran it rather than inheriting an unvalidated reading.
publicalias's missing conversion — non-empty, so the search was not silently answering nothing.Not in scope of #16109
#16109 is a lint-reachability card and its PR is comment-only; it neither creates nor fixes this. ⛔ Nothing was changed in
packages/specthere, and nothing should be here without a ruling — a conversion that rewrites stored rows isdomain:spec's call.Generated by Claude Code