Repository navigation
v0.28.0 — a daemon you can do without, and a build that is not a change
docir runs where it used to only nearly run, and stops reporting drift you did not cause.
🐛 The three reported defects
- A daemon that cannot be started runs the command in process (#15). The daemon keeps the
model warm and serializes writes; it decides nothing, and every command it answers
--no-daemonanswers too. Inside a read-only agent sandbox the client had nowhere to fall
back to, so every read ended in a Python traceback. It now falls back with one warning on
stderr and stdout untouched. Reproducing it turned up the half that mattered more: the MCP
server built its own executor beside the CLI's, so a CLI-only fix would have left the crash
exactly where an adopter meets it. - A
code:glob hashes what the repository tracks, not what it builds (#20). Ignored files
were fingerprinted, so one compile drifted everysrc/**-style glob at once in any repository
that builds beside its sources —bin/,obj/,target/,dist/,build/— and the
finding was indistinguishable from a real one. The matcher now reads the repository's own
.gitignorefiles, and only those: not.git/info/exclude, not your global excludes, both
per-machine. It was live here too, throughbenchmarks/.coverage. docir self upgradebrings the store's.gitignoreup to the running build (#21).
release-check.jsonwas written into every store and ignored nowhere, and the file itself was
written once bydocir initand never again — sofeedback/never reached a store created
before it. Entries are appended under a comment naming the version, never rewritten over.
🔧 Also fixed
docir doctoranddocir daemon statussurvive a home with nowhere to listen — the two
commands you run to diagnose the first failure.- The embedding model moved to
~/.docir/models. A temp directory is where the system puts what
it may delete, so the 64 MB download was re-paid on every sweep. - A cached peer reader expires when that peer moves, so a repaired peer stops being skipped.
- A daemon that loaded a different
docs-schema.yamlis replaced. docir query --code '.github/workflows/**'finds its documents.docir self upgradecounts the corpus instead of reciting all 56 findings.
📝 The writing skill says a document is the current state
Agents append, because --append-section destroys nothing and so never refuses — and a
document becomes a log of its own life. The body grows against its type's ceiling, and the
superseded half keeps being retrieved, because the index has no idea a later paragraph
overruled an earlier one. Rule 3: git holds what was true before, so something that changed is
edited rather than answered beside. A date in a heading is the signal. Terminal states are
exempt.
⬆️ Upgrading
- Expect one
code-driftedper pattern whose match set shrank. Read the document and
docir update <id> --verified. Where the defect was live, that is every governed document,
and the re-baseline is the fix arriving. - Until everyone upgrades,
code-driftedis a per-build opinion; nothing refuses anything. - The model is re-downloaded once. It is the last one a sweep can force.
docir self upgradetops up the store's.gitignoreand names what it added.
🔗 Full Changelog
See CHANGELOG.md