Updated: 2026-05-13.
- Standalone repo created at
/home/fer/Documents/agent-closeout-bench. - 2026 research-backed source ledger, claim ledger, spec, dataset card, Croissant draft, provenance/license/redaction manifests, and limitation docs are in place.
- Recovery script implemented and run against 660 local Claude Code transcripts.
- 237 category-proven candidate positive records recovered and preserved in
recovery/recovered_category_proven_pool.jsonl. - 215 generic negative records quarantined because category provenance is not encoded in the transcript prompts.
- Full 800-record deterministic v0.2 candidate corpus generated in
data/. - Exact 4 x 2 x 8 quota validation passes.
- Deterministic
dev/validation/locked_testsplits regenerated. - Blind annotation CSV exported with opaque ids; private id map is separate.
- Local hook evaluation harness, non-hook baseline runner, metric helpers, and local smoke tests are implemented.
- Candidate diagnostics exist for baselines and shipped moneyhermes hooks on
devandvalidation. - Deterministic
agentcloseout-physicsRust CLI is implemented underengine/, with versioned closeout rule packs, safe-regex linting, golden fixtures, and opt-inminimal_statstelemetry commands. - Four live moneyhermes hooks now act as thin adapters around the physics
engine:
no-wrap-up.sh,no-cliffhanger.sh,no-roleplay-drift.sh, andno-sycophancy.sh. - Candidate diagnostics for the physics-backed hooks exist on
devandvalidationinresults/physics_hooks_candidate_*.json. - Public-data intake lane added under
public_data_intake/with a source registry, public-source schema, derived-fixture manifest, content-free sampler, and quarantine reporting. - Six engines are now covered by public-study-derived fixtures in
fixtures/closeout_public/:wrap_up,cliffhanger,roleplay_drift,sycophancy,closeout_contract, andevidence_claims. candidate_public_adversarialcontains 16 reviewed public-derived candidate records with manifest provenance and no raw public trace text.- Evaluation reports now include per-corpus-kind, per-source-id, and per-fixture-class breakdowns.
- Candidate diagnostics for physics-backed hooks on public-derived adversarial
devandvalidationsplits exist inresults/physics_hooks_public_adversarial_*.json.
| Category | Positives | Negatives |
|---|---|---|
wrap_up |
100 | 100 |
cliffhanger |
100 | 100 |
roleplay_drift |
100 | 100 |
sycophancy |
100 | 100 |
Split counts:
| Split | Records |
|---|---|
dev |
480 |
validation |
160 |
locked_test |
160 |
Public-derived adversarial candidate lane:
| Category | Positives | Negatives |
|---|---|---|
wrap_up |
2 | 2 |
cliffhanger |
2 | 2 |
roleplay_drift |
2 | 2 |
sycophancy |
2 | 2 |
Public fixture classes present: positive_direct, negative_near_miss,
adversarial_paraphrase, cross_framework, and trace_evidence.
The corpus is complete but not gold-labeled. label_candidate is available for
development diagnostics. label_final is null until human adjudication.
- Need two independent human annotation passes plus adjudication.
- Need per-category agreement report with kappa >= 0.60 before publication.
- Need final evaluation on
locked_testonly after annotation and detector freeze. - Need public release review if any real-session records are introduced.
- Need a larger public-derived corpus before claiming SOTA robustness.
- Need reviewed release policy before any noncommercial source contributes raw or near-raw fixture text.
- Need private or delayed holdout policy before any leaderboard claim.
- Need broader human-gold and non-template adversarial evaluation before treating current physics rule packs as deployability-proven.
Commands run successfully:
python3 generation/assemble_candidate_corpus.py --data-dir data --quota-manifest quota_manifest.json --preserve-existing '' --manifest manifests/candidate_corpus_manifest.json
python3 scripts/make_splits.py --data-dir data --splits-dir splits
python3 scripts/validate_corpus.py --data-dir data --quota-manifest quota_manifest.json
python3 annotations/export_blind_sheet.py --data-dir data --output annotations/blind_annotation_sheet.csv --mapping-output annotations/private_annotation_id_map.jsonl
python3 baselines/run_baselines.py --data-dir data --split dev --output results/baselines_candidate_dev.json
python3 baselines/run_baselines.py --data-dir data --split validation --output results/baselines_candidate_validation.json
python3 evaluation/eval_hooks.py --hooks-dir /home/fer/Documents/moneyhermes/.claude/hooks --corpus-dir data --hook-category-map "wrap_up:no-wrap-up.sh,cliffhanger:no-cliffhanger.sh,roleplay_drift:no-roleplay-drift.sh,sycophancy:no-sycophancy.sh" --ground-truth candidate --split dev --output results/moneyhermes_hooks_candidate_dev.json
python3 evaluation/eval_hooks.py --hooks-dir /home/fer/Documents/moneyhermes/.claude/hooks --corpus-dir data --hook-category-map "wrap_up:no-wrap-up.sh,cliffhanger:no-cliffhanger.sh,roleplay_drift:no-roleplay-drift.sh,sycophancy:no-sycophancy.sh" --ground-truth candidate --split validation --output results/moneyhermes_hooks_candidate_validation.json
python3 -m pytest -q
bash scripts/reproduce_local.sh
bin/agentcloseout-physics lint-rules rules/closeout
bin/agentcloseout-physics test-rules rules/closeout fixtures/closeout
bin/agentcloseout-physics test-rules rules/closeout fixtures/closeout_public
python3 scripts/public_data_intake.py audit-registry --registry public_data_intake/source_registry.json --schema schemas/public_source.schema.json
python3 scripts/public_data_intake.py validate-derived --registry public_data_intake/source_registry.json --manifest public_data_intake/derived_fixture_manifest.jsonl --data-dir public_data_intake/candidate_public_adversarial --quarantine-report public_data_intake/quarantine/latest_report.json
python3 scripts/validate_corpus.py --data-dir public_data_intake/candidate_public_adversarial --allow-partial
python3 evaluation/eval_hooks.py --hooks-dir /home/fer/Documents/moneyhermes/.claude/hooks --corpus-dir public_data_intake/candidate_public_adversarial --hook-category-map "wrap_up:no-wrap-up.sh,cliffhanger:no-cliffhanger.sh,roleplay_drift:no-roleplay-drift.sh,sycophancy:no-sycophancy.sh" --ground-truth candidate --split dev --output results/physics_hooks_public_adversarial_dev.json
python3 evaluation/eval_hooks.py --hooks-dir /home/fer/Documents/moneyhermes/.claude/hooks --corpus-dir public_data_intake/candidate_public_adversarial --hook-category-map "wrap_up:no-wrap-up.sh,cliffhanger:no-cliffhanger.sh,roleplay_drift:no-roleplay-drift.sh,sycophancy:no-sycophancy.sh" --ground-truth candidate --split validation --output results/physics_hooks_public_adversarial_validation.json
bash /home/fer/Documents/moneyhermes/scripts/agentcloseout-physics-hook-smoke.sh
python3 scripts/release_check.py --allow-partialFull release check still correctly fails because final human labels,
adjudication, agreement, and results/final_locked_test.json do not exist yet.
cargo fmt --check could not be run on this machine because cargo-fmt is not
installed for the active stable toolchain. cargo test and the release binary
build both passed.