本贴是项目总监席的唯一权威登记。 四段模板;岗位说明版本化在 .claude/skills/pm-dispatch/references/lanes/director.md ,⛔ 不复制进本贴。人工召唤制:无 Routine 无 cron,召唤间隔里载体停放是设计安全态。裁决存在性的权威载体 = 本贴逐场台账评论(#13766 裁 B,2026-08-31 起)。
当前 PM
🟢 第 11 场 · 会话 session_01ShyhexkB2d1AeRZ85tgAAe(GitHub os-project-manager)· 2026-09-03T08:03Z 坐席(维护者在场 live chat「继续处理决裁」,紧接第 10 场的合并队列勤务;同一会话续坐)。开轮标记 = 批 #17 台账 5522751933 。保险丝:get_session 服役 claude-fable-5-1 vs 常量 claude-fable-5,地板读法,未否决(08:35Z 复读)。本场写面:决策箱卡的裁决与标签、本贴台账、#14832 合并队列勤务记录(13:34Z 收队)。定时器:无。远程 dev 会话:无。
🟢 第 12 场(重叠模式,写面不相交) · 会话 session_01WXyGTWPbbreqXow7Z2pZCk(GitHub hotlong)· 14:10Z 开轮(开轮标记 5527048012,维护者「现在执行契约复审」)· 写面 = 开放的 needs:contract-review 载体 + 受管面 PR 的人合执行(维护者「以上都同意,你帮我合并pr」)· 台账:5527282633(契约复审 9 张:5 PASS 落地、3 PASS 暂扣、1 等决策)· 5527295029 · 5527393443(受管面待审队修复 + 诊断:请审只发给了 hotlong,os-zhuang 从未被请)· 5527831063 · 5527998350 · 5528372590(15:51Z 落地核查)。⛔ 该场声明不碰本贴 body 的当前 PM 段、决策箱与批次;本场核对(15:5xZ)无同卡双写。其「转维护者」清单中的 #14927 与 #14959 已由本场批 #22 裁定。
逐批台账(第 11 场):批 #17 5522751933 · 批 #18 5522904319 · 契约复审第三轮 5522973808 (七张全部 MERGED)· 批 #19 5523088448 · 批 #20 5523316821 (#14824 D 推翻本席 C 荐,「我们是一个开发工具」)· 合并队列勤务 5525396939 · 5526014734 · 5526637715(收队) · 批 #21 5528009409 (hotcrm 簇:#1518 A · #1485 C closed · #1428 A · #1144 A · #806 C pm:blocked on objectstack#13855,同类 #970 / #1452 / #1508 )· 批 #22 5528390192 (「同意」:#14878 D,撤回 09:03Z 的 B · #14959 A + ADR-0092 D5 修订 · #14927 E + C · #14569 A1 · #13609 A′ 三处 pin)。本场至此:批 #17 –#22 共 30 项裁毕(32 张卡;#806 、#14878 为裁后实测退回的改裁)。
剩余决策箱(15:3xZ 重扫,批 #23 起候选) :objectstack #14663 · #14656 · #14909 · #14512 · #14423 · #13690 · #13503 · #11977 (#13563 pm:blocking 已转维护者,不再呈);objectui #7508 · #7455 · #7077 · #6951 · #6910 · #6121 · #5250 · #4853 ;hotcrm #1565 · #1552 · #1545 · #1543 · #1535 · #1530 ;#14461 、hotcrm#1177 不处理不再呈。
前任:第 10 场 (同一会话,09-02T15:05Z–09-03T08:03Z;开轮标记 5511327941):批 #11 5511814678 · 批 #12 5511957100 · 批 #13 5518083904 · 批 #14 –#16 · 契约复审 5518174071 + 第二轮 · 合并队列勤务(#14832 :诊断 5520633263 · 裁决 A 5521280392 · 隔离 #14871 392f4108;更正 5522389949)。30 张呈报,28 张裁毕,1 张转维护者(#13564 ),1 张不处理(#14461 )。第 8 场 (同一会话,09-02 05:06Z–14:45Z):收班简报 5511202405;46 张呈报,43 张裁毕。第 9 场 (session_01WXyGTWPbbreqXow7Z2pZCk,hotlong,收班简报 5510174612)。
继承台账(现值:2026-09-03T16:00Z;更早条目原样保留)
hotcrm 发版等待族(批 chore(ci)(deps): bump actions/stale from 9.0.0 to 10.1.1 #21 裁 C) :fix: UI protocol design defects — widget id, action type unification, conditional validation, naming consistency #806 (头)· feat(driver-turso): dual transport — remote-only mode via @libsql/client #970 · feat(automation): screen-flow runtime — interactive screen nodes (suspend→render→resume) #1452 · docs(adr): correct ADR-0032 #1491 root-cause attribution; tighten silent-failure scope #1508 全部 pm:blocked,等 @objectstack/spec 发布带 objectstack#13897([Decision] 字段分组漂移已裁定为平台问题(hotcrm#806)—— 定统一机制:lint 镜像规则(不动契约)与/或 section 差量引用形式(契约扩宽) #13855 B)的版本;解锁判据 = 安装面探针,⛔ 非合并状态、非版本号;本席不催。
批 chore(ci)(deps): bump actions/upload-artifact from 4 to 6 #22 后的车道尾巴 :engine 席 [finding] QA observed /api/v1/meta/datasource serving a deleted datasource's entry cluster-wide, but MetadataManager's unregister DOES broadcast — the observed prolongation sits in an unidentified seam #13609 (protocol.ts 围栏随 PR fix(metadata-protocol): gate getMetaItem's overlay read on the metadata registry #14908 于 15:2xZ 合入 d5cbb44f 已解,三处 pin 已授权);services 席 A sys_audit_log write refused by the system-write organization rule is swallowed by plugin-audit's best-effort catch, so the audit row about a defective record is LOST silently — surfaced by #13636's admission #14927 (plugin-audit E+C,p1,Clause-② yes,先于 feat(objectql): declare a legitimately org-less write instead of inferring it from NULL #14923 落地)· [Decision] May a rank-and-file member set their OWN sys_user.locale? Ruling B opened the COLUMN; ADR-0092 D5 still answers no to the ROUTE, so today only admins can set it #14959 (含 ADR-0092 D5 修订,受管面 draft + 人合);devx 席 [finding] A removal-time guard for deleted exported symbols still named as live — the per-symbol pin PR #14667 built could not see five of them #14878 (tree-scoped pin,与 [finding] Two packages/spec/src/stack.zod.ts comments name the deleted actionObjectKey as the LIVE registration-key reader — the two sites #14669's face did not reach #14873 同 PR;退役手册一句 = 受管面)· finding(tooling): the qa/http-conformance TEST_DEBT re-measure already needs ~4.4 GB of tsc heap on main — it passes the 4096 MB ceiling only through GC pressure, so any spec declaration growth tips Type Check · debt ledger to OOM #14569 (PR fix(tooling): raise the re-measure heap ceiling on a runner measurement, not on a typed number #14805 续载 A1)。
合并队列(第 10 场 → 本场,13:34Z 收队) :fix(cli): stop run-dev.js freezing in write(2) when its stderr reader stops reading #14875 MERGED a8a674a3 11:34Z 同 PR 解隔离;os dev in an unbuilt workspace sometimes HANGS instead of exiting 2 when its reader goes away — measured at 180103 ms against a 7046 ms calibration on the same runner #14832 关闭;test(cli): lift the #14871 quarantine — restore the never-read-reader case now that #14875 has landed #14947 误立已关;fix(cli): stop run-dev.js freezing in write(2) when its stderr reader stops reading #14875 后经队列合入 10 张,never-read 签名零复发;test(packages): gate that a package door's field allowlist cannot silently drop a stamped or declared key #14830 撞到的 scaffold-e2e-boot-probe 端口签名 24h 仅 1 例。余项:rest/meta: state the caller's organization on the /meta/diagnostics ?type= sweep #14677 dirty(census 页)等 services 席重合。
契约复审载体(第 12 场接手,15:51Z 读数) :MERGED:feat(spec): autonumber fields default to unique: 'organization'; explicit unique: false opts out (#13894) #14904 f8e8f035 · fix(metadata-protocol): gate getMetaItem's overlay read on the metadata registry #14908 d5cbb44f · fix(metadata): FilesystemLoader.list() reports only names findFile() can resolve #14922 4b4d5a33 · feat(platform-objects,plugin-auth): make sys_user.locale user-writable, with a loud BCP-47 refusal (#14787) #14958 2fd3f1c7 · objectui docs(spec,formula,driver-memory): record the ruled EXCLUDE direction for negative operators over no-value rows (#5299) #7391 7c3df8f · feat(spec): declare publicPicker on FormFieldSchema (#7467) #7487 6414dfd;队列中:feat(hooks): Hook.runAs — 'system' | 'user' | 'inherit', default 'inherit' #14915 (spec 席重合后 PASS 复挂)· objectui docs(spec): make submitBehavior's TSDoc state the mode-aware default #7473 ;暂扣:fix(plugin-sharing): per-grant catch in both reconcile loops so one refused grant no longer aborts the pass (#14754) #14930 (pm:blocked on spec: adjudicate how a CONSUMER matching another package's error code is recorded in the provenance ledger — plugin-sharing matching ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED fits neither existing remedy cleanly #14937 ,spec 席离岗)· feat(objectql): declare a legitimately org-less write instead of inferring it from NULL #14923 (等 A sys_audit_log write refused by the system-write organization rule is swallowed by plugin-audit's best-effort catch, so the audit row about a defective record is LOST silently — surfaced by #13636's admission #14927 的 plugin-audit 修复先落地,本场批 chore(ci)(deps): bump actions/upload-artifact from 4 to 6 #22 已裁)。本场第三轮七张全部 MERGED(fix(plugin-auth): report the zero-account boot dead end at kernel:ready #14866 450e73b4 · objectui fix(metadata-protocol): the groups → sections fold reaches the stored row (#7134) #7468 / conversions/registry.ts is now the last hand-authored append registry — extend the #7297 per-entry split? #7464 / [finding] objectName on an object-embedded action is inert AND unvalidated — the third arm PR for #7397 deliberately left open #7456 / The other ~40 [Security] Access denied sentences are still English-only developer copy shown verbatim to end users (same class as #7414, one template fixed) #7451 / release: snapshot one-click rc cut — a cut-rc workflow that bumps, versions, gates and publishes from ONE SHA, ending the two-treadmill freeze dance #7447 / fix(plugin-security,spec): the end-user-facing [Security] Access denied gates stop showing developer copy (#7451) #7471 )。
governed 面合入(收班审计核对项) :本场观察:docs(pm-dispatch): collapse CLAUDE.md's four excerpts to rule, hook and anchor #14855 · docs(pm-dispatch): keep two copies of the decision frame, not four #14862 · fix(gates): answer PREREQUISITE NOT MET with the frame's exit code in the last three i18n gates #14856 · docs(skills): the AI domain has no CEL site — correct the os validate clause in objectstack-ai #14819 (经队列);第 12 场经维护者本人账号执行:docs(adr): ADR-0130 addendum — the permission matrix is outside the package boundary's payoff (#14487) #14498 184f6b0c · docs(adr): migrate rotted ADR line anchors to resolver-gated symbol anchors (#13556) #14277 09cc6be4 · tooling(pm): admit a same-PR cross-file line-budget move, and take the first one #14860 5bc2f272(直接 squash)· fix(spec): give data/query.zod.ts a module header so its pointer rows name the query AST #14737 22d573e8 · docs(agents): guard history dating against a shallow clone #14808 3386493f(os-zhuang 审批钉在 head,队列放行)· cloud fix(objectql): promoteDraft preserves the draft's package binding (AI-built apps stay hidden) #1834 8095ebe1 · hotcrm feat(service-automation): persist suspended flow runs for durable resume across restarts #1520 18444c8 · objectui spec: rule the submitBehavior.url semantics — objectui#4190 dead-ends on it #7496 (os-zhuang 14:45Z);第 12 场读数「无 governed 合并事故」。收班审计从第 8 场锚重跑时逐条核对。
第 8 场决裁终态 :裁决全文在各卡的 "Maintainer ruling recorded" 评论;权威存在性以本贴台账评论为准。
governed 合并审计(职责四,第 8 场) :窗口 objectstack 86e765a7..79b6a22a + objectui d796c8dd..ec0a7b84,32 条,32/32 认定,零事故 (维护者 09-02「治理审计 y」)。
契约复审载体(第 9 场,全部出清) :PR fix(runtime): the artifact boot has one registrar for its security collections — the door (#12892 step 2) #14398 · feat(rest): parse crud / metadata / batch / routes at construction and consume the parse (#11984) #14395 · fix(sdui-parser): refuse an authored type attribute on the html tier instead of letting it overwrite the component discriminator #14274 MERGED;PR skills(ai): optimization flight — the closed agent surface cut to its retirement rows, the flagship defineSkill example made to resolve, open-edition MCP wiring and the tool registry taught (net −1,315 tokens) #14463 (Skills optimization flight — skills/objectstack-ai: RESTRUCTURE (≈ −2,300 tok, −29%) — 26% of the file teaches the agent surface it forbids its readers, the flagship defineSkill example declares four tools that resolve to nothing, and the open-edition MCP path (the only AI path without a cloud licence) is taught nowhere #14305 )skills 席席内复核,advisory 5507260637。[finding] RestServer.normalizeConfig still discards the parsed api output — its ?? chain duplicates RestApiConfigSchema's defaults key for key, and the validate-only reason has expired #14366 → pm:queue(5510168364)。
契约复审载体(第 10 场,停摆接手) :fix(objectql,spec): refuse a multi: true update whose per-row beforeUpdate hooks write divergent key sets (#14099) #14734 · fix(service-automation): a conditional advance claim on SuspendedRunStore, so two replicas cannot both advance one run #14712 · fix(plugin-auth): bind the dev-admin seed's operator-provisioning ticket to more than the seed address (#14373) #14730 MERGED;fix(sharing): stamp organization_id on every sys_record_share write, backfill the stranded rows, admit the object to the tenancy ledger (#14484) #14726 PASS 后重挂。预挂载体(不审不摘) :spec: declare grantedPermissions on EnvironmentArtifactSchema (record of manifest id → PluginPermissions) — the artifact-contract half of #14034 / #11333 Phase 1, which must land BEFORE cloud can write it (plain z.object strips undeclared keys at the artifact door) #14865 · composeStacks re-merges bound standalone actions that defineStack already copied into their objects — every bound action appears twice in the composed object's actions #14847 · [finding] KnowledgeSourceSchema.cron is documented as a 5-field cron expression but typed z.string() — the spec's own CronExpressionInputSchema is not used, so 'not a cron' parses green #14825 · spec: register NAMESPACE_CONFLICT in ERROR_CODE_LEDGER — the ADR-0048 install-time namespace refusal now reaches a wire unregistered (the spec half of #14474) #14748 · rest: the GENERIC declared-status passthrough still disagrees on object between the two error doors — plus one bespoke arm (RECORD_NOT_FOUND) still reachable from one door only #14725 · [finding] SqlDriver.update() keeps an explicit Promise[any] while returning null on a miss — the same published-type mask #14434 removed from driver-memory, inherited by TursoDriver and SqliteWasmDriver #14438 · [finding] once #14080's refusal lands, three prose sites still describe $gt: null as the one null comparand the contract accepts, and the TYPE door's undefined sentence prescribes a now-refused spelling at the ordering positions #14426 · finding(spec): element:record_picker.filter still declares the MongoDB-style FilterConditionSchema — the last record-form filter in ComponentPropsMap after the ui#6206-B convergence #14406 · CrudEndpointsConfigSchema.patterns is an exhaustive enum-keyed z.record — the input type demands all five operations and a partial parses to explicit undefined entries (wants z.partialRecord) #14365 · client SDK organizations.* family: bind the 19 return res.json() methods (organizations 11 · invitations 3 · teams 5) to their better-auth wire shapes — #12104 family card 3 of 3 #14314 · client SDK auth.* family: bind the 14 return res.json() methods (auth 7 · sessions 3 · twoFactor 3 · accounts.unlink 1) to their better-auth wire shapes — #12104 family card 2 of 3 #14313 · client SDK oauth.* family: bind the 5 return res.json() methods to their better-auth wire shapes (ISO string timestamps) — #12104 family card 1 of 3 #14312 ;只挂卡侧 :Where does the allowOrgOverride read gate belong for metadata sweeps that read MORE THAN ONE type per request? getMetaItems applies none of its own #14683 · Routes exiting through handleRouteError answer the engine's DUPLICATE_RECORD envelope from resolveErrorResponse's .status passthrough — field and object dropped, mapDataError's structured 409 arms never consulted #14541 · [Decision] The share-link route probe re-opens the existence oracle that share-link-service deliberately closed — a switched-off link with a password still answers 401 #14637 。
决裁(第 9 场两笔) :[finding] The SCIM/identity ADR-0071 citation resolves to the dataset semantic-layer record — 39 files point at a decision about multi-hop joins #14361 裁 B → pm:blocked on ADR (mirror of cloud ADR-0024): Identity & Access Architecture — the open half that plugin-auth / platform-objects/identity implement, recorded in this repo with Provenance #14506 / ADR (mirror of cloud ADR-0071): env-side SCIM via @better-auth/scim — the open mechanism half (D1–D4), recorded in this repo with Provenance and the measured 1.7.x vendor drift #14507 / ADR (mirror of cloud ADR-0081): Organization management — the open basics half (D1 invitations stay open, D3 org record page, D4 org-scoped sys_member), recorded in this repo with Provenance #14508 ;[Decision] Where does a decision that governs OPEN code live? — cloud (private) ADRs are cited from this public repo in 60 files with a qualifier and ~110 more times bare, squatting on unrelated local numbers (0024 · 0071 · 0081); mirror them here, or qualify only #14496 裁方案 2,子卡 ADR (mirror of cloud ADR-0024): Identity & Access Architecture — the open half that plugin-auth / platform-objects/identity implement, recorded in this repo with Provenance #14506 · ADR (mirror of cloud ADR-0071): env-side SCIM via @better-auth/scim — the open mechanism half (D1–D4), recorded in this repo with Provenance and the measured 1.7.x vendor drift #14507 · ADR (mirror of cloud ADR-0081): Organization management — the open basics half (D1 invitations stay open, D3 org record page, D4 org-scoped sys_member), recorded in this repo with Provenance #14508 · AGENTS.md: record the ADR-registry rule — a decision lives where the code it governs lives; cloud records are cited as cloud ADR-NNNN, never bare; a cloud decision whose mechanism half governs open code gets a local ADR with Provenance (the 0079 shape) #14509 均 pm:queue、受管面 draft-only + 人合。
第 9 场立卡 :[finding] html tier: action:button / action:icon declare an input named type, so the discriminator refusal makes that input unauthorable on the html tier — and the refusal's prescription ("write the tag you meant") has no answer for these two components #14490 · [finding] After #12892 step 2 an artifact boot with an engine still holds a THIRD, un-parsed copy of permissions / capabilities / sharingRules in the ObjectQL SchemaRegistry (AppPlugin.init → manifest.register), and the plugin-security / plugin-sharing seeders read that copy FIRST #14491 · [Decision] Where does a decision that governs OPEN code live? — cloud (private) ADRs are cited from this public repo in 60 files with a qualifier and ~110 more times bare, squatting on unrelated local numbers (0024 · 0071 · 0081); mirror them here, or qualify only #14496 + 四子卡。本场立卡 :objectui#7477 · [finding] The react-blocks generator publishes a deprecated.replacedBy whose replacement no renderer reads — nothing refuses it #14897 · objectui#7479 · test(cli): lift the #14871 quarantine — restore the never-read-reader case now that #14875 has landed #14947 (已关)。第 12 场立卡 :finding(skills): skills/objectstack-automation documents runAs for flows only — a hook-side runAs paragraph is owed once PR #14915 lands #14966 。
车道尾巴(非本席写面) :devx 席 html-tier page source: a type attribute overwrites the SDUI component discriminator — silently when the value names another registered type #13957 收尾;分诊给 [Decision] Where does a decision that governs OPEN code live? — cloud (private) ADRs are cited from this public repo in 60 files with a qualifier and ~110 more times bare, squatting on unrelated local numbers (0024 · 0071 · 0081); mirror them here, or qualify only #14496 + 四子卡补 domain:*;[finding] The SCIM/identity ADR-0071 citation resolves to the dataset semantic-layer record — 39 files point at a decision about multi-hop joins #14361 待镜像 ADR 落地;objectui 席给 chore(deps)(deps-dev): bump the development-dependencies group across 1 directory with 5 updates #7189 / fix(metadata-protocol): cold boot names the org-scoped rows it cannot hydrate (#6190) #6600 加 body 首行 Blocked-by:;ui 席重发 objectui#7205 被截断段落;[Decision] One spelling for the signed-in user's language on the published surface — SessionUserSchema.language (unproduced), sys_user.locale (#13881) and /auth/me/localization.locale (request/deployment) coexist #14788 D / [Decision] May a user set their own sys_user.locale? — the ADR-0092 D2 self-service whitelist stays {name, image} after #13881 (column lands readonly, system-context writes only) #14787 B 前置 PR feat(spec,platform-objects,service-messaging,plugin-auth): sys_user.locale + per-recipient notification locale (#13881) #14775 已合入;services 席:rest/meta: state the caller's organization on the /meta/diagnostics ?type= sweep #14677 重合 main,合后 rest/meta: two more read doors (/meta/diagnostics, /meta/:type/:name/references) never forward the caller's organization — the "Used by" graph tells an operator an org-referenced item is safe to delete #13753 回 pm:queue;hotcrm 席:service-automation: persist suspended flow runs (durable resume across process restarts) #1518 (受管面 draft + 人合)· docs: plugin distribution design (ADR-0025/0026 + design doc) #1428 · fix: resolve TypeScript compilation errors in ObjectQL engine datasource mapping #1144 三张 pm:queue 可派;spec 席离岗:spec: adjudicate how a CONSUMER matching another package's error code is recorded in the provenance ledger — plugin-sharing matching ERR_SYSTEM_WRITE_ORGANIZATION_REQUIRED fits neither existing remedy cleanly #14937 (堵 fix(plugin-sharing): per-grant catch in both reconcile loops so one refused grant no longer aborts the pass (#14754) #14930 )待接。
跨仓授权挂起 :cloud 仓授权(hotcrm#1177 核验,维护者「不处理」)· objectos issue 面组织授权(chore(deps)(deps-dev): bump vite from 5.4.21 to 7.3.1 #197 / 🔗 Broken links detected in documentation #171 / Complete protocol review and Q1-Q4 2026 action plan (Chinese + English) - Verified 2026-01-23 #68 )。
历史(第 1–9 场):见本贴 body 修订历史与台账评论。
热文件串行队
(空)
说明
章程指针:references/lanes/director.md。governed 审计锚(下轮从此起) :第 8 场收班值 --since-ref objectstack=79b6a22a5670 --since-ref objectui=ec0a7b846c49;cloud / objectos 无检出恒 UNAUDITED ⛔ 不作干净;审计工具不确定性卡 #13896 。席位纪律:决裁批详细写法(2026-08-28)· 席位边界(2026-08-29,裁不派)· 台账权威载体(2026-08-31,#13766 裁 B)· 每批恰 5 张(2026-09-01)· 长远权重 ≥50%(2026-09-01)· 契约复审席内放行 + 本席事后审计/停摆接手(2026-08-31)· ADR 注册表归属规矩(2026-09-02,#14496 )· 两场重叠时以写面区分、接管前核同卡双写;get_session not-found 不等于已终止,先看本贴最近一笔台账时间戳(2026-09-02,第 8/9 场;2026-09-03 第 11/12 场再次成立)· 合并队列平台事实(2026-09-03):解除 auto-merge 不移出队列条目、直接合并被 405 拒绝、只有管理员 Jump the queue 能提前;被弹出的 ready PR 重新武装属席位职权,关闭他席开关不属 · 「我们是一个开发工具」(2026-09-03,#14824 裁 D)· 派发前先读落地 PR 的文件清单再立卡(2026-09-03,#14947 误立)· 裁决点名的动作被实测证伪时,决定不动、只换动作,且同类一次裁完(2026-09-03,#806 )· 裁决的招牌理由被实测证伪时可撤回改裁,撤回须点名被撤的评论 id(2026-09-03,#14878 B → D) · 受管面请审必须同时请 os-zhuang 与 hotlong;只请 hotlong 等于落进作者自己的收件箱(2026-09-03,第 12 场诊断 5527393443) 。待维护者 (以 pm:awaiting-maintainer 标签为准):objectstack #11879 · #13689 · #11188 · #12920 · #12884 · #13014 · #12034 · #14324 (release,⛔ 不催)· #13564 · #13563 (cloud,pm:blocking);objectui #5986 · #6596 · #5828 ;受管面草稿到达时的人合:三份镜像 ADR(#14506 / #14507 / #14508 )与 AGENTS.md(#14509 )· #14415 的 ADR-0094 D2 修订 · #14147 的两份 skills 散文 · hotcrm#1518 的 architect.md · #14959 的 ADR-0092 D5 修订 · #14878 的退役手册一句(到达时);objectui #7473 只差维护者 Approve(第 12 场已请)。定时器:无。工具读数:check-clause2-carriers.mjs 本容器 403;PR 事件订阅失败(回退 send_later);REST get 首读 mergeable_state 常为 unknown;list_pull_requests 的 merged 字段不可靠,以 merged_at 为准。
本贴是项目总监席的唯一权威登记。 四段模板;岗位说明版本化在
.claude/skills/pm-dispatch/references/lanes/director.md,⛔ 不复制进本贴。人工召唤制:无 Routine 无 cron,召唤间隔里载体停放是设计安全态。裁决存在性的权威载体 = 本贴逐场台账评论(#13766 裁 B,2026-08-31 起)。当前 PM
🟢 第 11 场 · 会话
session_01ShyhexkB2d1AeRZ85tgAAe(GitHubos-project-manager)· 2026-09-03T08:03Z 坐席(维护者在场 live chat「继续处理决裁」,紧接第 10 场的合并队列勤务;同一会话续坐)。开轮标记 = 批 #17 台账 5522751933。保险丝:get_session服役claude-fable-5-1vs 常量claude-fable-5,地板读法,未否决(08:35Z 复读)。本场写面:决策箱卡的裁决与标签、本贴台账、#14832 合并队列勤务记录(13:34Z 收队)。定时器:无。远程 dev 会话:无。🟢 第 12 场(重叠模式,写面不相交) · 会话
session_01WXyGTWPbbreqXow7Z2pZCk(GitHubhotlong)· 14:10Z 开轮(开轮标记 5527048012,维护者「现在执行契约复审」)· 写面 = 开放的needs:contract-review载体 + 受管面 PR 的人合执行(维护者「以上都同意,你帮我合并pr」)· 台账:5527282633(契约复审 9 张:5 PASS 落地、3 PASS 暂扣、1 等决策)· 5527295029 · 5527393443(受管面待审队修复 + 诊断:请审只发给了hotlong,os-zhuang从未被请)· 5527831063 · 5527998350 · 5528372590(15:51Z 落地核查)。⛔ 该场声明不碰本贴 body 的当前 PM 段、决策箱与批次;本场核对(15:5xZ)无同卡双写。其「转维护者」清单中的 #14927 与 #14959 已由本场批 #22 裁定。逐批台账(第 11 场):批 #17 5522751933 · 批 #18 5522904319 · 契约复审第三轮 5522973808(七张全部 MERGED)· 批 #19 5523088448 · 批 #20 5523316821(#14824 D 推翻本席 C 荐,「我们是一个开发工具」)· 合并队列勤务 5525396939 · 5526014734 · 5526637715(收队) · 批 #21 5528009409(hotcrm 簇:#1518 A · #1485 C closed · #1428 A · #1144 A · #806 C
pm:blockedon objectstack#13855,同类 #970 / #1452 / #1508)· 批 #22 5528390192(「同意」:#14878 D,撤回 09:03Z 的 B · #14959 A + ADR-0092 D5 修订 · #14927 E + C · #14569 A1 · #13609 A′ 三处 pin)。本场至此:批 #17–#22 共 30 项裁毕(32 张卡;#806、#14878 为裁后实测退回的改裁)。剩余决策箱(15:3xZ 重扫,批 #23 起候选):objectstack #14663 · #14656 · #14909 · #14512 · #14423 · #13690 · #13503 · #11977(#13563
pm:blocking已转维护者,不再呈);objectui #7508 · #7455 · #7077 · #6951 · #6910 · #6121 · #5250 · #4853;hotcrm #1565 · #1552 · #1545 · #1543 · #1535 · #1530;#14461、hotcrm#1177 不处理不再呈。前任:第 10 场(同一会话,09-02T15:05Z–09-03T08:03Z;开轮标记 5511327941):批 #11 5511814678 · 批 #12 5511957100 · 批 #13 5518083904 · 批 #14–#16 · 契约复审 5518174071 + 第二轮 · 合并队列勤务(#14832:诊断 5520633263 · 裁决 A 5521280392 · 隔离 #14871
392f4108;更正 5522389949)。30 张呈报,28 张裁毕,1 张转维护者(#13564),1 张不处理(#14461)。第 8 场(同一会话,09-02 05:06Z–14:45Z):收班简报 5511202405;46 张呈报,43 张裁毕。第 9 场(session_01WXyGTWPbbreqXow7Z2pZCk,hotlong,收班简报 5510174612)。继承台账(现值:2026-09-03T16:00Z;更早条目原样保留)
pm:blocked,等@objectstack/spec发布带 objectstack#13897([Decision] 字段分组漂移已裁定为平台问题(hotcrm#806)—— 定统一机制:lint 镜像规则(不动契约)与/或 section 差量引用形式(契约扩宽) #13855 B)的版本;解锁判据 = 安装面探针,⛔ 非合并状态、非版本号;本席不催。protocol.ts围栏随 PR fix(metadata-protocol): gategetMetaItem's overlay read on the metadata registry #14908 于 15:2xZ 合入d5cbb44f已解,三处 pin 已授权);services 席 Asys_audit_logwrite refused by the system-write organization rule is swallowed by plugin-audit's best-effort catch, so the audit row about a defective record is LOST silently — surfaced by #13636's admission #14927(plugin-audit E+C,p1,Clause-② yes,先于 feat(objectql): declare a legitimately org-less write instead of inferring it from NULL #14923 落地)· [Decision] May a rank-and-file member set their OWNsys_user.locale? Ruling B opened the COLUMN; ADR-0092 D5 still answers no to the ROUTE, so today only admins can set it #14959(含 ADR-0092 D5 修订,受管面 draft + 人合);devx 席 [finding] A removal-time guard for deleted exported symbols still named as live — the per-symbol pin PR #14667 built could not see five of them #14878(tree-scoped pin,与 [finding] Twopackages/spec/src/stack.zod.tscomments name the deletedactionObjectKeyas the LIVE registration-key reader — the two sites #14669's face did not reach #14873 同 PR;退役手册一句 = 受管面)· finding(tooling): theqa/http-conformanceTEST_DEBT re-measure already needs ~4.4 GB of tsc heap onmain— it passes the 4096 MB ceiling only through GC pressure, so any spec declaration growth tipsType Check · debt ledgerto OOM #14569(PR fix(tooling): raise the re-measure heap ceiling on a runner measurement, not on a typed number #14805 续载 A1)。run-dev.jsfreezing inwrite(2)when its stderr reader stops reading #14875 MERGEDa8a674a311:34Z 同 PR 解隔离;os devin an unbuilt workspace sometimes HANGS instead of exiting 2 when its reader goes away — measured at 180103 ms against a 7046 ms calibration on the same runner #14832 关闭;test(cli): lift the #14871 quarantine — restore the never-read-reader case now that #14875 has landed #14947 误立已关;fix(cli): stoprun-dev.jsfreezing inwrite(2)when its stderr reader stops reading #14875 后经队列合入 10 张,never-read 签名零复发;test(packages): gate that a package door's field allowlist cannot silently drop a stamped or declared key #14830 撞到的 scaffold-e2e-boot-probe 端口签名 24h 仅 1 例。余项:rest/meta: state the caller's organization on the/meta/diagnostics?type=sweep #14677dirty(census 页)等 services 席重合。f8e8f035· fix(metadata-protocol): gategetMetaItem's overlay read on the metadata registry #14908d5cbb44f· fix(metadata): FilesystemLoader.list() reports only names findFile() can resolve #149224b4d5a33· feat(platform-objects,plugin-auth): makesys_user.localeuser-writable, with a loud BCP-47 refusal (#14787) #149582fd3f1c7· objectui docs(spec,formula,driver-memory): record the ruled EXCLUDE direction for negative operators over no-value rows (#5299) #73917c3df8f· feat(spec): declare publicPicker on FormFieldSchema (#7467) #74876414dfd;队列中:feat(hooks):Hook.runAs—'system' | 'user' | 'inherit', default'inherit'#14915(spec 席重合后 PASS 复挂)· objectui docs(spec): make submitBehavior's TSDoc state the mode-aware default #7473;暂扣:fix(plugin-sharing): per-grant catch in both reconcile loops so one refused grant no longer aborts the pass (#14754) #14930(pm:blockedon spec: adjudicate how a CONSUMER matching another package's error code is recorded in the provenance ledger —plugin-sharingmatchingERR_SYSTEM_WRITE_ORGANIZATION_REQUIREDfits neither existing remedy cleanly #14937,spec 席离岗)· feat(objectql): declare a legitimately org-less write instead of inferring it from NULL #14923(等 Asys_audit_logwrite refused by the system-write organization rule is swallowed by plugin-audit's best-effort catch, so the audit row about a defective record is LOST silently — surfaced by #13636's admission #14927 的 plugin-audit 修复先落地,本场批 chore(ci)(deps): bump actions/upload-artifact from 4 to 6 #22 已裁)。本场第三轮七张全部 MERGED(fix(plugin-auth): report the zero-account boot dead end at kernel:ready #14866450e73b4· objectui fix(metadata-protocol): thegroups→sectionsfold reaches the stored row (#7134) #7468 / conversions/registry.ts is now the last hand-authored append registry — extend the #7297 per-entry split? #7464 / [finding]objectNameon an object-embedded action is inert AND unvalidated — the third arm PR for #7397 deliberately left open #7456 / The other ~40[Security] Access deniedsentences are still English-only developer copy shown verbatim to end users (same class as #7414, one template fixed) #7451 / release: snapshot one-click rc cut — acut-rcworkflow that bumps, versions, gates and publishes from ONE SHA, ending the two-treadmill freeze dance #7447 / fix(plugin-security,spec): the end-user-facing[Security] Access deniedgates stop showing developer copy (#7451) #7471)。184f6b0c· docs(adr): migrate rotted ADR line anchors to resolver-gated symbol anchors (#13556) #1427709cc6be4· tooling(pm): admit a same-PR cross-file line-budget move, and take the first one #148605bc2f272(直接 squash)· fix(spec): givedata/query.zod.tsa module header so its pointer rows name the query AST #1473722d573e8· docs(agents): guard history dating against a shallow clone #148083386493f(os-zhuang 审批钉在 head,队列放行)· cloud fix(objectql): promoteDraft preserves the draft's package binding (AI-built apps stay hidden) #18348095ebe1· hotcrm feat(service-automation): persist suspended flow runs for durable resume across restarts #152018444c8· objectui spec: rule the submitBehavior.url semantics — objectui#4190 dead-ends on it #7496(os-zhuang 14:45Z);第 12 场读数「无 governed 合并事故」。收班审计从第 8 场锚重跑时逐条核对。86e765a7..79b6a22a+ objectuid796c8dd..ec0a7b84,32 条,32/32 认定,零事故(维护者 09-02「治理审计 y」)。typeattribute on the html tier instead of letting it overwrite the component discriminator #14274 MERGED;PR skills(ai): optimization flight — the closed agent surface cut to its retirement rows, the flagship defineSkill example made to resolve, open-edition MCP wiring and the tool registry taught (net −1,315 tokens) #14463(Skills optimization flight — skills/objectstack-ai: RESTRUCTURE (≈ −2,300 tok, −29%) — 26% of the file teaches the agent surface it forbids its readers, the flagshipdefineSkillexample declares four tools that resolve to nothing, and the open-edition MCP path (the only AI path without a cloud licence) is taught nowhere #14305)skills 席席内复核,advisory 5507260637。[finding]RestServer.normalizeConfigstill discards the parsedapioutput — its??chain duplicatesRestApiConfigSchema's defaults key for key, and the validate-only reason has expired #14366 →pm:queue(5510168364)。multi: trueupdate whose per-rowbeforeUpdatehooks write divergent key sets (#14099) #14734 · fix(service-automation): a conditional advance claim on SuspendedRunStore, so two replicas cannot both advance one run #14712 · fix(plugin-auth): bind the dev-admin seed's operator-provisioning ticket to more than the seed address (#14373) #14730 MERGED;fix(sharing): stamp organization_id on every sys_record_share write, backfill the stranded rows, admit the object to the tenancy ledger (#14484) #14726 PASS 后重挂。预挂载体(不审不摘):spec: declaregrantedPermissionsonEnvironmentArtifactSchema(record of manifest id → PluginPermissions) — the artifact-contract half of #14034 / #11333 Phase 1, which must land BEFORE cloud can write it (plain z.object strips undeclared keys at the artifact door) #14865 · composeStacks re-merges bound standalone actions that defineStack already copied into their objects — every bound action appears twice in the composed object's actions #14847 · [finding]KnowledgeSourceSchema.cronis documented as a 5-field cron expression but typedz.string()— the spec's ownCronExpressionInputSchemais not used, so'not a cron'parses green #14825 · spec: registerNAMESPACE_CONFLICTinERROR_CODE_LEDGER— the ADR-0048 install-time namespace refusal now reaches a wire unregistered (the spec half of #14474) #14748 · rest: the GENERIC declared-status passthrough still disagrees onobjectbetween the two error doors — plus one bespoke arm (RECORD_NOT_FOUND) still reachable from one door only #14725 · [finding]SqlDriver.update()keeps an explicitPromise[any]while returningnullon a miss — the same published-type mask #14434 removed from driver-memory, inherited by TursoDriver and SqliteWasmDriver #14438 · [finding] once #14080's refusal lands, three prose sites still describe$gt: nullas the one null comparand the contract accepts, and the TYPE door'sundefinedsentence prescribes a now-refused spelling at the ordering positions #14426 · finding(spec):element:record_picker.filterstill declares the MongoDB-styleFilterConditionSchema— the last record-formfilterinComponentPropsMapafter the ui#6206-B convergence #14406 ·CrudEndpointsConfigSchema.patternsis an exhaustive enum-keyedz.record— the input type demands all five operations and a partial parses to explicitundefinedentries (wantsz.partialRecord) #14365 · client SDKorganizations.*family: bind the 19return res.json()methods (organizations 11 · invitations 3 · teams 5) to their better-auth wire shapes — #12104 family card 3 of 3 #14314 · client SDKauth.*family: bind the 14return res.json()methods (auth 7 · sessions 3 · twoFactor 3 · accounts.unlink 1) to their better-auth wire shapes — #12104 family card 2 of 3 #14313 · client SDKoauth.*family: bind the 5return res.json()methods to their better-auth wire shapes (ISOstringtimestamps) — #12104 family card 1 of 3 #14312;只挂卡侧:Where does the allowOrgOverride read gate belong for metadata sweeps that read MORE THAN ONE type per request?getMetaItemsapplies none of its own #14683 · Routes exiting throughhandleRouteErroranswer the engine'sDUPLICATE_RECORDenvelope fromresolveErrorResponse's.statuspassthrough —fieldandobjectdropped,mapDataError's structured 409 arms never consulted #14541 · [Decision] The share-link route probe re-opens the existence oracle thatshare-link-servicedeliberately closed — a switched-off link with a password still answers 401 #14637。pm:blockedon ADR (mirror of cloud ADR-0024): Identity & Access Architecture — the open half thatplugin-auth/platform-objects/identityimplement, recorded in this repo with Provenance #14506 / ADR (mirror of cloud ADR-0071): env-side SCIM via@better-auth/scim— the open mechanism half (D1–D4), recorded in this repo with Provenance and the measured 1.7.x vendor drift #14507 / ADR (mirror of cloud ADR-0081): Organization management — the open basics half (D1 invitations stay open, D3 org record page, D4 org-scopedsys_member), recorded in this repo with Provenance #14508;[Decision] Where does a decision that governs OPEN code live? — cloud (private) ADRs are cited from this public repo in 60 files with a qualifier and ~110 more times bare, squatting on unrelated local numbers (0024 · 0071 · 0081); mirror them here, or qualify only #14496 裁方案 2,子卡 ADR (mirror of cloud ADR-0024): Identity & Access Architecture — the open half thatplugin-auth/platform-objects/identityimplement, recorded in this repo with Provenance #14506 · ADR (mirror of cloud ADR-0071): env-side SCIM via@better-auth/scim— the open mechanism half (D1–D4), recorded in this repo with Provenance and the measured 1.7.x vendor drift #14507 · ADR (mirror of cloud ADR-0081): Organization management — the open basics half (D1 invitations stay open, D3 org record page, D4 org-scopedsys_member), recorded in this repo with Provenance #14508 · AGENTS.md: record the ADR-registry rule — a decision lives where the code it governs lives; cloud records are cited ascloud ADR-NNNN, never bare; a cloud decision whose mechanism half governs open code gets a local ADR with Provenance (the 0079 shape) #14509 均pm:queue、受管面 draft-only + 人合。action:button/action:icondeclare an input namedtype, so the discriminator refusal makes that input unauthorable on the html tier — and the refusal's prescription ("write the tag you meant") has no answer for these two components #14490 · [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 · [Decision] Where does a decision that governs OPEN code live? — cloud (private) ADRs are cited from this public repo in 60 files with a qualifier and ~110 more times bare, squatting on unrelated local numbers (0024 · 0071 · 0081); mirror them here, or qualify only #14496 + 四子卡。本场立卡:objectui#7477 · [finding] The react-blocks generator publishes adeprecated.replacedBywhose replacement no renderer reads — nothing refuses it #14897 · objectui#7479 · test(cli): lift the #14871 quarantine — restore the never-read-reader case now that #14875 has landed #14947(已关)。第 12 场立卡:finding(skills):skills/objectstack-automationdocumentsrunAsfor flows only — a hook-siderunAsparagraph is owed once PR #14915 lands #14966。typeattribute overwrites the SDUI component discriminator — silently when the value names another registered type #13957 收尾;分诊给 [Decision] Where does a decision that governs OPEN code live? — cloud (private) ADRs are cited from this public repo in 60 files with a qualifier and ~110 more times bare, squatting on unrelated local numbers (0024 · 0071 · 0081); mirror them here, or qualify only #14496 + 四子卡补domain:*;[finding] The SCIM/identity ADR-0071 citation resolves to the dataset semantic-layer record — 39 files point at a decision about multi-hop joins #14361 待镜像 ADR 落地;objectui 席给 chore(deps)(deps-dev): bump the development-dependencies group across 1 directory with 5 updates #7189 / fix(metadata-protocol): cold boot names the org-scoped rows it cannot hydrate (#6190) #6600 加 body 首行Blocked-by:;ui 席重发 objectui#7205 被截断段落;[Decision] One spelling for the signed-in user's language on the published surface —SessionUserSchema.language(unproduced),sys_user.locale(#13881) and/auth/me/localization.locale(request/deployment) coexist #14788 D / [Decision] May a user set their ownsys_user.locale? — the ADR-0092 D2 self-service whitelist stays{name, image}after #13881 (column landsreadonly, system-context writes only) #14787 B 前置 PR feat(spec,platform-objects,service-messaging,plugin-auth): sys_user.locale + per-recipient notification locale (#13881) #14775 已合入;services 席:rest/meta: state the caller's organization on the/meta/diagnostics?type=sweep #14677 重合 main,合后 rest/meta: two more read doors (/meta/diagnostics,/meta/:type/:name/references) never forward the caller's organization — the "Used by" graph tells an operator an org-referenced item is safe to delete #13753 回pm:queue;hotcrm 席:service-automation: persist suspended flow runs (durable resume across process restarts) #1518(受管面 draft + 人合)· docs: plugin distribution design (ADR-0025/0026 + design doc) #1428 · fix: resolve TypeScript compilation errors in ObjectQL engine datasource mapping #1144 三张pm:queue可派;spec 席离岗:spec: adjudicate how a CONSUMER matching another package's error code is recorded in the provenance ledger —plugin-sharingmatchingERR_SYSTEM_WRITE_ORGANIZATION_REQUIREDfits neither existing remedy cleanly #14937(堵 fix(plugin-sharing): per-grant catch in both reconcile loops so one refused grant no longer aborts the pass (#14754) #14930)待接。热文件串行队
(空)
说明
章程指针:
references/lanes/director.md。governed 审计锚(下轮从此起):第 8 场收班值--since-ref objectstack=79b6a22a5670 --since-ref objectui=ec0a7b846c49;cloud / objectos 无检出恒 UNAUDITED ⛔ 不作干净;审计工具不确定性卡 #13896。席位纪律:决裁批详细写法(2026-08-28)· 席位边界(2026-08-29,裁不派)· 台账权威载体(2026-08-31,#13766 裁 B)· 每批恰 5 张(2026-09-01)· 长远权重 ≥50%(2026-09-01)· 契约复审席内放行 + 本席事后审计/停摆接手(2026-08-31)· ADR 注册表归属规矩(2026-09-02,#14496)· 两场重叠时以写面区分、接管前核同卡双写;get_sessionnot-found 不等于已终止,先看本贴最近一笔台账时间戳(2026-09-02,第 8/9 场;2026-09-03 第 11/12 场再次成立)· 合并队列平台事实(2026-09-03):解除 auto-merge 不移出队列条目、直接合并被 405 拒绝、只有管理员 Jump the queue 能提前;被弹出的 ready PR 重新武装属席位职权,关闭他席开关不属 · 「我们是一个开发工具」(2026-09-03,#14824 裁 D)· 派发前先读落地 PR 的文件清单再立卡(2026-09-03,#14947 误立)· 裁决点名的动作被实测证伪时,决定不动、只换动作,且同类一次裁完(2026-09-03,#806)· 裁决的招牌理由被实测证伪时可撤回改裁,撤回须点名被撤的评论 id(2026-09-03,#14878 B → D) · 受管面请审必须同时请os-zhuang与hotlong;只请hotlong等于落进作者自己的收件箱(2026-09-03,第 12 场诊断 5527393443)。待维护者(以pm:awaiting-maintainer标签为准):objectstack #11879 · #13689 · #11188 · #12920 · #12884 · #13014 · #12034 · #14324(release,⛔ 不催)· #13564 · #13563(cloud,pm:blocking);objectui #5986 · #6596 · #5828;受管面草稿到达时的人合:三份镜像 ADR(#14506 / #14507 / #14508)与 AGENTS.md(#14509)· #14415 的 ADR-0094 D2 修订 · #14147 的两份 skills 散文 · hotcrm#1518 的architect.md· #14959 的 ADR-0092 D5 修订 · #14878 的退役手册一句(到达时);objectui #7473 只差维护者 Approve(第 12 场已请)。定时器:无。工具读数:check-clause2-carriers.mjs本容器 403;PR 事件订阅失败(回退send_later);RESTget首读mergeable_state常为unknown;list_pull_requests的merged字段不可靠,以merged_at为准。