Executed as one intensive session on 2026-09-12; the 14-day plan below maps to phase gates, with every failure kept honest and every fix verified.
hash(pattern) is
process-salted → datasets differed per run. Fixed with sha256-derived
stable seeds; byte-identical regeneration now asserted in CI.ablation: full silently overriding the CLI flag. Fixed precedence
(explicit CLI/config wins); re-ran; real deltas appeared. This is the
platform debugging itself — recorded as a headline finding, not buried.~25 individual defects found by verification/tests during the build, each converted into either a code fix + test or a documented finding. The two headline engineering lessons: (1) machine-verify your datasets and experiment harnesses — they catch silent bugs nothing else will; (2) zero deltas in an ablation is a bug report, not a result.
The user’s new ask: read the FDE field guide (github.com/AdilShamim8/fde-field-guide — README + the three portfolio files), then rebuild this product applying its principles. What I actually did, in order:
01-what-to-build.md, 02-project-ideas.md, 03-presenting-projects.md
into docs/research/ for provenance, and wrote a synthesis
(docs/fde/FDE-SYNTHESIS.md) before touching the product. Key
recognitions: the six principles map 1:1 onto what v0.1.0 already did
well (P4 evaluation, P5 outcomes) and what it lacked (P1 engagement
record, P6 handover); brief #12 IS this product; the guide’s demo rules
(“show the failure path on purpose”) were unmet.eval_case fixture was gone, because the
previous session’s “121 green” depended on an editable install that died
with its venv. The entry-point-only plugin registration violated the
clean-clone guarantee. Fixed in tests/conftest.py (explicit
pytest_plugins). This validated the guide’s repo-hygiene checklist as a
test, not a formality: the box that says “setup works from a clean
clone on a machine that is not yours” was unchecked and I didn’t know it.scripts/demo.py (make demo): Act 1
healthy run → Act 2 injected regression (–skill 0.60, −26.8pp) → gate
FAIL exit 1 → Act 3 diagnosis (flips, McNemar, taxonomy). Hit INC-8
mid-build: demo worked once, then “no new run record produced” —
deterministic run ids overwrite rather than append. mtime-snapshot fix.
Two lessons priced in: (a) my operational assumptions can contradict the
product’s own guarantees; (b) a demo you’ve only run once is untested.agent-eval status. The guide’s “dashboards someone else checks
weekly” depth marker, in the form this customer’s ops would actually use:
one command, drift vs baseline, dataset hashes, κ state, exit code as the
interface. 5 unit tests; regression verdict exits 1.docs/fde/00–03): the vague brief
verbatim (fictional composite, frozen before the spec — the same
convention the guide itself uses), discovery notes with the assumptions
killed and scope cut, the requirements spec, and the acceptance criteria
with outcome metrics frozen before build, results filled after, each
with a reproduce command.Test count 121 → 126. Version 0.2.0. The FDE layer added ~0 product risk (the platform core is untouched) and, per the guide’s own framing, converted a strong evaluation product into a deployment-shaped portfolio artifact: the harness was already the artifact; now the agreement is written down.
With v0.2.0 established, the next phase addressed enterprise deployment readiness, cross-platform reliability (specifically on Windows environments and containerized runtimes), and visual observability for stakeholders:
agent-eval gate or make demo
on Windows shells failed with UnicodeEncodeError: 'charmap' when rendering UTF-8
symbols (→, κ, box borders). Fixed by ensuring UTF-8 stream re-encoding in
src/agent_eval_harness/cli/app.py and scripts/demo.py, setting PYTHONIOENCODING="utf-8"
in CLI subprocess integration tests, and fixing a pytest test collection warning on
TestCase dataclass by marking __test__ = False.\r\n line endings, causing dataset cryptographic SHA-256 verification
to mismatch the Linux reference hashes in CI. Fixed root cause with repository-wide
.gitattributes enforcing eol=lf, and added byte-level CRLF normalization
(content.replace(b"\r\n", b"\n")) in dataset_sha256() inside datasets.py and
test_runner_e2e.py. Result: byte-identical cryptographic verification invariant across
all operating systems.Dockerfile
based on python:3.12-slim, dropping privileges to a dedicated non-root user aeh
(UID 10001). Added docker-compose.yml with preconfigured profiles for headless batch
evaluation (runner), CI drift verification (status), and interactive browser
visualization (dashboard). Added Makefile targets docker-build and docker-run.agent-eval serve): Implemented an embedded HTTP
service (src/agent_eval_harness/web/server.py) using Python’s standard library
http.server (zero extra dependencies). Provides visual pass-rate cards, baseline drift
comparisons, failure taxonomy localization, step-by-step observable trajectory replay
(think, plan, act, observe, final answer), and a REST API (/api/status, /api/runs,
/api/benchmarks, /api/run) for triggering evaluations and inspecting raw JSON runs..github/workflows/ci.yml from Ubuntu-only to
a dual-OS runner matrix: ubuntu-latest and windows-latest across Python 3.11 and 3.12.
All jobs verified green on GitHub Actions.tests/unit/test_web_server.py.
Test count increased from 126 → 132 tests, all passing.