Repository navigation
Commit eb23966
chore(objectql): retire the PR-10d.1 dry-run-hash-compat probe and its scripts program (#21865)
Fixes #21853
Clause-②: no
Retires the one-time ADR-0008 PR-10d.1 compatibility probe, per triage's
grade and direction on the card (comment 5991365223: retire, do not
repair). PR-10d.2 finished that audit. Nothing ships the script
(`@objectstack/objectql`'s `files` is `dist`, `README.md`,
`CHANGELOG.md`) and nothing runs it. Its type-blind `hashSpec(body)`
call is therefore deleted, not corrected.
## What changes
Deleted (678 lines):
- `packages/objectql/scripts/dry-run-hash-compat.ts`, the probe. The
directory is now gone.
- `packages/objectql/src/dry-run-hash-compat.test.ts`, its test.
- `packages/objectql/tsconfig.scripts.json`, and the `tsc --noEmit -p
tsconfig.scripts.json` leg of objectql's `typecheck` script. With
`scripts/` gone, that program has no inputs: the exact deleted config
(blob `28a4b91ab6`), put back untracked beside the empty package, gives
`error TS18003: No inputs were found in config file` and tsc exit 2. No
placeholder file keeps it alive.
- The two `EXEMPT_FILES` rows for those two files in
`scripts/check-error-code-casing.mjs`.
Reworded (comments only), because they stated the deleted files as
present:
- `packages/objectql/tsconfig.test.json`. The `rootDir` bullet's
measured example named the deleted test; the bullet now states the rule
without it. The closing sentence about the sibling `scripts/` program is
dropped. `rootDir: "."` itself is kept (see Acceptance notes).
- `packages/objectql/src/datasource-def-credentials-ref.pin.ts` and
`register-object-authored-shape.pin.ts`. Both docblocks quote the
package's `typecheck` line "stated to today's tree"; the quote now
matches the new line. Neither file reaches `dist` (measured below).
- `scripts/check-type-check-coverage.mjs`, four spots:
- the census row dated main @ 5886ee6 is annotated "deleted since",
not removed (see Deviations);
- the AGAINST argument no longer names the file;
- the SEEDED-AT note no longer says objectql "now has" a scripts
program;
- the "shape these eight copy" pointer no longer sends a reader to a
deleted config.
The `packages/objectql/CHANGELOG.md` line stays: it is history.
## Hypotheses measured
**H1, every reference.** `git grep -n dry-run-hash-compat` at
origin/main 9f9510f gives 17 hits, 16 outside
`packages/objectql/CHANGELOG.md`. The file lines are unchanged since
dispatch at 0fe0a59.
| Site | Hits | Disposition |
|---|---|---|
| the script | 4 | deleted |
| its test | 1 | deleted |
| `tsconfig.scripts.json` (line 4) | 1 | deleted with the file |
| `tsconfig.test.json` (lines 42-43) | 2 | reworded |
| `check-error-code-casing.mjs` (lines 85-86) | 2 | rows deleted |
| `check-type-check-coverage.mjs` (line 1399) | 1 | dated census row:
annotated, kept |
| `check-type-check-coverage.mjs` (line 1428) | 1 | reworded to not name
the file |
| `check-type-check-coverage.mjs` (lines 4154-4155) | 2 | stays: a
measurement dated "on main @ 5886ee6" |
| `check-type-check-coverage.mjs` (lines 5740-5741) | 2 | stays:
self-test fixture using the name as a sample string |
At this PR's head the same search leaves 6 hits: the CHANGELOG line and
the five kept `check-type-check-coverage.mjs` lines above.
Searching by the program instead of the file name found four more
present-tense statements, all reworded: `check-type-check-coverage.mjs`
about lines 1442-1444 and 1494-1495, and the two `.pin.ts` quotes.
Thirteen sibling configs cite "the distinction #10756 drew for
`packages/objectql/scripts`":
- nine `tsconfig.scripts.json`: `platform-objects`, five plugins, three
services;
- `plugin-auth/tsconfig.examples.json`;
- three `tsconfig.typecheck.json`.
That cites a decision and remains true, so they stay, as do the
past-tense mentions at `check-type-check-coverage.mjs` lines 183 and
1378. No doc, ADR or `scripts/adr-anchors/` entry names the file, the
directory or the probe (searched also as `hash-compat`, `dryRunHash` and
`PR-10d.1`).
**H2, the scripts-layer program.** `scripts/` held only this file. It is
removed the way the gates accept: the config is deleted and the
`typecheck` leg dropped. No ledger row names it: `DEBT`, `TEST_DEBT` and
`UNCHECKED_SOURCE_DEBT` in the coverage gate, and
`packages/objectql/test-typecheck-debt.json`, carry no objectql scripts
entry. After the change:
- `check:type-check-coverage` reports "79/80 workspace packages
type-checked" and "source layer: 0 directory(ies) of non-test source in
0 ledgered entr(y/ies) sit outside every tsc program";
- `check:type-check-debt` reports "1 ledger entr(ies) re-measured ... 26
raw tsc error(s) total, none above its recorded number".
**H3, no other importer.** At this PR's head, `runDryRun` occurs only in
the CHANGELOG line, and `LegacyMetadataRow` nowhere.
## Changeset: the `skip-changeset` label
The changeset gate in `pr-automation.yml` exempts a PR that declares no
release by this label (its route 2). It rejects a newly added empty
changeset (its closed route 3), so that is not the route. Route 0 does
not apply: the diff touches no `.changeset/*.md`.
The diff publishes nothing:
- objectql's tsup entries are `src/index.ts` and `src/core.ts`.
- After `pnpm --filter @objectstack/objectql build`, `grep -rlF` over
`dist` finds 0 files for each of `runDryRun`, `LegacyMetadataRow`,
`dry-run-hash-compat`, `checksum_drift` and `tsconfig.scripts.json`. It
also finds 0 for the `.pin.ts` docblock text (`stated to today`, and the
new quoted `typecheck` line), which is present in `src`.
- Positive controls: `ObjectQL` hits 10 files and
`assertEngineDeleteDispatch` 5.
The only tarball byte this touches is the dev-only `scripts.typecheck`
string in `package.json`. The commit that added that leg, `3854376e3d`,
carried no changeset; `cb954f1708`, which added the same kind of leg to
eight other packages, carried none either.
`node scripts/check-changeset-no-major.mjs --base origin/main` exits 0
("This diff introduces no `major` bump"); its level axis is given this
body below.
## Verification (HEAD cc46841, after merging origin/main 9f9510f)
These readings were taken on a resumed run. The first run was stopped by
a container restart before it reported, so none of its readings is
quoted here.
- `pnpm --filter '@objectstack/objectql...' build`, then `pnpm --filter
@objectstack/objectql typecheck`, each under the verify lock: VERDICT
command-exit 0 both. The typecheck output reads `tsc --noEmit && pnpm
check:test-typecheck`, then "check:test-typecheck: OK ... 40 file(s) /
234 error(s) / 65 pinned signature(s) held". That is unchanged, because
the deleted test had no ledger entry.
- `pnpm --filter @objectstack/objectql exec vitest run --project local
--maxWorkers=2`: Test Files 373 passed (373), Tests 7460 passed (7460),
VERDICT command-exit 0.
- Whole-workspace `turbo run build --filter=!@objectstack/docs
--concurrency=2`: 72 successful, 72 total, VERDICT command-exit 0. It
was run so that `check:dual-build-cjs-loads` could measure.
- Gates:
- `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` with no paths derived 87 commands. All 87
exit 0, `check:dual-build-cjs-loads` included ("106 published require
entry point(s) across 66 package(s) load").
- `--ran` prints "✓ dispatch-gates --ran: 87 derived famil(ies)
accounted for — 87 run, 0 NOT-MEASURED (a DERIVED zero — all 87 recorded
an exit code and none of them is 3)".
- The four symbol-anchor sweeps (`check:adr-symbol-anchors`,
`check:scripts-symbol-anchors`, `check:spec-docblock-symbol-anchors`,
`check:adr-anchors`) all exit 0. So does
`check:dispatcher-error-vocabulary`, which was named at dispatch and is
not derived now.
- Artifact-roster block (53 commands printed outside the total): 50 exit
0. Three exit 2 as NOT WIRED without PR context:
`check-closing-target-claim`, `check-partof-closing-keyword` and
`check-single-claim-paths`. Each was rerun with this PR's context and
this body; the results are in the report on the card.
- Gate scripts edited (`check-error-code-casing.mjs`,
`check-type-check-coverage.mjs`): their own suites are their
`--self-test`s, run inside `pnpm check:error-code-casing` ("46
recognizer case(s) + 5 registry case(s) pass") and `pnpm
check:type-check-coverage`, both exit 0. No `*.test.*` file executes
either script; the 21 test files that name them do so in comments.
- eslint, a proven narrowing rather than the repo-wide `pnpm lint`:
- Population: `eslint.config.mjs` matches
`**/*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}`, so it lints the four changed
`.mjs`/`.ts` files. The `.json` files are outside it.
- Count, from `--format json` with `--no-inline-config`: 4 files, 0
errors, 0 warnings.
- Invariance: the config never enables type-aware linting (no
`parserOptions.project`, no `projectService`). No ignore list or
baseline in it names a deleted path. So this diff cannot move a verdict
on any untouched file.
- `pnpm check:nul-bytes`: OK (10209 text files, no raw ASCII control
bytes).
## Deviations
1. The ruling lists "the comment in
`scripts/check-type-check-coverage.mjs` (about `:1399`)" for deletion.
That line is one row of a census dated "on main @ 5886ee6", whose
total (11 files) counts it. Deleting the row would make the dated total
wrong, so the row is annotated "deleted since, with its directory"
instead. No comment now presents the file as live.
2. The file surface goes beyond the claim by two files and two comment
spots. These are the `.pin.ts` docblocks and
`check-type-check-coverage.mjs` about lines 1442-1444 and 1494-1495.
Each stated the deleted `typecheck` leg or config as present, and this
change would have made it false.
## Acceptance notes
- `packages/objectql/tsconfig.test.json` keeps `rootDir: "."`. A static
scan of `src` now finds no import that leaves `src`. The six hits are
string literals inside compiler-probe templates in
`scoped-repository-return-narrowing.test.ts`. So the widening is no
longer load-bearing today, but it is harmless under `noEmit`. Narrowing
it is a separate decision and is not taken here.
- Dated counts in comments were not touched: "299" test files in both
`.pin.ts` docblocks, and "251" in `tsconfig.test.json`. `src` holds 374
test files after this change. Each count is a dated reading this change
does not make false, so it is noted, not edited.
- The docs-drift comment lists 3 changed files with no anchor. Read by
hand: no page under `content/docs`, `docs` or `apps/docs` names
`packages/objectql/scripts`, `tsconfig.scripts.json` or either `.pin.ts`
file. The 17 coarse-fallback pages that mention objectql contain none of
`dry-run-hash`, `tsconfig.scripts`, `test-typecheck`, `checksum_drift`
or `hashSpec` (control: 11 of them contain the literal
`@objectstack/objectql`).
---
_Generated by [Claude
Code](https://claude.ai/code/session_017ErfyP2Rx7XWHJA27QjyUi)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 568dc0b commit eb23966
9 files changed
Lines changed: 29 additions & 678 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | | - | |
| 32 | + | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
0 commit comments