11fa1e2d26f970246d9a6a8c22fe7b7e4f00362e
The task-level review rated the split PASS with notes and found that the architecture guard did not cover one of the three purposes spec D-J states for it. Six places are corrected here before the branch review reads the spec, so the reviewer works against a frozen target rather than a moving one. - D-J is amended from three assertions to seven. The original three each have teeth (verified by mutation) but together they missed an entire dimension: nothing enumerated the composition root's own method set, so adding a method there left all three assertions PASS, go build/vet clean, and the full 11-package suite green. The god object could regrow silently. - The mutation list gains d through h, and mutation (a) is annotated with the bypass the review found in my own positive control: (a) turns red because it REMOVES CoverURL from CatalogService, not because anything detects the extra root method. Rewritten as a copy that keeps the original — the shadowing form (e) — mutation (a)'s design would have passed green. - Two fixes the review proposed are recorded as rejected, with the spike measurements, so they are not retried: asserting NumMethod()==0 on the value type is unsatisfiable because embedding *T puts its methods in both method sets (the legal tree already reports 22 — vacuously false, the mirror image of P13's vacuously true assertion), and Method.Func identity cannot detect shadowing because promoted methods are forwarding wrappers that already differ on the legal tree (5153408 vs 5148192 unshadowed, 5148288 vs 5148192 shadowed). - Line counts are pinned to the wc -l convention, verified against the same convention used for the 856 baseline and auth.go's 234. The metrics table gains a measured column: content.go 82, largest of the six files 298 (moderation.go, not submission.go as the spec predicted). - D-D records that ErrSubmissionConflict is also used by AccountService at account.go:136, outside the submission and moderation lines, which makes the SHARED ruling necessary rather than merely correct. - The risk table gains two Route C properties that were previously only in controller notes: the root has no named fields so s.objects is an ambiguous selector (a compile-time barrier earlier than the guard, and the reason the guard is the ONLY barrier against adding a concrete field), and go vet stays silent on a root method shadowing a promoted one (vet_exit=0 measured), which is why assertion 5 cannot be replaced by a reflect-based check.
Description
No description provided
1.2 MiB
Languages
Shell
100%