Skip to content

Commit 06d41e5

Browse files
committed
docs(metadata-protocol): re-anchor the test files' dead tracker citations to the commits that decided them
Claude-Session: https://claude.ai/code/session_017xfMoEjKUuSh2xYB8sCozp Co-authored-by: Claude <noreply@anthropic.com>
1 parent 5466c30 commit 06d41e5

45 files changed

Lines changed: 124 additions & 124 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎packages/metadata-protocol/src/discovery-version.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* #11235 — the `version` field `getDiscovery()` serves must be DERIVED: an
4+
* Commit 376c70f98 — the `version` field `getDiscovery()` serves must be DERIVED: an
55
* injected `OS_RUNTIME_VERSION` stamp, falling back to the resolved
66
* `@objectstack/metadata-protocol` package version — never the `'1.0'` literal
77
* this producer hardcoded before the fix, and never any other constant.

‎packages/metadata-protocol/src/get-meta-item-layered-org-read-gate.test.ts‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* [#14907] `getMetaItemLayered` — the THIRD `/meta` read verb — applies the
4+
* [commit e1d4f9e3f] `getMetaItemLayered` — the THIRD `/meta` read verb — applies the
55
* registry read gate ITSELF, so a caller cannot spend a raw active
66
* organization on a type that has no per-org read channel.
77
*
88
* ── The defect, and why this verb was graded on its own harm ──────────────
99
*
10-
* The series is #9454 → #14683 (plural `getMetaItems`) → #14770 (singular
10+
* The series is #9454 → commit 96326040f (plural `getMetaItems`) → commit d5cbb44f3 (singular
1111
* `getMetaItem`) → this one. On the plural verb an ungated organization can
1212
* only ADD a row; on the singular verb it SUBSTITUTES the served document.
1313
* Here the affected value is the `overlay` LAYER of a three-layer diagnostic
@@ -28,19 +28,19 @@
2828
* and it is correct there because the binding already sat AFTER
2929
* `canonicalizeMetaRequestType`. Here the binding sat BEFORE the fold, so the
3030
* one-liner does NOT port: dropping the same expression in place would gate on
31-
* the RAW type. #10340 measured what that costs — `declaresOrgOverride`
31+
* the RAW type. Commit 26f3588fb measured what that costs — `declaresOrgOverride`
3232
* tolerates the MANIFEST plurals but not the URL-only ones (`translations` /
3333
* `email_templates` have no manifest key), so a raw segment splits one item
3434
* across two partitions. The fix is therefore a REORDER, and §3 is what fails
3535
* if a later author moves the binding back above the fold: it asserts that a
3636
* URL-only spelling of an OVERRIDABLE type still reaches its org partition.
3737
*
38-
* ── §4–§5 are the idempotence proof the #14683 ruling made this conditional
38+
* ── §4–§5 are the idempotence proof the ruling behind commit 96326040f made this conditional
3939
* on, discharged over THIS door's caller population ──────────────────────
4040
*
4141
* That ruling makes a callee-side gate conditional on proving no already-gating
4242
* caller is double-scoped or wrongly denied, discharged PER DOOR over that
43-
* door's own callers. #14770's proof covers none of this verb's population, so
43+
* door's own callers. Commit d5cbb44f3's proof covers none of this verb's population, so
4444
* it is re-discharged here: §4 covers `f(t, undefined) === undefined` (the four
4545
* `plugin-security` invocations that name no organization) and §5 covers
4646
* `f(t, f(t, o)) === f(t, o)` over the COMPLETE accepted-spelling population
@@ -359,13 +359,13 @@ describe('§3 the gate resolves AFTER canonicalizeMetaRequestType', () => {
359359
expect(res.overlayScope, spelling).toBe('org');
360360
// ONLY the org partition: the org row wins, so the `overlay ===
361361
// null` env fallback never runs. Gated on the raw segment this
362-
// list is `[null]` instead — the partition split #10340 measured.
362+
// list is `[null]` instead — the partition split commit 26f3588fb measured.
363363
expect(partitions(findOnes), spelling).toEqual([ORG]);
364364
}
365365
});
366366

367367
it('answers the URL spelling and the canonical spelling identically', async () => {
368-
// The #10340 statement restated as an equality: one item, ONE
368+
// The statement of commit 26f3588fb restated as an equality: one item, ONE
369369
// partition, whichever accepted spelling addresses it.
370370
for (const spelling of URL_ONLY_OVERRIDABLE) {
371371
const canonical = canonicalMetaUrlType(spelling);

‎packages/metadata-protocol/src/get-meta-item-org-read-gate.test.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* [#14770] `getMetaItem` — the SINGULAR verb — applies the registry read gate
4+
* [commit d5cbb44f3] `getMetaItem` — the SINGULAR verb — applies the registry read gate
55
* ITSELF, so a caller cannot spend a raw active organization on a type that has
66
* no per-org read channel.
77
*
88
* ── The defect, and why the singular verb is the sharper half ─────────────
99
*
10-
* #14683 (PR #14767) moved {@link organizationIdForMetaRead} INSIDE the PLURAL
10+
* Commit 96326040f (PR #14767) moved {@link organizationIdForMetaRead} INSIDE the PLURAL
1111
* verb, `getMetaItems`, and deliberately did not carry to this one. There, the
1212
* two `queryByOrg` reads are UNIONed, so an ungated organization can only ADD
1313
* rows — the resurrection that card is about. Here the two `findOverlay` reads
@@ -37,7 +37,7 @@
3737
* The inner precedence rests on two other things: ADR-0005 design principle 3
3838
* stores the ENTIRE item document per overlay row (so a layering has nothing
3939
* to layer), and the field-level patch model that would have given "layering"
40-
* any meaning was retired and deleted whole under ADR-0049 (#13185, PR #13186,
40+
* any meaning was retired and deleted whole under ADR-0049 (ADR-0005 principle 3's correction, commit 9e0ba21a1,
4141
* maintainer ruling 2026-08-29), with ADR-0126 §6 ruling out the phase it was
4242
* held for; and `organizationIdForMetaRead`'s own docblock quotes this very
4343
* expression as the intended shape while defining #9454. ADR-0029 D9 reaches
@@ -374,7 +374,7 @@ describe('§4 an already-gating caller receives the same scope it did before', (
374374
//
375375
// ⛔ This is why the gate sits AFTER the fold. `declaresOrgOverride`
376376
// tolerates the MANIFEST plurals and not the URL-only ones
377-
// (`translations` / `email_templates` have no manifest key) — #10340
377+
// (`translations` / `email_templates` have no manifest key) — commit 26f3588fb
378378
// measured what that costs when a raw segment reaches the predicate.
379379
for (const spelling of ALL_SPELLINGS) {
380380
const doorGate = organizationIdForMetaRead(canonicalMetaUrlType(spelling), ORG);

‎packages/metadata-protocol/src/get-meta-items-org-read-gate.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* [#14683] `getMetaItems` applies the registry read gate ITSELF, so a sweep
4+
* [commit 96326040f] `getMetaItems` applies the registry read gate ITSELF, so a sweep
55
* that reads MORE THAN ONE type per request is scoped per type instead of per
66
* request.
77
*

‎packages/metadata-protocol/src/meta-overlay-cache.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ describe('[#11967] §7 distinct reads never share an entry', () => {
578578
expect((scoped.items as any[]).map((i) => i.name)).toEqual(['beta']);
579579
});
580580

581-
// ⚠️ [#14683] `view`, NOT `object`, and the type is LOAD-BEARING here in a
581+
// ⚠️ [commit 96326040f] `view`, NOT `object`, and the type is LOAD-BEARING here in a
582582
// way it is not in this section's three siblings. `getMetaItems` now
583583
// resolves its own read scope through `organizationIdForMetaRead`, so a
584584
// type the registry declares NON-overridable has exactly one partition to

‎packages/metadata-protocol/src/migrations/live-mysql-database.isolation.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* #10382 — this package's live-MySQL suites must not be able to share one
4+
* Commit ee09d2119 — this package's live-MySQL suites must not be able to share one
55
* database.
66
*
77
* ## Why this suite is structural, and what it is a control FOR

‎packages/metadata-protocol/src/migrations/raw-exec-operator-detail-16657.test.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* [#16657] The operator records this package stores name the DIALECT, not the
4+
* [commit 5a95b0e93] The operator records this package stores name the DIALECT, not the
55
* driver's composed refusal.
66
*
77
* ## The regression
@@ -31,7 +31,7 @@
3131
*
3232
* ⚠️ That formula is now the WHOLE record at every site this change touched —
3333
* all nine in this package, fourteen across the repository. It was eight of
34-
* those nine until #17167: `seed-tenancy-backfill`'s ORGANIZATION probe spelled
34+
* those nine until commit dc709b2cf: `seed-tenancy-backfill`'s ORGANIZATION probe spelled
3535
* `operatorFacingErrorText(e) || 'unknown error'` — the file's last fallback —
3636
* so where the channel was EMPTY that record read `'unknown error'` and never
3737
* `''`. Measured at that probe before the removal: a thrown `''`, a thrown
@@ -44,7 +44,7 @@
4444
* "the probe did not fail", so deleting the placeholder and putting NOTHING in
4545
* its place routes a thrown `''` down the benign `no-organization-yet` path
4646
* instead of the ambiguous one (measured by ablation, both before and after
47-
* #17167) — the "unknown read as zero" confusion #9261 exists to prevent. The
47+
* commit dc709b2cf) — the "unknown read as zero" confusion #9261 exists to prevent. The
4848
* fact now travels in the TYPE (`string | undefined`), so the status arm is
4949
* pinned beside the record arm in the empty-channel case below: a re-added
5050
* placeholder and a lost discrimination each redden one of them.
@@ -233,7 +233,7 @@ describe('[#16657] seed-tenancy-backfill — the stored operator record', () =>
233233
* injectable refusal so a single run can be pointed at one seam at a time.
234234
*
235235
* `thrown` defaults to the declared raw-statement fault every case below
236-
* asserts against; the empty-channel cases (#17167) pass their own value,
236+
* asserts against; the empty-channel cases (commit dc709b2cf) pass their own value,
237237
* which is why it is a parameter rather than a second fixture.
238238
*/
239239
function seamExec(refuse: (sql: string) => boolean, thrown: unknown = rawStatementFault()) {
@@ -383,7 +383,7 @@ describe('[#16657] seed-tenancy-backfill — the stored operator record', () =>
383383

384384
it('an UNDECLARED refusal reads its own message channel at every site', async () => {
385385
// No site here carries a fallback any more — the ORGANIZATION probe's
386-
// `|| 'unknown error'` was the last one and #17167 removed it, which
386+
// `|| 'unknown error'` was the last one and commit dc709b2cf removed it, which
387387
// the empty-channel case below pins. This pin drives the duplicates
388388
// warning with a NON-EMPTY message, the shape for which the channel is
389389
// the whole answer at every site.

‎packages/metadata-protocol/src/migrations/seed-tenancy-backfill.live-mysql.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
* (`_objectstack_sequences`, `sys_organization`) that other live suites also
3737
* use.
3838
*
39-
* That database is DERIVED FROM THIS FILE's path (#10382) rather than named by
39+
* That database is DERIVED FROM THIS FILE's path (commit ee09d2119) rather than named by
4040
* a constant. It used to be the literal `os_metadata_protocol_9381`, which was
4141
* distinct from the sibling suite's only because two authors happened to type
4242
* two different strings — and `afterAll` below issues `drop database`, so a

‎packages/metadata-protocol/src/migrations/seed-tenancy-backfill.live-postgres.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
* fixed platform names (`_objectstack_sequences`, `sys_organization`) that other
6262
* live suites on the same CI server also use. `drop schema … cascade` in
6363
* `afterAll` is what makes a SHARED name destructive rather than merely
64-
* contended (#10382), and `scripts/check-live-db-isolation.mjs` refuses any live
64+
* contended (commit ee09d2119), and `scripts/check-live-db-isolation.mjs` refuses any live
6565
* suite in the tree whose name reaches that DDL as a literal.
6666
*
6767
* ⚠️ The name comes from `currentLiveMysqlDatabase()` — the MySQL-named resolver

‎packages/metadata-protocol/src/migrations/seed-tenancy-backfill.null-seam.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
22

33
/**
4-
* #10789 — `backfillSeedTenancy` reported `no-split` over a driver it never
4+
* Commit 38bc74ed1 — `backfillSeedTenancy` reported `no-split` over a driver it never
55
* queried, and its own `absent` branch was unreachable on a no-op seam.
66
*
77
* ## The defect
@@ -26,7 +26,7 @@
2626
* three dialect result-set shapes `normalizeRows` flattens — it means "I did not
2727
* run your query", and it was mapped onto "your query returned no rows".
2828
*
29-
* Same class, same consumer-side shape, as #10677 / PR #10788 landed for
29+
* Same class, same consumer-side shape, as #10677 / commit 3a7ec2d3b landed for
3030
* `os migrate duplicates`: judge the seam by whether it returns a RESULT SET,
3131
* not by whether `execute` exists. No driver is named by the implementation.
3232
*

0 commit comments

Comments
 (0)