Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

docs: the console guide Expression Visibility row teaches a navigation visible that reads data with no dataSource, which both validators now refuse #13276

Closed

Description

@objectstack-fleet

Filing gate: ① published docs that now teach a refused spelling, at a named site (pm:queue class). Filed by domain:ui seat 2 (session_01XVp19E1MYUTFM3dnkwz8gB) from the contract review of PR #13275 (objectui#13076). ⛔ Not a claim.

Reader (who acts): the objectui domain:ui lane (content/docs/**).

What

content/docs/guide/console.md, the "Expression Visibility" row of the console feature table, advertises a navigation item visible: "${data.role === 'admin'}" with no dataSource. After objectui#13076 (PR #13275), objectui's NavigationItemSchema chains the spec's navItemVisibleDataNeedsDataSource, as the spec already does. The spec's lexer reads that string as a root data read, so an author who copies it onto a navigation entry is refused by both doors.

The ${…} spelling also predates the console's CEL evaluator.

Expected: the row teaches a navigation visible that both doors accept. Either use a current_user / features predicate (the usual case, such as a role check), or show data only alongside a dataSource and say why. Keep it to that row.

class: a · reach: every author following the console guide's visibility example on a navigation item.
Dedupe words: console guide expression visibility data role, nav visible data without dataSource docs. Parent: objectui#13076. No other open card covers it.


Generated by Claude Code

Activity

  1. added
    area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobs
    bugSomething isn't working
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    and removed on Oct 20, 2026
  2. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 18 (priority:p3)
    Session: session_01XVp19E1MYUTFM3dnkwz8gB
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-13276-console-guide-visibility
    Worktree: objectui-issue-13276
    Domain: domain:ui
    Seat: domain:ui#2
    File surface:

    • content/docs/guide/console.md (the "Expression Visibility" row only).

    ⛔ No other docs row, no code. Stop on breach; explain in the report.
    Container & model: S, mode:subagent, model: opus (default tier; no path-derived mandate)
    Clause-②: no (docs)
    Responsibility: n/a — not a defect card (published docs teaching a spelling both validators refuse after objectui#13076)
    Thread-read: none
    Serial constraints cleared:


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 13276,
      "status": "done",
      "branch": "claude/issue-13276-console-guide-visibility",
      "pr": "https://github.com/objectstack-ai/objectui/pull/13281",
      "session": "session_01XVp19E1MYUTFM3dnkwz8gB",
      "premise_still_valid": true,
      "summary": "Rewrote only the 'Expression Visibility' row of content/docs/guide/console.md (commit 8c9d868aa): it now teaches a CEL navigation `visible` over `current_user` and `features`, with the example `visible: \"'admin' in current_user.positions\"`, and one clause saying a `visible` that reads `data` needs the entry to declare a `dataSource`. The `${...}` spelling is gone. Names were measured on origin/main 8e649da7d: the nav evaluator (navEntryVisible in useNavMemberGates.ts) runs the ExpressionProvider evaluator, whose scope (buildExpressionScope) is current_user plus aliases and features, with no `app` root; buildExpressionUser forwards `positions`; `data` is bound only for an entry with an API dataSource. Premise held: the spec refuses the old row's example; objectui's NavigationItemSchema still accepts it on this base because objectui#13076 has not landed here. Draft PR #13281 opened through the relay with assignee baozhoutao (read back as listed). No changeset: docs-only, and the presence gate says none is owed.",
      "tests": "One-off parse (scratchpad script, not committed) of { id: 'nav_accounts', type: 'object', label: 'Accounts', objectName: 'account', visible } through @objectstack/spec 18.0.0 NavigationItemSchema (@objectstack/spec/ui) and objectui packages/types/src/zod/app.zod.ts NavigationItemSchema. Old row `${data.role === 'admin'}`: spec REFUSE (custom on [visible]: 'This navigation entry's `visible` reads `data`, but the entry declares no `dataSource`...'), objectui ACCEPT (objectui#13076 not on this base). New row `'admin' in current_user.positions`: spec ACCEPT, objectui ACCEPT. Also ACCEPT on both: current_user.hasCapability('studio.access'), features.multiOrgEnabled. Gates at HEAD 8c9d868aa, exit codes recorded to file: exit 0 for check:doc-fences, check:doc-types, docs:check-links (check-doc-links), check:new-line-citations, check:doc-json (exit 2 before the types build, exit 0 after `pnpm --filter @object-ui/types build` run under os-verify-lock, VERDICT command-exit 0), check:phantom-deps, check:self-import, check:unreferenced-sources, check:doc-example-readers, check:handler-key-reads, check:side-effects-array, check:element-data-source-declaration, check:spec-symbols, check:action-forward-parity, check:designer-field-key-parity, check:icon-record-names, check:i18n-keys, check:i18n-drift, check:i18n-designer-parity, check:control-bytes, check-hand-rolled-comment-mask, check-changeset-fixed, check-changeset-presence ('No source or published contract of a released package changed in this range, so no changeset is owed'). NOT MEASURED: check:doc-snippets and check:doc-examples (exit 2, PRECONDITION NOT MET, they need a 34-package build that was not run locally; the edit is a table cell, not a fence). Declared to CI. check:spec-floors exit 1, no-artifact on unbuilt packages: a main-state reading, recorded and not fixed. Lint narrowed: eslint's population (eslint.config.js) is **/*.{ts,tsx}; `eslint --no-inline-config --format json content/docs/guide/console.md` exit 0, 1 file in the JSON output, 0 errors, 1 warning 'File ignored because no matching configuration was supplied'. So the lint narrowing is a measurement that nothing is linted, not a lint pass. No workspace package touched (content/ is outside pnpm-workspace.yaml), so no closure build, typecheck or vitest is owed. Tests that mention guide/console.md (scripts/__tests__/check-doc-links.test.ts) use their own fixtures and do not read the real file.",
      "mcp_calls": "0",
      "api_writes": "3 — git push of the branch (empty probe, then 8c9d868aa; git, not REST); 1 relay pr_create (repository_dispatch POST /repos/objectstack-ai/objectstack/dispatches executing POST /repos/objectstack-ai/objectui/pulls + POST .../issues/13281/assignees as objectstack-fleet[bot]); 1 os-dev-report comment on objectui#13276 via post-stamped. Zero label writes, because the dispatch named no labels and objectui's labels are path-synced.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none (承接者:无) · AGENTS.md section 3 topology table describes @object-ui/core with `visible: \"${data.age > 18}\"`, the same pre-CEL `${...}` spelling, in agent-facing guidance rather than a navigation example. Outside this card's file surface and not one of the three filing classes, so it is only in the PR's Acceptance notes. Dedupe words: AGENTS.md core expression visible ${data} spelling, pre-CEL template visible example"
      ],
      "line_budget": "n/a — no skills/** or governed ledger touched; console.md +1/-1",
      "deviations": "none. PR body footer uses the role file's session-URL form instead of the harness's robot-line form (role file takes precedence). Write pace was REFUSED until 18:27Z, so the pr_create was sent after waiting in the foreground for `--status` to read 'the next write may go'.",
      "files_changed": ["content/docs/guide/console.md"]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #13281 @ 8c9d868aafea7ac108a26de1faf7d756c3fb4b3b · domain:ui seat 2 (session_01XVp19E1MYUTFM3dnkwz8gB)

    • Clause-②: no. One docs table cell; no package touched; no changeset owed (the presence gate agrees). No contract review is owed, and the seat read the report.
    • Seat review: the console guide's "Expression Visibility" row teaches a CEL navigation visible over the variables the nav evaluator actually exposes (measured: navEntryVisible → buildExpressionScope, which provides current_user, its aliases and features). The example is visible: "'admin' in current_user.positions", plus one clause that a visible reading data needs the entry to declare a dataSource. The pre-CEL ${…} spelling is gone.
    • Proof: a one-off parse through the spec's NavigationItemSchema (18.0.0) and objectui's accepts the new example and two siblings (current_user.hasCapability(...), features.multiOrgEnabled) on both. The old example is refused by the spec, and by objectui too since objectui#13076 (8556295).
    • Gates: the doc fences, types, links, json and new-line citations gates exit 0. check:doc-snippets and check:doc-examples need a full workspace build and are CI's; the edit is a table cell, not a fence.
    • CI: all 32 check-runs completed on the head, 29 passed and 3 skipped.
    • Path fork: no governed path. Seat landing.
    • Findings: Acceptance notes. AGENTS.md §3's topology table shows @object-ui/core with visible: "${data.age > 18}", the same pre-CEL spelling, in agent-facing guidance. AGENTS.md is a governed surface outside this lane's PRs, so it is not filed here.

    Next: ready + auto-merge; landing is verified by content on main.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB

    • Merged: PR docs(console): teach a navigation visible that both validators accept #13281 through the merge queue as main 7f6a2dd952.
    • Verified by content: the one file the PR changes has the same blob at 7f6a2dd952 as at the accepted head. The merge message carries no model identifier.
    • Landed: the console guide's "Expression Visibility" row teaches a CEL navigation visible over current_user and features ('admin' in current_user.positions), which both the spec's and objectui's NavigationItemSchema accept. It also says a visible reading data needs the entry to declare a dataSource. The pre-CEL ${…} spelling is gone.

    pm:dispatched is removed.


    Generated by Claude Code

  6. added a commit that references this issue on Oct 28, 2026
    7f6a2dd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:apiThe API a customer can call, and integrations — REST, connectors, webhooks, jobsbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions