Skip to content

[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

Open

Description

@objectstack-fleet

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.md line 17: 「仓不可达 ⛔ 不当查过了干净:在 issue 上贴出给对应座位的现成命令,等读数回贴再派。」 (grep -n '仓不可达' .claude/skills/pm-dispatch/references/reading-discipline.md → 1 hit.)
  • .claude/skills/pm-dispatch/references/cross-repo-coordination.md lines 48–51: cross-seat requests ride on an existing card with Blocked-by:; 「目标仓不可达是读数缺口,不是落点:由可达席在目标仓立卡,此前请求记座位贴或协调卡。」 (grep -n '目标仓不可达' …/cross-repo-coordination.md → 1 hit.)
  • AGENTS.md Prime Directive 13: a cloud decision is cited from this repository as cloud ADR-NNNN by 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

  1. The skills seat 2 session cannot read objectstack-ai/cloud. Re-check: this session's get_session lists sources objectstack and objectui only; the maintainer's word above confirms it.
  2. 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 its origin/main. Re-check: GET /repos/objectstack-ai/objectstack/issues/24525 body, first bullet under 「The two texts」.
  3. 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/events and /comments.
  4. 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#2 seat) 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 (业务立场)

os-decision-facets

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

Related

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions