Filed unassigned by the domain:services PM seat (session session_01UQgPSniH1GFM9ZDeGyuGUa) — recording a named gap, not a defect. Carried here from #10692 / PR #12275 so it survives that card's closing.
What is unmeasured
The maintainer's ruling on #10692 (2026-08-25) carried a dispatch instruction, verbatim:
out-of-repo hosts (objectui / cloud) should be grepped for { info, error }-only logger literals at claim time and any hits filed as consumer-side follow-ups with Blocked-by: back-links.
That instruction exists because the ruled change is a published contract tightening: @objectstack/plugin-sharing ships minor + BREAKING, and a host passing a logger without a warn member stops compiling on upgrade.
| host | swept? | result |
|---|
| objectui | ✅ at ref 194fae184 | zero imports of the package, zero warn-less logger literals; the only structural logger type (packages/types/src/plugin-scope.ts:214) declares all three channels |
| cloud | ⛔ NOT MEASURED | not reachable from the dispatched seat, and not reachable from this PM seat either |
Why this is a card and not a line in a report
⚠️NOT MEASURED is not a pass, and the usual disposition — "the next seat with access runs the one grep" — was checked and does not apply here:
- The implementing seat's
add_repo was refused: "you don't have access to objectstack-ai/cloud". - This PM seat then measured the same thing independently:
list_repos filtered on cloud returns an empty list. The repository is not in this session's accessible set at all.
So no seat in this card's chain can close the gap, which is exactly the case the implementer's own recommendation did not cover — it recommended against filing a card on the grounds that "there is no known defect to card yet" and that the PM review path reads the report anyway. That reasoning assumed a seat with access somewhere in the loop. Measured: there isn't one, and once #10692 closes the gap lives only in a report attached to a closed card — the shape #11843's body names as "precisely how a real open question becomes invisible".
What a good answer looks like
One grep in objectstack-ai/cloud, by a seat or human with access:
- Does
cloud import @objectstack/plugin-sharing at all? If not, this closes as a clean zero and that is the likely outcome — it is what objectui returned. - If it does: any logger object literal reaching
SharingServiceOptions['logger'], ShareLinkServiceOptions['logger'], SharingRuleServiceOptions['logger'], or sweepOrphanedRowsByRecordExistence's logger parameter that declares no warn member.
Each hit is a consumer-side follow-up card with a Blocked-by: back-link, per the ruling. Zero hits closes this card with the greps named — ⛔ not with "probably fine".
Severity, stated honestly so nobody over-grades this
Low, and bounded by the mechanism rather than by optimism: the break is compile-time, so a cloud host that does hit it is told the exact argument at the exact call line on upgrade — it cannot fail silently at runtime. The changeset already declares the break and names the one-line fix (add a warn callback, or omit the optional logger argument entirely). This card is about closing a sweep the ruling asked for, not about a suspected breakage.
⛔ Nothing here asks #10692 or PR #12275 to be held. The producer tightening this consumer follows already shipped in PR #11856 under #10556, so the same host exposure has been live since 2026-08-24 regardless.
Refs
#10692 (the ruling and its sweep instruction) · PR #12275 (the consumer half; its body records the objectui greps by name) · PR #11856 / #10556 limb (c) (the producer tightening that shipped first) · #9754 (the sink contract)
Filed unassigned by the
domain:servicesPM seat (sessionsession_01UQgPSniH1GFM9ZDeGyuGUa) — recording a named gap, not a defect. Carried here from #10692 / PR #12275 so it survives that card's closing.What is unmeasured
The maintainer's ruling on #10692 (2026-08-25) carried a dispatch instruction, verbatim:
That instruction exists because the ruled change is a published contract tightening:
@objectstack/plugin-sharingshipsminor+ BREAKING, and a host passing a logger without awarnmember stops compiling on upgrade.194fae184packages/types/src/plugin-scope.ts:214) declares all three channelsWhy this is a card and not a line in a report
add_repowas refused: "you don't have access to objectstack-ai/cloud".list_reposfiltered oncloudreturns an empty list. The repository is not in this session's accessible set at all.So no seat in this card's chain can close the gap, which is exactly the case the implementer's own recommendation did not cover — it recommended against filing a card on the grounds that "there is no known defect to card yet" and that the PM review path reads the report anyway. That reasoning assumed a seat with access somewhere in the loop. Measured: there isn't one, and once #10692 closes the gap lives only in a report attached to a closed card — the shape #11843's body names as "precisely how a real open question becomes invisible".
What a good answer looks like
One grep in
objectstack-ai/cloud, by a seat or human with access:cloudimport@objectstack/plugin-sharingat all? If not, this closes as a clean zero and that is the likely outcome — it is whatobjectuireturned.SharingServiceOptions['logger'],ShareLinkServiceOptions['logger'],SharingRuleServiceOptions['logger'], orsweepOrphanedRowsByRecordExistence'sloggerparameter that declares nowarnmember.Each hit is a consumer-side follow-up card with a
Blocked-by:back-link, per the ruling. Zero hits closes this card with the greps named — ⛔ not with "probably fine".Severity, stated honestly so nobody over-grades this
Low, and bounded by the mechanism rather than by optimism: the break is compile-time, so a
cloudhost that does hit it is told the exact argument at the exact call line on upgrade — it cannot fail silently at runtime. The changeset already declares the break and names the one-line fix (add awarncallback, or omit the optionalloggerargument entirely). This card is about closing a sweep the ruling asked for, not about a suspected breakage.⛔ Nothing here asks #10692 or PR #12275 to be held. The producer tightening this consumer follows already shipped in PR #11856 under #10556, so the same host exposure has been live since 2026-08-24 regardless.
Refs
#10692 (the ruling and its sweep instruction) · PR #12275 (the consumer half; its body records the objectui greps by name) · PR #11856 / #10556 limb (c) (the producer tightening that shipped first) · #9754 (the sink contract)