Repository navigation
docs(adr-0146): D8 item 3 names the whole-deployment export GET /packages/export, the per-package exports composed unchanged, the pair after its base - #29830
Conversation
…kages/export, as the per-package exports composed unchanged, the pair after its base One sentence in D8 item 3 and one dated Refs entry. No code, no schema, no other ADR. Claude-Session: https://claude.ai/code/session_01JQwxbZL4zwPNbxQsb6VsoU Co-authored-by: Claude <noreply@anthropic.com>
|
domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf Contract-review-claim: session_01JQwxbXKRzgnVvjzxaYxLUf · head 4295132 · 2026-11-03T06:37Z Face: ADR ( Generated by Claude Code |
|
domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf Contract reviewServed-tier: PR #29830 (card #29802) at Check-runs on the head at the time of this record: every non-skipped run has completed ① Derived judgments
② Semver level
③ Boundary flags
Security findings: none, and none owed by a docs-only diff. Out-of-scope findings: none reported, none found. ④ Design judgment
Against the first consumer. Against the execution plan. ADR-0146's Rollout lists the N-numbered cards of epic #28236; #28914 is not one of them and the sentence cites it as landed, deciding nothing, so no rollout row is owed and "this record declares; it implements nothing" is not strained. The sentence is consistent with item 2's "⛔ never Attempts to break it that found nothing. The error path (a package whose export cannot be assembled fails the whole read) is not claimed either way by the sentence and is the schema's rule; a D8 reader is not asking it. Disabled packages are "installed" in the registry sense and the sentence says nothing that excludes them. The bare Findings.
No must-fix. The change holds against the code it cites, the schema it mirrors, the consumer that reads the bundle, and the ADR's own conventions. Implemented-by: VERDICT: PASS Generated by Claude Code |
…Refs entry names PR #29830 Contract review should-fixes (6597286611): the pair-after-base clause holds when both are listed, and the pair of a code-registered base is exported alone, its base travelling with the code; the dated Refs entry names the PR beside the card, as the #29791 entry does. Claude-Session: https://claude.ai/code/session_01JQwxbZL4zwPNbxQsb6VsoU Co-authored-by: Claude <noreply@anthropic.com>
|
domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf Contract reviewServed-tier: Delta record on PR #29830 (card #29802), building on the PASS record 6597286611 on Check-runs on ① Derived judgments
② Semver levelUnchanged: ③ Boundary flagsNo new flag. The rework carries no os-dev-report on the card yet; the commit message names the prior record's two should-fixes as what it answers, and the tree confirms both (④). Of the prior record's five dev deviations, deviation 4 (the Refs entry not naming this PR) is now resolved in the tree; the other four stand answered as before. The new commit's trailer carries the model-free pair AGENTS.md requires ( ④ Design judgment
Against the first consumer and the execution plan. Unchanged: Attempts to break the rework that found nothing. "Exported alone" could be read in isolation as "the only entry", but the clause that follows ("that base travelling with the deployment's code and not with the bundle") fixes the sense as "without its base", and the preceding "every installed package the deployment's own code does not register" already says other packages are listed. The clause adds no second rule for the Findings. The prior record's should-fix 1 (the pair-after-base clause left the code-registered base to inference) and should-fix 2 (the Refs entry did not name this PR) are both answered in the tree. No new finding; no must-fix. Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf 维护者速读
席位核对ACCEPT ·
Generated by Claude Code |
Requested by Warren · project thread
Fixes #29802
Clause-②: no
Metadata-protocol: none
维护者速读
GET /packages/export(packages: a tenant exports its whole ontology — every installed package, its.custompair and environment customizations — as installable packages for the open runtime (os package export+ the read it calls) #28914,PR feat(runtime,client,cli): export a deployment's whole ontology as installable packages in one read (GET /packages/export, os package export) #29755 落地):它把各包自己的导出原样拼起来(每个条目恰为该包GET /packages/:id/export的答案),按 ADR-0141 D5 的启动水合顺序排列,两者都在包里时.custom配对包排在基础包之后,基础包由代码注册时配对包单独导出、基础包随代码走,自身不作任何新读取;Refs 加一条带日期的出处(docs(adr): ADR-0146 D8 names the whole-deployment export GET /packages/export (each package's own export, the pair after its base) #29802、本 PR docs(adr-0146): D8 item 3 names the whole-deployment export GET /packages/export, the per-package exports composed unchanged, the pair after its base #29830、feat(runtime,client,cli): export a deployment's whole ontology as installable packages in one read (GET /packages/export, os package export) #29755、packages: a tenant exports its whole ontology — every installed package, its.custompair and environment customizations — as installable packages for the open runtime (os package export+ the read it calls) #28914)。只改措辞,一个文件,+13/−2。docs/adr/0146-studio-designs-setup-administers-one-editor-per-item-paired-customize-package.mdD8 第 3 条(一句),其次 Refs 的 Cards 条目尾部。git diff origin/main -- docs/adr/0146-*.md,预期只有 D8 第 3 条与 Refs;pnpm check:adr-links && pnpm check:adr-symbol-anchors预期绿(两个path#symbol锚点都解析到声明处:符号锚点计数 735 → 737)。docs/adr/**):席位合同审查 PASS 并 ACCEPT 后,需要 hotlong 或 os-zhuang 的 GitHub Approve;席位落地,PR 保持 draft。What changes
One sentence in ADR-0146 D8 item 3, after the two per-package routes it already names: the whole-deployment export
GET /packages/export(#28914) composes those per-package exports unchanged — every installed package the deployment's own code does not register, each entry exactly what its ownGET /packages/:id/exportanswers, in ADR-0141 D5's hydrate order, so a.custompair comes after its base when both are listed, and the pair of a code-registered base (item 1's code package) is exported alone, that base travelling with the deployment's code and not with the bundle — and adds no reading of its own, with the two symbols anchored (packages/runtime/src/domains/packages.ts#assemblePackageExportBundle,packages/spec/src/api/package-lifecycle.zod.ts#PackageExportBundleSchema). Refs gains a dated entry naming #29802, this PR, #29755 and #28914. No code, no schema, no other ADR. The second commit answers the contract review's two should-fixes (6597286611): the pair-after-base clause now says when it holds and what happens to the pair of a code-registered base (thePackageExportBundleSchemadocblock's "a pair of acodebase is still exported"), and the Refs entry names this PR beside the card, as the #29791 entry does.Item 3 rather than a Refs-only entry: the card's reach is a reader of D8 learning which export carries a paired override, and item 3 is where the two per-package routes are named; a Refs entry is provenance, not where that reader looks. The sentence states what the code already does and decides nothing new, so there is no
**Amended in place**entry on the Status line — the file's own convention (kept by #29791) reserves that for rulings that change a decision; the dated Refs entry is the provenance, in the shape #29791's entry set.Why
Measured on
origin/mainb0ef25f5before writing:assemblePackageExportBundle(packages/runtime/src/domains/packages.ts, declaration at line 3616, docblock from line 3598): skips every registry row whosesourceiscode, lists the rest once, orders them withorderHydrationBatch(packages/core/src/hydration-order.ts, ADR-0141 D5's one sorter) overdeclaredDependencyIds(row.manifest)(packages/core/src/artifact-packages.ts), and pushes, per id, the answer ofassemblePackageManifest(deps, id, registry, context)— the same call with the same arguments the per-package routeGET /packages/:id/exportserves at line 2599 (deps.success(manifest)). Nothing is assembled, cleaned or redacted a second way; a package whose export cannot be assembled fails the whole read.PackageExportBundleSchema(packages/spec/src/api/package-lifecycle.zod.ts, line 332): itspackagesdescription says each entry is "asGET /packages/:id/exportanswers it, dependencies first … so a.custompair comes after its base"; the docblock's One producer section says the same.manifest.dependencies, so the sorter places the pair after its base whenever both are listed; ADR-0141 D5's Decided paragraph is the hydrate order the sorter implements.GET /packages/X.custom/exportandGET /packages/X/export; nothing in the record contradicts the bundle, and nothing names it. The premise holds.Tests
Docs-only; no test changes and no ablation (a documentation edit is not ablated). The derived gate families ran locally at the pushed head (Verification).
Acceptance notes
skip-changeset:docs/adr/**publishes nothing (the fast lane of the changeset rule); the label ridespr_create.pnpm lintis the repo-wide eslint scan CI owns; the diff has no lintable source, and the docs/adr families the derivation names ran locally instead (Verification).Verification
Head
65f1b7ceonorigin/mainb0ef25f5: two commits (the second answers the contract review's should-fixes), one file, +13/−2. The same 21 derived gates ran at both heads,42951327and65f1b7ce, with the same verdicts.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 21 commands (13 by path, 8 whole-tree). All 21 ran from the worktree at each head with the exit code captured before any pipe: 21 exit 0, 0 non-zero, both times.check:doc-formula-expressions:@objectstack/formulaand@objectstack/lintbuilt under the verify lock —os-verify-lock: VERDICT command-exit 0 · held the lock 163sat the first head, a turbo cache hit (4 cached, lock held 6 s) at the second.node scripts/pm/dispatch-gates.mjs --ran ran-all.list --repo objectstack-ai/objectstack:Run reconciliation — 21 derived, 21 run, 0 NOT-MEASURED, 0 UNRUN.(exit 0), at both heads.check:adr-symbol-anchorscounts:origin/mainb0ef25f5answers 3050 anchors, 735 symbol (708 declaration); each head answers 3052 anchors, 737 symbol (710 declaration) — the two newpath#symbolanchors resolve at their declaration sites.--tier: the mandated tier fordocs/adr/**holds (recorded on the claim's Container & model line); changed lines 15 vs the human-merge threshold 3000: under.Exit 0: check-adr-links (+ --self-test), check-closing-keyword-parity (+ --self-test), check-comment-mask-corpus, ci/plan-test-core-shards --self-test, lint check:doc-formula-expressions, check:adr-anchors, check:adr-index, check:adr-symbol-anchors, check:ci-filter-parity, check:closed-ceremony-text, 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.
Human Minimum
packages/specholds no runtime logic. (untouched)pnpm lintpasses. (the CI-owned repo scan; the derived docs/adr families ran locally)main, one pull request.skip-changeset; both lines above)packages/spectouched: its generated artifacts are regenerated and committed. (untouched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code