Skip to content

Commit 686a4c6

Browse files
hotlongclaude
andcommitted
docs(types): re-anchor the dead tracker citations in packages/types/src to the commits that decided them
Every comment and docblock site under packages/types/src that cited a tracker number answering 404 now cites the commit in this repository's history that decided what the line describes, and says in its own words what that commit decided. Comments only; every touched file keeps its line count. A patch changeset ships because the docblocks reach dist. Claude-Session: https://claude.ai/code/session_local_1d2a197c-c20e-4e90-9be8-413d4d432289 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6bff748 commit 686a4c6

18 files changed

Lines changed: 104 additions & 94 deletions
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@objectstack/types': patch
3+
---
4+
5+
Provenance comments in `@objectstack/types` were re-anchored
6+
7+
Comment and docblock lines under `src/` that cited tracker numbers which no
8+
longer resolve on GitHub now cite the commit in this repository's history that
9+
decided the matter, and say in their own words what was decided. Comments
10+
only: no error code, refusal text, type, export or runtime behaviour changes.

‎packages/types/src/driver-error-classification.callers.test.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* ── The defect class ─────────────────────────────────────────────────────────
99
*
10-
* #13324 repaired the predicate by giving it `readObject`, so a driver fault
10+
* Commit 4cda78c9b repaired the predicate by giving it `readObject`, so a driver fault
1111
* naming a DIFFERENT relation can no longer be answered "this table is not
1212
* provisioned yet". The parameter had to ship OPTIONAL: `@objectstack/types` is
1313
* published (17.2.0, `exports` `.` and `./node`), and re-exported again from
@@ -17,12 +17,12 @@
1717
*
1818
* Optional is right for the world outside this repo and wrong for the inside of
1919
* it. `isMissingTableError(err)` still compiles, still type-checks, and still
20-
* returns the pre-#13324 WIDE verdict — silently. On the authz path
20+
* returns the WIDE verdict from before commit 4cda78c9b — silently. On the authz path
2121
* (`packages/core/src/security/resolve-authz-context.ts`) that verdict resolves
2222
* a permission-store OUTAGE to `[]` permissions instead of failing loud, so the
2323
* omission fails in the OPEN direction. That is the same declared-but-not-
24-
* enforced shape #13324 existed to close, one level up: the obligation is
25-
* stated in prose, and prose is exactly what #13324 proved insufficient.
24+
* enforced shape commit 4cda78c9b closed, one level up: the obligation is
25+
* stated in prose, and prose is exactly what that commit's defect proved insufficient.
2626
*
2727
* ── Why a gate and not a required parameter ──────────────────────────────────
2828
*

‎packages/types/src/driver-error-classification.operator-text.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-
* [#16657] `operatorFacingErrorText` — the dialect's words for a record an
4+
* [commit 5a95b0e93] `operatorFacingErrorText` — the dialect's words for a record an
55
* operator reads later.
66
*
77
* ## The regression this closes, and why "one `cause` away" was not enough

‎packages/types/src/driver-error-classification.targeted-table.test.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* #13438 — `isMissingTableError` prefers the table a driver DECLARED it targeted
55
* over the caller-supplied `readObject`.
66
*
7-
* The residual #13324 left behind: a caller names its OBJECT, a driver compiles
7+
* The residual commit 4cda78c9b left behind: a caller names its OBJECT, a driver compiles
88
* the statement against the PHYSICAL table, and for a federated object
99
* (ADR-0015, `external.remoteName`) the two differ. `crm_order` reads
1010
* `legacy_orders`; when that remote is genuinely absent the phrase names
@@ -14,7 +14,7 @@
1414
* Maintainer ruling 2026-09-01 (option 2 on the card): the driver declares the
1515
* table it targeted on the envelope, the predicate prefers it. The pair the
1616
* ruling asks for is pinned here — an absent remote reads benign again, and a
17-
* DIFFERENT relation's error still reads not-benign (the #13324 narrowing must
17+
* DIFFERENT relation's error still reads not-benign (the narrowing commit 4cda78c9b made must
1818
* not reopen) — with the declaration present. The driver's half (that
1919
* `driver-sql` really stamps `external.remoteName`, live, on each dialect) is
2020
* `packages/drivers/driver-sql/src/sql-driver-13438-federated-missing-remote-envelope.test.ts`.
@@ -181,7 +181,7 @@ describe('isMissingTableError — a declared targeted table beats the caller-sup
181181
});
182182

183183
it('a declared node whose phrase mismatches is NOT rescued by a matching cause', () => {
184-
// Same disposition #6347 and #13324 gave the exclusion: recognition
184+
// Same disposition #6347 and commit 4cda78c9b gave the exclusion: recognition
185185
// ends the question rather than descending.
186186
const err = envelope(
187187
Object.assign(new Error('no such table: main.absent_base'), {

‎packages/types/src/driver-error-classification.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* #4728 / #4825 — the classifications that decide whether a driver failure may
55
* be silenced.
66
*
7-
* [#13279] Moved here with the module it tests, from
7+
* [commit 6a180e42d] Moved here with the module it tests, from
88
* `packages/metadata/src/utils/schema-sync-errors.test.ts`. Unchanged except
99
* for the import path: `@objectstack/core`'s authorization resolver now asks
1010
* `isMissingTableError`, so the predicate lives in the package both sides

‎packages/types/src/driver-error-classification.ts‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Driver-error classification: "which driver failures may be silenced?"
55
* (#4728, #4825; rule from #4632).
66
*
7-
* ## Home — `@objectstack/types`, since #13279
7+
* ## Home — `@objectstack/types`, since commit 6a180e42d
88
*
99
* This module was born in `@objectstack/metadata` and lived there through
1010
* #4728 / #4825 / #5841. `@objectstack/metadata/errors`' own docblock recorded
@@ -16,7 +16,7 @@
1616
*
1717
* What forced it: `resolveAuthzContext` (`@objectstack/core`) must ask
1818
* {@link isMissingTableError} to tell a permission-store OUTAGE from a
19-
* deployment whose `sys_*` tables were never provisioned (#13279). Core cannot
19+
* deployment whose `sys_*` tables were never provisioned (commit 6a180e42d). Core cannot
2020
* import `@objectstack/metadata` — metadata **depends on** core — so the
2121
* predicate had to move to a package both sides already depend on, or be
2222
* copied. Copying was measured and rejected: two vocabularies of "which driver
@@ -134,7 +134,7 @@
134134
// `relation-sub-object.ts` next door for the superstring hole it closes and for
135135
// why the exclusion's width deliberately differs from the extractor's. That
136136
// module was already this one's dependency across the package boundary; since
137-
// #13279 moved this file into `@objectstack/types`, the two are siblings.
137+
// commit 6a180e42d moved this file into `@objectstack/types`, the two are siblings.
138138
import { isRelationSubObjectPhrase } from './relation-sub-object.js';
139139

140140
/**
@@ -372,7 +372,7 @@ const MISSING_TABLE: DriverErrorSignature = {
372372
*
373373
* [#6615] All three now read one home — `@objectstack/types` — instead
374374
* of three hand-kept copies, so the phrase can no longer be taught to
375-
* the repo a fourth time or drift in one package only. [#13279] This
375+
* the repo a fourth time or drift in one package only. [commit 6a180e42d] This
376376
* file now lives in that same home, so the read is a sibling import. The **width**
377377
* difference that used to justify the copy is preserved and is the
378378
* reason the home exports two functions rather than one: those two
@@ -386,7 +386,7 @@ const MISSING_TABLE: DriverErrorSignature = {
386386
*/
387387
matchesMessage: isRelationSubObjectPhrase,
388388
/**
389-
* [#13324] "…and the relation it names is not the one you read."
389+
* [commit 4cda78c9b] "…and the relation it names is not the one you read."
390390
*
391391
* The sibling of the phrase above, reached one step further out. That
392392
* one recognises a failure about something INSIDE a relation, which
@@ -408,7 +408,7 @@ const MAX_CAUSE_DEPTH = 4;
408408
* [#13438] The physical table a driver's statement TARGETED, declared on the
409409
* error envelope by the producer that knows it.
410410
*
411-
* `readObject` closed the #13324 hole for callers that can name what they read
411+
* `readObject` (commit 4cda78c9b) closed the hole for callers that can name what they read
412412
* — and left a residual one layer down. A caller names its OBJECT (the API
413413
* name); a driver compiles the statement against the PHYSICAL table, and for a
414414
* federated object (ADR-0015, `external.remoteName`) those are two different
@@ -424,7 +424,7 @@ const MAX_CAUSE_DEPTH = 4;
424424
* stamps the table its statement targeted onto it — and the predicate PREFERS
425425
* a declared table over the caller-supplied `readObject`. The caller never
426426
* needs to know a federated object's remote name, and a driver that declares
427-
* nothing gets exactly the #13324 behaviour.
427+
* nothing gets exactly the behaviour commit 4cda78c9b introduced.
428428
*
429429
* A symbol key from the global registry, held non-enumerable: the carrier
430430
* discipline `driver-sql` already applies to its withheld-diagnostic symbols
@@ -438,7 +438,7 @@ const MAX_CAUSE_DEPTH = 4;
438438
* ⚠️ A declaration is EVIDENCE, so it also narrows the one-argument form: an
439439
* envelope declaring `legacy_orders` whose dialect phrase names some other
440440
* relation reads not-benign even with no `readObject` — the driver supplied
441-
* the fact the caller could not. That is the #13324 verdict reached without
441+
* the fact the caller could not. That is commit 4cda78c9b's verdict, reached without
442442
* the caller's help, in the direction the module docblock calls cheap.
443443
*/
444444
export const DRIVER_TARGETED_TABLE: symbol = Symbol.for('objectstack.driver.targetedTable');
@@ -596,7 +596,7 @@ export function isSchemaAlreadyExistsError(error: unknown, depth = 0): boolean {
596596
* Postgres' two phrasings — the relation is right there in the message because
597597
* it exists (#6347). See {@link MISSING_TABLE}'s `excludes`.
598598
*
599-
* [#13324] Neither is a failure that names a **different relation**, and that
599+
* [commit 4cda78c9b] Neither is a failure that names a **different relation**, and that
600600
* one cannot be seen without `readObject`. The message test asks what the
601601
* phrase LOOKS like and never which table it names, so a read of a view whose
602602
* base table has been dropped — `no such table: main.<base>`, measured on
@@ -605,7 +605,7 @@ export function isSchemaAlreadyExistsError(error: unknown, depth = 0): boolean {
605605
* be about the table the caller asked for, or it is not evidence about it.
606606
*
607607
* Pass `readObject` from every in-repo call site. It is **optional** so that
608-
* omitting it is exactly the pre-#13324 behaviour rather than a new loud
608+
* omitting it is exactly the behaviour before commit 4cda78c9b rather than a new loud
609609
* failure — this is a published export (`@objectstack/types`, and still
610610
* `@objectstack/metadata/errors` by re-export), and a required parameter would
611611
* be a breaking change to it. The cost of the choice
@@ -626,12 +626,12 @@ export function isSchemaAlreadyExistsError(error: unknown, depth = 0): boolean {
626626
* federated object (ADR-0015) that is not the name the driver put in the
627627
* statement — `crm_order` reads `external.remoteName: 'legacy_orders'`, so a
628628
* genuinely absent remote raised a phrase naming `legacy_orders` against a
629-
* caller naming `crm_order`, and the #13324 comparison read it loud. A driver
629+
* caller naming `crm_order`, and the comparison commit 4cda78c9b added read it loud. A driver
630630
* that knows the table it targeted now DECLARES it on the envelope
631631
* ({@link declareTargetedTable}), and a declared table is preferred over
632632
* `readObject` outright: the phrase is compared against the declared name, and
633633
* the caller-supplied one is not consulted at that node or below it. Absent a
634-
* declaration the comparison is the #13324 one, unchanged. Two consequences,
634+
* declaration the comparison is commit 4cda78c9b's, unchanged. Two consequences,
635635
* both pinned: a genuinely absent federated remote reads benign again without
636636
* the caller learning the mapping; and — because a declaration is evidence the
637637
* caller did not have — an envelope whose phrase names a relation other than
@@ -654,11 +654,11 @@ export function isMissingTableError(error: unknown, readObject?: string, depth =
654654
}
655655

656656
// ---------------------------------------------------------------------------
657-
// Operator-facing text for a DECLARED driver fault (#16657)
657+
// Operator-facing text for a DECLARED driver fault (commit 5a95b0e93)
658658
// ---------------------------------------------------------------------------
659659

660660
/**
661-
* [#16657] The ADR-0112 code a driver declares when the backend, not the
661+
* [commit 5a95b0e93] The ADR-0112 code a driver declares when the backend, not the
662662
* caller, refused the work. Spelled as a literal for the same reason
663663
* {@link declaresServerFault} spells `status`/`code` by hand: this package is
664664
* the common dependency every consumer of the question already has, and reading
@@ -667,7 +667,7 @@ export function isMissingTableError(error: unknown, readObject?: string, depth =
667667
const DECLARED_DATABASE_FAULT_CODE = 'DATABASE_ERROR';
668668

669669
/**
670-
* [#16657] The fragment that identifies `SqlDriver`'s RAW-path envelope, and
670+
* [commit 5a95b0e93] The fragment that identifies `SqlDriver`'s RAW-path envelope, and
671671
* only it.
672672
*
673673
* The raw terminal (`rawStatementFaultError`, `driver-sql/src/sql-driver.ts`;
@@ -727,7 +727,7 @@ function messageChannelOf(node: unknown): string {
727727

728728
/**
729729
* The text an OPERATOR should read for `error` — the dialect's own words when a
730-
* driver composed over them, the error's own message otherwise (#16657).
730+
* driver composed over them, the error's own message otherwise (commit 5a95b0e93).
731731
*
732732
* # The defect this closes
733733
*

‎packages/types/src/email-verified.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-
* [#11343 / #12751] The verified-email allow-list, pinned representation by
4+
* [commit c0714eb5d / #12751] The verified-email allow-list, pinned representation by
55
* representation. This predicate is shared between the walled owner-elevation
66
* gate (which REFUSES on `false`) and the owner-verification boot diagnostic
77
* (which stays quiet on `true`) — the pin here is what both consumers stand

‎packages/types/src/email-verified.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-
* [#11343 / #12751] Verified-email predicate over a stored `sys_user` row — a
4+
* [commit c0714eb5d / #12751] Verified-email predicate over a stored `sys_user` row — a
55
* fail-closed ALLOW-LIST over the representations a driver may hand back for
66
* the `sys_user.email_verified` boolean column (JS `true`, SQLite `1`, and
77
* their stringified forms). Everything else — `false`/`0`, `null`, an ABSENT

‎packages/types/src/error-leak.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ describe('looksLikeInternalErrorLeak — shipped-dialect phrasings (#8132)', ()
138138
// SQLite/libsql message-only errors: the same conditions with NO
139139
// `SQLITE_` prefix to trip the existing limb. Measured shapes in this
140140
// repo — `driver-error-classification.ts` (next door, moved here by
141-
// #13279 from `metadata/src/utils/schema-sync-errors.ts`) documents both.
141+
// commit 6a180e42d from `metadata/src/utils/schema-sync-errors.ts`) documents both.
142142
['sqlite bare missing table', 'no such table: sys_metadata'],
143143
['sqlite bare missing table with a schema prefix', 'no such table: main.sys_metadata_history'],
144144
['sqlite bare missing column', 'no such column: bogus'],
@@ -177,7 +177,7 @@ describe('looksLikeInternalErrorLeak — shipped-dialect phrasings (#8132)', ()
177177
* MySQL, and a reviewer sizing a disclosure residual on PR #8737 quoted it in
178178
* good faith; the claim was false (`driver-sql` branches on `mysql`/`mysql2`,
179179
* CI stands up a live `mysql:8.0` for a required check, live MySQL 8.0.46
180-
* measurements landed driver fixes #8621/#8622). PR #8824 corrected the
180+
* measurements landed driver fixes #8621/#8622). Commit 8ac232306 corrected the
181181
* sentence and pinned the narrower, then-true fact — the predicate did not
182182
* COVER MySQL — as a deliberate tripwire for the decision that was still open.
183183
*

‎packages/types/src/index.ts‎

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

33
export * from './degraded-boot.js';
4-
// [#11343/#12751] The one verified-email predicate the walled owner-elevation
4+
// [commit c0714eb5d / #12751] The one verified-email predicate the walled owner-elevation
55
// gate (plugin-security) and the owner-verification boot diagnostic
66
// (plugin-auth) both read — see the module doc for why it must be one.
77
export * from './email-verified.js';
@@ -48,7 +48,7 @@ export * from './relation-sub-object.js';
4848
// Four hand-written vocabularies used to answer it and disagreed about MySQL,
4949
// which is why every MySQL conflict came back 500 instead of 409.
5050
export * from './unique-violation.js';
51-
// [#4728/#4825, moved here by #13279] The one "which driver failures may be
51+
// [#4728/#4825, moved here by commit 6a180e42d] The one "which driver failures may be
5252
// silenced?" vocabulary — `isMissingTableError` (a READ failed because the
5353
// table was never provisioned) and `isSchemaAlreadyExistsError` (a DDL failure
5454
// that was just the table already being there). It was `@objectstack/metadata`'s

0 commit comments

Comments
 (0)