Repository navigation
Replies: 4 comments
|
Thanks for scoping this out, @umeradl. No issues on my side @Abidoyesimze. |
|
Part A done: PR #234, closes #226.
Starting Part B (#227) now. |
|
Part B done: PR #237, closes #227. New 12/14 new tests pass locally; the other 2 (aggregator/auditor per-role) are blocked by this sandbox's Python 3.10 (pre-existing, unrelated — same reason Both parts of task_061026_22 are now up: #234 (Part A, #226) and #237 (Part B, #227). |
|
Both Parts of task_061026_22 are merged into Checked on Part A, PR No. 234: merged as
Part B, PR No. 237: merged as
No out-of-scope follow-ups were raised. All deliverables are met, so I'm closing this as resolved and ticking the task file's checkboxes. |
Uh oh!
There was an error while loading. Please reload this page.
cc @abrahamnash: this task is scoped and ready for your approval / HR-side pre-processing. @Abidoyesimze, it's assigned to you.
Full spec:
Developer/tasks/task_061026_22.mdThe task file has the full specification: exact file/line references, coordination with the open plans, and the deliverables checklists. This post is the summary and the decisions that need flagging.
Timeline
No fixed deadline. Parts A and B are independent and can both start immediately. Post progress here so the reviews can be scheduled.
Summary
Similoluwa opened six issues on 2026-10-05 from a codebase scan. Each now has a status update with what can be done now. Two are confirmed security bugs with clear fixes, and they're this task: two PRs into
develop.DinEmission.fundGImint/drain (status update).fundGIis permissionless and mints, approves and calls into whatevertaskAuditorthe caller passes. WithmintCap = 0by default, anyone can mint DIN to themselves.DinEmissiongets aDINModelRegistryreference (a new slot before a 49-slot gap, set ininitializeplus an owner setter, wired inDeployPlatform.s.sol).fundGIthen reverts unlessgetModelIdByTaskAuditorreturnsexists.(bool exists, uint256 modelId), and model ID 0 is valid, so the check isexists, notmodelId != 0.pathfields are joined onto the cache dir, and an absolute path or..lets a malicious model owner write any file on a participant's machine before any Docker sandbox runs.resolve_manifest_pathhelper that rejects absolute,..and symlink escapes, used at all ~10 call sites, plus a backstop check inensure_file_exists, with pytest.Your other issues (not in this task)
Sequencing
dincli model-owner rewards fund-emissioncallsfundGIdincli/cli/auditor.pyandcontext.pyDecisions to flag, not guess
fundGIalso refuses a model withmodelDisabled == true. The recommendation is yes. Say which in the PR. This doesn't settle Three dormant/no-op mechanisms awaiting a product decision: disableModel kill-switch, rejectModel fee handling, S6 slashing (M-2, L-4, BL-31) #224 M-2.DinEmissionis a proxy. Append the new slot before__gap, shrink the gap to 49, and updatestorage_layout.md. Flag it for review.modelIdinstead of auditor address, raise it on security: DinEmission.fundGI lets anyone mint and drain DIN via an unvalidated taskAuditor address #226 before building it. That changes storage meaning and PR docs(tasks-plan): umermjd11 task plan 051026-2 — full-GI alignment: contracts check + richer GI states, dincli commands, integration suite on foundry, GI docs #229's planned command.resolve()follows it). Say so in the PR.Reference material
Developer/tasks/task_061026_22.md: full specDocumentation/technical/storage_layout.md: proxy storage reference for Part ADocumentation/technical/audits/foundry-src-security-review.md: your July review; record security: DinEmission.fundGI lets anyone mint and drain DIN via an unvalidated taskAuditor address #226 there once fixedPost progress updates, questions and PR links here, same convention as prior task-tracking discussions. If anything in the spec doesn't feel right, is ambiguous, or needs clarification, comment here and cc @umeradl.
All reactions