Revision: 1
Last modified: 2026-06-14T15:37:53Z
Authority: §11.4.15 (status) · §11.4.16 (type) · §11.4.19 (column-alignment) · §11.4.33 (type-aware closure vocabulary) · §11.4.53 (Fixed_Summary parity) · §11.4.54 (ATM-NNN ticket IDs)
Scope: the closed-archive tracker. Every entry is a real, landed, in-git fix from this session's mutation-proven bug-hunt campaign + the format-matrix / PDF / DeepSeek / WebSocket / SSH work. Each carries a stable [ATM-NNN] id, **Status:**, **Type:**, a 1-2 line root cause, and the commit hash as captured evidence (§11.4.123 — no fix is claimed that is not in git log).
Sort order: ATM id ascending (allocation order). The companion Fixed_Summary.md sorts most-recent-first.
§1. [ATM-001] splitText dropped paragraph separators at chunk boundaries causing structural data loss
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: large-chapter chunking concatenated chunks without re-inserting the paragraph separator at boundaries, silently flattening structure in the translated output. Mutation-proven.
- Evidence: commit
24b0fd0
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the in-memory cache key did not distinguish all inputs, so distinct (text,context) tuples collided onto one entry and a prior translation was returned for new content. Mutation-proven.
- Evidence: commit
bd8a1ef
§3. [ATM-003] FB2 writer dropped deeply-nested (>2 level) section content as translated-text data loss
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the FB2 writer recursion stopped serializing section content beyond two nesting levels, dropping translated text for deeply structured books. Mutation-proven.
- Evidence: commit
71babe1
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the Anthropic response parser read only
content[0], so multi-block responses were truncated or emptied. Mutation-proven. - Evidence: commit
87a8048
§5. [ATM-005] Distributed ResultCache spurious eviction on update + round-robin index panic after pool shrink
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: cache update path evicted a still-valid entry, and the round-robin worker index was not re-bounded after the pool shrank, causing an out-of-range panic. Mutation-proven.
- Evidence: commit
edadd73
§6. [ATM-006] EPUB percent-encoded/relative hrefs dropped chapters and cover; HTML test-hack corrupted content
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the EPUB parser failed to resolve percent-encoded / relative manifest hrefs (losing chapters + cover) and a leftover hardcoded test-hack corrupted HTML content. Mutation-proven.
- Evidence: commit
47ea69d
§7. [ATM-007] Verification parseNote dropped EXAMPLES-terminated notes, produced NaN confidence, under-counted multipass sections
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: note parsing terminated early on EXAMPLES, divided by zero into NaN confidence, and the multipass section counter was off. Mutation-proven.
- Evidence: commit
34e09f8
§8. [ATM-008] Redis makeCacheKey metadata delimiter-injection collision served the wrong translation
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the Redis cache key concatenated metadata with a delimiter that could appear in the data, letting distinct inputs hash to the same key and return a wrong cached translation. Mutation-proven.
- Evidence: commit
9946d85
§9. [ATM-009] EPUB↔Markdown round-trip destroyed code blocks, lost GFM tables, corrupted backslash-escapes
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the markdown round-trip converter mishandled fenced code blocks, GFM tables, and backslash escapes, losing or corrupting content on the EPUB→MD→EPUB path. Mutation-proven.
- Evidence: commit
d055b8c
§10. [ATM-010] API translateText silently dropped script=cyrillic and accepted invalid script; verifier handlers returned wrong HTTP status
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the translate API ignored the cyrillic script flag and did not validate the script value; verifier handlers mapped every GetModel error to one wrong status code. Mutation-proven.
- Evidence: commit
b8bc3ec
§11. [ATM-011] Verifier fallback chain randomly shuffled (lost score order); OpenRouter pricing decode failed on string values
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the fallback chain was non-deterministically shuffled, discarding score-priority order, and OpenRouter pricing decoding assumed numeric JSON where the API returns strings. Mutation-proven.
- Evidence: commit
4a95b06
§12. [ATM-012] gRPC GetTranslationStatus returned the wrong error code; cleanupOldSessions leaked a timeout context
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: status lookup returned an incorrect gRPC code for missing sessions, and the session-cleanup loop never cancelled its per-iteration timeout context. Mutation-proven.
- Evidence: commit
45f6152
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: authentication short-circuited on unknown usernames before the password hash compare, leaking account existence via response timing. Mutation-proven.
- Evidence: commit
5871848
§14. [ATM-014] Preparation failed-chapter analysis misattribution + nested-subsection analysis content loss
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: a failed chapter analysis was attributed to the wrong chapter index and nested subsection content was dropped from the analysis pass. Mutation-proven.
- Evidence: commit
367d88b
§15. [ATM-015] Directory batch to a non-existent output dir collided all files onto one path (data loss)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: batch directory translation did not create the output directory and computed a single colliding output path, so every file overwrote one another. Mutation-proven.
- Evidence: commit
53b5056
§16. [ATM-016] Coordination TranslateWithRetry ignored ctx cancellation; consensus skipped available instances
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the retry loop did not honor context cancellation, and the consensus selector skipped instances that were actually available. Mutation-proven.
- Evidence: commit
df8a8cb
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: when a provider returned an empty string with a success status, the pipeline wrote the empty result over the source instead of preserving the original. Mutation-proven.
- Evidence: commit
837f528
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause:
formatDurationemitted a trailing space and progress event IDs were not unique, breaking dashboard event de-duplication. Mutation-proven. - Evidence: commit
b1b747f
§19. [ATM-019] Qwen client posted to native DashScope path under an OpenAI-compatible base (wrong URL + response-shape mismatch)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the Qwen client mixed the native DashScope endpoint with an OpenAI-compatible base URL, producing a wrong request URL and a response shape the parser could not read. Mutation-proven.
- Evidence: commit
556002d
§20. [ATM-020] preparation-translator -providers flag silently ignored; CLI explicit -provider overridden by config
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the
-providersflag was parsed but never consumed, and an explicit-providerwas overwritten by the config value. Mutation-proven. - Evidence: commit
5dfe003
§21. [ATM-021] Storage cache dup-tuple served stale translation (added UNIQUE lookup-hash index + idempotent UPSERT)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: duplicate lookup tuples could store divergent rows with no uniqueness constraint, serving a stale translation; fixed with a UNIQUE index, idempotent UPSERT, and migration. Mutation-proven.
- Evidence: commit
367adce
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: concurrent metric updates in the distributed VersionManager raced and lost increments; fixed with synchronization plus stress/chaos coverage. Mutation-proven.
- Evidence: commit
bf81517
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: Qwen compatible-mode used an inconsistent base URL; aligned to the default compatible base and made the live test honest per §11.4.98.
- Evidence: commit
2f0e359
§24. [ATM-024] DOCX input non-functional (license-gated unioffice) — rewritten as a stdlib OOXML parser
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: DOCX parsing depended on the license-gated unioffice library and was inert; rewritten as a stdlib OOXML parser, dropping the dependency. Real-artifact proven.
- Evidence: commit
d433210
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the unified CLI API-key gate did not read provider-specific environment variables, blocking otherwise-valid providers. Real DeepSeek E2E proof committed.
- Evidence: commit
c6c2930
§26. [ATM-026] DOCX rejected by the CLI pipeline despite a working parser (detector.IsSupported missing DOCX)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the format detector's supported-set omitted DOCX, so the CLI rejected files the parser could handle. Real E2E proven.
- Evidence: commit
6304f60
§27. [ATM-027] FB2 + EPUB input broken end-to-end (convertToMarkdown re-parsed already-extracted text)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the unified pipeline re-ran
convertToMarkdownover already-extracted FB2/EPUB text, corrupting the content; fixed so all five input formats translate. Real E2E matrix proven. - Evidence: commit
41063cb
§28. [ATM-028] Zhipu missing from the API-key env map in unified-translator (+ stale-allowlist audit)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the Zhipu provider was absent from the env-key map, so its key was never picked up. Multi-provider E2E proof + stale-allowlist audit committed.
- Evidence: commit
9821e0f
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: hardcoded model allowlists predated current provider catalogs, rejecting valid current models; added current models, live-proven.
- Evidence: commit
b23bcac
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: consensus tie-breaking iterated a map, producing non-deterministic winners across runs; made deterministic. Mutation-proven.
- Evidence: commit
77a0c15
§31. [ATM-031] Multipass verification chapter loop panicked when translation has fewer chapters than original
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the multipass loop indexed the translation by the original's chapter count, panicking when the translation had fewer chapters.
- Evidence: commit
9640a00
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the FB2 writer omitted section and subsection
<title>elements from the serialized output, losing chapter headings. Mutation-proven. - Evidence: commit
b83038c
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: PDF input was dead behind the license-gated unipdf dependency; replaced with the MIT ledongthuc/pdf library. Real-translation proven.
- Evidence: commit
18d6f73
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the CLI hardcoded EPUB output regardless of the
-oextension; now honors.txt/.fb2/.md/.epub(+ 2 §11.4.120 gate reconciliations). - Evidence: commit
ca5608f
Status: Implemented (→ Fixed.md) Type: Feature
- Summary: added HTML-escaped
.html/.htmoutput, completing the output-format matrix. Real-translation proven. - Evidence: commit
fb07a59
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the DeepSeek allowlist predated v4 models and rejected them; updated via live
/models+ real-translation verification (the canonical allowlist-refresh template). - Evidence: commit
0fd1a34
Status: Fixed (→ Fixed.md) Type: Task
- Root cause: the monitoring test harness had concurrent map access causing data races and a fatal map-write panic; serialized access in the harness.
- Evidence: commit
ab7db0e
Status: Fixed (→ Fixed.md) Type: Task
- Root cause: the SSH error test asserted an exact error substring that varied by environment, producing FAIL-bluffs; assert on a stable condition instead.
- Evidence: commit
817b9dd
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: per-chapter analysis records lacked the authoritative chapter number, breaking downstream attribution; now stamped.
- Evidence: commit
0df25d9
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause:
parseLscpuCorescounted cores per socket once instead of multiplying across sockets, undercounting on multi-socket machines and mis-tuning concurrency. - Evidence: commit
80d627b
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: batch output naming used only the file stem, so
a.txtanda.fb2produced the same output path and overwrote each other. - Evidence: commit
c3117f8
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: token refresh did not re-check session expiry/bounds, so an expired session could be exchanged for a fresh valid token.
- Evidence: commit
d0fe40a
§43. [ATM-043] Empty/null LLMsVerifier envelope ({"models":null}) failed to decode, breaking /api/v1/verified-models
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the verified-models decoder did not tolerate a null models array, so the endpoint broke whenever zero models were verified. Mutation-proven.
- Evidence: commit
d8142e5
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the FB2 parser did not descend into inline elements inside
<v>,<subtitle>, and<text-author>, dropping their text. Mutation-proven. - Evidence: commit
8f52370
§45. [ATM-045] Distributed fallback getFailureRate fabricated a 100% rate on window expiry / zero window
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the failure-rate calculation divided by an empty/expired window and reported a fabricated 100% failure rate, triggering needless fallback.
- Evidence: commit
20beda7
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the markdown→EPUB writer wrote chapter titles into XHTML without escaping
&/</>, producing malformed XHTML for those titles. Mutation-proven. - Evidence: commit
be81550
§47. [ATM-047] Verification polishChapter/polishSectionRecursive index-out-of-range on shorter translations
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the polish pass indexed by the original section/subsection count and went out of range when the translation had fewer. Mutation-proven.
- Evidence: commit
7434ee4
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the Ollama client never populated the
optionsfield, so temperature and max_tokens were silently ignored. Mutation-proven. - Evidence: commit
a728e57
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: EPUB chapter text was emitted with HTML entities un-decoded, so readers saw literal entity sequences. Mutation-proven.
- Evidence: commit
107e570
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the SubscribeEvents stream forwarded lifecycle events without populating
session_id, breaking client-side session filtering. - Evidence: commit
fd07e18
§51. [ATM-051] LoadConfig nil-map panic when config omits translation.providers and a provider key env var is set
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause:
LoadConfigwrote into a nil providers map when the config omittedtranslation.providersbut a provider API-key env var was present, panicking on startup. - Evidence: commit
fa35d2e
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the EPUB writer hardcoded
image/jpegfor the cover media type, breaking non-JPEG covers on round-trip. - Evidence: commit
c416bd8
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: concurrent translators accessed the cache/stats maps without synchronization, causing data races and a concurrent-map-write crash. Race-proven.
- Evidence: commit
8316e3f
§54. [ATM-054] markdown-translator -format flag unvalidated — unsupported value produced no output yet reported success
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the markdown-translator did not validate
-formatagainst{epub,md}, so an unsupported value silently produced no output while reporting success. - Evidence: commit
85b3362
§55. [ATM-055] CLI SSH provider ignored -source/target-lang, -script, -llama-binary/-model (hardcoded ru→sr-cyrillic)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the SSH provider path hardcoded ru→sr-cyrillic and ignored the language/script/llama flags, so non-default jobs produced wrong output.
- Evidence: commit
36f740a
Status: Fixed (→ Fixed.md) Type: Task
- Root cause: a
.gitignorerule excludedcmd/api-server/source (§11.4.30 violation); un-ignored it and committed a health-check regression guard. - Evidence: commit
4bbac9a
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the
cmd/clienv-key map omitted gemini, soGEMINI_API_KEYwas never read. - Evidence: commit
309ca91
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the SSH worker wrote the translated EPUB to a derived path and ignored
-output, delivering the result to the wrong location. - Evidence: commit
86d10d4
§59. [ATM-059] grpc-server ignored documented env-var overrides (GRPC_ADDRESS/PORT, LOG_LEVEL, ENABLE_METRICS/REFLECTION)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the gRPC server documented env-var overrides but never read them, so configuration via environment had no effect.
- Evidence: commit
21c2460
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the deployment status formatter sliced the container ID to 12 chars without a length check, panicking on shorter IDs.
- Evidence: commit
cde2e1a
§61. [ATM-061] grpc-server/monitor-server: dead -max-connections flag wired + monitor start error no longer swallowed
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the
-max-connectionsflag was parsed but inert, and the monitor server's start error was discarded, hiding startup failures. Mutation-proven. - Evidence: commit
93e89d7
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: structured log fields named like reserved keys (severity/message/timestamp) overwrote the real log values in the JSON output. Mutation-proven.
- Evidence: commit
daa2f70
§63. [ATM-063] enhanceTranslation capitalization dead for Cyrillic/accented-Latin first letters (byte-indexed guard)
Status: Fixed (→ Fixed.md) Type: Bug
- Root cause: the capitalization guard used a byte index assuming ASCII, so multi-byte Cyrillic/accented-Latin first letters were never capitalized. Mutation-proven.
- Evidence: commit
e520c4c
Status: Fixed (→ Fixed.md) Type: Task
- Root cause: binaries hardcoded divergent
appVersionliterals; reconciled to read the single authoritativeVERSION(P0.1). Mutation-proven. - Evidence: commit
a36030e
This archive is regenerated into Fixed_Summary.md by scripts/testing/generate_fixed_summary.sh. Do not hand-edit the summary.