From 2d0becf62db48572f6cdf29502b5c943d117bfaa Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Sun, 10 May 2026 11:55:36 -0400 Subject: [PATCH] ticket #000043: open empirical-tightening sub-ticket for T3 bound constants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #000036 §10 enumerated three open questions for tightening C_B1 / C_B2 / C_B3 below their conservative-by-construction data-processing-inequality ceilings of 1.0. #000036 §7 Phase 2 explicitly parks them as a single deferred work item but didn't have its own ticket. This commit captures Phase 2 as #000043 so the work doesn't get lost across three unrelated tickets and the gating dependencies are visible in the ticket index. §2 of the new ticket walks the three tightening paths: - §2.1 C_B1 (gradient-bias) — feeds from #000034 Phase 1b (real v7 checkpoint + Hessian-alignment probe). Verdict → C_B1 estimate via alignment-score distribution. - §2.2 C_B2 (LR-trajectory diversity) — per-deployment 1-Wasserstein clustering across LR-grid mini-replicas. Cluster count → effective channel symbols. - §2.3 C_B3 (SGD shuffle regime) — cheapest path; deployment configuration audit (DataLoader settings). Random-shuffle → C_B3 ≈ 1/√N_b; cyclic → ~1; adversarial → 1. §3 ships the override surface already landed in t3_bound_calculator.py (--c-b1 / --c-b2 / --c-b3 flags) — Phase 2 doesn't change the calculator's interface, only the numeric values plugged in. New §3.2 sketches a per-deployment YAML config-file shape; §3.3 routes measurements back into soft-hash-channel-t3-bound.md §7.4 + §10 closure. §7 status: parks until v7 plastic-training has at least one active deployment AND either #000034 Phase 1b lands (unlocking §2.1) OR a cheap-path operator audit lands (unlocking §2.3). Partial closure (any one of §2.1/§2.2/§2.3 individually) is acceptable. TICKETS.md index row added; Next ID bumped 000043 → 000044. Status note (separate finding from this commit's scope): fox landed a comprehensive test_t3_bound_calculator.py (51 new tests; full suite now 1720 passing vs my 1669 from 1dfb8b9). Tests validate the T3 calculator's mathematical identities (B1/B2/B3 isolation, monotonicity), input-validation surface, and operator-guidance text mode transitions. fox's tests still untracked at this commit — this commit only stages the ticket draft. Doc-only commit; no code touched. --- docs/TICKETS.md | 3 +- ...ket-000043-t3-bound-constant-tightening.md | 265 ++++++++++++++++++ 2 files changed, 267 insertions(+), 1 deletion(-) create mode 100644 docs/tickets/ticket-000043-t3-bound-constant-tightening.md diff --git a/docs/TICKETS.md b/docs/TICKETS.md index 846602a..a0884c1 100644 --- a/docs/TICKETS.md +++ b/docs/TICKETS.md @@ -66,6 +66,7 @@ Newest first. Update on every open/close. | ID | Title | Status | Opened | Directive | |----------|------------------------------------------------|-----------------------|------------|-----------| +| #000043 | Empirical tightening of T3 bound constants (#000036 Phase 2) | open · awaiting go/no-go (parks until v7 deployment surfaces measurement data) | 2026-05-10 | — | | #000042 | Term-aliases table (vocabulary-mismatch bridge) | closed · 13 rows live across geometry + classical-physics + arithmetic domains by 2026-05-10 | 2026-05-09 | — | | #000041 | Citation-aliases table (PD substitutes for proprietary cites) | closed · 74 rows live as of 2026-05-10 (count grew 40 → 54 → 74; Goldstein/Newton, Mendelson/Enderton/Jech/Landau/Gödel→{Russell IMP, Russell PoM, De Morgan, Boole, Cantor, Peano, Dedekind, SF-LF}, Stanley/Brualdi/Knuth → Bogart+Levin+Keller-Trotter, Dummit-Foote/Barendregt/Böhm-Jacopini → Judson/PLFA/SF, Kolmogorov → Grinstead-Snell+Laplace) | 2026-05-09 | — | | #000040 | Phase 5 resolver fix — phrase + content-token cascade (Hilbert terminology mismatch surfaced) | closed · cascade landed 2026-05-09; lift blocked by 1902-vs-modern vocab; follow-up #000042 | 2026-05-09 | — | @@ -111,4 +112,4 @@ Newest first. Update on every open/close. ## Next ID -`000043` +`000044` diff --git a/docs/tickets/ticket-000043-t3-bound-constant-tightening.md b/docs/tickets/ticket-000043-t3-bound-constant-tightening.md new file mode 100644 index 0000000..2fab7c4 --- /dev/null +++ b/docs/tickets/ticket-000043-t3-bound-constant-tightening.md @@ -0,0 +1,265 @@ +# Ticket #000043 — Empirical tightening of T3 bound constants + +**Status:** open · awaiting go/no-go +**Opened:** 2026-05-10 +**Scope:** Replace the conservative-by-construction +``C_B1 = C_B2 = C_B3 = 1`` constants in +``docs/soft-hash-channel-t3-bound.md`` with deployment-measured +values where possible. Each tightening path is a separate +empirical experiment; this ticket organizes them as a +single deferred work item that opens once at least one of the +prerequisite measurements becomes available. +**Audience:** maintainers of the v7 plastic-training spec; #000036 +follow-up; downstream operators sizing nonce-window length under +real workload data. +**Hard constraint:** the framework in #000036 §6 (closed-form +bound) does NOT change. Tightening replaces specific constants; +the call sites of ``t3_bound_calculator.py`` are unchanged. + +--- + +## 1. Problem statement + +#000036 §10 explicitly lists three open questions for empirical +tightening of the T3 per-window covert-channel bound. Each one +is a self-contained measurement experiment but they share the +same downstream consumer (the calculator's ``--c-b1`` / +``--c-b2`` / ``--c-b3`` overrides). Capturing them as a single +ticket prevents the work from getting lost across three +unrelated tickets and clarifies the gating dependencies. + +The framework already lands as #000036 Phase 1; this ticket is +the **Phase 2 work item** that #000036 §7 status calls out as +"parks for v7 deployment data". This ticket exists so that +parking has a concrete name future blackops shifts can reference. + +--- + +## 2. The three tightening paths + +### 2.1 C_B1 — gradient-bias channel efficiency + +**Status quo**: ``C_B1 = 1`` (data-processing inequality +ceiling). + +**Tightening hypothesis**: real loss surfaces have reduced +adversary-controllable directions due to Hessian rank +deficiency. The effective bandwidth is bounded by the +*number of low-eigenvalue Hessian directions* the adversary +can steer cheaply, not by the full parameter dimension. + +**Measurement path**: feed from #000034 Phase 1b. Once a real +v7 checkpoint exists and the Hessian-alignment probe runs +against it, the alignment-score distribution gives a direct +estimate of `C_B1`: + +- ``STRUCTURAL_ALIGNMENT`` verdict ⇒ `C_B1` close to 1 + (φ_linear is exploitable; T3 bound near worst case). +- ``NO_ALIGNMENT`` verdict ⇒ `C_B1 ≈ rank(H_low) / dim_d`, + typically much less than 1. +- ``ANTI_ALIGNED`` verdict ⇒ `C_B1` floors lower still. + +**Prerequisite**: #000034 Phase 1b lands (real v7 checkpoint ++ alignment probe run). No measurement is meaningful until +v7 plastic-training has a deployment target producing +representative training data. + +**Acceptance**: a numeric `C_B1` value derived from a Phase 1b +alignment-probe run, with confidence interval, plumbed back +into the `t3_bound_calculator.py` defaults (or surfaced as a +documented per-deployment override). + +### 2.2 C_B2 — LR-trajectory diversity + +**Status quo**: ``C_B2 = 1`` (full categorical-channel +capacity). + +**Tightening hypothesis**: many of the `R` LR levels in a +typical schedule produce parameter trajectories that converge +to similar `Θ`. The loss surface's basin geometry damps +small-LR perturbations. The effective channel symbol count +is the *number of LR-distinguishable trajectories*, not the +full grid size `R`. + +**Measurement path**: per-deployment 1-Wasserstein distance +between final-checkpoint distributions across the LR grid. +Concretely: + +1. Train `R` parallel mini-replicas (small budget — same + architecture, fewer steps) under each LR level. +2. Compute pairwise 1-Wasserstein distances between the + resulting `Θ` distributions. +3. Cluster — the effective LR-symbol count is the number of + clusters separated by ≥ ε (deployment-specific tolerance). +4. ``C_B2 = log₂(effective_symbols) / log₂(R)``. + +**Prerequisite**: #000034 Phase 1b (same v7 checkpoint +infrastructure) plus the parallel-replica training framework. +Out of scope today; opens when v7 deployment ramp-up provides +the compute budget for parallel-replica training. + +**Acceptance**: a numeric `C_B2` value derived from +1-Wasserstein clustering on a representative deployment, with +the cluster count + per-cluster representative-LR documented. + +### 2.3 C_B3 — SGD shuffle regime + +**Status quo**: ``C_B3 = 1`` (adversarial-order assumption). +Already substantially tighter than the naive ``log₂(N_b!)`` +bound thanks to the Bottou-Bousquet refinement in #000036 +§5, but conservative for typical SGD which is random-shuffle. + +**Tightening hypothesis**: random-shuffle SGD has +``C_B3 = O(1/√N_b)``, several orders of magnitude tighter +than the adversarial-order assumption. Cyclic-shuffle SGD +has `C_B3 = O(1)` per epoch. Adversarial-order SGD is the +worst case. + +**Measurement path**: classify the deployment's SGD shuffle +regime: + +- If random-shuffle (`torch.utils.data.DataLoader(shuffle=True)` + or equivalent): ``C_B3 ≈ 1/√N_b``. +- If cyclic / fixed-order: ``C_B3 ≈ 1`` (adversarial-order + effectively realized passively). +- If adversarial-order is the threat model (T3 controls + ordering): ``C_B3 = 1`` (current default; can't tighten). + +**Prerequisite**: deployment configuration audit. Cheaper than +Phase 1b — answerable from the training script + DataLoader +settings, no checkpoint required. + +**Acceptance**: documented `C_B3` value per deployment shuffle +regime, with the audit method captured so future operators can +re-run the classification on changed schedules. + +--- + +## 3. Implementation sketch + +### 3.1 Calculator override surface + +Already landed in #000036 Phase 1. ``t3_bound_calculator.py`` +accepts ``--c-b1``, ``--c-b2``, ``--c-b3`` flags as floats in +``[0, 1]``. Phase 2 doesn't change the calculator's interface; +it just produces the numeric values to plug in. + +### 3.2 Per-deployment configuration capture + +When a v7 deployment lands, capture the three constants in a +per-deployment config: + +```yaml +# example: my-deployment-t3-config.yaml +phi_alignment_verdict: NO_ALIGNMENT # from #000034 Phase 1b +c_b1: 0.05 # from § 2.1 measurement +c_b2: 0.42 # from § 2.2 measurement +c_b3: 0.025 # 1/√1024 random-shuffle +notes: + - "phi_alignment ran 2026-XX-XX on commit XXXXXXXX" + - "lr_diversity measured 8 LR levels, 4 clusters → 2 / 3 = 0.42" + - "DataLoader uses shuffle=True with batch_size=1024 → 1/sqrt(1024)" +``` + +Operator passes the file via ``--c-b1``/``--c-b2``/``--c-b3`` flags +or via a new ``--from-config FILE`` flag (deferred — not on the +critical path until at least one deployment's measurements land). + +### 3.3 Update path back into #000036 + +Once a measurement set is captured for any deployment, the +``docs/soft-hash-channel-t3-bound.md`` § 7 numeric examples gain +a fourth subsection (§ 7.4) showing the deployment-specific +bound with its tightened constants. This becomes the +calibration evidence § 10's open questions resolve against. + +--- + +## 4. Out of scope + +- **Implementing v7 plastic training** — this ticket consumes + v7 deployment data; doesn't produce it. +- **Adversarial-training experiments** to validate the + bound itself — covered separately by a future + empirical-validation ticket per #000036 § 10 item 5. +- **Generalizing to B4/B5 control surfaces** (adaptive + optimizer state manipulation, etc.) — also covered by + #000036 § 10, separately ticket-able when those surfaces + surface. +- **Implementing M2 (per-checkpoint nonce) in the v7 codebase** + — separate ticket; this ticket assumes M2 is in place. + +--- + +## 5. Risks + +- **Measurement results don't tighten the bound usefully.** If + a deployment turns out to have ``C_B1 ≈ 1`` (genuine + STRUCTURAL_ALIGNMENT), the tightening fails for that + deployment and the conservative bound stands. Mitigation: + the failure case is itself useful information (#000018 + M1-priority signal); not a wasted experiment. +- **Per-deployment measurements don't generalize.** Each + deployment may need its own constant set. Mitigation: this + is a feature not a bug — operators get deployment-specific + guidance, not a one-size-fits-all bound. +- **Measurement noise.** Lanczos eigenvalue estimation, + 1-Wasserstein clustering, and shuffle-regime classification + all have noise. Mitigation: report constants with confidence + intervals; operators choose the upper-bound CI for safety + margin. + +--- + +## 6. Acceptance criteria + +1. At least one of § 2.1 / § 2.2 / § 2.3 measurements + completes against a real v7 deployment. +2. The resulting numeric constant(s) are captured in a + per-deployment config or a documented update to + ``t3_bound_calculator.py`` defaults. +3. ``docs/soft-hash-channel-t3-bound.md`` § 7 gains a § + 7.4 numeric example showing the tightened bound for the + measured deployment. +4. ``docs/soft-hash-channel-t3-bound.md`` § 10 item(s) + corresponding to the measured constant(s) flip from "open + question" to "resolved 2026-XX-XX via #000043 measurement + on ". + +Partial closure (any one of § 2.1 / § 2.2 / § 2.3 individually) +is acceptable. The ticket can stay in-progress with one or two +measurements landed and others still parked. + +--- + +## 7. Status + +**Open · awaiting go/no-go.** Doc-only spec for the empirical +tightening work. Lands when: + +- v7 plastic-training has at least one active deployment, AND +- Either #000034 Phase 1b lands (unlocking § 2.1) OR a + cheap-path operator audit lands (unlocking § 2.3). + +The full ticket parks until both conditions fire. § 2.3 alone +can land without v7 deployment if an operator audits an +existing arborist deployment's DataLoader configuration. + +Closure criterion: at least one of (§ 2.1 / § 2.2 / § 2.3) +measurements lands a numeric constant + the corresponding +``soft-hash-channel-t3-bound.md`` § 10 open question flips +to resolved. + +--- + +## 8. References + +- ``docs/soft-hash-channel-t3-bound.md`` § 6 (the closed-form + bound being tightened) + § 10 (open questions enumerated). +- ``bench/scripts/t3_bound_calculator.py`` (override surface + already in place). +- Ticket #000036 (parent ticket; this one's a Phase 2 sub). +- Ticket #000034 (Phase 1b unlocks § 2.1 of this ticket). +- Ticket #000018 (parent analysis; § 9.3 closes via #000036 + framework, would close further with #000043's tightened + constants).