Skip to content

docs(agents): the two multi-agent failure modes that cost this branch the most rounds - #4152

Merged
os-zhuang merged 1 commit into
mainfrom
claude/envelope-drift-route-modules-v2zoky
Jul 30, 2026
Merged

docs(agents): the two multi-agent failure modes that cost this branch the most rounds#4152
os-zhuang merged 1 commit into
mainfrom
claude/envelope-drift-route-modules-v2zoky

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Docs only — two entries appended to AGENTS.md § Multi-agent working discipline. Both written from one branch's lifetime (the #3843 envelope line, 16 PRs), so every row is something that actually happened rather than something that might.

#9 — refresh a long-lived worktree's build state after merging main

Four distinct stale artefacts, each of which fails as if your change broke something — naming other people's exports, other packages' files, or config you never touched:

stale artefact how it presents
packages/spec/dist check:api-surface reports other people's exports as "5 breaking (removed/narrowed)"; check:i18n-coverage rejects an example config for a chart type the spec allows
node_modules a package fails to resolve a dependency it plainly declares (Cannot find package 'hono')
packages/runtime/.objectstack/ datasource-autoconnect sees each row 6×
.cache/objectui-* pnpm lint reports 61 errors in files you have never opened

I hit the first one three separate times before writing it down, and diagnosed it from scratch on two of them. The message that names someone else's export as a breaking change is a genuinely alarming thing to read on your own PR.

Also records that OS_SKIP_DTS=1 — the flag that keeps local builds fast — leaves no .d.ts, so gen:api-surface cannot run under it at all, failing with Could not resolve module symbol … Is the package built?. That reads as a broken build rather than a missing flag.

None of this is CI-visible: CI checks out fresh and installs clean. The entire cost lands on whoever is debugging, which is the argument for recognising it in one step rather than re-diagnosing per gate.

#10 — a clean merge is not a working merge

Git conflicts on overlapping lines. Nothing warns you when two changes are individually fine and jointly wrong. Two real cases from this branch:

A third was a genuine textual conflict (#4133 and I both removed the same stale ledger entry), and that one git did flag — which is the contrast worth internalising: the conflicts git catches are the ones where two people touched the same line, not the ones where the result is broken.

So: pull main and re-run before opening a PR, and again before merging. Much of scripts/check-*.mjs exists precisely because this class of breakage is invisible to git merge.

Verification

check:doc-authoring · check:role-word · check:org-identifier · check:nul-bytes · check:release-notes — all clean. Empty changeset: docs, releases nothing.


Generated by Claude Code

… the most rounds

Both written from one branch's lifetime, so every row is something actually hit
rather than something that might happen.

#9 — refresh a long-lived worktree's build state after merging main. Four stale
artefacts each fail AS IF your change broke something, naming other people's
exports, other packages' files, or config you never touched:

  packages/spec/dist          check:api-surface reports OTHER people's exports as
                              "N breaking"; check:i18n-coverage rejects an example
                              config for a value the spec allows
  node_modules                a package cannot resolve a dependency it declares
  runtime/.objectstack/       fixture rows accumulating across runs
  .cache/objectui-*           dozens of lint errors in files never opened

None is CI-visible — CI checks out fresh and installs clean — so the whole cost
lands on whoever is debugging, which is exactly why it is worth recognising in one
step instead of re-diagnosing per gate. Also records that OS_SKIP_DTS=1 leaves no
.d.ts, so gen:api-surface cannot run under it at all.

#10 — a clean merge is not a working merge. Git conflicts on overlapping lines and
says nothing when two changes are individually fine and jointly wrong. Both
examples are recent: a test pinning a response body's exact shape landed while
that shape was being changed elsewhere (merged clean, failed CI), and a domain
file was deleted while another agent's guard still declared it (caught only
because the guard existed). Hence pull main and re-run before opening a PR, and
again before merging.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CYbS3kS8xzsHNXFTzp4e2z
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 30, 2026 12:40pm

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tooling size/s labels Jul 30, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review July 30, 2026 12:48
@os-zhuang
os-zhuang merged commit d9194f0 into main Jul 30, 2026
15 checks passed
@os-zhuang
os-zhuang deleted the claude/envelope-drift-route-modules-v2zoky branch July 30, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants