Repository navigation
docs(adr): ADR-0005 appendix (c) — the persisted document is the parsed body once every round-trip key is declared - #20777
Conversation
…d body once every round-trip key is declared Amends the persisted-document bullet of "Addendum 2026-05-16 (c)" to the end state of ruling 甲 on #20051, with a dated note (2026-09-30) naming the stage (ii) spec symbols that declare each round-trip key of a stored view row, and stating that the storage switch (stage iv) has not landed. The status line records the amendment (Prime Directive #13). Claude-Session: https://claude.ai/code/session_01KTZmMfzVzjNvyaLyQ8mHvg Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Inputs read: card #20457 (body + all 3 comments: unlock 5875792846, claim 5903925634, Check-runs on ① Derived judgmentsSurface. The net diff against Does the amended text say what the ruling orders? Ruling 甲 item 1 (iii), verbatim: 「the appendix says the persisted document is the parsed body once every round-trip key is declared, with a dated note pointing at the spec symbols」. The bullet at Does it claim the runtime already does what it does not? No. The bullet ends " Every factual statement in the amendment, checked at the head's base:
Anchors. The note's new No other doc echoes the superseded bullet ( ② Semver levelLabel ③ Boundary flagsDev report 5904124008 ( Deviations, each answered:
Out-of-scope findings, each verified and answered (carrier: stage (iv) on #20051, which is
Tier H: Implemented-by: VERDICT: PASS |
维护者速读(终稿)— PR #20777 · ADR-0005 附录 (c) 修订(#20457,#20051 裁决甲第 iii 步)skills 席 1 · 改了什么:只改
为什么改:这是裁决甲(#20051,「开始总监决裁」)的第 (iii) 步。第 (ii) 步(#20456 / PR #20474)已把控制台会写回、再读回的键全部声明进 spec,附录 (c) 可以照实改写。 风险与代价(含回滚):纯文档,不动代码、测试或任何发布包( 席位意见:ACCEPT,建议批准。
你要做的:在本 PR 上给 APPROVED。批准后由本席位过落地前检,翻 ready 并入队。 Generated by Claude Code |
Fixes #20457
Part of #20051 (stage (iii) of ruling 甲 there; stage (iv), the storage switch, stays on that card).
Clause-②: no
What this changes
One file,
docs/adr/0005-metadata-customization-overlay.md:parsed.data) once every round-trip key is declared. The bullet itself says the rule is ruled but not yet in force.options.KINDwith the strict per-kind schema and persist the PARSED body — the door half of objectui#10380 #20051, comment 5856781584, maintainer 「开始总监决裁」;view: the recordVIEW_CONSOLE_ROUND_TRIP_KEYSand its closure test;ViewItemWireSchemaandVIEW_METADATA_MEMBERS.listOverlay, viaviewSwitcherRowStateFields,viewItemWireFields,listOverlayRoundTripFields,viewItemBaseShapeandflattenedViewOverlayFields;objectNametoobject, and the others);Amended (2026-09-30, …)entry. Prime Directive [WIP] Add Chinese version of the documentation #13 asks for an amended status line when a recorded decision is reversed, and every earlier decision-changing amendment of this ADR is on that line. This is the one line outside the bullet-plus-note surface the claim names. Same file.⛔ No persistence code, no GUARD pins, nothing under
packages/. Noscripts/adr-anchors/file either: no gate asked for one (all green below). The ADR's new code citations are symbol anchors thatcheck-adr-symbol-anchorsresolves.Declared is not yet enforced: how the text handles that
On
mainthe runtime still storesrequest.item. The verbatim-save pins are still there (protocol-meta.test.ts"preserves Studio-only auxiliary fields verbatim (not stripped)",protocol.graft-folded-form-sections.test.ts"GUARD: Studio-only round-trip keys still survive the save"). So the ADR states the decision and the status next to each other:ViewItemWireSchema's top-leveloptions, and first measure the production count of stored rows that carry undeclared top-level keys.This follows the PM's working assumption. It also matches the repo convention: ADR-0053's 2026-09-30 amendment carries an "Interim state" item in the same way.
Evidence (head
c8ee5833)node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands, with no paths: the same 19 as the dispatch. Reconciled with--ran: "19 derived famil(ies) accounted for — 19 run, 0 NOT-MEASURED (a DERIVED zero — all 19 recorded an exit code and none of them is 3)".c8ee5833:check-adr-links(+--self-test),check-adr-symbol-anchors(+--self-test),check-ci-filter-parity,check-closing-keyword-parity(+--self-test),check-comment-mask-corpus,check:doc-formula-expressions,check:adr-anchors,check:cross-package-test-inputs,check:doc-authoring,check:driver-memory-census,check:gitlink-declared,check:nul-bytes,check:pm-governed-merges,check:pm-prior-rulings,check:refd-timer-probe,check:watch-hint-literal.check-adr-symbol-anchorsprinted: "2156 anchors across 140 records resolve — 320 symbol (294 declaration, 26 literal), 1809 file-level, 27 cross-repo, 6 exempt, 9 continuation".check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET:@objectstack/formulaand@objectstack/lintwere unbuilt in the fresh worktree). That run measured nothing. I built both through the verify lock (a turbo cache hit, 4 of 4) and reran it: exit 0.scripts/ablation-replace.mjsto break one new anchor, renaming#listOverlayRoundTripFieldsto#listOverlayRoundTripFieldz(anchor count 1 to 0, bloba893abb2to50270267).#listOverlayRoundTripFieldz" at the note's line.git checkout HEAD --. Its blob was back toa893abb2andgit diff HEADwas empty.docs/adr/**publishes nothing (skip-changeset).Acceptance notes
These are observations, not filed. Their carrier is stage (iv) on #20051.
The verbatim-save pin population is wider than the two the ruling read. Three tests assert the verbatim save by name:
packages/objectql/src/protocol-meta.test.ts: "preserves Studio-only auxiliary fields verbatim (not stripped)";packages/metadata-protocol/src/protocol.graft-folded-form-sections.test.ts: "GUARD: Studio-only round-trip keys still survive the save";packages/metadata-protocol/src/protocol.graft-normalized-operators.test.ts: "keeps Studio-only auxiliary fields aparsed.dataswap would strip".At least one more depends on the verbatim save:
protocol.runtime-authoring-gate.test.ts, "the door persists the authored body verbatim". Two of the pins need re-judging, not just flipping. The graft-folded GUARD writesisPinned/isDefault/sortOrderonto a form overlay, andVIEW_CONSOLE_ROUND_TRIP_KEYSrecords that the console never writes them there. The protocol-meta pin writesobjectName, which the census maps toobject.Per-type scope of the switch.
resolveOverlaySchemavalidates every type with a registered schema, and each one is stored as sent today. The ruling's end state names "a saved view", and the round-trip census coveredviewonly. The amended bullet states the rule with its condition ("once every round-trip key is declared") and claims a satisfied condition forviewonly. Whether the stage (iv) switch coversdashboardand the other validated types is stage (iv)'s question.Code comments that cite this decision. The
resolveOverlaySchemadocblock and thesaveMetaItemcomment inpackages/metadata-protocol/src/protocol.ts, and the pins, cite "ADR-0005 §Validation", a heading this ADR does not have. They describe today's behaviour, which stays true until stage (iv). Noscripts/adr-anchors/entry tiesprotocol.tsto ADR-0005. Stage (iv) implements the decision in code, so that is where the anchor belongs (Prime Directive [WIP] Add Chinese version of the documentation #13).维护者速读(草稿)
改了什么:只改了 ADR-0005 这一份文档。
options.KINDwith the strict per-kind schema and persist the PARSED body — the door half of objectui#10380 #20051 的裁决甲);原文一字不改地引用,标为"已被取代";逐键列出声明这些键的 spec 符号;现状说明。为什么改:这是裁决甲的第 (iii) 步。第 (ii) 步已经把控制台会写回、再读回的键都声明进了 spec:置顶、排序、可见性分组、默认视图、列状态,以及设置覆盖标记。所以附录 (c) 现在可以照实写。
风险与代价(含回滚):
席位意见:
你要做的:审阅后在本 PR 上给 APPROVED。这是 Tier H 治理面
docs/adr/**,由席位落地。存储切换本身(第 iv 步)仍挂在 #20051 上,不在本 PR 里。Generated by Claude Code