paulguckian7/Paper-4B-Defensive-Tempo-Estate-Structure-and-Collapse: Time and Adaptation, adds E8 agent-model cusp-map
Abstract
<!--StartFragment--> PhDPaper4B v0.23 — Time and Adaptation on the frozen CEMT substrate Simulation code for Paper 4B, "Defensive Tempo, Estate Structure and Collapse: Cyber-Risk Propagation on a Frozen Substrate" (CEMT programme). This release is the single-file, reproducible simulator behind every table in Paper 4B. It is self-contained (one Python file, numpy only) and carries the frozen propagation core embedded and hash-checked, so a reader can regenerate the paper's results from one command. This version adds E8, a direct two-start bistability map of the agent model (--mode cuspmap / cuspmap-fine), which is the only code change over v0.22. Every other table is produced by the same code as v0.22. Highlights One file, numpy only. No scipy, no scikit-learn, no external model code. The frozen core (cemt_core v0.8, set digest 97dbae47...) is embedded and verified at load; a mismatch aborts the run. Every result in the paper regenerates from a single --mode, or from the interactive menu. Each run writes its seeds, full configuration and raw per-run outcomes, so every number is traceable. What is new in v0.23 E8 agent-model cusp-map (--mode cuspmap, --mode cuspmap-fine). A two-start test per grid cell (clean start versus collapsed start, ungated recovery) that maps where the agent model shows persistent, initial-condition-dependent bistability over the tested horizon. Three planes: Plane A (spread x recovery, adaptation off), Plane B (C_S x recovery, adaptation on) and Plane C (spread x C_S at fixed recovery, the sharp structural test). A fine chain-only variant (cuspmap-fine) resolves the shape of the bistable set. This is the only functional change from v0.22; E1 to E7 are unchanged. What is included PhDPaper4B.py — the simulator (v0.23). Self-contained; running it prints the banner PhDPaper4B v0.23 (2026-10-10) and frozen core 97dbae4714b2 verified: True. RELEASE_NOTES.md — this file. The bond-percolation test is built into the main file (--mode percolation, and inside --mode validate / --mode paper); no separate script is needed. Run outputs are not committed; they are produced locally under the run root (see below). Requirements Python 3.9 or later numpy pyyaml is optional and only used by the Stage 0 scenario self-check. No other third-party packages are required. Quick start Launch with no arguments for the interactive menu: python PhDPaper4B.py Or run a specific experiment from the command line: python PhDPaper4B.py --mode paper # the full evidence suite (E1-E5) python PhDPaper4B.py --mode cusp # the cusp reduction test (E7) python PhDPaper4B.py --mode blindtest # the visibility-free lever (E6) python PhDPaper4B.py --mode cuspmap # the agent-model bistability map (E8, planes A/B/C) python PhDPaper4B.py --mode cuspmap-fine # the fine chain-only map (E8) The banner should read PhDPaper4B v0.23 (2026-10-10) and report frozen core 97dbae4714b2 verified: True. Run root resolves in this order: --out-root, then $CEMT_RUNS, then C:\cemt_runs on Windows or ~/cemt_runs elsewhere. Results land in /4B/ _p4b_ _v0_23/. A note on parallelism: --workers defaults to CPU cores minus one. Each mode prints a per-cell progress heartbeat. If the process pool ever stalls at start-up on Windows (a known, intermittent spawn issue), interrupt and rerun with fewer workers, or --workers 1 for a serial run. Reproducing the paper Paper result | Command | Output -- | -- | -- Full suite (E1-E5) | --mode paper | P4B_PAPER.md and subfolders E1 transition / fold | --mode all | fold/P4B_summary.md E2 tempo decomposition | --mode twocad | twocad/P4B_twocad.md E3 hysteresis + bistability | (in --mode paper) | hysteresis/P4B_hysteresis.md E4 robustness | --mode robust | robust/P4B_robustness.md E5 epidemic + percolation (matched n=40) | --mode validate | reduction/reduction_test.json, reduction/percolation_test.json E6 blind-lever (with arm-difference CIs) | --mode blindtest | P4B_blindtest.md E7 cusp (analytic located cusp + ungated control) | --mode cusp | P4B_cusp.md E8 agent-model cusp-map (planes A/B/C) | --mode cuspmap | P4B_cuspmap.md E8 fine chain map | --mode cuspmap-fine | P4B_cuspmap.md Order-sensitivity | --mode ordertest | P4B_ordertest.md Frozen-core self-check | --mode stage0 | console Confirmatory settings: n = 40 estate nodes, horizon 1000 ticks, 4 seed blocks x 100 runs per cell (400 independent runs per cell). On a 15-worker machine the full suite takes roughly 1.5 to 2 hours; the cusp, cusp-map and validation modes take minutes. Append -pilot to the suite, two-cadence, hysteresis, blindtest, ordertest or cusp modes for a fast reduced-scale smoke of the same pipeline. Outputs and provenance Each run writes a timestamped folder containing: run_record.json — code and spec version, frozen-core digest and verification flag, seeds, estate size, horizon, runs per cell, and the full design. per_run*.json — the raw per-run outcomes behind every aggregated statistic. a .csv of the aggregated grid. a human-readable P4B_*.md summary. Statistics are computed over independent runs: each run per cell uses a distinct seed that governs both the estate construction and the stochastic dynamics, so bootstrap intervals resample independent observations. The blind-lever arms (E6) and the gated/ungated hysteresis variants (E7) share per-run seeds, so their differences are reported with a paired bootstrap. The cusp-map (E8) compares a clean start and a collapsed start under ungated recovery per cell. Integrity The propagation substrate (cemt_core v0.8) is embedded byte for byte, zlib-compressed and base64-encoded, and its set digest 97dbae47... is checked at load. No node-level condition of the frozen core is modified by this file; all driver and engine logic (timing, blocking, reconfiguration, the blind lever, the acquisition-check order flag, the heuristic scalar reduction, the cusp-map) sits above it. Scope and limitations This is an exploratory, proof-of-principle study on synthetic estates. Its object is system collapse, the macrostate (the compromised fraction crossing a majority threshold), not the compromise of any single node. It characterises where collapse can occur and what shape it takes; it does not forecast incidents and is not fitted to incident data. The cusp (E7) is a property of a heuristic scalar reduction, whose located cusp and fold curves are computed analytically from the stated normal form (--mode cusp reports the coordinates, the fold window and the f = f' = f'' = 0 verification). The reduction's cusp has not been shown to be the same object as the stochastic transition. The cusp-map (E8) maps the agent model directly. It shows persistent, initial-condition-dependent bistability over the tested horizon on the chain and mesh, and none on the star, so estate structure sets the kind of collapse, and the structural tempo C_S does not move the transition. It is a two-start finite-horizon test, not a bifurcation analysis: it does not locate equilibria, unstable branches or saddle-node bifurcations, so no attractors or fold curves are claimed for the agent model. The agent-model bistable set is a bounded band rather than a wedge closing to a point, and it is widest where the reduction's cusp closes, so over the tested range the evidence runs against the reduction's cusp living in the full model. A mean field derived from the agent rules and a two-parameter continuation of it remain the proper test, and are left to later work. The epidemic and percolation baselines (E5) are computed on separate stripped graphs at the same n=40 as the main experiments, and are contextual, compared on ordering rather than as a common critical point. The blind-lever result (E6) is a bounded comparison between two specific policies on the chain; it shows no benefit on the star or mesh at the budget tested (both at the collapse ceiling). See the paper's Limitations section for the full list. Changelog v0.23 — E8 agent-model cusp-map added (--mode cuspmap, --mode cuspmap-fine): a two-start bistability map of the agent model over the reduction's own control plane (spread x recovery) and a structural test (spread x C_S at fixed recovery), under ungated recovery. Finds persistent, initial-condition-dependent bistability on the chain and mesh and none on the star (structure sets the collapse regime), the structural tempo eliminated as a transition-controlling axis, and a bounded band rather than a cusp, so the reduction-to-agent correspondence is contra-indicated over the tested range. No change to E1 to E7. v0.22 — E7 cusp located analytically from the normal form (f = f' = f'' = 0): reports the cusp coordinates, the fold (saddle-node) window by control, and a residual check, replacing the earlier grid-edge estimate. Ungated-recovery control now reports paired-bootstrap confidence