Comfy-Org / Comfy-Org/ComfyUI_frontend
ADR-compliance automation is scoped to src/ecs/ (never existed), and the ECS branch moves a doc the audit command reads
- Dominant language
- TypeScript
- Stars
- 2k
- Forks
- 704
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 512
Description
## Summary
The two pieces of automation that are supposed to enforce ADR 0003 / ADR 0008 on graph-entity PRs are both pointed at paths that do not exist. One has been wrong since it was written; the other is broken *by the ECS migration branch itself*.
## 1. `.coderabbit.yaml:85` scopes the ADR-compliance check to `src/ecs/`, which has never existed
```yaml
80: - name: ADR compliance for entity/litegraph changes
85: This check applies ONLY when the PR modifies files under `src/lib/litegraph/`, `src/ecs/`, or files related to graph entities ...
87: If none of those paths appear in the changed files, pass immediately.
```
```
$ for r in origin/main 848cd39ed0 333906c4cb d001548b3a; do
printf "%s: " "$r"; git ls-tree -r --name-only "$r" src/ecs/ | wc -l; done
origin/main: 0 848cd39ed0: 0 333906c4cb: 0 d001548b3a: 0
```
Control: the same command for `src/lib/litegraph/` — the other named path — returns a non-zero count, so the query is not silently failing.
The check still fires on `src/lib/litegraph/` and on the loose "files related to graph entities" clause, so it is not fully dead. But the one *explicit, unambiguous* path in the scope list matches nothing, and the ECS work does not live there. The stores it does live in — `src/stores/linkStore.ts`, `src/stores/nodeDataStore.ts`, `src/stores/rerouteStore.ts`, and the new top-level `src/systems/` — are matched only by the model's judgement of "related to graph entities", with an explicit instruction to *"pass immediately"* otherwise.
Line 92 of the same rule also asks the reviewer to flag *"data that should be a World component"*. The `World` was deleted by the **ADR 0008 amendment of 2026-06-19 (PR 12617)**, and `docs/adr/0008-entity-component-system.md` records "no universal World registry" as settled. The check asks reviewers to enforce a concept the ADR retired.
The same two problems appear in `.claude/commands/adr-compliance-audit.md:40` (*"data that should be a World component"*) and in `.agents/checks/adr-compliance.md`, whose "How to Check" step 1 lists `src/ecs/` as a directory to identify changed files in.
## 2. `.claude/commands/adr-compliance-audit.md:18` reads a doc the ECS branch moved
The command declares its required reading:
```
14: ```
15: docs/adr/0003-crdt-based-layout-system.md
16: docs/adr/0008-entity-component-system.md
17: docs/architecture/ecs-target-architecture.md
18: docs/architecture/ecs-migration-plan.md <- moved
19: docs/architecture/appendix-critical-analysis.md
20: ```
```
The file moved on `feature/ecs-migration`:
```
$ git ls-tree -r --name-only 848cd39ed0 docs/architecture/ | grep migration-plan
docs/architecture/ecs-migration-plan.md
$ git ls-tree -r --name-only 333906c4cb docs/architecture/ | grep migration-plan
docs/architecture/ecs/ecs-migration-plan.md
```
Introduced by `13a302eadd` *refactor!: migrate entity state to dedicated stores* on the branch. So the moment the ECS branch merges, the ADR-compliance audit command loses one of its five context documents — the migration plan, i.e. the document that says what compliance *means* for this migration. It fails open: the command reads what it can and audits with a smaller context, with no error.
Two other docs on the branch already have the same dangling reference: `docs/architecture/ecs/ecs-migration-summary.md:51` and `docs/architecture/ecs/ecs-decision-traceability.md:23`.
## Why it matters
ADR compliance for this migration is enforced by exactly these three artifacts (`.coderabbit.yaml`, `.claude/commands/adr-compliance-audit.md`, `.agents/checks/adr-compliance.md`) — there is no CI job that runs an ADR check (`grep -rn "agents/checks" .github/workflows/` returns nothing). All three name `src/ecs/`; one of them will lose a context file at merge. A gate that silently narrows its own scope reads as coverage.
## Suggested fix
- Replace `src/ecs/` in all three files with the paths the ECS work actually occupies: `src/stores/{link,nodeData,reroute,widgetValue,previewExposure}Store.ts`, `src/systems/`, `src/renderer/core/layout/`, `src/types/{widgetId,linkTopology,graphScopeId,nodeState}.ts`.
- Drop or reword the two "World component" clauses to match the 2026-06-19 amendment ("one store per concern", not a universal registry).
- Update `.claude/commands/adr-compliance-audit.md:18` and the two doc links to `docs/architecture/ecs/ecs-migration-plan.md` as part of this branch, since this branch is what moves the file.
## Provenance
`.coderabbit.yaml:80-97` was authored in `3e197b5c57` — *docs: ADR 0008 — Entity Component System (#10420)*, 2026-03-26 — attributed via the GitHub blame API (the local clone is shallow, so `git blame` is not usable). The doc move is in `13a302eadd` on `feature/ecs-migration`.
Found during a documentation/ADR cross-reference sweep of the ECS migration branch. Related: #15583 (the same shape, in `eslint.config.ts`).
Contributor guide
Assessment
This issue has not been assessed yet.