Skip to content

Prune demo GIFs to three, and fix the hard-cap demo to prove the cap fires#98

Merged
Pyronewbic merged 3 commits into
mainfrom
demos/prune-gifs-and-fix-hardcap
Jul 22, 2026
Merged

Prune demo GIFs to three, and fix the hard-cap demo to prove the cap fires#98
Pyronewbic merged 3 commits into
mainfrom
demos/prune-gifs-and-fix-hardcap

Conversation

@Pyronewbic

Copy link
Copy Markdown
Owner

Three logical commits (rebase-merge preserves them individually).

docs: prune demo GIFs from nine to three

Keep only the demos a GIF earns over prose — agent (hero), npm supply-chain, hard-cap — and cut the other six. docs/policy.md gets the real pre-build refusal output (captured from a run) in place of its GIF. Assets: 1.96 MB → 664 KB. No surveyed security tool ships more than one demo GIF.

fix(demo): make the hard-cap demo prove the cap fires, and test it

The old demo asserted nothing — its workload printed "killed mid-flight by the cap" as a literal string, so the shipped GIF showed 131 KB uploaded (a tenth of the cap), curl exit 0, receipt 0 blocked, captioned as the cap working. The cap never fired in that recording.

  • Workload split into hard-cap-demo.workload.sh; every verdict now derived. It re-runs the warm GET that just succeeded to distinguish the cap (box-wide egress death) from a slow upstream (curl's exit 28 is a timeout either way).
  • Config runs sh demo.sh, so cat sluice.config.sh shows posture, not 500 chars of curl.
  • New hardcap: the cap FIRES test drives >1 MiB through squid and asserts packets land on the DROP counter — verified it fails (cap → 100 MiB → red at the assertion) before trusting the pass. Also corrects a false header claim: iptables -S prints the configured quota, not the remaining.

The cap itself was never broken (596 pkts accepted, 64 dropped once exhausted) — only the evidence was.

chore(demo): add the laundering-cover tape and fixture

Reel source (no GIF, no doc embed). Real agent posture; both SLUICE_STRICT_LAUNDERING exit codes verified against real runs.


Validation: test-unit 419/419, lint clean, build-check in sync (no src/ change), verify-security-hardcap.bats 7/7 with a negative control. Linux VM not run — the new test's iptables/awk parsing is validated by CI's required security escape-hatches (Docker) lane on real Linux (the test skips, not fails, where xt_quota is absent).

🤖 Generated with Claude Code

Keep only the three demos a GIF earns over prose - agent (hero), npm
supply-chain, and hard-cap - and cut the other six, whose payload is
copy-pasteable text a fenced block conveys better and a test can verify.

- delete fleet-audit, learn, lock, onboard, overlay, policy-refusal GIFs
- docs/policy.md: replace the policy-refusal GIF with the real pre-build
  refusal output (captured from a run), naming the overlapping deny-ip
- drop the now-orphaned embeds from README, examples, operations,
  supply-chain, and hardening (overlay)

No security tool in the surveyed cohort ships more than one demo GIF;
this brings the asset set from 1.96 MB toward that norm.
The old demo asserted nothing. Its workload printed "killed mid-flight by
the cap" as a literal string next to an interpolated "$?", so a 503 from
the upstream, a server-truncated upload, and curl exiting 0 all still
rendered as the cap working - and that is exactly what the shipped GIF
showed: 131 KB uploaded (a tenth of the cap), curl exit 0, receipt 0
blocked. The cap never fired; the caption said it did.

- split the workload into assets/demos/hard-cap-demo.workload.sh: every
  verdict is now DERIVED. It loops until the wire dies, then re-runs the
  warm GET that just succeeded - since curl's exit 28 is a timeout a slow
  upstream also produces, only a box-wide egress death distinguishes the
  cap. Reports INCONCLUSIVE and exits non-zero when it cannot show the cap.
- config now runs `sh demo.sh`, so `cat sluice.config.sh` shows posture
  (the allowlist + the cap), not 500 characters of curl.
- regenerate the GIF from a real capped run; rewrite the alt text from the
  frames, not the tape's intent.
- add "hardcap: the cap FIRES" to verify-security-hardcap.bats: drive
  >1 MiB through squid and assert packets land on the DROP counter.
  Verified it fails (cap raised to 100 MiB -> red at the assertion) before
  trusting the pass. The suite header also claimed `iptables -S` prints the
  remaining quota; it prints the configured value - enforcement is only
  visible via `-L -v` counters. Corrected.

The cap itself was never broken - 596 pkts accepted, then 64 dropped once
exhausted. Only the evidence was.
Source for a laundering beat: a real agent posture (the claude preset must
allow api.anthropic.com, a POST-capable host) shows the run succeed with a
yellow note, then SLUICE_STRICT_LAUNDERING=1 refuses the same command,
exit 1. The refusal text is warn_laundering's own, with a working engine
present, so it cannot pass for a die() elsewhere - both exit codes were
verified against real runs.

No rendered GIF and no doc embed yet: this is reel source, kept in-repo
alongside the other tapes rather than shipped as a docs asset.
@Pyronewbic
Pyronewbic enabled auto-merge (rebase) July 22, 2026 10:31
@Pyronewbic
Pyronewbic merged commit 0f1e44f into main Jul 22, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant