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.
This commit is contained in:
Chris Troutner
2026-09-20 13:09:01 -07:00
parent 63107855a2
commit 7973e2dcdf
7 changed files with 24 additions and 2 deletions
@@ -1,3 +1,8 @@
# mutation-stamp: sha256=f2672d16093128ab98f47d9bd32fb777fe6a860143e3a04492a6a8446314742b
# acceptance-mutation-manifest-begin
# {"version":1,"tested_at":"2026-09-20T20:08:42.739895979Z","feature_name":"Recent Profile Identity","feature_path":"/home/trout/work/psf-memo/.worktrees/architect/psf-memo-db/specs/recent-profile-identity.feature","background_hash":"0289c6ddd1a0f1e7e23830863aec6d44f90f314d174423c44e8567da4e18f645","implementation_hash":"unknown","scenarios":[{"index":0,"name":"Recent Profile Identity - 1 GET /profile/recent returns each profile's display name and avatar","scenario_hash":"ed4ba1b33ac244e193e9fb24bfd845d351f00cabe5bd507dfe735d73055ecece","mutation_count":9,"result":{"Total":9,"Killed":9,"Survived":0,"Errors":0},"tested_at":"2026-09-20T20:08:42.739895979Z"}]}
# acceptance-mutation-manifest-end
# Scenarios: Recent Profile Identity - 1
#
# GET /profile/recent returns each recent profile's current display name and
+1 -1
View File
@@ -93,5 +93,5 @@ class Adapters {
export default Adapters
// mutate4javascript-manifest-begin
// {"version":1,"tested_at":"2026-09-18T17:38:46.670Z","module_hash":"e13818a9da05adfdc35ba7721caab3c70666b4b1b2aa374988f57ad760ee6322","functions":[{"id":"func/Adapters.constructor","name":"Adapters.constructor","line":17,"end_line":22,"hash":"d5d1fd454ddfa112378f278773b65be5cb39aab75473dd57c04c9a385de1aa58"},{"id":"func/Adapters.openDatabases","name":"Adapters.openDatabases","line":24,"end_line":82,"hash":"e5e55b93a3aa994d5f938ed3b08c59f82fda1e98029d80ec566faec1d43d6d6c"},{"id":"func/Adapters.start","name":"Adapters.start","line":84,"end_line":88,"hash":"f9e62a9199f0259f5c22913625e6e497548b3887cc24871bba475e73e52b3750"}]}
// {"version":1,"tested_at":"2026-09-20T20:07:23.167Z","module_hash":"2f12ab15e729d2f35a9d092fd387e336a8ea21caa5c48c04e153b5d0f707947d","functions":[{"id":"func/Adapters.constructor","name":"Adapters.constructor","line":17,"end_line":22,"hash":"d5d1fd454ddfa112378f278773b65be5cb39aab75473dd57c04c9a385de1aa58"},{"id":"func/Adapters.openDatabases","name":"Adapters.openDatabases","line":24,"end_line":84,"hash":"6fe3d5ece4a1783936aa3c8f3fdd782206ae0bc417a06a048b1416a0dce8fb75"},{"id":"func/Adapters.start","name":"Adapters.start","line":86,"end_line":90,"hash":"f9e62a9199f0259f5c22913625e6e497548b3887cc24871bba475e73e52b3750"}]}
// mutate4javascript-manifest-end
@@ -60,3 +60,7 @@ class ProfileQuery {
}
export default ProfileQuery
// mutate4javascript-manifest-begin
// {"version":1,"tested_at":"2026-09-20T20:05:24.208Z","module_hash":"dab2b10155f8ffc0c8b8005a77af81daaf6682dac4eeb1c56ad061d9961d0040","functions":[{"id":"func/ProfileQuery.constructor","name":"ProfileQuery.constructor","line":7,"end_line":17,"hash":"83ff1150629995273a68f8f985067724a6f5c839f2642ee67855d26be61d5f03"},{"id":"func/ProfileQuery.scanProfilesWithBlockHeight","name":"ProfileQuery.scanProfilesWithBlockHeight","line":19,"end_line":33,"hash":"1fa61f0f49063b13c3eb67725c74614e0b798b0ffcd0248385f838317cabfd0c"},{"id":"func/ProfileQuery.getProfileIdentity","name":"ProfileQuery.getProfileIdentity","line":39,"end_line":49,"hash":"66105f1c77dadc97f32beec8c952184617e07a0401eae1af1128de70f47df070"},{"id":"func/ProfileQuery.getRecordOrNull","name":"ProfileQuery.getRecordOrNull","line":51,"end_line":59,"hash":"5604da1e9adc18abda5e58e4f366aa0bcc8e0dd417e2f6882c27289df7fb7a14"}]}
// mutate4javascript-manifest-end
@@ -41,5 +41,5 @@ class ListRecentProfiles extends ListUseCase {
export default ListRecentProfiles
// mutate4javascript-manifest-begin
// {"version":1,"tested_at":"2026-08-29T14:25:23.929Z","module_hash":"4eee5bdcc428b107755e33bd6b2b6dd6477a01aa9feece327ba144ec4825442f","functions":[{"id":"func/ListRecentProfiles.constructor","name":"ListRecentProfiles.constructor","line":10,"end_line":12,"hash":"a2c7dd0696ac463cbc142fa7ccce4a3cadf8e246a872261733d199dbd4c153d1"},{"id":"func/ListRecentProfiles.execute","name":"ListRecentProfiles.execute","line":14,"end_line":32,"hash":"f9fc78d274ac88aad570a32a45d20364974dde79538b414823241610cf2339dc"}]}
// {"version":1,"tested_at":"2026-09-20T20:06:31.180Z","module_hash":"5c9bf3b5be5a616a72eef340cf9f1d2c211c061d80aabc4eb2393a73ee77fbfa","functions":[{"id":"func/ListRecentProfiles.constructor","name":"ListRecentProfiles.constructor","line":10,"end_line":12,"hash":"a2c7dd0696ac463cbc142fa7ccce4a3cadf8e246a872261733d199dbd4c153d1"},{"id":"func/ListRecentProfiles.execute","name":"ListRecentProfiles.execute","line":14,"end_line":38,"hash":"4f1c2184766274d911ae3cab174ef9cc946ca9459aad1e199811732ebda99d46"}]}
// mutate4javascript-manifest-end