Commit 33b52fe
* fix(metadata-protocol): classify a producer-marked refusal at the producer, not as a store outage
A metadata app's sandboxed hook on `sys_metadata` can refuse a read and mark its
refusal with `userMessage` (#9934 — presence IS the marking). Every such refusal
was handed to `metadataStoreUnavailableError`, which builds a fresh Error
carrying only code/status/cause; `declaredUserMessage` reads the top level and
never `cause`, so the mark died at the producer. A marked refusal and a driver
outage left `getMetaItems` as the same 503 with the same sentence.
The wrapper now classifies first: a marked refusal travels its own refusal
category with the author's text verbatim, and an unmarked failure keeps #8136's
deliberately non-quoting 503, byte for byte. `deletePackage`'s per-item
`failed[]` / `cleanups[]` follow the same classification and gain the optional
`userMessage` member the rows had no channel for.
The declined alternative — forwarding the mark across the 503 — is not
implemented: nothing from `cause` crosses that door, and a negative pin with a
positive control asserts the underlying failure text appears in no field
outside it.
Maintainer ruling 2026-08-27 (option B).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UjujZN219uFzBhSYfMykCd
* test(metadata-protocol): record the measured ablation directions in the file header
The prediction was wrong about section 2's granularity — two of its cases speak
about the marked side and must go red on an unfixed producer. Recorded as
measured rather than reconciled.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UjujZN219uFzBhSYfMykCd
* chore(gates): record the new test file's pinned engine doubles in the contract ledger
check:engine-double-contract asked for it by name: the new doubles route
through assertEngineDeleteDispatch / assertEngineFindOnePredicate, and the
pinned ledger has to learn about them or it never protects this file.
Regeneration is additive — 2 rows added or grown, 0 lost.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UjujZN219uFzBhSYfMykCd
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 7b97895 commit 33b52fe
4 files changed
Lines changed: 765 additions & 5 deletions
File tree
- .changeset
- packages/metadata-protocol/src
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
0 commit comments