From 5389660b76a708af99bd4cad1369b77f828fec8b Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Wed, 2 Sep 2026 13:01:34 -0700 Subject: [PATCH] Review isFolloweePost refactor: confirm CRAP cut, refresh manifests By architect. --- docs/reviews/following-feed-summary.md | 19 +++++++++++++++++++ psf-memo-client/specs/following-feed.feature | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/reviews/following-feed-summary.md b/docs/reviews/following-feed-summary.md index 174d97d..b6e171b 100644 --- a/docs/reviews/following-feed-summary.md +++ b/docs/reviews/following-feed-summary.md @@ -9,6 +9,25 @@ - `6d1bd14` Implement Following feed (coder) - `d606ee6` Refactor following feed: reduce CRAP/DRY, add property coverage (refactorer) +## Follow-up refactorer handoff (`merge_and_process refactorer b85878a5d5`) +- Merged `swarmforge-refactorer` — commit `b85878a` "Refactor following-feed scan: extract + isFolloweePost to cut CRAP". +- **Architectural review (confirmed good):** `isFolloweePost` is a private helper within + `PostQuery` that extracts the reply/viewer/membership predicate from + `scanFollowingFeedTxidsAndCount`. It adds no new dependencies, preserves information hiding + (the LevelDB model stays encapsulated), and keeps the dependency direction inward. Behavior is + unchanged. +- **CRAP reduction confirmed:** `scanFollowingFeedTxidsAndCount` CC 7→5 (CRAP 7.0→5.0); + `isFolloweePost` CC 3, both 100% covered. +- **Mutation:** `post-query.js` 0 killed / 0 survived / 0 uncovered (manifest refreshed by the + approved tool). +- **DRY:** no new production duplication; only pre-existing test-helper duplicates. +- **Soft Gherkin mutation:** `following-feed.feature` 12 executed, 0 killed, 12 survived — all + genuine equivalents (single-char case mutations of example values), unchanged from the prior + review. +- **Suites:** DB unit 281 passing, property 37 passing, acceptance 9 files passing, lint clean; + client acceptance 19 files passing. + ## Architectural findings and fixes - **UI/Core separation (confirmed good):** Client `FollowingFeedPage` is a thin, testable controller wrapping the `MemoDb` HTTP client; the React `FollowingFeed` component stays a pure diff --git a/psf-memo-client/specs/following-feed.feature b/psf-memo-client/specs/following-feed.feature index 34200c3..70af985 100644 --- a/psf-memo-client/specs/following-feed.feature +++ b/psf-memo-client/specs/following-feed.feature @@ -1,5 +1,5 @@ # acceptance-mutation-manifest-begin -# {"version":1,"tested_at":"2026-09-02T19:13:00.507312989Z","feature_name":"Following Feed","feature_path":"/home/trout/work/psf-memo/.worktrees/architect/psf-memo-client/specs/following-feed.feature","background_hash":"0d66780cb1b8e277f0ada40a8ffe336dec7a8eaf658f19d2ea344815fb9bf26c","implementation_hash":"unknown","scenarios":[]} +# {"version":1,"tested_at":"2026-09-02T19:55:36.282796191Z","feature_name":"Following Feed","feature_path":"/home/trout/work/psf-memo/.worktrees/architect/psf-memo-client/specs/following-feed.feature","background_hash":"0d66780cb1b8e277f0ada40a8ffe336dec7a8eaf658f19d2ea344815fb9bf26c","implementation_hash":"unknown","scenarios":[]} # acceptance-mutation-manifest-end # Scenarios: Following Feed - 1, Following Feed - 2, Following Feed - 3, Following Feed - 4, Following Feed - 5, Following Feed - 6, Following Feed - 7