Yichen Jiang
8d06b2d576
feat(agent-presets): make the default preset a user setting
...
`config.default` becomes the composition base of an `agent-presets` settings
namespace, so the user document layers over the deployment's engineering
default and a person can change which preset new sessions get without a
restart.
The value is read per resolution rather than snapshotted: a hot-reloaded
document takes effect on the next session created, and every running session
stays on the preset it was composed from — which is the same rule the
session-header guard enforces from the other side.
`resolve()` read `config.default` directly, which would have made the whole
setting inert; it now goes through `defaultId` like every other caller.
The write-protection test is rewritten against a temp profile root. It was
passing vacuously: the un-overridden Loader REWRITES the composition it read —
stamping `disabled: true` onto the self-disposing row — so the committed
fixture had been mutated by the very run that proved the bug, and every later
run compared against the damaged file and passed. Building the preset in a
temp directory makes the assertion immune to its own failure mode, and it now
fails with a visible `+ disabled: true` when the override is removed.
Review follow-ups on this layer. The exported schema is
`AgentPresetSettingsSchema`, symmetric with the `AgentPresetSettings`
interface it resolves and self-describing at an import site. The `session.create`
JSDoc promised "the deployment's default preset" for an omitted `agentPreset`,
which this layer makes false — it now names the effective default. The
constructor records why it does not use `installSettingsSection`: that helper
re-judges what a consumer DERIVED across attach and detach, and nothing here is
derived. The provider-unload test disposes the fiber `ctx.plugin()` handed back
instead of reaching into `ctx.reflect.store`, and the write-protection wait says
why slack is the right shape for an absence assertion.
The real composition covers the layering too. `apps/cli` boots the shipped
`cordis.yml`, stores `agent-presets.default`, and asserts an unnamed session
composes from it — the package suite proves the layering against a hand-built
context, this proves the roster and the settings provider are wired to each
other. That test also pins the settings row at a temp file: it defaulted to
`$DSH_HOME/settings.yaml`, so a developer's own stored default decided the
outcome of a file whose whole point is that only the shipped root does.
The Agent Note records the per-resolution read and its correspondence with the
session header, and the vacuous-test finding above.
2026-08-07 00:36:54 +08:00
..
2026-08-05 13:09:53 +08:00
2026-08-03 16:04:26 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 00:00:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 11:04:03 +08:00
2026-07-23 19:33:30 +08:00
2026-07-23 19:48:00 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 18:42:13 +08:00
2026-07-26 22:45:33 +08:00
2026-08-04 18:42:13 +08:00
2026-08-06 04:11:57 +08:00
2026-08-06 04:11:57 +08:00
2026-08-06 04:11:57 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 23:06:00 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-30 13:49:57 +08:00
2026-08-05 13:09:53 +08:00
2026-08-05 13:09:53 +08:00
2026-08-03 16:04:26 +08:00
2026-08-05 13:09:53 +08:00
2026-08-06 04:11:58 +08:00
2026-08-06 04:11:58 +08:00
2026-08-06 04:11:58 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 23:43:10 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-02 12:51:09 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 22:16:40 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 23:06:00 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 04:14:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-08-03 16:04:26 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 23:43:10 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 00:00:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-22 23:07:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 02:33:29 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 12:43:59 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 02:33:29 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-23 19:33:30 +08:00
2026-08-04 17:36:14 +08:00
2026-08-02 20:09:05 +08:00
2026-08-02 20:09:05 +08:00
2026-08-02 20:09:05 +08:00
2026-08-05 10:57:53 +08:00
2026-07-26 02:33:29 +08:00
2026-08-05 10:57:53 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-05 13:09:53 +08:00
2026-07-30 18:27:36 +08:00
2026-08-05 13:09:53 +08:00
2026-08-03 12:25:33 +08:00
2026-08-03 10:56:09 +08:00
2026-08-03 10:56:09 +08:00
2026-08-04 20:54:42 +08:00
2026-07-24 01:40:25 +08:00
2026-08-04 20:54:42 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-19 22:52:03 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 18:42:13 +08:00
2026-07-26 13:13:53 +08:00
2026-08-04 18:42:13 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 01:40:25 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-07-31 19:21:16 +08:00
2026-08-05 13:09:53 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-04 17:36:14 +08:00
2026-07-23 03:15:15 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 16:07:35 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-04 17:36:14 +08:00
2026-07-21 20:15:09 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-08-03 22:04:53 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 10:40:31 +08:00
2026-08-06 10:40:31 +08:00
2026-08-06 10:40:31 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 21:20:06 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 15:49:09 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-25 16:43:07 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 21:02:28 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 14:36:31 +08:00
2026-08-04 14:36:31 +08:00
2026-08-04 14:36:31 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 13:42:02 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-24 21:50:11 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 21:02:28 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 16:49:55 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 03:20:20 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 12:09:48 +08:00
2026-08-04 17:36:14 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-06 18:01:11 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 03:54:33 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-28 02:33:14 -07:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 04:14:51 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-26 12:17:45 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 11:04:03 +08:00
2026-07-29 23:45:42 +08:00
2026-07-29 23:45:42 +08:00
2026-08-04 17:36:14 +08:00
2026-07-27 03:52:41 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 20:54:42 +08:00
2026-07-28 17:02:39 +08:00
2026-08-04 20:54:42 +08:00
2026-08-03 13:45:30 +08:00
2026-08-03 13:45:30 +08:00
2026-08-03 13:45:30 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 10:11:38 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 01:14:25 +08:00
2026-08-04 17:36:14 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 13:49:35 +08:00
2026-08-05 13:09:53 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 14:09:04 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-29 13:15:24 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 17:22:15 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 01:30:29 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 13:49:57 +08:00
2026-07-30 13:49:57 +08:00
2026-07-30 13:49:57 +08:00
2026-07-30 21:49:58 +08:00
2026-07-30 21:49:58 +08:00
2026-07-30 21:49:58 +08:00
2026-07-31 17:39:51 +08:00
2026-07-31 17:39:51 +08:00
2026-07-31 17:39:51 +08:00
2026-07-30 18:07:35 +08:00
2026-07-30 18:07:35 +08:00
2026-07-30 18:07:35 +08:00
2026-08-04 17:36:14 +08:00
2026-07-30 19:24:21 +08:00
2026-08-04 17:36:14 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 01:30:29 +08:00
2026-08-04 17:36:14 +08:00
2026-08-03 20:36:26 +08:00
2026-08-03 20:36:26 +08:00
2026-08-03 20:36:26 +08:00
2026-08-02 01:25:02 +08:00
2026-08-02 01:25:02 +08:00
2026-08-02 01:25:02 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-02 12:51:10 +08:00
2026-08-04 17:36:14 +08:00
2026-07-31 11:00:07 +08:00
2026-08-04 17:36:14 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-02 01:29:04 +08:00
2026-08-05 15:34:51 +08:00
2026-08-05 15:34:51 +08:00
2026-08-05 15:34:51 +08:00
2026-08-05 20:26:46 +08:00
2026-08-05 20:26:46 +08:00
2026-08-05 20:26:46 +08:00
2026-07-31 22:52:18 +08:00
2026-07-31 22:52:18 +08:00
2026-07-31 22:52:18 +08:00
2026-08-02 01:11:08 +08:00
2026-08-02 01:11:08 +08:00
2026-08-02 01:11:08 +08:00
2026-08-07 00:36:54 +08:00
2026-08-07 00:36:54 +08:00
2026-08-07 00:36:54 +08:00
2026-08-05 18:54:47 +08:00
2026-08-05 18:54:47 +08:00
2026-08-05 18:54:47 +08:00
2026-08-06 15:18:17 +08:00
2026-08-06 15:18:17 +08:00
2026-08-06 15:18:17 +08:00
2026-08-05 20:55:39 +08:00
2026-08-05 20:55:39 +08:00
2026-08-05 20:55:39 +08:00
2026-08-04 16:42:50 +08:00
2026-08-04 16:42:50 +08:00
2026-08-04 16:42:50 +08:00
2026-08-06 10:40:32 +08:00
2026-08-06 10:40:32 +08:00
2026-08-06 10:40:32 +08:00
2026-08-06 17:28:30 +08:00
2026-08-06 17:28:30 +08:00
2026-08-06 17:28:30 +08:00
2026-08-06 10:19:51 +08:00
2026-08-06 10:19:51 +08:00
2026-08-06 10:19:51 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 11:28:46 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 13:44:23 +08:00
2026-08-06 14:58:33 +08:00
2026-08-06 14:58:33 +08:00
2026-08-06 14:58:33 +08:00
2026-08-06 16:38:25 +08:00
2026-08-06 16:38:25 +08:00
2026-08-06 16:38:25 +08:00