Persist anti-cruft regression discipline
This commit is contained in:
parent
608bf10401
commit
6adeeaec26
5 changed files with 10 additions and 0 deletions
|
|
@ -89,6 +89,7 @@ Do not wait for the blackout and then act surprised.
|
|||
- Prefer one clear hypothesis per iteration.
|
||||
- Verify with checks that reflect the real goal, not just proxy success.
|
||||
- Revert or discard changes that do not clearly improve the target.
|
||||
- When a change is made to fix a regression or move a benchmark and it does not fix that regression or move that benchmark, immediately revert it before trying the next hypothesis. Record the rejected path if the lesson matters.
|
||||
- If the diff grows while understanding shrinks, stop implementation and switch to diagnosis.
|
||||
- Keep maps and prose together; do not replace useful maps with prose-only explanations.
|
||||
- Before adding natural-language explanations or metaphors to an algorithmic map, first read the relevant source paths and anchor the explanation to concrete code references. Metaphor is compression after source grounding, not a substitute for it.
|
||||
|
|
|
|||
|
|
@ -396,6 +396,12 @@ That means this persistence workflow is not optional ceremony. It should be part
|
|||
|
||||
If the harness cannot do that by default later, it is not opinionated enough yet.
|
||||
|
||||
Regression and benchmark discipline:
|
||||
|
||||
- if a change is made to fix a regression or move a benchmark and it does not fix that regression or move that benchmark, revert it immediately
|
||||
- do not let failed hypotheses accumulate as maybe-useful scaffolding
|
||||
- record the rejected path when the lesson matters, then try the next bounded hypothesis from a clean diff
|
||||
|
||||
## Verification That Already Happened
|
||||
|
||||
Rust and VS Build Tools were installed specifically so this would stop being interpretive dance.
|
||||
|
|
|
|||
|
|
@ -94,3 +94,4 @@
|
|||
{"ts": "2026-04-24T18:12:04+00:00", "type": "verification", "status": "warning", "note": "Rechecked codex-app-server stack overflow from full --lib verification: the exact test in_process::tests::in_process_start_uses_requested_session_source_for_thread_start reproduces when run alone. The failing test exercises in-process thread/start session-source mapping in app-server/src/in_process.rs, not the Epiphany promotion handler or epiphany-core policy path touched by bb557d1. Treat it as outside the touched Epiphany path, but not proven pre-existing without checking an older commit."}
|
||||
{"ts": "2026-04-24T19:00:15+00:00", "type": "verification", "status": "ok", "note": "Traced the codex-app-server stack overflow after bb557d1. The original failing in_process thread/start test overflowed after the processor completed thread/start and before response routing; RUST_MIN_STACK=64MB made exact failures pass. Additional exact failures in guardian and thread-start tracing tests confirmed app-server test-thread stack pressure on Windows rather than one semantic Epiphany path failure. Added Cargo config RUST_MIN_STACK=67108864 and boxed large JSON/in-process request futures plus thread-start/promote futures; full cargo test -p codex-app-server --lib now passes 232/232 without setting RUST_MIN_STACK in the shell."}
|
||||
{"ts": "2026-04-24T19:23:29+00:00", "type": "verification", "status": "ok", "note": "Reduced the app-server stack fix to the minimal verified culprit. Removed the boxed-future request-dispatch experiments from codex_message_processor.rs, in_process.rs, and message_processor.rs while keeping repo-local Cargo RUST_MIN_STACK=67108864. Exact overflow repros and full cargo test -p codex-app-server --lib pass without shell RUST_MIN_STACK, so the boxes were cruft and should stay gone."}
|
||||
{"ts": "2026-04-24T19:30:07+00:00", "type": "decision", "status": "ok", "note": "Persisted anti-cruft regression discipline: when a change is made to fix a regression or move a benchmark and it does not fix that regression or move that benchmark, immediately revert it before trying the next hypothesis. Failed hypotheses are not souvenirs; record the rejected path only when the lesson matters."}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ accepted_design:
|
|||
- treat Epiphany as a fork of Codex with an opinionated modeling architecture, not merely a Codex collaboration mode or preset
|
||||
- use natural language and metaphor in algorithmic maps only after source-grounding the relevant mechanism; the metaphor should compress verified control flow, not decorate a guess
|
||||
- treat meticulous workflow discipline as part of the product, not as slowdown: rehydrate before acting, source-ground maps before prose, keep each slice bounded, verify the real seam, then persist map/evidence/handoff before moving on
|
||||
- enforce immediate anti-cruft reverts for regression and benchmark work: if a fix attempt does not fix the regression or move the benchmark, revert it before trying the next hypothesis and record the rejected path when useful
|
||||
- live app-server smoke verified the explicit Qdrant indexing path against a loaded ephemeral thread rooted at `epiphany-core`; env/default Qdrant/Ollama backend config is good enough for the current slice, so defer a first-class config surface until it hurts for a real reason
|
||||
- land Epiphany's first explicit typed state-update surface as `thread/epiphany/update`: loaded-thread-only, revision-checked when requested, append observations/evidence, replace bounded map/scratch/churn fields, persist an immediate `RolloutItem::EpiphanyState`, and keep retrieval read-only
|
||||
- land Epiphany's first typed distillation/proposal surface as `thread/epiphany/distill`: loaded-thread-only, read-only, deterministic observation/evidence patch generation with a concrete `expectedRevision`, and explicit promotion through `thread/epiphany/update`
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@ This file is intentionally disposable.
|
|||
- do not let `epiphany-core` sprawl into GUI or watcher machinery just because it now owns the bigger organ
|
||||
- do not add metaphors or natural-language modeling prose to an algorithmic map until the relevant source is in context and the prose is anchored to concrete refs
|
||||
- meticulous workflow discipline is not ceremony for its own sake; the useful loop is rehydrate, bound the slice, read the code being described, make the smallest coherent change, verify the seam that matters, and persist the learned state before charging onward
|
||||
- for regression or benchmark work, failed hypotheses are not souvenirs: if a change does not fix the regression or move the benchmark, revert it immediately before trying the next hypothesis
|
||||
- Source-grounded Epiphany map audit on 2026-04-24 reread the cited protocol/session/rollout/prompt/thread/app-server/retrieval code before editing:
|
||||
- sharpened the distinction between full core resume reconstruction and the narrower `epiphany-core` stored-thread replay helper
|
||||
- removed unsupported broad wording around thread hydration surfaces and anchored the actual live/reconstructed paths
|
||||
|
|
|
|||
Reference in a new issue