oficina / docs Public

Merge main, and two things that answer confidently instead of failing

a6fa843 brought live sync to main. The only conflict was the build
script's rename (build-editor.mjs became build-bundles.mjs when it
started emitting two): the live-update test step is kept exactly as it
was and only the reference repointed. The editor bundle is rebuilt on
top of that branch's own changes to editor-entry.js, which is why a
rebuilt bundle is never hand-merged.

Merged rather than rebased because this branch is already pushed, and
rewriting pushed history would need a force push.

Two entries for AGENTS.md's section on tools that answer wrongly rather
than failing.

`carlos channels` reports which release a channel POINTS AT, not which
one the box is SERVING, and adoption runs on an hourly timer — so the
two disagree for as long as an hour after a promote. Observed
2026-09-01: edge read the new version while the live host served the
previous one for five minutes, closed within seconds by a restart.
Neither command fails and nothing says "not live yet". Marked as one
observation rather than a measurement, because this branch did not
re-verify it.

And the one this session earned. A merge commit on main was reported as
a breach of the shipping cadence, and I passed it on to Paul as one —
including "two sessions noticed it independently", when the second
session was the one who told me. `amadan branch merge` produces a merge
commit itself; the branch had landed correctly through the sanctioned
gate. A minute with the tool would have caught it. What is written down
now is that another session's report is evidence about what they saw
rather than a fact you have checked, and relaying it flatly launders one
into the other.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYB9fUAfxXNzkeC3fsFYzR
Paul Campbell pushed by paul@keymail.dev 9c55c7ea556143fece03211b516b23a6932a5d88 parent 9ed5842parent a6fa843
23 files changed, +2451 −43
  • .amadan/ci.d/10-gate +12 −0
  • AGENTS.md +24 −0
  • docs/superpowers/plans/2026-09-01-live-sync.md +117 −0
  • docs/superpowers/specs/2026-08-30-docs-design.md +40 −4
  • docs/superpowers/specs/2026-09-01-live-sync-design.md +417 −0
  • fixtures/editor-entry.js +145 −8
  • fixtures/live-updates.mjs +192 −0
  • fixtures/live-updates.test.mjs +290 −0
  • internal/docs/app.go +8 −2
  • internal/docs/cursor_test.go +293 −0
  • internal/docs/editor_view_test.go +1 −1
  • internal/docs/handlers.go +69 −2
  • internal/docs/hub.go +118 −0
  • internal/docs/hub_test.go +154 −0
  • internal/docs/render.go +9 −0
  • internal/docs/seed.go +6 −1
  • internal/docs/static/editor.2acdd85ce9619546.js +14 −0
  • internal/docs/static/editor.98af6ed37bba8906.js +0 −14
  • internal/docs/store.go +48 −7
  • internal/docs/store_test.go +4 −4
  • internal/docs/stream.go +170 −0
  • internal/docs/stream_test.go +309 −0
  • internal/docs/testing.go +11 −0

CI passed — run details

.amadan/ci.d/10-gate

Loading diff…

AGENTS.md

Loading diff…

docs/superpowers/plans/2026-09-01-live-sync.md

Loading diff…

docs/superpowers/specs/2026-08-30-docs-design.md

Loading diff…

docs/superpowers/specs/2026-09-01-live-sync-design.md

Loading diff…

fixtures/editor-entry.js

Loading diff…

fixtures/live-updates.mjs

Loading diff…

fixtures/live-updates.test.mjs

Loading diff…

internal/docs/app.go

Loading diff…

internal/docs/cursor_test.go

Loading diff…

internal/docs/editor_view_test.go

Loading diff…

internal/docs/handlers.go

Loading diff…

internal/docs/hub.go

Loading diff…

internal/docs/hub_test.go

Loading diff…

internal/docs/render.go

Loading diff…

internal/docs/seed.go

Loading diff…

internal/docs/static/editor.2acdd85ce9619546.js

Loading diff…

internal/docs/static/editor.98af6ed37bba8906.js

Loading diff…

internal/docs/store.go

Loading diff…

internal/docs/store_test.go

Loading diff…

internal/docs/stream.go

Loading diff…

internal/docs/stream_test.go

Loading diff…

internal/docs/testing.go

Loading diff…