Commit 0f610b9
Neo
Fix gateway fail-direction: gate-fault on a value-moving action now fails CLOSED
Reviewer found gate_action's exception handler failed OPEN (blanket allow=True on any
error). Masked under OBSERVE today, but a live fail-open on the money path's outer
layer the moment ENFORCE is flipped. Made the fail-direction action-type-aware.
- runtime/access_policy.py: could_move_value(action_type) — a coarse PUBLIC fail-
direction helper. Deny-unless-clearly-a-benign-read, so a value-moving action can
never be missed and wrongly allowed; unknown/empty labels fail closed too. Generic
read verbs only — no thresholds, allowlists, or private action sets. The authoritative
classification still lives in the private gate.
- gateway/security_gate.py gate_action: on a gate fault, value-moving / unknown -> deny
(allow=False, would_block=True, generic reason); clearly-benign reads observe-allow so
a transient fault doesn't break them.
Part 2 sweep also fixed a PRE-EXISTING sibling fail-open (not in b575add) on the primary
gated path: ProtocolStack.pre_action's Morpheus except logged and FELL THROUGH (approved
stayed True -> tool proceeded). Now fails closed for value-moving actions via the same
coarse label (resolving the real action behind the platform_action mega-tool). Benign
reads still continue on a transient fault.
Flags unchanged (OBSERVE, App Attest enforce OFF, testnet) — this does not enable
enforcement; it makes the eventual enforcement safe. Suite 171 green; boundary clean
(generic read verbs only).1 parent b575add commit 0f610b9
3 files changed
Lines changed: 66 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
116 | | - | |
117 | | - | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
118 | 129 | | |
119 | 130 | | |
120 | 131 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
63 | 101 | | |
64 | 102 | | |
65 | 103 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
354 | 354 | | |
355 | 355 | | |
356 | 356 | | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
357 | 372 | | |
358 | 373 | | |
359 | 374 | | |
| |||
0 commit comments