startDaemon accepts the daemon of another launch when its own child
exits 0. A 403 from the daemon marks daemon.json as stale: the wrapper
deletes it and starts a new daemon once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An exclusive daemon.lock (stale after 2 minutes) is held from before the
health check until the daemon listens; a launch that loses exits 0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The daemon passes `git ls-files --others --ignored --directory` as
escaped ignore globs to addCollection. QMD's YAML write-through drops
`ignore` and index.yml wins on every re-sync, so the list is also
written into index.yml and re-synced whenever it changes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
QMD 2.8.3 createStore unloads the models after 5 idle minutes, which
made the next search reload them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Removal reads the daemon PID before --stop and waits up to 10 s for it
to exit. A model file that cannot be deleted stays recorded in the state
for a retry instead of aborting removal, and a failing models block
restore only warns.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Auto now rolls back and reports "not suitable" when Node.js is too old,
npm or the model download fails. A failing GPU probe falls back to the
CPU in both Yes and Auto.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The plan and apply split left exists declared but unused in run_managed_sync
(SC2034), which failed the CI Bash lint.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Six tasks with hidden checks: ASP.NET validation and 404 handling, C#
cancellation, and TypeScript overlap, deep merge, and debounce fixes, checked
with dotnet run and node --test.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin one model and reasoning effort per client for both arms, disable user and
plugin skills in the Codex baseline home, and record what each arm loads in
provenance.json; stop when the arms are not comparable.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Check that Codex keeps the V1 multi-agent implementation that honors
max_depth, and, with AI_CONFIG_LIVE_TESTS=1, that Claude withholds the Agent
tool from subagents, refuses subagents above the concurrency limit, and
blocks git reset --hard in every shell tool.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Plan each sync before writing, record the plan in .ai-config-transaction.json,
and roll an interrupted destination back from its backups on the next run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude offers Bash and PowerShell tools on Windows, but each package denied
git reset --hard, git clean, and recursive deletes only for its own shell. A
live test ran git reset --hard through Bash under the PowerShell package.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Build into a per-run sibling directory and replace generated/ only after
validation, with a lock around the swap, so a failed or parallel build never
leaves generated/ partial.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add the setup-no-search arm for Claude, generated filler modules, an optional
warm index outside the timing, and a searches count per run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Three tasks whose target code shares no vocabulary with the prompt, run in a
repository with generated distractor modules.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Skip the semantic-search skill while semantic retrieval is disabled and remove
a setup-owned copy when it is turned off.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Codex sandbox on Windows denies the pipes that the daemon and worker
process use, so searches waited 120 seconds and then failed. Detect that and
run the search in-process.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Load both models in bfloat16 when a CUDA GPU supports it and keep float32 on
CPUs. Document the daemon versioning and the indexed file types.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop the trailing space after "Query:" as in the model card and include the
prompt in the query cache key.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Code after a top-level closing brace belonged to the preceding function, for
example shell loops labeled as quote_toml. Attribute it to the module.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>