wake/W3 hardening: align digest.sh fail-loud validator to treat top-level .claim as actionable (non-canonical locator-gate gap) #905
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Non-blocking follow-up from the #904 (W3) review. In
packages/mosaic/framework/tools/wake/digest.sh, the fail-loud locator gate treats an entry as actionable viaclass=="actionable"OR.locators.claim, but the RENDER tier also honors a top-level.claim(jq -r ".claim // .locators.claim"). A hand-crafted entry{"class":"reaction","claim":"...","locators":{}}fed via--stdin/--from-filecan therefore render asCLAIM@seqwith an EMPTY locator, escaping the exit-4 hard-locator gate. NOT reachable via the canonical--from-storepath (store.sh never emits a top-level.claim), and the two-tier UNTRUSTED/VERIFY-LIVE framing still applies (degrades to search-instead-of-one-call, NOT a trust bypass) — so non-blocking. Fix: align the fail-loud validator (digest.sh:241) to also treat a top-level.claimas actionable, so the locator gate covers the non-canonical--stdin/--from-fileinputs too. Part of #892.