Skip to content

docs(adr): ADR-0050 status line reads Accepted (letter A′ on #27032); regenerate the index - #30986

Merged
os-zhuang merged 1 commit into
mainfrom
claude/project-thread-uz8dqb
Nov 6, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/project-thread-uz8dqb

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Tesla · project thread

Fixes #26553

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

docs/adr/0050-form-layout-vs-presentation.md, line 3 only. The status line read:

**Status**: Proposed (2026-06-15) · **Amended** (2026-10-20, letter B′ on #24692, ruling record 6281834942, maintainer 「同意」) — the list add-record open mode is no longer declared on addRecord; see the note under Decision 2.

It now opens with the ruled sentence, verbatim from the pointer on the card (issue 26553, comment 6464456446), and keeps the amendment text after it:

**Status**: Accepted (2026-10-28, letter A′ on #27032, ruling record 6464210455) — cutover card #27155 (spec) + #27159 (renderer); the 2026-10-20 amendment stands · **Amended** (2026-10-20, letter B′ on #24692, ruling record 6281834942, maintainer 「同意」) — the list add-record open mode is no longer declared on addRecord; see the note under Decision 2.

The amendment's links (#24692 and its ruling record) are kept, not dropped: the ruled sentence says the amendment stands, and the links are the only place the record names where that amendment was decided. Dropping them would leave a standing amendment nobody can trace (Prime Directive 13). No other line of the record asserts a Proposed state: a case-insensitive grep for proposed over the file hits line 3 alone before the edit and nothing after it.

docs/adr/README.md is regenerated by node scripts/adr-index.mjs (pnpm adr:index), never hand-edited: the ADR-0050 row moves from Proposed to Accepted, its date column reads the first ISO date of the new status value (2026-10-28), and the summary counts move to Accepted 131 / Proposed 4. The generator reads Accepted as the keyword because it is the earliest vocabulary entry in the value; the bold Amended sits well past the 80-character keyword window and would lose on position anyway.

No changeset. docs/adr/** ships in no released package (no files[] under packages/ names docs/adr), so the PR publishes nothing and carries skip-changeset, declared on the create.

Tests

All readings on head ac204886 in a fresh worktree off origin/main 1aeeafd9.

  • node scripts/adr-index.mjs wrote docs/adr/README.md (237 lines); node scripts/adr-index.mjs --check exit 0: adr-index: OK — docs/adr/README.md is current and every record parsed.
  • pnpm check:adr-index exit 0 (part of the derived gates below).
  • git diff --shortstat origin/main...HEAD: 2 files changed, 4 insertions, 4 deletions.
  • The edit was applied by a script asserting exactly one hit of the old line at line 3 and exactly one hit of the new line afterwards (old hits 0, new hits 1).

Acceptance notes

Verification

Derived gates: 21 derived, 21 run, 0 NOT MEASURED, 0 UNRUN (head ac20488)

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 21 commands from the committed change set (2 paths vs merge-base 1aeeafd9; changed lines 8, under the 3000 human-merge threshold). Each ran in the foreground with stdin closed, its exit code landed on disk before any pipe; every one exited 0:

  • node scripts/check-adr-links.mjs and its --self-test
  • node scripts/check-closing-keyword-parity.mjs and its --self-test
  • node scripts/check-comment-mask-corpus.mjs
  • node scripts/ci/plan-test-core-shards.mjs --self-test
  • pnpm --filter @objectstack/lint run check:doc-formula-expressions (the lint closure was built first under scripts/pm/os-verify-lock.sh: VERDICT command-exit 0, 96 s held)
  • pnpm check:adr-anchors, pnpm check:adr-index, pnpm check:adr-symbol-anchors
  • pnpm check:ci-filter-parity, pnpm check:closed-ceremony-text, pnpm check:cross-package-test-inputs
  • pnpm check:doc-authoring, pnpm check:driver-memory-census, pnpm check:gitlink-declared
  • pnpm check:nul-bytes, pnpm check:pm-governed-merges, pnpm check:pm-prior-rulings
  • pnpm check:refd-timer-probe, pnpm check:watch-hint-literal

Reconciliation: dispatch-gates.mjs --repo objectstack-ai/objectstack --ran printed 21 derived famil(ies) accounted for — 21 run, 0 NOT-MEASURED. Tier: dispatch-gates --tier names CONTRACT_REVIEW_TIER as mandatory from docs/adr/**; check-governed-merges.mjs --test lists both paths as governed.

Tier H by path (docs/adr/**). It stays a draft: the spec seat runs the contract-tier review, then hands the PR to the approver; no seat readies, queues or arms it.


Generated by Claude Code

… ruling; regenerate the index

The record's status line moves from Proposed to Accepted with the ruling
letter, record id and cutover cards named, and keeps the 2026-10-20
amendment text after the ruled sentence. docs/adr/README.md is
regenerated by scripts/adr-index.mjs (Proposed 5 -> 4, Accepted 130 -> 131).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibw3DoQ7bgioFtvcrw7
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Nov 6, 2026
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Nov 6, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:spec#1 · os-tesla · session_01L9qibzzqHZdAVqgBAvxXKB

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: ac204886c44d6e03cc7bb775094e5145ae0a58c7
Local-runs: none
Scope: docs/adr/0050-form-layout-vs-presentation.md, docs/adr/README.md + scripts/adr-index.mjs (the generator the README claims to be the output of), packages/spec/src/ui/view.zod.ts (FormViewSchema.type, the ADR's first consumer), ui/packages/plugin-form/src/ObjectForm.tsx + ObjectFormContainer.tsx (the renderer half), .github/workflows/lint.yml + package.json (check:adr-index is report-only), card #26553 comments 6458958232 / 6464456446 / 6688244732 / 6688746866, ruling 6464210455 on #27032, cards #27155 / #27159 and their PRs #27229 / #27305

① Derived judgments

  • Accept set: unchanged — right. The net diff against merge-base 1aeeafd9 is two files under docs/adr/** (+4/-4); no packages/** path, no exports map, no .d.ts. Clause-②: no on the PR body is right.
  • Governed register (ADR surface): ADR-0050 moves Proposed → Accepted — right. The maintainer's ruling 6464210455 on [Decision] ADR-0050 form layout vs presentation — the maintainer's own call: schedule the spec-major narrowing of FormView.type to layout only, defer it, or withdraw the record (set aside from ADR batch 2 on #26553) #27032 (A′, 「其他同意」, 2026-10-28) accepts the record; the director seat's pointer 6464456446 on docs(adr): the 19 stale Proposed records (status date before 2026-07-26) are ruled by the maintainer in four batches of five — carrier for the rulings and the status-line PRs #26553 prescribes the exact sentence for this closeout PR. Line 3 of the record opens with that sentence verbatim: **Status**: Accepted (2026-10-28, letter A′ on #27032, ruling record 6464210455) — cutover card #27155 (spec) + #27159 (renderer); the 2026-10-20 amendment stands.
  • Index keyword and counts — right. scripts/adr-index.mjs statusKeywordOf strips the markdown emphasis, backtick and blockquote characters, then takes the vocabulary entry with the lowest index within KEYWORD_WINDOW = 80; Accepted sits at index 0, and the retained Amended sits past index 150, outside the window and later anyway. Summary table Proposed 5 → 4, Accepted 130 → 131, Total 149 unchanged: exactly one record moved keyword and no other record's status line differs between the merge-base and head, nor between the merge-base and main acd190b2 (empty git diff on docs/adr/*.md status lines and on README.md).
  • Index row — right, derived by hand from the generator. No **Date**/Decided header field in the first 40 lines, so date falls back to the first ISO date in the status value: 2026-10-28. statusCell drops the keyword, unwraps the leading parenthesis and cuts the detail with cell(detail, 64) = 63 chars + …; the 63-char prefix of 2026-10-28, letter A′ on #27032, ruling record 6464210455 — cutover … ends at — cut, giving the committed cell Accepted — 2026-10-28, letter A′ on #27032, ruling record 6464210455 — cut…. Supersedes/Superseded-by stay — (no such fields, no superseded word in the value). Line 123 of the head README is byte-for-byte that row.
  • CI reading of the same fact. pnpm check:adr-index is --self-test && --report and never reds (lint.yml L697–700, continue-on-error: true), so its green is not currency evidence on its own; but the step ADR index is current (report-only …) in check-run Lint · repo & tooling gates (127983466962) completed with zero ::warning annotations on this head (the only annotation is the ubuntu-latest notice), which is the --report verdict that the committed index equals the rendering and every record parsed. The dev's --check exit 0 is the PR body's account and is not relied on.
  • No other surface is implied. The record's Decision / Migration / Consequences text, the Consumers line and the 2026-10-20 note under Decision 2 are untouched.

② Semver level

skip-changeset label is on the PR (documentation, size/xs, skip-changeset); Check Changeset check-run success. docs/adr/** ships in no released package, so nothing is published and no changeset is owed — matches the diff. Clause-②: no — right; this is not the narrowing face (the narrowing itself shipped under #27229 / #27305 with their own declarations).

③ Boundary flags

④ Design judgment

docs/adr/0050-form-layout-vs-presentation.md against its first consumer and its execution plan.

docs/adr/README.md against its generator. Generated output, judged only for being the generator's: the three hunks (two summary counts, one row) are exactly what renderIndex produces for the one changed record (derivation in ①), the banner and every other row are untouched, and the head's report-only CI step raised no stale-index warning. Holds.

No must-fix.

Implemented-by: claude/project-thread-uz8dqb
Reviewed-by: session_01L9qibzzqHZdAVqgBAvxXKB

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:spec#1 · os-tesla · session_01L9qibzzqHZdAVqgBAvxXKB

维护者速读

席位意见:可以落地,待授权批准。

席位核对

ACCEPT · seat domain:spec#1 · head ac204886 · 2026-11-06T15:47Z

  1. Shape: Fixes #26553, draft, base main, 2 files (docs/adr/0050-form-layout-vs-presentation.md :3, regenerated docs/adr/README.md), +4/−4. Label skip-changeset, Clause-②: no / Metadata-protocol: none, matching claim 6688244732.
  2. Ruling: pointer 6464456446 (ADR-0050 ruled A′ on [Decision] ADR-0050 form layout vs presentation — the maintainer's own call: schedule the spec-major narrowing of FormView.type to layout only, defer it, or withdraw the record (set aside from ADR batch 2 on #26553) #27032, ruling 6464210455, maintainer 「其他同意」). The ruled sentence comes first verbatim. The dev kept the 2026-10-20 amendment clause after it; the ruled sentence says the amendment stands, so the seat accepts this.
  3. Contract review: at CONTRACT_REVIEW_TIER by an isolated reviewer. Scope = hits (both ADR files) plus scripts/adr-index.mjs, view.zod.ts FormViewSchema.type, and the plugin-form renderer. PASS 6688923854 on ac204886, no must-fix. Its findings:
  4. Gates / check-runs: dev: 21 of 21 derived gates exit 0, --ran reconciled (report 6688746866). On head ac204886: 46 runs, 26 success, 20 skipped, 0 failed, 0 running (docs-only diff, path filters skip the code lanes); mergeable_state clean. check-governed-merges --pr 30986: Tier H (docs/adr/** ×2), 8 changed lines.
  5. Accepted deviations: amendment clause kept after the ruled sentence (see 2). Neighbour PRs docs(adr): amend ADR-0142 D5 — an organization authors its own assignment rules, evaluated before the declared ones; answer merge question 11 #30828, ci(release): start the next snapshot preflight on a daily schedule, stopping at the maintainer approval (ADR-0125 amendment) #30862, docs(adr): ADR-0146 amended in place — an upgrade plan may report a .custom override that hides a vendor change, as advice only #30899 and feat(spec,security): a controlled_by_parent object may declare an optional master #30940 touch other docs/adr records; none touches README.md. The later lander re-runs pnpm adr:index after merging main.
  6. Landing: Tier H: pm:awaiting-merge + review requested from the approvers. ⛔ No ready, queue or auto-merge before an APPROVED review from a GOVERNED_APPROVERS account; after it, the seat lands.

@objectstack-fleet objectstack-fleet Bot added the pm:awaiting-merge PR only: landing waits on the maintainer's own review and merge (SKILL.md 复核 ②); never on an issue label Nov 6, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review November 6, 2026 16:11
@os-zhuang
os-zhuang added this pull request to the merge queue Nov 6, 2026
Merged via the queue into main with commit 0b15730 Nov 6, 2026
52 checks passed
@os-zhuang
os-zhuang deleted the claude/project-thread-uz8dqb branch November 6, 2026 17:11
@objectstack-fleet objectstack-fleet Bot removed the pm:awaiting-merge PR only: landing waits on the maintainer's own review and merge (SKILL.md 复核 ②); never on an issue label Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants