Skip to content

docs(tasks): add task_061026_20 (contract follow-ups) and task_061026_21 (full-GI alignment); close task_021026_19 - #232

Merged
umeradl merged 2 commits into
InfiniteZeroFoundation:developfrom
umermjd11:docs/tasks-061026-20-21-forwarded
Oct 6, 2026
Merged

umeradl merged 2 commits into
InfiniteZeroFoundation:developfrom
umermjd11:docs/tasks-061026-20-21-forwarded

Conversation

@umermjd11

Copy link
Copy Markdown
Collaborator

This PR forwards the two plans approved in #219 and #229 as task specs. Docs only.

File Change
Developer/tasks/task_061026_20.md (new) Contract follow-ups, from task-plan-051026-1 (PR #219, amendments 1–5 and decisions 1–3 applied):
- Part A: #201 A4. DINTaskAuditor getter trim, plus a required fold review
- Part B: #180 dual-role guard
- Part C: #193 two-level S5
Includes the shared DINTaskAuditor byte budget across both tasks (22,575 B after both, 2,001 B margin). Tracking: Discussion #230
Developer/tasks/task_061026_21.md (new) Full-GI alignment, from task-plan-051026-2 (PR #229, amendments 1–6 and decisions 1–4 applied):
- Part A: contracts check, with a precondition table and a dincli coverage table
- Part B: AuditSeedLocked, AuditTestDataAssigned (gated on an every-batch commitment check) and AggSeedLocked
- Part C: dincli commands. Closes #223
- Part D: tests/dincli on foundry, running one complete GI
- Part E: GI docs, including setup.md and ROADMAP.md:19
Tracking: Discussion #231
Developer/tasks/task_021026_19.md **Status:** changes to Closed, with a link to Discussion #216 (PR #219 review amendment 1)

Notes:

check_doc_links.py Developer is green.

🤖 Generated with Claude Code

…sk-plan-051026-1/-2); close task_021026_19

- task_061026_20: contract follow-ups (InfiniteZeroFoundation#201 A4 DINTaskAuditor getter trim + required fold review, InfiniteZeroFoundation#180 dual-role guard, InfiniteZeroFoundation#193 two-level S5). Approved in PR No. 219 (amendments 1-5, decisions 1-3). Tracking: Discussion No. 230.
- task_061026_21: full-GI alignment (contracts check, three new GIstates with an every-batch test-data commitment gate, dincli commands closing No. 223, tests/dincli on foundry running a complete GI, GI docs). Approved in PR No. 229 (amendments 1-6, decisions 1-4). Tracking: Discussion No. 231.
- task_021026_19: Status -> Closed, linking Discussion No. 216 (PR No. 219 review amendment 1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@umeradl

umeradl commented Oct 6, 2026

Copy link
Copy Markdown
Member

Review: deep verification

Reviewed against develop in an isolated worktree at PR head d95d946 (1 commit). The merge-base is the current develop tip, a1fcce2. The PR is docs only (3 files under Developer/tasks/). git merge-tree --write-tree is clean, and GitHub reports mergeable: MERGEABLE, mergeStateStatus: CLEAN. Every file:line reference in both specs was re-resolved at a1fcce2. foundry/, dincli/ and tests/ are unchanged since 740a613, so the source plans' audit still holds.

1. Faithful to the amended plans

  • task_061026_20 matches task-plan-051026-1 at b797f36 (PR No. 219 head): decisions 1–3, amendments 2–5, the four getters, the keep-public three, and the budget table (22,718 → 22,398 → 22,500 → 22,575 B). Its Part B already uses the measured +102 B, not the plan's older +103 B. ✅
  • task_061026_21 matches task-plan-051026-2 at 30c51e7 (PR No. 229 head): all six amendments and decisions 1–4. The Discussion No. 216 follow-ups table has the same 6 rows, and issue No. 223 is in the header's Tracking list (amendment 2's "spec header"). ✅
  • Cross-spec consistency: both Coordination sections agree on the DINShared.sol split (enum + TA_TestDataNotAssigned vs. interface + TA_DualRoleNotAllowed), the "second to merge regenerates the ABI" rule, the shared budget, and the keep-public getters. ✅
  • Estimates: task 20 is 1 + 0.5 + 1.5 = 3 days, and task 21 is 0.5 + 1.5 + 3 + 2 + 1.5 = 8.5 days. Both match their headers. ✅

2. The shared budget, re-measured

A scratch prototype on a1fcce2 (via_ir, 200 runs, reverted afterwards) gives: develop 22,718 B; + commitment check 22,793 B (+75 B); + four getters internal 22,473 B; + the No. 180 guard 22,575 B (2,001 B margin). Both specs' numbers hold to the byte.

3. References

Verified at a1fcce2 (spot list):

  • Coordinator: isDINAggregator mapping :34, constructor (stake, modelId_) :290, the giRewardPool gate :379, registerDINaggregator :401, setTestDataAssignedFlag :519, startLMsubmissionsEvaluation :532-538 (no test-data check), setDinToken :1307, openDispute :1368, lockAggSeed :1459, lockAuditSeed :1483, resolveDispute :1535, settleRecomputation :1609, expireDispute :1671. ✅
  • Auditor: constructor :406, setDinToken :440, depositRewards :481, registerDINAuditor :667, the key check :1000-1001, setTestDataAssignedFlag :1017-1029 (written :1028, guarded :1026), openTestDataDispute :1480, resolveTestDataDispute :1524, closeExpiredDispute :1557, reassignAuditTestDataset :1601. ✅
  • DinValidatorStake: stale NatSpec :121 / :451 / :462, _partialSlashGIs :146, __gap[50] :174, slashPartial :294, registerEncryptionKey :501, setS5RecidivismParams :583. DinEmission.fundGI :174, DINModelRegistry modelId = models.length :237. DINShared.sol states 6–9 :17-20, "24-member table" :30-34, IDINTaskCoordinator :110-121. ✅
  • dincli and tests: stateDescription :640, the "Validators slashed" text (:665), states :669, build_and_send_tx :947, ensure_batch_seed_locked :998-1080, context.py :339 / :357, stake_dintokens :71-128, deploy.py :35 / :77, auditor.py :33-41 / :39, auditor_batches.py :170-177, contract_utils.py:150-152 (bytecode.object), constants.py:50, test_01_platform.py :135 / :164 / :167, test_02_task_contracts.py:74, _gi_state :52, test_04_gi.py:478, and role accounts 11–22 / 50–58 / range(2, 11). ✅
  • Tests named in task 20 Part C: SlashingInvariants.t.sol:488 / :518 / :540 and PR146SlashingRegression.t.sol:321. StakingEnforcement.t.sol exists. ✅
  • Threat-model Row 6 still cites :386 / :660 (task 20 Part B refreshes them to :401 / :667). BL-27 / BL-28 and the §10 No. 10 / §13 No. 8 "dincli lags" caveats exist as cited. ✅

Did not hold up:

  • claimDisputeBond (DINTaskCoordinator.sol:1575), task_061026_21 Part C table (:200). claimDisputeBond() is at :1583; :1575 is _burnAndForward(d.bond); inside resolveDispute. This came from my own PR No. 229 amendment 6, which was wrong (corrected on PR No. 229).
  • deploy.py:27-28, :61-62 (:187, nit). The auditor-side "stake" guard is at :63-64, and :61 is blank. The coordinator side, :27-28, is correct.

4. Links, IDs and the task_021026_19 status

  • Discussion No. 230 and No. 231 exist in the Tasks category, open, with titles matching the specs. ✅
  • discussioncomment-18761447 is the real closing comment on Discussion No. 216 (fetched via GraphQL), and the source-plan issuecomment- links resolve to the review, decisions and decisions-applied comments on PRs No. 219 / No. 229. ✅
  • The task_021026_19 status line ("All six Parts landed (PRs … 211, 212, 214, 215; wiki revision on … 207)") matches the Discussion No. 216 closing table. All four PRs are merged. This closes PR No. 219 review amendment 1. ✅
  • In-page anchors (#coordination-with-task_061026_21, #discussion-216-follow-ups, and the cross-file task_061026_20.md#part-a--201-part-a-item-4-dintaskauditor-size-review--pr-1-commit-1) match GitHub's slugs for the headings. check_doc_links.py Developer: 247 links, all resolve. git diff --check is clean. ✅

Amendments

  1. task_061026_21 :200: claimDisputeBond (:1575) → (:1583).
  2. Nit, task_061026_21 :187: deploy.py:27-28, :61-62 → :27-28, :63-64.

Everything else checks out. Once amendment 1 is in, this is ready to merge, together with PR No. 219 and PR No. 229, whose status lines link these two files on develop. The merge-proposal table is in the next comment.

@umeradl

umeradl commented Oct 6, 2026

Copy link
Copy Markdown
Member

Files changed (3) — as of d95d946 (PR head)

Diffed against merge-base a1fcce2, which is the current develop tip, so nothing overlaps. GitHub agrees: mergeable: MERGEABLE, mergeStateStatus: CLEAN. A local git merge-tree --write-tree dry run is also clean.

Developer/tasks/task_061026_20.md

Field Value
Change New
Lines +174/−0
Diff (what exactly is in this PR) The task spec forwarded from task-plan-051026-1 (PR No. 219): Part A (issue No. 201 A4, four DINTaskAuditor getters → internal, required fold review), Part B (issue No. 180, dual-role guard in registerDINAuditor), Part C (issue No. 193, two-level S5), the shared DINTaskAuditor budget table, Coordination, and Out of scope. Tracking: Discussion No. 230
Functionality — how & why How: Parts A+B go in one PR, so the CI size gate proves both fit in one build. Part C is a separate PR on DinValidatorStake, in parallel. The budget table carries task 21's +75 B, so the auditor's margin after both tasks (2,001 B, warn band) is known before either lands. Why: DINTaskAuditor sits in the warn band (1,858 B), dual-role registration is a KNOWN GAP (Row 6), and S5 counts per slasher contract (Row 11), so cross-model and S1/S2 misses never add up
Diff vs current develop HEAD None (new file)
Recommended merge proposal Merge as-is. Every reference and size re-verified (verification comment §2–§3)
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

Developer/tasks/task_061026_21.md

Field Value
Change New
Lines +316/−0
Diff (what exactly is in this PR) The task spec forwarded from task-plan-051026-2 (PR No. 229): Part A (contracts check, with precondition and dincli coverage tables), Part B (AuditSeedLocked, AuditTestDataAssigned with the every-batch commitment check, AggSeedLocked), Part C (dincli commands; closes issue No. 223), Part D (tests/dincli on foundry, one complete GI), Part E (GI docs incl. setup.md, ROADMAP.md:19). Tracking: Discussion No. 231
Functionality — how & why How: four sequential PRs (A+B → C → D → E), so commands and the suite are built on the final state machine. The new states are set inside existing functions, so they add no extra owner transactions. startLMsubmissionsEvaluation gains the missing test-data gate. Why: dincli and the integration suite can't drive a full GI on the foundry contracts (old constructors, no funding/key/claim/dispute commands, hardhat artifacts), and evaluation can start without test data assigned
Diff vs current develop HEAD None (new file)
Recommended merge proposal Merge after amendment 1: claimDisputeBond :1575 → :1583 (:200). Optional nit: deploy.py:61-62 → :63-64 (:187)
Actual merge proposal Soon
Pending proposal Amendment 1 (one line)
Local merge conflict No
GitHub merge conflict No

Developer/tasks/task_021026_19.md

Field Value
Change Modified
Lines +1/−1
Diff (what exactly is in this PR) **Status:** Open (assigned) → Closed (completed 2026-10-05), listing PRs No. 211 / 212 / 214 / 215 and the No. 207 wiki revision, with a link to the Discussion No. 216 closing comment
Functionality — how & why How: a status-line edit only; the rest of the spec is untouched. Why: PR No. 219 review amendment 1. Discussion No. 216 closed the task on 2026-10-05, but the file still said Open
Diff vs current develop HEAD None. develop's last touch was PR No. 217 (a1fcce2), which is the merge-base
Recommended merge proposal Merge as-is. The listed PRs are all merged, and the comment ID was fetched via GraphQL
Actual merge proposal Soon
Pending proposal None
Local merge conflict No
GitHub merge conflict No

Verification

Docs only, so there's no build or test to run. The budget numbers were reproduced with a scratch via_ir prototype (reverted). check_doc_links.py Developer is green, and git diff --check is clean. Full detail is in the verification comment above.

Local vs. GitHub agree: both report clean, with no conflicts.

…d at :1583

- Part C table (:200): claimDisputeBond() is at DINTaskCoordinator.sol:1583; :1575 is _burnAndForward(d.bond) inside resolveDispute. Same fix as PR No. 229.
- :187 (nit): the auditor-side stake guard in deploy.py is at :63-64, not :61-62.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@umeradl
umeradl merged commit 29abe22 into InfiniteZeroFoundation:develop Oct 6, 2026
4 checks passed
@umeradl

umeradl commented Oct 6, 2026

Copy link
Copy Markdown
Member

Actual outcome — PR No. 232 merged (pushed)

This supersedes the pre-merge merge-proposal comment above with what actually happened.

Fix commit reviewed: d95d946 (re-reviewed) → 261e923 (final head). It applies amendment 1, claimDisputeBond :1575 → :1583 (task_061026_21.md:200), and the nit, deploy.py:61-62 → :63-64 (:187). Nothing else changed. The "Pending proposal" for task_061026_21.md is resolved.

One commit on origin/develop:

  1. 29abe22: a real merge of this PR (merge commit, not squash), authored by umermjd11. 0 conflicts, as predicted. GitHub agrees: the PR shows MERGED.

No deviation commit was needed. develop had moved a1fcce2 → e36f20c (only the new Developer/tasks/task_061026_22.md), which doesn't touch this PR's files.

Files unchanged from the PR (3 of 3: Developer/tasks/task_061026_20.md, Developer/tasks/task_061026_21.md, Developer/tasks/task_021026_19.md)

Every file landed exactly as authored at 261e923.

Verification

Merged in order: PR No. 219 → PR No. 229 → PR No. 232 (0a9fc54 → 9d5fa7c → 29abe22), so the plans' status links to task_061026_20.md / task_061026_21.md resolve on develop. A local CI mirror on 29abe22 was green: check_doc_links.py for Documentation and Developer, and pytest -m "not integration" with an empty HOME. Solidity was skipped because nothing under foundry/, hardhat/ or .github/ changed. Pushed e36f20c..29abe22.

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