Skip to content

skills(objectui): rules/protocol.md's「✅ CORRECT」data-table example omits the required data, so both authoring faces refuse what the skill teaches agents to copy #12135

Closed

Description

@objectstack-fleet

Filing class: ① product defect in a shipped surface. skills/** ships to customer agents through npx skills add, and it is the shipped surface 北极星 #4 names. Reach: a public door. objectui validate refuses the example the skill labels correct.

  • Who acts: triage grades and routes. skills/** is governed, so the likely reader is the domain:skills @ objectui seat, and the fix merges by the maintainer's hand.
  • Dedupe: an objectui issue search for "skills objectui protocol.md correct example data-table missing data refused by objectui validate" returned 28 hits, closed included. None is this. The nearest are objectui#11009 and objectui#11414 (closed), other sentences in the same skill files.
  • Found by: the domain:devx @ objectui seat (session_01DwLS3LzXyNmyTunMGbpc8W), from the objectui#12131 delivery (os-dev-report 6108092017).

The reading

On objectui origin/main 10713937, skills/objectui/rules/protocol.md:183-188:

**✅ CORRECT:**
<!-- os:check -->
{ "type": "data-table", "columns": [{ "header": "Name", "accessorKey": "name" }] }
  • DataTableSchema declares data: z.array(z.any()), required: packages/types/src/zod/data-display.zod.ts:422 and :451.
  • Per the dev's probe (⛔ not re-run by this seat), both the strict and the tolerant face refuse the fence with 「data: Invalid input: expected array, received undefined」.
  • The fence carries <!-- os:check -->, but nothing judges it. scripts/check-skill-examples.mjs reads ts/tsx fences only (TS_FENCE_LANGUAGES = new Set(['ts', 'tsx', 'typescript']), :433), and the JSON-fence gate in PR objectui#12127 reads content/docs only.

Why it matters

The fence is the skill's own counter-example to 「Adding custom properties not defined in the spec」. An agent copying the correct half writes a document objectui validate refuses. That teaches it the validator is wrong rather than the example.

Direction (for triage; not a ruling)

Add the required data (an inline array) to the 「✅ CORRECT」 fence, or show the data-bound node the paragraph means. The dev counted 9 refused skills/** fences on main, 8 of them labelled counter-examples; re-derive whether any other 「correct」 fence is refused. Whether JSON fences in skills/** should enter a gate is a separate question for the skills seat, under the framework's 「新增门禁默认否」.

Activity

  1. objectstack-fleet commented on Oct 11, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, documentation · priority:p3 · domain:skills · area:devpath, into pm:queue

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-11T10:56Z. ⛔ Not a claim, ⛔ not a dispatch.

    • Lane: skills/objectui/rules/protocol.md belongs to the domain:skills @ objectui seat. skills/** is governed, so the fix merges by the maintainer's hand.
    • Why p3: one 「✅ CORRECT」 fence omits the required data, so an agent copying it writes a node the validator refuses. That is the same weight as docs: four README JSON examples and three component-page interface blocks teach keys objectui validate refuses, outside the JSON-fence gate's scan surface #12131.
    • Direction:
      • Add the required data (an inline array) to the fence, or show the data-bound node the paragraph means.
      • Re-derive the dev's count of 9 refused skills/** fences on main (8 of them labelled counter-examples), and repair any other 「correct」 fence that is refused.
    • The <!-- os:check --> marker, which triage reads as the real question: it promises a check that nothing performs. check-skill-examples.mjs reads ts/tsx fences only, and the fence gate in feat(scripts): judge JSON doc fences through the strict authoring face (objectui#5250 slice B) #12127 reads content/docs only. A marker that claims a check is declared ≠ enforced, so it either becomes true or comes off.
      • Triage's default is no new gate (「新增门禁默认否」). Take the marker off the JSON fences, unless the skills seat proposes, with the measured count, that check-skill-examples.mjs reads JSON fences through the strict face, with the counter-examples marked as expected refusals.
      • That proposal widens an existing checker's input; it does not add a new gate. But it is the skills seat's to make, as the finding says. ⛔ It is not folded in by default.
    • Clause-②: no.
  2. objectstack-fleet commented on Oct 11, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 2
    Session: session_011u73oxZ5X95qrARPTeoU6v
    Account: zhuangjianguo (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-12135-protocol-correct-fence-data
    Worktree: objectui-issue-12135
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: skills/objectui/rules/protocol.md (the 「✅ CORRECT」 data-table fence, base :181–:188) · any other 「✅ CORRECT」-labelled JSON/jsonc fence under skills/objectui/** the strict face refuses (re-derived count, same defect) · the os:check marker lines on JSON/jsonc fences under skills/objectui/** (removal only, the seat's call on triage's open question) · one empty-frontmatter changeset; ⛔ no change to scripts/check-skill-examples.mjs or any other checker (stop on breach; explain in the report)
    Container & model: S, mode:subagent, model: CONTRACT_REVIEW_TIER (dispatch-gates --tier --repo objectstack-ai/objectui skills/objectui/rules/protocol.md at e84aeb3: MANDATORY — skills/objectui/rules/protocol.md ⇢ 'skills/**' — clause ① (2026-09-10 ruling, verbatim 「必须 fable的还包括对外发布的skills」); no exit taken)
    Clause-②: no — teaching text and a false check marker; no published accept set or public surface moves.
    Responsibility: skills/objectui/rules/protocol.md, objectui's published teaching text | none — objectui's check-skill-examples.mjs reads ts/tsx fences only and objectui#12127's fence gate reads content/docs only, so no checker judges this fence | every agent that installs the objectui skill and copies the 「✅ CORRECT」 fence; the #12131 dev's probe measured both authoring faces refusing it (os-dev-report 6108092017)
    Thread-read: 6108293839
    Serial constraints cleared: no open objectui PR touches skills/objectui/** (open PR list read 2026-10-11T11:43Z: #12137 plugin-detail, two dependabot bumps, the release PR); git ls-remote shows no claude/issue-12135-* branch; the objectui skills seat post #11311 is ⏳ vacant; this seat's other in-flight item is objectstack PR #22827 (#22708), a different repository and surface.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 11, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 12135,
      "status": "blocked",
      "branch": "claude/issue-12135-protocol-correct-fence-data",
      "pr": "https://github.com/objectstack-ai/objectui/pull/12138",
      "session": "session_011u73oxZ5X95qrARPTeoU6v — the harness-stamped id of this cloud run (container CLAUDE_CODE_REMOTE_SESSION_ID; the relay derived the same id)",
      "premise_still_valid": true,
      "summary": "D1 landed as draft PR objectui#12138 (head d2619ba, first body line 'Fixes #12135', 'Clause-②: no' on line 2, governed surface skills/**, assignee zhuangjianguo): the '✅ CORRECT' data-table fence under 'Rule: No Schema Property Invention' in skills/objectui/rules/protocol.md gains a one-row inline `data` array (DataTableSchema declares `data: z.array(z.any())` required), plus an empty-frontmatter changeset (skills/** ships via npx skills add and is in no package's files[]; `git grep '\"skills' -- 'packages/*/package.json'` answers nothing). The card's core premise held at 9b75509: both faces refused that fence with 'data: Invalid input: expected array, received undefined'; at head both accept it. BLOCKED half — D4 (marker removal) was NOT executed, per the dispatch's own stop rule, because the D2 mechanism assumption is false: scripts/check-skill-examples.mjs reads the os:check marker on json/jsonc fences (JSON_FENCE_LANGUAGES = new Set(['json','jsonc']), three lines under the TS_FENCE_LANGUAGES the card quotes), parses every marked json fence, reports orphan markers, and holds the marked json population under a SHRINK-ONLY MARKED_FLOOR row ['json', 70] (comment '39 to 70 (objectui#7474)'); workflow skill-examples.yml ('Skill Example Check') runs it on every PR. Mutation leg (objectstack scripts/ablation-replace.mjs, WRAP, nothing committed): deleting exactly the marker above the CORRECT fence (anchor 1 then 0, blob ffd2a860 then 5138310f, 12 then 11 marker lines) makes the gate exit 1: 'json: 69 marked fence(s), floor 70 — 1 short', with its remedy text '⛔ Deleting a marker is not a way to make a red example pass'; restore proven (blob ffd2a860 equals HEAD, git diff HEAD empty, 12 marker lines). So the marker is an enforced parse claim, not a check nothing performs; executing the ruling would require lowering MARKED_FLOOR inside the checker, which the ruling forbids. D4 counts: marker lines directly above json/jsonc fences under skills/objectui/** before 70 (41 json + 29 jsonc), after 70, none removed; above ts/tsx/typescript fences 18, unchanged; the dispatch's own threshold (more than 25) is exceeded as well. D3 full table (predicate = check-doc-json-fences.mjs exports scanJsonFences/classifyFence/nodeTypesOf + StrictAnyComponentSchema/AnyComponentSchema from BUILT packages/types/dist/zod/index.zod.js, controls held; fences cited by lead-in text, not line address, per objectui AGENTS.md commandment 11): population 70 fences, 48 node documents, 18 no type key, 3 not an object, 1 unresolved type (module), 0 unparseable; refused at base 9 strict / 6 tolerant, at head 8 / 5. Refused rows [guide · tag · type · lead-in or label · strict/tolerant · first refusal reason · class]: (1) guides/schema-expressions.md · jsonc · card · '// Evaluated, then dropped -- renders an empty card' · refuse/accept · at (root): undeclared key props · counter-example; (2) guides/schema-expressions.md · jsonc · text · '// value is RETIRED from text -- refused by name; write content' · refuse/refuse · at value: RETIRED (ADR-0049) · counter-example; (3) guides/schema-expressions.md · jsonc · list · '// ❌ Renders two EMPTY li. children is not a template' · refuse/refuse · at children: REFUSED (objectui#9256, ADR-0049) · counter-example; (4) guides/schema-expressions.md · jsonc · text · '// ❌ Refused by name — value is RETIRED from text; write content' (Common mistakes) · refuse/refuse · at value: RETIRED (ADR-0049) · counter-example; (5) guides/schema-expressions.md · jsonc · text · '// ❌ Worse — evaluated inside the envelope, then discarded' · refuse/accept · at (root): undeclared key props · counter-example; (6) guides/schema-expressions.md · jsonc · text · '// ❌ Object literals not supported' (style as a string) · refuse/refuse · at style: expected record, received string · counter-example; (7) rules/protocol.md · json · card · '❌ WRONG — renders an empty card' · refuse/accept · at (root): undeclared key props · counter-example; (8) rules/protocol.md · jsonc · data-table · 'Example violation' (fields + customProp) · refuse/refuse · at data: expected array, received undefined, then at columns, then undeclared keys fields, customProp · counter-example; (9) rules/protocol.md · jsonc · data-table · '✅ CORRECT' · refuse/refuse at base, accept/accept at head · at data: Invalid input: expected array, received undefined · the defect, repaired. Exactly one correct-labelled refused fence existed, so no other file is touched.",
      "tests": {
        "gates": {
          "node scripts/check-skills-paths.mjs": "exit 0 · ✅ check-skills-paths: OK (89/90 stated path(s) resolve across 20 guide file(s); 1 baselined)",
          "node scripts/check-skill-examples.mjs --self-test": "exit 0 · ✓ check-skill-examples self-test: 60 cases pass",
          "pnpm exec turbo run build $(node scripts/check-skill-examples.mjs --build-filter) --concurrency=2 (os-verify-lock slot objectui-12135-dev)": "exit 0 · Tasks: 29 successful, 29 total · VERDICT command-exit 0 · held the lock 256s",
          "node scripts/check-skill-examples.mjs": "exit 0 · Every marked skill example holds up against the built types · Marked: 18 ts fence(s) (floor 13), 70 json fence(s) (floor 70) · Semantic phase: 18 of 18 ts fence(s) judged, 0 failed · JSON phase: 70 fence(s) parsed, 0 failed",
          "node scripts/check-skill-examples.mjs (MUTATED: the one marker above the CORRECT fence deleted, then restored)": "exit 1 · ❌ check:skill-examples — the MARKED population fell below its floor in 1 category: json: 69 marked fence(s), floor 70 — 1 short (the expected red; restore proven, see summary)",
          "node scripts/check-skill-eval-tokens.mjs --self-test": "exit 0 · OK check-skill-eval-tokens self-test: 29 cases pass",
          "node scripts/check-skill-eval-tokens.mjs": "exit 0 · Every must_contain token is taught by its own skill bundle",
          "node scripts/check-control-bytes.mjs": "exit 0 · ✅ check-control-bytes: OK (scanned 8360 tracked text file(s); skipped 85 binary)",
          "node scripts/check-shell-escape-residue.mjs": "exit 0 · ✅ check-shell-escape-residue: OK (skills: 16 file(s), 211 fence(s))",
          "node scripts/check-new-cross-file-line-citations.mjs": "exit 0 · VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only",
          "node scripts/check-changeset-presence.mjs": "exit 0 · ✅ No source or published contract of a released package changed in this range, so no changeset is owed (1 changeset(s) added)",
          "node scripts/check-changeset-no-major.mjs": "exit 0 · ✅ No changeset declares a `major` bump",
          "node scripts/check-changeset-overwrite.mjs": "exit 0 · ✅ No pre-existing changeset was modified or deleted",
          "node scripts/check-changeset-fixed.mjs": "exit 0 · ✅ All workspace packages are in the changeset fixed group",
          "node scripts/check-pending-changeset-literals.mjs": "exit 0 · ✅ No test source names a pending changeset",
          "node scripts/check-doc-json-fences.mjs (content/docs only; run to confirm it does not read skills/**)": "exit 0 · ✅ Every judged JSON node document in the docs passes the strict authoring face · 'NOT read: pages outside content/docs/'",
          "node scripts/check-governed-queue-guard.mjs --test skills/objectui/rules/protocol.md .changeset/12135-protocol-correct-fence-data.md": "exit 3 · ⛔ GOVERNED — 1 of 2 path(s) are on a governed surface (expected: the PR stays draft for an authorized APPROVED review)",
          "pnpm exec vitest run packages/components/src/__tests__/skill-guide-data-table-binding.test.tsx packages/components/src/__tests__/skill-guide-provider-envelope.test.tsx scripts/__tests__/check-skill-examples.test.ts (os-verify-lock slot objectui-12135-dev-vitest)": "exit 0 · Test Files 3 passed (3) · Tests 144 passed (144) · VERDICT command-exit 0",
          "D3 probe (scratchpad script reusing check-doc-json-fences.mjs exports over skills/objectui/**)": "exit 0 at base and head · controls: refused-control strict=false, accepted-control strict=true · base 9 strict / 6 tolerant refused, head 8 / 5; the only row that moved is protocol.md '✅ CORRECT'",
          "root pnpm test / pnpm lint / type-check / check-doc-links / check-doc-fence-languages / check-doc-component-types / check-doc-snippet-types": "NOT RUN, not owed: no code changed and those scan surfaces exclude skills/** (check-doc-links SCAN_ROOTS has no skills row; the doc gates read content/docs and READMEs); the 9 required checks run on the PR in CI",
          "CI on PR head d2619ba": "in_progress at report time (40 check-runs read after the PR opened: 25 success, 3 skipped, 12 in_progress; no waiting, per contract — CI convergence is the seat's)"
        },
        "line_budget": "skills/objectui/rules/protocol.md 375 to 376 (net +1, the `data` line; within the dispatch's ≤ +1). Bundle skills/objectui/**/*.md (16 files) 4816 to 4817 (net +1, NOT the net reduction the dispatch expected, because the markers stay — see deviations). skills/objectui/SKILL.md 142 to 142. objectui defines no skill token-count gate; the skills gates' verdict lines are in gates above.",
        "deviations": [
          "D4 not executed (no os:check marker removed): the dispatch's D2 assumption ('check-skill-examples.mjs reads ts/tsx fences only') is false on 9b75509 — the script declares JSON_FENCE_LANGUAGES, parses marked json/jsonc fences, and enforces MARKED_FLOOR ['json', 70] shrink-only; the mutation leg shows one removal reds the gate. The dispatch's own stop rule (D2 reader found, and 70 json/jsonc markers exceed its 25 threshold) applies, so only D1 (+ the D3 re-derivation) is delivered and the marker question is returned to the seat (open_questions).",
          "D6 net-reduction expectation not met: the bundle is net +1 (the `data` line) instead of net negative, as a direct consequence of the markers staying.",
          "D3 table cites fences by lead-in text instead of the file:line the dispatch asked for, in both the PR body and this report: objectui AGENTS.md commandment 11 bans a path:line address in any issue or PR body ('an issue or pull-request body has no same file'). The line-numbered probe output stayed in the per-issue scratchpad and is not persisted.",
          "PR body ends with the charter's session-URL footer block (relay read-back: identical, no platform append); commit trailer pair is objectui AGENTS.md's model-free form (Co-authored-by: Claude; Claude-Session URL) over the harness reminder's model-named Co-Authored-By.",
          "The 12-package build closure and the vitest run were launched under os-verify-lock as detached processes with recorded PIDs and awaited with a foreground `tail --pid` (the contract's sanctioned wait shape), so no polling and no heavy run outside the lock.",
          "No reverse-verification of a new guard (none added); the only mutation leg tests the dispatch's mechanism assumption, as recorded above."
        ],
        "files_changed": [
          "skills/objectui/rules/protocol.md (one fence: `data` line added, trailing comma on `columns`)",
          ".changeset/12135-protocol-correct-fence-data.md (new, empty frontmatter, one-paragraph English body)"
        ]
      },
      "mcp_calls": "0 — no MCP GitHub tool called (gh api GET reads only: issue 12135, its comments, comment 6108092017, PR 12138 read-back, check-runs)",
      "api_writes": "2 relay dispatches (POST /repos/objectstack-ai/objectstack/dispatches x2, executed as objectstack-fleet[bot]): (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft forced by the relay) + assignees [zhuangjianguo], run 38137992951 success, read-back 12954/12954 bytes identical; (2) this os-dev-report comment = POST /repos/objectstack-ai/objectui/issues/12135/comments via post-stamped. git push (not REST): 2 pushes of the branch (empty probe, then d2619ba). Zero label writes (objectui path labels are labeler-synced). Zero issue/PR PATCH.",
      "open_questions": [
        {
          "question": "What should happen to the os:check HTML-comment marker on the 70 json/jsonc fences under skills/objectui/**, now that it is measured to be an enforced parse claim (check-skill-examples.mjs, MARKED_FLOOR ['json', 70], shrink-only) rather than a check nothing performs? The seat's ruling ('remove the markers, do not widen the checker') cannot be executed without lowering MARKED_FLOOR inside the checker it forbids touching.",
          "options": [
            "A — keep the markers exactly as this PR leaves them (nothing further to do on this card). 实际业务需求: the parse claim has measured pull — objectui#7474 split 8 multi-document listings so all 70 parse, which is the failure class an agent copying an unparseable fence hits; 项目长远合理性: one authority (the checker + its floor) stays intact, no instrument discarded on a false premise; 防 AI 犯错: parse-level refusal stays, strict-face validity of a copied fence remains unjudged on this surface (the defect class this card repaired, measured 1 of 48 node documents); 创业阶段不扩散: zero cost, no new gate.",
            "B — a separate card for the skills seat: widen check-skill-examples.mjs so marked json/jsonc NODE DOCUMENTS are also judged through StrictAnyComponentSchema from the built dist (the gate already builds @object-ui/types in its closure), with the 8 counter-examples listed in D3 declared as expected refusals. 实际业务需求: would have caught this card's defect mechanically (1 correct-labelled refused fence today); 项目长远合理性: aligns skills/** with content/docs, which objectui#12127 already judges with the same face; 防 AI 犯错: strongest — a 'correct' fence an AI copies is refused by the gate before it ships; 创业阶段不扩散: it widens an existing checker's input, not a new gate, but 新增门禁默认否 still applies without the maintainer naming it; cost ≈ one checker change + 8 declarations + the checker's own test suite.",
            "C — execute the original ruling literally: delete the 70 markers and lower MARKED_FLOOR json to 0 (or drop the json category) in the checker. 实际业务需求: none — it removes a working parse check from 70 fences; 项目长远合理性: contradicts the checker's own header ('⛔ Deleting a marker is not a way to make a red example pass'); 防 AI 犯错: weakest; 创业阶段不扩散: touches the checker the ruling forbids and trades an instrument for nothing."
          ],
          "recommendation": "A for this card (already the PR's state), with B recorded as the skills seat's optional proposal and raised only if the maintainer names the widening; never C. On the four axes A costs nothing and keeps a measured instrument; B is the only option that would have refused this card's defect mechanically, but it is an expansion the framework defaults to 'no' without a maintainer's words; C is the ruling's letter executed against its intent (declared-is-enforced: here the declaration IS enforced)."
        }
      ],
      "out_of_scope_findings": [
        "carrier: the skills seat (this report) — the card's and dispatch's shared misread: 'scripts/check-skill-examples.mjs reads ts/tsx fences only' quotes TS_FENCE_LANGUAGES and misses JSON_FENCE_LANGUAGES three lines below it; not a code defect, so not filed · dedupe words: check-skill-examples json fence marker floor, os:check json fences skills, MARKED_FLOOR json 70",
        "carrier: whoever takes option B — the 8 counter-example fences D3 lists would each need an expected-refusal declaration (6 in guides/schema-expressions.md, 2 in rules/protocol.md); measured, not filed",
        "carrier: 承接者:无 — observation only: on the 'Example violation' data-table fence the strict face's first printed reason is the missing `data`, with `columns` and the undeclared `fields`/`customProp` after it; the fence is a deliberate counter-example refused on every reason, nothing owed · noted in the PR's Acceptance notes"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 11, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — skills seat 2, session_011u73oxZ5X95qrARPTeoU6v (zhuangjianguo) · 2026-10-11T12:27Z · PR #12138, head d2619ba (on base 9b75509).

    Checklist against GitHub, not the report: draft to main; first line Fixes #12135; Clause-②: no at line start; ## 维护者速读(草稿) present, the final posted on the PR; empty-frontmatter changeset present (objectui's correct form: skills/** is in no package's files[]); no content/docs/releases/; files exactly skills/objectui/rules/protocol.md and the changeset (+6/−1); closing keywords: only Fixes #12135. Spot checks: DataTableSchema declares data: z.array(z.any()) without .optional(), so the added line is the required key; the row key matches the column's accessorKey; the marker stays and the checker on origin/main reads it (JSON_FENCE_LANGUAGES, MARKED_FLOOR row ['json', 70], shrink-only), so the dev's D4 stop was the dispatch's own stop rule correctly applied. Dev evidence read: 18 gates listed with exit codes and verdict lines, the "Skill Example Check" family green at head with "70 json fence(s) (floor 70)" and one mutation leg red as expected; 3 vitest files, 144 tests; CI on d2619ba: 41 check-runs, 38 success, 3 skipped by condition (Test (coverage), the coverage-shard matrix placeholder, dependabot), none red; mergeable_state clean (read 2026-10-11T12:26Z).

    Correction accepted publicly: the seat's dispatch (and the card body and triage note 6108293839 before it) said scripts/check-skill-examples.mjs reads ts/tsx fences only and that nothing judges the os:check marker on json/jsonc fences. It reads them, and holds their count under a shrink-only floor. The seat's marker ruling is withdrawn and replaced by A: the markers stay; nothing further is owed on this card. B (strict-face judgment of marked json node documents inside the existing checker, with the 8 counter-examples declared as expected refusals) is put to the maintainer in the 速读 as a named option; not filed unless named. C is refused.

    Deviations accepted: D4 not executed; D6 net +1 (the bundle is 4816 to 4817 lines); D3 cited by lead-in text (objectui AGENTS.md #11); session-URL footer; model-free trailer; lock-held detached runs. Out-of-scope findings, one line each: the shared misread — Acceptance notes, carried here; the 8 expected-refusal declarations — Acceptance notes, owed only with B; the "Example violation" fence's first printed reason — Acceptance notes.

    Contract review (skills/** governed rule text face, in seat at tier) PASS on the PR. Tier H: the PR stays draft with needs-user-decision and review requested from os-zhuang and hotlong; an authorized APPROVED review lands it through the seat. The card keeps pm:dispatched and its assignee until MERGED.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 11, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed — skills seat 2, session_011u73oxZ5X95qrARPTeoU6v (zhuangjianguo) · 2026-10-11T13:05Z

    PR #12138 MERGED by os-zhuang at 2026-10-11T13:03Z as dca25aff on origin/main (the queue's squash of head cff429bee; the queue ref pr-12138-… is gone). Content read on origin/main, not inferred: the "✅ CORRECT" data-table fence in skills/objectui/rules/protocol.md carries "data": [{ "name": "Ada Lovelace" }] after columns; .changeset/12135-protocol-correct-fence-data.md is present with its empty frontmatter; the file still carries 12 os:check marker lines (none removed, as ruled A in ACCEPT 6109019463). This card closed completed by the PR's Fixes (closed_by_pull_requests lists #12138 alone); pm:dispatched is stripped in this act, the assignee stays as the record of the claim. Lane reconciliation after the merge: the objectui domain:skills open set is empty, and this card is the only one that left it, expected.

    Landing path, for the record: the maintainer's approver merged main into the branch (cff429bee), approved on that head (review 5483303502), flipped it ready, enabled auto-merge and enqueued it himself; the contract review was re-recorded on the moved head (6109218919) before the merge, so the landed head has a record of record. Carried, not filed (carrier: the maintainer's word only): option B from the ACCEPT, strict-face judgment of marked json node documents inside scripts/check-skill-examples.mjs with the 8 counter-examples declared, stays an offer in the 速读 (6109023131) under 「新增门禁默认否」. The hot-file entry for skills/objectui/rules/protocol.md is released on the seat post objectstack-ai/objectstack#19287.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 12, 2026

    @objectstack-fleet
    ContributorAuthor

    Option B of the 速读终稿 (comment 6109023131) was named by the maintainer on 2026-10-12 as B2: widen check-doc-json-fences.mjs's SCAN_SURFACE with a skills/objectui/** leg and declare the 8 counter-examples with the gate's existing marker; os:check and the parse floor stay. Filed as objectui#12204 (domain:skills, pm:queue). Nothing else changes on this closed card. — skills seat 1, session_01CinRQcE6T8SvMbhH8D3NhS, 2026-10-12T07:50Z


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:skillspriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions