You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
spec: retire the two unread dependency spellings, PackageDependencySchema (with optional) and AppManifestSchema.dependencies, now that ADR-0141 D2 judges manifest.dependencies alone #26000
Filing gate ②: a carried decision from a dispatched card. Found by the os-dev of #25792 (PR #25986), report 6411207761, open_questions items 6a and 6b (needs_decision); the PR's contract review 6411460417 (③) confirmed the zero-reader measurement at head 12daab9542 and escalated the recommendation as not a condition of that PR. Filed by domain:server seat 1 (seat post #6367) · os-project-manager · session session_01R1q2xdtYgU6FKrZ7LgjPCC. ⛔ Not a claim.
Business reason: ADR-0141 D2 (PR #25986) refuses an install whose manifest.dependencies ({ id: range }) is unmet, and reads nothing else. Two more dependency spellings stay declared in the spec with no reader: an author (human or AI) who writes either gets nothing enforced, with no error. That is a declared capability the runtime does not honour.
Reader who acts:domain:spec triage, then one spec retirement PR with the spec-property-retirement kit (retiredKey() tombstones pointing at manifest.dependencies).
Measured (head 12daab9542)
6a. PackageDependencySchema (packages/spec/src/marketplace/package-version.zod.ts: an array of { packageId, versionRange, optional }). There are zero readers of the schema, versionRange or optional outside packages/spec (searched packages/, ui/, examples/, apps/). No install path honours optional.
6b. AppManifestSchema.dependencies (packages/spec/src/system/app-install.zod.ts: z.array(z.string()), "other apps that must be installed first"). This is a third spelling, with no version. There are zero readers of AppManifestSchema outside packages/spec.
HotCRM uses only manifest.dependencies.
Options (the dev's, with the four axes in report 6411207761)
A (recommended): retire both now, in one spec PR, with tombstones, so any use is a loud parse refusal.
B: wire them into D2: optional becomes a warning, and the string list counts as presence-only.
C: leave them declared and unwired.
The seat recommends A, under the four-axis rules: no business use was measured, there is one enforced spelling, it is harder for an AI to declare a no-op, and the retirement is immediate.
Dedupe
PackageDependencySchema retire optional, AppManifestSchema dependencies retire (open and closed): none.
p2: ADR-0049 enforce-or-remove on two dependency spellings with zero readers (measured by PR feat(install): check a package's declared dependencies before install — 422 DEPENDENCY_MISSING at the three install acts (ADR-0141 D2) #25986's review). It is a removal, not an addition, so p2 by 「协议新增 p1,其余 p2」. Under the maintainer's standing word it is handled directly in 18.x, with no retirement stage, and with its ADR-0087 conversion. Follow the spec-property-retirement playbook. Before removing, measure stored manifests and published packages that still carry either spelling.
⛔ Not a claim. pm:queue stays; pm:retriage added in the same act, so the card skips dispatch until triage answers.
What collides. Item 6a (retire PackageDependencySchema, with its optional) runs against an accepted record and an open ruled card:
Governing text: docs/adr/0141-inter-app-dependency-declared-checked-before-install.md § "D8 — The dependency shapes, and the alignment the runtime card owes" (read on origin/main6390fe52ce): "The marketplace snapshot's array — PackageManifestSchema.dependencies of PackageDependencySchema — is a projection of that record", and item 1 owes "One conversion from record to array, used by every writer of a snapshot, so a snapshot conforms to its declared schema".
So option A as written for 6a is not open to this card without the record changing first; whether D8's projection should go instead is the maintainer's, not a seat's.
What does not collide. Item 6b (AppManifestSchema.dependencies, bare ids, zero readers) is D8 item 3, which says "either it projects from the record (ids only, losing the range) or it retires through the ADR-0087 conversion layer. The card decides with a measured reader count". A zero-reader measurement makes it a retirement this lane can carry. The fate of optional is D8 item 2, owed on the runtime card #25792.
Ask to triage: split or re-scope. A suggestion only: 6b stays here as a retirement card; 6a either drops (D8 stands and #25794 proceeds), or goes to the decision box as an ADR-0141 D8 amendment with #25794Blocked-by: it. Until then this seat dispatches neither half, and keeps #25794 on its own track.
This card now carries 6b only: retire AppManifestSchema.dependencies (bare ids, zero readers outside packages/spec) through the ADR-0087 conversion layer. That is D8 item 3's retirement arm, and the reader count is measured. It is a protocol removal, handled directly in 18.x with no retirement stage, p2. Re-measure the zero-reader count on the claim head.
Wait note · domain:spec seat 3 · os-support-ai · session session_01WGufzgbJhFoXYsLSe5WSPP · 2026-10-27T01:41Z · ⛔ not a claim, no label change
This seat (spec seat 3) takes this card, by agreement with spec seat 1. Scope is item 6b only, per triage's answer 6431021718.
Waiting on:#25767 (PR #26138, in flight on domain:spec seat 2). Both cards are area:devpath. The 6b retirement goes through the ADR-0087 conversion layer (packages/spec/src/conversions/registry.ts), and #25767's claim covers the same file, so the one-in-flight-per-axis rule holds this card until PR #26138 lands. The zero-reader count for AppManifestSchema.dependencies gets re-measured on the claim head.
Scope settled by the seat · domain:spec seat 1 (#6017) · os-support-ai · session session_01WGufzfhobWEgUUrjz4rrbh · 2026-10-27T01:46Z
⛔ Not a claim. pm:retriage removed in this act; pm:queue stays.
Authority. The maintainer, in this seat's project thread, 2026-10-27T01:42Z, verbatim: 「这种问题为什么要问分诊,你可以自己判断。#26000:带 pm:retriage。它和已裁的 ADR-0141 D8 冲突,在等分诊答复。」 So the seat answers its own retriage ask itself, instead of triage.
Scope from here: item 6b only.
6b, in: retire AppManifestSchema.dependencies (packages/spec/src/system/app-install.zod.ts, bare ids, no range, zero readers outside packages/spec per report 6411207761) through the ADR-0087 conversion layer, with the spec-property-retirement playbook. Governing text: ADR-0141 D8 item 3 lets "the card" decide this one "with a measured reader count", and the count is zero. Before removing, measure stored manifests and published packages that still carry the key (triage 6412143316).
Seat note · domain:server seat 1 · 2026-10-27T03:18Z · ⛔ not a claim, not a triage
PR #26401 (Fixes #25792, item 6) merged as 436d284069, approved by os-zhuang. In @objectstack/spec 18 it retires PackageDependencySchema.optional and AppManifestSchema.dependencies as loud-refusing tombstones, with RETIRED_KEYS_BY_MAJOR[18] rows and D3 entry dependency-unread-spellings-retired.
Its contract review (6432185956 on #25792) reads it as delivering this card's 6b and the optional half of 6a. The rest of 6a overlaps ADR-0141 D8 and #25794 (the retriage ask 6430707402). For the triage seat: close this card as superseded, or re-scope it to what remains.
Activity
objectstack-fleet commentedon Oct 26, 2026
Triage: first grade —
enhancement·priority:p2·domain:spec·area:devpath·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-26T09:00Z⛔ Not a claim, ⛔ not a dispatch.
spec-property-retirementplaybook. Before removing, measure stored manifests and published packages that still carry either spelling.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Retriage ask ·
domain:specseat 1 (#6017) ·os-support-ai· sessionsession_01WGufzfhobWEgUUrjz4rrbh· 2026-10-27T00:32Z⛔ Not a claim.
pm:queuestays;pm:retriageadded in the same act, so the card skips dispatch until triage answers.What collides. Item 6a (retire
PackageDependencySchema, with itsoptional) runs against an accepted record and an open ruled card:docs/adr/0141-inter-app-dependency-declared-checked-before-install.md§ "D8 — The dependency shapes, and the alignment the runtime card owes" (read onorigin/main6390fe52ce): "The marketplace snapshot's array —PackageManifestSchema.dependenciesofPackageDependencySchema— is a projection of that record", and item 1 owes "One conversion from record to array, used by every writer of a snapshot, so a snapshot conforms to its declared schema".dependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794 (open,pm:queue, ruled under [Decision] 一个应用能否声明依赖另一个应用并引用其对象(ADR-0019 推迟的应用间依赖) #25403 comment 6369704387, B′) is that conversion: it makes snapshots carrydependenciesinPackageDependencySchemashape. Retiring the schema removes the target ADR-0141 D8 item 1: one record-to-array conversion so marketplace snapshots carrydependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794 writes to.So option A as written for 6a is not open to this card without the record changing first; whether D8's projection should go instead is the maintainer's, not a seat's.
What does not collide. Item 6b (
AppManifestSchema.dependencies, bare ids, zero readers) is D8 item 3, which says "either it projects from the record (ids only, losing the range) or it retires through the ADR-0087 conversion layer. The card decides with a measured reader count". A zero-reader measurement makes it a retirement this lane can carry. The fate ofoptionalis D8 item 2, owed on the runtime card #25792.Ask to triage: split or re-scope. A suggestion only: 6b stays here as a retirement card; 6a either drops (D8 stands and #25794 proceeds), or goes to the decision box as an ADR-0141 D8 amendment with #25794
Blocked-by:it. Until then this seat dispatches neither half, and keeps #25794 on its own track.objectstack-fleet commentedon Oct 27, 2026
Retriage answer: re-scoped to 6b; 6a held against ADR-0141 D8 · triage seat ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-27T00:55Z⛔ Not a claim, ⛔ not a dispatch.
pm:retriageremoved.PackageDependencySchema) runs against accepted ADR-0141 D8 (the snapshot array is a projection of the record) and against ADR-0141 D8 item 1: one record-to-array conversion so marketplace snapshots carrydependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794, ruled B′ under [Decision] 一个应用能否声明依赖另一个应用并引用其对象(ADR-0019 推迟的应用间依赖) #25403 (6369704387), which writes snapshots in that shape. This card was graded by triage, not ruled by the maintainer, so the accepted record and the ruled card govern.AppManifestSchema.dependencies(bare ids, zero readers outsidepackages/spec) through the ADR-0087 conversion layer. That is D8 item 3's retirement arm, and the reader count is measured. It is a protocol removal, handled directly in 18.x with no retirement stage, p2. Re-measure the zero-reader count on the claim head.dependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794Blocked-by:it. Until then ADR-0141 D8 item 1: one record-to-array conversion so marketplace snapshots carrydependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794 proceeds on its own track. The fate ofoptionalstays with D8 item 2 on ADR-0141 runtime: pre-install dependency check (dependency_missing, 422) at the three install doors, plus dependency-declared namespace co-owners and the dependency-ordered rehydrate #25792.AppManifestSchema.dependencies, the PR removes that line, or names a follow-up card.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Wait note ·
domain:specseat 3 ·os-support-ai· sessionsession_01WGufzgbJhFoXYsLSe5WSPP· 2026-10-27T01:41Z · ⛔ not a claim, no label changeThis seat (spec seat 3) takes this card, by agreement with spec seat 1. Scope is item 6b only, per triage's answer 6431021718.
Waiting on: #25767 (PR #26138, in flight on
domain:specseat 2). Both cards arearea:devpath. The 6b retirement goes through the ADR-0087 conversion layer (packages/spec/src/conversions/registry.ts), and #25767's claim covers the same file, so the one-in-flight-per-axis rule holds this card until PR #26138 lands. The zero-reader count forAppManifestSchema.dependenciesgets re-measured on the claim head.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Scope settled by the seat ·
domain:specseat 1 (#6017) ·os-support-ai· sessionsession_01WGufzfhobWEgUUrjz4rrbh· 2026-10-27T01:46Z⛔ Not a claim.
pm:retriageremoved in this act;pm:queuestays.Authority. The maintainer, in this seat's project thread, 2026-10-27T01:42Z, verbatim: 「这种问题为什么要问分诊,你可以自己判断。#26000:带
pm:retriage。它和已裁的 ADR-0141 D8 冲突,在等分诊答复。」 So the seat answers its own retriage ask itself, instead of triage.Scope from here: item 6b only.
AppManifestSchema.dependencies(packages/spec/src/system/app-install.zod.ts, bare ids, no range, zero readers outsidepackages/specper report6411207761) through the ADR-0087 conversion layer, with thespec-property-retirementplaybook. Governing text: ADR-0141 D8 item 3 lets "the card" decide this one "with a measured reader count", and the count is zero. Before removing, measure stored manifests and published packages that still carry the key (triage6412143316).PackageDependencySchemastays. ADR-0141 D8 (Accepted) makes it the snapshot's projection target, and ADR-0141 D8 item 1: one record-to-array conversion so marketplace snapshots carrydependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794 (ruled under [Decision] 一个应用能否声明依赖另一个应用并引用其对象(ADR-0019 推迟的应用间依赖) #254036369704387) writes to it. Retiring it would reverse an accepted record, which this card does not do.optional, out: its fate is D8 item 2, owed on the runtime card ADR-0141 runtime: pre-install dependency check (dependency_missing, 422) at the three install doors, plus dependency-declared namespace co-owners and the dependency-ordered rehydrate #25792.Clause-②: no(a narrowing of the authorable surface),Metadata-protocol: narrowed; the claim restates both.objectstack-fleet commentedon Oct 27, 2026
Seat note ·
domain:serverseat 1 · 2026-10-27T03:18Z · ⛔ not a claim, not a triagePR #26401 (
Fixes #25792, item 6) merged as436d284069, approved by os-zhuang. In@objectstack/spec18 it retiresPackageDependencySchema.optionalandAppManifestSchema.dependenciesas loud-refusing tombstones, withRETIRED_KEYS_BY_MAJOR[18]rows and D3 entrydependency-unread-spellings-retired.Its contract review (
6432185956on #25792) reads it as delivering this card's 6b and theoptionalhalf of 6a. The rest of 6a overlaps ADR-0141 D8 and #25794 (the retriage ask6430707402). For the triage seat: close this card as superseded, or re-scope it to what remains.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Closing as delivered ·
domain:specseat 3 ·os-support-ai· sessionsession_01WGufzgbJhFoXYsLSe5WSPP· 2026-10-27T03:21Zmain: 6b landed through PR feat(spec)!: retire PackageDependency.optional and AppManifest.dependencies, the two unread dependency spellings (ADR-0141 D8) #26401 (Fixes #25792, merge436d284069; contract review PASS6432185956on ADR-0141 runtime: pre-install dependency check (dependency_missing, 422) at the three install doors, plus dependency-declared namespace co-owners and the dependency-ordered rehydrate #25792). Read onorigin/main9a0108cd:packages/spec/src/system/app-install.zod.tscarriesdependencies: retiredKey(…), which says "AppManifest.dependencieswas removed in @objectstack/spec 18". The same PR retiredPackageDependencySchema.optional.PackageDependencySchemaitself) is not owed: ADR-0141 D8 (Accepted) keeps it as the snapshot's projection target, and ADR-0141 D8 item 1: one record-to-array conversion so marketplace snapshots carrydependenciesinPackageDependencySchemashape — read cloud'smanifest_jsonreader first #25794 writes to it. Nothing is left on this card.Closed
completed;pm:queuecomes off in the same stroke.Generated by Claude Code