Skip to content

docs: fix broken install path, wrong commands and stale status in participant guides - #294

Open
Abidoyesimze wants to merge 6 commits into
InfiniteZeroFoundation:developfrom
Abidoyesimze:docs/issue-290-participant-guides
Open

Abidoyesimze wants to merge 6 commits into
InfiniteZeroFoundation:developfrom
Abidoyesimze:docs/issue-290-participant-guides

Conversation

@Abidoyesimze

@Abidoyesimze Abidoyesimze commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Part of #290. Works through the full checklist posted there — items 1 (packaged install) and 7 (README wording) are deliberately left for #282 and #280 respectively, so this PR doesn't close #290 on its own.

Blocks newcomers:

  • setup.md: both install options (wheel download, GitHub dist/ subdirectory) were broken. Replaced with git clone + pip install -e . (the method CLAUDE.md already documents as working) and added a note that a packaged-release install is tracked in Before next release: bring main's 0.2.0 changes into develop and fix the setup guide's broken install link #282, so this PR doesn't duplicate that larger version/release fix.
  • Fixed 8 wrong dincli command names across roles/model-owner.md, manifest.md, and workflows/model-workflow.md (verified each against the current dincli/cli/task.py and dincli/cli/modelownerd/model.py), e.g. registry request-registration → task model-owner register-request, model create-genesis → model create-genesis-model, system get-fees → system get-registry-fee.
  • Removed the non-existent sepolia_devnet and non-functional mainnet from the network-option lists in setup.md, cli-reference.md, and roles/clients.md (verified against dincli/config/din_info.json, which only has local/sepolia_op_devnet real entries and literal 0x... placeholders for mainnet).
  • getting-started.md: added a note clarifying this guide documents develop's protocol flow (including the aggregator/auditor commit-then-reveal steps, added after the initial devnet deployment) which can be ahead of what's live on sepolia_op_devnet, and pointed readers at dincli task gi show-state 0 to check the real state instead of trusting a hardcoded "GI 2 in progress".

Stale or misleading:

  • GOOD_FIRST_ISSUES.md: the DP governance review starter task was listed as open; it was completed in PR docs(dp): governance review of DevNet DP baseline (starter task) #89. Updated the listing to point at the result and the good first issue label instead.
  • getting-started.md: softened the "fully verifiable end-to-end" / "cryptographic and economic enforcement" claim to not contradict the page's own later note that reward/slashing economics are still under active development.
  • roles/model-owner.md: "DAO Approval" → "DIN-Representative Approval" (DAO governance is deferred to post-mainnet; today's approveModel/approveManifestUpdate calls are onlyOwner, held by the DIN-Representative).
  • Naming drift: Infinite Zero → InfiniteZero in getting-started.md and model-workflow.md to match the canonical form used in README.md and everywhere else in the repo; sepolia-op-devnet → sepolia_op_devnet (the real config value) in getting-started.md.
  • Replaced the dead Telegram invite link in getting-started.md with the current one (already used correctly in model-workflow.md).
  • Skipped the README.md wording item (checklist item 7) — already covered by the open docs: refresh README, add CITATION.cff and impact page #280.
  • din-workflow.md and model-workflow.md: dropped "(later DIN-DAO)" after "DIN-Representative" — governance is out of scope for now.
  • cli-reference.md and roles/model-owner.md: "DAO administrators"/"the DAO admin" → DIN-Representative, matching the fee-withdrawal calls which are onlyOwner.
  • Developer/design/whitepaper-summary.md: the white paper zip was replaced by a PDF upstream; updated the source link.
  • roles/model-owner.md: dropped the --manifestCID register-request warning now that dincli: task model-owner register-request --manifestCID fails because the registry contract isn't initialised #295 is fixed (PR fix(dincli): initialize the registry contract on the register-request --manifestCID route #297, develop@e9424af); documented both --manifestpath/--manifestCID routes the way update-manifest-request already does.

Thin or unclear:

  • Fleshed out Developer/DEVELOPMENT_SETUP.md: Python 3.12+ requirement, Foundry install, how to run the Python and Solidity test suites (pip install -e ".[test]" + pytest -m "not integration", matching CI), and a link to Documentation/technical/testing/.
  • Populated the previously-empty Developer/CODE_STANDARDS.md.
  • Developer/CONTRIBUTING.md: a file path was sitting inside a bash code block as if it were a shell command — moved it out as a plain link.
  • Fixed the malformed [!NOTE] rendering as raw text inside an unclosed code fence in setup.md.
  • Fixed two typos in workflows/model-workflow.md ("manisfest", "Protocolat").
  • manifest.md: corrected the false claim that create-genesis-model auto-creates a missing manifest.json — it exits with an error instead; the real recovery path (cache-default-artifacts) only has a configured default_manifest CID for local, not sepolia_op_devnet/mainnet.

Verification

  • python3 .github/scripts/check_doc_links.py Documentation Developer — all 573 inline relative links resolve.
  • Every renamed/fixed dincli command verified against the actual registered Typer commands in dincli/cli/task.py and dincli/cli/modelownerd/model.py, not just the issue's text.
  • Network-options claims verified against dincli/config/din_info.json.
  • --manifestCID fix verified against current dincli/cli/task.py (dinregistry_contract now assigned unconditionally) and issue dincli: task model-owner register-request --manifestCID fails because the registry contract isn't initialised #295's closed state.

🤖 Generated with Claude Code

…rticipant guides

Works through the issue InfiniteZeroFoundation#290 checklist: setup.md's broken wheel/dist install
links (featuring the already-working `pip install -e .` path and noting the
real fix is tracked in InfiniteZeroFoundation#282), 8 wrong dincli command names across
roles/model-owner.md, manifest.md and workflows/model-workflow.md, the fake
sepolia_devnet/mainnet network options listed in setup.md, cli-reference.md
and roles/clients.md, a malformed [!NOTE] rendering inside a code fence,
getting-started.md's stale GI status and commit-reveal-vs-live-deployment
mismatch plus its internal trust/economics contradiction, "DAO approval"
wording that should read DIN-Representative, Infinite Zero/InfiniteZero and
sepolia-op-devnet/sepolia_op_devnet naming drift, a dead Telegram invite
link, a thin DEVELOPMENT_SETUP.md, an empty CODE_STANDARDS.md, a stale
completed-task listing in GOOD_FIRST_ISSUES.md, and a file path sitting
inside a bash block in CONTRIBUTING.md.

README.md's own wording fix (checklist item 7) is left to the already-open
PR InfiniteZeroFoundation#280 rather than duplicated here.

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

@Santiagocetran Santiagocetran left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, Abidoye. Reviewed c663209 against develop 954fbf8 and #290. Several onboarding instructions still need correction:

1. P2: Explicitly select develop during installation.

The new source-install instructions use a bare git clone, which currently selects main, while the following text promises develop. Please select develop explicitly and explain that editable installation follows the checkout; it doesn’t automatically track upstream updates. Also distinguish this unreleased code from the live DevNet setup, as clarified in #282.

2. P2: Separate the basic Python test command from integration testing.

The basic setup uses pip install -e . and then recommends bare pytest. There is a general dependency note for ML/DP work, but no explicit installation of the test extras for this command.

Once its prerequisites are available, bare pytest also selects the integration harness, whose autouse fixtures compile contracts and manage local chain/IPFS services, including restarting local chain processes in non-isolated mode.

Please install the test extras and use the non-integration selection for the basic workflow, consistent with CI. Link full integration runs separately with their prerequisites and disposable-environment guidance.

3. P2: Qualify the newly advertised registration --manifestCID route.

The example reaches an existing CLI defect: supplying a CID skips registry initialization, then the fee lookup uses that unbound local.

Please document the manifest-file route or flag the limitation pending a separate fix. The manifest-file route avoids this particular defect; I have not verified it end to end. This finding applies to registration, not manifest updates, and does not require a runtime-code fix in this documentation PR.

4. P2: Correct the retained boolean-option syntax.

The renamed registration command still shows --isOpenSource [true/false]. It is a switch: include --isOpenSource for true and omit it for false.

5. P2: Remove the automatic manifest-creation promise.

The manifest note still says genesis creation automatically supplies a missing manifest, but the implementation exits when it is absent. Explain preparation explicitly. Default-artifact caching requires an existing task directory and configured network defaults; the bundled sepolia_op_devnet configuration lacks default_manifest, so caching is not a universal recovery path.

Items 4 and 5 are retained documentation errors in the examples this PR edits, not newly introduced code regressions.

Please reconcile the overlapping changes with #291 before final verification. CI passed for this head/base pair, but its link checks don’t establish that onboarding commands work. This review is based on source inspection and observed CI, not execution of the setup or live-network commands.

@abrahamnash

Copy link
Copy Markdown
Member

Thanks @Abidoyesimze, this covers more of #290 than my #291, so let's go with yours and I'll close #291. On top of @Santiagocetran's review, a few fixes from #291 that aren't in here yet:

The --manifestCID defect is now tracked in #.

- setup.md: explicitly checkout develop after cloning (a bare clone lands
  on main), clarify that an editable install doesn't auto-track upstream,
  and frame the source install as unreleased develop code rather than
  implying it already matches a release.
- DEVELOPMENT_SETUP.md: install the `[test]` extra and select
  `-m "not integration"` for the basic unit-test workflow, matching CI;
  bare `pytest` was pulling in the tests/dincli/ integration harness, whose
  autouse fixtures manage local chain/IPFS processes. Link the full
  integration suite separately.
- roles/model-owner.md: drop --manifestCID from the register-request
  example and flag it as broken (issue InfiniteZeroFoundation#295 — crashes with
  UnboundLocalError since the registry contract is only initialised on the
  manifestpath branch); --manifestpath still works.
- workflows/model-workflow.md: --isOpenSource is a flag, not a
  --option [true/false] pair.
- manifest.md: the "manifest auto-created from a default CID" note was
  wrong on two counts — create-genesis-model exits with an error if the
  manifest is missing rather than creating one, and the actual default-CID
  recovery path (cache-default-artifacts) only has a default_manifest
  configured for the local network, not sepolia_op_devnet or mainnet.
- Dropped "(later DIN-DAO)" from din-workflow.md and model-workflow.md, and
  fixed two more DAO-admin wordings (cli-reference.md, model-owner.md's fee
  withdrawal) to DIN-Representative, which is what currently holds that
  role.
- whitepaper-summary.md: updated the source link now that the paper is
  published as a PDF rather than a zip.

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

Copy link
Copy Markdown
Collaborator Author

Pushed 31bb970 addressing both reviews:

@Santiagocetran:

  1. setup.md now explicitly git checkout develop after cloning (a bare clone lands on main), and clarifies the editable install doesn't auto-track upstream — git pull in the same clone picks up new commits without reinstalling. Also reframed the note to make clear this is unreleased develop code that can be ahead of the live sepolia_op_devnet deployment, not a release.
  2. DEVELOPMENT_SETUP.md now installs pip install -e ".[test]" and runs pytest -m "not integration" for the basic workflow, matching CI's Python job, with a pointer to the dincli testing guide for the full integration suite.
  3. Confirmed the --manifestCID defect by reading register_request in dincli/cli/task.py — dinregistry_contract is only assigned inside the if not manifestCID: branch, so passing --manifestCID directly hits an UnboundLocalError at the fee lookup before any tx. Filed as dincli: task model-owner register-request --manifestCID fails because the registry contract isn't initialised #295 and removed --manifestCID from the register-request example in roles/model-owner.md in favor of --manifestpath, with a warning linking the issue. (update-manifest-request doesn't have this bug — it initializes the registry contract unconditionally — so I left that one's --manifestCID option alone.)
  4. Fixed --isOpenSource [true/false] → [--isOpenSource] in model-workflow.md — it's a flag, not a value option.
  5. Verified in dincli/cli/modelownerd/model.py: create-genesis-model exits with an error if manifest.json is missing, it does not auto-create it. The actual recovery path, cache-default-artifacts, pulls from a default_manifest CID in din_info.json — but only local has one configured; sepolia_op_devnet/mainnet don't. Rewrote the note in manifest.md to say so.

@abrahamnash: dropped "(later DIN-DAO)" from din-workflow.md and model-workflow.md, fixed cli-reference.md's "DAO administrators" and model-owner.md's "DAO admin" (fee withdrawal) to DIN-Representative, and updated the whitepaper-summary.md source link to the PDF.

check_doc_links.py still passes (573 links, all resolve).

Abidoyesimze added a commit to Abidoyesimze/DevNet that referenced this pull request Oct 28, 2026
…ights (BL-23)

Addresses PR InfiniteZeroFoundation#294/InfiniteZeroFoundation#293 review feedback: PR InfiniteZeroFoundation#263 already lands the scoped
manifest fix (clipping_norm 1.0 -> 10.0) for BL-23, so this PR no longer
touches cache_model_0/manifest.json — it's now just the investigation
writeup. Adds Documentation/technical/audits/dp-clipping-norm-verification.md,
quantifying how destructive the old clipping_norm: 1.0 default was against
the reference model's real trained weights (not the synthetic tensors
tests/test_cache_client_dp.py uses) and recommending any value >= 4.0,
noting InfiniteZeroFoundation#263's 10.0 already satisfies that with margin. Also documents a
related but separate, still-unfixed finding: the default noise_multiplier:
0.5 independently collapses accuracy regardless of clipping_norm, left for
a future epsilon/accounting decision rather than fixed here without that
context. Updates BL-23's status in Developer/BACK_LOG.md to resolved,
crediting PR InfiniteZeroFoundation#263 for the actual default change.

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

umeradl commented Oct 29, 2026

Copy link
Copy Markdown
Member

Closing keyword: please change Closes #290 to Part of #290.

We're about to make develop the default branch, so from now on a Closes/Fixes/Resolves line in a PR body or commit message closes the issue automatically when the PR merges (Developer/MAINTAINING.md No. 4.3).

This PR deliberately leaves two of issue No. 290's checklist items for later: item 1 (packaged install, deferred to issue No. 282) and item 7 (README wording, deferred to issue No. 280). Merging it with Closes would close No. 290 while those two items are still open. Please switch the PR body (and any commit message that has it) to Part of #290. Issue No. 290 then gets closed once the remaining items land, or once its body is updated to move them out of scope.

@umeradl

umeradl commented Oct 29, 2026

Copy link
Copy Markdown
Member

Heads-up on Documentation/public/roles/model-owner.md: the --manifestCID crash is fixed. PR No. 297 merged into develop as e9424af, and issue No. 295 is closed. That makes the > [!WARNING] block under register-request ("Use --manifestpath, not --manifestCID … currently crashes with an UnboundLocalError") stale.

Before this merges, could you:

  1. Drop that warning block.
  2. Document both routes in the register-request usage, the way update-manifest-request already shows them:
    dincli task model-owner register-request \
      --taskCoordinator <coordinator_address> \
      --taskAuditor <auditor_address> \
      [--manifestpath <path_to_manifest.json> | --manifestCID <manifest_cid>] \
      [--isOpenSource]
    and a line noting that --manifestCID skips the IPFS upload and uses an already-pinned manifest.

Please check Documentation/public/cli-reference.md and workflows/model-workflow.md in this PR for the same warning too.

@robertocarlous

Copy link
Copy Markdown
Collaborator

Reviewed against develop in an isolated worktree (pr-294-review on top of 31bb9701, the PR head). Peer check: OK (Abidoyesimze is the author; operator is not).

CI on 31bb9701: All checks green ✅ — docs link-check (573 links resolved), Python unit tests pass.

The PR's own work is two commits: c6632092 (main fixes) and 31bb9701 (review feedback, getting-started.md).


Claimed — broken install path in setup.md fixed. Verified: old wheel/git-install instructions replaced with git clone + pip install -e . (and DEVELOPMENT_SETUP.md separately adds pip install -e ".[test]" with the test extra). The [test] extra (pytest>=8.0, torch>=2.6) exists in pyproject.toml [project.optional-dependencies].

Claimed — 8 wrong command names corrected. Verified each against source:

  • register-request → dincli/cli/task.py L185 ✓
  • update-manifest-request → dincli/cli/task.py L293 ✓
  • show-registration-request → dincli/cli/task.py L371 ✓
  • create-genesis-model → dincli/cli/model.py L46 ✓
  • submit-genesis-model → dincli/cli/model.py L162 ✓
  • get-registry-fee → dincli/cli/system.py L1620 ✓
  • update-manifest-request (in manifest.md) ✓
  • register-request (in model-workflow.md) ✓

Claimed — network options corrected to [local | sepolia_op_devnet] only. Verified: mainnet key exists in din_info.json but carries 0x... placeholder addresses — not functional. Removing it from participant-facing docs is correct. All changed files consistently use the two-option form.

Claimed — sepolia-op-devnet → sepolia_op_devnet corrected. Verified: din_info.json uses underscored key; hyphenated form would silently fail at network resolution.

Claimed — naming drift fixed (Infinite Zero → InfiniteZero, (later DIN-DAO) removed, DAO → DIN-Representative). Verified in getting-started.md, model-owner.md, din-workflow.md, and cli-reference.md. DIN-Representative is the current canonical term throughout Developer/MAINTAINING.md.

Claimed — CONTRIBUTING.md broken raw path fixed. Verified: old /Developer/DEVELOPMENT_SETUP.md (non-rendering raw path with leading slash) replaced with [DEVELOPMENT_SETUP.md](DEVELOPMENT_SETUP.md) (proper relative markdown link).

Claimed — DEVELOPMENT_SETUP.md expanded with requirements, Foundry setup, and test commands. Verified: Requirements block lists Python >=3.12, Foundry, Node.js; pip install -e ".[test]" matches pyproject.toml; -m "not integration" matches the integration marker registered at pyproject.toml L50 ("marks tests that require a live Hardhat node, IPFS daemon, and Docker"); npm ci before forge test rationale matches CLAUDE.md exactly.

Claimed — GOOD_FIRST_ISSUES.md Task 0 marked completed. Verified: heading updated to "✅ Completed"; PR link to No. 89 and audit doc link to Documentation/technical/audits/dp-mechanism-review.md added; good first issue label search link added for incoming contributors. Audit file exists in the worktree ✓.

Claimed — whitepaper-summary.md URL corrected. Verified: .pdf.zip path replaced with .pdf (URL-encoded parens %28DIN%29), removing the broken zip extension from the direct PDF link.

Claimed — stale hardcoded GI state removed from getting-started.md. Verified: hardcoded "GI: 1" replaced with dincli task gi show-state 0 note, which is the correct command (exists at task.py ✓).

Claimed — dead Telegram link replaced. Verified: placeholder link removed, GitHub Discussions link substituted.

Claimed — "fully verifiable" claim softened. Verified: qualified language used, avoiding an unsubstantiated protocol claim in public-facing docs.

573 links all resolve. CI docs link-check confirms ✓.


No findings. Merge-ready; branch needs update-branch before merge (BEHIND develop, no conflict). No foundry/src/** touched; no second sign-off required.

@robertocarlous

Copy link
Copy Markdown
Collaborator

Head at review: 31bb9701
Merge base (upstream develop): behind but clean — no conflict (merge-tree exit 0)


Documentation/public/setup.md

Key Value
Change +21/-15 lines: broken wheel/git+https install replaced with git clone + pip install -e .; [!NOTE] code fence fixed; network options updated to [local | sepolia_op_devnet]
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/workflows/model-workflow.md

Key Value
Change +7/-9 lines: create-genesis → create-genesis-model, submit-genesis → submit-genesis-model, register → register-request, manisfest/Protocolat typos, Infinite Zero → InfiniteZero, (later DIN-DAO) removed
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/roles/model-owner.md

Key Value
Change +16/-12 lines: 8 wrong command names corrected, DAO → DIN-Representative, get-fees → get-registry-fee, [!WARNING] about --manifestCID crash added
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/getting-started.md

Key Value
Change +7/-6 lines: Infinite Zero → InfiniteZero, sepolia-op-devnet → sepolia_op_devnet, hardcoded GI state replaced with dincli task gi show-state 0, dead Telegram link replaced, "fully verifiable" softened
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/manifest.md

Key Value
Change +3/-3 lines: create-genesis → create-genesis-model, manifest creation note corrected, update-manifest → update-manifest-request
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/cli-reference.md

Key Value
Change +2/-4 lines: network options corrected; DAO → DIN-Representative
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/roles/clients.md

Key Value
Change +1/-3 lines: network options corrected
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Documentation/public/workflows/din-workflow.md

Key Value
Change +1/-1 lines: DIN-Representative (later DIN-DAO) → DIN-Representative
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Developer/DEVELOPMENT_SETUP.md

Key Value
Change +48/-3 lines: Requirements block added (Python >=3.12, Foundry, Node.js); pip install -e ".[test]" with rationale; pytest -m "not integration" command; Foundry setup section; testing reference section
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Developer/CODE_STANDARDS.md

Key Value
Change +47/-0 lines (was empty): Python, Solidity, and general standards documented; consistent with CLAUDE.md and foundry/foundry.toml; cross-references CONTRIBUTING.md contract-size budget section
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Developer/CONTRIBUTING.md

Key Value
Change +2/-4 lines: broken raw path /Developer/DEVELOPMENT_SETUP.md replaced with proper relative markdown link
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Developer/GOOD_FIRST_ISSUES.md

Key Value
Change +4/-7 lines: Task 0 marked completed; PR No. 89 link and dp-mechanism-review.md audit link added; good first issue label search link for new contributors
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

Developer/design/whitepaper-summary.md

Key Value
Change +1/-1 lines: whitepaper URL fixed (.pdf.zip → .pdf with URL-encoded parentheses)
Pending proposal None
Recommended merge proposal Merge as-is
Actual merge proposal Soon

robertocarlous
robertocarlous previously approved these changes Oct 31, 2026

@robertocarlous robertocarlous left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Docs-only fix — all 8 wrong command names, broken install path, network options, DAO→DIN-Representative naming drift, and stale status all verified against source at 31bb970

…InfiniteZeroFoundation#297)

Issue InfiniteZeroFoundation#295's UnboundLocalError was fixed by PR InfiniteZeroFoundation#297 (develop@e9424af) and
the issue is closed, so the WARNING block telling readers to avoid
--manifestCID is now stale. Document both --manifestpath/--manifestCID
routes in register-request's usage block instead, matching how
update-manifest-request already shows them, with a one-line note on what
--manifestCID does differently (skips the IPFS upload).

cli-reference.md and workflows/model-workflow.md were checked for the same
warning; neither has one.

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

Copy link
Copy Markdown
Collaborator Author

Pushed 5a1c00b addressing both outstanding items:

  1. PR body switched from Closes #290 to Part of #290 — this PR deliberately leaves items 1 and 7 of docs: fix broken install path, wrong commands and stale status in participant guides #290's checklist to Before next release: bring main's 0.2.0 changes into develop and fix the setup guide's broken install link #282 and docs: refresh README, add CITATION.cff and impact page #280, so docs: fix broken install path, wrong commands and stale status in participant guides #290 shouldn't auto-close on merge.
  2. Dropped the stale --manifestCID warning in roles/model-owner.md now that dincli: task model-owner register-request --manifestCID fails because the registry contract isn't initialised #295 is fixed (confirmed against current dincli/cli/task.py — dinregistry_contract is assigned unconditionally now, and dincli: task model-owner register-request --manifestCID fails because the registry contract isn't initialised #295 is closed). register-request's usage block now documents both --manifestpath/--manifestCID routes the way update-manifest-request already does, with a one-liner on what --manifestCID skips.

Checked cli-reference.md and workflows/model-workflow.md for the same warning as requested — neither had one, so no change needed there.

check_doc_links.py still passes (573 links, all resolve).

@umeradl

umeradl commented Nov 7, 2026

Copy link
Copy Markdown
Member

Reviewed against develop in an isolated worktree at PR head 376783e (merge-base 1207bf9). develop is now at ad94870, 11 commits on, and none of them touch this PR's 13 files. The branch merges cleanly: git merge-tree --write-tree exits 0, and GitHub agrees (mergeable: MERGEABLE; mergeStateStatus: BLOCKED only because Santiago's Oct 28 changes-requested review is still open). Peer check: OK. The author is Abidoyesimze; the operator is not.

CI on 376783e: CI OK green. The Docs job covers the relative links. CI doesn't run any of the documented commands, so I checked every command, option and config claim against the CLI source and dincli --help on this branch.

Claimed: every renamed command exists with the options shown: system get-registry-fee, task model-owner register-request (--taskCoordinator, --taskAuditor, --manifestpath, --manifestCID, --isOpenSource), show-registration-request <requestId>, update-manifest-request <model_id> [--manifestpath | --manifestCID], model-owner model create-genesis-model / submit-genesis-model [--taskCoordinator] [--ipfs-hash] [--score], model-owner task cache-default-artifacts, task gi show-state 0.

Verified — all exist as documented: --help on this branch shows exactly those options for register-request, show-registration-request (positional request_id), update-manifest-request (positional model_id), cache-default-artifacts and gi show-state (positional model_id). The commands that load a wallet before --help match their decorators: system.py:1955 (get-registry-fee), and modelownerd/model.py:46 and :162 (the genesis pair, with --ipfs-hash/--taskCoordinator/--score). --isOpenSource is a bare switch, so [--isOpenSource] is right (Santiago's No. 4). After the change, a grep of Documentation/public and DEVELOPMENT_SETUP.md finds none of the old names (get-fees, create-genesis/submit-genesis without -model, model-owner registry, update-manifest without -request, register --isOpenSource [true/false], sepolia-op-devnet, DAO admin, later DIN-DAO).

Claimed: --manifestCID skips the IPFS upload and registers an already-pinned manifest (replacing the stale warning removed after PR No. 297).

Verified — matches the code: task.py:197 assigns dinregistry_contract unconditionally, and the whole upload block (:210–:234, default path, confirmations, upload_to_ipfs) sits under if not manifestCID:. No [!WARNING] about --manifestCID remains in model-owner.md, cli-reference.md or model-workflow.md.

Claimed (manifest.md): create-genesis-model exits if the manifest is missing, and cache-default-artifacts only works where the network has a default_manifest CID, currently just local.

Verified — correct: modelownerd/model.py:99–:102 prints "Manifest not found" and typer.Exit(1). cache-default-artifacts reads load_din_info()[network]["default_manifest"] (modelownerd/task.py:50). In dincli/config/din_info.json, only local has that key; sepolia_op_devnet and mainnet don't (Santiago's No. 5).

Claimed (DEVELOPMENT_SETUP.md): pip install -e ".[test]" installs pytest and torch, and pytest -m "not integration" matches CI.

Verified — correct: pyproject.toml:36 is test = ["pytest>=8.0", "torch>=2.6"], and ci.yml:142 runs pytest -m "not integration" -q (Santiago's No. 2). See No. 2 below for the integration-harness prerequisites sentence.

Claimed (setup.md): a bare clone lands on main, so the guide now does an explicit git checkout develop, and the old wheel and #subdirectory=dist install lines were broken.

Verified — the checkout and the old lines, yes; the new note goes further than the facts (No. 1): the old wheel URL .../main/dist/dincli-0.1.0-py3-none-any.whl returns 404. #subdirectory=dist can't build, because dist/ on main holds only dincli-0.2.0-py3-none-any.whl and dincli-0.2.0.tar.gz, with no pyproject.toml. So both removed lines were broken (Santiago's No. 1).

Claimed: the smaller fixes Abraham and Umer asked for (DIN-Representative naming, white-paper PDF link, Part of #290, network lists, Telegram link).

Verified: "(later DIN-DAO)", "DAO administrators" and "the DAO admin" are gone. The new white-paper URL resolves: the White-Paper repo has Decentralized Intelligence Network (DIN).pdf, 846,334 B. The PR body and commit messages have no Closes/Fixes/Resolves; the body says Part of #290, and issue No. 282 (packaged install) is still open. The new Telegram link matches the one already in model-workflow.md. The CONTRIBUTING.md anchors CODE_STANDARDS.md links to (#code-standards, #submitting-prs, the contract-size-budget bullet) exist, the good first issue label exists, and getting-started.md's pointer to "Current Devnet Scope" lands on # ⚠️ Current Devnet Scope.

Two corrections, both short:

  1. Documentation/public/setup.md, the [!NOTE] under the source install, is wrong as written. It says installing "a packaged wheel (pip install dincli-*.whl) or directly from GitHub's dist/ subdirectory is broken today". But .../main/dist/dincli-0.2.0-py3-none-any.whl returns 200, and main has a root pyproject.toml (name = "dincli", version = "0.2.0"), so pip install "git+https://github.com/InfiniteZeroFoundation/DevNet.git@main" builds. What's actually broken is the two specific lines this PR removed (the 0.1.0 filename and #subdirectory=dist). Please reword it along these lines: "the previous instructions pointed at a 0.1.0 wheel and a dist/ subdirectory that don't exist; main's packaged release (0.2.0) is behind develop, so these guides, which describe develop, may not match it. Use the source install until No. 282 lands."
  2. Developer/DEVELOPMENT_SETUP.md: "needs a live Hardhat node". The harness's default toolchain is foundry: tests/dincli/conftest.py:2–:13 starts Anvil unless PLATFORM_DEPLOY_TOOLCHAIN=hardhat, and the testing guide says the same. Please change it to "a local chain (Anvil by default), an IPFS daemon and Docker".

Nit, optional: cli-reference.md says "mainnet is not available yet" while setup.md says "sepolia_devnet and mainnet are not available yet". ALLOWED_NETWORKS (dincli/cli/utils.py:185) still accepts both, so one wording in both places would be cleaner.

Not independently re-verified: the CODE_STANDARDS.md statement that DINTaskCoordinator/DINTaskAuditor are close to EIP-170. I didn't rebuild the contracts for a docs PR, and the size gate in CI is what enforces it. I also didn't run the source-install steps or any live-network commands end to end.


Santiago's five items from Oct 28, Abraham's three, and both of mine (Oct 29: closing keyword, stale --manifestCID warning) are all addressed. Every command and option now matches the CLI. With No. 1 and No. 2 fixed, this looks good to merge. It should land before PR No. 315, which rewrites seven of the same Documentation/public/ files. @Santiagocetran, your Oct 28 review is still the one marked changes requested. Could you re-review at 376783e or the next head?

@umeradl

umeradl commented Nov 7, 2026

Copy link
Copy Markdown
Member

Files changed (13) — as of 376783e (PR head)

Diffed against merge-base 1207bf9 (develop). develop has moved 11 commits to ad94870 (including PR No. 314 and PR No. 259), and none of them touch these 13 files. GitHub agrees: mergeable: MERGEABLE, mergeStateStatus: BLOCKED (blocked only by the open changes-requested review). Confirmed with a local git merge-tree --write-tree dry run: clean.

Files that share one mechanism and rationale are grouped into one block.

Documentation/public/setup.md

Field Value
Change Modified
Lines +25/-11
Diff (what exactly is in this PR) Replaces Option A (the 0.1.0 wheel) and Option B (git+…@main#subdirectory=dist) with a source install: git clone → git checkout develop → pip install -e .. Adds a note on editable installs and a [!NOTE] on unreleased code. Trims the network list to local/sepolia_op_devnet and fixes a code fence that swallowed the network note.
Functionality — how & why How: pip install -e . installs from the repo-root pyproject.toml of whatever is checked out, so the explicit develop checkout decides which CLI the reader gets. A git pull updates it with no reinstall. Why: both removed lines were dead. The 0.1.0 wheel URL returns 404, and main's dist/ has no pyproject.toml to build from. These guides describe develop.
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Needs a small fix (verification comment No. 1). The [!NOTE] says installing a packaged wheel or "directly from GitHub" is broken today, but the 0.2.0 wheel on main returns 200 and git+…@main builds from main's root pyproject.toml. Reword it to: the old lines pointed at files that don't exist, and main's 0.2.0 is behind develop.
Actual merge proposal Soon
Pending proposal No. 1 wording, then the network-note nit (cross-check with cli-reference.md).
Local merge conflict No
GitHub merge conflict No

Developer/DEVELOPMENT_SETUP.md

Field Value
Change Modified
Lines +50/-2
Diff (what exactly is in this PR) Adds Requirements (Python ≥ 3.12, Foundry, Node only for foundry//hardhat/), pip install -e ".[test]", the -m "not integration" unit-test commands, a pointer to the integration guide, Foundry install/build/test with the npm ci FFI explanation, and a Testing Reference section.
Functionality — how & why How: the [test] extra (pyproject.toml:36) pulls in pytest>=8.0 and torch>=2.6. -m "not integration" deselects tests/dincli/, whose autouse fixtures start and restart chain/IPFS processes, and it's the same selection as ci.yml:142. Why: bare pytest after a bare pip install -e . either failed on missing torch or collected the integration harness (Santiago's No. 2).
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Needs a small fix (verification comment No. 2): "needs a live Hardhat node" should be "a local chain (Anvil by default)". tests/dincli/conftest.py:2–:13 uses Anvil unless PLATFORM_DEPLOY_TOOLCHAIN=hardhat.
Actual merge proposal Soon
Pending proposal No. 2 wording.
Local merge conflict No
GitHub merge conflict No

Documentation/public/roles/model-owner.md, Documentation/public/workflows/model-workflow.md, Documentation/public/manifest.md

Field Value
Change Modified (all three)
Lines +16/-17, +10/-10, +9/-3
Diff (what exactly is in this PR) Command renames: get-fees → get-registry-fee, model-owner registry … (TODO placeholders) → task model-owner register-request / show-registration-request / update-manifest-request, create-genesis/submit-genesis → …-genesis-model, register --isOpenSource [true/false] → register-request [--isOpenSource]. "DAO" becomes DIN-Representative. Both manifest routes are documented, with a line on what --manifestCID skips. The manifest.md note now says the manifest must already exist, and that cache-default-artifacts only works where default_manifest is set (just local). Typo fixes in model-workflow.md §8.
Functionality — how & why How: every name and option matches the Typer decorators on this branch (--help output, system.py:1955, modelownerd/model.py:46/:162, task.py:191/:298). --manifestCID bypasses the upload block (task.py:210–:234). create-genesis-model exits 1 without a manifest (model.py:99–:102). Only local in din_info.json has default_manifest. Why: a model owner copying the old commands got "No such command" or a wrong flag syntax, and the old manifest note promised an automatic creation that never happens (Santiago's No. 3–5, Umer's Oct 29 request).
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Merge as-is. Every command and option was checked against the CLI, and a grep finds no old names left.
Actual merge proposal Soon
Pending proposal None.
Local merge conflict No
GitHub merge conflict No

Documentation/public/cli-reference.md, Documentation/public/roles/clients.md, Documentation/public/workflows/din-workflow.md

Field Value
Change Modified (all three)
Lines +5/-4, +1/-1, +1/-1
Diff (what exactly is in this PR) Network lists drop sepolia_devnet/mainnet. "DAO administrators" and "(later DIN-DAO)" become DIN-Representative. cli-reference.md gets a new network note (live DevNet / local anvil / mainnet not yet).
Functionality — how & why How: these are wording changes only. ALLOWED_NETWORKS (dincli/cli/utils.py:185) still accepts all four names, but din_info.json has no sepolia_devnet entry and mainnet has no deployment. Why: governance stays off-chain until mainnet, so DIN-DAO isn't a planned near-term role (Abraham's Oct 28 list), and the docs shouldn't advertise networks that can't be used.
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Merge as-is. The only open point is the optional nit: the cli-reference.md note leaves out sepolia_devnet, while setup.md names it.
Actual merge proposal Soon
Pending proposal Optional nit on consistent network-note wording.
Local merge conflict No
GitHub merge conflict No

Documentation/public/getting-started.md

Field Value
Change Modified
Lines +27/-18
Diff (what exactly is in this PR) "Infinite Zero" → "InfiniteZero", and sepolia-op-devnet → sepolia_op_devnet. The hard-coded "GI 1 completed / GI 2 in progress" status becomes a [!NOTE] pointing to dincli task gi show-state 0. "Fully verifiable" is softened, and the economic-enforcement claim is qualified with a pointer to "Current Devnet Scope". The Telegram link is updated.
Functionality — how & why How: task gi show-state takes a positional model_id (--help on this branch). The Telegram link now matches model-workflow.md. The "Current Devnet Scope" heading exists at line 175. Why: a static GI status goes stale as soon as it's written, sepolia-op-devnet isn't a valid --network value, and rewards/slashing aren't a live guarantee yet.
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Merge as-is.
Actual merge proposal Soon
Pending proposal None.
Local merge conflict No
GitHub merge conflict No

Developer/CODE_STANDARDS.md, Developer/CONTRIBUTING.md

Field Value
Change Modified (CODE_STANDARDS.md was an empty file on develop)
Lines +47/-0, +2/-3
Diff (what exactly is in this PR) Fills in CODE_STANDARDS.md (Python PEP 8 / no committed ruff config / test patterns, Solidity custom errors + NatSpec + ABI regeneration, general scoping). In CONTRIBUTING.md, a bare /Developer/DEVELOPMENT_SETUP.md line inside a bash fence becomes a real relative link.
Functionality — how & why How: CODE_STANDARDS.md links to CONTRIBUTING.md#code-standards and #submitting-prs, and both headings exist. It also points to the contract-size-budget bullet under Submitting PRs, which exists. Why: CONTRIBUTING.md's Code Standards section pointed to an empty file, and the old setup "link" was a shell line nobody could click.
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Merge as-is. The "close to EIP-170" wording wasn't re-measured here; CI's size gate enforces it.
Actual merge proposal Soon
Pending proposal None.
Local merge conflict No
GitHub merge conflict No

Developer/GOOD_FIRST_ISSUES.md, Developer/design/whitepaper-summary.md

Field Value
Change Modified (both)
Lines +2/-4, +1/-1
Diff (what exactly is in this PR) Starter Task 0 is marked ✅ Completed (PR No. 89), its pitch is replaced with a pointer to the good first issue label, and the white-paper source now links the PDF instead of the removed zip.
Functionality — how & why How: the good first issue label exists, and the PDF exists in White-Paper (Decentralized Intelligence Network (DIN).pdf, 846,334 B). Why: a finished task was still pitched as open, and the zip link was dead (Abraham's Oct 28 list).
Diff vs current develop HEAD None. Untouched since the merge-base.
Recommended merge proposal Merge as-is.
Actual merge proposal Soon
Pending proposal None.
Local merge conflict No
GitHub merge conflict No

Verification

CI OK and Docs are green at 376783e. Every command, option and config claim was checked against the CLI on this branch, and both wheel URLs were checked with HTTP requests. Details are in the verification comment above. Two short wording fixes remain (setup.md No. 1, DEVELOPMENT_SETUP.md No. 2). Everything else merges as-is.

Ordering: this should merge before PR No. 315, which rewrites seven of the same Documentation/public/ files (setup.md, getting-started.md, manifest.md, roles/clients.md, roles/model-owner.md, workflows/din-workflow.md, workflows/model-workflow.md).

Local vs. GitHub agree: clean merge on both.

…review

setup.md's install note claimed installing a packaged wheel or from
GitHub's dist/ subdirectory is broken today. Verified: main's dist/
dincli-0.2.0-py3-none-any.whl returns 200 and main's root pyproject.toml
(version 0.2.0) builds via `pip install git+...@main`. What's actually
broken is the two specific lines this PR removed (the 0.1.0 wheel filename
and the #subdirectory=dist layout, both gone from main). Reworded to say
that instead, while still steering readers to the source install since
main's packaged release is behind develop.

DEVELOPMENT_SETUP.md said the integration harness "needs a live Hardhat
node" unconditionally. tests/dincli/conftest.py defaults
PLATFORM_DEPLOY_TOOLCHAIN to "foundry", which starts Anvil, not Hardhat —
Hardhat only runs when that env var is set to "hardhat". Reworded to "a
local chain (Anvil by default)".

Also aligned cli-reference.md's network note with setup.md's — both now
list sepolia_devnet and mainnet as unavailable (ALLOWED_NETWORKS accepts
all four names, but only local/sepolia_op_devnet have real entries in
din_info.json).

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

Copy link
Copy Markdown
Collaborator Author

Pushed 436e87c fixing both:

  1. setup.md: reworded the install note per your suggestion — verified main's dist/dincli-0.2.0-py3-none-any.whl returns 200 and main's root pyproject.toml (0.2.0) builds via git+...@main. The actual breakage was the two specific lines this PR removed (the 0.1.0 filename, the #subdirectory=dist layout), not packaged installs in general. Now says that, plus that main's release is behind develop.
  2. DEVELOPMENT_SETUP.md: "needs a live Hardhat node" → "a local chain (Anvil by default)" — confirmed PLATFORM_DEPLOY_TOOLCHAIN defaults to foundry/Anvil in tests/dincli/constants.py, Hardhat only runs when that's explicitly set to hardhat.

Also took the optional nit: cli-reference.md's network note now lists sepolia_devnet alongside mainnet as unavailable, matching setup.md.

check_doc_links.py still passes (584 links, all resolve).

@Santiagocetran your Oct 28 changes-requested review is still the open one blocking merge — everything from it, Abraham's list, and both of Umer's rounds should now be addressed. Would appreciate a re-review at 436e87c when you get a chance.

@umeradl

umeradl commented Nov 7, 2026

Copy link
Copy Markdown
Member

Re-review of the fix commit: 376783e (reviewed earlier today) → 436e87c (current HEAD). It's one commit (436e87c) changing 3 files, +10/-8. Re-checked in the same isolated worktree, reset to 436e87c.

  • No. 1, Documentation/public/setup.md: fixed. The [!NOTE] now says only the old 0.1.0 wheel filename and the dist/ subdirectory layout don't exist any more, and that main's packaged 0.2.0 release still works but is behind develop, which these guides describe. That matches what I measured before: the 0.1.0 URL returns 404, the 0.2.0 wheel returns 200, and main has a root pyproject.toml.
  • No. 2, Developer/DEVELOPMENT_SETUP.md: fixed. It now says "a local chain (Anvil by default), an IPFS daemon, and Docker". That matches tests/dincli/constants.py:138, where PLATFORM_DEPLOY_TOOLCHAIN defaults to "foundry" (Anvil), and Hardhat runs only when it's set to hardhat.
  • Nit, Documentation/public/cli-reference.md: taken. The network note now reads "sepolia_devnet and mainnet are not available yet", the same as setup.md.

Nothing else changed. The other 10 files are byte-identical to 376783e, so the rest of the earlier verification still holds.

Merge state: git merge-tree --write-tree against develop (ad94870) exits 0, and GitHub reports MERGEABLE. CI on 436e87c: CI OK green, including Docs.

Approving on merit at 436e87c. @Santiagocetran, your Oct 28 changes-requested review is now the only thing blocking the merge. All five items in it were addressed, and I checked each one against the CLI source in the verification comment. Could you re-review? This should land before PR No. 315, which touches seven of the same files.

@umeradl umeradl left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved on merit at 436e87c: both fixes from my review are in (setup.md install note, Anvil default in DEVELOPMENT_SETUP.md), plus the network-note nit. Every documented command and option was checked against the CLI source, CI is green, and it merges cleanly. Details in the re-review comment above.

@umeradl

umeradl commented Nov 7, 2026

Copy link
Copy Markdown
Member

@Santiagocetran, your Oct 28 changes-requested review (at c663209) is the last thing blocking this PR. I re-checked your five items at the current head, 436e87c:

  1. Install selects develop: fixed. Documentation/public/setup.md:33-54 now runs git checkout develop after the clone. It also says an editable install follows the checkout rather than upstream, and marks this as unreleased code that's separate from the live sepolia_op_devnet.
  2. Basic test command: fixed. Developer/DEVELOPMENT_SETUP.md:17-34 installs .[test], uses pytest -m "not integration" (the same as CI), and links the full integration run separately with its prerequisites.
  3. register-request --manifestCID: the underlying defect is fixed in code. PR No. 297 (d1b6bdc, merged Oct 29) binds dinregistry_contract before the CID branch (dincli/cli/task.py:197 on develop). The fix is also in this PR's head, so the documented route is now valid.
  4. --isOpenSource syntax: fixed. It's shown as a bare switch in roles/model-owner.md:90 and workflows/model-workflow.md:200.
  5. Automatic manifest creation: fixed. Documentation/public/manifest.md:23-26 now says create-genesis-model exits if the manifest is missing. It also says the default-artifact path works only where the network has a default_manifest.

The PR No. 291 overlap is moot, because No. 291 was closed without merging. CI is green, and the PR merges cleanly. If these fixes look right to you, could you re-review, or dismiss the changes-requested review, so @Abidoyesimze can queue it?

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: fix broken install path, wrong commands and stale status in participant guides

5 participants