mirror of
https://github.com/esengine/DeepSeek-Reasonix.git
synced 2026-11-07 10:45:59 -10:00
Problem: `reasonix doctor catalogs` printed the projection's integrity_check string as the catalog's state, so a history catalog whose history_sources row recorded health='corrupt' printed `ok`, and a future-schema database -- which the runtime opens as StateDegraded -- printed `ok` too. The command a user is told to run to check their data agreed with neither the catalog nor `catalogs reindex --json`, which reports the same state as "failed": 1. Root cause: the state column came from Inspection.Integrity and nothing else. The command never asked the catalog what it recorded, and never compared the recorded schema against the schema this build migrates to. Fix: read the facts reindex already reads. refreshStatus and refresh now share one readStatusCounts with the new read-only Inspect readers, so the diagnostic's failed is the number reindex reports, and the reason is the one the catalog recorded. A newer schema reports degraded against projectiondb.SupportedVersion, which ApplyMigrations also uses. --json gains state, failed, pending, corruptLines/lagBytes and failures only when there is something to say, so a healthy catalog's output is unchanged. Text stays one line per catalog. Exit stays 0: like `catalogs reindex --json`, this command reports rather than repairs. Verification: red-first. A reindexed undecodable transcript printed `history ok`; it now prints `history failed ... failed=1 source=<path>: <recorded reason>`. A schema-2 database printed `ok`; it now prints `degraded ... supported=1`. Controls: healthy line and exit unchanged, missing line unchanged, healthy JSON keys unchanged. Mutation: dropping the failure read turns the corrupt-source test red, dropping the degraded read turns the future-schema test red. projectiondb.OpenReadOnly reads a live WAL, which immutable=1 skipped. No projection schema, history index or reindex path changed. Refs docs/USAGE_CATALOG.md:25, docs/HISTORY_SEARCH_CATALOG.md:42-43.