#000037 §22: dry-run swap to sweep_weights() + §15.4 added
The dry-run was still using safe_weights(); Phase 1.c shipped sweep_weights() (γ_5f=1.5, λ_capital_cost=0.25, ν_witness_divergence=0.5) precisely for sleep-sweep economics. Swap both call sites in prometheus_sigma_sweep_dryrun.py and label the report Weight profile: sweep (§15.4). §15.4 adds the sweep profile alongside §15.1 safe / §15.2 conservative / §15.3 exploratory so the named-profile registry has a single doc source of truth and the dry-run report's §15.4 reference resolves. §22 dry-run-runs table (3 rows: initial uniform-τ-1d under safe; per-mode τ under safe; per-mode τ under sweep) replaces the prior inline narrative count. Includes a Phase-3-design observation: the sweep profile flattens the softmax (DEFERRED 271 → 369; REJECT 205 → 110; ACCEPT 1 → 0; MARGINAL 2 → 3) because reducing λ_capital_cost + ν_witness_divergence shrinks the gap between high-Δ5F and low-Δ5F branches, so fewer branches reach Kelly's p_i > 0.5 floor. Falsification-fixture proposal count stayed flat (447 → 449) — the §13 step 11 emission path is upstream of decision labeling, so sweep mode preserves information-gathering value while concentrating action-taking on the high-confidence tail. Phase 3 ticket #000045 §2 deliberately leaves softmax temperature un-pinned because of this trade-off.
This commit is contained in:
parent
4e41c73e44
commit
6734f8037f
3 changed files with 78 additions and 39 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Prometheus-Σ Phase 3 sleep-sweep dry-run
|
||||
|
||||
Generated: 2026-05-10T22:33:37Z UTC
|
||||
Generated: 2026-05-10T23:20:32Z UTC
|
||||
Script: `bench/scripts/prometheus_sigma_sweep_dryrun.py`
|
||||
Ticket: #000037 Phase 3 (read-only simulation)
|
||||
|
||||
|
|
@ -14,31 +14,30 @@ Ticket: #000037 Phase 3 (read-only simulation)
|
|||
- UNGROUNDED: 7d (604800s)
|
||||
- Target B sample/shard: 500
|
||||
- Controller budget (Hermes concurrency): 4
|
||||
- Weight profile: safe (§15.1)
|
||||
- Weight profile: sweep (§15.4)
|
||||
|
||||
## Target A — providence_cache sweep candidates
|
||||
|
||||
- Total candidates (rows older than τ_qa): **1913**
|
||||
- Sweep chunks (size 4): 479
|
||||
- Controller runtime: 15.80 ms
|
||||
- Total candidates (rows older than τ_qa): **1927**
|
||||
- Sweep chunks (size 4): 482
|
||||
- Controller runtime: 12.91 ms
|
||||
|
||||
### Audit-mode distribution of candidates
|
||||
|
||||
| audit_mode | count |
|
||||
|---|---|
|
||||
| STRICT | 720 |
|
||||
| HYBRID | 713 |
|
||||
| UNGROUNDED | 471 |
|
||||
| STRICT | 724 |
|
||||
| HYBRID | 720 |
|
||||
| UNGROUNDED | 474 |
|
||||
| CANONICAL_PROJECTION | 9 |
|
||||
|
||||
### Controller decision distribution (per chunk)
|
||||
|
||||
| label | chunks |
|
||||
|---|---|
|
||||
| DEFERRED | 271 |
|
||||
| REJECT | 205 |
|
||||
| MARGINAL | 2 |
|
||||
| ACCEPT | 1 |
|
||||
| DEFERRED | 369 |
|
||||
| REJECT | 110 |
|
||||
| MARGINAL | 3 |
|
||||
|
||||
### Veto kinds observed
|
||||
|
||||
|
|
@ -50,14 +49,14 @@ Ticket: #000037 Phase 3 (read-only simulation)
|
|||
|
||||
- MemoryRoot proposals: 0
|
||||
- SelfModel proposals: 0
|
||||
- FalsificationFixture proposals (§13 Step 11 — high-divergence → 5F-fixture funnel): **447**
|
||||
- Advisory event entries (would write to `controller_events` under Phase 2): 895
|
||||
- FalsificationFixture proposals (§13 Step 11 — high-divergence → 5F-fixture funnel): **449**
|
||||
- Advisory event entries (would write to `controller_events` under Phase 2): 708
|
||||
|
||||
## Target B — document sweep sample
|
||||
|
||||
- Total sampled candidates: **2000**
|
||||
- Sweep chunks (size 4): 500
|
||||
- Controller runtime: 21.82 ms
|
||||
- Controller runtime: 18.33 ms
|
||||
|
||||
### Canonical-shape regex prefilter hits
|
||||
|
||||
|
|
@ -91,9 +90,9 @@ Ticket: #000037 Phase 3 (read-only simulation)
|
|||
|
||||
## Total simulation cost
|
||||
|
||||
- Total branches scored: 3913
|
||||
- Total controller runtime: 37.62 ms
|
||||
- Mean per-branch latency: 9.61 µs
|
||||
- Total branches scored: 3927
|
||||
- Total controller runtime: 31.24 ms
|
||||
- Mean per-branch latency: 7.96 µs
|
||||
|
||||
## Findings & fixes (dry-run iteration log)
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ from arborist.substrate.prometheus import (
|
|||
ControllerDecision,
|
||||
ControllerInput,
|
||||
controller_decide,
|
||||
safe_weights,
|
||||
sweep_weights,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -337,7 +337,7 @@ def sweep_target_a(
|
|||
thinly that Kelly's `p_i > 0.5` floor is never met (a finding from
|
||||
dryrun iteration 1: chunk_size=64 → 100% DEFERRED).
|
||||
"""
|
||||
weights = safe_weights()
|
||||
weights = sweep_weights()
|
||||
|
||||
label_counts: Counter[str] = Counter()
|
||||
audit_mode_seen: Counter[str] = Counter()
|
||||
|
|
@ -448,7 +448,7 @@ def sweep_target_b(shards_dir: Path, sample_per_shard: int, chunk_size: int = 4)
|
|||
chunk_size matches Hermes concurrency budget §11 — see
|
||||
:func:`sweep_target_a` rationale.
|
||||
"""
|
||||
weights = safe_weights()
|
||||
weights = sweep_weights()
|
||||
|
||||
label_counts: Counter[str] = Counter()
|
||||
shape_counts: Counter[str] = Counter()
|
||||
|
|
@ -570,7 +570,7 @@ def render_markdown(a_results: dict, b_results: dict, opts: dict) -> str:
|
|||
lines.append(f"- Target B sample/shard: {opts['sample_b']}")
|
||||
lines.append(f"- Controller budget (Hermes concurrency): "
|
||||
f"{DEFAULT_BUDGET}")
|
||||
lines.append(f"- Weight profile: safe (§15.1)")
|
||||
lines.append(f"- Weight profile: sweep (§15.4)")
|
||||
lines.append("")
|
||||
lines.append("## Target A — providence_cache sweep candidates")
|
||||
lines.append("")
|
||||
|
|
|
|||
|
|
@ -918,6 +918,29 @@ Higher temperature widens the distribution; lower divergence
|
|||
penalty admits speculative branches; lower cost penalty allows
|
||||
more compute spend on exploration.
|
||||
|
||||
### 15.4 Sweep profile (sleep-sweep economics — landed Phase 1.c)
|
||||
|
||||
```json
|
||||
{
|
||||
"gamma_5f": 1.5,
|
||||
"lambda_capital_cost": 0.25,
|
||||
"nu_witness_divergence": 0.5
|
||||
}
|
||||
```
|
||||
|
||||
Tuned for the §22 dry-run economics. Sweep work *deliberately*
|
||||
accepts capital cost in exchange for falsification discovery, so
|
||||
λ_capital_cost drops to 0.25 (vs safe 1.0) and γ_5f bumps to 1.5
|
||||
(vs safe 1.25) to reward falsification-rate improvement. Witness
|
||||
divergence weight drops to 0.5 (vs safe 1.5) because high
|
||||
divergence is *desirable* signal during sweep — it's what surfaces
|
||||
fixture candidates (§13 step 11). Available as
|
||||
``arborist.substrate.prometheus.sweep_weights()`` and registered
|
||||
in ``WEIGHT_PROFILES["sweep"]``. The dry-run simulator
|
||||
(``bench/scripts/prometheus_sigma_sweep_dryrun.py``) uses this
|
||||
profile so the §22 numbers match what Phase 3 will see in
|
||||
production.
|
||||
|
||||
---
|
||||
|
||||
## 16. Phase 1 implementation prerequisites
|
||||
|
|
@ -1276,11 +1299,9 @@ mode `CASE` in `iter_target_a_candidates`: kernel-only modes (CP)
|
|||
default to τ_qa=1d (cheap re-probe, high value when kernel-LLM
|
||||
divergence surfaces); LLM-witness modes (STRICT/HYBRID/UNGROUNDED)
|
||||
stay at τ_qa=7d. Tunable via `--tau-qa-cp-days` + `--tau-qa-days`
|
||||
CLI flags + `PROMETHEUS_SWEEP_TAU_*` make-variables. Result with
|
||||
defaults: 9 CP rows surface alongside the 1,904 LLM-witness
|
||||
candidates → 1,913 total Target A candidates → 1 ACCEPT, 2 MARGINAL,
|
||||
205 REJECT, 271 DEFERRED chunks (chunk_size=4). Phase 3 lifts the
|
||||
per-mode τ table into governance parameters (cache-key hash inputs).
|
||||
CLI flags + `PROMETHEUS_SWEEP_TAU_*` make-variables. Phase 3 lifts
|
||||
the per-mode τ table into governance parameters (cache-key hash
|
||||
inputs).
|
||||
|
||||
**Finding 4 — Target B canonical-shape detection is the real
|
||||
headline.** 4.40% of sampled documents (n=2000) contain
|
||||
|
|
@ -1301,21 +1322,40 @@ burst design.
|
|||
path exercises end-to-end against real corpus data — no fixture-only
|
||||
mocking.
|
||||
|
||||
Total dry-run cost (per-mode τ_qa, defaults CP=1d / LLM=7d, run
|
||||
2026-05-10T22:33Z): **~37.6 ms** to score 3,913 branches across all
|
||||
sweep targets and both shards' worth of providence_cache + a 2,000-
|
||||
doc sample of documents — **9.6 µs per branch** at chunk_size=4 in
|
||||
pure Python. (Prior run with uniform τ_qa=1d: ~55 ms / 4,379 branches
|
||||
/ 12.5 µs per branch — fewer LLM-witness candidates surface under
|
||||
the per-mode default, so the total branch count drops; the
|
||||
per-branch latency delta is within measurement noise and not
|
||||
attributable to a specific code change.) Phase 3 latency budget for
|
||||
the controller itself remains non-binding; the witness fan-out
|
||||
(Hermes calls) is the dominant cost.
|
||||
**Dry-run runs over the §22 iterations (chunk_size=4, pure Python):**
|
||||
|
||||
| run (UTC) | weights | τ_qa policy | branches | runtime | µs/branch | ACCEPT | MARGINAL | REJECT | DEFERRED |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| 2026-05-10 (initial) | safe (§15.1) | uniform 1d | 4,379 | ~55 ms | 12.5 | n/a | 4 | n/a | n/a |
|
||||
| 2026-05-10T22:33Z | safe (§15.1) | per-mode CP=1d / LLM=7d | 3,913 | 37.6 ms | 9.6 | 1 | 2 | 205 | 271 |
|
||||
| 2026-05-10T23:20Z | sweep (§15.4) | per-mode CP=1d / LLM=7d | 3,927 | 31.2 ms | 7.9 | 0 | 3 | 110 | 369 |
|
||||
|
||||
Note on the sweep-vs-safe shift: dropping λ_capital_cost (1.0 →
|
||||
0.25) and ν_witness_divergence (1.5 → 0.5) reduced cost-class
|
||||
separation in the softmax, pulling chunks that previously hit
|
||||
REJECT (negative selected_u) into DEFERRED (positive U but no
|
||||
single branch with p_i > 0.5). The single ACCEPT chunk under safe
|
||||
weights diffused into the DEFERRED pool. Net falsification-fixture
|
||||
proposal count stayed flat (447 → 449) — the §13 step 11 emission
|
||||
path is upstream of decision labeling, so the sweep's information-
|
||||
gathering value preserves while the action-taking value
|
||||
concentrates more aggressively on the high-confidence tail.
|
||||
|
||||
**Phase 3 implementation note (sweep-profile finding).** The
|
||||
flatter softmax under sweep weights surfaces a Phase-3-design
|
||||
question: pair `sweep_weights()` with a sharper `eta_softmax_temperature`
|
||||
(currently default 1.0) so high-Δ5F branches reach the Kelly
|
||||
floor more often, OR keep the current temperature and accept that
|
||||
sweep-mode Phase 3 will write more advisory rows than it acts on
|
||||
(DEFERRED is still informative — it's the chunks worth re-checking
|
||||
next window, not chunks rejected). Phase 3 ticket #000045 §2 leaves
|
||||
the temperature un-pinned for this reason.
|
||||
|
||||
Detailed numbers + iteration log per shard:
|
||||
`bench/results/prometheus-sigma-sweep-dryrun-YYYY-MM-DD.md`
|
||||
(regenerated by `make prometheus-sweep-dryrun`).
|
||||
(regenerated by `make prometheus-sweep-dryrun`). Phase 3 latency
|
||||
budget for the controller itself remains non-binding; the witness
|
||||
fan-out (Hermes calls) is the dominant cost.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue