Commit Graph
38 Commits
Author SHA1 Message Date
Chris Troutner 7973e2dcdf Review recent profile identity: record mutation manifests and acceptance stamps
Architectural review of the recent-profile-identity task found no structural
changes needed: the DB join lives in the ProfileQuery adapter behind the
ListRecentProfiles use case and controller, and the client account cell follows
the established CommonJS + acceptance-render-adapter pattern for DOM-free
testing. Committing the tool-written mutate4javascript manifests and the
gherkin-mutator mutation stamps/manifests produced by the verification run.

By architect.
2026-09-20 13:09:01 -07:00
Chris Troutner dda94b1a81 Specify recent profile identity for /profile/recent
Add DB Gherkin for GET /profile/recent joining each profile's display
name (names store) and avatar URL (profilePics store), null when absent.
Add client Gherkin for the new leftmost Account column showing the
display name and avatar, linking to the profile, with truncated-address
and identicon fallbacks and the existing columns preserved.

By specifier.
2026-09-20 12:24:19 -07:00
Chris Troutner b7c20560c2 Review following feed cap: drop dead reply-txid loader
Remove PostQuery.loadReplyTxids after the capped following-feed scan
switched to per-candidate isReply point lookups; it had no callers and
was the only uncovered code in post-query.js (99.4% -> 100%).
Refresh the mutate4javascript and acceptance-mutation manifests via the
tools.

By architect.
2026-09-20 08:44:25 -07:00
Chris Troutner 2ce0a62af9 Specify following feed capped scan
By specifier.
2026-09-20 08:13:19 -07:00
Chris Troutner c9728cc301 Review notifications query performance: harden defaults, refresh mutation manifests
Add unit coverage for the notification height/seen defaults, the seen
sort tie-break, the missing-status cutoff, and the config flags; refresh
the language mutation manifests and the soft Gherkin acceptance mutation
manifests for the three affected feature files.

By architect.
2026-09-18 10:46:29 -07:00
Chris Troutner 22928d764a Spec notifications query performance
Bound GET /posts/notifications/:addr to the viewer's activity in a
configurable block window instead of full-scanning likes, postChildren,
and follows. Adds the followeeHeights index spec, its backfill spec, and
the notifications-query-performance spec.

By specifier.
2026-09-18 09:28:25 -07:00
Chris Troutner 3f05488da0 Review topic metadata: harden default-value coverage
- Add DB unit tests covering a summary missing postCount, a post missing
  blockHeight in listTopics/getTopicPostTxids ordering, listTopics' default
  limit/offset, and topicRecencyKey's missing-height fallback. These kill the
  remaining language-mutation survivors in the changed DB sources.
- Refresh the mutate4javascript manifests for the changed sources and commit
  the gherkin-mutator manifests/stamps written into the three topic-metadata
  features.
- No production behavior changes; the review adds tests and tool-written
  metadata only.

By architect.
2026-09-18 06:29:01 -07:00
Chris Troutner a599b34e38 Spec topic metadata columns
Define four-column topics page behavior across client, indexer, and DB:
topic name, time since most recent post, post count, and follower count.

By specifier.
2026-09-18 05:38:41 -07:00
Chris Troutner 0e8f8f0eae Review topic-recency-pagination: harden mutation coverage
Architectural review of the topic recency indexes and pagination:

- Indexer topic index maintenance lives in its own topic-indexing.js,
  separate from the action handlers; the backfill library takes injected
  LevelDB handles so its logic stays testable.
- DB listTopics reads counts from topicSummaries and paginates the
  topicRecency index without iterating the rooms store; the client reuses
  PaginatedPage.
- Kill four topic-indexing mutation survivors with focused unit tests
  covering the height fallbacks, plus exact-key/isNotFound and max-size
  boundary tests.
- One topic-message survivor is an intrinsic equivalent: handlePost reads
  the text at push index 1 and ignores push index 0.

Includes tool-written mutate4javascript and acceptance-mutation manifests.

By architect.
2026-09-17 10:27:26 -07:00
Chris Troutner e2c0bbe523 Spec topic recency ordering and pagination
Add Gherkin for efficient GET /topics ordering by most recent post, the
topicSummaries and topicRecency index stores, an idempotent backfill, and
client topics-page pagination.

By specifier.
2026-09-17 06:46:43 -07:00
Chris Troutner a2229f7dd4 Review txid wire encoding: harden mutation coverage and DRY test doubles
Refresh the mutate4javascript and Gherkin acceptance-mutation manifests,
kill the memo-like/memo-reply boundary survivors, and extract the shared
FakeDb/makeLevel double used by the txid repair unit and property tests.

By architect.
2026-09-16 15:25:23 -07:00
Chris Troutner bb0c9abb83 Spec txid wire encoding and database repair
Add client Gherkin pinning little-endian wire order for every action that
embeds a parent txid (like, reply, poll option, poll vote), and a
psf-memo-db Gherkin for a utility that repairs existing byte-reversed
references and rebuilds the affected indexes.

By specifier.
2026-09-16 13:56:40 -07:00
Chris Troutner b2c78fb651 Review feed-total-cap: stamp mutation and acceptance manifests
Architectural review of the raised recent-feed total scan cap (10 -> 500)
and the refactorer's property tests. No structural change was warranted:
the cap stays a private constant in PostQuery, the new property tests use
in-memory store doubles with no IO, and dry4javascript found no duplicate
candidate in the changed source or the new property test. Mutation killed
all 37 sites in post-query.js.

This commit carries only the tool-written manifests: the mutate4javascript
manifest in post-query.js and the gherkin-mutator acceptance stamps in the
two touched feature files.

By architect.
2026-09-16 08:59:48 -07:00
Chris Troutner 28b34b5a7a Specify feed total cap raised to 500
By specifier.
2026-09-16 08:34:05 -07:00
Chris Troutner 1ff2c020ac Review thread-query-bounds: hide postChildren representation, drop dead like scan
Encapsulate the postChildren prefix scan in PostQuery.listChildTxids and have
GetPostThread depend only on the PostQuery interface (listChildTxids,
getPostOrNull). countRepliesForTxids now reuses listChildTxids. Remove the dead
whole-database buildLikeCountMap that this task made obsolete. Cover the
prefix-scan guards and cycle back-edge, realign the thread property tests to the
adapter seam, and refresh mutation/Gherkin-acceptance manifests.

By architect.
2026-09-15 13:10:46 -07:00
Chris Troutner 9db1137686 Add thread query performance specification
Bound /posts/:txid/thread to per-thread reads: prefix-scan postChildren
by parent txid and scope like counts to the thread's txids instead of
the global postLikes scan. Record both implementation parts in the
feature backlog.

By specifier.
2026-09-15 12:10:01 -07:00
Chris Troutner 2bcc965efb Review feed-query-performance: remove dead full-scan methods, harden mutation coverage
Remove the full-scan methods the capped-scan optimization replaced
(topLevelPostTxids, countTopLevelPosts, countTopLevelPostsByAddr,
buildReplyCountMap) and their tests, keeping the backwards-compat wrappers.
Add hardening tests to kill 4 mutation survivors (raw scan bound, viewerAddr
fallback). Refresh mutation manifests and Gherkin acceptance-mutation stamps.

By architect.
2026-09-04 18:59:27 -07:00
Chris Troutner df39b47eb1 Spec feed query performance: per-page reply counting and capped total scan
By specifier.
2026-09-04 17:36:26 -07:00
Chris Troutner 5bb2906d92 Review topics-most-recent-order: hide lastHeight ordering key, harden height-0 cases
By architect.
2026-09-04 07:25:44 -07:00
Chris Troutner bc07eda916 Spec GET /topics ordering by most recent post
By specifier.
2026-09-04 06:39:31 -07:00
Chris Troutner ac468072df Review and harden mute-user: kill mutation survivors, refresh manifests
Add hardening tests to kill mutation survivors in MemoMute.validate,
ProfilePage constructor/_loadState/canMute, MuteQuery._nextString,
MuteState validation guards, and the mute REST controller statused-error
path. Refresh mutation manifests and Gherkin acceptance-mutation stamps.

By architect.
2026-08-28 21:08:50 -07:00
Chris Troutner fa90179869 Spec mute/unmute user (P4.1/P4.2)
Add client, DB, and indexer Gherkin specs for the Memo mute (0x6d16) and
unmute (0x6d17) actions.

By specifier.
2026-08-28 19:07:07 -07:00
Chris Troutner 06e95150e3 Review and harden poll actions: kill mutation survivors, reduce DRY
- Add hardening tests to kill mutation survivors across client, DB, and
  indexer (hex guards, poll byte-limit boundaries, busy-flag defaults,
  parseTxid empty-string, polls controller handleError, memo-codes
  isMemoPrefix, normalizePollCreateDatas, storePollChildRecord returns).
- Reduce duplication: extract shared reflect/isTooLong into MemoTxidAction
  (client), shared _run into the polls controller and configurable execute
  into PollReadUseCase (DB).
- Refresh mutation manifests and Gherkin acceptance-mutation stamps.

By architect.
2026-08-28 17:51:03 -07:00
Chris Troutner 5d7ce7601b Spec P3 poll actions: create poll, add option, vote
By specifier.
2026-08-28 14:11:14 -07:00
Chris Troutner 5183359143 Review and harden topic actions: kill mutation survivors
- Add hardening tests for topic-post-page, profiles, topic-feed-page, and
  topic-query to kill mutation survivors.
- Refresh mutation manifests and Gherkin acceptance-mutation stamps.
- Add topic-actions review summary.

By architect.
2026-08-28 13:13:01 -07:00
Chris Troutner b8a10d3706 Spec topic post, follow, and unfollow actions
Add client specs for the topic post composer and topic follow/unfollow
buttons, plus the DB read side for topic follow state and followers.

By specifier.
2026-08-28 10:43:52 -07:00
Chris Troutner c9bdf326d6 Review and harden topic-feed: kill mutation survivors
- Add topic-query, list-topic-posts, topics controller, and client
  topic-page hardening tests to kill mutation survivors.
- Refresh mutation manifests and Gherkin acceptance-mutation stamps.
- Add topic-feed review summary.

By architect.
2026-08-28 08:55:48 -07:00
Chris Troutner 7a01b9f4e3 Merge specifier topic-feed specs
By coder.
2026-08-28 06:16:49 -07:00
Chris Troutner d3c3a80bbf Spec topic list/discovery and topic feed
By specifier.
2026-08-28 06:15:58 -07:00
Chris Troutner 4679e7a11e Review and harden efficient-post-query: kill mutation survivors
- Add isReply and scanPostsByAddrTxidsAndCount unit tests in post-query to
  kill the true->false and limit-bounding survivors.
- Add normalizeTwoPushMemoDatas, stripLeadingEmptyPushes, and txHashFromPush
  unit tests in indexer helpers to kill 4 survivors.
- Refresh tool-generated mutation manifests and Gherkin acceptance-mutation
  stamps for the batch features (backfill-post-indexes, efficient-post-query,
  addr-and-like-indexing).

By architect.
2026-08-27 22:26:32 -07:00
Chris Troutner a5dc01ede5 Spec efficient post queries via addrPostHeights and postLikes indexes
By specifier.
2026-08-27 14:31:20 -07:00
Chris Troutner bb7b5a6cfd Review and harden follow-user: kill mutation survivors
Add unit test pinning FollowQuery._nextString exclusive upper bound and
empty-string/non-string validation-rejection cases for the follow use
cases, killing the remaining mutation survivors. Update mutation manifests
and add the follow-user architectural review report.

By architect.
2026-08-27 11:23:01 -07:00
Chris Troutner d901cfc6cb Spec follow/unfollow user (client write path + DB read side)
Add Gherkin specs for the Follow/Unfollow button (0x6d06/0x6d07) and the
DB follow state + following/followers read side. Use bch-js Address tools
for cashaddr<->hash160 conversion instead of a new dependency.

By specifier.
2026-08-27 10:17:43 -07:00
Chris Troutner 21373f4d10 Harden and review like-count-display refactor
- Add unit tests to kill all mutation survivors in GetPostThread
  (sort order, missing blockHeight/seen fallbacks, non-string txid).
- Add default-limit and falsy-pagination tests for the client page
  controllers (ProfilePage, RecentFeedPage).
- Refresh mutation manifests and Gherkin acceptance mutation metadata.
- Write durable review report to docs/reviews/like-count-display-summary.md.

By architect.
2026-08-26 20:46:35 -07:00
Chris Troutner 7f14ceb866 Add Gherkin spec for like counts on post responses
- psf-memo-db/specs/like-counts.feature specifies likeCount on
  /posts/recent, /posts/by/:addr, and /posts/:txid/thread.
- Dry-checked with gherkin-parser + gherkin-ir-dry-checker; zero findings.

By specifier.
2026-08-26 18:57:20 -07:00
Chris Troutner 30c0949d3f Harden and review post-heights-index refactor
Architectural review of the refactorer's postHeights index work. Extract a
shared assemblePostPage helper and a ListUseCase base class to remove DRY
duplication in the post-list use cases. Build the gherkin-mutator runner
adapter for psf-memo-db and psf-memo-indexer. Add boundary and tie-break
tests to kill all surviving language mutations across the changed files
(post-query, pagination, list use cases, indexer post handler).

Mutation: all changed source files fully killed. DRY: clean. CRAP <= 6.
Soft Gherkin acceptance mutation documented survivors (see review report).

By architect.
2026-08-26 11:39:12 -07:00
Chris Troutner c13adbf4aa Add postHeights secondary index specs for efficient post pagination
By specifier.
2026-08-26 10:40:42 -07:00
Chris Troutner 7134979eb8 Reconfigure monorepo for SwarmForge development
- Move specifier-prompt.md to repo root and rewrite it for the monorepo.
- Move specs/feature-backlog.md to root specs/ and update with component scope.
- Add specs/README.md, psf-memo-indexer/specs/README.md, psf-memo-db/specs/README.md.
- Add swarmforge/constitution/articles/monorepo.prompt for shared monorepo rules.
- Update root README.md with repository layout, local dev commands, and SwarmForge info.

By specifier.
2026-08-26 10:23:53 -07:00