Comfy-Org / Comfy-Org/ComfyUI_frontend
eslint.config.ts enforces a layer boundary for src/world/, deleted by the ADR 0008 amendment; src/systems/ is guarded by nothing
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 699
- Avg merge
- 1d 7h
- Merged PRs (30d)
- 490
Description
## Summary
`eslint.config.ts` still enforces a layer-architecture boundary for `src/world/`, a directory that does not exist on any live ref. ADR 0008 was amended on **2026-06-19 (PR 12617)** to delete the single `src/world/` substrate in favour of one store per concern. The substrate went; the lint config that guarded it stayed.
At the same time the ECS branch's replacement directory, `src/systems/`, is guarded by nothing.
## Evidence
Two dead sites on `main` (`eslint.config.ts`):
```
466: 'src/world/**/*.{ts,vue}' <- files glob, matches nothing
496: target: './src/world/**', <- restricted-path zone target
499: 'src/world/ must remain free of litegraph dependencies. ...'
```
The directory is absent everywhere:
```
$ for r in origin/main 848cd39ed0 333906c4cb d001548b3a; do
printf "%s: " "$r"; git ls-tree -r --name-only "$r" src/world/ | wc -l; done
origin/main: 0
848cd39ed0: 0 (merge-base of feature/ecs-migration)
333906c4cb: 0 (feature/ecs-migration)
d001548b3a: 0 (current branch head)
```
Control: the same command for `src/platform/` — the sibling layer named two lines above — returns a non-zero count, so the query is not silently failing.
The only surviving mentions of the deleted substrate are in `docs/architecture/appendix-ecs-pattern-survey.md`, which correctly stamps itself *Superseded (PR 12617)* but still carries three **broken relative links** into the deleted tree:
```
127: [world.test.ts](../../src/world/world.test.ts)
225: [src/world/world.ts](../../src/world/world.ts)
260: [src/world/entityIds.ts](../../src/world/entityIds.ts)
```
## Why it matters
1. **A zone that matches nothing reads as coverage.** `import-x/no-restricted-paths` does not warn when a zone's `target` glob matches zero files, so the config looks like it enforces four layers when it enforces three. Anyone auditing the layer architecture (see #14871) counts a boundary that is not there.
2. **The enforcement is inverted.** The ECS migration branch adds a genuinely new top-level source directory, `src/systems/` (`badgeSystem.ts` + 3 test files), described in ADR 0008 line 48 and in four architecture docs. It appears in **zero** config files — no `CODEOWNERS` entry, no eslint zone, no `knip.config.ts`, no `.fallowrc.jsonc`, no `.coderabbit.yaml` path rule. So the repo guards a directory that was deleted and does not guard the one that was added.
3. The three broken doc links make the superseded appendix look repairable when the target is gone.
## Suggested fix
- Delete the `src/world/**` files glob (line 466) and the `src/world/**` zone (lines 494–499).
- Decide whether `src/systems/` is a layer. If it is, give it a zone and a `CODEOWNERS` line; if it is a leaf of `workbench`, say so in `src/AGENTS.md`. Either answer is fine — the current answer is "nobody has one".
- In `docs/architecture/appendix-ecs-pattern-survey.md`, convert the three links into plain text or point them at commit-pinned URLs, since the files are gone from every ref.
## Provenance
Both `src/world/` sites were introduced in `0157b47024` — *feat(subgraph): Subgraph Link Only Promotion (ADR 0009) + migration/s…*, 2026-05-27 — attributed via the GitHub blame API (the local clone is shallow, so `git blame` is not usable here). The ADR 0008 amendment that removed the substrate landed three weeks later.
Found during a documentation/ADR cross-reference sweep of the ECS migration branch against `docs/adr/` and `.agents/checks/`.
Contributor guide
Assessment
This issue has not been assessed yet.