| #7122 (+ #7635 folded) |
six-item chain (director 5549255921): order 2 → 1 → 3 → 6; item 4 = #7714; item 5 = #7716; item 6-B = #7715; upstream objectstack#15843 |
driven by the session_0114Y… dev on PR #7685; this seat's dev stood down (5551451120). ⛔ Chain-blocking: Console Performance Budget FAIL on the branch (eager closure 4137.7 KB vs 3191.4 KB); ceiling not raised; cause unmeasured; maintainer asked in chat |
| #7101 |
A (5536049455) |
LANDED — PR #7717 f96a781 MERGED 11:07Z |
| #6854 |
B2 (5548581017) |
LANDED — PR #7720 adb2a86 MERGED 12:04Z; card closed, pm:dispatched stripped (5551709295); follow-ups #7719, #7721 |
| #6972 |
sanitize remove (triage collapse); components remove (seat discretion, veto window) |
LANDED — PR #7718 446d93d MERGED ~12:14Z; card closed, stripped (5551759703) |
| #6938 |
residue: declare CheckboxSchema.wrapperClass |
LANDED — PR #7723 b74a859 MERGED 12:26Z; card closed, stripped (5551821448); follow-ups #7722 (types), #7724 (docs) |
| #6751 |
card prescription (triage ×2) |
LANDED — PR #7729 a00db9ef MERGED 12:39Z (ACCEPT 5551824286, Clause-② no); card closed — strip reading at this boundary |
| #7530 |
A (5536048209): CEL envelope on visible / hidden / disabled via a hoisted ExpressionWireSchema |
PR #7726 in the merge queue since 13:01Z (pr-7726-a00db9ef…): PASS 5551770555 on 649c920 + delta PASS 5551906272 on a415c0c0 (docs/pin patch round); label cleared 5551907646; landing note 5551993921; next: MERGED by two readings, then strip |
| #7578 |
card candidate confirmed by triage (5548829018) |
PR #7730 in the merge queue since 13:01Z, behind #7726 (pr-7730-c354ce5d…): ACCEPT 5551911142 (Clause-② no); landing note 5551994546 |
| #7433 |
triage: route 2 mandatory (5548620618) |
PR #7731 40171f5f — ACCEPT 5551960181 (Clause-② no); farm 29 success + 3 skipped at 13:16Z; flipped ready 13:17Z; auto-merge next |
| #7295 |
reading 1 under a declared veto window (triage delegation 5548376176) |
PR #7732 fdd09f70 — Lint red on 4b0f366c (pin {} type) → patch round 1 (5551976750) → in-seat contract review PASS 5552020607 at tier; PR label cleared with provenance 5552022295; flip once the farm on fdd09f70 completes (6 runs in progress at 13:06Z) |
| #7361 |
no ruling; triage 5548503487 (docs correction, renderers authoritative, five boundaries) |
in flight (claim 5551918170, 12:47Z), opus, XS, Clause-② no |
| #7069 |
no ruling; triage 5548207236 (audit first, ledger second) |
in flight (claim 5551965304, 12:56Z), opus, M, Clause-② no |
| #6951 (+ #7016 folded into PR A) |
A1 + B1 (maintainer batch #25, 2026-09-04; director record 5534412859): retire TextSchema.value, retire TreeViewSchema.data, nodes stays optional, no refinement; two PRs |
in flight (claims 5552053770 / 5552055050, 13:12Z), fable, S + S, Clause-② yes; PR A claude/issue-6951-text-content-only (Fixes #7016, premise = corpus distribution measurement with a value-majority STOP), then PR B claude/issue-6951-treeview-nodes-only (Fixes #6951) |
| #5741 |
B (5511170986) — text contradicted by measurement |
in the inbox (needs-user-decision, assignee cleared): retired spellings FAULT rather than "evaluate as absent"; second binding site in packages/react/src/hooks/useExpression.ts; four-facet block + three recommendations (Q1 A / Q2 A / Q3 (i)) at 5551809107; no maintainer answer on the card (last touch 12:26Z) or in chat; dev filed #7727, #7728 (Blocked-by: #5741) |
| #6910 |
retire EventHandlersSchema (5534414562) |
pm:blocked + Blocked-by: objectstack#15886 (5551860736): objectui + objectstack measured 0 consumers (control live); cloud / hotcrm unreadable from this seat → seam card objectstack#15886 (repo:cloud + repo:hotcrm readers) |
Seat registration post for the
domain:spec@objectstack-ai/objectuilane — the repo-split half of the spec lane (maintainer 2026-08-23 roster ruling).Body is authoritative; title and assignee are derived views. Single writer: the sitting seat PM. Comments are audit only and never carry state. Position description is versioned in
references/lanes/spec.md(objectstack); this post carries state only. Earlier archives are readable through the edit history (2026-08-24 os-sam; 2026-09-02 yinlianghui; 2026-09-05T08:35Z os-sam shift-end ledger; 2026-09-05T10:3xZ / 11:05Z / 11:36Z / 12:07Z / 12:36Z this seat's earlier revisions).1 · 🟢 current PM
os-justin· sessionsession_01BAZFhALsQsGqxui8sNqM8s· seated 2026-09-05T10:23Z (maintainer summons/pm-dispatch spec@objectui; release marker = shift-end brief 5550618996; round-open marker 5551167084).claude-fable-5-1=CONTRACT_REVIEW_TIER(get_session10:24Z; re-read 11:29Z, 11:55Z, 12:17Z, 13:03Z before each verdict). Account usage window resets 15:20Z.mainbefore opening the PR; merge again after a sibling lands; conflicts to the merge queue, no manual PM ordering). Scope: this lane only. Applied to Carrier for Phase 2 of the row-predicate deprecation: the stored-metadata survey that must size the removal window before any spelling retires #5741, finding(examples,skills): two in-repo authored nodes put config under the inertpropsenvelope on a component-renderer node #6751, finding(types): zod-mirror-parity's population count rotted AGAIN — #6141 predicted this in writing, the cheap route was taken, and it recurred within ten days #7433, finding(types):ClassNameStylePropsSchema.describe('Style properties')is the same over-broad label the const was just renamed away from #7578, finding(plugin-chatbot): per-messageavatar/avatarFallbackwork end to end but no authoring-facing type declares them — #4424'sRuntimeOnlyMessageKeyspicked only three keys #7295, finding(types): two layout schemas'@defaultJSDoc disagrees with the value the renderer actually applies #7361, finding(types): no parity ledger watches the mirror-WIDER-than-declared direction — a key the zod face accepts and the TS face refuses is invisible by construction #7069, Two alias pairs onTextSchemaandTreeViewSchemaare now DECLARED in both spellings — andTreeViewSchema.datais required whilenodesis the documented one (deferred rulings carried out of #6150) #6951 this shift.session_0114Ytxr5sM1vdW19Y9WAx6E(loginos-sam), re-engaged by the maintainer ~10:18Z (PR chore(deps): resolve @objectstack/spec at 17.3.0 in the lockfile #7685 comment 5551127806) before this seat's fire; branchclaude/issue-7122-spec-pin-17-3-0still36baa6dat 12:32Z, no report on When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 (untouched since 11:34Z), no maintainer answer on who drives (asked in chat 11:2xZ, re-asked 12:31Z). This seat keeps the When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 / When the @objectstack/spec pin moves to 17.3: PR #7510 / #7520's comment "repairs" become FALSE —rowsandoptions[].descriptionare now declared keys #7635 claims for review and landing and dispatches nothing on the chain.Claim:/os-dev-report/ ACCEPT / PASS / landing-note comments); round comments below this body edit are audit.trig_012y4LKtvv34EeRpLw1DejYA(13:48Z). One-shot flip / review re-checks spend themselves on firing and are recorded on the PR's card. None inherited.2 · ledger (execution column refreshed 13:17Z)
Rulings executed this shift
session_0114Y…dev on PR #7685; this seat's dev stood down (5551451120). ⛔ Chain-blocking: Console Performance Budget FAIL on the branch (eager closure 4137.7 KB vs 3191.4 KB); ceiling not raised; cause unmeasured; maintainer asked in chatf96a781MERGED 11:07Zadb2a86MERGED 12:04Z; card closed,pm:dispatchedstripped (5551709295); follow-ups #7719, #7721sanitizeremove (triage collapse);componentsremove (seat discretion, veto window)446d93dMERGED ~12:14Z; card closed, stripped (5551759703)CheckboxSchema.wrapperClassb74a859MERGED 12:26Z; card closed, stripped (5551821448); follow-ups #7722 (types), #7724 (docs)a00db9efMERGED 12:39Z (ACCEPT 5551824286, Clause-② no); card closed — strip reading at this boundaryvisible/hidden/disabledvia a hoistedExpressionWireSchemapr-7726-a00db9ef…): PASS 5551770555 on649c920+ delta PASS 5551906272 ona415c0c0(docs/pin patch round); label cleared 5551907646; landing note 5551993921; next: MERGED by two readings, then strippr-7730-c354ce5d…): ACCEPT 5551911142 (Clause-② no); landing note 555199454640171f5f— ACCEPT 5551960181 (Clause-② no); farm 29 success + 3 skipped at 13:16Z; flipped ready 13:17Z; auto-merge nextfdd09f70— Lint red on4b0f366c(pin{}type) → patch round 1 (5551976750) → in-seat contract review PASS 5552020607 at tier; PR label cleared with provenance 5552022295; flip once the farm onfdd09f70completes (6 runs in progress at 13:06Z)TextSchema.value, retireTreeViewSchema.data,nodesstays optional, no refinement; two PRsclaude/issue-6951-text-content-only(Fixes #7016, premise = corpus distribution measurement with a value-majority STOP), then PR Bclaude/issue-6951-treeview-nodes-only(Fixes #6951)needs-user-decision, assignee cleared): retired spellings FAULT rather than "evaluate as absent"; second binding site inpackages/react/src/hooks/useExpression.ts; four-facet block + three recommendations (Q1 A / Q2 A / Q3 (i)) at 5551809107; no maintainer answer on the card (last touch 12:26Z) or in chat; dev filed #7727, #7728 (Blocked-by: #5741)EventHandlersSchema(5534414562)pm:blocked+Blocked-by: objectstack#15886(5551860736): objectui + objectstack measured 0 consumers (control live);cloud/hotcrmunreadable from this seat → seam card objectstack#15886 (repo:cloud+repo:hotcrmreaders)Decision inbox (this lane)
needs-user-decision×1 raised this shift: Carrier for Phase 2 of the row-predicate deprecation: the stored-metadata survey that must size the removal window before any spelling retires #5741 (above). Three items with the maintainer in chat (unanswered): (1) Carrier for Phase 2 of the row-predicate deprecation: the stored-metadata survey that must size the removal window before any spelling retires #5741 Q1 wording amendment (recommend A); (2) who drives PR chore(deps): resolve @objectstack/spec at 17.3.0 in the lockfile #7685; (3) the eager-closure budget red (recommend: measure the closure diff between the two pins; ⛔ do not raise the ceiling).pm:retriage×6 raised by this seat's side: finding(plugin-timeline): anullgantt BAR (items: [{ items: [null] }]) is refused throughmalformedDateas "startDate is undefined, which is not a valid date" — the wrong fault, one level below #7164 #7365 (5551668126), finding(types):EmptySchema.actionis read by the shipped renderer through anas anycast and declared by neither the type nor its mirror — a 14th key #6150's sweep missed #7105 (5551789280),ComponentInputdoes not declarebinding, but the manifest serializer publishes it andvalidateTreereads it — authoring it needs a cast #6950 (5551790023), [finding]richtextregistry key 在 @object-ui/types 无 FieldMetadata union 成员(markdown/html 有)——结构上被服务但不可声明 #7083 (5551790914), finding(components): two text primitives, twovariantvocabularies —ui:text's nine are published and now enforced,element:text's four are declared nowhere #7450 (5551791755) — each unruled with its minimum option on the manual floor by triage's own table; finding(types,docs):AppComponentSchema.actions[](AppAction) has no reader — layout, app-shell and the console never render it, whilecore/app-schema.mdx"Global Actions" teaches it as the app's global toolbar buttons #7469 (5551504738, premise measured false by the contract: shouldAppAction.itemsbe re-typed to the overlayMenuItem? — the runner reads two overlay fields throughas anytoday #6854 dev). Untouched until triage answers.MarkdownSchema.sanitizeand.componentsare declared and mirrored but read by no renderer — andsanitizeimplies a switch that does not exist #6972componentsremoved (landed); finding(plugin-chatbot): per-messageavatar/avatarFallbackwork end to end but no authoring-facing type declares them — #4424'sRuntimeOnlyMessageKeyspicked only three keys #7295 reading 1 (PR fix(types): declareavatarandavatarFallbackonChatMessage, on both faces (objectui#7295) #7732, PASS). Each reversible by a re-declaration.exportOptionsreconciliation never landed — zod mirror still takes'pdf'and declares nostreaming, and bothas anyreads survive #6956 (triage 5548153733: deriveexportOptionsfrom the spec'sListViewSchema.shape.exportOptions, delete bothas anycasts, keep ListView's bare-array fold; the ObjectGrid bare-array behaviour — add the same fold or record as unsupported — is a product choice triage asked this seat to answer in-card; Clause-② yes,minor"Breaking for authored metadata" form).Blocked / on-hold chains (⛔ not dispatchable)
normalizeListViewSchemamanufacturesuserActions.group/hideFields/rowColor— three keysListViewSchemarefuses BY NAME, so the fold's own output fails the view save gate #5435 → Migrate the remaining ListView legacy vocabulary to spec-canonical keys, and audit ObjectView/DetailView (#2231 phases 4–5) #2890 → Unify hand-written @object-ui/types zod with @objectstack/spec/ui (ListViewSchema drift) #2231 · finding:object-grid.data— two spec authorities disagree on the KIND (ViewDataSchemaobject vsComponentPropsMap['object-grid'].dataarray), so whichever the declaration matches, the other refuses it #6207 + finding:element:number.filterdeclares the arm'array', butElementNumberProps.filteraccepts only a record/object — the manifest gate clears a value spec refuses #6206 · RetireBaseFieldMetadata.depends_on— objectui's snake_case twin of the spec's field-leveldependsOn(enforce-or-remove; objectui#6153 ruling A follow-up) #7357: wait for the pin in the tree (the When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 chain landing), now also behind the budget question. finding(app-shell/metadata-admin): the conditional-formatting CEL editor lints row predicates in theflattenedscope and advertises bare fields — declared-but-unbound once #5741 (Phase 2) retires the bare-field binding #7727 / finding(skills):skills/objectui/guides/schema-expressions.mdteaches the bare-field anddata.*row spellings as "deprecated and warned once in dev" — stale once #5741 (Phase 2) retires them #7728 behind Carrier for Phase 2 of the row-predicate deprecation: the stored-metadata survey that must size the removal window before any spelling retires #5741. retire(types):EventHandlersSchema— 公开导出的z.record(z.string(), z.function()),每个值 JSON 不可作者、无任何组合消费、census 与 parity 台账双双结构性不可见(ADR-0049 enforce-or-remove) #6910 behind objectstack#15886.pm:on-hold×4:normalizeListViewSchemamanufacturesuserActions.group/hideFields/rowColor— three keysListViewSchemarefuses BY NAME, so the fold's own output fails the view save gate #5435 A component type has THREE declared surfaces that disagree (TS schema type / registry meta inputs / renderer prop reads), and nothing reconciles or enforces them #4631 objectui:AddressField的AddressValue只覆盖 specAddressValueSchema七个部件里的五个 ——countryCode/formatted既不可类型化,formatted还会在编辑后留成旧值(当前休眠)— observation #4052 Migrate the remaining ListView legacy vocabulary to spec-canonical keys, and audit ObjectView/DetailView (#2231 phases 4–5) #2890.Queue snapshot (13:17Z; 41 open
domain:speccards read 13:07Z)@defaultJSDoc disagrees with the value the renderer actually applies #7361, finding(types): no parity ledger watches the mirror-WIDER-than-declared direction — a key the zod face accepts and the TS face refuses is invisible by construction #7069, Two alias pairs onTextSchemaandTreeViewSchemaare now DECLARED in both spellings — andTreeViewSchema.datais required whilenodesis the documented one (deferred rulings carried out of #6150) #6951+ADR-0049 enforce-or-remove:TextSchema.valueis a second spelling for thetextnode's one content slot — its own docblock calls it "a dialect, not a design", and the 2026-08-31 ruling madecontentthe sole evaluation channel #7016) = batch cap. Landing: PR feat(types): declare the CEL envelope onvisible/hidden/disabledas one sharedExpressionWire(objectui#7530, ruled A) #7726 + PR fix(types): describeClassNameStylePropsSchemaby its two keys #7730 (queue), PR test(types): derive the zod-mirror-parity population instead of writing it down #7731 (flipped), PR fix(types): declareavatarandavatarFallbackonChatMessage, on both faces (objectui#7295) #7732 (PASS, farm pending).pm:queuein the lane, in take order: finding(types/plugin-list): the ListView leg of theexportOptionsreconciliation never landed — zod mirror still takes'pdf'and declares nostreaming, and bothas anyreads survive #6956 (p2, next) ·@object-ui/types' Phase-2ActionCallbacksurface is a thirdonSuccessmeaning — declared, zod-mirrored, doc-advertised, zero producers #7068 (p2) · finding(types):DropdownMenuSchema.triggerdeclares a singleSchemaNodewhile its zod mirror, its siblingContextMenuSchema, and its own shippeddefaultPropsall use the array form #7081 (p2) · finding(types,plugin-kanban):ObjectKanbanSchemarequiresgroupField(zero read sites) and declares neithergroupBynorlimit— no workingobject-kanbannode is assignable to any declared type #7322 (p2) · finding: #6058's SPEC-DERIVED remedy split routesObjectViewSchema's unmirrored keys on a scanner false positive — it references no spec schema #7279 · finding(types):objectNameis declared REQUIRED onObjectGanttSchemaandObjectCalendarSchemawhile both renderers resolvedataandstaticDataFIRST — the documented static-data route cannot be annotated #7313 · finding(docs,types): the repo has no documented name for "a component node" — AGENTS.md saysUIComponent(not exported), the docs saidComponentSchema(a narrow block-family kind, now retired), and the real object half isBaseSchema#7434 · [finding]ComponentInput.defaultValue?: any(packages/types/src/base.ts:550) is why the marked plugin example inskills/objectuimust carry a bareany— tighten the contract tounknownand the baseline row retires with the guide #7493 · finding(types):AppComponentSchemainherits the renderer'shiddenpredicate fromBaseSchemawhile its Zod mirror takes the spec's app-cataloguehiddenboolean — one name, two meanings #7542 · [finding]QueryParamscarries[key: string]: any(packages/types/src/data.ts:133), so a misspelled query key (filterfor$filter) type-checks and is silently dropped byconvertQueryParams— the index signature that let the published testing guide teach a test that could never pass #7497 (p2; carries a strayneeds:contract-reviewon the card with no PR — for triage) · filter-builder: FilterFieldSchema still refuses seven live field types, requires a the renderer and the docs both make optional, and its condition shape omits the uid=0(root) gid=0(root) groups=0(root) four read sites match on #7562 (title/body sanitizer-mangled:uid=0(root)…— not dispatchable until repaired) · finding(ci):check-spec-range-floorsreports[floor-too-low]on@object-ui/types— its declared^17.0.0does not carryFilterCondition, and the blocking copy runs on the publish path #7688 (p2, after the chain) ·showBorderonrecord:detailssections is the same divergence #7129 just ruled on, one key over — spec REFUSES it,@object-ui/typesdeclares it, the zod mirror declares it, the renderer honours it #7465 (premise moves at 17.3.0) · assignee residue finding(fields): two more undeclared-but-consumed metadata keys —dependsOnon select andoptions[].descriptionon lookup, both reached past the declared type #6153 (os-warren) /normalizeFilterOptionsaccepts a bare-stringglobalFilters[].optionsshorthand that@objectstack/specrejects at publish #4356 (yinlianghui).showBorderonrecord:detailssections is the same divergence #7129 just ruled on, one key over — spec REFUSES it,@object-ui/typesdeclares it, the zod mirror declares it, the renderer honours it #7465 (5551213208), finding(fields): two more undeclared-but-consumed metadata keys —dependsOnon select andoptions[].descriptionon lookup, both reached past the declared type #6153, finding(ci):check-spec-range-floorsreports[floor-too-low]on@object-ui/types— its declared^17.0.0does not carryFilterCondition, and the blocking copy runs on the publish path #7688, app-shell: label the upcomingSchemaDiffEntrykindunreachablein ValidationPanel's DIFF_LABEL when the spec dependency next syncs #5831 (domain:ui, on hold; 5551474174).Landed this shift
f96a781adb2a86446d93db74a859a00db9efCards filed / appended this shift
Filed by this seat: #7714 · #7715 · #7716 · #7724 · objectstack#15843 · objectstack#15886 (the #6910 seam card). Filed by this seat's devs: #7719, #7721 (#6854); #7722 (#6938); #7725 (#7530); #7727, #7728 (#5741); #7733. Appended with evidence: #6893, #5831, #7716, #7469.
3 · hot-file serial queue (file / region granularity)
pnpm-lock.yaml·.changeset/7122-*·packages/app-shell/src/views/metadata-admin/**·packages/auth/README.md+auth-spec-parity.test.ts·packages/core/src/actions/actionKeys.ts·packages/plugin-form/src/submitRedirect.test.ts· threepackages/types/src/__tests__/*-spec-parity.test.ts·scripts/check-spec-symbol-derivation.mjs)session_0114Y…dev, branchclaude/issue-7122-spec-pin-17-3-0packages/types/src/base.ts(three predicate members) ·zod/base.zod.ts(:158–:219region) ·zod/form.zod.tstop region (hoist) ·expression.ts/zod/expression.zod.ts(new) ·index.ts/zod/index.zod.ts(one export each) · 11packages/types/src/__tests__/*pins incl.zod-mirror-parity.test.ts(oneEXCLUSIONSrow) ·packages/react/src/__tests__/SchemaRenderer.{predicateEnvelopeDeclared,hiddenDeclaredGate}.test.tsx·content/docs/api/schema-reference.md(3 rows) · 27content/docs/components/**rowspackages/types/src/zod/base.zod.ts(ClassNameStylePropsSchema:433–436region only) · one pin · changesetpackages/types/src/__tests__/zod-mirror-parity.test.ts(header prose sites +EXPECTED_MIRROR_PAIRSand the derived-count cases in the runtime-census region; ⛔ noMIRRORS/ ledger /EXCLUSIONSrow) · empty changesetpackages/types/src/complex.ts(ChatMessageblock) ·zod/complex.zod.ts(ChatMessageSchema) · one pin ·content/docs/plugins/plugin-chatbot.mdx(three example annotations) · changesetpackages/types/src/layout.ts—ContainerSchema.maxWidthdocblock (:215–:219) andFlexLayoutProps.aligndocblock (:285–:289) only · one pin · changesetclaude/issue-7361-layout-default-jsdocpackages/types/src/__tests__/zod-mirror-parity.test.ts— a NEW ledger region (mirror-wider-than-declared) + the header's "two covered directions" sentence; ⛔ no existing ledger /MIRRORS/EXCLUSIONSentry movesclaude/issue-7069-parity-mirror-wider-ledgerpackages/types/src/layout.ts— theTextSchemablock only (:76–:114) ·zod/layout.zod.ts— theTextSchemaconst ·packages/components/src/renderers/basic/text.tsx:162,:167(the|| schema.valuelimb) ·content/docs/components/basic/text.mdx+ corpustextnodes authoringvalue· pins (#6150 flips + one new) · ≤1 parity-ledger row · changesetclaude/issue-6951-text-content-onlypackages/types/src/data-display.ts— theTreeViewSchemablock only (:1270–…) ·zod/data-display.zod.ts— theTreeViewSchemaconst (:336–…) ·packages/components/src/renderers/data-display/tree-view.tsx:105(the|| schema.datalimb) ·content/docs/components/data-display/tree-view.mdx·packages/types/examples/data-display-examples.json(tree-view example) · pins (#7533 flips + one new) · ≤1 parity-ledger row · changesetclaude/issue-6951-treeview-nodes-only(after A)zod/base.zod.tsEventHandlersSchema:394·zod/index.zod.ts:60·zod-mirror-parity.test.tsledger row'base.zod.ts#EventHandlersSchema'packages/core/src/evaluator/listConditional.ts+rowPredicateCanon.ts·packages/react/src/hooks/useExpression.ts· their pins ·@object-ui/core+@object-ui/reactchangesetShared files, different regions this batch:
zod/base.zod.ts(PR #7726 predicate members vs PR #7730ClassNameStylePropsSchema, both queued; later #6910EventHandlersSchema);zod-mirror-parity.test.ts(PR #7726 oneEXCLUSIONSrow vs PR #7731 header + census vs #7069 a new ledger region vs #6951 at most one ledger row per PR);layout.ts(#7361 two docblocks vs #6951-A theTextSchemablock). All devs told to mergemainbefore opening and after the sibling lands; the queue arbitrates. Read-only for everyone this batch:packages/core/src/evaluator/declaredPredicate.ts(#7530's ruling);packages/plugin-chatbot/**(#7295); renderers stay authoritative for #7361.skills/**(governed) is out of every surface this batch.Cross-lane: the
domain:uiseat holds #6939 (pm:dispatched; all groups onmain). Declarations posted on #5560 for the #7635 fold and the #6854 runner edit.4 · platform facts (inherited 09-05 + this shift's; adopt without re-testing)
GET /rate_limitanswers 200 (core 15000) but a repo-scoped read answers 403 "GitHub access is not enabled for this session" ⇒ MCP + git only. Queue membership by git:git -C /home/user/objectui ls-remote origin 'refs/heads/gh-readonly-queue/main/*'(the Bash cwd resets between calls — always pin-C).check-clause2-carriers.mjs --pair Nexits 3 from this seat — the three limbs are verified by hand and said so in the landing note.Governed Surface Queue Guardand turnsmergeable_statemomentarilyunstable/unknown;enable_pr_auto_mergeechoes emptymethod/enabled ateven when it worked ⇒ the queue-ref probe (appears within ~1 min) is the confirmation. AbehindPR enqueues fine. The queue lands PRs in order behind each other's queue tips (pr-N-<previous tip>).check_suite.completedfires against stale SHAs ⇒ re-read the head, then the full farm by name, before any flip.send_laterfire notices can arrive minutes late (the 13:03Z patrol was delivered 13:07Z) — act on re-read state, never on the fire time.Type Checkjob's failing step need not betsc; Actions log retention truncates to post-job cleanup ⇒ "build failed" is a machine reading, the cause is not assertable from that log. This shift's measured cause of the 17.3.0 build failure:SchemaDiffEntryKindgainedunreachable(ValidationPanel TS2741).get_job_logswith the default tail can miss a singleeslinterror — raisetail_lines(420 found PR fix(types): declareavatarandavatarFallbackonChatMessage, on both faces (objectui#7295) #7732's one error).ts/tsxfences are compiled byDoc Snippet Type Checkagainst the built types dist (a row spelled{ dialect?, source }fails with TS7008);plaintextfences are not. Read the fence language before editing a schema row; a dev's localcheck:doc-snippetsneeds the full built closure or reports PRECONDITION NOT MET (not a measurement). A line-anchored fence pin (check-doc-snippet-types.test.tsREADME_SAMPLE_FENCE_LINE) turnsTest (shard 1/4)red on any edit above the fence inplugin-markdown.mdx.Lintrunseslint .per package and fails on ONE error (@typescript-eslint/no-empty-object-typeon a{}type reddened PR fix(types): declareavatarandavatarFallbackonChatMessage, on both faces (objectui#7295) #7732) — dispatches namepnpm --filter <pkg> lintas a gate.search_issuesis phrasing-sensitive — a zero without a live control is not a reading. MCPlist_issueswith twolabelsreturns the OR of them, not the intersection — read the lane with one label and intersect locally.issue_read get_labelsdoes not resolve a PR number — read PR labels withpull_request_read get.skip-changesetis a phantom label in objectui; the correct "no release" form is an empty-frontmatter changeset.pnpm --filter X exec vitest runis refused by the repo's invocation guard — use the root-relative path form.pnpm run check:changeset-fixed/check:changeset-no-majorare not script names — run the.mjsfiles directly. Retirement changesets areminoropening "Breaking for authored metadata:" (finding(types):MarkdownSchema.sanitizeand.componentsare declared and mirrored but read by no renderer — andsanitizeimplies a switch that does not exist #6972, finding(types): designer-surfaceDashboardConfig.aria/DashboardConfigSchema.ariadeclare a{ label, description }aria object nothing reads — and the panel they document does not consume them #5852);check-changeset-no-majorforbidsmajor..describe()strings citing a read-sitefile:lineand the issue number are house style underpackages/types/src/zod(26 onmainata00db9ef,wrapperClassamong them) — not a review finding.FixesPR keeps itspm:*label — strip it at the MERGED reading (reproduced ×5 this shift).findingcan survive triage grading (finding(plugin-chatbot): per-messageavatar/avatarFallbackwork end to end but no authoring-facing type declares them — #4424'sRuntimeOnlyMessageKeyspicked only three keys #7295 carriedfinding+priority:p3+pm:queue); the execution seat leaves it — it is triage's to drop at grading.check-governed-merges.mjsrefuses rather than under-reports on a shallow clone;--test <paths>works for objectui paths (run from/home/user/objectstack). Next audit anchor:--since-ref objectstack=d701e657d74d --since-ref objectui=4ce14f125975.dispatch-gates.mjsdoes not answer for objectui; tier and Clause-② here are judged from card content. The shallow clone has no usable blame /git log -S, andgit log -- <paths>sees one commit.Claim:onpm:dispatchedcards — a re-engaged session working apm:queuecard's branch is invisible to it (this shift's collision). Filed with the shift-end findings.@object-ui/core@17.6.0(npm 2026-08-24) while its changeset.changeset/row-predicate-record-canon-5330.mdis still pending onmain(895 changesets pending; the version PR consumed changesets before feat(core,react): declarerecord.*the row-predicate canon and warn on the two deprecated spellings #5737 merged) — the CHANGELOG will attribute it to 17.7.0. Release-process observation, for the release seat.@objectstack/spec@17.2.0; npmlatest17.3.0; objectuimaina00db9ef(13:09Z). Console performance budget headroom onmainis thin (3186.2 / 3191.4 KB on PR feat(types): declare the CEL envelope onvisible/hidden/disabledas one sharedExpressionWire(objectui#7530, ruled A) #7726); 17.3.0 blows it (+~950 KB) — cause unmeasured.