#5930 T2's measurement · p2 (Part of; card → pm:on-hold, restart condition in its body) |
#21600 |
b610eabf7 |
| #21511 · p2 |
#21603 |
ec390ec00d |
| #21485 · p2 |
#21611 |
440cd329a9 |
#21571 · p1 security |
#21612 |
5c9138b4b6 |
#21544 · p1 security (raised from p2 on the measured door gap; contract review PASS 5972169363) |
#21619 |
5d0e4e2793 |
#20595 stage 11 driver-mongodb · p3 (Part of) |
#21617 |
f97660cdd6 |
#20595 stage 12 formula · p3 (Part of) |
#21635 |
0a0debbe96 |
#20595 stage 13 metadata-fs · p3 (Part of); card closed completed: this lane's census reads 0 on main |
#21640 |
1e4ae087a2 |
| #21558 · p3 (contract review PASS 5972275685) |
#21618 |
e367002e11 |
| #21597 · p3 |
#21628 |
a1ca156da5 |
| #21595 · p3 |
#21629 |
5d095a00ad |
#21613 · p1 security (the write half of #21571's rule) |
#21631 |
5b5e83f446 |
| #21620 · p3 (triage's narrower fallback; patch round 1 on the prescription) |
#21637 |
7b07749f05 |
| #21639 + #21638 · p3 (the view-container family's closing predicate) |
#21648 |
eea82af677 |
#21604 · p2 security (maintainer's ruling B; contract review FAIL on the old head, then PASS 5975571464 on the landed head) |
#21653 |
98eb3b9b89 |
#21646 · p2 (a seed keeps its authored created_at on insert) |
#21661 |
be55fd2934 |
#21516 · p1 security (the previous seat's, landed by its caretaker, the director seat) |
#21545 |
eb9ef791bd |
| #21658 · p2 (the save door refuses a handler-only hook) |
#21686 |
ced217ca30 |
| #21665 · p2 (a per-organization seed replay gives each organization its own row ids) |
#21688 |
ff167402cf |
| #21663 · p2 (a system write's readonly value is judged for its shape; patch round 1 for an ADR anchor) |
#21695 |
8843505d91 |
#21689 · p2 (the save door refuses every hook with no body; closes the hook family) |
#21706 |
7fd2c34de8 |
#21682 · p2, raised from p3 on the console reading (droppedFields names only caller-sent keys; queue dequeue, then patch round 1) |
#21701 |
5259a35e69 |
#21694 · p3 (the _lock gate refuses on every topology; the diagnostics count reads servedLockState; premise corrected: setup, studio and account carry protection.lock: full) |
#21715 |
c43a8ae612 |
| #21716 · p3 (the lock family's org axis: one row resolution for both reads and the gate; 64-row enumeration pin; narrow REWORK on one changeset sentence) |
#21737 |
cf60dbc8b3 |
#21734 · p3 (driver-sql reads PRAGMA auto_vacuum first; landed with no PR assignee, because the dev's write was refused by its permission check and the seat surfaced it rather than redoing it) |
#21744 |
da40a5f649 |
#21738 · p3 (the lock family's artifact-layer axis: one item-lock resolver, item-lock.ts, for the _lock gate, both reads and the served body; a 1632-row generated pin; no door verdict changed) |
#21759 |
b7a13c762f |
| #21727 · p2 (a protocol-incompatible install answers 422 with its structured diagnostic; the no-protocol fallback runs the same handshake; contract review PASS 5985910103) |
#21760 |
e83c9f6154 |
#21777 · p2 (a runtime syncSchemas() binds a federated object without DDL, as the boot sync does; no false durability ERROR) |
#21796 |
26d710eba1 |
| #21761 · p3 (the lock family's package axis: the lock is the strictest among the stored rows in scope for the item's address; 0 widenings, 24 narrowings in the PR's census) |
#21801 |
18c2ddc1ec |
#21804 · p3 (a package's slot in the unscoped list serves the row getMetaItem naming that package serves: one candidate order, servedOverlayRowCandidates) |
#21815 |
3237b4a2d9 |
#21790 · p2, from QA run #21784 (a pure field reorder is a content change, so the designer's publish is no longer dropped; narrow REWORK on the Clause-② line, two patch rounds; contract review PASS 5989046850) |
#21814 |
e1790fdcfc |
| #21803 · p3 (the lock family's closing card: the strictest per-package answer among the installed packages that ship the name; 0 widenings in 2000 door cells; a 24000-row enumeration pin over the family's six positions) |
#21844 |
18fe6815a2 |
#21828 · p3 (DatabaseLoader stamps and compares hashSpec(body, type): one vocabulary in sys_metadata.checksum; landed with no PR assignee, because the dev's write was refused by its permission check and the seat raised it rather than redoing it) |
#21852 |
0fe0a59b2e |
#21853 · p3 tooling (the PR-10d.1 dry-run-hash-compat.ts probe retired with its test and its tsconfig.scripts.json program, per triage's ruling; skip-changeset) |
#21865 |
eb23966148 |
#21817 · p3 (a package-scoped list slot serves the row getMetaItem naming the package serves: package-less rows enter the merge as stand-ins; membership and lock unchanged) |
#21871 |
2e780467b1 |
#21849 · p2 (ruling D: the dead sys_account link_social action retired, unlink_account stays; minor BREAKING, Clause-②: no (narrowing); contract review PASS 5998938943) |
#21894 |
7665c541a6 |
📌 Job description:
.claude/skills/pm-dispatch/references/lanes/engine.md. ⛔ Not hand-copied per term. Seat 2 is #20966.Refreshed 2026-10-05T17:46Z (round 36, review): 🟢
os-project-manager·session_017ErfyP2Rx7XWHJA27QjyUi, seated by take-over at 2026-10-03T12:28Z. The open-round marker is 5969160928.1. Current PM — 🟢
os-project-managersession_017ErfyP2Rx7XWHJA27QjyUi, seated on/pm-dispatch engine. The maintainer's words in chat, verbatim: 「前任没有 token 了, 你接班」.session_01DDZNkDVwPQnevTFcYE47H3(os-elon-musk).trig_011gAwG3Q6PEcguQ2BQp4zug(hourly at :28, self-bound to this session). PR subscriptions: none open; each dev PR is subscribed when it opens and unsubscribed on merge.2. Ledger (⛔ re-read the labels before acting)
Landed this term (each verified on
origin/main; the records are on the cards):Part of; card →pm:on-hold, restart condition in its body)b610eabf7ec390ec00d440cd329a9security5c9138b4b6security(raised from p2 on the measured door gap; contract review PASS 5972169363)5d0e4e2793driver-mongodb· p3 (Part of)f97660cdd6formula· p3 (Part of)0a0debbe96metadata-fs· p3 (Part of); card closedcompleted: this lane's census reads 0 onmain1e4ae087a2e367002e11a1ca156da55d095a00adsecurity(the write half of #21571's rule)5b5e83f4467b07749f05eea82af677security(maintainer's ruling B; contract review FAIL on the old head, then PASS 5975571464 on the landed head)98eb3b9b89created_aton insert)be55fd2934security(the previous seat's, landed by its caretaker, the director seat)eb9ef791bdced217ca30ff167402cf8843505d91body; closes the hook family)7fd2c34de8droppedFieldsnames only caller-sent keys; queue dequeue, then patch round 1)5259a35e69_lockgate refuses on every topology; the diagnostics count readsservedLockState; premise corrected:setup,studioandaccountcarryprotection.lock: full)c43a8ae612cf60dbc8b3driver-sqlreadsPRAGMA auto_vacuumfirst; landed with no PR assignee, because the dev's write was refused by its permission check and the seat surfaced it rather than redoing it)da40a5f649item-lock.ts, for the_lockgate, both reads and the served body; a 1632-row generated pin; no door verdict changed)b7a13c762fe83c9f6154syncSchemas()binds a federated object without DDL, as the boot sync does; no false durability ERROR)26d710eba118c2ddc1ecgetMetaItemnaming that package serves: one candidate order,servedOverlayRowCandidates)3237b4a2d9Clause-②line, two patch rounds; contract review PASS 5989046850)e1790fdcfc18fe6815a2DatabaseLoaderstamps and compareshashSpec(body, type): one vocabulary insys_metadata.checksum; landed with no PR assignee, because the dev's write was refused by its permission check and the seat raised it rather than redoing it)0fe0a59b2etooling(the PR-10d.1dry-run-hash-compat.tsprobe retired with its test and itstsconfig.scripts.jsonprogram, per triage's ruling;skip-changeset)eb23966148getMetaItemnaming the package serves: package-less rows enter the merge as stand-ins; membership and lock unchanged)2e780467b1sys_accountlink_socialaction retired,unlink_accountstays;minorBREAKING,Clause-②: no (narrowing); contract review PASS 5998938943)7665c541a6In the merge queue: none.
Accepted, landing: none.
In flight (
mode:subagentunder this session; each card's claim is the record):objectOverride), so a delegated_admin is served noinvite_userthough the invite door admits them #21884 (p2): the object-schema FLS mask judges anobjectOverrideparam against the named object's readable set, sodelegated_adminis servedsys_user.invite_user; the mask still drops on a denied field of either object and fails closed (triage 5996976481).Clause-②: no, to be revised if the fix widens@objectstack/metadata-core's exports. Claim 5998699624; order sha256c056c6539a82f82a.sys_member.add_memberis offered to every organization member, owners and admins included, but its door admits only a platform admin #21886 (p3), inpm:retriage(5999894453). The dev measured no declared, non-deprecated predicate for platform-admin standing (5999863859):current_user.isPlatformAdminis the door's own signal in the console, but the spec declares it Deprecated and derives it frompositions. The fork goes to triage's decision box; the dev recommends un-deprecating it as the posture rung, which is a spec and ADR-0068 change. No code, no PR. Claim 5999650144 stands.History of #21849: seat 1 claimed it (5991785130); the dev returned
needs_decision(5992085207); the seat raisedpm:retriage(5992131027) and stood down (5992158306) whensession_018zT8d8NpiQ1ExhuNd5TxY6claimed it on the maintainer's direct order. Triage answered (5993015114), the maintainer ratified D (5995717941), and the holder released the card to this lane (5995736700) on the maintainer's word 「只有不能公开的才需要你派发处理」. Seat 1 claimed it again (5996648361) and landed it (landing record 5999615935).Queue (
pm:queue, unclaimed, this lane):PUT /api/v1/meta/datasource/:nameanswers 200) and the metadata read then serves it, while the datasource admin door refuses the same edit as read-only #21899 (p2): the metadata door saves an edit to anorigin: 'code'datasource that the admin door refuses as read-only (triage 5999066595: refuse it at the meta door with the admin door's answer). Serial behinddomain:cli's [finding] A code-defined datasource is registered without its package's provenance, so the external import never applies the ADR-0028 namespace rule to it — an import names an unprefixed object and is accepted #21889 (pm:dispatched,os-warren), on the same datasource registration; seat 1 claims it when [finding] A code-defined datasource is registered without its package's provenance, so the external import never applies the ADR-0028 namespace rule to it — an import names an unprefixed object and is accepted #21889 lands.security): the pinyin companion clause escapes a field-narrowed search. ⛔ Not claimed by seat 1. Its mechanism is withheld (RUNNER rule 2) insession_018zT8d8NpiQ1ExhuNd5TxY6, and by the maintainer's word quoted in 5995736700 a card that cannot be public is that session's to dispatch. Its serial PR fix(metadata-protocol): global search skips objects and fields the caller cannot read #21879 (search: a member's global search answers 403 for the whole request when its scope includes any object the member cannot read — the console shows "No results found" #21836) is no longer open at the 2026-10-05T17:29Z re-read.Filed this term (
finding, for triage):--sinceis passed to git verbatim and read at the current time of day, so the tool answers a narrower window than its receipt names, at exit 0 #21601 (git-history.mjsbare-date window);record#21613 (graded p1, landed);timezonestill echoesdate_trunc(GRANULARITY, col), whose keys fall on the session zone's calendar and group rows differently from the face #21630 (the analytics SQL echo under a non-UTC zone on PostgreSQL, analytics on SQLite: a week-bucketed (or non-UTC zone) dimension still echoes date_trunc, which SQLite refuses; driver-sql has no SQLite week expression #21595's foreseen follow-up);<object>.default, are accepted with no diagnostic #21639);<object>.default, are accepted with no diagnostic #21639 (landed);handlername and nobody, which the runtime then refuses at bind: a runtime-authored hook holds no functions, so that form can never run #21658 (the metadata save door accepts a body-lesshandlerhook, from [Decision] security(objectql): may a hook'shandlername bind to a function another package registered (the engine-wide fallback HookSchema.handler declares), or does name resolution stay inside the hook's own package (#21585 option B) #21604);'yesterday', an unresolvedcelenvelope) is stored verbatim, while the same value on a non-readonly field is refused #21663 (a system write skips readonly value-shape validation, from A seed row's explicitcreated_atis overwritten with the boot instant on INSERT (seed context sets nopreserveAudit), yet written on the upsert UPDATE of a later boot — seeds cannot backdate creation time consistently #21646);bodynorhandler, which the runtime skips at every re-sync ("unresolved handler"): the bare hook is stored, served by name, and never runs #21689 (the save door also accepts a hook with neitherbodynorhandler, from The metadata save door answers 200 to a hook with ahandlername and nobody, which the runtime then refuses at bind: a runtime-authored hook holds no functions, so that form can never run #21658; unlocked once The metadata save door answers 200 to a hook with ahandlername and nobody, which the runtime then refuses at bind: a runtime-authored hook holds no functions, so that form can never run #21658 landed, now in flight);dispatch-gatesnever derives the symbol-anchor sweeps for a change to an anchored TARGET file; it cost PR fix(objectql)!: a system write's readonly value is judged for its shape — a seed's malformed readonly datetime is refused, never stored (#21663) #21695 one CI cycle);_lock: fullreads locked in an org-scoped read, but an org-scoped save of it is admitted —getEffectiveLock's overlay limb matchesorganization_idexactly #21716 (the org axis of the lock family, from finding(metadata-protocol): two lock reports the #21670 read fix left unaligned — a host-config kernel's_lockgate admits a save the read now calls non-editable, andgetMetaDiagnostics().stats[type].lockedcounts declared_lockonly #21694's report; landed);_lock: 'none'reads editable while the door refuses, and the layered read takes the code layer's lock over a stored row's #21738 (the lock family's artifact-layer axis plus the spelling residue, from [finding] an env-wide metadata row declaring_lock: fullreads locked in an org-scoped read, but an org-scoped save of it is admitted —getEffectiveLock's overlay limb matchesorganization_idexactly #21716's report: one card for the remaining positions; landed);os migrate duplicatesconverts a never-connected rollback-journal file to WAL, whilecli.mdxsays it writes nothing at all; from driver-sql: connect() always runs PRAGMA auto_vacuum = INCREMENTAL, so read-only probes (os migrate duplicates) bump the SQLite header — the "no-op" docblock and "writes nothing at all" doc are untrue #21734's report);_lock: 'none'reads editable while the door refuses, and the layered read takes the code layer's lock over a stored row's #21738's report; landed);marketplace-install-localinstalls a^16manifest with 200 whilePOST /api/v1/packagesrefuses it with 422; from packages: a protocol-incompatible package install answers 500 OS_PROTOCOL_INCOMPATIBLE and drops its structured diagnostic (requiredRange, rangeSource, protocolVersion, targetMajor, migrateCommand) #21727's report; claimed bydomain:cli);_lockgate looks up the packaged artifact with no package while both reads use the request's package: the lock family's closing card, from [finding] lock family, package axis: a read naming a package serves that package's row and reports its lock, while the _lock gate's overlay read selects without a package #21761's report; landed);getMetaItemnaming the package serves its own row, from [finding] lock family, package axis: a read naming a package serves that package's row and reports its lock, while the _lock gate's overlay read selects without a package #21761's report; landed);revertCommit's restore limb hands a stored manifest-plural type toput, from metadata: publishing a field reorder from the object designer is a silent no-op — the content hash is key-order-insensitive, so a reorderedfieldsmap hashes equal and the draft is dropped #21790's patch round);DatabaseLoader.saveskips on a key-sorted checksum on theMetadataManager.registerpath, from metadata: publishing a field reorder from the object designer is a silent no-op — the content hash is key-order-insensitive, so a reorderedfieldsmap hashes equal and the draft is dropped #21790's contract review; graded p3; landed);dry-run-hash-compat.tshashes type-blind, from metadata: publishing a field reorder from the object designer is a silent no-op — the content hash is key-order-insensitive, so a reorderedfieldsmap hashes equal and the draft is dropped #21790's contract review and [finding] DatabaseLoader.save skips on a key-sorted checksum, so an object whose only change is a field reorder is not persisted through MetadataManager.register #21828's report; triage rules it retired; landed).Cross-lane notes sent: #6024 (5999680733: #21886 may add one dogfood case); #6024 (5998746424: #21884 may write
packages/runtime/src/domains/meta.ts'smaskObjectSchemaif measured necessary, and one dogfood test); #6017 (5996679091, theaction.zod.tstargetdocblock); #6023 (5996690096,content/docs/protocol/objectui/actions.mdxand the checklist itemidentity-auth.linked-accounts-social); #21846 (5996720856: PR #21872's "link from account settings" remedy names the console button #21849 retires; the door stays).Blocked or on hold in this lane:
singleposture — first-user promotion becomes development-only fallback #11979, [finding] After #12892 step 2 an artifact boot with an engine still holds a THIRD, un-parsed copy ofpermissions/capabilities/sharingRulesin the ObjectQL SchemaRegistry (AppPlugin.init→manifest.register), and the plugin-security / plugin-sharing seeders read that copy FIRST #14491,sys_business_unit_memberis unadjudicated inPLATFORM_OBJECT_TENANCY, so seed-replayed and system-written membership rows land organization-less #14570, feat(objectql,plugin-auth): the Default Organization is load-bearing undersingle; an unstamped write is derived there and refused everywhere else (ADR-0131 D3/D9/D11) #15195, feat(core,objectql,plugin-security,plugin-sharing): the catalog is read from the registry; assignment tables reference it by name (ADR-0131 D2/D3/D4) #15196, feat(metadata-core,metadata-protocol,objectql,plugin-security): thesys_metadatafamily goes tenant-less; the per-organization overlay axis retires; managed content is sealed (ADR-0131 D6/D7/D13) #15206, feat(objectql,cli): inventory + migration — four fates per object, mirrors deleted only after the id→name rewrite is verified, per-table boot report (ADR-0131 D10) #15211, feat(spec,drivers,objectql,plugin-security):organization_idNOT NULL per cleared table; one predicate for Layer 0 and every driver; bothorWhereNullarms, the__global__sentinel and the #13491 ledger retire (ADR-0131 D1/D8/D9) — protocol 18 #15212, feat(spec,objectql,cli): the template install mode — a package copied once into the environment ledger, fully editable, refused on shared-database multi-tenant postures (ADR-0131 D6) #15213 and The driver-level tenant scope (DriverOptions.tenantId→applyTenantScope) does not honour the deployment'splatformGlobalObjectscarve-out (#12699): an exempted object stays walled at the driver while Layer 0 composes nothing #15831. These ten wait on [gate] the v18 development line is not open — ADR-0131 execution cards are blocked on this card #15193 (the v18 gate) and refactor(plugin-security,platform-objects,spec): retire the catalog seeders, the per-organization catalog machinery and the four catalog objects; Setup creation is an environment write undersingleand refused under a wall (ADR-0131 D2/D3/D5/D13) #15204, both still open at the 2026-10-03T20:13Z unlock scan.DataEvent.aftercarries the raw driver row — a fifth__searchsurface that #7868 deliberately did not strip #7877 and drivers(sql):upsert's empty-merge-set fallback is merge-ALL, which re-admits every insert-only column — currently unreachable, but it is the wrong shape for "nothing to merge" #8740.enable.trash/softDeleteare spec-only with zero runtime readers #3146 and [裁决] driver-memory / driver-mongodb 投入冻结 —— 维护者 2026-08-05 口径(跨单锚点) #5499.Decision box: empty. Batch #275 ruled both cards on 2026-10-03T23:13Z: #21599 (letter A) closed with no change, and #21604 (letter B) landed. The census for #21604 could not reach the cloud repository: NOT MEASURED, raised to the maintainer in the round report.
All dev runs stopped once on an account usage limit at about 2026-10-03T13:00Z. They were resumed after the 15:00Z reset, with their claims and pushed branches intact.
3. Hot-file serial queue (regions, ⛔ not files)
objectOverride), so a delegated_admin is served noinvite_userthough the invite door admits them #21884):metadata-core'sobject-schema-fls-references.ts(presentationEntry) and, as measured, the posture source inobject-schema-fls.ts; declared outside the lane:packages/runtime/src/domains/meta.ts'smaskObjectSchema(if needed) and one dogfood test.sys_member.add_memberis offered to every organization member, owners and admins included, but its door admits only a platform admin #21886's region (sys-member.object.ts'sadd_membervisibility) stays claimed while it is in retriage.metadata-protocolsave door: finding(metadata-protocol): the runtime save door accepts a view container saved under one of its own expanded names, and after #21510's rule no door answers a view item for that name #21558, The runtime save door accepts a view container saved under a name ANOTHER container expands to; the object door then lists the second container's list in place of the first's default, and no door answers a view item under the saved name #21620, Two stored view containers of one object still displace each other's views: a container bound elsewhere or unbound under a sibling's expanded name, and a second container's bare list taking the first's<object>.default, are accepted with no diagnostic #21639, The metadata save door answers 200 to a hook with ahandlername and nobody, which the runtime then refuses at bind: a runtime-authored hook holds no functions, so that form can never run #21658, The metadata save door answers 200 to a hook with neitherbodynorhandler, which the runtime skips at every re-sync ("unresolved handler"): the bare hook is stored, served by name, and never runs #21689;seed-loader.ts's per-organization replay ids ([finding] On a walled showcase deployment every organization/create replays fixed-id sys_business_unit seeds that collide on the global id: 9 SeedLoader errors and an unresolved parent reference per new organization #21665);record-validator.ts's readonly value-shape scope (A system-context write skips value-shape validation for readonly fields: a seed's malformed readonly datetime ('yesterday', an unresolvedcelenvelope) is stored verbatim, while the same value on a non-readonly field is refused #21663);engine.ts'sinsertcaller-key record ([finding] On a walled posture a create that names no organization_id answers droppedFields [organization_id: readonly], a field the caller never sent (the insert analogue of #8093) #21682);protocol.ts's_lockgates andgetMetaDiagnosticscount (finding(metadata-protocol): two lock reports the #21670 read fix left unaligned — a host-config kernel's_lockgate admits a save the read now calls non-editable, andgetMetaDiagnostics().stats[type].lockedcounts declared_lockonly #21694), andfindServedOverlayRow([finding] an env-wide metadata row declaring_lock: fullreads locked in an org-scoped read, but an org-scoped save of it is admitted —getEffectiveLock's overlay limb matchesorganization_idexactly #21716);driver-sql'sapplyAutoVacuumIncremental(driver-sql: connect() always runs PRAGMA auto_vacuum = INCREMENTAL, so read-only probes (os migrate duplicates) bump the SQLite header — the "no-op" docblock and "writes nothing at all" doc are untrue #21734);item-lock.ts, the one item-lock resolver, and its three callers inprotocol.ts([finding] lock family, artifact-layer axis: an explicit artifact_lock: 'none'reads editable while the door refuses, and the layered read takes the code layer's lock over a stored row's #21738);metadata-core'sProtocolIncompatibleError, the packages door's install branch and the ledger row (packages: a protocol-incompatible package install answers 500 OS_PROTOCOL_INCOMPATIBLE and drops its structured diagnostic (requiredRange, rangeSource, protocolVersion, targetMajor, migrateCommand) #21727);engine.ts'ssyncSchemas()and the sharedisFederatedObjectpredicate ([finding] install-local install and rehydrate on the showcase log two ERROR "Schema sync FAILED … not durable" lines for external-schema objects whose DDL is correctly refused — a durability alarm with no durability loss #21777);item-lock.ts'sresolveOverlayLockLayer, the address-based row selection for every lock caller inprotocol.ts([finding] lock family, package axis: a read naming a package serves that package's row and reports its lock, while the _lock gate's overlay read selects without a package #21761);protocol.ts'sservedOverlayRowCandidates, shared byfindServedOverlayRowandmergePackageAwareOverlay([finding] getMetaItems: a package's list slot can serve the package-less row's body while getMetaItem naming that package serves the package's own row #21804);metadata-core'scanonicalize.ts(orderedobject.fields) andsys-metadata-repository.ts's content comparison (metadata: publishing a field reorder from the object designer is a silent no-op — the content hash is key-order-insensitive, so a reorderedfieldsmap hashes equal and the draft is dropped #21790);item-lock.ts'sresolveArtifactLockLayerandprotocol.ts'sartifactLockLayerAt, the artifact layer for every lock caller ([finding] lock family, artifact layer × package axis: the _lock gate looks up the packaged artifact with no package while both reads look it up with the request's package #21803);packages/metadata'sDatabaseLoader.saveand its history write ([finding] DatabaseLoader.save skips on a key-sorted checksum, so an object whose only change is a field reorder is not persisted through MetadataManager.register #21828);protocol.ts's package-scoped list read inreadFlattenedMetaItemsandmergePackageAwareOverlay's stand-in records ([finding] getMetaItems scoped to a package reads only that package's rows, so it never falls back to the package-less row that getMetaItem naming the package serves #21817);packages/objectql's retiredscripts/program and its wiring ([finding] dry-run-hash-compat.ts hashes stored bodies type-blind, so it reports checksum_drift for every object row whose fields are not in sorted order #21853);sys-account.object.ts'slink_socialaction, its translation leaves and the comments, docblock and docs example that cited it (identity: the "Link Social Account" action is dead on every boot — it navigates to a GET of the POST-only social sign-in route (404) and offers a fixed provider list regardless of configuration #21849).engine.ts: the read and write shaping (An unprojected REST data query returns ORPHANED columns that no metadata declares (fields retired in an upgrade), outside any field-level rule, untilos migrate apply --allow-destructive#21571, A write response still serves ORPHANED columns no metadata declares: after the read narrowing, PATCH /api/v1/data/OBJECT/ID answers 200 with a retired field's column inrecord#21613) and the function-registry reading ([Decision] security(objectql): may a hook'shandlername bind to a function another package registered (the engine-wide fallback HookSchema.handler declares), or does name resolution stay inside the hook's own package (#21585 option B) #21604);hook-binder.ts([Decision] security(objectql): may a hook'shandlername bind to a function another package registered (the engine-wide fallback HookSchema.handler declares), or does name resolution stay inside the hook's own package (#21585 option B) #21604);plugin.ts's audit stamp (A seed row's explicitcreated_atis overwritten with the boot instant on INSERT (seed context sets nopreserveAudit), yet written on the upsert UPDATE of a later boot — seeds cannot backdate creation time consistently #21646);driver-sql'sbuildDateBucketExpr(driver-sql on PostgreSQL: a month (or any) date bucket over adatecolumn shifts by the server's timezone (::timestamptz AT TIME ZONE 'UTC'), so with a non-UTC server a calendar day lands in the previous bucket #21485, analytics on SQLite: a week-bucketed (or non-UTC zone) dimension still echoes date_trunc, which SQLite refuses; driver-sql has no SQLite week expression #21595).session_018zT8d8NpiQ1ExhuNd5TxY6(hotlong) dispatches, on the maintainer's direct order, only the cards that cannot be public (its release 5995736700 quotes 「只有不能公开的才需要你派发处理」). At this write it holds search: a member's global search answers 403 for the whole request when its scope includes any object the member cannot read — the console shows "No results found" #21836 (PR fix(metadata-protocol): global search skips objects and fields the caller cannot read #21879); security(search): a field-narrowed search still matches through the name field's pinyin companion #21880's withheld detail is held there. Seat 1 does not claim them.domain:spec's [finding] three "declared, not enforced yet" rows in the metadata-form reconciliation ledger are stale:field.picklist,action.onSuccessandaction.outcomeMessagesreadlive, and none has had its offer decided #21863 (declaration 5998582591) regenerates the four*.metadata-forms.generated.tscatalogs and any count pin they move. identity: the "Link Social Account" action is dead on every boot — it navigates to a GET of the POST-only social sign-in route (404) and offers a fixed provider list regardless of configuration #21849 holds the*.objects.generated.tsbundles, different files, so no reply is owed.domain:spec's build: objectstack validate / compile accept unknown keys in a plugin node's config (e.g. an approval node's escalation) — the build-time refusal map covers built-in node types only #21850 (declaration 5997897223, PR feat(spec)!: the build doors judge an approval node config against its declared contract, whole — an undeclared key or a refused value is refused with a location #21893) moves one fixture line each inprotocol.runtime-authoring-gate.test.tsandplugin.authoring-channel.test.ts. No claim in this lane holds them.domain:spec's addendum 5996528745 (platform gap: a plain member is offered "Invite User" (and other org-admin affordances) that the server then refuses with 403 — an action's visibility cannot be gated on the membership grade #21795, PR feat(spec,platform-objects): org-admin actions follow the membership grade through one declared reach table #21883): theactiondeclared-key count pin inpackages/metadata-protocol/src/protocol.meta-types-degenerate-derivation.test.tsmoves 49 → 50. No claim in this lane holds it, so no reply is owed. PR feat(spec,platform-objects): org-admin actions follow the membership grade through one declared reach table #21883 also touchessys-member.object.tsandaction.zod.tsin regions other than identity: the "Link Social Account" action is dead on every boot — it navigates to a GET of the POST-only social sign-in route (404) and offers a fixed provider list regardless of configuration #21849's, read from its diff.domain:spec's platform gap: a plain member is offered "Invite User" (and other org-admin affordances) that the server then refuses with 403 — an action's visibility cannot be gated on the membership grade #21795 (declaration 5993833961) may edit the 14requiresFeature: 'organization'actions inpackages/platform-objects/src/identity/*.object.tsand the pins or catalogs they move. No claim in this lane holds them, so no reply is owed.domain:services' service-datasource: a re-import the metadata door refuses as DESTRUCTIVE_CHANGE prescribes?force=true, which the import route never reads — a third face of #11095's class (reachable once #21788 lands) #21841 (declaration 5992470357) may editprotocol.ts'sdestructiveChangeRemedyand theMetadataWriteFacetype. This lane's [finding] getMetaItems scoped to a package reads only that package's rows, so it never falls back to the package-less row that getMetaItem naming the package serves #21817 heldreadFlattenedMetaItems' package-scoped read, a different region, and has landed; no reply was owed.domain:spec's addendum 5991318663: PR feat(spec): offer object.imageField in Studio's object form beside nameField #21854 (spec(liveness):object.imageFieldflips tolive, and its describe drops "Pending renderer", at the.objectui-shabump that carries objectui#11383 #21765) also moves two test-only count pins underplatform-objects/src/apps/translations/. No claim in this lane holds them. identity: the "Link Social Account" action is dead on every boot — it navigates to a GET of the POST-only social sign-in route (404) and offers a fixed provider list regardless of configuration #21849 merges after feat(spec): offer object.imageField in Studio's object form beside nameField #21854 if it must regenerate a translation catalog.domain:spec's spec(liveness):object.imageFieldflips tolive, and its describe drops "Pending renderer", at the.objectui-shabump that carries objectui#11383 #21765 (declaration 5989932913) regeneratesplatform-objects' metadata-form translation catalogs. No claim in this lane holds them, so no reply is owed.domain:services' plugin-security: permission sets an org owns (or that live in a writable runtime package) are reported and enforced as "locked by the code package" — the lock reads the package id without the row's provenance #21789 (declaration 5989486698) may editprotocol.ts's artifact-protection block ingetMetaItem, only if measured necessary. This lane's [finding] lock family, artifact layer × package axis: the _lock gate looks up the packaged artifact with no package while both reads look it up with the request's package #21803 held that region. The seat replied (5989615497), posted PR fix(metadata-protocol)!: an item's lock is the strictest among the installed packages that ship its name (#21803) #21844 there (5990896826), and posted its landing (5991983121): the region is free.domain:cli's [finding] marketplace install-local installs a manifest whose engines.protocol this runtime cannot satisfy (^16 on 17): 200 success, while POST /api/v1/packages refuses it 422 OS_PROTOCOL_INCOMPATIBLE #21762 (declaration 5986657557) may editpackages/metadata-core/src/protocol-handshake.ts, which packages: a protocol-incompatible package install answers 500 OS_PROTOCOL_INCOMPATIBLE and drops its structured diagnostic (requiredRange, rangeSource, protocolVersion, targetMajor, migrateCommand) #21727 landed. No claim in this lane holds it, so no reply is owed.domain:services' security(data): a by-id write answers 403 for a row the caller cannot read and 404 for an id that does not exist, for principals the write pre-image check does not bind: an existence signal the read door withholds #21771 (declaration 5986236515, amended 5986531029): its engine-source half lapsed, measured not part of the split. What remains is test pins underpackages/platform-objects. No claim in this lane holds the engine's by-id write not-found path, so no reply is owed.domain:spec's spec(ui): release 2 of the objectui#7450 convergence —element:text.variant'sheading/subheadingbecome named refusals through the value-level retirement mechanism #21015 closed and PR feat(spec)!: a joined report refuses a block that binds no dataset, at blocks[i].dataset, naming the block (#21702) #21712 ([finding] spec(report): atype: 'joined'report whose blocks bind nodatasetparses and passesobjectstack validate, while ReportSchema's own refinement comment and reports.mdx say "each block dataset-bound" #21702) merged.4. Notes
Correction, round 28 to 30 claims. The open-PR overlap scans behind the claims on [finding] install-local install and rehydrate on the showcase log two ERROR "Schema sync FAILED … not durable" lines for external-schema objects whose DDL is correctly refused — a durability alarm with no durability loss #21777, [finding] lock family, package axis: a read naming a package serves that package's row and reports its lock, while the _lock gate's overlay read selects without a package #21761, metadata: publishing a field reorder from the object designer is a silent no-op — the content hash is key-order-insensitive, so a reordered
fieldsmap hashes equal and the draft is dropped #21790 and [finding] getMetaItems: a package's list slot can serve the package-less row's body while getMetaItem naming that package serves the package's own row #21804 read.pathfrom the PR-files API, whose field isfilename. The jq error was suppressed, so those scans measured nothing. They were re-measured at 06:14Z withfilename, pages included: none of the PRs open at those claims touched the claimed files, so eachSerial constraints clearedline holds. The [finding] lock family, artifact layer × package axis: the _lock gate looks up the packaged artifact with no package while both reads look it up with the request's package #21803 claim was scanned correctly.Harness:
SKILL.mdread at touch9dae4752e(the decision-frame block md5 is unchanged atorigin/main).references/**re-read atd13df0c630this round:execution-duties.md(pm-dispatch: a triage fold proposal binds only before any named card has an open PR; a foreseen follow-up is a card #21676, docs(pm-dispatch): say how the claim reads the Clause-② public surface #21783: the Clause-② public surface is what the built entry declarations reach, and the seat writes what it cannot read for the dev to measure),platform-readings.mdandtriage-duties.md. The session checkoutcc645f2385reads STALE for those three files; the seat works fromorigin/main.The four platform readings and the tooling gap carried in the 2026-10-03T10:07Z revision still stand. They are not restated here.
Seat tooling: the landing checks run from a scratch worktree with
yamllinked, because dev worktrees are removed at hand-back.Folding cards: when a PR closes a folded card, that card needs its own
Claim:naming the branch. The Closing-Target Claim Guard refuses otherwise, as it did on PR fix(metadata-protocol): one collision predicate at the save door — a stored view container never takes a name already served from elsewhere (#21639, #21638) #21648.