Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
3433409
Add knip for dependency monitoring
Mar 23, 2026
2a9de6d
Init dependency modernization
Mar 23, 2026
3682614
Create Knip validation notes
Mar 23, 2026
0f56221
Align Knip schema version
Mar 23, 2026
274f1e3
Model custom Knip config files
Mar 23, 2026
6c6cc09
Add Knip entry points
Mar 23, 2026
a52bdd2
Record Knip comparison
Mar 23, 2026
ce663ac
Validate Knip configuration
Mar 23, 2026
1834836
Validate Knip before-after
Mar 23, 2026
e38212f
Suppress narrow Knip blind spots
Mar 23, 2026
3ea1da7
Validate Knip suppression process
Mar 23, 2026
ae644ee
Finalize Knip validation guidance
Mar 23, 2026
4301f98
Create knip checklist
Mar 23, 2026
72f8af1
Create dependency validation notes
Mar 23, 2026
05472d3
Add svelte-eslint-parser dependency
Mar 23, 2026
aa97db4
Add jsdom dependency
Mar 23, 2026
7775cb4
Remove unused Babel preset
Mar 23, 2026
eed6e02
Finalize dependency validation notes
Mar 23, 2026
e435cf3
Validate residual dependency signals
Mar 23, 2026
48abca2
Validate step-level smoke checks
Mar 23, 2026
f3a4d1a
Validate checklist scope stays narrow
Mar 23, 2026
a15a8e9
Archive old priority 3 docs
Mar 24, 2026
10c8d5a
Record local parity blocker
Mar 24, 2026
b75b27f
Format knip.json
Mar 24, 2026
9303c00
Archive completed task artifacts
Mar 25, 2026
b2f1130
Init priority 4 checklist 02
Mar 25, 2026
5866a83
Create cleanup validation notes
Mar 25, 2026
33fdc8a
Remove createTestEnv script
Mar 25, 2026
68e3bc7
Remove mockComment script
Mar 25, 2026
ee9367d
Remove IconToggle component
Mar 25, 2026
6f783c2
Remove no-op notification service
Mar 25, 2026
f609db6
Finalize cleanup validation notes
Mar 25, 2026
ad16e8b
Validate residual cleanup signals
Mar 25, 2026
e7e7031
Validate step-level cleanup checks
Mar 25, 2026
e58acd1
Confirm cleanup scope stays narrow
Mar 25, 2026
22c7e32
Archive priority 4 checklist 02 artifacts
Mar 25, 2026
fac0b24
Init Priority 4 Slice 2 Phase 03
Mar 25, 2026
b17f907
Create 4-2-03 validation notes
Mar 25, 2026
f2086d0
Triage @netlify/functions dependency
Mar 25, 2026
395d6dd
Triage @xstate/cli dependency
Mar 25, 2026
05eac09
Triage @xstate/test dependency
Mar 25, 2026
fb4eb20
Triage mongodb-memory-server
Mar 25, 2026
c711aac
Triage ts-node dependency
Mar 25, 2026
347ac83
Triage webpack-bundle-analyzer
Mar 25, 2026
61088e3
Triage webpack-license-plugin
Mar 25, 2026
5db288c
Triage yarn dependency
Mar 25, 2026
c3c2eec
Resolve redundant Knip entry
Mar 25, 2026
50e6b0a
Classify export cleanup follow-up
Mar 25, 2026
c57c2a5
Finalize 4-2-03 validation notes
Mar 25, 2026
c485ab0
Validate residual 4-2-03 queue
Mar 25, 2026
42e6808
Validate step-level triage checks
Mar 25, 2026
948db07
Confirm 4-2-03 scope stays narrow
Mar 25, 2026
8c93a47
Remove direct yarn dependency
Mar 25, 2026
fcfa7aa
Begin upgrading `mongodb-memory-server`
Mar 25, 2026
acce02d
Init mongo test stack checklist
Mar 25, 2026
d198229
Add `ts-node` back to dependencies
Mar 25, 2026
a0a5235
Refactor code structure for improved readability and maintainability
Mar 25, 2026
1831c90
Remove Mongo download URL override
Mar 25, 2026
69de511
Create Mongo test stack notes
Mar 25, 2026
e0a4885
Inventory Mongo testing surfaces
Mar 25, 2026
cfe561d
Remove direct memory-server dependency
Mar 25, 2026
69a7398
Confirm modern Mongo test config
Mar 25, 2026
281d517
Confirm Mongo test parity alignment
Mar 25, 2026
4072962
Clarify Mongo test guidance
Mar 25, 2026
5d7d678
Validate Mongo doc parity
Mar 25, 2026
d3e4924
Finalize Mongo validation notes
Mar 25, 2026
f187d57
Validate targeted Mongo backend tests
Mar 25, 2026
da7ce12
Validate backend smoke and build
Mar 25, 2026
737fa0f
Correct backend validation note
Mar 25, 2026
aee94f7
Archive Mongo test stack artifacts
Mar 25, 2026
da0116e
Init runtime platform checklist
Mar 25, 2026
9e21a1a
Create runtime platform notes
Mar 25, 2026
f0421c6
Inventory runtime platform baseline
Mar 25, 2026
47c8db8
Remove direct Netlify functions dependency
Mar 25, 2026
45d1a8a
Ignore optional AWS credential provider
Mar 25, 2026
f3bad90
Accept residual Mongo build warning
Mar 25, 2026
a24d38a
Finalize runtime platform validation
Mar 25, 2026
cd73b9f
Update eslint
Mar 26, 2026
b94f10b
Enhance ESLint configuration with Svelte and TypeScript support
Mar 26, 2026
982be52
Migrate ESLint config and restore clean linting
Mar 26, 2026
14e6bd6
Upgrade prettier
Mar 26, 2026
9ac6965
Format after prettier upgrade
Mar 26, 2026
a9089aa
Remove eslintrc
Mar 26, 2026
ad45090
Remove redundant ignores block
Mar 26, 2026
3f4548e
Init lint tooling checklist
Mar 26, 2026
055f3e2
Create lint tooling validation notes
Mar 26, 2026
4c91356
Record lint tooling baseline
Mar 26, 2026
7a24505
Simplify ESLint config structure
Mar 26, 2026
3aeb95e
Record eslintrc migration disposition
Mar 26, 2026
6183923
Record Prettier alignment decision
Mar 26, 2026
27ce58c
Validate lint tooling commands
Mar 26, 2026
58921cb
Validate config behavior preservation
Mar 26, 2026
cadf577
Finalize lint tooling validation notes
Mar 26, 2026
d792988
Validate checklist consistency
Mar 26, 2026
345d2bc
Archive completed Priority 4 artifacts
Mar 26, 2026
959631f
Calibrate Knip and prune remaining issues
Mar 26, 2026
f644944
Format
Mar 26, 2026
e11a531
Restore safe component defaults
Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .eslintignore

This file was deleted.

3 changes: 0 additions & 3 deletions .github/workflows/netlify-api-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,6 @@ jobs:
timeout-minutes: 25
needs: build-gate
env:
# @shelf/jest-mongodb's bundled mongodb-memory-server version in this repo
# does not support MONGOMS_DISTRO; pin a known-valid download URL instead.
MONGOMS_DOWNLOAD_URL: https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-6.0.14.tgz
TZ: UTC

steps:
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,11 +196,15 @@ Assumes a unix-like environment, like Ubuntu.
1. `yarn install`
1. `yarn run build`
1. Install and run [MongoDB Community Edition](https://www.mongodb.com/docs/manual/administration/install-community/)
- This is for local application runtime/development workflows such as `yarn run start`.
- Backend Jest tests use the repo's `@shelf/jest-mongodb` + `mongodb-memory-server` bootstrap and do not require a separately running local `mongod`.

### Test

1. `yarn run test:backend`
- Backend tests do not require `.env` on disk. Test env values are injected from `example.env` during Jest setup.
- Backend tests use the repo-managed Mongo test harness via `@shelf/jest-mongodb` and `jest-mongodb-config.js`; contributors do not need to export the old `MONGOMS_*` workaround variables.
- The repo is intentionally staying on the modernized memory-server path for now while the broader "should tests later move to an actual local replica set?" question remains open in [issue #167](https://github.com/rendall/simple-comment/issues/167).
2. `yarn run test:frontend`
- Frontend locale/date tests run under `TZ=UTC` for deterministic output while preserving full locale matrix coverage.
3. `yarn run test`
Expand Down
2 changes: 1 addition & 1 deletion cypress/plugins/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
module.exports = () => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Priority 3 Checklist 02 — `userGET` Investigate Resolution

Status: superseded by `docs/checklists/Priority3TestSuiteSignalQualityChecklist02A.md` and `docs/checklists/Priority3TestSuiteSignalQualityChecklist02B.md`
Status: archived and superseded by `Priority3TestSuiteSignalQualityChecklist02A.md` and `Priority3TestSuiteSignalQualityChecklist02B.md`

Source plan: `docs/plans/Priority3TestSuiteSignalQualityPlan.md`

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Priority 3 Plan — Test Suite Signal Quality

Status: completed
Status: archived

Source backlog: `docs/RepoHealthImprovementBacklog.md` (`Priority 3: Test Suite Signal Quality`)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Priority 3 Test Survey

Status: active planning artifact (non-executable)
Status: archived

This document is a first-pass survey for Priority 3: Test Suite Signal Quality.

Expand Down
117 changes: 117 additions & 0 deletions docs/archive/Priority4DependencyModernizationChecklist01.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Priority 4 Checklist 01 — Residual Dependency Declaration Fixes

Status: completed

Source plan: `docs/plans/Priority4DependencyModernizationPlan.md`

Evidence input: `docs/checklists/Priority4KnipReliabilityChecklist01Validation.md`

QC mode: Conformance QC

## Scope Lock (from source plan)

- In scope anchor: "Use `package.json`, `yarn outdated`, and `yarn knip` as the current planning baseline for dependency modernization." (In Scope)
- In scope anchor: "Define the first implementation slice as actual low-risk dependency modernization work, not a generic research-only pass." (In Scope)
- In scope anchor: "Use repo-aware triage rules so config-loaded, preset-loaded, and optional-tool packages are not removed solely because a tool flagged them." (In Scope)
- Constraint anchor: "Treat each upgrade step as the smallest logical reviewable unit; some steps may be paired package updates when versions are obviously coupled." (Constraints)
- Constraint anchor: "Run agreed validation after each upgrade step, not only after the entire sequence." (Constraints)
- Constraint anchor: "Treat tool output as evidence, not authority." (Constraints)
- Acceptance anchor: "`knip` findings are treated as triage inputs and require manual verification before any removal or replacement decision." (Acceptance Criteria)
- Acceptance anchor: "The first implementation checklist is explicitly limited to low-risk refresh work and does not include unrelated major-version migrations." (Acceptance Criteria)

## Additional Scope Control

- This checklist intentionally handles only the highest-confidence residual dependency findings from the calibrated Knip run:
- explicit dependency declaration for `svelte-eslint-parser`
- explicit dependency declaration for `jsdom`
- removal of `@babel/preset-typescript` after local config verification
- This checklist intentionally excludes:
- file removals from the residual Knip queue
- ambiguous dependency removals such as `mongodb-memory-server`, `@netlify/functions`, `@xstate/cli`, `@xstate/test`, `ts-node`, `webpack-bundle-analyzer`, `webpack-license-plugin`, and `yarn`
- any major Svelte, MongoDB, Jest, lint/tooling, or runtime/platform migration work

## Atomic Checklist Items

- [x] C01 `[docs]` Create `docs/checklists/Priority4DependencyModernizationChecklist01Validation.md` with sections for baseline residual findings, per-step dependency changes, command evidence, before/after Knip comparison, and deferred residual queue notes.
- Depends on: none.
- Validation: T01, T03.
- Trace:
- "Use `package.json`, `yarn outdated`, and `yarn knip` as the current planning baseline for dependency modernization." (In Scope)
- "The plan defines a current dependency inventory method based on `package.json`, `yarn outdated`, and `yarn knip`." (Acceptance Criteria)

- [x] C02 `[deps]` Add `svelte-eslint-parser` to `package.json` and `yarn.lock` so the parser named directly in `src/.eslintrc.json` is an explicit repo dependency instead of an unresolved Knip/import gap.
- Depends on: C01.
- Validation: T01, T02 (`yarn knip`, `yarn lint`).
- Trace:
- "Use repo-aware triage rules so config-loaded, preset-loaded, and optional-tool packages are not removed solely because a tool flagged them." (In Scope)
- "`knip` findings are treated as triage inputs and require manual verification before any removal or replacement decision." (Acceptance Criteria)

- [x] C03 `[deps]` Add `jsdom` to `package.json` and `yarn.lock` so the frontend Jest environment usage reported from `src/tests/frontend/frontend-utilities.test.ts` is explicitly declared rather than left as an unlisted dependency signal.
- Depends on: C01.
- Validation: T01, T02 (`yarn knip`, `yarn test:frontend`).
- Trace:
- "Define the first implementation slice as actual low-risk dependency modernization work, not a generic research-only pass." (In Scope)
- "Treat tool output as evidence, not authority." (Constraints)

- [x] C04 `[deps]` Remove `@babel/preset-typescript` from `package.json` and `yarn.lock` after verifying `babel.config.cjs` does not reference it and the change stays within this checklist's low-risk dependency scope.
- Depends on: C01.
- Validation: T01, T02 (`yarn knip`, `yarn test:frontend`, `yarn build`).
- Trace:
- "Define the first implementation slice as actual low-risk dependency modernization work, not a generic research-only pass." (In Scope)
- "`knip` findings are treated as triage inputs and require manual verification before any removal or replacement decision." (Acceptance Criteria)

- [x] C05 `[docs]` Finalize `docs/checklists/Priority4DependencyModernizationChecklist01Validation.md` with before/after Knip evidence, relevant command outcomes, and a clearly deferred residual queue for later Priority 4 checklists.
- Depends on: C02, C03, C04.
- Validation: T01, T03.
- Trace:
- "The first implementation checklist is explicitly limited to low-risk refresh work and does not include unrelated major-version migrations." (Acceptance Criteria)
- "Triage evidence: Pass: every candidate in the first checklist has recorded ecosystem grouping, risk class, and rationale for `refresh`, `replace`, `remove`, `defer`, or `plan separately`." (Validation Strategy)

## Validation Items

- [x] T01 `[validation]` Residual-signal validation: run `yarn knip` after C02-C04 and confirm the calibrated report no longer includes unresolved `svelte-eslint-parser`, unlisted `jsdom`, or unused `@babel/preset-typescript`, while preserving the intentionally deferred residual queue.
- Trace:
- "Triage evidence: Pass: every candidate in the first checklist has recorded ecosystem grouping, risk class, and rationale for `refresh`, `replace`, `remove`, `defer`, or `plan separately`." (Validation Strategy)
- "Treat tool output as evidence, not authority." (Constraints)

- [x] T02 `[validation]` Step-level smoke validation: after each dependency change item, run the exact local validation commands for that step and record the outcomes in the validation notes:
- C02: `yarn knip`, `yarn lint`
- C03: `yarn knip`, `yarn test:frontend`
- C04: `yarn knip`, `yarn test:frontend`, `yarn build`
- Trace:
- "Run agreed validation after each upgrade step, not only after the entire sequence." (Constraints)
- "Step-level smoke/process evidence: Pass: every accepted upgrade step records the validation commands run immediately after that step, and the loop stops when a failure exceeds the step's approved local scope." (Validation Strategy)

- [x] T03 `[validation]` Scope/process validation: confirm this checklist stayed within low-risk dependency declaration/removal work, did not cross into major migration scope, and did not remove any additional Knip-flagged items without separate manual verification.
- Trace:
- "The first implementation checklist is explicitly limited to low-risk refresh work and does not include unrelated major-version migrations." (Acceptance Criteria)
- "Do not allow the first implementation loop to cross the approved deferment boundary for major Svelte or MongoDB work." (Constraints)

## Behavior Slices

### Slice S1
- Goal: Establish traceable validation notes and fix the two most credible missing dependency declarations from the calibrated Knip queue.
- Items: C01, C02, C03, T01, T02.
- Type: behavior.

### Slice S2
- Goal: Remove one high-confidence unused dependency after local config verification and record the resulting Knip delta.
- Items: C04, C05, T03.
- Type: behavior.

## Conformance QC

- Missing from plan:
- None.

- Extra beyond plan:
- None; the checklist narrows the approved low-risk slice to the highest-confidence residual dependency items surfaced by calibrated `knip`.

- Atomicity fixes needed:
- None identified; each item is scoped to one dependency declaration/removal or one documentation outcome.

- Validation mapping gaps:
- None identified; each implementation item maps to explicit checklist validation and the plan's required step-level evidence model.

- Pass/Fail: checklist achieves plan goals
- Pass.
136 changes: 136 additions & 0 deletions docs/archive/Priority4DependencyModernizationChecklist01Validation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# Priority 4 Checklist 01 Validation — Residual Dependency Declaration Fixes

Status: complete

Checklist: `docs/checklists/Priority4DependencyModernizationChecklist01.md`

## Baseline Residual Findings

Baseline captured on 2026-03-23 before checklist implementation:

- `yarn knip` reported:
- unresolved import `svelte-eslint-parser`
- unlisted dependency `jsdom`
- unused dependency `@babel/preset-typescript`
- additional intentionally deferred residual findings outside this checklist's scope
- `yarn lint` passed with two pre-existing warnings in `src/tests/frontend/frontend-utilities.test.ts`
- `yarn test:frontend` passed: 6 suites, 139 tests
- `yarn build` passed
- backend retained the known MongoDB webpack warning
- frontend build completed successfully

## Per-Step Dependency Changes

- C02:
- added `svelte-eslint-parser` to `package.json` so the parser named directly in `src/.eslintrc.json` is explicitly declared
- `yarn.lock` already contained a matching `svelte-eslint-parser@^0.32.2` entry from the existing dependency graph, so this step required no lockfile content change
- C03:
- added `jsdom` to `package.json` so the frontend Jest environment usage reported from `src/tests/frontend/frontend-utilities.test.ts` is explicitly declared
- `yarn.lock` already contained a matching `jsdom@^20.0.0` entry from the existing Jest environment dependency graph, so this step required no lockfile content change
- C04:
- removed `@babel/preset-typescript` from `package.json`
- removed the direct `@babel/preset-typescript@^7.28.5` stanza from `yarn.lock`
- verified beforehand that `babel.config.cjs` references only `@babel/preset-env`

## Command Evidence

- C02:
- `yarn knip`
- pass condition met for this step: unresolved `svelte-eslint-parser` is no longer reported
- intentionally deferred residual findings remain visible
- `yarn lint`
- passed with the same two pre-existing warnings in `src/tests/frontend/frontend-utilities.test.ts`
- C03:
- `yarn knip`
- pass condition met for this step: unlisted `jsdom` is no longer reported
- intentionally deferred residual findings remain visible
- `yarn test:frontend`
- passed: 6 suites, 139 tests
- C04:
- `yarn knip`
- pass condition met for this step: unused `@babel/preset-typescript` is no longer reported
- intentionally deferred residual findings remain visible
- `yarn test:frontend`
- passed: 6 suites, 139 tests
- `yarn build`
- passed
- backend retained the known MongoDB webpack warning
- frontend build completed successfully

## Before/After Knip Comparison

Before this checklist:

- `yarn knip` reported:
- unresolved import `svelte-eslint-parser`
- unlisted dependency `jsdom`
- unused dependency `@babel/preset-typescript`
- additional intentionally deferred residual findings outside this checklist's scope

After C02-C04:

- `yarn knip` no longer reports:
- unresolved `svelte-eslint-parser`
- unlisted `jsdom`
- unused `@babel/preset-typescript`
- the current calibrated residual report remains focused on intentionally deferred follow-up work rather than declaration gaps for the active frontend lint/test stack
- the residual unused dependency list is now:
- `@netlify/functions`
- `@xstate/cli`
- `@xstate/test`
- `mongodb-memory-server`
- `ts-node`
- `webpack-bundle-analyzer`
- `webpack-license-plugin`
- `yarn`
- the residual unused file list is now:
- `scripts/createTestEnv.mjs`
- `scripts/mockComment.mjs`
- `src/components/low-level/IconToggle.svelte`
- `src/lib/NoOpNotificationService.ts`

## Deferred Residual Queue

Deferred from this checklist for later Priority 4 work:

- ambiguous dependency removals:
- `@netlify/functions`
- `@xstate/cli`
- `@xstate/test`
- `mongodb-memory-server`
- `ts-node`
- `webpack-bundle-analyzer`
- `webpack-license-plugin`
- `yarn`
- file cleanup candidates:
- `scripts/createTestEnv.mjs`
- `scripts/mockComment.mjs`
- `src/components/low-level/IconToggle.svelte`
- `src/lib/NoOpNotificationService.ts`
- residual Knip follow-up:
- redundant `src/entry/index.ts` entry hint from `knip.json`
- remaining unused exports and unused exported types report

This checklist intentionally leaves those items visible for later manual verification rather than suppressing or removing them opportunistically.

## PR-Readiness / Local CI Parity

`yarn run ci:local` was executed on 2026-03-24.

Result:

- parity run failed with exit code `1`

Observed path through the script:

- install/link phase completed
- an optional dependency (`unix-dgram`) failed to build under Node `22.22.0` during install, but Yarn explicitly reported it as safe to ignore and the parity script continued
- lint step reproduced the same two pre-existing warnings in `src/tests/frontend/frontend-utilities.test.ts`
- prettier parity step then failed on:
- `knip.json`

Current recorded blocker:

- `yarn run ci:local` is blocked by formatting drift in `knip.json` at the `prettier --list-different .` step

This note records the blocker only. It does not apply a formatting fix, because the request for this step was to record the local parity outcome rather than to change code or formatting proactively.
Loading
Loading