Review profile address copy: refresh mutation manifests

The refactorer delivered the address-copy feature with a stale
mutate4javascript manifest on profile-page.js (address-copy functions in
source but not in the manifest). Ran the language mutation tool one file at
a time: profile-page.js 36/36 killed, profile-address.js 1/1 killed, both
0 survived and 0 uncovered. Ran soft Gherkin acceptance mutation on
profile-address-copy.feature (4 mutations, all intrinsic case changes of
example addresses used consistently on both sides of their scenarios, so the
tool wrote an empty scenarios manifest). DRY scoped to the changed
production and test/support/acceptance files reports no duplicate
candidates; the broad handlers.js run shows only pre-existing follow/mute
step-handler boilerplate.

No production behavior change. Tool-written mutation and acceptance
manifests only, plus an architect process note on stale delivered manifests.

By architect.
This commit is contained in:
Chris Troutner
2026-09-22 11:18:44 -07:00
parent 725f92d506
commit 3bccb41479
4 changed files with 19 additions and 1 deletions
+10
View File
@@ -180,6 +180,16 @@ the captured output before the tool's `System/exit`; the JSON report
the current component, so the DB mutation runs use the DB suite without a
second tool install.
- **A delivered source file can carry a stale `mutate4javascript` manifest.**
On 2026-09-22 the `profile-address-copy` handoff delivered
`src/services/profile-page.js` with the address-copy functions in the source
but a manifest listing only the pre-existing functions (`tested_at` predating
the feature). The differential run still selected and ran all 36 covered
sites because the module hash changed, and the tool then rewrote the manifest
to include the new functions. Treat a stale manifest as expected churn that
the architect's mutation run repairs: after mutating a file, commit the
rewritten manifest rather than treating it as a source behavior change.
- **A killed `mutate4javascript` run can strip the embedded manifest.** If the
tool is killed after it removes the old `mutate4javascript-manifest` block but
before it rewrites it (seen on `topic-query.js` when a worker hung and the
@@ -1,3 +1,7 @@
# acceptance-mutation-manifest-begin
# {"version":1,"tested_at":"2026-09-22T18:13:49.997822314Z","feature_name":"Profile Address Copy","feature_path":"/home/trout/work/psf-memo/.worktrees/architect/psf-memo-client/specs/profile-address-copy.feature","background_hash":"0d66780cb1b8e277f0ada40a8ffe336dec7a8eaf658f19d2ea344815fb9bf26c","implementation_hash":"unknown","scenarios":[]}
# acceptance-mutation-manifest-end
# Scenarios: Profile Address Copy - 1, Profile Address Copy - 2, Profile Address Copy - 3, Profile Address Copy - 4
#
# The /profile/:addr sidebar lists the profile's BCH cash address on the left.
@@ -53,3 +53,7 @@ function ProfileAddress ({ address = '', copied = false, onClick }) {
ProfileAddress.COPIED_TEXT = COPIED_TEXT
module.exports = ProfileAddress
// mutate4javascript-manifest-begin
// {"version":1,"tested_at":"2026-09-22T18:06:41.268Z","module_hash":"ef6a3eaa367a0a216ca16b33da84e3e797102886d571de28737155b96d4c4039","functions":[{"id":"func/ProfileAddress","name":"ProfileAddress","line":15,"end_line":51,"hash":"44eb6fd2adf6513a3db61dde75b08ee1730d4495cb09a1f447f160442ad1dfb4"}]}
// mutate4javascript-manifest-end
File diff suppressed because one or more lines are too long