Repository navigation
v0.7.15
Fixed — documented settings that did nothing
An audit of every setting against the code found five that no code read.
EPOCHIX_SCRUB_SECRETSwas documented — "redact secret-looking strings
from stored lines" — and implemented nowhere. A training script that
printed its W&B key, anHF_TOKENor a database URL had it stored verbatim
in the raw-line store, and the opt-in LLM fallback sent it to the configured
provider. It is implemented now (epochix/scrub.py: credentials in URLs,
bearer tokens,…_API_KEY=/password:assignments, and AWS, GitHub,
OpenAI/Anthropic, Hugging Face, Slack, Google and JWT token shapes) and on
by default: it only touches the stored or transmitted copy of a line, never
what the parsers read, and never a plain number.EPOCHIX_POSTGRES_DSNandEPOCHIX_REDIS_URLwere documented as a
Postgres store and a Redis hub. Neither exists; a run pointed at Postgres
went to the local SQLite file. Setting either now stops epochix with an
error saying so. Thepostgresandredisextras, which installed drivers
nothing imported, are empty aliases.EPOCHIX_OPEN_BROWSER=falseopened the browser anyway — every command
and the SDK called the browser directly. Everything now goes through one
helper that honours it.EPOCHIX_TELEMETRYis documented as what it is: there is no telemetry.
Fixed — reading logs
- fastai's metric columns were filed as training metrics. fastai computes
them on the validation set; a fastai classifier's accuracy is now
val_accuracy, in both engines. - A Lightning progress line inside a Keras log was dropped — the fallback
was the universal parser alone, which skips progress bars by design. A line
the run's parser cannot read now gets a look from every other parser, best
first, in both engines. - Stored story frames read back as task "custom" whatever the run was, in
every export and API that reads frames. The task is stored with the frame;
frames from older databases take the run's task.
Added — Farsi PDFs
- A Farsi run's PDF is drawn in Farsi. fpdf2's core fonts are Latin-1, so
the report fell back to English chrome and left its sentences out. It now
embeds Vazirmatn (SIL Open Font License, shipped in the package with its
licence) and shapes the text with uharfbuzz — joined letters, right-to-left
order, right-aligned pages.uharfbuzzis thepdfextra
(pip install "epochix[pdf]"); without it the fallback stays, and the cover
now names that command. English and French reports keep the core fonts. - Phase names were English in every report language — the PDF's phase
pages and epoch table, and the Markdown summary, printedUnderstandingin a
French or Farsi report. They come from the same translated catalogue as the
warnings now; the PDF's "<- best" marker is translated too.
Performance
- The universal parser is ~25% faster again (25k to 31k lines/sec on CI),
with byte-identical output over 680,021 lines —contextlib.suppressaround
every number cost more than the conversion, and the same metric names were
re-canonicalised on every line. Name lookups are cached pipeline-wide. The
50k planning target is retired, with the reasoning in ROADMAP.md.
Fixed — docs
ARCHITECTURE.mddescribed parser detection as "the first 50 lines, or 5
seconds"; it is 200 lines or 1.5 s of quiet, with the per-line fallback.- ROADMAP.md lost six sections to an edit in this release's PDF work; restored.
Fixed — the Alembic migrations
They had fallen behind the schema the store creates (no milestones or
raw_lines tables, two missing columns). Migration 0002 catches up, and a
test now fails when they disagree.