NK-WP-0056-T07: founder kill switch and execution findings in posture feedback
All checks were successful
Build and Publish bounded-executor / build-and-push (push) Successful in 8s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Identity provider journey acceptance / provider (push) Successful in 37s

- cli: SIGTERM/SIGINT (kubectl delete job) sets the stop flag; the runner stops at the next
  step boundary and reverts. A stop before consume refuses and spends nothing.
- posture feedback v0.1 section 4a: --receipts reads bounded-executor events through the
  receipt validator: execution-receipt-missing, -not-completed, -reverted, -budget-pressure,
  and the aggregate execution-recurring-revert. Owners come from the authoritative
  tools/posture-feedback/execution-owners.yaml, never inferred.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 523928@bnt-lap001
Assistant-Session: 6c737afb-9c14-4152-9f02-477214b9c350
This commit is contained in:
tegwick 2026-11-04 01:44:12 +01:00
parent d7133e3a04
commit 9bd7bf0bdc
9 changed files with 309 additions and 3 deletions

View file

@ -336,5 +336,20 @@ class RequestPhase(Base):
self.assertNotIn(SECRET, text)
class KillSwitch(unittest.TestCase):
def test_sigterm_sets_the_stop_flag_the_runner_reads(self):
import os
import signal
before = {sig: signal.getsignal(sig) for sig in (signal.SIGTERM, signal.SIGINT)}
self.addCleanup(lambda: [signal.signal(sig, h) for sig, h in before.items()])
self.addCleanup(CLI.STOP.clear)
CLI.STOP.clear()
CLI.install_kill_switch()
os.kill(os.getpid(), signal.SIGTERM)
self.assertTrue(CLI.STOP.wait(2))
if __name__ == "__main__":
unittest.main()