Repository navigation
docs(adr-0131): D6's second install mode is spelled unmanaged — a dated spelling note executing ruling B on #15213 - #22845
Merged
objectstack-fleet[bot] merged 3 commits intoOct 11, 2026
Conversation
…ated spelling note executing ruling B on #15213 The `template` spelling of the second install mode becomes `unmanaged` at the positions the ruling names: D2's install-mode sentence, D6's "Two install modes" paragraph, its restatement in §6, and §8's C12 row. One dated note at D6 records the ruling and its reasons. Every other mention of "template" is kept as written; D6's substance is unchanged. Claude-Session: https://claude.ai/code/session_016njDy8ozy9B9Ns5Y8kAWEK Co-authored-by: Claude <noreply@anthropic.com>
…r0131-unmanaged-note
…tainer's decision B on the spelling note card The D6 bullet label "Template." becomes "Unmanaged."; its body is kept. The spelling note now names the bullet label among the sites that read `unmanaged`, cites decision record 6109891008 beside ruling B, and drops the bullet from its list of kept prose. No other mention moves. Claude-Session: https://claude.ai/code/session_016njDy8ozy9B9Ns5Y8kAWEK Co-authored-by: Claude <noreply@anthropic.com>
os-zhuang
approved these changes
Oct 11, 2026
os-zhuang
marked this pull request as ready for review
October 11, 2026 14:33
objectstack-fleet
Bot
deleted the
claude/issue-22831-adr0131-unmanaged-note
branch
October 11, 2026 14:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #22831
Clause-②: no (an ADR text note; no schema, export or accept set moves)
This PR carries out step 1 of the maintainer's ruling B on #15213 (director record
6108509158, batch #317 item 3, 「同意」 2026-10-11T11:24Z). In ADR-0131, the second install mode is now spelledunmanaged. The change is dated and points at the ruling, and the rest of the original prose is untouched. No decision changes, and no code changes.Patch round 1 carries out the maintainer's decision B on this PR's open question (record
6109891008on #22831, verbatim 「B,:412 一起改」). D6's bullet label now reads Unmanaged. as well. That label was:412at the previous head and is:414now, because the note grew by two lines.Tier H (Prime Directive #14).
docs/adr/**is a governed surface, so this PR lands only after the maintainer's APPROVED review on the patched head. The seat handles the review request.check-governed-merges.mjs --teston this file list answers landing tier H.What the diff does
One file changes:
docs/adr/0131-total-organization-ownership-no-null-organization-id.md, +20 / -5 (25 changed lines). Line numbers are at this PR's head,3d9b4f245e.:269:378templateunmanaged6109891008):414:855templateunmanaged:942The PR also adds one dated paragraph at D6,
:380-:393. It sits directly under the "Two install modes" paragraph and above that paragraph's two bullets, and its lead is Spelling note (2026-10-11, #22831). The note says five things:unmanaged. It cites ruling B on feat(spec,objectql,cli): the template install mode — a package copied once into the environment ledger, fully editable, refused on shared-database multi-tenant postures (ADR-0131 D6) #15213 (record6108509158, 「同意」, 2026-10-11) and, for the bullet label, the maintainer's decision B on docs(adr-0131): D6's second install mode is spelledunmanaged. A dated Tier H note executing ruling B on #15213 (thetemplatespelling at D6, §6 Q5 and the C12 row) #22831 (record6109891008, 2026-10-11).template. The note names the five places that now readunmanaged: the paragraph, the Unmanaged bullet label, D2's sentence, §6's restatement and the C12 row.unmanagedis the industry's name for this mode: Salesforce's unmanaged packages and Power Platform's unmanaged solutions. ADR-0086's comparison table already names both.managedandunmanagedare the two states of one property.templatealready names other things in the code:TemplateManifestSchema, theemail_templatetype and theos inittemplates.group/isolatedall stand.Form. The note follows this record's own convention for a dated note: a bold lead that names the date and the card, with ruling records cited as "record" plus the comment id. Examples are Execution-plan note (2026-10-10, #22619). at D14 (landed by #22650) and Read against the code on 2026-10-10 at D2. ADR-0026's "Note (2026-09-07, #16140)" is a cross-ADR precedent for a spelling note in particular.
The status line is not touched. The 2026-10-10 notes did not touch it either; only the 2026-09-17 amendment, which changed a decision, did.
How I read the positions
"D6". The card maps it to
:268-:270. That sentence sits at the end of D2, but it states D6's two install modes and cites "(D6)". The ruling's own premise list names:376,:839and the C12 row (base numbering). The two readings together cover the same four sites, and this PR changes all four. The bullet label is the fifth site, added by decision B on docs(adr-0131): D6's second install mode is spelledunmanaged. A dated Tier H note executing ruling B on #15213 (thetemplatespelling at D6, §6 Q5 and the C12 row) #22831."§6 Q5" and its restatement: yes, I read the restatement as part of §6 Q5's spelling. I measured this on PR docs(adr): ADR-0131 — organization ownership is total: no NULL organization_id; declared metadata stays in code; rows only when an organization authored them (Refs #13564) #14976's history (
refs/pull/14976/head, fetched into a scratch ref and deleted afterwards):47db4e9f71throughde84c708bd.5d55c80100dropped the Staging question.0be9039d4a) it was folded into §6's "accepted as proposed" paragraph, now:852-:858.So both lines are Q5's answer: one is in D6, the other in §6.
The C12 row is
:942at the head; it was:927at the base.Every changed site spells the install-mode value. None of them is the e-mail or notification "template" noun that D10, §6 Q1 and C4 use.
Mentions of "template" kept as written
Each install-mode mention below is kept as written. The reason is the same for all of them unless a line says otherwise: they are history, the ruling keeps the original prose untouched, and the D6 note names the mode they mean. Line numbers are at the head.
:14-:16: the maintainer's verbatim ruling (「…有一种是模版形式直接进库…但是单库多租户禁止安装这种模版软件包…」). This is a quotation, so it is never edited.:86,:88-:89(TL;DR): "by installing a template package"; "Template packages are refused on shared-DB multi-tenant deployments".:221(§1.7): "or install as a template" (C11's documentation promise).:284(D3): "(Studio, template package; ...)".:418(D6, inside the now-Unmanaged bullet's body): "a template import would hand every tenant an editable shared schema". Decision B moves the label only; the body is kept.:449and:455-:456(D6): "template install wrote intosys_metadata"; "template content environment-owned".:634-:635(D12 item 10): "Template packages are refused; managed only ... a template import". This is a list label about packages, and decision B leaves it as it is.:697(D14): "D6's template mode".:735(D14's execution-plan note, item 3, itself dated 2026-10-10): "D6's template install mode".:807(§4): "template-installed templates".:816(§4): "The template install mode is new work".:846(§5): "a template install that forfeits upgrades".The e-mail and notification "template" noun is untouched because it is not an install mode. It appears at
:9,:11, §1.4,:242,:251,:274, D6'semail_templateoverlay rows and "Templates." paragraph, D10, D12 item 11, §6 Q1, C4 and the §9 file paths.Gates (run at
3d9b4f245e, the patched head)origin/mainmoved 4 commits past the merge base31b5a5f7f5(to12b9daf749), and none of them touchesdocs/adr/. Per the patch order, I did not merge.I re-derived
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackwith no paths at the head and got the same 19 commands as at7f0c390035and115ec7061e. All 19 exited 0. Reconciliation:dispatch-gates --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).The derivation printed a STALE TREE warning: 3 gate files changed on
origin/mainsince the base (scripts/check-route-envelope.mjs,scripts/engine-double-contract.pinned.json,scripts/pm/os-regen-merge.sh). None of the three is among the 19, and none of their changes namesdocs/adr/. CI runs the current copies on the merge ref.node scripts/check-adr-links.mjs(+--self-test)726 relative link destination(s) under docs/adr/ resolvenode scripts/check-adr-symbol-anchors.mjs(+--self-test)2309 anchors across 142 records resolve ... 0 line anchors survivepnpm check:adr-anchorsOK (66 anchored file(s), every governing ADR still referenced; 136 decision number(s) ...)pnpm check:doc-authoring18140 customer-facing string(s) across 1349 spec sources cleanpnpm check:nul-bytesOK (scanned 10879 text file(s) ... no raw ASCII control bytes)pnpm --filter @objectstack/lint run check:doc-formula-expressions22 record-scoped formula example(s) across 472 files / 1388 TS blocks judged cleannode scripts/check-closing-keyword-parity.mjs(+--self-test)OK (3 parsers agree on all 9 keywords ...)node scripts/check-comment-mask-corpus.mjs8779 files, 0 disagree, 0 unparseablenode scripts/check-ci-filter-parity.mjs,pnpm check:cross-package-test-inputs,check:driver-memory-census,check:gitlink-declared,check:pm-governed-merges,check:pm-prior-rulings,check:refd-timer-probe,check:watch-hint-literal@objectstack/formulaand@objectstack/lintwere rebuilt under the verify lock before the run (VERDICT command-exit 0, a full turbo cache hit), socheck:doc-formula-expressionsmeasured rather than refusing. In the first round, that gate's first run exited 3 (PREREQUISITE NOT MET) before the build; that run measured nothing and is not counted.Two more readings, unchanged by the patch:
check-issue-citationsdoes not judge this file.docs/adr/**is aDEFERRED_SURFACESrow, so the gate reads 0 files. The numbers the note cites, docs(adr-0131): D6's second install mode is spelledunmanaged. A dated Tier H note executing ruling B on #15213 (thetemplatespelling at D6, §6 Q5 and the C12 row) #22831 and feat(spec,objectql,cli): the template install mode — a package copied once into the environment ledger, fully editable, refused on shared-database multi-tenant postures (ADR-0131 D6) #15213, both answer as open issues, not pull requests.pnpm lintis not owed. ESLint's own--format jsonon the changed file answers"File ignored because no matching configuration was supplied."(1 file, 0 errors). Everyfiles:block ineslint.config.mjsmatches only JS and TS extensions.Changeset
This PR publishes nothing:
docs/adr/**ships in no package'sfiles[]. The repo's route for that is theskip-changesetlabel, and the seat has applied it.Acceptance notes
Open question answered. "Should D6's bullet label 'Template.' move too?" The maintainer chose B, recorded in
6109891008on docs(adr-0131): D6's second install mode is spelledunmanaged. A dated Tier H note executing ruling B on #15213 (thetemplatespelling at D6, §6 Q5 and the C12 row) #22831: 「B,:412 一起改」. It is carried out at:414. The note now names the bullet label among the sites that readunmanaged, cites6109891008beside ruling B, and no longer lists the bullet as kept prose.Mechanism checks (base
1eff3224d7, then head3d9b4f245e):templatedrops from 2 install-mode sites to 0. The 2 code-font hits at the head are both inside the note, which quotes the old spelling.:86, which is kept.unmanaged: 1, then 9.6108509158: 0, then 1. Record6109891008: 0, then 1.scripts/adr-anchors/quotes any of these lines.Mentions outside this file, not changed because they are outside the file surface:
docs/adr/0126-packaged-metadata-customization-model.md, line 3) says "template = copied once, fully editable ..." in plain prose.packages/spec/src/migrations/entries/semantic/18.meta-doors-organization-scope-retired.ts(line 30) says "by a template install" in its description string.Neither spells the manifest value. carrier: feat(spec,objectql,cli): the template install mode — a package copied once into the environment ledger, fully editable, refused on shared-database multi-tenant postures (ADR-0131 D6) #15213's S2, which writes
unmanagedinto the spec and its docs. Noted, not filed.维护者速读(草稿)
改了什么:
template改成了unmanaged。改了这五处:unmanaged:managed和unmanaged是同一个属性的两种状态;template在代码里已经指别的东西(脚手架清单、邮件模板、os init模板)。为什么改:
installModes: ['managed', 'template'],和 S1、S2 按裁决写的unmanaged对不上。风险与代价(含回滚):纯文档改动,不影响运行时,也不影响发版。回滚只需 revert 这一个 PR。
席位意见:
你要做的:在新的提交
3d9b4f245e上审阅本 PR,同意就点 Approve。这是 Tier H 治理面,需要您批准才能落地。Generated by Claude Code