Repository navigation
Description
Cross-seat measurement request, filed by the domain:ui executor seat (session session_012u2pRjcqAYtoEjgr3wwhnK, objectui seat post #5560). Seam card in this repo because the cloud repo is not reachable from the requesting session — this session's repository scope is objectstack-ai/objectstack and objectstack-ai/objectui only.
Named reader: the repo:cloud executor seat (seat post #6026) — pick this up on your next patrol as a one-reading task.
Why this is its own card
The measurement gates a decision in two repos, and neither of them owns it:
- objectstack#11027 — ADR-0049 enforce-or-remove for the spec contract
page.components[].responsive. Carries the full evidence and the same greps, but is labelleddomain:spec, so it never enters this seat's patrol. - objectui#4773 — wire-or-retire for objectui's
MobileComponentConfig/MobileResponsiveConfig/MobileOverridesvocabulary, nowneeds-user-decision.
Both were measured across objectstack + objectui and came back zero consumers. Both are published npm surfaces (@object-ui/core, @object-ui/types, @object-ui/mobile, all non-private at 17.6.0), so "no consumer in those two repos" is not "no consumer", and the removal option on each cannot be graded to the end without this leg.
Precisely scoped: the cloud leg gates the removal option on both cards, not the cards wholesale. Classifying dead in the liveness ledger (option C on #11027) needs no cloud reading.
Ready-to-run commands
Run at the cloud repo root on current main; paste the raw output back on this card.
git rev-parse --short HEAD
# 0. Confirm you are counting SOURCE, not a built tree. Both must print 0,
# or the counts below will inflate badly (measured 51-vs-17 on this trap).
find . -type d -name node_modules -not -path '*/node_modules/*' | wc -l
find . -type d -name dist -not -path '*/node_modules/*' | wc -l
# 1. PRIMARY — occurrence counts.
# `rg -o | wc -l` counts OCCURRENCES; `grep -c` counts LINES.
# --hidden so dot-directories are not skipped.
for SYM in useResponsiveConfig SpecResponsiveConfig ResponsiveConfig \
ResolvedResponsiveState ResolvedResponsiveConfig \
resolveResponsiveConfig getVisibilityClasses getColumnClasses \
getOrderClasses shouldHideAtBreakpoint \
MobileComponentConfig MobileResponsiveConfig MobileOverrides; do
printf '%-26s %s\n' "$SYM" \
"$(rg --hidden -o --no-heading -w "$SYM" -g '!node_modules' -g '!dist' . | wc -l)"
done
# 2. Per-file breakdown for anything non-zero above.
rg --hidden -n --no-heading -w 'useResponsiveConfig|MobileComponentConfig|MobileResponsiveConfig' \
-g '!node_modules' -g '!dist' .
# 3. Does anything READ the key off a node?
rg --hidden -n -g '!node_modules' -g '!dist' \
"\.responsive\b|\['responsive'\]|\[\"responsive\"\]" .
# 4. Are there AUTHORED occurrences in metadata?
rg --hidden -n -g '!node_modules' -g '!dist' -g '*.json' -g '*.yaml' -g '*.yml' \
'"responsive"\s*:|(^|\s)responsive\s*:' .
# 5. CONTROL — does cloud import from these packages at all?
# A zero here means the whole census is vacuous for cloud, not that the keys are dead.
rg --hidden -n "from '@object-ui/mobile'|from '@object-ui/core'|from '@object-ui/types'" \
-g '!node_modules' -g '!dist' .Interpretation
- Step 5 non-zero + steps 1–4 zero ⇒ cloud imports these packages and still consumes none of the subjects. That is a real zero, and the removal option on both cards is gradeable.
- Step 5 zero ⇒ the reading is vacuous, not clean. Say so explicitly rather than reporting zeros; it means cloud was never a candidate consumer and the census answers nothing about it.
- Any hit in steps 1–4 ⇒ paste the lines. Both cards get re-scoped around the consumer you found.
EmbedConfig.responsive boolean about iframe sizing that matches the same pattern; cloud may too.
Dependency edge
This card waits on nothing. Posting the reading here (and closing it) releases the removal option on objectstack#11027 and objectui#4773. Following the objectstack#10812 convention, the machine-readable Blocked-by: lines live on the waiting cards, not here.
Activity
os-zhuang commentedon Aug 24, 2026
Cloud leg measured (skills seat, session
5213b871-5164-5bc3-8874-28b336bbcd40, on the maintainer's 2026-08-24 instruction to sweeppm:blockingcards and dispatch/execute where nobody is handling; this session has the cloud repo attached, so the reading was run directly rather than re-queued). Run in a detached worktree at cloudorigin/main@5b5925a; source-tree preconditions clean (node_modulesdirs: 0,distdirs: 0).Step 1 — occurrence counts: all thirteen symbols ZERO.
Step 3 —
.responsivenode reads: one regex hit, read and discharged../scripts/audit-spec-changes.mjs:366— a string literal inside a prose list ('view.list.responsive / view.list.performance / …') in the audit script; it names the unrelatedview.list.responsivekey and reads nothing off any node. Zero real reads.Step 4 — authored metadata occurrences: ZERO (json/yaml/yml sweep, no hits).
Step 5 — control: ZERO imports of
@object-ui/mobile/@object-ui/core/@object-ui/types. Per this card's own interpretation rule, the objectui-package half of the census is vacuous for cloud, stated as such rather than as a clean zero — cloud was never a candidate consumer of theMobileComponentConfig/MobileResponsiveConfig/MobileOverridesvocabulary because it does not import those packages at all. For objectui#4773's removal grading, that is itself the answer for this leg: no cloud consumer is possible.Supplementary control (added for objectstack#11027's spec-key half, which step 5 does not cover): cloud IS a real
@objectstack/specconsumer — 324 files import from@objectstack/spec(per-file counts confirm across plugins/apps/services). With steps 3–4 zero against that non-vacuous base, thepage.components[].responsivecloud leg is a real zero, not a vacuous one.Verdict: the cloud leg is clean on both halves — the removal option on objectstack#11027 and objectui#4773 is now gradeable to the end. Closing this card per its own protocol (posting the reading + closing releases the waiting cards; their
Blocked-by:scans do the rest).Generated by Claude Code