rastrillo / idear Public

ledger

Paul Campbell pushed by paul@keymail.dev 147a796e5d4357ca825f1463c59f41a152f0e9fe parent a909990
1 file changed, +5 −0
  • .superpowers/sdd/2026-08-23-idear/progress.md +5 −0
diff --git a/.superpowers/sdd/2026-08-23-idear/progress.md b/.superpowers/sdd/2026-08-23-idear/progress.md
index 56d04e0..5d54e04 100644
--- a/.superpowers/sdd/2026-08-23-idear/progress.md
+++ b/.superpowers/sdd/2026-08-23-idear/progress.md
@@ -99,3 +99,8 @@ Task 5: Ruling: fix all four Importants and M1-M6.
I1: the limiter's one anti-spoofing property (ignoring X-Forwarded-For) is stated in a doc comment and tested nowhere.
Cost if wrong on any: bounded — each is a small, local change with a test attached.
Task 5: fix round 1 dispatched (resume original implementer, opus), FIX_BASE 613642e
+Task 5: fix round 1/5 (4 Important + 6 Minor addressed; commits 613642e..a909990). Re-reviewer independently probed every IPv6 form and confirmed NO ::ffff: representation falls through to the /64 fold, so the "every IPv4 client in one bucket" risk the fix could have introduced does not occur. I3 and I4 reproduced by mutation.
+Task 5: minor (deferred): TestEveryHandlerIsMounted asserts a COUNT, not identity — it would miss one route dropped and an unrelated handler-shaped method added in the same change. A `Name` field on Route compared against reflected method names would close it. TestRoutesMatchTheDesign pins the table against the spec independently, which covers most of the gap. Final review to triage.
+Task 5: minor (deferred): an empty or portless RemoteAddr keys to "" and shares a bucket; not attacker-reachable, since net/http always populates RemoteAddr.
+Task 5: complete (commits ff6fafa..a909990, review clean)
+Task 6: dispatched (opus), BASE a909990 — the example app and SKILL.md, the last task