Repository navigation
Description
epic:#31527#1 · os-project-manager · session_01FEkQ5mLd7pR2PHjsPwiGkz
Filing gate: ④ coordination node: child E1 of the epic #31527 (parent and per-layer children), as ADR-0150 (docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md, merged in #31586 at 5d1382a)'s execution plan lists it. Hand-over card: filed undispatched as the epic seat signs off (maintainer 2026-11-08T16:34Z 「专题卡当前任务处理完,合并后就下班」). ⛔ Not a claim.
Ruling-ref: per-type table A (6723462584); epic A 「立专题」 (6723499113); division of labour A 「留核心,其余交车道」 (6723571682); ADR-0150 accepted by merge (#31586, 2026-11-08T21:16Z).
Business reason: inherited from the parent #31527. Behavioural metadata is addressed by (package, name), so two installed packages can each ship an item of the same name and every reader answers the right one, or refuses with the candidates, instead of silently taking the first match.
Reader: the next domain:server seat picks it from the queue (pm-dispatch selection) and accepts its PR against the red lines below.
Dedupe (open AND closed): flow index package name (1202; top hits #31527(open) #30806(open) #31155(open), none on point: they are this epic, its parent #30806, or unrelated cards).
class: d · type: Feature
Grade: p1, inherited from the parent (self-graded under 「定级你可以自己决定」).
Blocked-by: #31575
维护者速读
流程的索引和激活按(软件包, 名称)查找,不再只看名字。
What to build
The flow index and activation consult on (package, name), through R's resolver (D3, D4). A bare name with one holder still resolves.
Surface
- Expected file surface: service-automation (
engine.ts,flow-definitions.ts). - Clause-②: no.
- Narrowing: yes, for a package item's bare reference that only an environment-authored item holds (D3 (a); not measurable first-party; the D10 upgrade report lists each case).
Acceptance — the epic's three red lines (every child shares them)
- Resolution never loosens. No first-registered fallback, no environment-wide guess for a caller with a package, no silent pick.
- Ambiguity is reported, never guessed. Every refusal and every migration report names every candidate.
- Independently releasable (red line 3). The PR proves it with ADR-0150's four readings: (a) the phase-1 one-holder tests stay green; (b) bare-name behaviour (URLs, MCP, SDK) is unchanged for every name with one holder, except this card's declared narrowing; (c) any migration is re-runnable and never guesses; (d) its
Clause-②:declaration and, where it changes the protocol, its ADR-0087 migration entry. - The epic seat is off duty after hand-over: the accepting lane seat checks these lines itself, and a narrowing beyond the declared one goes to the maintainer before landing.
Parent: #31527.
Activity
objectstack-fleet commentedon Nov 8, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: confirmed ·
domain:server· p1 ·pm:blocked· 2026-11-08T21:55Z⛔ Not a claim.
epic:#31527#1is online, and the maintainer ruled 「留核心,其余交车道」. The children live in lane queues withoutpm:epic, which matches [Decision] Epic-driven delivery as the next working mode: one epic = parent + epic seat + milestone table; children as sub-issues withpm:epic+Blocked-by:; rolling split; mandatory hand-over when an epic seat leaves; a cap on concurrent epics #31502 A′.domain:server, by package ([Decision] Keepdomain:devxanddomain:serveras separate lanes, or merge them? Measured load and boundary friction, 2026-11-08 #31424 rule 1).Generated by Claude Code
objectstack-fleet commentedon Nov 8, 2026
epic:#31527#1 · os-steve · session_01ADHkmP7o3uDTti21wLTfPf
Unblocked 2026-11-08T22:58Z:
Blocked-by: #31575is closed. R merged in #31637 as 0ebb080 (resolvePackageScopedName,packageResolutionClosureand the three read-onlySchemaRegistrypackage-scoped methods in objectql;packageDependencyClosurein metadata-protocol).pm:blocked→pm:queuein this stroke. Read the resolver through those exports only, and never re-implement the rule. The epic seat reviews this card's PR against the three red lines before it lands.objectstack-fleet commentedon Nov 8, 2026
domain:server#3 · os-steve · session_01ADHkmQXLfvyB5R53VDm3Ka
Claim: PM loop round 1 · #31672 (E1, epic #31527) · 2026-11-08T23:05Z
Session:
session_01ADHkmQXLfvyB5R53VDm3Ka(seat); dev = card threadsession_01ADHkmQjmHnuYAuaRd9k252Account:
os-steveBranch:
claude/project-thread-ack2otWorktree: the card thread's checkout of
objectstack-ai/objectstackDomain:
domain:serverSeat:
domain:server#3File surface:
packages/services/service-automation/src/**(engine.ts,flow-definitions.ts: the flow index and activation), their tests,.changeset/31672-*.md(stop on breach; ⛔ nopackages/specedit, no second resolver: R's exports only)Container & model:
L,mode:thread,model: default tier; CONTRACT_REVIEW_TIER for the review owed before the queue (dispatch-gates --tier: a card that only NARROWS owes one contract-review-tier review, judged from the card content),effort: highClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6728342084
Premise: holds (R #31637 merged as 0ebb080; the card's
Blocked-by: #31575closed, moved topm:queueby the epic seat in 6728342084; the dev confirms the resolver exports onmainin step 0)Narrowing: as the card declares (D3 (a)), a package item's bare reference that only an environment-authored item holds; the dev measures it on base and head
Serial constraints cleared: E5 #31677 (this seat, branch
claude/project-thread-bwr6nn) also touches service-automation (connectors): the two threads read each other's branch, run in parallel while the files are disjoint, and E1 lands first if they meet. S3 #31684 follows E1, E5 and E7 on this seat. Seat 1 holds N/K/G1 (registry.ts, objectql), outside this surface.objectstack-fleet commentedon Nov 8, 2026
domain:server#3 · os-steve · session_01ADHkmQXLfvyB5R53VDm3Ka
Claim amendment · #31672 · 2026-11-08T23:10Z · amends Claim 6728428231
File surface: adds
packages/services/service-automation/package.json(@objectstack/objectqlmoves fromdevDependenciestodependencies) and the matchingpnpm-lock.yamlimporter line. Reason: R's resolver is exported from objectql, and a copy of the rule inside the engine would be the second resolver the epic forbids. No cycle: nothing in objectql's dependency closure depends on service-automation (the dev's reading; the seat re-reads it at review).Narrowing: unchanged in this claim. The dev reports one more case the resolver's step 3 refuses for a package caller (a bare name held only by a package outside the caller's declared dependency closure; first-party count 0 on
main, measured by the dev). It is declared in the PR body with that count; whether it is inside ADR-0150's declared narrowings is settled before landing, not by this amendment.