mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-17 16:37:43 +00:00
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.
17 lines
612 B
JavaScript
17 lines
612 B
JavaScript
/**
|
|
* Local ESLint rules for Super Productivity.
|
|
*
|
|
* These rules are loaded by eslint-plugin-local-rules.
|
|
* Usage in .eslintrc.json:
|
|
* "plugins": ["local-rules"],
|
|
* "rules": {
|
|
* "local-rules/require-hydration-guard": "warn",
|
|
* "local-rules/require-entity-registry": "warn"
|
|
* }
|
|
*/
|
|
module.exports = {
|
|
'require-hydration-guard': require('./rules/require-hydration-guard'),
|
|
'require-entity-registry': require('./rules/require-entity-registry'),
|
|
'no-actions-in-effects': require('./rules/no-actions-in-effects'),
|
|
'no-multi-entity-effect': require('./rules/no-multi-entity-effect'),
|
|
};
|