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.
This commit is contained in:
Chris Troutner
2026-09-18 06:29:01 -07:00
parent dd11964174
commit 3f05488da0
12 changed files with 102 additions and 6 deletions
@@ -1,3 +1,7 @@
# acceptance-mutation-manifest-begin
# {"version":1,"tested_at":"2026-09-18T13:25:09.808780081Z","feature_name":"Topic Metadata Columns","feature_path":"/home/trout/work/psf-memo/.worktrees/architect/psf-memo-client/specs/topic-metadata-columns.feature","background_hash":"74234e98afe7498fb5daf1f36ac2d78acc339464f950703b8c019892f982b90b","implementation_hash":"unknown","scenarios":[]}
# acceptance-mutation-manifest-end
# Scenarios: Topic Metadata Columns - 1, Topic Metadata Columns - 2, Topic Metadata Columns - 3
#
# The topics page renders one row per topic with four columns: the topic name,
@@ -29,3 +29,7 @@ function relativeTime (lastSeen, now = Date.now()) {
}
module.exports = { relativeTime }
// mutate4javascript-manifest-begin
// {"version":1,"tested_at":"2026-09-18T13:14:01.486Z","module_hash":"6634036bb8540c472635da18b1a0932b5eb83a7454bb48ba25f6b323fdd1d69d","functions":[{"id":"func/relativeTime","name":"relativeTime","line":16,"end_line":29,"hash":"ee4cb814f0fb308d2a7d2c8cccaf2369b0fc84462569f0db0668f647ad2b4980"}]}
// mutate4javascript-manifest-end
@@ -49,5 +49,5 @@ TopicDiscoveryPage.topicFeedPath = function (room) {
module.exports = TopicDiscoveryPage
// mutate4javascript-manifest-begin
// {"version":1,"tested_at":"2026-09-17T16:44:01.309Z","module_hash":"5d9d81d1a2fa72e4365f6db50999dc28988b51dfe9c90662187ebc8dc634bba9","functions":[{"id":"func/TopicDiscoveryPage.constructor","name":"TopicDiscoveryPage.constructor","line":14,"end_line":21,"hash":"78cbee16b0d08e3f695dc65865466d12424e67d40f16683603585a48adfc2510"},{"id":"func/TopicDiscoveryPage.getTopic","name":"TopicDiscoveryPage.getTopic","line":23,"end_line":25,"hash":"7faf4b56db0bc89d32176a1741546958495ba10b5f313581f321de47e58ecb95"},{"id":"func/TopicDiscoveryPage.openTopic","name":"TopicDiscoveryPage.openTopic","line":27,"end_line":31,"hash":"ebd17b5f176c964308b69705b7a53af4c9c392e9856308b3095d69151ebde9aa"}]}
// {"version":1,"tested_at":"2026-09-18T13:16:01.949Z","module_hash":"9ec924cb4da672a28c5f312e1d183eaed7a8db8da0307cf7b262c35fa5745352","functions":[{"id":"func/TopicDiscoveryPage.constructor","name":"TopicDiscoveryPage.constructor","line":15,"end_line":22,"hash":"78cbee16b0d08e3f695dc65865466d12424e67d40f16683603585a48adfc2510"},{"id":"func/TopicDiscoveryPage.getTopic","name":"TopicDiscoveryPage.getTopic","line":24,"end_line":26,"hash":"7faf4b56db0bc89d32176a1741546958495ba10b5f313581f321de47e58ecb95"},{"id":"func/TopicDiscoveryPage.getLastSeenLabel","name":"TopicDiscoveryPage.getLastSeenLabel","line":31,"end_line":35,"hash":"3f180b8beaf2126a36cdd9d597945e61274dc312cb0f080e208a995e107ab920"},{"id":"func/TopicDiscoveryPage.openTopic","name":"TopicDiscoveryPage.openTopic","line":37,"end_line":41,"hash":"ebd17b5f176c964308b69705b7a53af4c9c392e9856308b3095d69151ebde9aa"}]}
// mutate4javascript-manifest-end