Filed by the PM seat domain:devx @ objectstack (#6023), session session_012zGPuVVX3deAx9LdjK8jCk from the #15094 census (report 5547410463, ruling option D). Filed bare — domain:*, type and priority are triage's.
The class
The #15094 census (syntactic, comment-masked, over packages/** + examples/**, 5,694 files) found 104 array-or-envelope union-normalizer blocks (Array.isArray(x) ? x : x.records|x.data) of which ~70 source blocks are dead-limb shaped — the same defect as #14460 / #14843 / #15092: an IDataEngine.find() / IDataDriver.find() result never carries { records }, so the envelope limb is dead code that reads as a contract.
packages/plugins/plugin-auth holds 12 of the 28 records-limb source blocks — the largest concentration in the repo — plus a fourth same-signature rowsOf(result: unknown) (data limb) at src/phone-sms-texts.ts:157 that no card names. One of the twelve (src/auth-manager.ts:4498) is ALSO #15092's DROP shape: its trailing filter would silently drop a malformed row rather than gap the family — the opposite defect, and it must be fixed in the opposite direction.
What a fix owes (the #14843 standard)
Resolve the concrete driver/engine each block reads and DRIVE it once — IDataEngine.find is declared Promise<any[]> (packages/spec/src/contracts/data-engine.ts:251) and a type alone is not proof (#13706: a find() that never resolves to an array). Then per block: remove the dead limb (or, for the drop-shaped block, replace the silent filter with a gap/refusal), one test per block that pins the concrete shape. ⛔ No gate change here (#15094 ruled the gate is not widened — precision 0.446 / 0.857 measured); ⛔ no packages/spec change.
Refs
#15094 (ruling + census), #14460, #14843 / PR #15093, #15092, #13706. Sibling card: plugin-security (7 blocks).
Generated by Claude Code
Filed by the PM seat
domain:devx @ objectstack(#6023), sessionsession_012zGPuVVX3deAx9LdjK8jCkfrom the #15094 census (report5547410463, ruling option D). Filed bare —domain:*, type and priority are triage's.The class
The #15094 census (syntactic, comment-masked, over
packages/**+examples/**, 5,694 files) found 104 array-or-envelope union-normalizer blocks (Array.isArray(x) ? x : x.records|x.data) of which ~70 source blocks are dead-limb shaped — the same defect as #14460 / #14843 / #15092: anIDataEngine.find()/IDataDriver.find()result never carries{ records }, so the envelope limb is dead code that reads as a contract.packages/plugins/plugin-authholds 12 of the 28records-limb source blocks — the largest concentration in the repo — plus a fourth same-signaturerowsOf(result: unknown)(data limb) atsrc/phone-sms-texts.ts:157that no card names. One of the twelve (src/auth-manager.ts:4498) is ALSO #15092's DROP shape: its trailing filter would silently drop a malformed row rather than gap the family — the opposite defect, and it must be fixed in the opposite direction.What a fix owes (the #14843 standard)
Resolve the concrete driver/engine each block reads and DRIVE it once —
IDataEngine.findis declaredPromise<any[]>(packages/spec/src/contracts/data-engine.ts:251) and a type alone is not proof (#13706: afind()that never resolves to an array). Then per block: remove the dead limb (or, for the drop-shaped block, replace the silent filter with a gap/refusal), one test per block that pins the concrete shape. ⛔ No gate change here (#15094 ruled the gate is not widened — precision 0.446 / 0.857 measured); ⛔ nopackages/specchange.Refs
#15094 (ruling + census), #14460, #14843 / PR #15093, #15092, #13706. Sibling card: plugin-security (7 blocks).
Generated by Claude Code