| #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: family bump landed on the branch, build 43/43, check:spec-symbols 0, unit red 7 files / 9 assertions all decision-gated; remaining reds: Bundle Analysis +274.7 KB (maintainer), Type Check 1 item (#7635 fold, authorised 5552811950), shards (#7635 family / Task C maintainer items). ⛔ Not landable until the budget question is ruled |
| #7101 |
A (5536049455) |
LANDED — PR #7717 f96a781 MERGED 11:07Z |
| #6854 |
B2 (5548581017) |
LANDED — PR #7720 adb2a86 MERGED 12:04Z; stripped (5551709295); follow-ups #7719, #7721 |
| #6972 |
sanitize remove (triage collapse); components remove (seat discretion, veto window) |
LANDED — PR #7718 446d93d MERGED ~12:14Z; stripped (5551759703) |
| #6938 |
residue: declare CheckboxSchema.wrapperClass |
LANDED — PR #7723 b74a859 MERGED 12:26Z; stripped (5551821448); follow-ups #7722, #7724 |
| #6751 |
card prescription (triage ×2) |
LANDED — PR #7729 a00db9ef MERGED 12:39Z (ACCEPT 5551824286); stripped 12:56Z |
| #7530 |
A (5536048209): CEL envelope via a hoisted ExpressionWireSchema |
LANDED — PR #7726 c354ce5d MERGED 13:16Z (PASS 5551770555 + delta PASS 5551906272); stripped (5552094677); follow-up #7725 |
| #7578 |
card candidate confirmed by triage (5548829018) |
LANDED — PR #7730 9587fc95 MERGED 13:16Z (ACCEPT 5551911142); stripped (5552095036) |
| #7433 |
triage: route 2 mandatory (5548620618) |
LANDED — PR #7731 3bde19ba MERGED 13:34Z (ACCEPT 5551960181); stripped (5552799958) |
| #7295 |
reading 1 under a declared veto window (triage delegation 5548376176) |
LANDED — PR #7732 858cd72e MERGED 13:35Z (PASS 5552020607); stripped (5552800452); veto window stays open |
| #7361 |
no ruling; triage 5548503487 |
LANDED — PR #7736 e546222b MERGED 15:39Z (ACCEPT 5552118929; one infra re-run green); stripped (5552920046); follow-ups #7734, #7735 |
| #7069 |
no ruling; triage 5548207236 |
LANDED — PR #7758 2760075f MERGED by 16:20Z (ACCEPT 5552962639; fifth ledger WiderThanDeclared); stripped (5553134701); follow-ups #7759, #7760 |
| #6956 |
no ruling; triage 5548153733 |
LANDED — PR #7763 4dfdcc3c MERGED 16:35Z (PASS 5553073374); stripped (5553228393); follow-up #7762 |
| #6951 (+ #7016 folded into PR A) |
A1 + B1 (maintainer batch #25; director record 5534412859) |
LANDED, both halves — PR A #7761 5ad86dde 16:49Z (PASS 5553212632; #7016 stripped 5553309742), PR B #7769 16a725f9 17:03Z (PASS 5553215517); stripped (5553393450); residue #7770 |
| #7081 |
no ruling; triage 5527740245 |
LANDED — PR #7768 4388f713 MERGED 16:59Z (PASS 5553183812); stripped (5553363012); follow-up #7767 |
| #7322 |
no ruling; item ① only |
item ① LANDED — PR #7774 669d71bf MERGED 17:23Z (PASS 5553334000; groupBy REQUIRED ruled A); card → pm:queue + pm:retriage (item ② re-lane, 5553513017), assignee cleared; dev filed #7772, #7773; seat filed #7780 |
| #7279 |
no ruling; triage 5548347502 |
LANDED — PR #7776 1b69ca58 MERGED 17:40Z (ACCEPT 5553451329; route LOCAL, counts 1 / 2 + 13 / 94, header pinned); stripped (5553609810); follow-up decision card #7779 |
| #7313 |
no ruling; triage 5548431295 |
LANDED — PR #7777 554f2b6b MERGED 17:59Z (PASS 5553491248 + delta PASS 5553558086 after the #7774 merge); stripped (5553729025); dev filed #7778; seat filed #7780 |
| #7542 |
no ruling; triage classified three directions |
LANDED, direction 1 under a veto window — PR #7782 2fcefb95 MERGED 18:16Z (PASS 5553667716); stripped (5553831964); direction 2 open (decision batch item 8) |
| #7493 |
no ruling; triage 5548740471 |
STOPPED at the dispatch's zero-reader condition (report 5553590885: 245 writes, 0 production readers, 11 test reads) → inbox (needs-user-decision, 5553603343; recommend A retire); dev filed #7781 |
| #7434 |
none |
inbox (needs-user-decision, 5553465016; recommend BaseSchema) |
| #7779 |
none |
inbox (needs-user-decision; recommend B) |
| #7068 |
none — triage's split contradicted by measurement |
inbox (needs-user-decision, 5552982130; recommend 1) |
| #5741 |
B (5511170986) — text contradicted by measurement |
inbox (needs-user-decision, 5551809107; recommend A) |
| #6910 |
retire EventHandlersSchema (5534414562) |
pm:blocked + Blocked-by: objectstack#15886 (5551860736) |
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 … 17:37Z this seat's earlier revisions).1 · ⚪ vacant — shift-end brief (收班简报), 2026-09-05T18:21Z
os-justin, sessionsession_01BAZFhALsQsGqxui8sNqM8s, seated 10:23Z (maintainer summons/pm-dispatch spec@objectui), unseated 18:21Z by self-retirement: the lane holds no dispatchablepm:queuecard, no dev in flight, nothing awaiting review or landing (merge queue empty;origin/main=2fcefb95at 18:17Z), and no new maintainer or triage answer on the decision inbox (lane probes withsinceat 16:52Z, 17:35Z, 17:50Z: every moved card was this seat's). This revision is the brief; the audit comment below it is the release marker. No live timers (list_triggersat 18:19Z: patrol 完善设计器的每一个细节 #9 was the only one, deleted 18:20Z). No sessions to archive (every dev was a subagent of this session; all finished).pm:dispatchedcard in the lane carries aClaim:newer than this brief; the last CLOSED card byupdated_atis finding(types):AppComponentSchemainherits the renderer'shiddenpredicate fromBaseSchemawhile its Zod mirror takes the spec's app-cataloguehiddenboolean — one name, two meanings #7542 (18:17Z, this session).needs-user-decision, four cards this shift + the chat batch): Carrier for Phase 2 of the row-predicate deprecation: the stored-metadata survey that must size the removal window before any spelling retires #5741 (5551809107),@object-ui/types' Phase-2ActionCallbacksurface is a thirdonSuccessmeaning — declared, zod-mirrored, doc-advertised, zero producers #7068 (5552982130), 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 (5553465016, naming — recommendBaseSchema), Decision:ObjectViewSchema's ten unmirrored declared keys are LOCAL (objectui#7279 re-derivation) — mirror them, retire them, or defer to #2231? #7779 (the finding: #6058's SPEC-DERIVED remedy split routesObjectViewSchema's unmirrored keys on a scanner false positive — it references no spec schema #7279 follow-up — recommend B), [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 (5553603343 —ComponentInput.defaultValuehas zero readers; recommend A retire, with [finding]ComponentInput.labelandComponentInput.advancedhave no production reader — the two remaining keys the manifest serializer does not forward, the same class as #5905 and thedefaultValuecensus on #7493 #7781'slabel/advancedin the same ruling). Chat batch items 1–4 (the When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 console budget +274.7 KB — recommend B with A filed; who drives PR chore(deps): resolve @objectstack/spec at 17.3.0 in the lockfile #7685; 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 — A; When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 Task C) unanswered. Item 8 (finding(types):AppComponentSchemainherits the renderer'shiddenpredicate fromBaseSchemawhile its Zod mirror takes the spec's app-cataloguehiddenboolean — one name, two meanings #7542 direction 1) landed under a veto window; item 9 = [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.pm:retriagewaiting on triage: finding(types,plugin-kanban):ObjectKanbanSchemarequiresgroupField(zero read sites) and declares neithergroupBynorlimit— no workingobject-kanbannode is assignable to any declared type #7322 (item ② re-lane todomain:ui, 5553513017); 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, 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,ComponentInputdoes not declarebinding, but the manifest serializer publishes it andvalidateTreereads it — authoring it needs a cast #6950, [finding]richtextregistry key 在 @object-ui/types 无 FieldMetadata union 成员(markdown/html 有)——结构上被服务但不可声明 #7083, finding(components): two text primitives, twovariantvocabularies —ui:text's nine are published and now enforced,element:text's four are declared nowhere #7450, 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 (earlier this shift).text.valueas read (skills counter-examples + four read-site comments) after objectui#6951 retired the key #7770, app-shell: the page-block designer's object-kanban inspector writesgroupField— a key the renderer never reads and, after objectui#7322, the validator refuses by name; nogroupBy/limitcontrol #7772, plugin-view / plugin-list: the kanban adapters write the retiredgroupFieldalongsidegroupByonto the generated object-kanban node — an inert duplicate write held in place by two pins #7773, finding(docs): fourobject-ganttblocks onplugin-gantt.mdxare still bareconstliterals —ObjectGanttSchemahas admitted them since PR #7471, so their keys go unchecked by the doc-snippet gate #7778, finding(types):ObjectKanbanSchemarequiresobjectNameon both faces while the renderer reads an undeclared inlinedataahead of the fetch — the record-source ladder class (#7313) on a fourth view schema #7780 (kanban record-source class), [finding]ComponentInput.labelandComponentInput.advancedhave no production reader — the two remaining keys the manifest serializer does not forward, the same class as #5905 and thedefaultValuecensus on #7493 #7781; earlier: contract: shouldshortcutbecome authorable onAppAction.items? — the one capability question left after #6854's B2 ruling #7719, A pending changeset (.changeset/7344-handler-string-any-mirrors.md) and its pin test still say "nothing readsAppComponentSchema.actions[]" — measured false, and the sentence ships as CHANGELOG copy at the next release #7721, finding(types): five more renderers readschema.wrapperClassthat their shipped types never declare —switch,textarea,date-picker,select,list(read-driven residue outside #6938's 8-type batch) #7722, finding(types): the predicate wire union is still spelled inline in five places beside the sharedExpressionWire, and twocontent/docs/corerows spell the pre-#7530 union #7725, 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, finding(types): zod-mirror-parity's three LEDGER entry counts are still hand-written prose — the half of #6141 that #7433's scope deliberately left behind #7733, finding(types): the shared@default 'row'onFlexLayoutProps.directioncannot be right for bothflexandstack#7734, finding(types): the zod layout mirror substitutes runtime.default()values the renderers never apply — a parsedcontainerrenders a different width than an unparsed one #7735, 27 keys across 18 pairs have a zod mirror that ACCEPTS a spelling its TypeScript declaration refuses — each needs a narrow-the-mirror / widen-the-declaration ruling #7759, finding(types): the recursion-breaking annotation on 10 zod mirrors erases their published input face tounknown— the single-or-list producer objectui#7069 named systematic is unauditable at the type level because of it #7760, finding(plugin-grid/types): a bareexportOptionsarray on a directly-authoredobject-gridnode passes the zod mirror unvalidated and silently degrades to the csv/json default #7762, finding(types):CollapsibleSchema.triggerdeclaresstring | SchemaNodewhile its zod mirror, its shippeddefaultPropsand its docs row each spell a different accept set #7767.session_0114Ytxr5sM1vdW19Y9WAx6Eon PR chore(deps): resolve @objectstack/spec at 17.3.0 in the lockfile #7685 (branch tip339885d0at 16:04Z); this seat's 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 are released with the seat — the driver's ownClaim:is the live one; landing needs the budget ruling.pm:blocked: retire(types):EventHandlersSchema— 公开导出的z.record(z.string(), z.function()),每个值 JSON 不可作者、无任何组合消费、census 与 parity 台账双双结构性不可见(ADR-0049 enforce-or-remove) #6910 (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.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; strayneeds:contract-reviewwith 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), 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 When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 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 /normalizeFilterOptionsaccepts a bare-stringglobalFilters[].optionsshorthand that@objectstack/specrejects at publish #4356; re-verifyshowBorderonrecord: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, 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 after the chain lands. A newly triaged card or an answered decision is the resume signal.finding): objectstack#16003 (no state transition for a partialRefsdispatch), objectstack#16004 (mutex reading 3 blind to apm:queuebranch pusher), objectstack#16005 (auto-closed cards keeppm:*— a sweep), objectstack#16006 (platform-facts rows forreferences/platform-readings.md).objectNameis declared REQUIRED onObjectGanttSchemaandObjectCalendarSchemawhile both renderers resolvedataandstaticDataFIRST — the documented static-data route cannot be annotated #7313 after finding(types,plugin-kanban):ObjectKanbanSchemarequiresgroupField(zero read sites) and declares neithergroupBynorlimit— no workingobject-kanbannode is assignable to any declared type #7322 ①) resolved cleanly.claude-fable-5-1=CONTRACT_REVIEW_TIER(get_sessionre-read before each of the 9 PASS verdicts).2 · ledger (final, 18:21Z)
Rulings executed this shift
session_0114Y…dev on PR #7685: family bump landed on the branch, build 43/43,check:spec-symbols0, unit red 7 files / 9 assertions all decision-gated; remaining reds:Bundle Analysis+274.7 KB (maintainer),Type Check1 item (#7635 fold, authorised 5552811950), shards (#7635 family / Task C maintainer items). ⛔ Not landable until the budget question is ruledf96a781MERGED 11:07Zadb2a86MERGED 12:04Z; stripped (5551709295); follow-ups #7719, #7721sanitizeremove (triage collapse);componentsremove (seat discretion, veto window)446d93dMERGED ~12:14Z; stripped (5551759703)CheckboxSchema.wrapperClassb74a859MERGED 12:26Z; stripped (5551821448); follow-ups #7722, #7724a00db9efMERGED 12:39Z (ACCEPT 5551824286); stripped 12:56ZExpressionWireSchemac354ce5dMERGED 13:16Z (PASS 5551770555 + delta PASS 5551906272); stripped (5552094677); follow-up #77259587fc95MERGED 13:16Z (ACCEPT 5551911142); stripped (5552095036)3bde19baMERGED 13:34Z (ACCEPT 5551960181); stripped (5552799958)858cd72eMERGED 13:35Z (PASS 5552020607); stripped (5552800452); veto window stays opene546222bMERGED 15:39Z (ACCEPT 5552118929; one infra re-run green); stripped (5552920046); follow-ups #7734, #77352760075fMERGED by 16:20Z (ACCEPT 5552962639; fifth ledgerWiderThanDeclared); stripped (5553134701); follow-ups #7759, #77604dfdcc3cMERGED 16:35Z (PASS 5553073374); stripped (5553228393); follow-up #77625ad86dde16:49Z (PASS 5553212632; #7016 stripped 5553309742), PR B #776916a725f917:03Z (PASS 5553215517); stripped (5553393450); residue #77704388f713MERGED 16:59Z (PASS 5553183812); stripped (5553363012); follow-up #7767669d71bfMERGED 17:23Z (PASS 5553334000;groupByREQUIRED ruled A); card →pm:queue+pm:retriage(item ② re-lane, 5553513017), assignee cleared; dev filed #7772, #7773; seat filed #77801b69ca58MERGED 17:40Z (ACCEPT 5553451329; route LOCAL, counts 1 / 2 + 13 / 94, header pinned); stripped (5553609810); follow-up decision card #7779554f2b6bMERGED 17:59Z (PASS 5553491248 + delta PASS 5553558086 after the #7774 merge); stripped (5553729025); dev filed #7778; seat filed #77802fcefb95MERGED 18:16Z (PASS 5553667716); stripped (5553831964); direction 2 open (decision batch item 8)needs-user-decision, 5553603343; recommend A retire); dev filed #7781needs-user-decision, 5553465016; recommendBaseSchema)needs-user-decision; recommend B)needs-user-decision, 5552982130; recommend 1)needs-user-decision, 5551809107; recommend A)EventHandlersSchema(5534414562)pm:blocked+Blocked-by: objectstack#15886(5551860736)Landed this shift (19 PRs, 18 cards)
f96a781adb2a86446d93db74a859a00db9efc354ce5d9587fc953bde19ba858cd72ee546222b2760075f4dfdcc3c5ad86dde4388f71316a725f9669d71bf1b69ca58554f2b6b2fcefb95Cards filed / appended this shift
Filed by this seat: #7714 · #7715 · #7716 · #7724 · #7770 · #7779 (decision) · #7780 · objectstack#15843 · objectstack#15886 · objectstack#16003 · objectstack#16004 · objectstack#16005 · objectstack#16006. Filed by this seat's devs: #7719, #7721 (#6854); #7722 (#6938); #7725 (#7530); #7727, #7728 (#5741); #7733; #7734, #7735 (#7361); #7759, #7760 (#7069); #7762 (#6956); #7767 (#7081); #7772, #7773 (#7322); #7778 (#7313); #7781 (#7493). Appended with evidence: #6893, #5831, #7716, #7469, #7122 (5552811950), #5560 (5552135024, 5553396008, 5553729725), #7068, #7434, #7322, #7493.
3 · hot-file serial queue (file / region granularity) — nothing of this lane in flight
pnpm-lock.yaml(family bump, lockfile-only) ·.changeset/7122-*·packages/app-shell/src/views/metadata-admin/**incl.ValidationPanel.tsx·packages/auth/README.md+auth-spec-parity.test.ts·packages/core/src/actions/actionKeys.ts·packages/plugin-form/src/submitRedirect.test.ts·packages/types/src/__tests__/*-spec-parity.test.ts·scripts/check-spec-symbol-derivation.mjs·packages/app-shell/src/__tests__/spec-symbol-parity.test.ts(#7635 fold, authorised))session_0114Y…dev, branchclaude/issue-7122-spec-pin-17-3-0(339885d0)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 · changesetpackages/types/src/crud.ts(ActionCallback,ActionSchema.onSuccess/onFailure) ·zod/crud.zod.ts·content/docs/core/enhanced-actions.mdx(three fences) ·content/docs/guide/schema-overview.md:277· pinszod/objectql.zod.ts— theObjectViewSchemaconst (ten keys) · theUnmirroredDeclaredentry · pins · changesetpackages/types/src/base.tsComponentInput.defaultValue(+label,advancedper #7781) ·zod/base.zod.tsComponentInputSchema· the 245 authoring sites · 9 test filespackages/typesexport only ifUIComponentis chosenpackages/plugin-kanban/src/ObjectKanban.tsxObjectKanbanComponentProps.schemadomain:uiafter triage's answerRead-only for the lane by ruling or ownership:
packages/core/src/evaluator/declaredPredicate.ts(#7530's ruling);packages/plugin-grid/**(#7762);packages/plugin-kanban/**(the ui seat's #7664);packages/plugin-calendar/**(#7311,domain:ui);packages/core/**(#7493 ②); renderers stay authoritative.Cross-lane: the
domain:uiseat holds #6939 and in flight #7664 (complex.*, barrels,registry.ts,plugin-kanban/**), #7443. Declarations on #5560: 5552135024 (released 5553396008 and 5553729725); nothing of this lane declared there now.4 · platform facts (inherited 09-05 + this shift's; adopt without re-testing) — rows also filed as objectstack#16006
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. Node resolution of the installed spec pin from the shared checkout fails from an eval script — spec-side readings are the dev's, through the pin from a worktree.SendMessagewith their transcript intact — re-readorigin/main, the cards and every branch tip first, then send a resume order that names what moved. Timers that fired into the gap are delivered after the reset; execute them on re-read state. A context compaction mid-shift is survivable the same way.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>), across lanes; a lone PR drains in ~15 min, three deep in ~30 min. A backgrounduntilwatcher with a fixed poll budget can time out one poll before the landing — re-read the queue live before declaring anything.check_suite.completedfires against stale SHAs ⇒ re-read the head, then the full farm by name, before any flip.send_laterfire notices are delivered only between turns and can arrive minutes late — act on re-read state; work a timer asks for may already be done.assert(!this.paused)) before a check body runs — infra, eligible for the one permitted re-run (actions_run_trigger rerun_failed_jobs); PR docs(types): align two layout@defaultdocblocks with the renderer fallbacks #7736'sDocs Route Eager Closure Checkwent green on the re-run.Type Checkjob's failing step need not betsc;turbo run type-checkaborts at the first failing task — add--continue. Actions log retention truncates to post-job cleanup.get_job_logswith the default tail can miss a singleeslinterror — raisetail_lines. TypeScript 6 refusesbaseUrl(TS5101) — a probe tsconfig carrying it compiles nothing; an ablation leg built on it is VOID.pnpm updatere-introduces duplicate copies by floating peer versions; a family bump goes: temporarily raise the range → resolve → restore the manifests → reinstall (lockfile-only).ts/tsxfences are compiled byDoc Snippet Type Check;plaintext/jsonfences are not. A docs page whose fences import a legacy type cannot teach the spec's shape ahead of the type change. A dev's localcheck:doc-snippetsneeds the full built closure; the substitute is a differential compile of the touched fences against the merge-base. Doc line numbers in a card drift within hours — dispatches cite the section name beside the line.Lintrunseslint .per package and fails on ONE error.search_issuesis phrasing-sensitive.list_issueswith twolabelsreturns the OR; with one label +sinceit is the cheapest lane probe.issue_read get_labelsdoes not resolve a PR number — usepull_request_read get. A longget_commentsresult is spilled to a file.skip-changesetis a phantom label in objectui; the "no release" form is an empty-frontmatter changeset.pnpm --filter X exec vitest runis refused by the repo's invocation guard — root-relative path form. Retirement changesets areminoropening "Breaking for authored metadata:";check-changeset-no-majorforbidsmajor. Widenings are gradedminorby this seat (finding(types,docs):BaseSchema.hiddenis declaredboolean, but the renderer evaluates it as a predicate — the third key onvisible/disabled's evaluated path, never widened #7455, finding(types):DropdownMenuSchema.triggerdeclares a singleSchemaNodewhile its zod mirror, its siblingContextMenuSchema, and its own shippeddefaultPropsall use the array form #7081, finding(types):objectNameis declared REQUIRED onObjectGanttSchemaandObjectCalendarSchemawhile both renderers resolvedataandstaticDataFIRST — the documented static-data route cannot be annotated #7313); the 24 catalog entries failsafeValidateSchemabecause the Zod mirror names a key its renderer never reads (8 components) #6939 precedent graded the record-source wideningpatch. A tombstone on an extended schema shadows a same-namedBaseSchemamember on both faces..describe()strings citing a read-sitefile:lineand the issue number are house style.@defaultis a member-level JSDoc tag. Zod mirrors annotatedz.ZodType<any>readunknownon the input face (finding(types): the recursion-breaking annotation on 10 zod mirrors erases their published input face tounknown— the single-or-list producer objectui#7069 named systematic is unauditable at the type level because of it #7760). No objectui gate reads an ADR-0087 disposition marker. The runtime render path runs@object-ui/core's structuralvalidateSchema, not zod. A three-way merge of ADJACENT blocks produced no textual conflict — verify by delta equality (md5 of hunk bodies).FixesPR keeps itspm:*label (×18; objectstack#16005). ARefsPR closes nothing: the card's transition is the seat's (objectstack#16003).findingcan survive triage 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. The shallow clone has no usable blame /git log -S. The half-state patrol anchor does not exist in objectui (The half-state patrol needs its anchor issue created and HALF_STATE_ANCHOR_ISSUE set — a maintainer action outside GitHub's API surface for agent seats #5986).Claim:onpm:dispatchedcards (objectstack#16004).@object-ui/core@17.6.0while its changeset is still pending onmain— for the release seat.@objectstack/spec@17.2.0; npmlatest17.3.0; objectuimain2fcefb95(18:17Z). Console performance budget:main~3186 / 3191.4 KB; the When bumping @objectstack/spec past objectstack#14075: list-view spec-parity pins need the CalendarConfig titleField-optional update #7122 branch after the family bump 3466.4 KB (+274.7 KB, real growth — see §1).