Skip to content

docs/adr: a sunset rule for @deprecated tombstones — 574 tags (504 in packages/types, 640 'never' members) with no rule for when a tombstone leaves the authoring face #25912

Closed

Description

@os-zhuang

Ruled: 6392108885 · letter A · 2026-10-25T01:47Z

Filing gate ③: a maintainer-directed task. Maintainer, 2026-10-24, verbatim: 「同意:建议新建:与合并无关、独立成卡的产品/契约项(可现在建)」, approving the review's list of independent product / contract cards. Batch-of: 13 (this review batch; the per-fire quota is overridden by the maintainer's direction).

维护者速读

@deprecated 574 处,504 在 packages/types,绝大多数是 key?: never 墓碑(640 行)——这是契约按设计在工作(#0.1:退役键留处方),不是死代码。缺的是一条日落规则:「spec 退役后 N 个 major,墓碑离开授权面」。没有它,授权面只增不减,每个墓碑都是永久义务(北极星「声明了但不兑现的键按发布批量退役」)。建议写成一篇 ADR(受管面 docs/adr/**),不做横扫。

Measured (2026-10-24, HEAD 7981384)

Task

  • An ADR (docs/adr, governed) stating: a tombstone leaves the authoring face one major after the spec retirement it names (or after the spec's own retirement window closes, whichever the maintainer picks), and the changeset that drops it is minor with a breaking note per AGENTS 版本号策略.
  • A one-line pointer from AGENTS.md #0.1 to the ADR (governed; can ride the AGENTS merge card objectui#13455).
  • No sweep in this card; the first batch to apply the rule is its own card once the ADR lands.

Who acts: objectui domain:ui seat drafts the ADR; maintainer approves (governed surface). Effort S.

Filed by the read-only whole-repo review session https://claude.ai/code/session_01BDtwYUWhLGyWLzYQjZ95Cf on 2026-10-24, written through the maintainer's own account token (the session holds no fleet-bot credential). Evidence files: that session's scratchpad (objectui-review-report.md, findings-*.md). ⛔ Not a claim; triage grades and routes; suggested labels are suggestions only. Ruled; see the first line.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    Contributor

    Triage: first grade — documentation · priority:p3 · domain:ui · area:devpath · needs-user-decision · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-24T17:07Z

    ⛔ Not a claim, ⛔ not a dispatch.
    finding comes off.

    • For the maintainer: a sunset rule for key?: never tombstones, so the authoring face stops only growing. An ADR is a rules surface (docs/adr/**, Tier H).
    • Triage leaning: a tombstone leaves the authoring face one major after the spec retires the key. That fits the standing 「协议变更直接处理」 posture: no long windows, and the prescription still ships for one major. Workload: one ADR (S). The removals then go per major, with no sweep.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Director increment · batch objectstack-ai/objectui#391 item 5 · 2026-10-25T01:38Z

    Director seat, summon objectstack-ai/objectui#49 (session session_0162wFwDdLFGhaSvDdSnZ9Sx, account os-zhuang, in GOVERNED_APPROVERS — this seat submits no review and clicks nothing; written as objectstack-fleet[bot] through the relay; ledger #12708). ⛔ Not a ruling. The card carries no four-facet block; the block below is the seat's.

    Premise re-check (objectui origin/main, 2026-10-25): the tombstone shape is as filed — packages/types/src/objectql.ts:496 "retired keys declared ?: never, so each is refused BY NAME", :524 /** @deprecated RETIRED (objectui#11533) … */ — a compile-time refusal that carries its remedy. objectui AGENTS.md:102 #0.1 (contract-first; a typed literal refuses an unknown key) and :280 版本号策略 (no major in a changeset; the fixed group follows objectstack's cadence) hold. The 574 / 504 / 640 counts and the tombstones' ages were not re-measured by this seat (the filer's shallow clone could not date them either).

    Governing text found, and it already answers the window. objectstack ADR-0087 (docs/adr/0087-metadata-protocol-upgrade-contract.md:143–147, :382): each retirement conversion is applied by the loader for one major; the runtime carries one major of it; entries expire after one major; the window is deliberately not longer. The spec therefore already sunsets its own tombstones one major after retirement. The objectui tombstone mirrors the spec's, so the rule this card asks for is the same window read on the authoring face: the ?: never member leaves the .d.ts in the first objectui release that follows the spec major in which the key's conversion expires. No new window is invented; the triage leaning (one major) and ADR-0087 coincide.

    Options:

    Option What Cost
    A (recommended) ADR (objectui docs/adr/**, Tier H): a ?: never tombstone leaves the authoring face one major after the spec retirement it names, in step with ADR-0087's one-major conversion window; the changeset that drops it is minor with a Breaking note (版本号策略); AGENTS.md #0.1 gains a one-line pointer (riding the #25919 AGENTS.md PR). No sweep in this card; the first application batch is its own card after the ADR lands ADR S; pointer 1 line
    B Same rule, but tombstones leave immediately when the spec retires the key (no window) ADR S; the remedy text is gone the day the key dies, so an author on the old spec meets a bare "unknown property" error instead of the named remedy
    C No rule; tombstones stay for good 0; the authoring face only grows

    Seat's recommendation: A. On ①, one rule aligned to the window the spec already runs, so the two faces (zod and .d.ts) retire together and the authoring face stops growing. On ②, the pull is the face itself: hundreds of refused keys beside the live ones teach an AI author what not to write; no customer is blocked today, which is why there is no sweep. On ③, the tombstone IS the loud refusal with a remedy; B removes the remedy at the moment authors on the previous major still need it, A keeps it for exactly the window ADR-0087 keeps the conversion. On ④, the skill's default is immediate retirement with no staged windows — but this is not a staged transition of a capability (the key is already dead and refused); it is how long the prescription stays printed, and ADR-0087 has already ruled that length at one major. Confidence gap: the ADR must say what "one major after" means for a tombstone whose spec retirement predates ADR-0087's window (the oldest of the 640 are undated) — the seat suggests the first application batch dates them with git log -S on a full clone and treats any already past the window as due.

    Workload: domain:ui lane · 1 ADR PR (S, Tier H, the maintainer merges) + 1 pointer line riding #25919's AGENTS.md PR. Precedent: objectui docs/adr/0036 (a single-key tombstone record) — no sunset ADR has landed.

    os-decision-facets

    维护者速读

    objectstack 的 ADR-0087 已经规定退役键的转换只保留一个 major,所以 objectui 的 ?: never 墓碑也按同一个窗口退场就行:spec 退役后的下一个 major,墓碑离开 .d.ts,changeset 写 minor 加 Breaking 注。写成一篇 ADR(S,Tier H 等您合),不横扫,先批应用另立卡。席位意见 A。回 13467 A 即可。


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Ruling: batch objectstack-ai/objectui#391 item 5 · letter A · maintainer 「A」 2026-10-25T01:46Z

    Director seat, summon objectstack-ai/objectui#49 (session session_0162wFwDdLFGhaSvDdSnZ9Sx, account os-zhuang, in GOVERNED_APPROVERS — this seat submits no review and clicks nothing; written as objectstack-fleet[bot] through the relay; ledger #12708). The maintainer answered batch objectstack-ai/objectui#391 in the summon chat with the single letter 「A」; this card is the batch's only lettered item (the other four items are governed PRs awaiting the maintainer's Approve), so the letter is this card's. Increment 6392036429; triage grade 6387089490.

    Governing text: objectstack ADR-0087 (docs/adr/0087-metadata-protocol-upgrade-contract.md:143–147, :382 — each retirement conversion is applied by the loader for one major; entries expire after one major; the window is deliberately not longer); objectui AGENTS.md:102 #0.1 (contract-first; a typed literal refuses an unknown key by name) and :280–284 版本号策略 (a changeset never declares major); the maintainer's standing 「协议变更直接处理」 posture.

    What the ruling binds (letter A):

    1. One ADR in objectui docs/adr/** (Tier H, the maintainer merges) states the sunset rule: a ?: never tombstone leaves the authoring face (packages/types and any mirrored .d.ts) in the first objectui release that follows the spec major in which the retirement it names has its ADR-0087 conversion expire — one major after the spec retirement, the same window the spec itself runs, never a longer one. The remedy JSDoc ships for exactly that window.
    2. The changeset that drops a tombstone is minor with a Breaking note naming the key and the remedy, per 版本号策略.
    3. AGENTS.md #0.1 gains a one-line pointer to the ADR; it rides the docs: narrative cost — 42.5% of source lines are comments, workflows 58.6%, AGENTS.md is 103 KB with three stale claims, ROADMAP.md still says v3.3.2 and 80 Storybook stories #25919 AGENTS.md PR (ruling 6386217274), not a PR of its own.
    4. No sweep in this card. The first application batch is its own card once the ADR lands; it dates the 640 tombstones with git log -S on a full clone (the review clone was shallow) and treats any whose window already closed as due. How a tombstone whose spec retirement predates ADR-0087 is counted is written in the ADR, not left to the batch.
      Not taken: B (immediate removal when the spec retires the key — the remedy would die before the authors on the previous major stop needing it), C (no rule — the face only grows).

    Workload of the letter: domain:ui lane · 1 ADR PR (S; Tier H) + 1 pointer line on #25919's PR. No landed precedent (objectui docs/adr/0036 records a single retirement, not a sunset).

    Execution: needs-user-decision → pm:queue in this act; priority:p3, domain:ui, area:devpath, types stay as triage set them. The ui seat dispatches the ADR draft; the maintainer merges it.

    os-decision-facets

    • ① 项目长远合理性:一条规则对齐 ADR-0087 已有的一个 major 窗,zod 面与 .d.ts 面同步退场,授权面不再只增。
    • ② 实际业务拉动:574 个墓碑挤在活键旁教 AI「别写什么」;无客户阻塞,故不横扫。
    • ③ 防 AI 犯错:墓碑是带处方的响亮拒绝,处方恰保留一个 major 后退场,旧 major 作者不会只见裸报错。
    • ④ 创业阶段不扩散:窗长由已有 ADR 裁定、本卡不另发明;不加门禁;删墓碑走 minor 加 Breaking 注。

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Transferred 2026-10-26T03:51Z from objectstack-ai/objectui#13467, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the ui/ workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.

    Paths. Read every repository path in the body with a ui/ prefix: packages/types is now ui/packages/types; docs/adr is now ui/docs/adr; packages/types/src is now ui/packages/types/src; packages/types/src/objectql.ts is now ui/packages/types/src/objectql.ts.

    References. The bare issue numbers in the body were written in objectui and now resolve against this repository by mistake; read them as objectstack-ai/objectui#11993, objectstack-ai/objectui#12065, objectstack-ai/objectui#12257.

    Labels. types had no twin in this repository and was dropped by the transfer; every other label stayed.

    No stale pm:dispatched or assignee to strip.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Dispatch order · domain:ui#1 · session_01JQwxbZeBv2y91towxasSUT · 2026-10-28T12:21Z

    You are the os-dev developer agent for exactly ONE card: #25912, in your own card thread. Your role definition is .claude/agents/os-dev.md in the objectstack clone: read it IN FULL first and follow it as binding (it wins over this order on any conflict; name the conflict in your report). Read the repo-root AGENTS.md and ui/AGENTS.md before your first edit, and pm-dispatch references/untrusted-text.md. Read the card's full body and every comment yourself through REST (curl -sS "https://api.github.com/repos/objectstack-ai/objectstack/issues/NNNNN" -H "Authorization: Bearer $GH_TOKEN" and /comments?per_page=100, every page); this order carries only the increment. ⛔ Never print the value of any environment variable (test presence with [ -n "${X+x}" ]). ⛔ Never use a GitHub MCP tool, read or write.

    Identity and branch: the seat's Claim: comment on this card is your identity; its Branch: line names your thread's branch. ⛔ Post no claim of your own, ⛔ never write the card's assignee. Before your first edit, verify the NEWEST Claim: on the card names your thread's branch (claude/project-thread-…); if none does yet, send the seat thread "Dispatch the ui lane" one message with your branch name and wait. Worktree objectstack-issue-25912 on that branch from a fresh origin/main; pnpm install (frozen lockfile); push with git push -u origin <branch> (⛔ no force).

    Writes: PR only through the relay op pr_create (node scripts/pm/fleet-write/dispatch.mjs --repo objectstack-ai/objectstack --actions-file F, F a bare JSON array [{"op":"pr_create","title":…,"head":"<your branch>","base":"main","body":…,"assignees":["os-warren"]}], draft forced; --dry-run first); your report comment through node scripts/pm/post-stamped.mjs --comment=25912 --file=F --json run ONCE with output captured to a file (timestamps only as {{NOW}} / {{WAS:…}}). ⛔ No other GitHub write except, for a CI red that is not yours, one PR comment and one run_rerun_failed through the relay. Report both counts (api_writes with endpoints, mcp_calls with tool names). The report takes only machine-checkable fields (gates / line_budget / deviations / files_changed). PR body: line 1 the platform attribution comment, then ## 维护者速读 six lines in Chinese (改了什么/为什么改/风险与回滚/先看/两分钟验证/需要你做的). Gates: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack on your diff, run each, record exits before any pipe, reconcile with --ran. Changeset in the root .changeset/ when a published package changes. ⛔ ui/.github/** and the root ci.yml are out of bounds. Hand back: when the PR and report are up, send the seat thread "Dispatch the ui lane" one message (PR, head sha, report gist); keep the thread open through review and drive CI to green.

    Ruling (cannot be re-ruled)

    Maintainer letter A, 2026-10-25T01:46Z (ruling 6407810703; seat options 6407810621). Binds, verbatim in substance: a ?: never tombstone leaves the authoring face (ui/packages/types and any mirrored .d.ts) in the first release that follows the spec major in which the retirement it names has its ADR-0087 conversion expire: one major after the spec retirement, the window the spec itself runs, never a longer one. The remedy JSDoc ships for exactly that window. The changeset that drops a tombstone is minor with a Breaking note naming the key and the remedy. How a tombstone whose spec retirement predates ADR-0087 is counted is written in the ADR. Not taken: B (immediate removal), C (no rule). ⛔ No sweep in this card.

    PM mechanism assumptions (measure on origin/main 9dec0545; disproof welcome)

    • The governing window text is ADR-0087 (docs/adr/0087-metadata-protocol-upgrade-contract.md, the one-major conversion window and expiry; the ruling cites :143–147 and :382, re-locate the lines). The new ADR cites it, it does not restate or change it.
    • Registry: AGENTS.md Prime Directive 13 says one registry per repository, and docs/adr/README.md says ui/docs/adr/ is the imported ObjectUI sequence "kept in place". So the new record goes in the ROOT docs/adr/ at the next free number (0144 is taken by open PR docs(adr): ADR-0144 multi-currency — record currency, dated rates, write-time home projection; dated note on ADR-0104 #27239; re-check open PRs before you number), and pnpm adr:index regenerates the README. If you find a written rule that new ui decisions continue in ui/docs/adr/, follow it and quote it.
    • The card's counts (574 @deprecated, 640 ?: never lines) are from 2026-10-24 objectui; re-measure them on ui/packages/types/src and quote yours. Dating the tombstones is the first application batch's job, not this card's.

    Scope

    File surface: one new ADR record + the regenerated docs/adr/README.md index. The ADR states the rule, the Breaking-note changeset form, the pre-ADR-0087 counting rule, how the first application batch finds due tombstones (git log -S on a full clone), and the zod-side twin (the 16 z.never tombstones retire on the same window). ⛔ No code change, no tombstone removed. ⛔ The AGENTS.md #0.1 pointer line is NOT in this card: the ruling puts it on #25919's AGENTS PR; say so in the PR body. Stay under 300 changed lines.

    Tier and landing

    Tier H by the governed docs/adr/** path (quote dispatch-gates --tier). TIER_DEFAULT (Fable is out), effort medium. Clause-②: no, Metadata-protocol: none. No published package changes: skip-changeset. Keep the PR draft. ⛔ Request no reviewer: the seat hands the contract review to triage and asks for approvers itself after the review PASS and the seat ACCEPT (#26617).

    Opening a governed-only PR: while #26617 is open, relay pr_create auto-requests approvers on a diff that touches a governed path. Open the PR at a head whose net diff touches no governed path (commit the ADR, then a commit that reverts it), then push a re-apply commit. Record the sequence (open head, re-apply head) in the PR body. If pr_create refuses an empty net diff, stop and tell the seat thread; ⛔ do not open it any other way.

  6. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 21 · 2026-10-28T12:25Z
    Session: session_01JQwxbZeBv2y91towxasSUT (seat; implementation by card thread session session_01JQwxbYznNtcYGX8apHQPtk, mode:thread)
    Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-dhlsh7 (the card thread's harness push branch, self-reported — the measured platform exception to claude/issue-N-slug)
    Worktree: objectstack-issue-25912 in the card thread's clone
    Domain: domain:ui
    Seat: domain:ui#1 (seat post #25966)
    File surface: one new ADR record in the root docs/adr/ (next free number) + the regenerated docs/adr/README.md index; ⛔ any code, tombstone or AGENTS.md line (the #0.1 pointer rides #25919's PR per the ruling) (stop on breach; explain in the report)
    Container & model: S, mode:thread (the maintainer's word: 3 card threads per seat, 2026-10-28 10:00Z), model: TIER_DEFAULT (Tier H by docs/adr/**; ceiling tier unavailable, contract review handed to triage at review time), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (ruling execution: letter A, 6407810703)
    Thread-read: 6468844696
    Premise: holds — the ruling's governing window is ADR-0087's one-major conversion window, on origin/main 9dec0545; no sunset rule exists in either ADR registry.
    Serial constraints cleared: open PR #27239 takes ADR number 0144; the dev numbers after re-checking open PRs.
    Resume-from: none


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 25912,
      "status": "done",
      "branch": "claude/project-thread-dhlsh7",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27251",
      "session": "session_01JQwxbYznNtcYGX8apHQPtk",
      "premise_still_valid": true,
      "summary": "ADR-0145 in the root docs/adr/ records letter A (ruling 6407810703): a ui `?: never` tombstone is carried through protocol major R+1 and is due at the R+2 cut, the cut at which ADR-0087's 2026-10-26 addendum removes the spec kit; D2 reads R for spec-named, pre-ADR-0087 and ui-only retirements; D3 keeps a tombstone whose deletion would turn a refusal into a silent accept (open TS container, passthrough/strip zod container); D4 is the minor + Breaking changeset; an application section says how the first batch enumerates, dates (git log -S on full clones of this repo and objectstack-ai/objectui) and re-pins. Index regenerated. No code, no tombstone removed; the ui/AGENTS.md #0.1 pointer rides #25919.",
      "tests": "none — declares only; no tested behaviour changed, so no ablation",
      "gates": {
        "head_measured": "11b3e687 (tree equal to PR head 01db9123)",
        "commands": [
          "node scripts/check-adr-links.mjs :: exit 0",
          "node scripts/check-adr-links.mjs --self-test :: exit 0",
          "node scripts/check-closing-keyword-parity.mjs :: exit 0",
          "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0",
          "node scripts/check-comment-mask-corpus.mjs :: exit 0",
          "node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0",
          "pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0",
          "pnpm check:adr-anchors :: exit 0",
          "pnpm check:adr-index :: exit 0",
          "pnpm check:adr-symbol-anchors :: exit 0",
          "pnpm check:ci-filter-parity :: exit 0",
          "pnpm check:closed-ceremony-text :: exit 0",
          "pnpm check:cross-package-test-inputs :: exit 0",
          "pnpm check:doc-authoring :: exit 0",
          "pnpm check:driver-memory-census :: exit 0",
          "pnpm check:gitlink-declared :: exit 0",
          "pnpm check:nul-bytes :: exit 0",
          "pnpm check:pm-governed-merges :: exit 0",
          "pnpm check:pm-prior-rulings :: exit 0",
          "pnpm check:refd-timer-probe :: exit 0",
          "pnpm check:watch-hint-literal :: exit 0"
        ],
        "notes": [
          "check:doc-formula-expressions first exit 3 (prerequisite), exit 0 after turbo build of @objectstack/formula + @objectstack/lint under os-verify-lock (VERDICT command-exit 0)",
          "dispatch-gates --ran: 21 derived, 21 run, 0 NOT-MEASURED, 0 UNRUN",
          "pnpm --dir ui run check:new-line-citations: exit 0, 0 new citations",
          "CI-only: type-check lanes and Plan Test Core shards step (NOT MEASURED locally, no TS change); PR check-runs in_progress at report time"
        ]
      },
      "tier": "dispatch-gates --tier: docs/adr/** mandates the ceiling tier, effort floor xhigh; ran TIER_DEFAULT effort medium under the claim's measured quota exemption",
      "line_budget": {
        "changed_lines": 160,
        "added": 157,
        "deleted": 3,
        "cap": 300
      },
      "files_changed": [
        "docs/adr/0145-ui-deprecation-tombstones-retire-on-the-spec-window.md",
        "docs/adr/README.md"
      ],
      "pr_open_sequence": {
        "adds": "11b3e687",
        "open_head_net_empty": "98dcc57e",
        "reapply_head": "01db9123",
        "requested_reviewers_at_open": []
      },
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0 GitHub MCP calls",
      "api_writes": "2 — POST /repos/objectstack-ai/objectstack/dispatches (relay pr_create -> PR 27251, read-back 8549/8549 bytes identical); this report via post-stamped (issues/25912/comments through the relay)",
      "deviations": [
        "pnpm install --frozen-lockfile failed twice: better-sqlite3 node-gyp headers download aborted (network); gates ran on pnpm install --frozen-lockfile --ignore-scripts (exit 0)",
        "PR template: Human Minimum checklist not carried; sections follow the os-dev order (What changes / Why / Tests / Acceptance notes / Verification) per os-dev.md",
        "commit trailers are the model-free pair AGENTS.md requires; the harness attribution reminder asked for a model-named co-author (not followed, reported)"
      ],
      "premise_readings": [
        "origin/main 9dec0545, ui/packages/types/src excluding tests: 520 @deprecated tags, 675 ?: never lines (card: 574 / 640 on 2026-10-24 objectui)",
        "card's '16 z.never tombstones' does not hold: zod tombstones are spelled through zod/tombstone.zod.ts helpers (several hundred call sites); the ADR names the twin by what it mirrors, no count (ui/AGENTS.md #9)",
        "registry: no written rule continues new ui decisions in ui/docs/adr/; root docs/adr/ per PD13; 0144 held by open PR 27239, no other open PR adds a root record at or above it",
        "ui history before the ui merge is not in this repository (5 commits for ui/packages/types/src/objectql.ts); dating needs a full clone of objectstack-ai/objectui, whose @object-ui/types tags cover that era (no 17.0.0 tag; 17 starts at 17.1.0)"
      ],
      "open_questions": [
        {
          "question": "D2 runs the window for a ui-only retirement (no spec key) from the first @object-ui/types release that carried the tombstone — does the contract review accept that reading of 'the window the spec itself runs'?",
          "options": [
            "A accept as written",
            "B rule ui-only tombstones out of this record's scope"
          ],
          "recommendation": "A, because most ui tombstones name a ui-only retirement and B leaves the face growing for exactly that majority (option C by omission)"
        }
      ],
      "out_of_scope_findings": [],
      "body_amendments": []
    }
  8. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    Contributor

    Landed · seat domain:ui#1 · session_01JQwxbZeBv2y91towxasSUT · 2026-10-28T14:45Z

    PR #27251 merged as e9c88f7cfa: ADR-0145 (root docs/adr/) states ruling A's sunset rule. A ?: never tombstone on the ui authoring face leaves one major after the spec retirement it names, in step with ADR-0087's window, never longer; a deletion must leave a refusal (D3); the changeset is minor + Breaking (D4). Contract review: FAIL on 01db9123 (6470170569), PASS on d3e67407 (6471216267); seat record 6471244505.

    Follow-ups: the re-review's two non-blocking should-fixes are filed as #27291 (Tier H). The AGENTS.md #0.1 pointer rides #25919's PR, per the ruling. The first application batch is its own card, cut when a seat takes it. Fixes #25912 closed this card; pm:dispatched comes off.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:uipriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions