deepseek-harness/docs
Yichen Jiang 1010291fe6 fix(settings): close cross-namespace, dispatch, and lifecycle races from second review
Confirmed and fixed, each with a regression test that failed first:

- Concurrent writes to different namespaces lost whole sections on disk
  (each persist rendered the full document from a stale text): the local
  provider serializes render->write->rename->text-commit on one internal
  persist chain shared by every namespace queue.
- One throwing settings/updated listener starved the rest (cordis emit
  stops at the first throw): commit fans out per listener via
  events.dispatch, contains individual failures, and rethrows the first
  INVARIANT-coded error only after every listener ran.
- Write queues ignored fiber/service lifecycle: the base init now
  registers a teardown that refuses new writes and drains queued chains;
  queued tasks re-verify service liveness and namespace ownership before
  running and again before committing, so a registrant disposed
  mid-flight is never notified and a disposed service never commits.
- Async watcher invocations could interleave (a slow stale call applied
  last): each watcher carries a serialized invocation chain — one call
  at a time, in commit order; JSDoc/doc pages state the async timing.
- update/replace borrowed the caller's object until the queued task ran:
  inputs are structured-clone snapshotted at call time; non-cloneable
  plain objects reject with a typed error.
- Composition guard now proves the documented fallback: the consumer
  uses the optional scoped-inject shape and boots both with the settings
  entry (hot publish) and without it (entry-config resolution, no scope).
- core-data-structures index: settings.md row added to the sub-page
  table in core.md/core.zh.md.

Both packages hold per-file 100% coverage across repeated runs.
2026-07-29 10:19:33 +08:00
..
cookbook refactor(agent): clarify turn lifecycle event names 2026-07-27 17:38:42 +08:00
cordis-catalog fix(settings): close cross-namespace, dispatch, and lifecycle races from second review 2026-07-29 10:19:33 +08:00
cordis-tutorial docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
core-data-structures fix(settings): close cross-namespace, dispatch, and lifecycle races from second review 2026-07-29 10:19:33 +08:00
i18n Merge remote-tracking branch 'origin/master' into worktree-i18n-update-workflow 2026-07-27 09:39:54 +08:00
postmortem docs(i18n): mirror ACP-automation edits into the zh pairs from master 2026-07-25 01:58:42 +08:00
user Merge remote-tracking branch 'origin/master' into xtr/agent-loop-message-machine 2026-07-27 16:48:38 +08:00
agent-lifecycle.md refactor(agent): return request retry action 2026-07-27 21:17:49 +08:00
AGENTS.md docs(notes): archive low-value decision records 2026-07-26 23:06:00 +08:00
architecture.i18n.yaml refactor(session): remove synthetic log-only turns 2026-07-28 14:41:51 +08:00
architecture.md refactor(session): remove synthetic log-only turns 2026-07-28 14:41:51 +08:00
architecture.zh.md refactor(session): remove synthetic log-only turns 2026-07-28 14:41:51 +08:00
capability-seams.md feat(settings): add user-settings seam (ctx.settings) + file provider 2026-07-29 10:19:32 +08:00
config-catalog.md fix(settings): harden seam and provider per review findings 2026-07-29 10:19:32 +08:00
cordis-primer.i18n.yaml docs(i18n): clarify Cordis and test wording 2026-07-24 14:21:15 +08:00
cordis-primer.md Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-23 13:40:29 +08:00
cordis-primer.zh.md docs(i18n): clarify Cordis and test wording 2026-07-24 14:21:15 +08:00
defensive-patterns.i18n.yaml Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:20:17 +08:00
defensive-patterns.md Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:20:17 +08:00
defensive-patterns.zh.md Merge remote-tracking branch 'origin/master' into worktree/pr343-retarget-latest-master 2026-07-24 21:20:17 +08:00
development.i18n.yaml refactor(dev-infra): narrow worktree hook safety checks 2026-07-28 00:05:31 +08:00
development.md refactor(dev-infra): narrow worktree hook safety checks 2026-07-28 00:05:31 +08:00
development.zh.md refactor(dev-infra): narrow worktree hook safety checks 2026-07-28 00:05:31 +08:00
event-producer-consumer.md fix(settings): close cross-namespace, dispatch, and lifecycle races from second review 2026-07-29 10:19:33 +08:00
glossary.i18n.yaml docs: align Goal Round step cardinality 2026-07-24 12:10:40 +08:00
glossary.md docs: align Goal Round step cardinality 2026-07-24 12:10:40 +08:00
glossary.zh.md docs(i18n): allow zero-step Goal Rounds 2026-07-23 21:13:34 +08:00
graph-atlas.md docs(graphs): retain archived rationale link 2026-07-26 23:08:47 +08:00
module-graph.md Merge branch 'master' into fix/worker-timer-clamp 2026-07-28 01:06:22 +08:00
persistence-catalog.md refactor(session): remove synthetic log-only turns 2026-07-28 14:41:51 +08:00
testing.i18n.yaml Merge remote-tracking branch 'origin/master' into worktree/packed-chunks-default-rfc 2026-07-27 03:31:33 +08:00
testing.md Merge remote-tracking branch 'origin/master' into worktree/packed-chunks-default-rfc 2026-07-27 03:31:33 +08:00
testing.zh.md Merge remote-tracking branch 'origin/master' into worktree/packed-chunks-default-rfc 2026-07-27 03:31:33 +08:00
tool-catalog.md Restore Cordis mount and unmount names 2026-07-27 21:20:06 +08:00
tool-execution-pipeline.md Merge remote-tracking branch 'origin/master' into feat/send-unify 2026-07-23 22:41:45 +08:00
web-styling.i18n.yaml docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
web-styling.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00
web-styling.zh.md docs: translate remaining non-README documentation 2026-07-26 02:33:29 +08:00