What map mode produces for a fictional repo: a pnpm workspace under
packages/ (shared libs + a React webapp), a Rust worker, Foundry
contracts, and manifest-less infra under apps/. Every name below is
invented; the shape is from a real production run.
<!-- GENERATED by pr-stack map — edit below the overrides marker only -->
<!-- hash-cmd: git ls-files -s -- packages/pnpm-workspace.yaml packages/package.json 'packages/*/package.json' 'apps/*/package.json' apps/worker/Cargo.toml apps/contracts/foundry.toml | shasum -a 256 -->
<!-- inputs-hash: 3fc9e21b0a774d5c8e6f12aa90cd44e7b81f0c3d5a26e98d417b6f20c5a3d9e1 - · generated: 2026-07-14 -->
<!-- refresh = `pnpm -C packages install --frozen-lockfile` — core/api-client are pnpm file: deps
(snapshot-installed); consumers build against a stale copy until refresh runs. -->
| tier | layer | side | paths | verify |
|------|------------------|---------|------------------------------------------------------------------|--------|
| 0 | repo-config/docs | backend | *.md, LICENSE, .github/**, .gitignore, docs/** | none |
| 1 | workspace-root | backend | packages/package.json, packages/pnpm-workspace.yaml, packages/pnpm-lock.yaml, packages/tsconfig.base.json | pnpm -C packages install --frozen-lockfile |
| 1 | contracts | backend | apps/contracts/** | cd apps/contracts && forge test |
| 1 | worker | backend | apps/worker/** | cd apps/worker && cargo check && cargo test |
| 1 | infra | backend | apps/infra/** | none (db/dashboards, no toolchain) |
| 2 | core | backend | packages/core/** | pnpm -C packages/core check && pnpm -C packages/core lint && pnpm -C packages/core test |
| 3 | api-client | backend | packages/api-client/** | pnpm -C packages/api-client check && pnpm -C packages/api-client lint && pnpm -C packages/api-client test |
| 4 | webapp:api | backend | packages/webapp/src/{api,config,hooks}/**, packages/webapp/package.json, packages/webapp/*.{json,ts,js,mjs}, packages/webapp/.* | refresh && pnpm -C packages/webapp check && lint && test |
| 5 | webapp:components| ui | packages/webapp/src/components/**, packages/webapp/public/** | refresh && pnpm -C packages/webapp check && lint && test |
| 6 | webapp:pages | ui | packages/webapp/src/{pages,flows}/**, packages/webapp/src/main.tsx, packages/webapp/src/app-routes.ts, packages/webapp/src/assets/** | refresh && pnpm -C packages/webapp check && lint && test |
| — | unmapped | — | (none at generation; new paths matching no row land here and must be flagged in the plan) | — |
<!-- Layer confirmations: webapp api/components/pages split confirmed 2026-07-14 by the operator.
Ecosystems: pnpm workspace (packages/), Rust crate (apps/worker), Foundry (apps/contracts).
No dependency edges between ecosystems — they sort independently. -->
<!-- MANUAL OVERRIDES — survives regeneration -->
<!-- core and api-client are file: deps (snapshot-installed, not live symlinks). After editing
one, run the refresh command before typechecking a dependent — a plain build is not
seen by dependents. -->
<!-- api-client: 9 tests are env-gated on TESTS_RPC_URL and fail without fork config;
that set is the green baseline, per the skill's END-baseline rule. -->Things to notice:
- The hash command names every manifest consulted, across all three
ecosystems. Editing
Cargo.tomlorfoundry.tomlflips the hash and forces regeneration, same as anypackage.json. - Completeness is glob-level, not package-level.
webapp's rows together cover every file in the package — dotfiles,main.tsx, andassets/included. A file matching no row would fall to the package's lowest tier and its side, so a missedflows/glob would route UI code into a backend PR. - The refresh macro rides in consumer recipes.
coreandapi-clientare snapshot-installed; every tier that consumes them re-installs before verifying. The producers themselves don't need it. - Operator knowledge survives regeneration below the overrides marker: the snapshot-dep explanation and the env-gated test baseline were both learned the hard way mid-run, then recorded here so no future run relearns them.