super-productivity/eslint-local-rules/rules
Johannes Millan 42e6626b76 docs(sync): consolidate sync docs + enforce the contributor model
Collapse the sprawling, partly-stale docs/sync-and-op-log/ tree into a
small authoritative set and make the sync-correctness invariant
partly lint-enforced instead of convention-only.

Docs:
- Delete superseded/duplicate/provably-stale design, plan, and
  background-research docs (quick-reference, the architecture-diagrams
  monolith, the "Hybrid Manifest" docs describing code that does not
  exist, completed long-term plans, LLM-synthesis analyses).
- Salvage load-bearing decision history into the surviving docs before
  deletion: rejected-alternatives rationale -> operation-log-architecture
  ("Why this architecture"); vector-clock pruning incident history ->
  vector-clocks.md; archive-payload optimization -> architecture E.7.
- Add contributor-sync-model.md as the single-invariant entry point
  (one user intent = one op; replayed/remote ops must not re-trigger
  effects), with a decision table mapping to the enforcing linters.
- Repoint external/internal cross-refs; add CONTRIBUTING.md + CLAUDE.md
  pointers; record the migration in a dated docs/plans/ design doc.

Enforcement (new eslint-local-rules):
- no-actions-in-effects (error): effects must inject LOCAL_ACTIONS /
  ALL_ACTIONS, never the raw @ngrx/effects Actions stream.
- no-multi-entity-effect (warn, heuristic): flags a literal returned
  array of >=2 action-creator calls; docstring + valid-case specs pin
  exactly which shapes are and are not detected.
- run-specs.js runner wired into `npm run lint` via test:lint-rules;
  refuses to run under test-framework globals and counts RuleTester.run
  invocations so a spec that asserts nothing fails instead of passing.
- Correct the ALL_ACTIONS JSDoc in local-actions.token.ts to match
  reality (archive-operation-handler uses LOCAL_ACTIONS).

Reviewed via parallel multi-agent review; findings W1/W2/W4 and a
dangling doc anchor addressed.
2026-05-15 16:51:50 +02:00
..
no-actions-in-effects.js docs(sync): consolidate sync docs + enforce the contributor model 2026-05-15 16:51:50 +02:00
no-actions-in-effects.spec.js docs(sync): consolidate sync docs + enforce the contributor model 2026-05-15 16:51:50 +02:00
no-multi-entity-effect.js docs(sync): consolidate sync docs + enforce the contributor model 2026-05-15 16:51:50 +02:00
no-multi-entity-effect.spec.js docs(sync): consolidate sync docs + enforce the contributor model 2026-05-15 16:51:50 +02:00
require-entity-registry.js refactor(sync): centralize entity configuration in single registry 2025-12-23 16:15:17 +01:00
require-hydration-guard.js chore(deps): bump cross-env, eslint, jasmine-core, typia to next major 2026-05-01 19:35:27 +02:00
require-hydration-guard.spec.js Add hydration guard for selector-based NgRx effects (#6426) 2026-02-08 15:18:21 +01:00