Skip to content

Change Routing Workflow

Status: Active Last reviewed: 2026-06-28 Scope: Routing table for common TwoMore changes. Use this before editing so docs reduce startup time instead of adding drift.

Start with Current Project State, Current Documentation State, and AGENTS.md. Then use the row that matches the primary artifact. If a change spans multiple rows, split the work or state the cross-row verification explicitly.

Before editing roadmap or release-gated work, open with the slice contract from Execute A Roadmap Slice. The agent must name:

  • active slice;
  • mode;
  • current blocker;
  • allowed scope;
  • blocked scope;
  • acceptance proof;
  • verification ladder;
  • stop rules.

If those cannot be stated concretely, do source/evidence inventory first rather than implementing.

Routing Table

Change typeRead firstUsually updateRequired verification
Docs-only active guidanceAGENTS.md, docs/current-doc-state.md, affected doc; release-process docs also read docs/workflows/release-versioning-and-ota.md and docs/release-evidence.mdaffected doc, index links, generated state docs if facts changed; release-process changes record "no OTA/build run" unless app artifacts changedyarn docs:generate, yarn docs:check, git diff --check
Roadmap or implementation slice changedocs/architecture/roadmap.md, docs/architecture/implementation-plan.md, docs/specifications/app-functionality-map.md, relevant research/spec docroadmap status/outcome if sequencing changed, implementation-plan slice status/scope, product/spec/research docs if truth changed, generated state docsyarn docs:generate, yarn docs:check, git diff --check; yarn check when code changed
New or changed SQL migrationAGENTS.md DATA-13, docs/guides/api-supabase.md, relevant schema docsmigration file, purpose catalog row or PI-EXEMPT, generated state docsyarn lint:pi-schema, yarn docs:generate, yarn check
Supabase generated type refreshdocs/guides/api-supabase.md, docs/guides/builds-and-deployment.mdpackages/app/src/adapters/supabase/generated.types.ts, generated state docs if migration count changedyarn check:supabase-types when configured, yarn docs:check, yarn check
New feature screendocs/agent-prompts/add-screen.md, docs/architecture/shared-client-architecture.md, AGENTS.md COMP rulesfeature package screen, route shell, i18n keys, screen docs if activeyarn check; add targeted tests when behavior is non-trivial
New query hookdocs/agent-prompts/add-query.md, AGENTS.md DATA-10, freshness posture docsquery hook, query keys/cache helpers, JSDoc freshness contractyarn check; targeted hook/cache tests when behavior changes
New mutation hookdocs/agent-prompts/add-mutation.md, AGENTS.md DATA-2/DATA-11/DATA-12mutation hook, optimistic patches/cache writes, queue executor if offline-capableyarn check; targeted mutation tests
New ESLint rulepackages/eslint-plugin/README.md, AGENTS.md, relevant rule docsrule implementation, tests, rule doc, AGENTS enforcement if graduated, generated state docsrule test, yarn docs:generate, yarn docs:check, yarn check
Ratchet baseline changedocs/adr/0006-eslint-ratchet-zero-waivers-policy.md, eslint.ratchet.config.mjsratchet config, generated state docs, any active docs naming countsyarn metrics, yarn docs:generate, yarn docs:check, yarn lint:strict
Mobile build or OTA workdocs/workflows/release-versioning-and-ota.md, docs/release-evidence.md, docs/guides/builds-and-deployment.md, docs/device-setup.md, docs/production-readiness.mddocs/release-evidence.md with source commit, upstream-sync status, runtime, EAS artifact ID, smoke result, and rollback pointer; build/deployment docs only when workflow changes; generated state docs if app version/runtime changedrelease decision gate; node scripts/guard-ota-release.mjs <target> for OTA; git status --short, git fetch --prune, and git log --oneline @{u}..HEAD empty for builds; yarn preflight when building; relevant EAS command; yarn docs:check; pre-production OTA target is yarn ota:preview only
Web route changeREADME.md, apps/web/README.md, docs/architecture/shared-client-architecture.mdroute docs, generated state docsyarn docs:generate, yarn docs:check, web build when route behavior changed
Launch blocker updatedocs/pre-launch-checklist.md, docs/production-readiness.md, docs/current-project-state.mdchecklist/readiness ledger; generated state docs only if repo facts changedyarn docs:check, source evidence for blocker state
External credential/vendor workdocs/guides/credentials.md, relevant vendor guide, docs/pre-launch-checklist.mdcredential docs, readiness ledger, never secret valuesyarn docs:check; runtime/vendor smoke when credentials are used

Deferral Rule

If the work discovers stale historical material or useful adjacent improvements outside the active slice, do not expand the slice automatically. Record it as a follow-up unless it would mislead the current implementation path or directly blocks the named acceptance proof.

For R1 closure work, the default answer to adjacent improvements is "defer." Only work that removes one current yarn report:r1-release-readiness blocker, or proves that blocker is owner/vendor/deployment-controlled, stays in scope.

Generated State Rule

Do not manually edit generated state pages. If a routed change affects counts or repo facts, run:

bash
yarn docs:generate
yarn docs:check

yarn check includes docs:check, so stale generated docs or known stale active-doc references block normal completion.

Multi-Agent Coordination

Use parallel agents only when the slices have distinct primary artifacts and non-overlapping write paths. The main agent owns integration, final docs state, and the verification ladder.

For multi-agent work, one agent must remain the integration owner. Subagents return evidence and proposed patches; they do not broaden the active slice or accept product/release status independently.

Before delegation, give each agent:

  • the matching routing-table row;
  • allowed paths and blocked paths;
  • the source docs to read first;
  • the exact verification command it can run locally;
  • the evidence shape expected back: files touched, current-state facts checked, commands run, failures, and deferrals.

Subagents should not manually edit generated state pages. If their slice changes repo facts, they report that fact and the main agent runs yarn docs:generate once after integration. This prevents generated-doc churn and keeps one final source of truth.

Pause and re-split if two agents need the same file, an agent discovers a new AGENTS.md rule is needed, or a route row no longer covers the work. Treat that as a plan change, not an incidental edit.

Research Basis

This workflow follows four current operating assumptions:

  • OpenAI Codex AGENTS.md guidance: Codex loads AGENTS.md before work and stops adding project instruction files at the configured byte budget, so AGENTS.md stays compact and yarn lint:agents-md enforces a local size guard.
  • Write the Docs: docs-as-code: documentation lives in Git and should move through the same review/CI lifecycle as code; generated state docs and docs:lint-stale are this repo's drift layer.
  • GitHub protected-branch status checks: required status checks are the reliable merge barrier, so docs drift checks run in CI and pre-push rather than relying on agent memory.
  • Expo EAS Update deployment guidance: channels and runtime versions are the deployment control plane, so release work now routes through the release-versioning workflow before OTA or builds.
  • Anthropic context-engineering guidance: multi-agent work is most useful when deep exploration stays isolated and returns distilled evidence to one integration owner.

Markdown remains the source of truth. Run yarn docs:check before handoff.