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
{{ message }}
Repository navigation
A connector auth key drained on save (#28640 ②B) still sits in cleartext at rest in sys_metadata_history snapshots #29484
Ruled: 6677709817 · letter d (c, then b) · 2026-11-06T05:28Z
Ruling-ref: 6677709817
Filing gate: ① an out-of-scope finding (class b, carrier: the seat) the #28640 dev noted on PR #29456 (os-dev-report 6581427705) and the seat's contract review confirmed (record 6581889597). ⛔ Not a claim. No grade: triage sets it.
What was measured
PR #29456 (ruling ②B, 6566912252) makes a save of a connector's served form drop a leftover undeclared auth key (for example a legacy auth.token) from the live sys_metadata row, and tells the author with a withheld-key-dropped advisory. The sys_metadata_history snapshots written before that save keep the pre-drain body, value included.
A read of a history row is served through the stored-row seam (redactStoredMetadataRow(s) in packages/spec/src/kernel/metadata-type-redaction.ts), which withholds the key, so there is no cleartext exit through the API. The value is cleartext only at rest, in history rows, for as long as history is retained.
Wanted
The maintainer's call on whether at-rest history must be scrubbed too: (a) leave it, documented (history is served redacted; retention bounds it); (b) a one-time scrub of undeclared auth keys from connector history snapshots, as a migration step; or (c) withhold at write time for future history rows only. Any option that rewrites stored history is a data change and goes to the maintainer first.
Reader who acts: domain:server (metadata history writer) with the domain:spec redaction owner, after triage.
Director seat (the maintainer's decisions thread). Presented to the maintainer in batch #437 (two items: #29594 customization-pair namespace for shared sys, and #29484 drained connector keys at rest in history snapshots) with the latest analysis on this card as the seat's reading; the maintainer's letter follows in a ruling comment. Rule level only on the security item.
Ruling: batch #437 item 2 · letter d (c, then b) · maintainer 「29484 同意」 2026-11-06T05:26Z
Director seat (the maintainer's decisions thread). Presented in batch #437 (brief-claimed here at 6677323648; detailed letter in the project's decision doc, batch 6, rule level). The maintainer answered at 2026-11-06T05:26Z, verbatim: 「29484 同意」 = the seat's recommendation, d = (c) first, then (b).
Workload:domain:server (history writer) with the domain:spec redaction owner · 1–2 PRs · S–M · contract review on (c) · the scrub rehearsed on a copy before it runs anywhere.
Execution: the server lane dispatches (c) with Ruling-ref: naming this comment, the count + scrub script following; ⛔ no stored-secret specifics on this card. Label strokes are the dispatching seat's.
Activity
objectstack-fleet commentedon Nov 2, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: p2 ·
domain:server·needs-user-decision· 2026-11-02T17:03Z⛔ Not a claim.
domain:server, the history writer, with thedomain:specredaction owner. The maintainer has been told directly. ⛔ Seats add no further detail about stored secrets to this card. Per pm-dispatch(security): one fleet-wide rule for security findings — never a card, never a public mechanism; tracked as a GitHub draft security advisory, fixed by a no-card pm-dispatch order #29111, a security finding's specifics go through the advisory channel, not a public card.Generated by Claude Code
objectstack-fleet commentedon Nov 6, 2026
director#2 · os-tesla · session_01L9qibxdiybU8ehPKBroYE3
Brief-claimed-by: session_01L9qibxdiybU8ehPKBroYE3 · batch #437 · 2026-11-06T04:58Z
Director seat (the maintainer's decisions thread). Presented to the maintainer in batch #437 (two items: #29594 customization-pair namespace for shared
sys, and #29484 drained connector keys at rest in history snapshots) with the latest analysis on this card as the seat's reading; the maintainer's letter follows in a ruling comment. Rule level only on the security item.objectstack-fleet commentedon Nov 6, 2026
director#2 · os-tesla · session_01L9qibxdiybU8ehPKBroYE3
Ruling: batch #437 item 2 · letter d (c, then b) · maintainer 「29484 同意」 2026-11-06T05:26Z
Director seat (the maintainer's decisions thread). Presented in batch #437 (brief-claimed here at 6677323648; detailed letter in the project's decision doc, batch 6, rule level). The maintainer answered at 2026-11-06T05:26Z, verbatim: 「29484 同意」 = the seat's recommendation, d = (c) first, then (b).
What the ruling binds (rule level):
sys_metadata_historysnapshot written from now on withholds the same undeclaredauthkeys the [Decision] connector credential follow-ups after #28596: header-value advisory, legacy auth keys at rest, whole-map withholding #28640 ②B save drains from the live row, so no new history row carries such a value.Clause-②: no (narrowing)for what history stores;Metadata-protocol: none; the history read exit (redactStoredMetadataRow(s)) is unchanged.Workload:
domain:server(history writer) with thedomain:specredaction owner · 1–2 PRs · S–M · contract review on (c) · the scrub rehearsed on a copy before it runs anywhere.Execution: the server lane dispatches (c) with
Ruling-ref:naming this comment, the count + scrub script following; ⛔ no stored-secret specifics on this card. Label strokes are the dispatching seat's.