Symptom
All 17 cases in packages/services/service-storage/src/attachment-access-hooks.test.ts error with:
TypeError: withoutOperationPrivateKeys is not a function
The predicate-less unscoped-multi-delete refusal (#4757) cannot be expressed over REST (deleteMany with no ids/where → 400 before the hook is reached), so it rests on this unit pin — which cannot run in the checkout, leaving #4757unguarded by an executable test here.
Root cause
Located — a build-ordering / CI test-infra gap, not a runtime defect. withoutOperationPrivateKeysis exported on origin/main at packages/core/src/security/operation-private-keys.ts:115 (and re-exported from packages/core/src/security/index.ts:145). The test resolves a stale built@objectstack/core that predates that export; the source is correct and the live server enforced every other gate in this item. The fix is a CI/build-ordering one: rebuild @objectstack/core before running the service-storage suite (or give the pin a live oracle).
Reproduction
Against the prebuilt tree, run attachment-access-hooks.test.ts → 17/17 error TypeError: withoutOperationPrivateKeys is not a function. Confirm git grep withoutOperationPrivateKeys origin/main -- packages/core/src/security/operation-private-keys.ts shows the export exists → the source is not missing the function; the built dist is stale.
Source
Extracted from the QA run #7635 (framework 92f26f7, console 6314e87f).
Symptom
All 17 cases in
packages/services/service-storage/src/attachment-access-hooks.test.tserror with:The predicate-less unscoped-multi-delete refusal (#4757) cannot be expressed over REST (
deleteManywith noids/where→ 400 before the hook is reached), so it rests on this unit pin — which cannot run in the checkout, leaving #4757unguarded by an executable test here.Root cause
Located — a build-ordering / CI test-infra gap, not a runtime defect.
withoutOperationPrivateKeysis exported onorigin/mainatpackages/core/src/security/operation-private-keys.ts:115(and re-exported frompackages/core/src/security/index.ts:145). The test resolves a stale built@objectstack/corethat predates that export; the source is correct and the live server enforced every other gate in this item. The fix is a CI/build-ordering one: rebuild@objectstack/corebefore running the service-storage suite (or give the pin a live oracle).Reproduction
Against the prebuilt tree, run
attachment-access-hooks.test.ts→ 17/17 errorTypeError: withoutOperationPrivateKeys is not a function. Confirmgit grep withoutOperationPrivateKeys origin/main -- packages/core/src/security/operation-private-keys.tsshows the export exists → the source is not missing the function; the built dist is stale.Source
Extracted from the QA run #7635 (framework 92f26f7, console 6314e87f).