Sending to an Agent while the same Agent (or any Agent) was busy in another
conversation made the new conversation sit on 'Running' until the first one
finished. The cause was the writer lease, which was keyed by the real folder:
every writable conversation that used the same folder (and most keep the
default one) took turns, one at a time, across groups and direct chats.
9198bf6 had deliberately scoped the lease of direct chats to the chat so that
one writable chat could not block another Agent. 17cbd32 reverted that as a
regression and added a 'waiting for another Agent writing in the same folder'
notice. That was the wrong call: it made the product behave like a single
queue. This commit reverts 17cbd32 and goes one step further than 9198bf6:
- the writer lease is scoped to the conversation for groups as well as direct
chats, so conversations never wait for each other; writers inside one
conversation still take turns
- the waiting notice, the waitingForWorkspaceKinds snapshot field and the
scheduler queue callbacks that only existed for the folder lock are removed
with the revert
- the old rule 'group chats serialize writes across symlink aliases' is
replaced by its opposite; new tests cover the same Agent in two direct chats
and a group at once, group chats sharing a folder through a symlink alias,
and that turns of one conversation share a lease scope while another
conversation in the same folder does not
- architecture.md states the new rule and the trade-off
Trade-off: two Agents in different conversations can now edit the same files
at the same time, like two terminals in one directory. Output capture compares
.meldwork-output/ before and after a run, so when two conversations produce
deliverables in the same folder at the same time one may attach a file the
other wrote. No guard was added for that.
The new write-scheduling tests fail on the previous commit (two fail, one
never gets its second Agent started).
Checked with: local-workspace-write-scheduling (6 pass), run-scheduler,
run-coordinator, state, harness, npm --prefix frontend test (333 pass).
architecture.md pointed at docs/flows.md, permissions.md, variables.md and
automation.md, which exist on no branch, and at three more that exist only on
main (this branch keeps /docs/ untracked). The related-documents list now
links only files tracked in the repository.
Adds a Code Map (what each invocation, prompt and auto-runner module owns and
where new behaviour should go) and the Reliability Rules the harness now
enforces, so the next change starts from the layout instead of the 6000-line
class.
Each Agent CLI now runs only with its own native credentials. The central
path of configuring one provider inside Meldwork for every Agent added
instability without being realistic to maintain, and it depended on
machine-local configuration details.
- Delete the provider store/options modules, the local-agent-provider IPC
handlers and preload API, per-CLI env injection (CODEBUDDY_*/ANTHROPIC_*/
KIMI_* ...), the managed OpenClaw provider runtime, and shared-provider
catalog gating; startup removes the legacy encrypted
meldwork-provider.json.
- OpenClaw always resolves its native runtime now; native credential
passthrough, the isolated gateway/guard runtime, and the
runtime-auth-failure state machine stay unchanged.
- Remove the Provider settings UI, onboarding slide, providerMode display,
~100 i18n keys per language, provider CSS, and update the architecture,
security, and discoverability docs to the native-credentials boundary.
Checks: npm --prefix desktop test (1512 pass), npm --prefix frontend test
(325 pass), frontend build and build:desktop, desktop pack.
Prevent group completion from masking peer blockers, avoid replaying delivered group context, validate Pi protocol capability, and restrict child environments while preserving supported runtime configuration. Update the technical iteration plan and related discoverability documentation.