Skip to content

probe: PROBE-POP-READOUT-1 (D-POP-1) — VERDICT KILL, and qualia is rank-inert at the frontier - #1136

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/medcare-rs-continue-6nhbxn
Sep 2, 2026
Merged

probe: PROBE-POP-READOUT-1 (D-POP-1) — VERDICT KILL, and qualia is rank-inert at the frontier#1136
AdaWorldAPI merged 1 commit into
mainfrom
claude/medcare-rs-continue-6nhbxn

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What this PR does

Runs the falsifier pre-registered in post-teardown-buildup-survey-v1 §6 (#1135) and records its result. One commit (d4e0ade on 64f8a80 = main). Probe only: no library surface, no type, no tenant, no ClassView, no axis set.

The question. Does a population-typicality readout — an object's Cam96 distance to its own subject's basin centroid — improve the exploration frontier's ranking over the shipped FrontierEdge::curiosity and its MUL/qualia-weighted sibling curiosity_gestalt?

The answer: KILL. It degrades precision@10 from 0.289 to 0.011 and lands below its own shuffle null.

Setup

Whole KJV through the existing bible_wave --export seam: 70,393 triples over 31,102 verses, trained v0.1.0-cam96-data codebook (12,543 words, 12 axes), 9 split points × 25 size-preserving shuffles, 227,261 candidates pooled. Deterministic, 89 s.

cargo run --manifest-path crates/deepnsm-v2/Cargo.toml --example bible_wave  -- pg10.txt --export spo.tsv
cargo run --manifest-path crates/deepnsm-v2/Cargo.toml --example pop_readout -- spo.tsv

A candidate (s,p,o) mined from the prefix is labelled 1 iff the exact triple recurs in the suffix.

arm mean p@10 p@25 p@100 ρ vs label
A0 curiosity (shipped) 0.289 0.173 0.249 ≈ −0.27
A1 / A1B curiosity_gestalt (two assessments) 0.289 0.173 0.249 ≈ −0.27
AF frequency (control) 0.756 0.751 0.674 +0.27
AP population readout alone 0.011 0.036 0.076 +0.09
A2 / A3 combined 0.011 0.022 0.069 −0.06

Pre-registered rule: PASS iff (a) real partial ρ > null p95 + 0.02 and (b) Δp@10 ≥ 0.05 with A2 above its null p95. (a) passes at 0.090 vs 0.020; (b) fails at −0.278 → KILL.

Three findings beyond the verdict

  1. The signal is real but weak. Controlling for prefix frequency, partial Spearman 0.090 against a null 95th percentile of 0.020. A global monotone trend and a useless top-k coexist, because the extreme of the readout is degenerate (objects sitting essentially on their own centroid). Precision@k probes the tail, Spearman the trend; the disagreement is the result.
  2. curiosity_gestalt is rank-inert — measured, not argued. spearman(curiosity, gestalt magnitude) = 1.000000 over 227,261 candidates under two deliberately contrasting MulAssessments. exploration.rs:180-215 shows why: the magnitude is base · fw · dk · flow · trust · staunen_boost · ground_gate and every factor but base is per-graph. MUL and qualia can rescale a frontier; they can never reorder one. So "does population beat qualia alone" had an a-priori answer for any ranking task.
  3. Plain counting beats every cognitive arm. Frequency reaches p@10 = 0.756 against the shipped ranker's 0.289, and curiosity is anti-correlated with recurrence — consistent with it working as designed (prefer the rare and unqueried) rather than failing. Banked rule: any future frontier-ranking claim clears the frequency control first.

The frequency arm and the partial Spearman were a deliberate strengthening of the pre-registered design, added before the run and recorded as such, following E-BASIN-WIDTH-IS-N-ARTIFACT-1 (a quantity co-varying with sample count needs a partial, not a raw correlation).

A survey error the run exposed

The plan named Fisher-z and RollingFloor::occupancy as available ingredients. They are not reachable: helix is not a dependency of deepnsm-v2, and adding one pulls the ndarray git fork into that crate's build. Those legs are NOT RUN and say so. Under rank combination Fisher-z is analytically inert anyway.

Process incident, recorded rather than hidden

This session's own board pass truncated EPIPHANIES.md from 25,172 lines to 61 with the exact prohibited open(p,'w').write(E + open(p).read()) shape — in a script that also contained two correct prepends. The mandatory wc -l guard caught it in the same command; the file was restored from HEAD and re-prepended read-before-write, and nothing wrong was ever committed. A dated recurrence note is added to the knowledge doc that already prohibits the pattern, with the two lessons the recurrence adds.

What this PR does NOT do

  • No population carrier, tenant, ClassView, dimensionality or axis set. Family 3 stays a vacancy; this result narrows it rather than widening it.
  • No change to Qualia, Cam96/PairPalette, Fisher/Helix/BGZ, palette256, trajectories, the causal graph or the epistemic graph. curiosity_gestalt is measured, not modified.
  • No fetched data committed (the release assets and corpus stay gitignored, as designed).

Verification

cargo build, cargo clippy --example pop_readout -- -D warnings and cargo fmt --check all clean on deepnsm-v2 (workspace-excluded, so run via --manifest-path). The probe run exits 0 and reproduces the numbers above. Board line-count guards checked against main for every touched file; supersession index regenerated after the board writes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PFnYKqw6d7TTiB9cT8eFdK


Generated by Claude Code

Runs the falsifier pre-registered in post-teardown-buildup-survey-v1 §6:
does a population-typicality readout (an object's Cam96 distance to its
subject's own basin centroid) improve the exploration frontier's ranking
over the shipped `FrontierEdge::curiosity` and its MUL-weighted sibling?

Whole KJV via the `bible_wave --export` seam: 70,393 triples over 31,102
verses, trained v0.1.0-cam96-data codebook, 9 split points x 25
size-preserving shuffles, 227,261 candidates pooled, deterministic, 89 s.

VERDICT KILL. The readout degrades frontier precision@10 from 0.289 to
0.011 and lands below its own shuffle null (null p95 0.133).

Three findings beyond the verdict:

1. The signal is real but weak: controlling for prefix frequency, partial
   Spearman 0.090 against a null 95th percentile of 0.020. A global trend
   and a useless top-k coexist because the extreme of the readout is
   degenerate.
2. `curiosity_gestalt` is RANK-INERT: spearman(curiosity, gestalt
   magnitude) = 1.000000 over 227,261 candidates under two contrasting
   assessments. Its magnitude is a per-graph scalar multiple of curiosity
   (exploration.rs:180-215), so MUL and qualia can rescale a frontier but
   never reorder one.
3. Plain prefix frequency reaches precision@10 = 0.756 against the shipped
   ranker's 0.289, and curiosity is anti-correlated with recurrence
   (rho ~ -0.27) — consistent with it working as designed. Any future
   frontier-ranking claim must clear the frequency control first.

The frequency arm and the partial Spearman were a deliberate strengthening
of the pre-registered design, added before the run and recorded as such.
The Fisher-z and RollingFloor legs are NOT RUN: helix is not a dependency
of deepnsm-v2, and Fisher-z is analytically inert under rank combination.

Family 3 stays a vacancy; this narrows rather than widens it. No library
surface, no type, no tenant, no ClassView, no axis set.

Boards: plan §6a RESULT, EPIPHANIES entry, LATEST_STATE delta, STATUS_BOARD
D-POP-1 -> Shipped (KILL), supersession index regenerated. Also records a
recurrence of the destructive-prepend trap (EPIPHANIES truncated 25,172 ->
61 lines in this session's own board pass, caught by the mandatory wc -l
guard and restored) in the knowledge doc that already prohibits it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PFnYKqw6d7TTiB9cT8eFdK
@coderabbitai

coderabbitai Bot commented Sep 2, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 32 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 76 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: 0406721e-5e24-4a68-a6b3-bdfd5f1ee7c4

📥 Commits

Reviewing files that changed from the base of the PR and between 64f8a80 and d4e0ade.

📒 Files selected for processing (8)
  • .claude/board/EPIPHANIES.md
  • .claude/board/LATEST_STATE.md
  • .claude/board/PR_ARC_INVENTORY.md
  • .claude/board/STATUS_BOARD.md
  • .claude/board/SUPERSESSION-INDEX.md
  • .claude/knowledge/never-truncate-a-file-you-still-need-to-read.md
  • .claude/plans/post-teardown-buildup-survey-v1.md
  • crates/deepnsm-v2/examples/pop_readout.rs

Comment @coderabbitai help to get the list of available commands.

@cursor

cursor Bot commented Sep 2, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_be54fbe3-e118-4c86-a261-57eba1d46e02)

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d4e0ade209

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +340 to +342
frequency: 1.0,
confidence: *counts.get(&(c.s, c.p, c.o)).unwrap() as f32
/ (*counts.get(&(c.s, c.p, c.o)).unwrap() as f32 + 1.0),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use the shipped frontier confidence for the baseline

For every prefix edge, this synthesizes confidence as n / (n + 1), but the inspected MassExplorer::seed_frontier creates every seeded edge with confidence 0.5 and query_count = 0. This turns A0 into an inverse-frequency ranker and produces the reported anti-correlation, whereas the actual shipped chooser initially ties all seeded edges; consequently the 0.289 baseline and A2−A0 comparison do not measure the claimed shipped behavior. Construct A0 through seed_frontier or reproduce its actual truth inputs.

Useful? React with 👍 / 👎.

Comment on lines +359 to +361
let ap: Vec<f32> = pop.iter().map(|&p| -p).collect();
let a2: Vec<f32> = combine_ranks(&a0, &ap);
let a3: Vec<f32> = combine_ranks(&a1, &ap);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Run the registered occupancy readout before declaring KILL

The pre-registered A2/A3 treatment was distance → Fisher-z → RollingFloor bucket/occupancy salience, with raw distance explicitly reserved as a disable arm, but these lines replace it with -distance and a rank mean. Although Fisher-z alone is monotone, bucket occupancy is distribution-dependent and can change candidate ordering, so the missing dependency does not make the registered treatment analytically equivalent to this substitute. The recorded KILL therefore rejects a different readout and cannot close D-POP-1 until the occupancy arm is run.

Useful? React with 👍 / 👎.

Comment on lines +561 to +562
let mean_partial_real: f32 = all_splits.iter().map(|s| s.partial_real).sum::<f32>() / n;
let mean_null_partial_p95: f32 = all_splits.iter().map(|s| s.null_partial_p95).sum::<f32>() / n;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Compute the percentile of the aggregate null

The real test statistic is the mean partial correlation across splits, but this threshold averages each split's 95th percentile. In general mean(q95(X_s)) is not q95(mean(X_s)), particularly here where splits are nested and reuse the same permutation seed. Preserve each shuffle's result across splits, average by shuffle, and then take the percentile of those aggregate values; otherwise the reported null p95 of 0.020 and the resulting claim that the weak partial signal survives the null are unsupported. The A2 p@10 threshold below has the same aggregation error.

Useful? React with 👍 / 👎.

@AdaWorldAPI
AdaWorldAPI merged commit 94543a5 into main Sep 2, 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.

2 participants