You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Seat registration post for the domain:spec @ objectstack-ai/objectui lane — the repo-split half created by the maintainer's 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; this post carries state only.
Deliverables verified on main, not from PR state: CalendarViewMode = 'month'\|'week'\|'day', the zod enum matching, object-view-spec-parity.test.ts present, PER_VIEW_CONFIG_ALIASES in the normalizer, rowPredicateCanon.ts referenced from the evaluator barrel.
Transferred out:#5435 → objectstack#11195 (open, pm:queue, still unassigned/unclaimed at 13:16Z — the objectstack spec lane has not picked it up in ~11 h). Findings filed by this lane's devs:#5738 ✅ · #5740 ✅ · #5741 · #5759 · #5783 · #5784 ✅ · #5792 · #5793 · objectstack#11195 · objectstack#11284.
3. Hot-file serial queue
EMPTY — packages/types released by #5806; packages/plugin-detail by #5794.
⛔ The old "blocked twice" constraint is RETIRED — #5716 closed 04:57Z via PR #5752, so #5435 is single-blocked on objectstack#11195 alone. Not over-read: nobody has measured that a pin refresh succeeds end-to-end.
4. Platform facts measured by this seat
⛔ Test (shard n/4) IS NOT A REQUIRED CHECK, AND A DIRECT MERGE IS REFUSED. Two halves, both measured: (1) on fix(plugin-detail): derive ReferenceRailEntry from @objectstack/spec and retire the icon key #5794 auto-merge fired at 09:27:58Z with shards 2/4 and 4/4 still running; (2) merge_pull_request is rejected outright — 405 … Changes must be made through the merge queue — so auto-merge IS the enqueue mechanism. The discipline is therefore when you arm it: read the full farm by name, then arm. "Green = 19 success + 3 skipped = 22" describes the FARM, not the MERGE GATE. Never tell a card auto-merge is holding for a check that is not required.
⛔ A @ts-expect-error IN A FILE NO tsc READS IS A NO-OP THAT LOOKS LIKE A TEST.feat(types): retire 'agenda' from defaultView on all three declaration faces #5806's TS-face pin is real only because packages/types's type-check chains tsconfig.test.json — and an unused directive is itself an error, so a green type-check proves the rejection. Verify the tsconfig chain before crediting such a pin.
⛔ search_issues can silently return zero, control words included (objectstack#11193). Dedupe here uses two independent methods.
check:spec-symbols runs inside the Type Check job (ci.yml:238), under no name of its own. Its DEBT ledger is ratcheted (check-spec-symbol-derivation.mjs:1066). Sanctioned forms: export type { X } from '@objectstack/spec/…' and export type X = z.infer<typeof SpecX> (:907-926).
Inherited priors from [pm:seat] domain:ui — objectui execution seat #5560 §5 holding across seven dispatches: no needs:contract-review in this repo (at-tier dispatch, 「直接入队」); dispatch-gates.mjs is the wrong tree; the sanitizer eats bare angle-bracketed tokens. Governed surfaces: AGENTS.md, CLAUDE.md, .claude/**, docs/adr/** — no PR touched one.
5. Next (R7) — STANDBY, queue empty
Dispatchable — 0. Re-verified at 13:16Z; lane holds 13 cards:
Design-first by its own header — an ADR gates it, every foundational step lands in @objectstack/spec + framework. objectui is the last step and a consumer. Belongs to the objectstack spec lane. Not relabelled — another author's card, and the label is not wrong, just not this seat's.
Merge-timing audit — DONE in R6, comment 5386204916. See §4.
⛔ Decision box — two cards, both awaiting the maintainer
#5741 — the stored-metadata channel. No new comment since this seat's ACCEPT at 08:06Z. Phase 2 of the row-predicate deprecation is gated on a survey, and no seat holds a channel to stored metadata. Four-facet block on the card (A: per-tenant REST token — ⛔ insufficient alone, it sizes one tenant and calls it the fleet; B: read-only replica/dump; C: offline export via Setup's existing read-only Export). Recommended C, fallback B.
⚠️Three cards in a row have now hit this wall. objectstack#7917 hit it 2026-08-13 with ready-to-run queries; ten days on, no channel exists. #5494 and #5784 both had to ship on "no reachable usage" rather than "no usage" — the honest phrasing, and the standard for this lane, but it means every retirement here ships on an incomplete census. #7917 could proceed because its transform was mechanically lossless; the row-predicate case has no such escape hatch — data.* binds nothing at runtime, so rewriting a stored predicate needs authorial intent a machine cannot infer.
objectstack#11284 — the react-blocks.ts vocabulary question (releases #2890). Triage backfilled the four-facet block at 09:38Z and recommends 收敛 (converge) with deprecate-first discipline, viewType→type in the same stroke. ⚠️Unchanged at 13:16Z — still needs-user-decision, maintainer has NOT answered. A recommendation is not a ruling; #2890 stays blocked.
Cross-repo posture: files spec-side contract cards into objectstack's domain:spec queue, flipping its own card to pm:blocked + Blocked-by: in the same stroke. Does not scan domain:ui ([pm:seat] domain:ui — objectui execution seat #5560) or domain:devx (objectstack#10602).
Seat registration post for the
domain:spec@objectstack-ai/objectuilane — the repo-split half created by the maintainer's 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; this post carries state only.1. Current PM
session_01E7snar5mwF7qoXJazqKhys(GitHub identityos-sam)5386204916). See §4.2. Landing ledger
R1–R5 — 7 cards / 7 PRs / 7 merged / 0 rework / 0 red CI merged / 0 re-runs / 1 transferred out / 2 to the decision box.
d1ab06f065bba7Build Docsreal failure, inherited)702c48aaf3861f'agenda'fromCalendarViewModeb55a346Build Docsreal failure, inherited)ReferenceRailEntryderive + retireicon'agenda'fromdefaultView×3 facesDeliverables verified on
main, not from PR state:CalendarViewMode = 'month'\|'week'\|'day', the zod enum matching,object-view-spec-parity.test.tspresent,PER_VIEW_CONFIG_ALIASESin the normalizer,rowPredicateCanon.tsreferenced from the evaluator barrel.Transferred out:#5435 → objectstack#11195 (open,
pm:queue, still unassigned/unclaimed at 13:16Z — the objectstack spec lane has not picked it up in ~11 h).Findings filed by this lane's devs:#5738 ✅ · #5740 ✅ · #5741 · #5759 · #5783 · #5784 ✅ · #5792 · #5793 · objectstack#11195 · objectstack#11284.
3. Hot-file serial queue
EMPTY —
packages/typesreleased by #5806;packages/plugin-detailby #5794.⛔ The old "blocked twice" constraint is RETIRED — #5716 closed 04:57Z via PR #5752, so #5435 is single-blocked on objectstack#11195 alone. Not over-read: nobody has measured that a pin refresh succeeds end-to-end.
4. Platform facts measured by this seat
Test (shard n/4)IS NOT A REQUIRED CHECK, AND A DIRECT MERGE IS REFUSED. Two halves, both measured: (1) on fix(plugin-detail): derive ReferenceRailEntry from @objectstack/spec and retire the icon key #5794 auto-merge fired at 09:27:58Z with shards 2/4 and 4/4 still running; (2)merge_pull_requestis rejected outright —405 … Changes must be made through the merge queue— so auto-merge IS the enqueue mechanism. The discipline is therefore when you arm it: read the full farm by name, then arm. "Green = 19 success + 3 skipped = 22" describes the FARM, not the MERGE GATE. Never tell a card auto-merge is holding for a check that is not required.5386204916, R6). All five R1–R3 PRs merged after their four shards reported, so fix(plugin-detail): derive ReferenceRailEntry from @objectstack/spec and retire the icon key #5794 is the only PR that landed on incomplete shard evidence and nothing onmainneeds revisiting. But feat(core,react): declarerecord.*the row-predicate canon and warn on the two deprecated spellings #5737 cleared by 45 s and Add the ObjectViewSchema drift guard, and fold the four per-view-type config aliases #5760 by 35 s — margins produced by merge-queue latency exceeding the test-farm tail, not by any decision this seat made. Arming timestamps for those five were not recoverable, so "the practice was identical in all six and only the timing differed" is inference, not measurement — flagged as such. Do not read the audit as licence to arm early.Build Docs. Mis-diagnosed feat(types,plugin-calendar): converge CalendarViewSchema on the calendar-view renderer's read set #5739'sBuild Docsfailure because a sibling "passed" — an 11-second cache hit against a real 3m50s build. Reproduced on fix(plugin-detail): derive ReferenceRailEntry from @objectstack/spec and retire the icon key #5794/feat(types): retire 'agenda' from defaultView on all three declaration faces #5806 (10 s each). Test shards cache too: on docs(plugin-form): Phase 0 of the row-predicate deprecation — stop teaching the bare shorthand (#5738) #5758 (docs-only) all four completed in 11–13 s. Legitimate there, but it means any job's green can be a cache hit. Compare durations before using check X on PR A as a control for X on PR B. Contrast:Type Checkat 9m21s on feat(types): retire 'agenda' from defaultView on all three declaration faces #5806 is a plausible real run.Build Docsis red onmain(Build Docsis red onmain:fsreaches the browser bundle via@objectstack/spec→pg-connection-string#5668) and does NOT gate the queue.fsviapg-connection-string ← @objectstack/spec ← @objectstack/formula ← packages/core/dist/evaluator/fieldRules.js ← packages/components ← InteractiveDemo.tsx. Real (uncached) failures measured on feat(types,plugin-calendar): converge CalendarViewSchema on the calendar-view renderer's read set #5739 (3m52s) and feat(types): retire 'agenda' from CalendarViewMode and the zod enum #5782 (3m43s) — both merged anyway. The MDX route in the trace varies between runs, so the failure is in the shared client graph, not any doc page. Exclude with cause; never call such a PR "green".check_suite.completedIS NOT A GATE READING. It fired on feat(types): retire 'agenda' from defaultView on all three declaration faces #5806 at 12:04:56Z; the farm was read by name anyway. GitHub's own notice excludes cancelled suites, suites with no runs, and legacy statuses. Read jobs BY NAME.9a5d669c1, pre-feat(types): retire 'agenda' from CalendarViewMode and the zod enum #5782 — a "which faces still carry'agenda'" grep on it would have been worthless. Re-grep at the PR's actual base sha.@ts-expect-errorIN A FILE NOtscREADS IS A NO-OP THAT LOOKS LIKE A TEST.feat(types): retire 'agenda' from defaultView on all three declaration faces #5806's TS-face pin is real only becausepackages/types'stype-checkchainstsconfig.test.json— and an unused directive is itself an error, so a green type-check proves the rejection. Verify the tsconfig chain before crediting such a pin.search_issuescan silently return zero, control words included (objectstack#11193). Dedupe here uses two independent methods.ReferenceRailEntryis owned by @objectstack/spec as of 17.1.0 and objectui's local copy declares an extraiconkey the spec's strict schema refuses #5494's central premise ("the renderer readsicon") measured false, and false at filing — the retirement was cheaper than priced. finding(types/plugin-calendar):defaultViewdeclares'agenda'inObjectCalendarSchemaand both zod twins, butObjectCalendarreads it as'month' | 'week' | 'day'#5784's measured stronger than briefed:@objectstack/spec'sObjectCalendarProps.defaultViewis already three-valued, so objectui was the outlier and Option A closed a spec-alignment gap (commandment #0), not merely an ADR-0049 narrowing.ReferenceRailEntryis owned by @objectstack/spec as of 17.1.0 and objectui's local copy declares an extraiconkey the spec's strict schema refuses #5494 was written as "retire a key from a type"; objectui's ownbuildDefaultPageSchemawas emitting that key into every synthesized rail page. Carried into finding(types/plugin-calendar):defaultViewdeclares'agenda'inObjectCalendarSchemaand both zod twins, butObjectCalendarreads it as'month' | 'week' | 'day'#5784's brief as a declared fork condition; there the two forwarders proved genuine pass-throughs. Ask "who writes this key?" every time.record.*, or do the bare shorthand anddata.*spellings stay? (the uncarried "#4075 step 3" question) #5330 read[Decision]inpm:queueand was not a mislabel.keyofexhaustiveness idiom collapses toneverunder an index signature — deleting a key lefttype-checkgreen; and a loop-unwrap()walksz.array(z.string())down tostringin zod 4..shape— a "is the key present" parity check reports a RETIRED key as live and passes.view: 'agenda'is declared byCalendarViewModeand the zod enum but thecalendar-viewrenderer silently falls back to'month'#5740 had pushed1f94b4c9); both resumed viaSendMessageand completed. Checkgit ls-remote --heads origin 'refs/heads/claude/issue-*'before choosing resume vs withdraw.check:spec-symbolsruns inside theType Checkjob (ci.yml:238), under no name of its own. Its DEBT ledger is ratcheted (check-spec-symbol-derivation.mjs:1066). Sanctioned forms:export type { X } from '@objectstack/spec/…'andexport type X = z.infer<typeof SpecX>(:907-926).mainin between. A single budget reading is a snapshot, not a trend.needs:contract-reviewin this repo (at-tier dispatch, 「直接入队」);dispatch-gates.mjsis the wrong tree; the sanitizer eats bare angle-bracketed tokens. Governed surfaces:AGENTS.md,CLAUDE.md,.claude/**,docs/adr/**— no PR touched one.5. Next (R7) — STANDBY, queue empty
Dispatchable — 0. Re-verified at 13:16Z; lane holds 13 cards:
pm:queue@objectstack/spec+framework. objectui is the last step and a consumer. Belongs to the objectstack spec lane. Not relabelled — another author's card, and the label is not wrong, just not this seat's.pm:queuepm:blockedpm:on-holdneeds-user-decisiontrackingStandby duties, in order:
normalizeListViewSchemamanufacturesuserActions.group/hideFields/rowColor— three keysListViewSchemarefuses BY NAME, so the fold's own output fails the view save gate #5435; unassigned/unclaimed ~11 h) · objectstack#11284 (releases Migrate the remaining ListView legacy vocabulary to spec-canonical keys, and audit ObjectView/DetailView (#2231 phases 4–5) #2890).calendar.agendais a confirmed-dead key in all ten locale packs — no static reader, no dynamiccalendar.head, and the enum value it labeled is retired #5783 (dead i18ncalendar.agendaresidue in all 10 locales, zero consumers; independently re-confirmed by finding(types/plugin-calendar):defaultViewdeclares'agenda'inObjectCalendarSchemaand both zod twins, butObjectCalendarreads it as'month' | 'week' | 'day'#5784's dev; still ungraded and unaddressed — the most likely next dispatch if it lands in this lane) · [finding] registry-inputs-spec-parity narrates theReferenceRailEntryicon divergence as unsettled after #5494 resolved it #5792 (stale-by-landing — citesReferenceRailEntryis owned by @objectstack/spec as of 17.1.0 and objectui's local copy declares an extraiconkey the spec's strict schema refuses #5494 as unsettled;ReferenceRailEntryis owned by @objectstack/spec as of 17.1.0 and objectui's local copy declares an extraiconkey the spec's strict schema refuses #5494 landed) · Packages whose published d.ts references spec-17.1.0-only symbols still declare"@objectstack/spec": "^17.0.0"— the range admits a spec that lacks the symbols #5793.Merge-timing audit— DONE in R6, comment5386204916. See §4.⛔ Decision box — two cards, both awaiting the maintainer
#5741 — the stored-metadata channel. No new comment since this seat's ACCEPT at 08:06Z. Phase 2 of the row-predicate deprecation is gated on a survey, and no seat holds a channel to stored metadata. Four-facet block on the card (A: per-tenant REST token — ⛔ insufficient alone, it sizes one tenant and calls it the fleet; B: read-only replica/dump; C: offline export via Setup's existing read-only Export). Recommended C, fallback B.
data.*binds nothing at runtime, so rewriting a stored predicate needs authorial intent a machine cannot infer.objectstack#11284 — the⚠️ Unchanged at 13:16Z — still
react-blocks.tsvocabulary question (releases #2890). Triage backfilled the four-facet block at 09:38Z and recommends 收敛 (converge) with deprecate-first discipline,viewType→typein the same stroke.needs-user-decision, maintainer has NOT answered. A recommendation is not a ruling; #2890 stays blocked.6. Notes
CalendarViewSchemadeclares 9 of its 13 keys that thecalendar-viewrenderer never reads — includingevents, its only required key, which the renderer deliberately drops #5667 described as narrowing when.passthrough()meant it widened;ReferenceRailEntryis owned by @objectstack/spec as of 17.1.0 and objectui's local copy declares an extraiconkey the spec's strict schema refuses #5494's ACCEPT claiming auto-merge was holding for non-required checks; and the R4→R5 ~58-minute idle gap where a graded card sat undispatched. Plus one over-stated characterisation walked back to the user (the eager-closure budget called "a standing condition" when it moved 692 KB in two hours). A dispatch is a hypothesis; measurement outranks it — including measurement of the merge machinery and of this seat's own cadence.view: 'agenda'is declared byCalendarViewModeand the zod enum but thecalendar-viewrenderer silently falls back to'month'#5740 from finding(types/plugin-calendar):CalendarViewSchemadeclares 9 of its 13 keys that thecalendar-viewrenderer never reads — includingevents, its only required key, which the renderer deliberately drops #5667, finding(types/plugin-calendar):defaultViewdeclares'agenda'inObjectCalendarSchemaand both zod twins, butObjectCalendarreads it as'month' | 'week' | 'day'#5784 from finding(types/plugin-calendar):view: 'agenda'is declared byCalendarViewModeand the zod enum but thecalendar-viewrenderer silently falls back to'month'#5740. Both recorded as a veto window, not a permission gate; both re-measured before dispatch. Still overturnable.domain:specqueue, flipping its own card topm:blocked+Blocked-by:in the same stroke. Does not scandomain:ui([pm:seat] domain:ui — objectui execution seat #5560) ordomain:devx(objectstack#10602).