Skip to content

docs(backlog,audit): link BL-27..31 to new issues, mark stale findings fixed - #225

Open
Abidoyesimze wants to merge 1 commit into
InfiniteZeroFoundation:developfrom
Abidoyesimze:docs/backlog-link-new-issues
Open

Abidoyesimze wants to merge 1 commit into
InfiniteZeroFoundation:developfrom
Abidoyesimze:docs/backlog-link-new-issues

Conversation

@Abidoyesimze

@Abidoyesimze Abidoyesimze commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Doc-only follow-up from a codebase/issue scan: Developer/BACK_LOG.md's BL-27 through BL-31 all said "no issue yet" despite being confirmed, real, unaddressed findings (verified each against develop @ 740a613 before filing — not just taking the backlog's word for it). Filed four issues and linked them back:

Added BL-34/BL-35 for M-2/L-4 since they predated the backlog's BL-numbering and had no row of their own, for consistency with how everything else in this doc is tracked.

Also: closed the loop on the 2026-07 security review

While re-verifying BL-31 against current code, found that M-3, M-4, L-1, L-5, L-7 in Documentation/technical/audits/foundry-src-security-review.md are already fixed on develop but the doc was never updated to say so:

Each one re-verified by reading the current source, not just trusting a comment or a git log message. M-2 and L-4 are re-confirmed still open and now point at #224.

Test plan

Doc-only change, no code touched. N/A for forge test/pytest.

…s fixed

BL-27..31 said "no issue yet" -- filed InfiniteZeroFoundation#221 (BL-29, DinFeeRouter fund
lock), InfiniteZeroFoundation#222 (BL-30, stalled-GI no recovery), InfiniteZeroFoundation#223 (BL-27+BL-28, dincli
model-owner deploy/release-slots gaps), InfiniteZeroFoundation#224 (BL-31 plus the audit
doc's M-2/L-4, bundled as "needs a product decision" findings). Added
BL-34/BL-35 for M-2/L-4 since they predated the backlog's BL-numbering
and had no row of their own.

Also closed the loop on the 2026-07 security review
(foundry-src-security-review.md): M-3, M-4, L-1, L-5, L-7 are already
fixed in current develop (GI-state gate in slashAuditors, a real
jail() mechanism, correct stake() CEI order, withdrawFees removed
entirely, giRewardPool replacing totalDepositedRewards) but the doc
was never updated to say so -- re-verified each against develop @
740a613 before marking. M-2 and L-4 re-confirmed still open and now
point at InfiniteZeroFoundation#224.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@umeradl

umeradl commented Oct 5, 2026

Copy link
Copy Markdown
Member

Reviewed against develop in an isolated worktree at PR head fa796ae (1 commit, merge-base 740a613). develop has moved to a1fcce2 since. None of the commits in between touch Developer/BACK_LOG.md or foundry-src-security-review.md. git merge-tree --write-tree is clean locally, and GitHub reports mergeable: MERGEABLE, mergeStateStatus: CLEAN. Every "fixed" and "still open" claim was checked against the source on origin/develop, not against commit messages.

Claimed: BL-27..31 had no issue; four new issues now track them: No. 221 (BL-29), No. 222 (BL-30), No. 223 (BL-27 + BL-28), No. 224 (BL-31, plus M-2 / L-4 as BL-34 / BL-35).

Verified — exact match. All four issues exist, are open, were filed by the PR author, and their titles match the rows they're linked from:

  • No. 221 "DinFeeRouter: validatorPool/storage/publicGoods shares accrue with no withdrawal path (BL-29)"
  • No. 222 "No recovery path when a T1/T2 batch never reaches reveal quorum — GI stuck forever (BL-30)"
  • No. 223 "dincli model-owner: deploy sends stale constructor args (broken); no command for releaseGIRegistrationSlots (BL-27, BL-28)"
  • No. 224 "Three dormant/no-op mechanisms awaiting a product decision: disableModel kill-switch, rejectModel fee handling, S6 slashing (M-2, L-4, BL-31)"

BL-34 / BL-35 are new rows; neither number existed on 740a613.

Claimed: M-3, M-4, L-1, L-5 and L-7 in the July security review are already fixed on develop. M-2 and L-4 are still open.

Verified, finding by finding, against origin/develop source:

Finding PR says Source on develop Verdict
M-2 still open No functional reference to DINModelRegistry or modelDisabled in either task contract. The only mentions are doc comments. ✅ still open
M-3 fixed in 216527c 216527c is "fix(security): DINTaskAuditor — C-1 auditor registration cap, M-3 GI-state gate in slashAuditors". slashAuditors reverts TA_CannotSlashAuditors unless GIstate() == T2AggregationDone (DINTaskAuditor.sol:1332-1333). ✅
M-4 fixed in aee404f aee404f is "feat(foundry): governable stake params, jail/reactivate…". jailValidator (DinValidatorStake.sol:509) and _jailInternal write jailedUntil, set status = Jailed and emit ValidatorJailed (:667-669). ✅ (the function is jailValidator, not jail())
L-1 fixed In stake(), validator.activeStake += amount runs before DIN_TOKEN.safeTransferFrom. ✅
L-4 still open, intentional? rejectModel/approveModel don't refund feePaid. ✅ still open
L-5 fixed, "superseded by setFees/sweepFeesToRouter (a [#203](…/pull/203) link)" withdrawFees is gone, and setFees (:479) and sweepFeesToRouter (:511) exist. But No. 203 is an issue, not a PR (gh api …/pulls/203 → 404), and it isn't where withdrawFees went. git log -S"function withdrawFees" points at 06190e8 "fix(foundry): scope DINModelRegistry fee path to ETH-only, accumulate-then-sweep" (2026-08-07). No. 203 / PR No. 204 only removed dincli's dead withdraw-fees command. ⚠️ the verdict is right; the source link is wrong
L-7 "Fixed" Only half of the finding is fixed. The dead-code half is: giRewardPool replaced totalDepositedRewards, and RewardDeposited is emitted at DINTaskAuditor.sol:487. The other half still holds: the contract has no receive(), no fallback() and no ETH withdrawal path, so ETH that reaches it by force can't be recovered. The row itself says "not re-verified here". ⚠️ partly fixed

Doc checks: check_doc_links.py Documentation and … Developer: all links resolve. git diff --check is clean.

Not independently re-verified: the issue bodies' own analysis (for example "95% of every routed fee is stuck"). The PR only links the issues, and the BL rows' text is unchanged apart from the tracking cell.


Every structural claim held up: the four issues exist and match their rows, and M-2, M-3, M-4, L-1 and L-4 are exactly as stated. Two wording fixes before merge:

  1. L-5: credit 06190e8 (DINModelRegistry fee path → accumulate-then-sweep) instead of the [#203](…/pull/203) link. That link points at an issue that only removed the dincli command.
  2. L-7: say "Partly fixed": the dead-code half is fixed, and the stray-ETH half still applies (no receive()/fallback()/ETH withdrawal, informational). Don't mark it fixed outright.

With those, it's good to merge. Optional nit: M-4's note says "jail()"; the function is jailValidator().

@umeradl

umeradl commented Oct 5, 2026

Copy link
Copy Markdown
Member

Files changed (2) — as of fa796ae (PR head)

Diffed against merge-base 740a613 (develop). develop has moved to a1fcce2 since (PR No. 215's follow-up and PR No. 217), and none of those commits touch these two files. GitHub agrees: mergeable: MERGEABLE, mergeStateStatus: CLEAN. A local git merge-tree --write-tree dry run is clean (exit 0).

Developer/BACK_LOG.md

Field Value
Change Modified
Lines +7/-5
Diff (what exactly is in this PR) BL-27..31: the status cell changes from "no issue yet" to "tracked in" No. 223 (BL-27, BL-28), No. 221 (BL-29), No. 222 (BL-30) and No. 224 (BL-31). The rest of each row is unchanged. New BL-34 (M-2, the disableModel kill-switch doesn't reach the task contracts) and BL-35 (L-4, rejectModel doesn't refund the fee), both tracked in No. 224.
Functionality — how & why How: status/tracking cells only, plus two new rows in the existing format. Why: the backlog said "no issue yet" for five confirmed findings that now have issues. M-2 and L-4 predate BL numbering and had no row. Without the links, nobody can tell from the backlog that BL-27..31 are tracked. All four issues exist, are open, and their titles match the rows (see the verification comment).
Diff vs current develop HEAD None — untouched by develop since merge-base
Recommended merge proposal Merge as-is. Optional: BL-34's "only two doc comments in the auditor": the auditor has four comments naming DINModelRegistry (:31, :393, :405, :434) and none reading modelDisabled. The point stands; only the count is off.
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

Documentation/technical/audits/foundry-src-security-review.md

Field Value
Change Modified
Lines +10/-4
Diff (what exactly is in this PR) Status notes: M-2 "still open, No. 224 / BL-34"; M-3 "Fixed — 216527c"; M-4 "Fixed — issue No. 37, aee404f"; L-1 "Fixed"; L-4 linked to No. 224 / BL-35; L-5 "Fixed/obsolete — withdrawFees no longer exists… superseded by setFees/sweepFeesToRouter", linked as [#203](…/pull/203); L-7 "Fixed (task_210726_6 §3)".
Functionality — how & why How: status lines in the same format as the existing H-2 / M-1 / L-2 / L-3 / L-6 fix notes. The finding text stays as the historical record. Why: the review is the baseline new security work checks against, so findings left looking open get re-reported. M-2, M-3, M-4, L-1 and L-4 match the source on develop.
Diff vs current develop HEAD None — untouched by develop since merge-base
Recommended merge proposal Merge with two wording fixes. (1) L-5: No. 203 is an issue, not a PR (/pulls/203 → 404), and it only removed dincli's dead withdraw-fees command. The contract change was 06190e8 "scope DINModelRegistry fee path to ETH-only, accumulate-then-sweep"; cite that instead. (2) L-7: mark it "Partly fixed". The dead-code half is fixed (giRewardPool, RewardDeposited emitted at :487). The stray-ETH half still applies: there's no receive()/fallback() or ETH withdrawal path on develop. Optional: M-4's "jail()" is jailValidator().
Actual merge proposal Soon
Pending proposal L-5 source attribution and L-7 status, as above (author or merge-time fix).
Local merge conflict No
GitHub merge conflict No

Verification

Full detail is in the verification comment above. In short: issues No. 221–224 exist and match their rows. M-2, M-3, M-4, L-1 and L-4 match the source on develop. L-5's verdict is right but its source link is wrong. L-7 is only partly fixed. Doc links in Documentation and Developer all resolve. git diff --check is clean. GitHub CI is green.

Local vs. GitHub agree: both report a clean merge; no overlap with what develop gained since the merge-base.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants