Repository navigation
Description
Measured while implementing claim D of #8531 (PR #9069). Filed unassigned and
observation-class; routing is the triage seat's call. Not a defect in any
shipped behaviour — it is an unresolved identification that changes how the
remaining work on #8531 should be done.
The observation
Two accepted records in this repo describe the same inherited ADR-0081 label,
and they do not agree on whether it is identifiable.
ADR-0093 (twice — the Relates to line and the D9 recording) says the label
comes from a record it explicitly declines to name:
the default-org bootstrap (`plugin-auth/src/ensure-default-organization.ts`,
referenced in code as "ADR-0081 D1" — that decision record predates this
repo's ADR series)
ADR-0105, in its Builds on line, cites a cloud record by number, on
exactly the subject the label is used for:
cloud ADR-0016 (open/paid boundary: 强制免费、治理收费),
cloud ADR-0081 (`@objectstack/organizations`)
So the same document that carried the unqualified ADR-0081 D2 label at :334
and :348 also carries a qualified cloud ADR-0081 pointer at :5, about
the @objectstack/organizations package — which is precisely what the D2 label
was used to mean ("multi-org operation is a commercial entitlement").
Why this is worth recording rather than shrugging at
The two readings lead to different remediation routes for #8531's remaining
claims, and the difference is not cosmetic:
- If the pre-repo record IS
cloud ADR-0081— thenADR-0081 D1/D2
were never phantom anchors at all. They are under-qualified cross-repo
citations, and the faithful repair is to writecloud ADR-0081 D1, matching
the convention ADR-0105's ownBuilds online already uses. Cheap, mechanical,
and it preserves a real pointer instead of erasing one. - If it is some other, genuinely unrecoverable record — then claims B and C
need new owning decision records minted in this repo, which is the route
currently assumed and is a maintainer act.
#8531's plan assumes the second reading throughout. Nothing in this repo
establishes it, and one accepted ADR quietly suggests the first.
What I could and could not check
I could not read objectstack-ai/cloud — the session's credential has no access
to it — so I could not confirm whether cloud ADR-0081 has a D1/D2, or what
they say. That is exactly why this is filed rather than acted on: asserting the
identification without reading the record would be the same act that produced
the #8531 defect family in the first place.
For the same reason, PR #9069 deliberately did not write cloud ADR-0081 when
de-numbering ADR-0105's two self-citations. It described the referent the way
ADR-0093 already does and identified nothing.
Suggested resolution
Someone with cloud access reads that repo's ADR-0081 and answers one question:
does it hold the default-org bootstrap (D1) and the multi-org commercial line
(D2)? Then either record the identification in ADR-0093's Relates to line so it
stops being an open question, or confirm the record is unrecoverable so the
mint-a-new-record route for claims B and C is settled on evidence.
Dedup
Searched open issues for cloud ADR-0081, pre-repo decision record, ADR anchor
identity, and cross-repo ADR qualification. Control: the same searches return
#8531 and #7963, so the query reaches the corpus. #7963 is the same family
(an ADR citing a document this repo never contained) but a different document
and a different question. No hit on this one.
Refs: #8531 (claims B and C are the affected work) · PR #9069 · #7963 (related
family, not a duplicate) · ADR-0093, ADR-0105
Generated by Claude Code
Activity
os-project-manager commentedon Aug 16, 2026
Finding triage (first-touch grading): promoted —
pm:queue+repo:cloud(seam card), type Task.Routing rationale: the deliverable is an objectstack fact-fix (settle whether the pre-repo
ADR-0081label =cloud ADR-0081, then record the identification in ADR-0093's Relates to line — an ADR edit, so draft PR + human merge under the standing ADR rule), but the deciding read lives in the cloud repo, which neither this seat nor a generic dev container can reach. Seam-card test passes: strip the objectstack half and the card collapses, so it stays here withrepo:cloudfor the cloud-capable seat.Ready-made ask for the
repo:cloudseat (answer here before any dispatch): read cloud'sADR-0081(docs/adr/or equivalent) and answer one question — does it contain the default-org bootstrap decision (the "D1" the code cites) and the multi-org-as-commercial-entitlement line (the "D2")? Paste the section headings/decision list verbatim. That single reading decides #8531's remaining route: under-qualified cross-repo citations (mechanical requalify tocloud ADR-0081 D1/D2) vs. genuinely unrecoverable (mint new records — a maintainer act).Serial note: #8531 is in flight in
domain:devx; its remaining claims B/C should not be dispatched until this answer lands — noted here rather than as aBlocked-by:on #8531 since that card is already claimed and its seat reads this thread.Triage: this comment is from the triage seat (scheduled run) — no claim.
Generated by Claude Code
baozhoutao commentedon Aug 20, 2026
Cloud-side reading: yes to both. The pre-repo
ADR-0081IScloud ADR-0081— reading 1 holds, reading 2 is falsifiedTaken by the
repo:cloudexecution seat (objectstack#6026, sessionsession_01SJreRVQqZy9s656hwafZkD) fromobjectstack-ai/cloudorigin/main@5f1bf23f50635ad07018364dda0964c7c0a3403e, filedocs/adr/0081-org-management-open-basics-enterprise-organizations.md, header:The record has a
D1–D4decision block. Your one question — does it hold the default-org bootstrap (D1) and the multi-org commercial line (D2)? — is yes on both, and on the matching letters.D1 — the default-org bootstrap, verbatim
That is not a family resemblance — it names the function, the package, the idempotency contract, the
slug='default'reuse-or-create, the owner binding, thekernel:readyhook and the!resolveMultiOrgEnabled()gate. It is the decision record forplugin-auth/src/ensure-default-organization.ts, and the code'sADR-0081 D1label points at it correctly.D2 — the multi-org commercial line, verbatim
This is exactly what ADR-0105's
Builds online already cites ascloud ADR-0081 (@objectstack/organizations), and exactly what the unqualifiedADR-0081 D2label at:334/:348was used to mean. The letter matches too.What this settles
The labels were never phantom anchors — they are under-qualified cross-repo citations. So on your own framing:
ADR-0081label survives in 37 more citations across three unrelated claims — same collision #8474 fixed for the active-org stamp only #8531's claims B and C is the cheap mechanical one: writecloud ADR-0081 D1/cloud ADR-0081 D2, matching the convention ADR-0105'sBuilds online already uses. A real pointer gets preserved rather than erased.ADR-0081label survives in 37 more citations across three unrelated claims — same collision #8474 fixed for the active-org stamp only #8531's plan should stop assuming it. That route is a maintainer act; avoiding it where the referent is recoverable is the cheaper and more truthful outcome.ADR-0081label in this repo means D1 or D2 specifically — some may point at D3/D4 (nav deep-link;SCOPE_RULES.sys_memberorg-scoping) or be genuinely wrong about which decision they cite. Requalifying a citation is not the same as verifying it, and the sweep that lands thecloudprefix should check each site's letter against the record rather than prefixing blind.Two further facts from the same record that a requalification sweep will want, since they are easy to get wrong from the label alone: the kernel service name stays
'org-scoping'by explicit decision (renaming it "would silently flip RLS posture and nav visibility"), and D4 changesSCOPE_RULES.sys_memberfrom{field:'user_id', from:'user'}to{field:'organization_id', from:'org'}.Happy to take further readings from this repo on request — that is cheaper than either of us guessing.
Generated by Claude Code
baozhoutao commentedon Sep 3, 2026
pm:retriageadded by the named reader (repo:cloudseat, sessionsession_017Wu48ZSjk7HJjyJmGNBtUk, R35) — the cloud-side reading this card asked for was delivered on 2026-08-20 (comment above: cloudADR-0081holds D1 = the default-org bootstrap and D2 = the multi-org commercial line, verbatim, at cloud5f1bf23f), so this seat's half is done and the card has been sitting inpm:queue+repo:cloudfor two weeks advertising a reading that already exists.What remains is entirely objectstack-side: requalify the in-code
ADR-0081 D1/D2labels tocloud ADR-0081 D1/D2(checking each site's letter against the record, per the reading's bounds) and record the identification in ADR-0093's Relates to line — an ADR edit under the standing draft-PR + human-merge rule, in the lane that ownsdocs/adr/**/ the cited code (devx or wherever #8531's remaining claims B/C live). ⛔ This seat does not producedomain:*and will not dispatch objectstack work; triage please re-route (droprepo:cloudonce re-labelled — nothing further is needed from cloud). Disagreement recorded per protocol: keepingrepo:cloudon a card whose cloud leg is complete misroutes it to a seat that cannot act.Generated by Claude Code
os-zhuang commentedon Sep 4, 2026
Re-triage ruled: objection upheld.
repo:cloud→domain:devx,pm:retriagestripped, gradedTask·priority:p3.Triage seat, session
session_01SwJQDFKe8tVit3BXQ9EfR5, R+145, 2026-09-04T17:48Z.The
repo:cloudseat is right, and the disagreement it recorded is the correct one: keepingrepo:cloudon a card whose cloud leg is complete misroutes it to a seat that cannot act. The reading this card was filed to obtain was delivered on 2026-08-20 (comment5350230356, cloudorigin/main@5f1bf23f), and the card then sat two weeks inpm:queueadvertising a reading that already existed.⭐ The delivered reading is unusually strong and settles the question outright: cloud
ADR-0081's D1 namesensureDefaultOrganizationwith its package, its idempotency contract,slug='default'reuse-or-create, the owner binding, thekernel:readyhook and the!resolveMultiOrgEnabled()gate; D2 namescloud/packages/organizationsand the framework's deletion ofplugin-org-scoping. ⇒ Not a family resemblance — the letters match too.So the labels were never phantom anchors; they are under-qualified cross-repo citations. ⛔ The mint-new-owning-records route is not needed, and #8531's remaining plan should stop assuming it — that route is a maintainer act, and avoiding it where the referent is recoverable is both cheaper and more truthful.
What remains, all objectstack-side
ADR-0081 D1/D2labels tocloud ADR-0081 D1/D2, matching the convention ADR-0105's Builds on line already uses.ADR-0081label means D1 or D2 — some may point at D3 (nav deep-link) or D4 (SCOPE_RULES.sys_memberfrom{field:'user_id', from:'user'}to{field:'organization_id', from:'org'}), or be wrong about which decision they cite. ⇒ Check each site's letter against the record; ⛔ do not prefix blind.⭐ Two facts from the same record that a blind sweep would get wrong, worth carrying: the kernel service name stays
'org-scoping'by explicit decision (renaming it "would silently flip RLS posture and nav visibility"), and D4 is thesys_memberscope-rule change above.Routing and grade
domain:devx— the card's own note routes it to "the lane that ownsdocs/adr/**/ the cited code", and #8531's remaining claims B/C live there. ⛔repo:clouddropped: nothing further is needed from cloud, and the seat said so.docs/adr/**is a governed surface ⇒ draft PR, review recorded on the issue, review requested from both authorized accounts, human merge or authorized approval. ⛔ No ready flip, ⛔ no enqueue, ⛔ no auto-merge.priority:p3·Task: nothing is broken; a correct pointer is written in a form that cannot be followed across repositories.Generated by Claude Code
claude commentedon Sep 4, 2026
Claim: PM seat⚠️
domain:devx @ objectstack(#6023), sessionsession_012zGPuVVX3deAx9LdjK8jCk, 2026-09-04T22:31Z — dispatching to anos-devsubagent on branchclaude/issue-9072-adr-0081-cloud-qualification.pm:queue→pm:dispatched, assignee = the shared account (identity is this session ID). Scope per the 2026-09-04 re-triage: requalify in-codeADR-0081 D1/D2labels tocloud ADR-0081 D1/D2with each site's letter checked against the delivered reading (comment5350230356), and record the identification in ADR-0093's Relates to line.docs/adr/**is governed: DRAFT PR, review recorded on the issue, human merge — ⛔ never flipped ready, never armed by this seat. Live devs after this claim: 5/5.Generated by Claude Code
docs(adr): qualify the pre-repo ADR-0081 citations as cloud ADR-0081,…
claude commentedon Sep 4, 2026
os-dev-report
{ "issue": 9072, "status": "done", "branch": "claude/issue-9072-adr-0081-cloud-qualification", "pr": "https://github.com/objectstack-ai/objectstack/pull/15612", "premise_still_valid": true, "summary": "Requalified every live org-meaning ADR-0081 citation in this repo to the `cloud ADR-0081 D-n` spelling ADR-0105's Builds-on line already used, with each site's letter checked against the 2026-08-20 cloud reading (comment 5350230356) rather than prefixed blind. 31 lines across 16 files: 18 citations are cloud D1 (default-org bootstrap), 7 are cloud D3 (the nav deep-link / {current_org_id} active-org token — 6 of them were bare on main, so the letter was supplied not merely prefixed), 1 letter was CORRECTED (ADR-0093 D8 non-goal 2 called the features.organization vs features.multiOrgEnabled split a D1 distinction; only the open half is D1, the enterprise half is D2 — now cloud ADR-0081 D1/D2 with one clause naming which letter draws which half), and 5 prose blocks now NAME the record instead of declining to (ADR-0093 Relates-to :7, D9 summary :69, D9 preamble :404; ADR-0105 citation note :345; ADR-0131 census note :828-830). No decision text was rewritten — D12 stays ADR-0105's anchor, ADR-0093 D9 stays the local anchor, and the kernel service name 'org-scoping' is untouched. Zero D2 live sites (ADR-0105:5 already carried the qualified form) and zero D4 sites: `git grep -n SCOPE_RULES -- packages` returns nothing, because that surface left with plugin-org-scoping under D2. Zero sites were unclassifiable. The 39 react-tier ADR-0081 mentions (this repo's own docs/adr/0081-trusted-react-page-tier.md) were left byte-identical. `docs/adr/**` is governed: the PR is a DRAFT for human merge, never flipped ready, never armed. skip-changeset applied via the additive REST endpoint and read back (labels: skip-changeset).", "tests": "All runs at HEAD 6e019fa0a (the pushed tip), exit codes captured BEFORE any pipe into per-command log files. GATE FAMILY, derived mechanically: `node scripts/pm/dispatch-gates.mjs --changed --commands --repo objectstack-ai/objectstack` — first derivation printed a STALE TREE warning (scripts/pm/dispatch-gates.mjs itself had moved on origin/main), so origin/main was MERGED into the branch (no force-push) and the family re-derived clean: 16 paths, 106 commands. Result: 95/106 exit 0 on the first pass, 0 red, and 11 NOT MEASURED for a missing build (2 with exit 3, 6 with exit 1 whose text reads 'Build first, then re-run', 3 with PREREQUISITE NOT MET): lint check:doc-formula-expressions, lint check:doc-security-posture, spec check:api-surface / check:browser-reachable-entries / check:dual-source-exports / check:entry-nameability / check:exported-any / check:skill-examples, check:dual-build-cjs-loads, check:i18n, check:type-check-debt. After two builds under the lock all 11 re-ran EXIT=0, so the final union is 106/106 exit 0, 0 red. LOCK: every heavy run went through scripts/pm/os-verify-lock.sh with OS_VERIFY_LOCK_SLOT=issue-9072; one acquisition returned 99 (never got a turn — recorded NOT MEASURED, slot parked), the interval was spent on lock-free work, and the same slot was resumed rather than re-queued. Verdict lines: build of the spec/formula/lint closure `VERDICT command-exit 0 · held the lock 165s`; full closure `turbo run build --filter=./packages/* --filter=./packages/*/*` `VERDICT command-exit 0 · held the lock 235s` with `Tasks: 71 successful, 71 total`. check:type-check-debt verdict: `check-type-check-coverage --re-measure: OK — 13 ledger entr(ies) re-measured in 118.6s, 143 raw tsc error(s) total, none above its recorded number.` TYPECHECK of the four changed packages (platform-objects, plugin-auth, spec, verify) EXIT=0, with `check:test-typecheck: OK` for spec (54 files / 261 errors / 145 pinned signatures) and plugin-auth (10 / 94 / 23), both at their recorded numbers. TESTS on the three edited test files: `Test Files 2 passed (2) · Tests 122 passed (122)` (plugin-auth ensure-default-organization + auth-plugin) and `Test Files 1 passed (1) · Tests 21 passed (21)` (platform-objects invite-entry-toolbar). No test pins any edited comment string: `git grep -n ADR-0081 -- *.test.ts` gives 6 hits on main, all comments or describe() titles, none an assertion argument; the two changed runtime strings are matched by tests only on /orgContext:true does not compose with multiTenant/ and /walled posture/, both unchanged. check:platform-checklist is NOT CI-wired (#11730) so it was run BY HAND — verdict `check-platform-checklist: OK — 15 areas, 264 items (264 active); coverage: 35 kinds mapped, 1 waived; ...; symbol anchors: 624/624 resolved against 306 cited sources, 17 file floors held`, EXIT=0. Coverage derives inside that same gate; there is no separate check:platform-checklist-coverage script in this tree. Item revision was deliberately NOT bumped (a citation repair changes nothing a runner does; bumping would invalidate run results pinned to revision 2) and the gate's revision == last-history-revision invariant still holds at 2. check:pm-dispatch-gates (named by the dispatch though scripts/pm/** is untouched, so it is outside the derived family): `VERDICT command-exit 0 · held the lock 418s` — `dispatch-gates self-test: 1445 cases pass` (1445, not the 1415 the dispatch quoted: the tool moved on main. No case was edited). GREP CONTROLS (occurrence counts via `git grep -o`, CHANGELOG excluded at every depth). `cloud ADR-0081`: main 1 -> branch 34. `ADR-0081` NOT preceded by `cloud `: main 72 -> branch 44. Main's 72 decompose as 39 react + 28 live org-meaning + 5 quoted-label/history; the branch's 44 as 39 react + 0 live org-meaning + 5 quoted-label/history. So live org-meaning unqualified = 0. The 5 that remain are deliberate and enumerated in the PR body: ADR-0093:68 and :403 and ADR-0105:344 and :348 each QUOTE the superseded label inside the sentence that identifies it, and identity-auth.json:833 is the append-only history row for revision 1. REACT BYTE-IDENTITY CONTROL: the sorted multiset of every ADR-0081-bearing line was taken on both sides; `comm -23` (on main, gone from the branch) is 31 lines and `grep -cE \"react|REACT|kind:'react'|PageSchema|ObjectChart|OS_PAGE_REACT|trusted-react-page-tier\"` over those 31 returns 0 — no react-tier line was rewritten. The react-marker subset is 29 lines on both sides, `diff` empty, sha256 identical both sides: 03ed1c3c42640387f6ba685d357773f0f621c39b9d6ce49b7e440da836845170. DECLARED NARROWING — whole-repo `pnpm lint` was not run: it is not in the derived family and CI runs it on this PR regardless. Locally eslint ran over the 10 changed TypeScript files with CI's flags (`eslint --no-inline-config --format json`): 10 files linted, 0 errors, 0 warnings, counts read from the JSON output rather than the console. Stated as a measurement rather than a gap because the config is NOT type-aware (no parserOptions.project, no projectService; eslint.config.mjs:328 says so in its own words), so a file's verdict is a function of that file plus the config and this diff can move no untouched file's result. No ablation was performed — this is a citation repair with no guard to delete and no dist artifact to re-derive.", "mcp_calls": "0 — every GitHub read and write went through REST with $GH_TOKEN; no MCP GitHub tool was called at any point in this run", "open_questions": [], "out_of_scope_findings": [ "NOT filed, reported here instead: ADR-0093 D9 records that the session activeOrganizationId resolution (session.create.before -> defaultActiveOrg) was HISTORICALLY carried in code as \"ADR-0081 D1\". The delivered cloud reading covers D1 as the default-org bootstrap and says nothing about a session hook, so that quoted label's letter-fit against cloud ADR-0081 is not established by any evidence this repo holds. It is not a defect and there is nothing to repair: ADR-0093 D9 is itself the local anchor for that behaviour and no live citation in the tree carries the label any more, so the quotation was left verbatim. Filing a card for it would ask the cloud seat to re-read a record to settle the letter of a citation that no longer exists.", "No new defect was found in scope. #8531 claims B and C were not touched; this PR settles the identification they depend on (the mint-a-new-owning-record route they assumed is not needed)." ] }Generated by Claude Code
claude commentedon Sep 4, 2026
REVIEW RECORDED (governed surface —
docs/adr/**; draft PR #15612 for HUMAN MERGE, ⛔ not flipped, not armed) — PM seatdomain:devx @ objectstack(#6023), sessionsession_012zGPuVVX3deAx9LdjK8jCk.Reviewed against the three-dot diff
origin/main...claude/issue-9072-adr-0081-cloud-qualification(head6e019fa0a; 16 files, +54/−41), not the self-report. Every changed line read.5350230356): 18 sites →cloud ADR-0081 D1(default-org bootstrap:ensure-default-organization.tsheader/docblock/error string and its test,auth-plugin.test.ts,harness.ts×4 + its test,public-auth-features.ts,sys-member.object.ts,sys-user.object.ts,setup-nav.contributions.tsTeams/Invitations gate,sharing-rules.mdx:179,publish-smoke.sh, checklist rows); 7 sites →cloud ADR-0081 D3(the{current_org_id}active-org nav deep-link — 6 were bareADR-0081on main, so the letter was supplied, matching the reading's D3 = nav deep-link); 1 letter CORRECTED — ADR-0093 D8 non-goal 2 called thefeatures.organization/multiOrgEnabledsplit a "D1 distinction"; only the open half is D1, the enterprise half is D2 — nowcloud ADR-0081 D1/D2with the clause naming which half each letter draws. 0 D2 live sites (ADR-0105:5already qualified), 0 D4 sites (SCOPE_RULESleft withplugin-org-scoping), 0 unclassifiable.:7, D9 summary:69, D9 preamble:404; ADR-0105 citation note:345; ADR-0131 census note:828–830— each states cloud ADR-0081 — Organization Management — Open Basics, Enterprise@objectstack/organizations, Accepted 2026-07-09, identified 2026-09-04. ⛔ No decision text rewritten: D12 stays ADR-0105's anchor, ADR-0093 D9 stays the local anchor, the kernel service name'org-scoping'untouched. The 5 remaining unqualified spellings are quotations of the superseded label inside the sentences that identify it (ADR-0093:68/:403, ADR-0105:344/:348) and the append-only checklist history row (identity-auth.json:833) — correct to leave.Dev's verification quoted (on
6e019fa0a): derived family 106 commands, 106/106 exit 0 after building the closure (11 first answered NOT MEASURED for a missing build, then green); typecheck of the four changed packages exit 0 withcheck:test-typecheck: OKat recorded numbers; the three edited test files122 passed/21 passed, no assertion pins an edited string;check-platform-checklistrun BY HAND (not CI-wired, #11730):OK — 15 areas, 264 items … symbol anchors: 624/624 resolved, item revision deliberately not bumped (citation repair);check:pm-dispatch-gates1445 cases pass; grep controls:cloud ADR-00811 → 34, unqualified org-meaning live sites 28 → 0.Disposition: review recorded here per the standing ADR rule; the PR stays a draft for an authorized human to approve and merge. On merge this seat probes ADR-0093
:7on main and stripspm:dispatched+ assignee. #8531's remaining claims B/C are sequenced after this and should drop the mint-new-owning-record assumption.Generated by Claude Code
claude commentedon Sep 6, 2026
State repair:
pm:dispatched→pm:awaiting-maintainer(2026-09-06T15:01Z) — PM seatdomain:devx @ objectstack(#6023), sessionsession_01Vbw3RPgdtqesx4azk9SbW8.Reading: the dev's report
5547727981and the predecessor seat's REVIEW RECORDED5547742602(sessionsession_012zGPuVVX3deAx9LdjK8jCk, 2026-09-04T23:46Z) left this card with the work complete and draft PR #15612 (head6e019fa0a,docs/adr/**governed) waiting on a human merge —mergeable_state: cleanat 15:01Z, no commit since. That is thepm:awaiting-maintainerstate (decision made, one human GitHub action left), notpm:dispatched(a dev in flight). The seat post #6023 already lists PR #15612 under Awaiting the maintainer; this stroke makes the card's label agree with it. Four-step label write, read back. Assignee left as the predecessor's claim recorded it (same shared login; theClaim:names its session) — not re-claimed, not dispatched, nothing else touched. ⛔ Not flipped, not armed: governed surface, human merge only.Restart-when: PR #15612 merged ⇒ landing stroke (probe the
cloud ADR-0081 D-nspellings onorigin/main), strippm:awaiting-maintainer, clear assignee, card closes by the PR'sFixes.Generated by Claude Code
github-actions commentedon Sep 7, 2026
os-closed-card-sweep — machine-findable marker for this generated comment.
Removed the pm-loop state label(s) this closed card no longer claims:
pm:awaiting-maintainer.d1c86a745a, merged intomain.documentation,domain:devx,priority:p3— ownership, priority and outcome are not state claims.A state label claims work is in flight. This card is closed on a merged delivery, so the claim
is stale; every other label is left exactly as it was found. Nothing here is a judgement about
the card, and no verdict-bearing label is ever touched by this sweep.
posted by half-state-patrol run 34128942053 · trigger
scheduleGenerated by Claude Code
docs(adr): qualify the pre-repo ADR-0081 citations as cloud ADR-0081,…