Skip to content

Commit 2808438

Browse files
test(dogfood): the two view resets drop the ?package= the reset door never read (#23105)
Fixes #23084 Clause-②: no ## What changes `packages/qa/dogfood/test/view-container-cross-package-default.dogfood.test.ts`, two lines: the two view resets drop the `?package=${REPAIR}` the reset door never read. - `:174` `DELETE /meta/view/os_qa_shadow_probe?package=${REPAIR}` becomes `DELETE /meta/view/os_qa_shadow_probe` - `:228` `DELETE /meta/view/os_qa_keyed_probe?package=${REPAIR}` becomes `DELETE /meta/view/os_qa_keyed_probe` Nothing else moves. The two `PUT` saves (`:149`, `:203`) keep their `?package=`, because the save door reads it. The closed query set in `packages/rest/src/rest-server.ts` is not widened. No changeset: `@objectstack/dogfood` is private and publishes nothing. ## Why (triage ruling 6131531682, applied as ruled) - The hourly full run has been red on `Dogfood Regression Gate (1/3)` since `038d4c9588` (PR #23070). That PR gave `DELETE {metaPath}/:type/:name` its closed query set, `META_ITEM_RESET_PARAMS = ['state', 'dropStorage', member]` (`rest-server.ts:744`, refused at `:7346`), as route rule 5 asks. `package` is not in it, so these two test calls now get a correct located 400. - The reset handler never read `package`. On `2d21b9c891` the handler's only query reads are `state` (`:7348`), `dropStorage` (`:7357`) and the member selector (`:7386`). The four helpers it calls (`resolveExecCtx`, `walledCatalogRefusal`, `resolveProtocol`, `resolveMetaWriteActor`) read no `req.query` at all. `DeleteMetaItemRequest` declares no package (`protocol.lock-one-resolution.test.ts:607-608` says so). The pre-#23070 handler (`038d4c9588^`) read the same two names, `state` and `dropStorage`, and nothing else. So dropping the parameter changes no behaviour, because the handler already ignored it. - `git grep` on `2d21b9c891`: these two test lines are the only places that put `?package=` on a meta `DELETE`. ## Measured All runs are in this container, on base `2d21b9c891` plus the fix `a61ad11dd3`, through `scripts/pm/os-verify-lock.sh`. The dogfood dependency closure was built first (`pnpm turbo run build --filter=@objectstack/dogfood`, 63/63 tasks). - **Reproduction before** (unmodified file at `2d21b9c891`): `Tests 2 failed | 2 passed (4)`. Both failures are `AssertionError: expected 400 to be 200`, at `:175:28` (steps 1-7) and `:229:28` (keyed member). This matches the hourly run. - **After** (`a61ad11dd3`): the same file gives `Test Files 1 passed (1)`, `Tests 4 passed (4)`, and the lock reports `VERDICT command-exit 0`. - **Shard 1/3** (`OS_TEST_SHARD=1/3 pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=2`, CI's own carrier, at `a61ad11dd3`): `Test Files 87 passed (87)`, `Tests 718 passed (718)`, and the lock reports `VERDICT command-exit 0`. - The 87 files match vitest 4.1.11's `BaseSequencer.shard` slice (sha1 of the root-relative path, `[0, 87)` of 259), recomputed locally. That slice contains this file. - **Typecheck:** `pnpm --filter @objectstack/dogfood run typecheck` exits 0. `tsc --listFiles` counts the edited file once, so the program does cover it. - **Derived gates:** `dispatch-gates --commands` lists 53 commands, the same list on `2d21b9c891`, on `a61ad11dd3` with no paths, and on current `origin/main` `abf86554c9`. All 53 exit 0 at `a61ad11dd3`. - `check:dual-build-cjs-loads` first exited 3 (`PREREQUISITE NOT MET`, 8 packages unbuilt). It exited 0 once those were built: `107 published require entry point(s) across 66 package(s) load`. - `--ran` reconciliation: `53 derived famil(ies) accounted for`. - **Lint, proven narrowing over the one touched file:** 1. Population, read from eslint's own config: `isPathIgnored: false`, with 5 rules enabled for the file. 2. File count, from `--format json`: 1 file, 0 errors, 0 warnings, exit 0. 3. Invariance: the resolved config has no `parserOptions.project` or `projectService`, and the 5 rules are per-file AST rules. So this diff cannot move any other file's verdict. ## For #23072: the PUT door does read `package` `PUT {metaPath}/:type/:name` reads `package` at `rest-server.ts:7175` (`metaItemPackageBinding(req.query?.package)`) and threads it as `packageId` into the save request (`:7225`). The handler's other query reads: - `force` (`:7166`); - `mode`, read a frame down in `metaSaveRequestOptions` (`:7146`, `meta-save-request.ts:94`); - the repeat guard names `['force', 'package', 'mode']` (`:7145`). The PUT declares no closed set yet. The test's `PUT ...?package=${REPAIR}` at `:203` carries weight: `:222` asserts `_packageId` is `REPAIR`. This line is not changed here. ## Acceptance notes - Not merged with `origin/main`: it moved 4 commits during this run (`abf86554c9`: lint, metadata-protocol, objectql, CI timing scripts). This diff is two test lines and dogfood runs only in the full battery, so the pin is the next hourly full run on `main`: `Dogfood Regression Gate (1/3)` green. - Shards 2/3 and 3/3 were not run locally, by declared narrowing. The edited file is in shard 1, and every other dogfood file boots its own app or a per-worker shared one that this file is not part of. CI's full battery runs all three. - The same hourly run's `Test Core (6/6)` red is `shard-timing-drift` and is not this card, as the claim notes. --- _Generated by [Claude Code](https://claude.ai/code/session_01VoSxBQujKLZKPwK2u5ehQ6)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8464380 commit 2808438

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

‎packages/qa/dogfood/test/view-container-cross-package-default.dogfood.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ describe('dogfood: a bare-list container on another package\'s object leaves its
171171
expect((await byName('os_qa_shadow_probe')).list).toEqual(probe('os_qa_shadow_probe').list);
172172

173173
// 7. Delete the probe: the packaged default is still what both doors answer.
174-
const deleted = await stack.apiAs(token, 'DELETE', `/meta/view/os_qa_shadow_probe?package=${REPAIR}`);
174+
const deleted = await stack.apiAs(token, 'DELETE', '/meta/view/os_qa_shadow_probe');
175175
expect(deleted.status).toBe(200);
176176
await expectDefaultUnchangedOnBothDoors();
177177
});
@@ -225,7 +225,7 @@ describe('dogfood: a bare-list container on another package\'s object leaves its
225225
expect(own[0].isDefault).toBeUndefined();
226226
await expectOnlyThePackagedListDefault();
227227

228-
const deleted = await stack.apiAs(token, 'DELETE', `/meta/view/os_qa_keyed_probe?package=${REPAIR}`);
228+
const deleted = await stack.apiAs(token, 'DELETE', '/meta/view/os_qa_keyed_probe');
229229
expect(deleted.status).toBe(200);
230230
await expectDefaultUnchangedOnBothDoors();
231231
});

0 commit comments

Comments
 (0)