agent-orchestrator/docs
Ashish Huddar b845a285e7 fix(canvas): duplicate canvas ids must keep newest payload (greptile P1)
readCanvases sorts file canvases newest-first by updatedAt. The
canvases route then merged them via Map.set in iteration order, which
overwrites earlier (newer) entries with later (older) ones. If an
agent wrote `result-v1.json` and `result-v2.json` with the same canvas
id, the user would see the OLDER payload — the exact opposite of the
intended last-write-wins behavior.

Fix: extract the merge into a pure helper (merge.ts) with explicit
first-write-wins semantics. Synthesized seeds the map first (preserves
the pass-9 reservation that core- prefix wins on collision); file
canvases skip ids already present, so the newest wins.

Adds 5 regression tests covering: empty input, synth + file mix,
duplicate-id newest-wins (the regression), synth-vs-file collision,
and final sort order.

Also adds a "Why no HTML canvas type?" section to the feature writeup
HTML — the most-asked design question, answered honestly so reviewers
don't have to ask. Covers the trust-hierarchy-inversion argument
(agents are lowest-trust + LLMs are prompt-injectable + same-origin
HTML = supervisor JS execution), the leaky-sanitizer argument, and
the legitimate sandboxed-iframe path for v0.5+.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 23:41:47 +05:30
..
assets docs(canvases): drop mobile section, mark mobile as out-of-scope for v0.1 2026-05-09 21:52:30 +05:30
design fix(core): address lifecycle review feedback 2026-04-15 12:41:06 +05:30
specs fix(web): runtime terminal port resolution + project-id hardening 2026-03-28 19:23:15 +05:30
ARCHITECTURE.md feat(windows): complete Windows support (#1025) 2026-05-09 00:10:53 +05:30
CLI.md feat(windows): complete Windows support (#1025) 2026-05-09 00:10:53 +05:30
CROSS_PLATFORM.md feat(windows): complete Windows support (#1025) 2026-05-09 00:10:53 +05:30
DEVELOPMENT.md feat(windows): complete Windows support (#1025) 2026-05-09 00:10:53 +05:30
PLUGIN_SPEC.md chore: rename @composio scope to @aoagents across all packages 2026-04-09 15:59:33 +00:00
SECURITY-AUDIT-SUMMARY.md fix: migrate to hash-based project isolation architecture 2026-02-18 00:19:55 +05:30
canvases-codex-review-2026-05-06.html docs(canvases): add feature writeup + codex review writeup HTMLs 2026-05-09 22:31:45 +05:30
canvases-feature.html fix(canvas): duplicate canvas ids must keep newest payload (greptile P1) 2026-05-09 23:41:47 +05:30
canvases-launch.html docs(canvases): drop markdown twins, HTML is canonical 2026-05-09 23:31:16 +05:30
design-cli-redesign-analysis.html refactor: remove --decompose feature entirely 2026-04-10 13:02:52 +05:30
design-npm-global-install-fixes.html docs: sync install-flow design doc with current start/preflight behavior 2026-03-26 16:05:59 +05:30
design-onboarding-improvements.html Expand design doc section on ao-web npm publishing 2026-03-14 19:04:57 +05:30
observability.md feat(web): copy observability debug bundle from dashboard (#1320) 2026-04-21 11:35:43 +05:30
openclaw-plugin-setup.md chore(cli): remove deprecated 'ao init' command (#1438) 2026-05-05 18:43:55 +05:30
opencode-workflows-spec.md feat (core): inject worker prompt as instructions file (#1302) 2026-04-26 15:44:39 +05:30
state-machine-stage2-evidence-recovery-plan.md docs: add stage 2 evidence and recovery plan (#95) 2026-04-16 22:22:23 +05:30