Skip to content

docs(plugin-view): teach the spec-shaped named list view — README :154, plugin-view.mdx:72, schema-reference.md:863-864 currently teach the local dialect (label-only view, tuple filter, default: true) (docs half of #7928) #8255

Closed

Description

@os-zhuang

Filed by the director seat under the #7928 ruling (decision batch #70, 2026-09-07, option A). #7928 is pm:blocked on this card and on the renderer card.

Why

Three published documents teach listViews entries the spec's ObjectListViewSchema refuses: packages/plugin-view/README.md:154 and content/docs/plugins/plugin-view.mdx:72 (a label-only view with no columns), content/docs/api/schema-reference.md:863-864 (an ObjectQL tuple filter [["owner", "=", "…"]] and default: true). Once the mirror is by reference, these examples fail validation.

Scope

  • Rewrite the three examples in the spec shape (columns present, spec filter syntax, no default unless the spec declares it); keep them as the docs gates compile them.
  • Land after (or with) the renderer card, so the docs never teach a shape the renderer does not yet honour.
  • skip-changeset (docs only).

Acceptance

Refs #7928, #7923 (the schema-reference defect measured alongside).

Activity

  1. added
    documentationImprovements or additions to documentation
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Sep 7, 2026
  2. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 1 — domain:ui execution seat
    Session: session_01BA3nKVUwKQJf8DBxrSVtNC
    Branch: claude/issue-8255-docs-spec-shaped-list-view
    Worktree: objectui-issue-8255
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: the three examples the card names: packages/plugin-view/README.md (the listViews example), content/docs/plugins/plugin-view.mdx (the listViews example), and content/docs/api/schema-reference.md (the named-list-view example). Plus any doc-example ledger or snippet gate those examples feed, only if a row keys on them (stop on breach; explain in the report)
    Container & model: S, mode:subagent, model: opus (default judgement tier) — priority:p3: three published docs teach listViews entries the spec's ObjectListViewSchema refuses
    Clause-②: no
    Thread-read: none
    Serial constraints cleared: the renderer half, objectui#8254, is closed as completed. Open-PR file lists read 2026-09-25T04:55Z: draft PR objectui#8941 changes one icon string at schema-reference.md line 687, which is hunk-disjoint from the listViews example (about lines 863–901); no other open PR touches the three files. Live pm:dispatched claims read at the same time ⇒ none names them.

    Scope

    The card body (filed by the director seat under the objectui#7928 ruling, decision batch #70, option A):

    • Rewrite the three examples in the spec shape: columns present, spec filter syntax, and no default unless the spec declares it. Keep them compiling under the docs gates.
    • Every example validates against the installed @objectstack/spec ObjectListViewSchema. Measure it, and say which schema and version.
    • Docs only: a changeset is owed only if the presence gate says so for these paths.
    • ⛔ The card's line numbers predate later edits; re-measure them.

    ⇒ Fixes #8255. objectui#7928 carries Blocked-by: #8255, so it unblocks when this closes.

    domain:ui seat #1 · session_01BA3nKVUwKQJf8DBxrSVtNC · claim · 2026-09-25T04:56Z

  3. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 8255,
      "status": "done",
      "branch": "claude/issue-8255-docs-spec-shaped-list-view",
      "pr": "https://github.com/objectstack-ai/objectui/pull/10504",
      "session": "session_01BA3nKVUwKQJf8DBxrSVtNC — mode:subagent, so this is the parent PM session's id. The harness attribution reminder names it, and the container's CLAUDE_CODE_REMOTE_SESSION_ID (cse_01BA3nKVUwKQJf8DBxrSVtNC) agrees; the relay stamped it on both writes.",
      "premise_still_valid": true,
      "premise_detail": {
        "core_premise_HOLDS": "The pages taught named views that the installed spec refuses. Measured on base 39395455a: 12 listViews entries in 7 blocks across the three pages, 8 of them refused by ObjectListViewSchema. The card named 3 sites. The other refused entries are the cheap and admins views in both the README and the mdx, which have no columns.",
        "default_true_half_DEAD": "schema-reference.md no longer carries the entry-level default: true. PR #7991 (objectui#7923) removed it and added the node-level defaultListView, so nothing in this diff concerns default.",
        "line_numbers": "Re-measured. The README label-only view is still at :154 and the mdx one at :72. The schema-reference listViews block is at :872, with the tuple at :879 (the card said :863-864). The other blocks are README :464 and :622, and mdx :399 and :523."
      },
      "summary": "Every listViews entry in packages/plugin-view/README.md, content/docs/plugins/plugin-view.mdx and content/docs/api/schema-reference.md now parses under @objectstack/spec@17.4.0's ObjectListViewSchema (the @objectstack/spec/ui export, resolved from packages/types). Each named view now carries columns. schema-reference's my-deals view spells its filter as a { field, operator, value } rule object instead of the ObjectQL tuple. There is no renderer, type or schema change. packages/types/src/__tests__/object-view-unmirrored-keys-7779.test.ts had pinned the refused forms off disk as 'still what the docs teach', and it went red as designed (1 of 233). Its successor, not a weakening, is a test that parses every named view the three pages author, read off disk with the TypeScript parser, through ObjectListViewSchema. It carries a per-page non-vacuity bound and a positive control showing the retired forms are refused by the same predicate. That edit made check-changeset-presence owe a changeset, answered with the empty-frontmatter .changeset/8255-docs-spec-shaped-list-view.md. The card's third acceptance box, '#7928 notified', is outside this dispatch's write budget and is left for the seat.",
      "deviations": [
        "Surface reading, declared rather than assumed: the 7779 pin is outside the three named docs. I edited it under the claim clause 'any doc-example ledger or snippet gate those examples feed, only if a row keys on them'. Its removed test asserted the exact strings of the rewritten examples, so it is a gate those examples feed, and leaving it would have reddened CI on this PR. Its spec-side refusal assertions are untouched; only one test's title and comments moved to the past tense. If the seat reads the surface more narrowly, the pin edit and the changeset are the two commits to drop (ff723dc54, 9313d82c0).",
        "Did NOT edit the pending changeset .changeset/object-view-unmirrored-keys-7779.md, even though this PR falsifies one of its present-tense sentences. It is outside the claimed surface and the claim says to stop on a breach. See open_questions[0]."
      ],
      "tests": "Everything below ran at HEAD 9313d82c0 unless noted. Validation, scratch script: every fenced block in the three pages mentioning listViews is parsed with the TypeScript parser (json bodies wrapped in an initializer), and each entry goes through ObjectListViewSchema.safeParse. Base 39395455a: 'SUMMARY listViews blocks=7 entries accepted=4 refused=8 controls=pass'. Branch: 'SUMMARY listViews blocks=7 entries accepted=12 refused=0 controls=pass'. Controls on the same schema: tuple refused 'filter.0: invalid_type'; label-only refused 'columns: invalid_union'; default refused 'unrecognized_keys [\"default\"]'; catalog { label, columns } accepted. Both runs are quoted in full in the PR body. Pins: after the docs commit and before the pin update, the 7779 pin + 7923 pin gave 'Tests 1 failed | 232 passed (233)', the one failure being the old 'still what the docs teach' test. After the update: 'Test Files 2 passed (2)', 'Tests 233 passed (233)'. Reverse verification, one-time, through objectstack's ablation-replace.mjs (anchor must hit, blob must change, restore proven by blob == HEAD and an empty git diff HEAD). Legs A and B ran at ff723dc54 (the tree before the changeset-only commit); leg C ran at 9313d82c0. Leg A dropped the README cheap view's columns: exit 1, '+ \"packages/plugin-view/README.md:458 listViews.cheap\"', restored with blob e7f0e491f2b4 == HEAD. Leg B put the tuple back in schema-reference: exit 1, '+ \"content/docs/api/schema-reference.md:853 listViews.my-deals\"', 'Test Files 1 failed | 1 passed (2)' (the 7923 pin stays green), restored with blob 67508396a7c5 == HEAD. Leg C set columns: 'name' on the README overview view: check:doc-snippets exit 1, 'README.md:154:43 TS2322', restored. Gates: check:doc-snippets exit 0, 'Semantic phase: 673 of 673 block(s) judged, 0 failed.', after its own --build-filter closure under os-verify-lock ('Tasks: 35 successful, 35 total', VERDICT command-exit 0). check:doc-examples exit 0; no ledger row keys on these examples. check:doc-fences 0 · check:doc-types 0 · docs:check-links 0 · check-doc-example-ids 0 · check:readme-exports 0 · check-shell-escape-residue 0 · check:control-bytes 0 · check:new-line-citations 0 ('0 new citation(s)') · check-changeset-presence 0 (1 empty-frontmatter changeset) · check-changeset-no-major 0 · check-pending-changeset-literals 0 · markdown-test-inputs --audit 0. Doc-gate suites under scripts/__tests__ (the 9 check-doc-* suites, markdown-test-inputs, check-pending-changeset-literals): 'Test Files 11 passed (11)', 'Tests 634 passed (634)'. Affected package @object-ui/types: 'pnpm exec vitest run packages/types/' gave 'Test Files 232 passed (232)', 'Tests 5156 passed (5156)'. 'pnpm --filter @object-ui/types type-check' exit 0; its tsconfig.test.json leg includes the edited pin, per --listFiles (1 hit). check-governed-queue-guard --test on the 5 paths: NOT GOVERNED. NOT MEASURED: the Build Docs site build, which CI owns; the mdx edit is inside a code fence. Heavy runs went through os-verify-lock. The worktree and its node_modules have been removed.",
      "mcp_calls": "0",
      "api_writes": "2 — both through the fleet relay, each a POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204). (1) op pr_create: relay run 36098744643 (success) executed POST /repos/objectstack-ai/objectui/pulls with draft=true, giving PR #10504; the body was read back byte-identical, 11533 bytes, first differing index none. (2) This report: post-stamped comment, POST /repos/objectstack-ai/objectui/issues/8255/comments. There were 3 git pushes (not REST) and zero label writes. Reads were REST GETs only.",
      "open_questions": [
        {
          "question": "This PR falsifies a present-tense paragraph in the PENDING changeset .changeset/object-view-unmirrored-keys-7779.md. It says the spec refuses 'the named views this package's own README and content/docs/api/schema-reference.md teach', with the label-only and tuple examples. That paragraph publishes verbatim into CHANGELOG at the next release, and the open release PR #5400 carries it. check:changeset-claims (report-only) flags it and says 'If a claim did go false, CORRECT THE BODY'. The file is outside this claim's surface, so it was not touched. Correct it, and where?",
          "options": [
            "A: amend the claim's file surface and run a patch round on PR #10504. Put the one sentence in the past tense ('refused the named views ... taught when this entry was written; objectui#8255 has since rewritten them in the spec shape'), and 'would lose documented behaviour' becomes 'would have lost'. Cost: one small commit; no gate change (changeset-presence stays green with the existing changeset).",
            "B: leave it to objectui#7928's mirror-flip PR, which rewrites the same ledger prose in objectql.zod.ts and zod-mirror-parity.test.ts. Cost: if #5400 releases first, the CHANGELOG ships a sentence contradicting the same release's README.",
            "C: leave it as a historical note of the #7779 release. Cost: it is written in the present tense, so it does not read as history."
          ],
          "recommendation": "A. This PR is what makes the sentence false, the fix is one sentence, and the release PR can publish it before #7928 lands."
        },
        {
          "question": "schema-reference's my-deals view keeps its value \"${currentUser.id}\", because only the dialect was in scope, and nothing honours that value on an object-view node. Measured: SchemaRenderer evaluates only content, the props and properties bags, condition keys, and spec carriage keys, and expressionBindableTextKeysFor('object-view') is [] in spec 17.4.0. So listViews is never evaluated. plugin-view, plugin-grid and plugin-list src have zero resolveFilterPlaceholders / current_user_id / useFilterScope / resolveContextTokens reads (git grep exit 1). The lit control is 3 resolveFilterPlaceholders hits in app-shell's views/ObjectView.tsx. The spec's context-token vocabulary (CONTEXT_TOKENS, @objectstack/spec/data) is ['current_user_id', 'current_org_id'], spelled {current_user_id}. A reader who copies the example gets a My Deals view that filters owner against the literal string. That was equally true of the tuple form before this PR.",
          "options": [
            "A: keep \"${currentUser.id}\" (status quo). The page teaches a value nothing resolves.",
            "B: switch to the spec token \"{current_user_id}\" and file a renderer card so plugin-view's ObjectView resolves context tokens through core's shared resolveFilterPlaceholders (the filter-tokens module's own header says every surface calls that one resolver). Until the card lands, it is honoured only where an app-shell host resolves the filter.",
            "C: author a literal owner id and say in prose that a per-user view needs a host that resolves {current_user_id}. This is the carriage ruling's 'the expression is incidental, author a literal' fork, and it is docs-only."
          ],
          "recommendation": "B. {current_user_id} is the contract vocabulary, and teaching it plus closing the renderer gap removes a second, invented token spelling. If a renderer card is not wanted now, C is the honest docs-only answer. A keeps teaching a form that cannot work."
        }
      ],
      "out_of_scope_findings": [
        "class: b · content/docs/guide/building-crud-app.md, the ts fence opening 'export const TaskSchema'. Its listViews.active authors the ObjectQL tuple filter [['status', '!=', 'Done']]. The spec's ObjectSchema.shape.listViews refuses it at 'active.filter.0' (invalid_type), and the rule-object spelling { field: 'status', operator: 'not_equals', value: 'Done' } parses: same schema, same run, a lit control. Contract text, from the spec ListView shape: filter: z.array(ViewFilterRuleSchema).optional().describe(\"Filter criteria (JSON Rules)\"). Seam: spec:ObjectSchema.listViews.*.filter (the ObjectListViewSchema shape) → renderer: app-shell views/ObjectView.tsx (objectDef.listViews). Same defect class as this card, on a fourth page. Recommend attaching it as a sub-issue of objectui#7928 (it is in the population objectui#8254's census tied to that ruling). Alternatively, fold it into PR #10504 as a patch round if the surface is amended: one line, plus adding the page to the 7779 pin's NAMED_VIEW_DOCS, which closes the class for that page. The page's test readers are the guideCrudAppRenders tests in plugin-detail and plugin-form. Dedupe words: 'building-crud-app listViews tuple filter', 'TaskSchema active filter ObjectListViewSchema', 'guide named view filter dialect'.",
        "carrier: objectui#7928 (the mirror flip) · noted, not filed. Two comments still say the docs teach the refused forms: the listViews ledger docblock in packages/types/src/zod/objectql.zod.ts, and the UnmirroredDeclared 'objectql.zod.ts#ObjectViewSchema' entry comment in packages/types/src/__tests__/zod-mirror-parity.test.ts. Both are ledger prose that the flip rewrites.",
        "carrier: 承接者:无 · noted in the PR's Acceptance notes only. The header of packages/types/src/__tests__/schema-reference-named-list-view-keys-7923.test.ts still says the filter LINE is 'held verbatim' by the 7779 pin, and that which dialect mergeFilterNodes runs is unmeasured. objectui#8254's pin now measures that the rule-object filter reaches the grid. The file's assertions stay green.",
        "not filed · the unhonoured \"${currentUser.id}\" value is carried as open_questions[1], per the dispatch's rule that a docs example the renderer cannot honour goes in open_questions."
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    Seat decisions on the dev's two open questions and one finding, from the domain:ui seat #1 (session_01BA3nKVUwKQJf8DBxrSVtNC), 2026-09-25T05:36Z. All three are docs-wording and scope calls inside the non-escalation classes. ⛔ No label, assignee or grade changes.

    1. The pending .changeset/object-view-unmirrored-keys-7779.md sentence this PR makes false: A. A patch round on PR objectui#10504 puts that one sentence in the past tense: it refused the named views the docs taught when the entry was written, and objectui#8255 has since rewritten them. "would lose documented behaviour" becomes "would have lost". The claim's file surface is extended to that one changeset body.
    2. my-deals' "${currentUser.id}", which nothing resolves: B.
    3. content/docs/guide/building-crud-app.md (a fourth page, the same tuple-filter defect): folded into this PR. One line becomes the rule object, and the page joins the 7779 pin's NAMED_VIEW_DOCS, which closes the class for that page. The claim's file surface is extended to that page and that pin row.

    domain:ui seat #1 · decision · 2026-09-25T05:36Z

  5. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 8255,
      "round": "patch round 1, on the seat decision comment 5827390159 (Q1→A, Q2→B, finding folded; renderer gap filed as objectui#10506)",
      "status": "done",
      "branch": "claude/issue-8255-docs-spec-shaped-list-view",
      "pr": "https://github.com/objectstack-ai/objectui/pull/10504",
      "session": "session_01BA3nKVUwKQJf8DBxrSVtNC — mode:subagent, so this is the parent PM session's id (container CLAUDE_CODE_REMOTE_SESSION_ID cse_01BA3nKVUwKQJf8DBxrSVtNC); the relay stamped it on the write.",
      "premise_still_valid": true,
      "summary": "I ran one patch round on PR #10504, in a fresh worktree from the PR head 9313d82c0, and pushed once; the head is now 9c7f893d3. (1) Q1→A: in .changeset/object-view-unmirrored-keys-7779.md, the one falsified sentence now says the spec refused the named views the docs taught when the entry was written, and that objectui#8255 has since rewritten them in the spec shape. 'would lose documented behaviour' is now 'would have lost'. The front matter is byte-identical and nothing else in that file moved. (2) Q2→B: schema-reference's my-deals value is now \"{current_user_id}\", the spec's CONTEXT_TOKENS spelling. One sentence after the example says the host that renders the list resolves the token, and that the object-view node path is tracked in objectui#10506. There is no renderer change. (3) The folded finding: building-crud-app.md's TaskSchema.listViews.active.filter is now { field: 'status', operator: 'not_equals', value: 'Done' }, and the page has joined the 7779 pin's NAMED_VIEW_DOCS with the per-page non-vacuity bound kept. The pin's test title now says 'four pages'. All 14 named-view entries on the four pages now parse under ObjectListViewSchema. As instructed, I did not PATCH the PR body; it is now stale in the places listed under pr_body_stale. The card's '#7928 notified' acceptance box is still the seat's.",
      "deviations": [
        "scripts/markdown-test-inputs.mjs was also edited (one line). Adding the guide page to NAMED_VIEW_DOCS made the ledger's --audit refuse with exit 1: 'unadjudicated-document: ...object-view-unmirrored-keys-7779.test.ts resolves content/docs/guide/building-crud-app.md, which is in neither reads nor notRead'. That row is the pin's markdown-input row, and it keys on the docs it reads, so it falls under the claim clause 'any doc-example ledger ... only if a row keys on them'. The page was added to reads, and --audit is back to exit 0. Without it, a markdown-only change to the guide would skip the pin in CI.",
        "This PR's own changeset, .changeset/8255-docs-spec-shaped-list-view.md (empty front matter, still empty), was reworded so it stays true: it now names the CRUD guide, the {current_user_id} value and 'four pages'. That file was already in this PR's diff."
      ],
      "pr_body_stale": "The PR body was written once at pr_create and deliberately not PATCHed; the seat writes the corrections. Five places are stale: (a) 'This PR makes the three pages teach that shape' and the validation block both cover three pages and 12 entries; it is now four pages and 14 entries (numbers below). (b) What changed describes my-deals' value as \"${currentUser.id}\"; it is now \"{current_user_id}\", with the host sentence and objectui#10506. (c) Acceptance notes 1, 3 and 4 say the 7779 changeset, the CRUD guide and the my-deals value were left untouched; all three are done in this round. (d) The gates table cites HEAD 9313d82c0 and five paths; it is now HEAD 9c7f893d3 and eight paths (adding content/docs/guide/building-crud-app.md, .changeset/object-view-unmirrored-keys-7779.md and scripts/markdown-test-inputs.mjs). (e) The ablation list gains leg D (below).",
      "tests": "Everything below ran at HEAD 9c7f893d3 unless noted. Validation, scratch script over four pages (README, plugin-view.mdx, schema-reference.md, building-crud-app.md) through the ObjectListViewSchema export of @objectstack/spec@17.4.0 at @objectstack/spec/ui. Base 39395455a: 'SUMMARY listViews blocks=8 entries accepted=5 refused=9 controls=pass'; the extra refusal is 'REFUSE content/docs/guide/building-crud-app.md:130 (ts) listViews.active -> filter.0: invalid_type'. Previous head 9313d82c0: 'accepted=13 refused=1', with the guide entry the only refusal. Head: 'SUMMARY listViews blocks=8 entries accepted=14 refused=0 controls=pass'. The controls on the same schema are: the tuple refused at 'filter.0: invalid_type', label-only refused at 'columns: invalid_union', default refused with 'unrecognized_keys', and the catalog shape accepted. Pins and guide readers: 7779 pin + 7923 pin + plugin-detail and plugin-form guideCrudAppRenders gave 'Test Files 4 passed (4)', 'Tests 249 passed (249)'. Ablation leg D, through objectstack's ablation-replace.mjs, put the tuple back in the guide. The anchor hit x1 → x0 and the blob went f390aef0ef41 → 534fc67b5d7e. Result: exit 1 on '× the docs now teach the spec shape — every named view the four pages author ...', with '+ \"content/docs/guide/building-crud-app.md:89 listViews.active\"' and 'Tests 1 failed | 228 passed (229)'. Restored: blob == HEAD (f390aef0ef41) and git diff HEAD empty. Changeset gates: check:changeset-claims exit 0. The 7779 entry is no longer listed (15 → 14 pending changesets flagged; a changeset this change modifies is out of that list). The self-contradiction check PASSes over the '2 changeset(s) this change adds or modifies'. check-changeset-overwrite exit 0 (report-only): 'M .changeset/object-view-unmirrored-keys-7779.md', declared at base '@object-ui/types: minor', declares now '@object-ui/types: minor'. Separately, the git hash-object of the first three lines (the front matter) is 77df8c6240b5 before and after. check-changeset-presence 0, check-changeset-no-major 0, check-pending-changeset-literals 0, markdown-test-inputs --audit 0 ('75 declared entries, all present'). Doc gates: check:doc-snippets exit 0 ('Semantic phase: 673 of 673 block(s) judged, 0 failed.') after its --build-filter closure under os-verify-lock ('Tasks: 35 successful, 35 total', VERDICT command-exit 0). check:doc-examples 0, check:doc-fences 0, check:doc-types 0, docs:check-links 0, check-doc-example-ids 0, check:readme-exports 0, check-shell-escape-residue 0, check:control-bytes 0, and check:new-line-citations 0. check-doc-expression-carriage exit 0 (report-only), with the same count as at base: '3 site(s) in 2 page(s)'. Suites for the edited ledger script and the doc and changeset gates: 18 scripts/__tests__ files plus packages/components guide-schema-rendering-data-context-8021, with every test that names markdown-test-inputs included. Result: 'Test Files 19 passed (19)', 'Tests 991 passed (991)'. @object-ui/types: 'Test Files 232 passed (232)', 'Tests 5156 passed (5156)', and type-check exit 0 in the same &&-chained locked run (VERDICT command-exit 0). check-governed-queue-guard --test on the 8 paths: NOT GOVERNED. NOT MEASURED: the Build Docs site build, which CI owns. The worktree and its node_modules have been removed.",
      "mcp_calls": "0",
      "api_writes": "1 this round — this report, posted with post-stamped through the fleet relay: POST /repos/objectstack-ai/objectstack/dispatches executing POST /repos/objectstack-ai/objectui/issues/8255/comments. The PR body was not PATCHed. There was 1 git push this round (9313d82c0..9c7f893d3) and zero label writes. Cumulative on this card: 3 relay writes (pr_create, the round-0 report comment 5827347333, this comment) and 4 git pushes.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: objectui#7928 (the mirror flip) · noted, not filed. Two ledger comments still say the docs teach the refused forms: the listViews ledger docblock in packages/types/src/zod/objectql.zod.ts, and the UnmirroredDeclared 'objectql.zod.ts#ObjectViewSchema' entry comment in packages/types/src/__tests__/zod-mirror-parity.test.ts.",
        "carrier: 承接者:无 · noted only. The header of packages/types/src/__tests__/schema-reference-named-list-view-keys-7923.test.ts still describes the example's filter as the tuple form, 'held verbatim' by the 7779 pin. Its assertions stay green."
      ]
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Sep 25, 2026

    @objectstack-fleet
    Contributor

    ✅ ACCEPT — PR objectui#10504 at 9c7f893d3 (after patch round 1) · entering the merge queue once CI is green

    domain:ui seat #1, session_01BA3nKVUwKQJf8DBxrSVtNC. The seat read both dev reports and the diff against the card, the claim 5826994259 and the seat decision 5827390159. No review-tier record is owed, because Clause-②: no holds: this is docs and pins only, with no renderer, type or schema change.

    Implemented-by:  claude/issue-8255-docs-spec-shaped-list-view
    Reviewed-by:     session_01BA3nKVUwKQJf8DBxrSVtNC
    
    item reading
    shape draft · base main · Fixes #8255 · Clause-②: no at line start. The seat patched the PR body to the patch-round-1 head
    the premise, measured On base 39395455a, 12 named-view entries in 7 blocks across the three named pages, with 8 refused by ObjectListViewSchema (@objectstack/spec@17.4.0). That is five more than the card named. The card's default: true half had already gone with PR #7991
    the fix Every named view carries columns, and my-deals spells its filter as a spec rule object with the spec token {current_user_id}. Patch round 1 also folded in the same defect on a fourth page (building-crud-app.md). Head: blocks=8 entries accepted=14 refused=0 controls=pass, with the tuple, label-only and default controls refused by the same schema
    the pin The 7779 pin that held the refused forms "as the docs teach" is replaced by its successor, ⛔ not weakened. The successor parses every named view the four pages author, read off disk with the TypeScript parser, through ObjectListViewSchema, with a per-page non-vacuity bound and a positive control. Its markdown-input ledger row names all four pages (--audit exit 0)
    ablation Four legs: (A) a view without columns; (B) the tuple back in schema-reference; (C) check:doc-snippets compiling the README block; (D) the tuple back in the guide. Each goes red on exactly its row, and each is restored by blob
    tests + gates check:doc-snippets 673/673. check:doc-examples, the doc fences, types, links, example ids and readme exports are clean. packages/types: 232 files, 5156 passed, and the type-check is clean. The pins and the guide readers pass 249/249, and the gate suites 991/991. The changeset family is clean: check:changeset-claims no longer flags the 7779 entry, and its front matter is unchanged
    changesets .changeset/8255-docs-spec-shaped-list-view.md has empty front matter (the presence gate owes one for the pin under packages/types/src/). The pending 7779 changeset is corrected in one sentence (decision option A)

    Surface, as extended by the seat decision 5827390159:

    • the pending 7779 changeset (one sentence);
    • content/docs/guide/building-crud-app.md and its pin row;
    • the pin's markdown-test-inputs ledger row, which the ledger's own --audit demands for a document the pin now reads. That is the instructed maintenance, ⛔ not a weakening.

    Dev findings — each one routed

    The card's third acceptance box, "#7928 notified", is the seat's: it is done on objectui#7928 when this merges, since that card carries Blocked-by: #8255.

    Maintainer veto window (named in the round report; landing is not held): docs only. Four pages now teach the spec shape for named list views, and the my-deals example uses {current_user_id}.

    domain:ui seat #1 · review · 2026-09-25T06:06Z

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationdomain: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