Skip to content

[seam→cloud] Measure the cloud leg of the page.components[].responsive / mobile-overrides consumer census (gates objectstack#11027 and objectui#4773) #11029

Description

@os-sales

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 labelled domain:spec, so it never enters this seat's patrol.
  • objectui#4773 — wire-or-retire for objectui's MobileComponentConfig / MobileResponsiveConfig / MobileOverrides vocabulary, now needs-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.forSYMin useResponsiveConfig SpecResponsiveConfig ResponsiveConfig \
ResolvedResponsiveState ResolvedResponsiveConfig \
resolveResponsiveConfig getVisibilityClasses getColumnClasses \
getOrderClasses shouldHideAtBreakpoint \
MobileComponentConfig MobileResponsiveConfig MobileOverrides;doprintf'%-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.

⚠️Step 3's hits need reading, not counting. objectui carries an unrelated 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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions