[Decision] A card whose premise or fix lives in a repository its lane cannot reach (cloud today): who reads it, who acts, and what the lane does meanwhile #24591
Description
Filing gate ② (a maintainer's decision), filed on the maintainer's direction (③). In the skills seat 2 session (session_014kWeosxNDsHDT6TuQHLmC1, seat post #19287) on 2026-10-19 the maintainer said 「cloud 你访问不到,相关卡片不用处理」 and then 「但是这一类卡片应该怎么处理也需要开决策卡」. ⛔ Not a claim. The seat does not adjudicate; it puts the options to the maintainer.
Reader who acts: the maintainer answers A / B / C. Then the domain:skills lane makes one text PR under .claude/skills/pm-dispatch/references/ (governed Tier S, landed by the seat after a contract-tier review), or no PR if C.
Dedupe (MCP semantic search on this repository, closed included): "lane seat cannot reach sibling repository cloud card premise unreadable how to handle route decision" → 2 hits, both closed and off point (#9913, a cloud-seat backfill request; #9063, repo:* seat probes not scanning routed cards). Control query "verify lock os-dev resource rule cloud AGENTS item 12 disagree" → 17 hits, #24525 first, so the channel was alive. No open card on this rule.
维护者速读
- 事情: os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 是一张卡,问的是 objectstack 的
os-dev.md与 cloud 的AGENTS.md哪条管 cloud 的开发 agent。它落在domain:skills车道,但本席读不到 cloud 仓,只能看立卡席抄过来的引文。今天三个席位在三小时里都碰了它一遍(立卡的 cloud 席、分诊席、本席一次无效异议)。同类卡(前提或修法有一半住在车道读不到的仓)以后还会来,需要定一条处理规则。 - 选项: A = 车道等可达席把读数贴回卡上再动手(现行条文,写明等待);B = 卡由可达席逐字贴引文,车道只在您裁决后按裁定的引文动手,此前不碰也不异议,cloud 侧的修法归 cloud 自己的卡;C = 给 objectstack 车道席位开 cloud 仓的读权限。
- 推荐: B。一行协议文字,不新增标签、不新增门禁、不扩权限;车道永远只对您裁定过的原文动手,读不到就不动。
- 末句: A / B / C?
One-sentence problem
A lane seat is handed a card whose question can only be answered by reading a repository it cannot open, and today it has no rule for what to do except read someone else's quotation — so three seats each spend a round on the card and none can close it.
Governing text
.claude/skills/pm-dispatch/references/reading-discipline.mdline 17: 「仓不可达 ⛔ 不当查过了干净:在 issue 上贴出给对应座位的现成命令,等读数回贴再派。」 (grep -n '仓不可达' .claude/skills/pm-dispatch/references/reading-discipline.md→ 1 hit.).claude/skills/pm-dispatch/references/cross-repo-coordination.mdlines 48–51: cross-seat requests ride on an existing card withBlocked-by:; 「目标仓不可达是读数缺口,不是落点:由可达席在目标仓立卡,此前请求记座位贴或协调卡。」 (grep -n '目标仓不可达' …/cross-repo-coordination.md→ 1 hit.)AGENTS.mdPrime Directive 13: a cloud decision is cited from this repository ascloud ADR-NNNNby name; the two registries number independently and files never move between them.SKILL.md〈升级与决策〉: 「⛔ 永不代维护者答产品或架构问题」; 「卡先于弹窗:需裁决先落 needs-user-decision 卡」.
Protocol declaration: none of the three options changes a spec, a runtime contract or a published surface. A and B edit pm-dispatch reference text (governed Tier S); C changes session or environment configuration and no text.
Premises, each with its re-check
- The skills seat 2 session cannot read
objectstack-ai/cloud. Re-check: this session'sget_sessionlists sourcesobjectstackandobjectuionly; the maintainer's word above confirms it. - The cloud seat can read objectstack: os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525's body quotes
.claude/agents/os-dev.md资源纪律 1 verbatim and names itsorigin/main. Re-check:GET /repos/objectstack-ai/objectstack/issues/24525body, first bullet under 「The two texts」. - Today's cost of the gap: os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 filed 12:17Z (cloud seat), first-touched 14:32Z (triage → decision box), objected to and withdrawn 14:46Z–14:51Z (this seat, comments 6270036834 and 6270112643). Re-check:
GET /repos/objectstack-ai/objectstack/issues/24525/eventsand/comments. - Inflow is not one card: pm-dispatch: a self-labelled card missing filing-gate answers is completed by triage at first touch, not closed; lanes always mark pm:retriage; triage spot-checks queued self-labelled cards too #24589's body lists rest: every GET /api/v1/data/OBJECT still runs a full zod safeParse of the object's definition (the API-exposure gate's by-name read is decorated with diagnostics) — 11.8% of a HotCRM read's CPU #24535, formula: a CEL environment with the full stdlib is built on every compile and every evaluate (buildEnv → registerStdLib), reached per row by formula fields — about 7% of a read's CPU #24536, security: per-request permission-set resolution probes the filesystem (catalogSetLoader → filesystem-loader findFile → fs.access per extension) — about 5% of a read's CPU #24537, authz: every authenticated request re-reads the Default Organization (two sequential sys_organization reads) once the admin's admin_full_access grant is organization-owned #24523 (filed by the
repo:cloud#2seat) and objectui#13046, objectui#12978 arriving self-labelled on 2026-10-19. Re-check:GET /repos/objectstack-ai/objectstack/issues/24589, section 「What happened」.
The question
When a card in an objectstack lane needs a text, a reading or a fix in a repository that lane's seats cannot open, who supplies the reading, who acts on the card, and what does the lane do with it until then?
Options × real cost × workload
| Option | What it does | What the maintainer feels | Workload |
|---|---|---|---|
| A — wait for the reading (today's text, made explicit) | The card stays in the lane that owns the landing file. The lane posts ready-made read commands for the reaching seat (reading-discipline.md:17), writes the wait on the card (pm:blocked + Blocked-by: to a request card in the reachable repo, cross-repo-coordination.md:48–51), and dispatches only after the reading is on the card. |
Each such card costs two seats and at least one round trip; the lane's stock shows a blocked card; the reading the lane acts on is another seat's paraphrase. | skills lane · 1 text PR making the wait explicit, or none (the text exists) · precedent PR #24521 (+2/−2). |
| B — route by reachability; the ruling carries the quotation (recommended) | A card whose premise lives in an unreachable repo is a decision card from the start: the seat that can read both repos (its filer or that repo's seat) quotes the unreachable text verbatim on the card; the lane never reads the other repo and never objects or retriages it — it acts only after the maintainer's ruling, on the ruled quotation. The fix that lands in the unreachable repo is that repo's repo:* card; an objectstack-side half, if any, is filed after the ruling with the ruled sentence quoted. |
One decision per such card, no cross-seat waits, no half-states on the card; the lane's hands stay off until a ruling exists. | skills lane · 1 text PR, one line in cross-repo-coordination.md (line-neutral at its ceiling) · precedent PR #24521 (+2/−2). |
| C — widen reach | Attach objectstack-ai/cloud as a source to the objectstack lane seats' sessions so they can read it. |
Every objectstack lane seat gains a second repository to read and scan; cloud is the commercial-boundary repository whose decisions this repo cites by name, never reads. | maintainer · environment change · no PR; no precedent in this repo. |
Business meaning
- A: the engineering lane files a request with the other team and waits for its answer before touching the ticket.
- B: a ticket that straddles two teams is a management decision first; each team implements only the decided wording on its own side.
- C: give the engineering lane read access to the other team's repository.
Four-axis analysis (业务立场)
- ① 项目长远合理性: 车队按仓分车道、按仓分收件箱(
cross-repo-coordination.md:9、27),跨仓裁决从来是「按名引用、不去读对方」(AGENTS.md 第 13 条对 cloud ADR 的写法)。B 把卡片处理拉到同一形状:车道只认裁定过的引文,不建跨仓读数通道,特例面缩小。A 把「等另一席读数」固化成常设协调态,每张卡多一条跨席依赖。C 扩大可达面,与一席一仓的分工反向。 - ② 实际业务拉动: 今天就有:os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 三小时内三席各碰一遍、一次无效异议;cloud 席同日自贴四张卡到 objectstack 车道(pm-dispatch: a self-labelled card missing filing-gate answers is completed by triage at first touch, not closed; lanes always mark pm:retriage; triage spot-checks queued self-labelled cards too #24589 正文列出)。零拉动不成立,所以不是 defer。
- ③ 防 AI 犯错: 这类卡的错法是 agent 对一段自己读不到的文字做判断,或照着别席的转述动手。B 让唯一可动手的文本是维护者裁定过的逐字引文:没有裁决就没有动作,响亮而不是静默。A 依赖别席读数的转述,漂移无声。C 消除了读不到,但让车道读一个它从未按其规则训练过的仓。
- ④ 创业阶段不扩散: B 只在既有规则文件加一行(该文件已有「目标仓不可达」条,见上),不加标签、不加 sweep、不加门禁(
cross-repo-coordination.md:50本就禁止新标签新 sweep)。A 不加文字但每卡加一条常设等待。C 加权限、加注意力。
os-decision-facets
- ① 项目长远合理性:B 缩小特例(跨仓裁决统一为「按名引用、按裁定引文动手」),A 固化跨席等待,C 扩大可达面。
- ② 实际业务拉动:今天 os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 三席三轮;cloud 席同日自贴四张;拉动真实。
- ③ 防 AI 犯错:B 无裁决即无动作,响亮;A 读转述,漂移静默;C 读陌生仓。
- ④ 创业阶段不扩散:B 一行既有文件,零新标签/门禁;A 每卡一等待;C 加权限。
Prior rulings read: cross-repo unreachable, lane seat cannot reach → 2 hits (closed #9913, #9063); none; thread: none.
Recommendation + confidence gap
B. Only by ①: in two years every cross-repository question in this fleet is a decision cited by name across the boundary (the ADR model) and implemented per repository on the decided wording; B is that shape for cards. A is not taken because it keeps a per-card cross-seat wait alive as a mechanism; C is not taken because it widens access to answer a routing question. Blind spots, stated: this seat cannot measure the cloud side's cost (unreachable); it assumes the cloud seat keeps reading objectstack as it did for #24525.
自检行: 只看①选 B;②③④ 是否翻转:否。
After the ruling
- A: no new rule; the lane applies
reading-discipline.md:17+cross-repo-coordination.md:48–51as written, and os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 waits on the cloud seat's reading of item 12 in context before any dispatch. - B: the skills lane files one text PR adding one line to
cross-repo-coordination.md(line-neutral at its ceiling) in the shape: a card whose premise lives in a repo the lane cannot reach carries the unreachable text quoted verbatim by a reaching seat; the lane acts only after the ruling, on the ruled quotation, and does not retriage or object meanwhile; the unreachable repo's fix is that repo's card. os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 stays in the decision box for its own ruling; its objectstack half, if any, is filed after that ruling. - C: the maintainer attaches the cloud repository to the lane seats' environment; no PR; os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 is then read in context by the lane.
Related
- os-dev's resource rule ("every build/test goes through the verify lock") and cloud AGENTS.md item 12 ("take the verify lock only when editing the framework") disagree for cloud devs #24525 — the instance (decision box,
domain:skills). - pm-dispatch: a self-labelled card missing filing-gate answers is completed by triage at first touch, not closed; lanes always mark pm:retriage; triage spot-checks queued self-labelled cards too #24589 — triage completes self-labelled cards at first touch (ruled B, in flight on this seat).
cross-repo-coordination.mdlines 48–51 andreading-discipline.mdline 17 — the text each option builds on.
Activity