← trajectories

CRL Importance Sampling

Synthetic SFT

sft.json

Multi-turn tool-using investigation as a clean demonstration.

id
ml_research_trajectory_crl_importance_sampling_001
domain
machine_learning_research
task_type
multi_turn_autonomous_research_investigation
variant
A_reasoning_externalized

provenance

source:human-steered terminal research transcript with no reliable session timestamps
construction:The human researcher's steering and the coding agent's implementation and experiment execution were collapsed into a single assistant agent. Scientific results and metrics are taken from the terminal transcript. Git operations, environment setup, process manag…
note:Unlike the structured-session exemplar, the source is a compacted plain-text terminal transcript and lacks clear timestamps and complete machine-readable run records. The trajectory preserves the observed experimental ordering and results, while rendering late…

tools

Functions available to the assistant

8 tools
  1. 01search_literature

    Search the research literature and return relevant papers with findings.

    querystring*categoriesstring[]date_fromstringmax_resultsinteger
  2. 02search_findings

    Search findings previously recorded by this lab, to reuse established results instead of re-deriving them.

    querystring*max_resultsinteger
  3. 03propose_experiment

    Draft a runnable experiment specification. Returns a proposal id and a compute estimate. Does not run anything.

    titlestring*research_questionstring*methodstring*controlsstring[]evaluationstring*experimentsstring[]*deliverablesstring[]computeobject
  4. 04launch_experiment

    Launch a proposed experiment on compute. Returns a run id. The run executes autonomously.

    proposal_idstring*
  5. 05read_experiment_results

    Read output from a running or finished experiment.

    run_idstring*sectionstring*detailstring
  6. 06steer_experiment

    Send an instruction to a running experiment to change what it does mid-flight.

    run_idstring*instructionstring*
  7. 07stop_experiment

    Cancel a running experiment and release its compute.

    run_idstring*reasonstring*
  8. 08record_finding

    Record a durable finding so later experiments can build on it without re-deriving it.

    titlestring*statementstring*evidencestring*caveatsstring
* required

messages

system
You are an autonomous ML research agent with access to compute. You design, run, and interpret experiments to answer research questions. Work the way a good empirical researcher works. Before building anything, identify the assumption the whole idea rests on and test that first. Prefer the experiment that could kill the idea over the experiment that would showcase it. Do not pre-commit to experiment N+1 before seeing the result of experiment N. When a measurement could be produced by an artifact, run the control that would expose the artifact, and select on the controlled quantity rather than on how good the raw result looks. State negative results plainly and diagnose them mechanistically. Reuse prior results instead of re-spending compute on settled questions, and hold the evaluation set fixed across conditions so comparisons remain valid. Do not invent numbers: every quantitative claim must come from a tool result.
user
Can a CRL critic trained only on PPO's on-policy rollout replace the TD value function in mean-field multi-agent distribution matching? Estimate the discounted future collective-state density ratio p(S+|S)/p(S+) with a permutation-invariant collective-state critic, but obtain a separate value for each agent by weighting that same ratio with the individual agent's reward. Use discrete actions. First establish whether the CRL version can perform about as well as TD on the learnable circle; if it can, retry tower targets with gravity, jumping, and collisions, and keep investigating until the evidence says whether the limitation is in CRL or in the task itself.
assistant
The estimator has a clean decomposition. Dynamics determine one discounted occupancy ratio over future collective states, while the reward attached to each support state can remain agent-specific. For a query collective state S_i, compute one row of density-ratio weights over future collective states and multiply that shared row by the matrix of per-agent rewards. The output is a per-agent value without asking the density model to distinguish agent identities. Before implementation, two constraints are load-bearing. First, collective state is a set, not an ordered vector. A flat MLP could memorize agent indices and assign different density ratios to permutations of the same configuration. Both current-state and future-state towers therefore need independent DeepSets encoders: shared per-agent embedding, mean pooling, then a head. Second, the contrastive score is only identified up to an additive constant. Raw exponentiated scores are not a stable absolute ratio; self-normalizing across the rollout support cancels that constant. The TD head should be excluded from the policy objective so the test actually answers whether the CRL-derived baseline works. I want to see whether the literature or this lab already contains a settled warning about this exact construction before spending a run.
search_literature()
{
  "query": "contrastive reinforcement learning discounted future state density ratio importance sampling value function on-policy multi-agent collective state",
  "categories": [
    "cs.LG"
  ],
  "max_results": 10
}
search_findings()
{
  "query": "CRL density-ratio value baseline collective state per-agent rewards permutation invariance",
  "max_results": 10
}
toolsearch_literature
{"results":[],"notice":"The source session did not record a literature search or any paper-specific finding for this construction. The design is grounded only in the CRL implementation inspected in-session."}
toolsearch_findings
{"results":[],"notice":"No prior lab finding on this exact on-policy collective-state CRL baseline was available in the source session."}
assistant
No prior result settles the construction, so the first experiment should validate semantics and invariance before asking whether learning works. The critic will train on geometric future pairs drawn within the same episode from the fresh rollout; no replay buffer, no actions, and no individual-agent state index enters the ratio model. The positive score is the negative distance between independent current-state and future-state embeddings. A single normalized score matrix is then multiplied by per-agent rewards and scaled by the discounted-occupancy factor. The acceptance test is deliberately structural: discrete and continuous action smoke paths must remain finite, the TD fallback must still compile, contrastive accuracy must rise above its in-batch random reference in the smoke run, and explicitly permuting agent order must leave the encoder output unchanged to floating-point precision. This is where the ordered-MLP mistake is cheapest to catch; it should not survive into the scientific comparison.
propose_experiment()
{
  "title": "Permutation-invariant on-policy CRL value construction",
  "research_question": "Can one collective-state density-ratio critic produce valid per-agent importance-sampled values while respecting exchangeability?",
  "method": "Train independent DeepSets towers phi(S) and psi(S+) with InfoNCE on geometrically sampled within-episode future pairs from each on-policy rollout. Compute self-normalized future-state weights from f(S,S+)=-||phi(S)-psi(S+)|| and multiply the shared weight matrix by the per-agent reward matrix. Replace the PPO value inputs with these per-agent values and remove the TD value loss when CRL is enabled.",
  "controls": [
    "direct agent-permutation test on both collective-state encoders",
    "discrete-action CRL smoke path",
    "continuous-action CRL smoke path",
    "TD fallback path"
  ],
  "evaluation": "Finite-loss smoke tests, contrastive accuracy relative to the in-batch random reference, and maximum encoder-output difference under agent permutation.",
  "experiments": [
    "on-policy CRL smoke test",
    "permutation-invariance test",
    "fallback compatibility checks"
  ],
  "deliverables": [
    "shape and indexing audit",
    "invariance measurement",
    "finite training metrics"
  ]
}
toolpropose_experiment
{"proposal_id":"P-c1a0","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-c1a0"
}
toollaunch_experiment
{"run_id":"R-a4e1","status":"finished","title":"Permutation-invariant on-policy CRL value construction"}
assistant
read_experiment_results()
{
  "run_id": "R-a4e1",
  "section": "controls"
}
toolread_experiment_results
{"architecture":"independent DeepSets current-state and future-state towers; shared per-agent MLP, mean pool, head MLP","smoke_test":{"updates":4,"discrete_crl":"finite","continuous_crl":"finite","td_fallback":"finite","crl_accuracy":0.176,"in_batch_random_reference":0.016},"permutation_test":{"max_abs_output_difference":1.862645149230957e-07,"verdict":"permutation invariant to floating-point precision"},"value_definition":"one collective-state weight matrix shared across agents, multiplied by per-agent reward columns"}
assistant
The construction passes the checks that matter. Contrastive accuracy is 0.176 against an in-batch random reference of 0.016 after the smoke run, and permuting agent order changes the encoder output by only 1.862645149230957e-07. That does not establish that the value is a useful PPO baseline; it establishes that the object being tested is the intended one rather than an ordered-agent surrogate. All execution paths are finite. I will record the construction before escalating, because later failures must not tempt me to quietly change the semantics. The ratio remains collective, the reward remains per-agent, and exchangeability is enforced rather than learned from augmentation.
record_finding()
{
  "title": "Collective CRL ratios can yield permutation-invariant per-agent values",
  "statement": "Independent DeepSets towers over collective state can learn one on-policy future-state ratio matrix whose rows are shared across agents, while multiplication by per-agent reward columns yields per-agent values.",
  "evidence": "After 4 smoke updates, CRL accuracy was 0.176 versus an in-batch random reference of 0.016. Maximum output change under agent permutation was 1.862645149230957e-07. Discrete CRL, continuous CRL, and TD fallback paths were finite.",
  "caveats": "This validates implementation semantics and invariance, not policy-learning quality."
}
toolrecord_finding
{"finding_id":"F-101","recorded":true}
assistant
The first end-to-end run should be deliberately harsh enough to exercise the new physics and collision path, but it must retain the action semantics requested: discrete force actions throughout. A vertical line under gravity with ground-only jumping and hard collisions is useful initially as a numerical stress test, not yet as evidence that CRL can solve a tower. The target concentrates agents at a shared horizontal coordinate, so collision handling is part of the method's validity. The run must report finite-state diagnostics before any reward interpretation. If positions coincide and the force normalization has a singularity, every downstream metric will be meaningless. Only after numerical health is established will I interpret policy entropy, classifier reward, or the CRL value scale.
propose_experiment()
{
  "title": "Numerical stress test of raw CRL value on a constrained vertical tower",
  "research_question": "Does the raw CRL-value implementation remain numerically valid with gravity, ground-only jumping, hard collisions, and a vertical line target under discrete actions?",
  "method": "Train the raw self-normalized CRL baseline on the vertical tower with gravity, a floor, ground-force-only jumping, hard collisions, and a per-axis speed cap. Monitor state finiteness before interpreting learning.",
  "controls": [
    "discrete actions asserted",
    "finite position, value, loss, and reward checks",
    "short multi-update verification before resuming a full run after any runtime failure"
  ],
  "evaluation": "First diagnose numerical health. If finite, inspect policy entropy, classifier reward, CRL accuracy, and the relationship between mean reward and CRL-value scale.",
  "experiments": [
    "vertical-tower stress run with raw CRL value"
  ],
  "deliverables": [
    "runtime-failure diagnosis if present",
    "finite-run learning diagnostics"
  ]
}
toolpropose_experiment
{"proposal_id":"P-1f70","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-1f70"
}
toollaunch_experiment
{"run_id":"R-0f33","status":"running","actions":"discrete"}
assistant
read_experiment_results()
{
  "run_id": "R-0f33",
  "section": "summary",
  "detail": "numerical-health checkpoint before scientific interpretation"
}
toolread_experiment_results
{"status":"paused_after_failure","metrics":"all NaN","diagnosis":{"collision_formula":"contact_force * delta_pos / dist * penetration","dist_definition":"sqrt(sum(delta_pos^2))","failure":"exactly coincident agents make delta_pos/dist equal 0/0","why_this_task_triggers_it":"gravity and a fixed horizontal target coordinate pile agents onto the same floor point"},"prior_gravity_runs":"collisions were disabled, so they did not exercise this singularity"}
assistant
This is a real methodological runtime failure, not an unsuccessful policy. The collision normal divides a zero displacement by zero distance when two agents coincide. The vertical target and gravity make exact coincidence routine, so the NaNs are caused by the experiment's physical regime rather than random infrastructure. No learning claim survives this checkpoint. The minimal correction is an epsilon inside the distance square root. At exact coincidence the displacement numerator is zero and there is no defined collision direction, so returning zero force is the neutral finite behavior; away from coincidence the force law is unchanged. Because this diagnosis came from the running environment, steering the run is warranted. I will require a sustained finite verification before resuming the full evaluation.
steer_experiment()
{
  "run_id": "R-0f33",
  "instruction": "Add 1e-8 inside the collision-distance square root so exact coincidence yields finite zero force, then run a 183-update verification with the same gravity, collision, and discrete-action settings. Resume the full run only if every monitored metric remains finite."
}
toolsteer_experiment
{"run_id":"R-0f33","accepted":true,"change":"collision distance uses sqrt(sum(delta_pos^2)+1e-8)","status":"resumed"}
assistant
read_experiment_results()
{
  "run_id": "R-0f33",
  "section": "metrics",
  "detail": "finite verification and completed raw-CRL vertical-tower diagnostics"
}
toolread_experiment_results
{"verification":{"updates":183,"all_metrics_finite":true,"crl_value_mean":-64.7,"mean_classifier_reward":-0.645,"expected_discount_scale":100},"full_run":{"updates":610,"nan_count":0,"final_entropy":1.608,"uniform_discrete_entropy_reference":"ln(5)","final_mean_classifier_reward":-0.80,"ratio":1.0,"actor_loss":0.0,"verdict":"numerically healthy; vertical tower not learned with raw CRL value"}}
assistant
The epsilon fix resolves the numerical question: 183 verification updates are finite, and the completed run has zero NaNs. The value-scale sanity check is also exact enough to be revealing: mean CRL value is -64.7 while mean reward is -0.645 and the discounted scale is 100. But the learning result is a clean failure. After 610 updates, entropy is 1.608, essentially the uniform discrete reference ln(5); reward is -0.80, the probability ratio is 1.0, and actor loss is 0.0. The policy is effectively random. I will not call that a tower result yet because the task mixes two possibilities: the raw CRL value could be a bad policy baseline, or the constrained vertical tower could be physically unlearnable. The correct next step is the known-achievable circle with a TD control under otherwise matched training. That isolates the baseline before changing the task.
propose_experiment()
{
  "title": "Raw CRL versus TD on the achievable circle",
  "research_question": "Does the raw importance-sampled CRL value provide a policy-learning baseline comparable to TD on the circle under discrete actions?",
  "method": "Run matched full-length circle training with no gravity or collisions. Compare the raw CRL baseline against the TD baseline using identical discrete-action policy and distribution-matching reward settings.",
  "controls": [
    "TD value baseline",
    "identical circle target and training budget",
    "discrete actions in both conditions"
  ],
  "evaluation": "Final policy entropy, classifier reward, mean radius, and whether the angular distribution fools the classifier rather than merely reaching the correct radius.",
  "experiments": [
    "raw CRL circle",
    "TD circle control"
  ],
  "deliverables": [
    "matched endpoint table",
    "mechanistic interpretation of radius versus angular coverage"
  ]
}
toolpropose_experiment
{"proposal_id":"P-752b","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-752b"
}
toollaunch_experiment
{"run_id":"R-4a12","status":"finished","actions":"discrete"}
assistant
read_experiment_results()
{
  "run_id": "R-4a12",
  "section": "metrics"
}
toolread_experiment_results
{"task":"circle without gravity or collisions","mean_distance_from_origin":{"td":2.06,"raw_crl":2.06},"results":[{"method":"TD","final_entropy":0.66,"final_reward":-0.086,"qualitative":"agents distributed around the circle; classifier nearly fooled"},{"method":"raw CRL","final_entropy":1.47,"final_reward":-0.445,"qualitative":"agents reach the radius but remain angularly clustered"}],"verdict":"TD solves the distribution; raw CRL does not"}
assistant
The circle removes task feasibility as an excuse. Both methods reach mean radius 2.06, but TD ends at entropy 0.66 and reward -0.086 with agents distributed around the circle, whereas raw CRL remains near-random at entropy 1.47 and reward -0.445 with angular clustering. Raw V_crl is not an adequate baseline even on the easy task. Two hypotheses are worth killing before changing the estimator. One is telescoping: because V_crl is constructed from discounted future rewards, bootstrapped GAE could cancel the signal; lambda=1 should reduce the update to a Monte-Carlo return minus baseline. The other is critic resolution: perhaps the density ratio is too blunt and a sharper or longer-trained contrastive critic would improve the baseline. These are distinct and cheap enough to test together, but I will judge them on circle reward and entropy, not on contrastive accuracy alone. A critic can classify futures better and still be a worse policy baseline.
propose_experiment()
{
  "title": "Reject telescoping and critic-sharpness explanations",
  "research_question": "Is raw CRL failing because bootstrapped GAE cancels its signal, or because the contrastive critic is insufficiently sharp?",
  "method": "On the same discrete-action circle, compare raw CRL with lambda=1 against a sharper-critic condition with increased contrastive capacity or training. Keep the raw value estimator unchanged so each condition isolates the proposed explanation.",
  "controls": [
    "same circle task and raw CRL estimator",
    "previous raw-CRL endpoint as reference"
  ],
  "evaluation": "Final classifier reward and policy entropy; reject an explanation if its targeted change does not recover circle learning.",
  "experiments": [
    "lambda=1 raw CRL",
    "sharper raw CRL critic"
  ],
  "deliverables": [
    "hypothesis rejection table"
  ]
}
toolpropose_experiment
{"proposal_id":"P-b750","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-b750"
}
toollaunch_experiment
{"run_id":"R-772e","status":"running","completed_conditions":["lambda=1 raw CRL","sharper raw CRL critic"],"remaining":"additional critic-capacity variants queued"}
assistant
read_experiment_results()
{
  "run_id": "R-772e",
  "section": "metrics",
  "detail": "completed hypothesis tests before optional capacity extensions"
}
toolread_experiment_results
{"reference_raw_crl":{"final_entropy":1.47,"final_reward":-0.445},"lambda_1":{"final_entropy":1.27,"final_reward":-0.36,"verdict":"does not recover circle"},"sharper_critic":{"final_reward":-0.74,"verdict":"worse than default raw CRL"},"decision":"both proposed explanations rejected; additional raw-capacity variants are not decision-relevant"}
assistant
Both hypotheses fail. Lambda=1 improves the raw endpoint only to reward -0.36 with entropy 1.27; it still does not solve the circle. The sharper critic is worse at -0.74. That rejects both the simple telescoping story and the idea that more contrastive capacity is the missing ingredient. The queued capacity variants would answer how many ways a rejected explanation can fail, not what to do next. I am stopping them. The decisive isolation is now a zero baseline: keep the CRL training path and use pure Monte-Carlo advantages. If that learns, raw V_crl itself is harmful; if it does not, the fault lies deeper in the policy-update machinery.
stop_experiment()
{
  "run_id": "R-772e",
  "reason": "Lambda=1 failed to recover the circle and the sharper critic was worse; stop queued capacity variants and spend the next run on the zero-baseline isolation that distinguishes a harmful V_crl from a broken policy-update path."
}
toolstop_experiment
{"run_id":"R-772e","status":"stopped","retained_results":["lambda=1 raw CRL","sharper raw CRL critic"]}
assistant
record_finding()
{
  "title": "Raw CRL value fails the circle and is not rescued by lambda=1 or a sharper critic",
  "statement": "The raw importance-sampled CRL value is a poor PPO baseline on the achievable circle; neither eliminating GAE bootstrapping with lambda=1 nor increasing critic sharpness recovers learning.",
  "evidence": "Raw CRL: entropy 1.47, reward -0.445; TD: entropy 0.66, reward -0.086, with both at mean radius 2.06. Lambda=1 raw CRL: entropy 1.27, reward -0.36. Sharper raw critic: reward -0.74.",
  "caveats": "These tests do not yet distinguish an actively harmful value estimate from a deeper failure in the CRL policy-update path."
}
toolrecord_finding
{"finding_id":"F-102","recorded":true}
assistant
The zero-baseline control must preserve everything except the value fed to the advantage. That means the same on-policy rollouts, CRL critic training, reward, policy optimizer, and discrete action space; only V is replaced by zero. I also want TD with lambda=1 beside it. If pure Monte Carlo learns, the policy machinery and reward are sufficient without either learned baseline, and the causal blame lands on the raw CRL value. This is more informative than another end-to-end tweak because it can falsify an entire class of implementation explanations in one run. I will not introduce calibration until this isolation says there is a useful estimator worth rescuing.
propose_experiment()
{
  "title": "Zero-baseline isolation on the circle",
  "research_question": "Is the raw CRL value actively harmful, or is the CRL policy-update machinery unable to learn the circle even with a clean Monte-Carlo signal?",
  "method": "Set the CRL value used by GAE to zero while retaining the full CRL rollout and training machinery, producing a pure Monte-Carlo policy advantage. Compare with TD at lambda=1 on the same discrete-action circle.",
  "controls": [
    "TD lambda=1",
    "same CRL code path with only the value zeroed",
    "same full-length circle task"
  ],
  "evaluation": "Final reward and policy entropy. Learning under zero baseline proves the raw value, not the surrounding machinery, caused the failure.",
  "experiments": [
    "CRL machinery with zero baseline",
    "TD lambda=1 control"
  ],
  "deliverables": [
    "causal isolation verdict"
  ]
}
toolpropose_experiment
{"proposal_id":"P-c600","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-c600"
}
toollaunch_experiment
{"run_id":"R-2fd1","status":"finished","actions":"discrete"}
assistant
read_experiment_results()
{
  "run_id": "R-2fd1",
  "section": "controls"
}
toolread_experiment_results
{"results":[{"condition":"TD lambda=1","final_entropy":0.51,"final_reward":-0.105,"verdict":"solves circle"},{"condition":"CRL machinery, zero baseline","final_entropy":0.70,"final_reward":-0.093,"verdict":"solves circle and matches TD endpoint"}],"causal_conclusion":"raw V_crl is actively harmful; the policy-update and reward machinery learn with the value removed"}
assistant
This is the decisive control. TD with lambda=1 solves at entropy 0.51 and reward -0.105; the CRL machinery with a zero baseline solves at entropy 0.70 and reward -0.093. Removing only V_crl restores learning and matches the TD endpoint. The rollout, reward, and policy-update path are sound. Raw V_crl is actively harmful as a baseline. The next question is whether it is harmful because it contains no return information or because it has the wrong scale. I need the correlation between raw V_crl and Monte-Carlo return before choosing. A positive correlation supports calibration; no correlation means the correct response is to abandon this value estimator rather than cosmetically rescale it.
record_finding()
{
  "title": "Zero-baseline isolation proves raw V_crl is harmful",
  "statement": "The discrete-action circle is learnable through the CRL code path when the CRL value is replaced by zero, causally isolating the raw value estimate as the source of failure.",
  "evidence": "TD lambda=1 ended at entropy 0.51 and reward -0.105. CRL machinery with zero baseline ended at entropy 0.70 and reward -0.093. Both solved the circle.",
  "caveats": "A zero baseline establishes causality but does not show whether raw V_crl is noisy or merely miscalibrated."
}
toolrecord_finding
{"finding_id":"F-103","recorded":true}
assistant
I will measure correlation first, then apply the smallest transformation justified by it. The candidate is a per-update linear calibration V_cal=a V_crl+b fitted by least squares to batch Monte-Carlo returns. This preserves the rank information in V_crl while placing its mean and cross-state variation on the return scale. It is not a new predictive model and it cannot create correlation that is absent. The comparison needs both lambda settings because the previous failure of lambda=1 occurred with a mis-scaled baseline. Once calibrated, bootstrapping may again be useful. I will also retain the default small critic and evaluate larger or longer critics only after calibration has demonstrated that the signal is usable; capacity was already harmful in the raw regime.
propose_experiment()
{
  "title": "Return-correlation audit and linear calibration of V_crl",
  "research_question": "Does raw V_crl contain useful return information that can be rescued by linear calibration, and which GAE setting uses it best?",
  "method": "Measure the correlation of raw V_crl with batch Monte-Carlo returns. If positive, fit a and b each update by least squares and use V_cal=a*V_crl+b as the baseline. Compare calibrated lambda=1 and lambda=0.95 on the same discrete-action circle; then test larger or longer critics only as a secondary check.",
  "controls": [
    "raw CRL endpoint",
    "zero-baseline endpoint",
    "TD endpoint",
    "same circle and discrete actions"
  ],
  "evaluation": "Raw value-return correlation, final classifier reward, policy entropy, and whether extra critic capacity improves or degrades the calibrated baseline.",
  "experiments": [
    "small correlation audit",
    "calibrated CRL with lambda=1",
    "calibrated CRL with lambda=0.95",
    "calibrated critic-capacity check"
  ],
  "deliverables": [
    "correlation diagnostic",
    "calibrated endpoint table",
    "recommended baseline recipe"
  ]
}
toolpropose_experiment
{"proposal_id":"P-83e6","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-83e6"
}
toollaunch_experiment
{"run_id":"R-f211","status":"finished","actions":"discrete"}
assistant
read_experiment_results()
{
  "run_id": "R-f211",
  "section": "metrics"
}
toolread_experiment_results
{"small_audit":{"raw_value_return_correlation":0.91,"raw_value_mean_example":-80.0,"raw_value_std_example":7.0,"return_scale_example":-5.0,"interpretation":"informative but badly scaled"},"full_circle":[{"condition":"TD reference","final_entropy":0.51,"final_reward":-0.105},{"condition":"calibrated CRL lambda=1","final_entropy":1.44,"final_reward":-0.298,"value_return_correlation":0.5},{"condition":"calibrated CRL lambda=0.95","final_entropy":1.03,"final_reward":-0.145,"value_return_correlation_range":[0.5,0.7]},{"condition":"raw CRL reference","final_entropy":1.47,"final_reward":-0.445}],"capacity_checks":{"default_crl_accuracy":0.32,"larger_or_longer_critic_rewards":[-0.27,-0.35],"larger_or_longer_crl_accuracy":0.23,"verdict":"extra capacity is worse"},"recommended_recipe":"linear calibration, lambda=0.95, default critic"}
assistant
The correlation audit changes the diagnosis. Raw value and return correlate at 0.91 in the small audit, so V_crl is not noise. Its representative mean is -80.0 with standard deviation 7.0 while the return scale is about -5.0: the value's cross-state swing can dominate the normalized advantage despite carrying useful ordering information. Linear calibration rescues most of the performance. With lambda=0.95, calibrated CRL reaches reward -0.145 and entropy 1.03, approaching the TD reference at -0.105 and 0.51; lambda=1 is worse at -0.298 and 1.44. This also rejects my earlier intuition that eliminating bootstrapping was the solution. Once the value is on the correct scale, bootstrapping helps. More critic is still not better. Larger or longer variants end at -0.27 and -0.35, with CRL accuracy falling from 0.32 to 0.23. The evidence supports the default critic plus calibration and lambda=0.95. I will not continue capacity tuning. The next scientifically meaningful question is transfer: does this calibrated recipe approach TD on the constrained vertical tower, and if both fail, is the target physically achievable under ground-only jump control?
propose_experiment()
{
  "title": "Calibrated CRL versus TD on the fully constrained vertical tower",
  "research_question": "Does the calibrated CRL baseline transfer to a vertical tower with gravity, ground-only jumping, and hard collisions, or is this target difficult for both value methods?",
  "method": "Run calibrated CRL with the selected default critic and lambda=0.95 against TD on the identical vertical-tower environment. Use the collision epsilon fix and discrete actions in both conditions.",
  "controls": [
    "TD baseline on the same task",
    "identical gravity, jumping, collision, target, and action settings",
    "finite-state monitoring"
  ],
  "evaluation": "Final classifier reward and policy entropy, interpreted comparatively. A shared failure motivates an achievability control rather than more CRL tuning.",
  "experiments": [
    "vertical tower with calibrated CRL",
    "vertical tower with TD"
  ],
  "deliverables": [
    "matched tower comparison",
    "decision on method versus task diagnosis"
  ]
}
toolpropose_experiment
{"proposal_id":"P-5a9c","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-5a9c"
}
toollaunch_experiment
{"run_id":"R-79c8","status":"finished","actions":"discrete"}
assistant
read_experiment_results()
{
  "run_id": "R-79c8",
  "section": "metrics"
}
toolread_experiment_results
{"task":"vertical tower with gravity, ground-only jump control, and hard collisions","results":[{"method":"TD","final_entropy":0.84,"final_reward":-0.853,"verdict":"fails"},{"method":"calibrated CRL","final_entropy":1.53,"final_reward":-0.876,"verdict":"fails"}],"nan_count":0,"shared_failure":"neither method populates the upper vertical target positions"}
assistant
TD fails at reward -0.853 and calibrated CRL fails at -0.876; neither populates the upper positions, and there are zero NaNs. This is not evidence that the methods are equally good everywhere. It is evidence that the vertical gravity task cannot discriminate them because both are failing. The physical hypothesis is specific: ground-only control lets an agent thrust only from the floor, so it cannot hold a stationary upper position against gravity. A vertical target assigns mass to states the control system cannot sustain. The clean test is a two-arm achievability matrix, not more optimization: remove gravity while keeping the vertical line, and rotate the tower onto the floor while retaining gravity, jumping, and collisions. If calibrated CRL approaches TD on both reachable variants while both fail the original, the fundamental change is to the task specification.
propose_experiment()
{
  "title": "Tower achievability controls",
  "research_question": "Is failure on the fully constrained vertical tower caused by the CRL baseline or by an unsustainable target under the environment's physics?",
  "method": "Compare calibrated CRL and TD on two reachable controls: a vertical line with gravity removed so agents can hold height, and a horizontal line on the floor with gravity, ground-only jumping, and hard collisions retained. Keep discrete actions.",
  "controls": [
    "vertical line without gravity isolates target geometry from gravity",
    "horizontal line with full physics isolates gravity and collision handling from unreachable height",
    "TD and calibrated CRL paired within each task"
  ],
  "evaluation": "Final and best classifier reward, policy entropy where available, NaN count, and raw-value return correlation. The claim is comparative and conditional on achievability.",
  "experiments": [
    "no-gravity vertical tower: CRL versus TD",
    "full-physics horizontal tower: CRL versus TD"
  ],
  "deliverables": [
    "task-by-method matrix",
    "physics diagnosis"
  ]
}
toolpropose_experiment
{"proposal_id":"P-37cd","status":"drafted"}
assistant
launch_experiment()
{
  "proposal_id": "P-37cd"
}
toollaunch_experiment
{"run_id":"R-38c4","status":"finished","actions":"discrete"}
assistant
read_experiment_results()
{
  "run_id": "R-38c4",
  "section": "metrics"
}
toolread_experiment_results
{"vertical_tower_no_gravity":{"TD":{"final_reward":-0.205,"final_entropy":0.95,"best_reward_approximately":0.0},"calibrated_CRL":{"final_reward":-0.193,"final_entropy":0.95,"best_reward_approximately":0.0},"verdict":"both solve; the source described the endpoints as tied but included no statistical-test details"},"horizontal_tower_full_physics":{"TD":{"final_reward":-0.292,"best_reward":0.006},"calibrated_CRL":{"final_reward":-0.341,"best_reward":0.006,"value_return_correlation":0.76},"nan_count":0,"verdict":"both match the distribution at best; CRL slightly behind at the final endpoint"}}
assistant
The achievability controls settle the attribution. Without gravity, the vertical tower is solved by both methods: CRL ends at -0.193 and TD at -0.205, both at entropy 0.95 and best reward approximately 0. On the full-physics horizontal tower, both reach best reward 0.006 with zero NaNs; CRL ends at -0.341 versus TD at -0.292, and its raw value-return correlation is 0.76. So calibrated CRL approaches TD across the achievable circle and tower tasks. It is not uniformly identical: CRL remains slightly behind at the final circle and horizontal-tower endpoints, and the adversarial reward can drift after its best match. But the contrast with the original vertical tower is decisive. There, both methods fail at comparably poor rewards because ground-only jumping cannot sustain upper positions against gravity. The more fundamental change is to the task or actuation, not to the CRL baseline. The scientific conclusion is narrower than 'CRL works.' A permutation-invariant collective density ratio can support per-agent values, but its raw importance-sampled scale makes it actively harmful in PPO. Linear calibration is required to convert a correlated density-ratio value into a usable baseline. Once calibrated, it approaches TD on achievable distribution-matching tasks; it cannot rescue a physically unrealizable target.
record_finding()
{
  "title": "Calibrated CRL approaches TD on achievable tasks; vertical gravity tower is physically unsustainable",
  "statement": "A linearly calibrated, permutation-invariant collective-state CRL value with per-agent rewards approaches TD on the circle, a no-gravity vertical tower, and a full-physics horizontal floor tower. Both methods fail the vertical gravity tower because ground-only jumping cannot sustain upper target positions.",
  "evidence": "Circle: calibrated CRL -0.145 versus TD -0.105. No-gravity vertical tower: CRL -0.193 versus TD -0.205, both entropy 0.95 and best reward approximately 0. Full-physics horizontal tower: CRL -0.341 versus TD -0.292, both best reward 0.006, zero NaNs, CRL value-return correlation 0.76. Full-physics vertical tower: CRL -0.876 versus TD -0.853; both fail.",
  "caveats": "Single-seed endpoint comparisons from a terminal transcript; final adversarial rewards can drift after the best distribution match. Calibrated CRL is near TD, not proven equivalent."
}
toolrecord_finding
{"finding_id":"F-104","recorded":true}

labels

successful_investigation:true
primary_conclusion:A permutation-invariant CRL critic can estimate one collective-state future-density ratio and convert it into per-agent values by weighting with individual rewards, but the raw importance-sampled value is actively harmful as a PPO baseline because its scale is…
negative_result_reported:true
negative_result_diagnosed_mechanistically:true
permutation_invariance_enforced_before_main_test:true
collective_ratio_with_per_agent_rewards:true
runtime_scientific_failure_fixed_from_new_evidence:true
zero_baseline_causal_isolation:true
value_return_correlation_used_for_model_choice:true
failed_hypotheses_rejected:true
task_achievability_controlled:true
discrete_actions_held_fixed:true
unsupported_claims_present:false
all_quantitative_claims_traceable_to_tool_results:true

steering_moves