Skip to content

Setup declared sharing rules: at 1440px the Clone button sits off-screen and the Active switch is cut; Active reads "?" for a principal who cannot read the ledger #13091

Closed

Description

@objectstack-fleet

Filing gate ②: a measured finding. It comes from the regime C smoke run of objectstack-ai/objectstack#24644 (PR objectstack-ai/objectstack#24660): os-dev-report 6278269372, out_of_scope_findings 1 and 3. The page itself is #13050 (12dc7b47).

Measured

Playwright Chromium on a fresh showcase (single), at /_console/apps/setup/metadata/sharing_rule?scope=environment, signed in as admin:

  • At 1440×1000:
    • The first catalog-clone-* button's box starts at x=1515, outside the viewport.
    • The table's scroll container is 1323 px wide inside a 1134 px box, so the Active switch is cut at the right edge too.
    • The table scrolls, but nothing on screen says that its actions are past the edge.
  • At 1920: the button is at x=1806, inside the viewport.
  • For a principal who can open Setup but cannot read the activation ledger (the showcase ops user): the Active column shows ? for each rule.

Wanted

  1. At 1440 and 1024, the row's actions (Clone) and the Active switch are reachable without hunting. Follow the list conventions of console list page: on desktop the table scrolls inside the page under a sticky header while the app bar, page header, view row and footer stay put; at 1024 the first and the actions column stick and a right-edge shadow says more columns follow #12463 and Lists at 1024 px: a status chip is not cut to "Publish…", and a table wider than its panel shows that it scrolls #12708: the actions column sticks, and a right-edge shadow says more columns follow. Alternatively, make the declared-rules columns fit.
  2. When the ledger read is refused, the Active cell shows a plain-language state, for example "Not visible to you", instead of ?. Use the server's refusal where it has one.
  3. Pin both cases in ResourceListPage.declaredSharingRules-12982.test.tsx, plus one Playwright measurement at 1440.

⛔ This changes no server contract, and adds no product-specific widget or string beyond the existing i18n keys. See AGENTS.md › Product-neutral renderer.

Activity

  1. added
    pm:epicParent delegated to a dedicated epic PM — other PMs never dispatch into its subtree
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Oct 19, 2026
  2. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: objectstack epic seat round · 2026-10-19T22:01Z
    Session: session_01Y5583bs2RDd53MH6kM1ca3
    Account: os-steve (the card's assignee)
    Branch: claude/issue-13091-declared-rules-layout
    Worktree: the cloud session's own checkout (mode:cloud)
    Domain: domain:ui
    Seat: objectstack epic:#15194 (cross-repo follow-up)
    File surface, read on objectui main at or after 2493e85a3992. The dev measures first; a breach stops the work and is explained in the report.

  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report (posted by the objectstack epic seat, verbatim from dev session session_016ixQuukBQtUAZdo8ih3w9Z, whose harness has no comment tool)

    {
      "card": "objectui#13091",
      "claim": "6278350209",
      "branch": "claude/issue-13091-declared-rules-layout",
      "head": "43e37f406466",
      "status": "draft-pr-requested-from-seat",
      "wanted": {
        "1_layout_1440_1024": "done: sticky Active+Clone cells in HorizontalOverflowBox seam=pinned, seam shadow on the first pinned cell; measured live before/after at 1440 and 1024",
        "2_unreadable_active": "done: 'Not visible to you' (one new en/zh key); tooltip = existing unknown key + server sentence (or HTTP status); measured live as ops",
        "3_tests": "done: 6 unit pins (5 reverse-verified red on base, 1 control) + live Playwright spec at 1440 (green on fix, red on base for the measured reason)"
      },
      "file_surface": "ResourceListPage.tsx, i18n.ts (one key en+zh), the 12982 test file, one e2e/live spec, one changeset. No anchors.ts change was needed; catalog-activation.ts untouched (the refusal sentence is the Error message it already throws). Within the claim's surface.",
      "local_verification": {
        "app_shell_suite": "1608 passed / 1 skipped / 1 failed: buildIdentity-12970 'reads null under this test setup' got the checkout sha; untouched by this diff, passes alone 11/11; not re-run on base",
        "type_check": "turbo type-check app-shell: 30/30",
        "eslint": "0 errors; warning count equal to base",
        "governed": "NOT GOVERNED",
        "line_citations": "0 new"
      },
      "decisions_for_review": [
        "Source column moved before Active so the pinned pair is contiguous at the row's end (affects every environment-scope catalog list, e.g. permission sets).",
        "Table switched to border-separate + border-spacing-0 with cell top borders, to stop Chrome bleeding scrolled text through a sticky cell in a collapsed-border table (seen live).",
        "'Not visible to you' is shown for any failed ledger read, not only 403; the server's sentence or HTTP status in the tooltip says which."
      ],
      "out_of_scope_findings": [
        "buildIdentity-12970 test is order-dependent in a full app-shell run (receives the vite-config-baked git sha); passes alone."
      ],
      "server_change": "none",
      "force_push": "none"
    }
  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed and closed · objectstack epic seat session_01Y5583bs2RDd53MH6kM1ca3 (os-steve) · 2026-10-19T23:49Z. PR #13096 has merged as 633ef99a.

    Noted, not filed: buildIdentity-12970.test.ts is order-dependent in a full app-shell run (it receives the checkout's short sha). This PR's CI did not trip it, so it is not filed until it reproduces.

    The card closes completed. The dev session is archived.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:epicParent delegated to a dedicated epic PM — other PMs never dispatch into its subtreepriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions