upgrade_registry — pipeline layers (2026-09-21)
Layer 1 — mechanical port (commit 8e54fcb): port.py (now a neutered historical artifact) over GitHub SillyZir/upgrade_registry @ 9d22f7f98e84da110169b6f28d3f5436db5a8758. T1 namespace rewrite + minimal T2 (1 import move + 1 symbol move; tests to pearl idioms). 19/19 tests. Fresh audit: 0 RED / 5 YELLOW, no port defects.
Layer 2 — remediation (this layer, separate commit): fixes for all five audit YELLOWs, verified by a targeted second audit round (0 RED / 0 YELLOW remaining):
| # | Finding | Fix | Test |
|---|---|---|---|
| Y1 | Latent stack-walker caller() identity helper | 4 crossing entrypoints declare cur realm, identity inline via cur.Previous().Address(), helper deleted; Deprecate's walk variable renamed cur→walk (logic byte-equivalent, compile-checked) | whole suite |
| Y2 | No banker + no guard: attached coins strand forever | rejectStraySend(cur) first statement of all 4 crossing functions | TestStraySendRejectedEverywhere |
| Y3 | GetLatest unbounded-hops read undocumented for on-chain integrators | Explicit O(chain length) COST WARNING in the doc comment | — (doc) |
| Y4 | Undocumented frozen-entry wedge (self-managed entry whose registrant can never call again) | Register doc warning + guidance to nominate a manager from init() | — (doc) |
| Y5 | Coverage gaps incl. all three round-3-audit code paths' failure branches | 8 new tests: bounded-walk refusal, long-chain render marker + incomplete branch, pagination, re-nomination overwrite, self-nomination index integrity, unregistered-op aborts (crossing paths; GetInfo excluded — same-realm panic, revive-based Aborts can't catch), owner==self no-pending | 19 → 27 tests |
Suite: 27/27 on chain/pearl toolchain (c4c72fd); lint clean; full workspace green. NOT DEPLOYED — deployment awaits explicit authorization per the Application #3 mission gate.
Provenance: deployable bytes = Layer 1 output + this remediation diff (authoritative byte-level record: the two git commits in the workspace repo). If the remediation is later pushed upstream, the transformation collapses to T1 namespace-only, as with apps #1-2.
Provenance v2 (2026-09-21, post-push)
Remediation pushed upstream: SillyZir/upgrade_registry @ 2d5a74870b08d70ff8e56e6e1efbace1803dd3bd (main), authored solely by SillyZir, no AI attribution (verified via fresh clone + GitHub API; 27/27 tests from the fresh clone). GitHub is the source of truth; the transformation to this directory is T1 ONLY (gnomod module-path namespace rewrite) — both .gno files are byte-identical to the GitHub commit (verified).
Deployment status — appended 2026-09-23
The "NOT DEPLOYED" above is the historical state at the time that layer was written. upgrade_registry has been live on pearl-1 since 2026-09-21: tx 532be90a…, height 602876, recorded in pearl/DEPLOYMENT.md §9. This note exists because the file read alone asserted a stale current state (repo-wide audit finding, 2026-09-23); the historical text above is unchanged.