workflow-fix: gotchas.md — companion-stat drop-class semantics (zero split-half noise floors)
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Overview / Motivation
Auto-filed by the workflow-fix-on-bug protocol from a gotcha_candidate: yes
failure-lesson raised on task #1415 (emitting agent: experiment-implementer via
the crash-fix failure-lesson block; router: orchestrator).
Goal
Add a gotchas.md bullet: companion statistics need their own drop-class semantics; zero split-half noise floors at shared-first-token early positions are a named non-fatal exclusion, never an integrity-guard trip.
Workflow gap
- Bug observed: the issue1415 p3 driver died rc=1 because a >20% drop guard calibrated for the registered statistic false-fired on the Delta_floor companion's legitimate zero-floor degeneracies.
- Why it is a workflow gap:
.claude/rules/gotchas.md(the on-demand trap catalog loaded when writing analysis/eval code) has no entry for this trap class; the agent-memory copy reaches only experiment-implementer spawns, not the wider gotchas load surface. - Confidence (emitter): high (root_cause_confirmed: yes in the epm:failure-lesson v1 block on #1415)
- verified-at-filing:
grep -c "noise floor\|nonpositive\|drop-class\|companion stat" .claude/rules/gotchas.md→ 0 hits (2026-07-22) — absence-of-guard claim, 0-hit in-target IS the evidence.
Proposed change (candidate diff sketch — refine in planning)
- gotchas.md new bullet (analysis/eval section): split-half noise floors of
- teacher-forced activations are EXACTLY zero at early answer positions when all
- draws share their first tokens (deterministic openings — 7/28 pairs on #1415);
- log-ratio/guard code over floor magnitudes must treat non-positive means as a
- NAMED non-fatal exclusion class; companion statistics get their OWN drop-class
- semantics + thresholds (a fail-loud guard calibrated for the registered
- statistic false-fires on a companion's legitimate degeneracies); regression-test
- with a shared-first-token fixture.
Scope / surfaces
- Primary target:
.claude/rules/gotchas.md - Cross-check the LESSONS.md index row for gotchas.md stays accurate (
--check-lessons-index).
Constraints / invariants
- Workflow-surface only.
scripts/workflow_lint.pyno-flags run passes (lessons-index + size budgets). - This session runs under
EPM_WORKFLOW_FIX_SESSION=1and carries aworkflow_fix_target:Provenance line — recursion guard applies.
Provenance
- workflow_fix_target: .claude/rules/gotchas.md
- fingerprint: f57b29a31bb0
target_file: .claude/rules/gotchas.md bug_observed: the issue1415 p3 driver died rc=1 because a >20% drop guard calibrated for the registered statistic false-fired on the Delta_floor companion's legitimate zero-floor degeneracies why_workflow_gap: gotchas.md has no entry for the zero-noise-floor / companion-stat drop-class trap, so future analysis code will re-hit it outside experiment-implementer's agent memory proposed_change: add a gotchas.md bullet: companion statistics need their own drop-class semantics; zero split-half noise floors at shared-first-token early positions are a named non-fatal exclusion, never an integrity-guard trip diff_sketch: |
- new gotchas.md bullet per the epm:failure-lesson v1 block on #1415 (see Goal) confidence: high related_task: #1415