Skip to content

docs: March 2026 accuracy pass (validators, ICs, API refs, dApps)#355

Closed
acastellana wants to merge 5 commits intogenlayerlabs:mainfrom
acastellana:docs/improvements-march-2026
Closed

docs: March 2026 accuracy pass (validators, ICs, API refs, dApps)#355
acastellana wants to merge 5 commits intogenlayerlabs:mainfrom
acastellana:docs/improvements-march-2026

Conversation

@acastellana
Copy link
Contributor

@acastellana acastellana commented Mar 5, 2026

This PR is a targeted accuracy/consistency sweep across the highest-traffic sections.

Changes:

  • Validators setup: fix config field name (manage_modules → start_manager), bump version defaults to v0.5.1, add missing env vars (COMPUT3KEY, IOINTELLIGENCE_API_KEY).
  • Intelligent contracts features: fix outdated VecDB import + correct mermaid diagram.
  • API references: update Python syntax, add missing params, document Direct Mode; update examples to match current GenLayer API.
  • dApps section: fix broken links + small typos.

How I tested:

genlayer-docs@0.0.1 build
npm run node-generate-changelog && npm run node-update-setup-guide && npm run node-update-config && npm run node-update-docker-compose && npm run node-generate-api-docs && node scripts/generate-full-docs.js && next build

genlayer-docs@0.0.1 node-generate-changelog
node scripts/generate-changelog.js

Generated changelog with 26 versions at 2026-03-05T20:24:35.652Z

genlayer-docs@0.0.1 node-update-setup-guide
node scripts/update-setup-guide-versions.js

Updated setup guide with 26 versions, latest: v0.5.1

genlayer-docs@0.0.1 node-update-config
node scripts/update-config-in-setup-guide.js

Updated setup guide config at 2026-03-05T20:24:36.204Z

genlayer-docs@0.0.1 node-update-docker-compose
node scripts/update-docker-compose-in-setup-guide.js

Updated setup guide docker-compose at 2026-03-05T20:24:36.523Z

genlayer-docs@0.0.1 node-generate-api-docs
node scripts/generate-api-docs.js

Generating API documentation with configuration: {
API_DIR: 'pages/api-references/genlayer-node',
TARGET_FILE: 'pages/api-references/genlayer-node.mdx',
TEMPLATE_FILE: 'content/api-references/genlayer-node/content.mdx',
GEN_SUBDIR: 'gen',
DEBUG_SUBDIR: 'debug',
OPS_SUBDIR: 'ops'
}
Processing gen methods from /home/albert/clawd/projects/genlayer-docs/pages/api-references/genlayer-node/gen
Found 5 gen methods
Processing debug methods from /home/albert/clawd/projects/genlayer-docs/pages/api-references/genlayer-node/debug
Found 2 debug methods
Processing ops methods from /home/albert/clawd/projects/genlayer-docs/pages/api-references/genlayer-node/ops
Found 3 ops methods
Using template from /home/albert/clawd/projects/genlayer-docs/content/api-references/genlayer-node/content.mdx
Generated API docs with 5 gen methods, 2 debug methods, and 3 ops methods at 2026-03-05T20:24:36.790Z
▲ Next.js 15.0.7

Linting and checking validity of types ...
Creating an optimized production build ...
✓ Compiled successfully
Collecting page data ...
Generating static pages (0/137) ...
Generating static pages (34/137)
Generating static pages (68/137)
Generating static pages (102/137)
✓ Generating static pages (137/137)
Finalizing page optimization ...
Collecting build traces ...

Route (pages) Size First Load JS
┌ ○ / (677 ms) 6.38 kB 197 kB
├ /_app 0 B 93.5 kB
├ ○ /_providers/ollama (929 ms) 5.5 kB 197 kB
├ ○ /_providers/openai (714 ms) 5.31 kB 196 kB
├ ○ /_temp/security-and-best-practices/grey-boxing (1504 ms) 5.48 kB 197 kB
├ ○ /_temp/security-and-best-practices/universal-attacks (1090 ms) 5.39 kB 196 kB
├ ○ /404 194 B 93.7 kB
├ ○ /api-references (404 ms) 4.6 kB 196 kB
├ ○ /api-references/genlayer-cli (917 ms) 15.2 kB 206 kB
├ ○ /api-references/genlayer-js (929 ms) 13.4 kB 204 kB
├ ○ /api-references/genlayer-node (1504 ms) 20.7 kB 212 kB
├ ○ /api-references/genlayer-node/debug/gen_dbg_ping (374 ms) 5.01 kB 196 kB
├ ○ /api-references/genlayer-node/debug/gen_dbg_trie (404 ms) 5.42 kB 196 kB
├ ○ /api-references/genlayer-node/gen/gen_call (1090 ms) 8.81 kB 200 kB
├ ○ /api-references/genlayer-node/gen/gen_getContractCode (421 ms) 6.24 kB 197 kB
├ ○ /api-references/genlayer-node/gen/gen_getContractSchema (374 ms) 6.04 kB 197 kB
├ ○ /api-references/genlayer-node/gen/gen_getContractState (1091 ms) 5.94 kB 197 kB
├ ○ /api-references/genlayer-node/gen/gen_getTransactionReceipt (728 ms) 7.59 kB 199 kB
├ ○ /api-references/genlayer-node/ops/balance (1091 ms) 5.69 kB 197 kB
├ ○ /api-references/genlayer-node/ops/health (406 ms) 5.89 kB 197 kB
├ ○ /api-references/genlayer-node/ops/metrics (1504 ms) 7.66 kB 199 kB
├ ○ /api-references/genlayer-py (928 ms) 6.58 kB 198 kB
├ ○ /api-references/genlayer-test (927 ms) 15.5 kB 207 kB
├ ○ /developers (927 ms) 5.45 kB 196 kB
├ ○ /developers/decentralized-applications/architecture-overview (915 ms) 5.65 kB 279 kB
├ ○ /developers/decentralized-applications/dapp-development-workflow (928 ms) 7 kB 198 kB
├ ○ /developers/decentralized-applications/genlayer-js (743 ms) 6.52 kB 198 kB
├ ○ /developers/decentralized-applications/project-boilerplate (723 ms) 7.4 kB 198 kB
├ ○ /developers/decentralized-applications/querying-a-transaction (626 ms) 6.1 kB 197 kB
├ ○ /developers/decentralized-applications/reading-data (626 ms) 6.59 kB 198 kB
├ ○ /developers/decentralized-applications/testing (626 ms) 6.19 kB 197 kB
├ ○ /developers/decentralized-applications/writing-data (626 ms) 7.76 kB 199 kB
├ ○ /developers/intelligent-contracts/crafting-prompts (626 ms) 7.09 kB 198 kB
├ ○ /developers/intelligent-contracts/debugging (749 ms) 5.89 kB 197 kB
├ ○ /developers/intelligent-contracts/deploying (1504 ms) 6.51 kB 198 kB
├ ○ /developers/intelligent-contracts/deploying/cli-deployment (1504 ms) 6.76 kB 198 kB
├ ○ /developers/intelligent-contracts/deploying/deploy-scripts (1504 ms) 8.36 kB 199 kB
├ ○ /developers/intelligent-contracts/deploying/deployment-methods (1504 ms) 5.52 kB 197 kB
├ ○ /developers/intelligent-contracts/deploying/network-configuration (931 ms) 7.25 kB 198 kB
├ ○ /developers/intelligent-contracts/equivalence-principle (878 ms) 12.2 kB 286 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_adr-validator (930 ms) 9.83 kB 201 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_flight-insurance (931 ms) 9.28 kB 200 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_genlayer-dao (929 ms) 15.3 kB 206 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_git-bounties (930 ms) 9.14 kB 200 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_influencer-tweet-analyzer (1317 ms) 12 kB 203 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_purellm-dao (930 ms) 8.51 kB 200 kB
├ ○ /developers/intelligent-contracts/examples/_advanced/_rokos-mansion (929 ms) 14.2 kB 205 kB
├ ○ /developers/intelligent-contracts/examples/fetch-github-profile (1318 ms) 6.87 kB 198 kB
├ ○ /developers/intelligent-contracts/examples/fetch-web-content (1318 ms) 7.51 kB 199 kB
├ ○ /developers/intelligent-contracts/examples/github-profile-projects (1317 ms) 7.38 kB 198 kB
├ ○ /developers/intelligent-contracts/examples/github-profile-summary (1317 ms) 7.42 kB 198 kB
├ ○ /developers/intelligent-contracts/examples/llm-hello-world (1014 ms) 6.73 kB 198 kB
├ ○ /developers/intelligent-contracts/examples/llm-hello-world-non-comparative (1318 ms) 6.82 kB 198 kB
├ ○ /developers/intelligent-contracts/examples/prediction (1317 ms) 7.81 kB 199 kB
├ ○ /developers/intelligent-contracts/examples/storage (1317 ms) 6.35 kB 197 kB
├ ○ /developers/intelligent-contracts/examples/user-storage (1015 ms) 6.71 kB 198 kB
├ ○ /developers/intelligent-contracts/examples/vector-store-log-indexer (1014 ms) 7.93 kB 199 kB
├ ○ /developers/intelligent-contracts/examples/wizard-of-coin (1014 ms) 7.4 kB 198 kB
├ ○ /developers/intelligent-contracts/features/balances (1014 ms) 5.56 kB 197 kB
├ ○ /developers/intelligent-contracts/features/calling-llms (704 ms) 5.95 kB 197 kB
├ ○ /developers/intelligent-contracts/features/debugging (1014 ms) 5.31 kB 196 kB
├ ○ /developers/intelligent-contracts/features/error-handling (1014 ms) 5.92 kB 197 kB
├ ○ /developers/intelligent-contracts/features/features (704 ms) 4.9 kB 196 kB
├ ○ /developers/intelligent-contracts/features/interacting-with-evm-contracts (704 ms) 5.52 kB 197 kB
├ ○ /developers/intelligent-contracts/features/interacting-with-intelligent-contracts (706 ms) 5.6 kB 197 kB
├ ○ /developers/intelligent-contracts/features/non-determinism (703 ms) 6.77 kB 198 kB
├ ○ /developers/intelligent-contracts/features/random (704 ms) 5.18 kB 196 kB
├ ○ /developers/intelligent-contracts/features/special-methods (703 ms) 5.53 kB 279 kB
├ ○ /developers/intelligent-contracts/features/storage (405 ms) 6.5 kB 198 kB
├ ○ /developers/intelligent-contracts/features/upgradability (405 ms) 8.06 kB 199 kB
├ ○ /developers/intelligent-contracts/features/vector-storage (703 ms) 7.2 kB 198 kB
├ ○ /developers/intelligent-contracts/features/web-access (1931 ms) 5.38 kB 196 kB
├ ○ /developers/intelligent-contracts/first-contract (419 ms) 6.9 kB 198 kB
├ ○ /developers/intelligent-contracts/first-intelligent-contract (404 ms) 6.11 kB 197 kB
├ ○ /developers/intelligent-contracts/ideas (405 ms) 6.67 kB 198 kB
├ ○ /developers/intelligent-contracts/introduction (412 ms) 7.91 kB 199 kB
├ ○ /developers/intelligent-contracts/security-and-best-practices/prompt-injection (404 ms) 5.5 kB 197 kB
├ ○ /developers/intelligent-contracts/storage (1931 ms) 8.74 kB 200 kB
├ ○ /developers/intelligent-contracts/tooling-setup (1931 ms) 9.18 kB 200 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-cli (1931 ms) 7.17 kB 198 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio (1930 ms) 5.46 kB 196 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/advanced-features/custom-plugins (719 ms) 7.86 kB 199 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/contract-state (1930 ms) 5.27 kB 196 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/deploying-contract (1930 ms) 5.39 kB 196 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/development-tips (718 ms) 6.86 kB 198 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/execute-transaction (721 ms) 5.43 kB 196 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/limitations (718 ms) 5.25 kB 196 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/loading-contract (718 ms) 5.41 kB 196 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/monitoring-node-logs (718 ms) 5.8 kB 197 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/providers (718 ms) 5.48 kB 197 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/reset-the-studio (403 ms) 5.65 kB 197 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/troubleshooting (403 ms) 6.48 kB 198 kB
├ ○ /developers/intelligent-contracts/tools/genlayer-studio/validators (404 ms) 5.79 kB 197 kB
├ ○ /developers/intelligent-contracts/types/address (403 ms) 7.86 kB 199 kB
├ ○ /developers/intelligent-contracts/types/collections (677 ms) 7.6 kB 199 kB
├ ○ /developers/intelligent-contracts/types/dataclasses (411 ms) 5.69 kB 197 kB
├ ○ /developers/intelligent-contracts/types/primitive (1937 ms) 7.77 kB 199 kB
├ ○ /developers/staking-guide (1937 ms) 11.8 kB 203 kB
├ ○ /FAQ (420 ms) 6.76 kB 198 kB
├ ○ /partners/comput3 (417 ms) 4.97 kB 196 kB
├ ○ /partners/genlayerlabs (403 ms) 4.96 kB 196 kB
├ ○ /partners/heurist (1938 ms) 5.03 kB 196 kB
├ ○ /partners/ionet (1937 ms) 5.03 kB 196 kB
├ ○ /understand-genlayer-protocol (1938 ms) 6.7 kB 198 kB
├ ○ /understand-genlayer-protocol/core-concepts (1937 ms) 4.89 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/accounts-and-addresses (677 ms) 5.32 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/economic-model (1937 ms) 5.23 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/genvm (679 ms) 5.57 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/large-language-model-llm-integration (677 ms) 5.25 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/non-deterministic-operations-handling (677 ms) 5.25 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy 6.25 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy/appeal-process (677 ms) 5.48 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy/equivalence-principle 6.87 kB 198 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy/finality (677 ms) 6.14 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy/slashing 5.5 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy/staking 10.7 kB 202 kB
├ ○ /understand-genlayer-protocol/core-concepts/optimistic-democracy/unstaking 5.9 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/rollup-integration 5.96 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/transactions (420 ms) 7.53 kB 199 kB
├ ○ /understand-genlayer-protocol/core-concepts/transactions/transaction-encoding-serialization-and-signing (423 ms) 5.02 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/transactions/transaction-execution 6.02 kB 279 kB
├ ○ /understand-genlayer-protocol/core-concepts/transactions/transaction-statuses 5.63 kB 197 kB
├ ○ /understand-genlayer-protocol/core-concepts/transactions/types-of-transactions (732 ms) 6.91 kB 198 kB
├ ○ /understand-genlayer-protocol/core-concepts/validators-and-validator-roles (426 ms) 5.44 kB 196 kB
├ ○ /understand-genlayer-protocol/core-concepts/web-data-access (727 ms) 5.25 kB 196 kB
├ ○ /understand-genlayer-protocol/optimistic-democracy-how-genlayer-works (420 ms) 5.29 kB 196 kB
├ ○ /understand-genlayer-protocol/typical-use-cases (727 ms) 5.3 kB 196 kB
├ ○ /understand-genlayer-protocol/what-are-intelligent-contracts (728 ms) 5.88 kB 197 kB
├ ○ /understand-genlayer-protocol/what-makes-genlayer-different (427 ms) 5.07 kB 196 kB
├ ○ /understand-genlayer-protocol/who-is-genlayer-for (388 ms) 5.07 kB 196 kB
├ ○ /understand-genlayer-protocol/why-we-are-building-genlayer (374 ms) 5.15 kB 196 kB
├ ○ /validators/changelog (727 ms) 10.1 kB 201 kB
├ ○ /validators/genvm-configuration (727 ms) 6.27 kB 197 kB
├ ○ /validators/monitoring (374 ms) 11.3 kB 202 kB
├ ○ /validators/setup-guide (374 ms) 17.8 kB 209 kB
├ ○ /validators/system-requirements (373 ms) 5.57 kB 197 kB
└ ○ /validators/upgrade (727 ms) 6.72 kB 198 kB

  • First Load JS shared by all 94 kB
    ├ chunks/framework-c2373564c69ff406.js 45 kB
    ├ chunks/main-abebd8c9e1a4ddb5.js 38.1 kB
    └ other shared chunks (total) 10.9 kB

○ (Static) prerendered as static content (includes docs generation scripts + Next build)

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for new chain configurations: studionet and testnet_asimov.
    • Added new full_transaction parameter to transaction receipt functionality and state_status parameter for contract queries.
    • Introduced Direct Mode and Studio Mode testing documentation with examples and best practices.
    • Added new get_resolution_data method to prediction market contracts.
  • Documentation

    • Updated API documentation with refreshed function naming and module organization.
    • Corrected links and fixed typos across developer guides.
    • Enhanced contract examples with updated web fetching and validation patterns.
  • Chores

    • Updated node version to v0.5.1 and configuration parameters for validator setup.

Bob (Clawdbot) and others added 5 commits March 5, 2026 17:57
…ion defaults, add missing API keys

- Fix genvm.manage_modules → genvm.start_manager to match actual config.yaml field
- Update NODE_VERSION default from v0.4.0 to v0.5.1 (latest release)
- Add COMPUT3KEY and IOINTELLIGENCE_API_KEY to .env example (mentioned in setup but missing from docker env)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ort, fix mermaid diagram

- vector-storage: Remove wrong import path (backend.node.genvm.std.vector_store), clarify VecDB comes from genlayer package
- special-methods: Add missing label to fallback_defined node in mermaid diagram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… add Direct Mode

- genlayer-py: Fix colon-instead-of-equals syntax error in read_contract example
- genlayer-py: Add missing state_status param to read_contract, full_transaction to wait_for_transaction_receipt
- genlayer-py: Add studionet and testnet_asimov chain imports
- genlayer-test: Add Direct Mode section (fast in-memory testing without Docker)
- genlayer-test: Fix mock LLM key names (response → nondet_exec_prompt) to match SDK

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update wizard-of-coin: gl.exec_prompt → gl.nondet.exec_prompt, gl.eq_principle_strict_eq → gl.eq_principle.prompt_comparative (matches source)
- Update prediction: gl.get_webpage → gl.nondet.web.render, gl.exec_prompt → gl.nondet.exec_prompt, gl.eq_principle_strict_eq → gl.eq_principle.strict_eq
- Update llm-hello-world: gl.exec_prompt → gl.nondet.exec_prompt, gl.eq_principle_strict_eq → gl.eq_principle.strict_eq
- Update llm-hello-world-non-comparative: gl.eq_principle_prompt_non_comparative → gl.eq_principle.prompt_non_comparative
- Update fetch-web-content, fetch-github-profile, github-profile-projects, github-profile-summary: same API updates
- Update user-storage: contract_runner.from_address → gl.message.sender_address
- Fix GitHub links to point to genlayer-testing-suite repo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix SDK reference link: /references/genlayer-js → /api-references/genlayer-js
- Fix first contract link: your-first-contract → first-contract
- Fix typo: instace → instance

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link
Contributor

vercel bot commented Mar 5, 2026

Someone is attempting to deploy a commit to the YeagerAI Team on Vercel.

A member of the Team first needs to authorize it.

@netlify
Copy link

netlify bot commented Mar 5, 2026

Deploy Preview for genlayer-docs ready!

Name Link
🔨 Latest commit 8e4acf8
🔍 Latest deploy log https://app.netlify.com/projects/genlayer-docs/deploys/69a9e6bdfc97bc0008bf4d86
😎 Deploy Preview https://deploy-preview-355--genlayer-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 5, 2026

📝 Walkthrough

Walkthrough

This PR updates GenLayer documentation across multiple areas: API references with new function parameters and expanded chain configurations, testing guides introducing Direct Mode and Studio Mode workflows, contract examples migrating to new API patterns (gl.nondet.* and gl.eq_principle.*), and validator setup guides with configuration key renaming and version upgrades.

Changes

Cohort / File(s) Summary
API Reference Updates
pages/api-references/genlayer-py.mdx, pages/api-references/genlayer-test.mdx
Added new function parameters (full_transaction, state_status); expanded public chain configurations (studionet, testnet_asimov); updated Mock LLM documentation with renamed key from "response" to "nondet_exec_prompt"; introduced Direct Mode and Studio Mode documentation sections.
Contract Example API Migration
pages/developers/intelligent-contracts/examples/fetch-github-profile.mdx, fetch-web-content.mdx, github-profile-projects.mdx, github-profile-summary.mdx, llm-hello-world-non-comparative.mdx, llm-hello-world.mdx
Standardized API calls across examples: replaced gl.get_webpage with gl.nondet.web.render, gl.eq_principle_strict_eq with gl.eq_principle.strict_eq, and gl.exec_prompt with gl.nondet.exec_prompt.
Advanced Contract Examples
pages/developers/intelligent-contracts/examples/prediction.mdx, wizard-of-coin.mdx
Added new public state fields (winner, score) and methods (get_resolution_data) to PredictionMarket; refactored resolution logic and deterministic checking; updated wizard contract interaction with new comparator and JSON parsing patterns.
Documentation Corrections & Minor Updates
pages/developers/decentralized-applications/dapp-development-workflow.mdx, genlayer-js.mdx, pages/developers/intelligent-contracts/examples/user-storage.mdx, features/special-methods.mdx, features/vector-storage.mdx
Fixed typo ("instace" to "instance"), updated SDK reference links, clarified documentation references (contract_runner.from_address to gl.message.sender_address), enhanced diagram labels, and migrated VectorStore references to VecDB.
Validator Configuration Updates
pages/validators/setup-guide.mdx
Renamed consensus configuration keys (consensus.contractmainaddress and consensus.contractdataaddress to consensus.consensusaddress), replaced genvm.manage_modules with genvm.start_manager, updated node version from v0.4.0 to v0.5.1, and added new environment variables (COMPUT3KEY, IOINTELLIGENCE_API_KEY, ATOMAKEY).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested reviewers

  • dohernandez
  • MuncleUscles
  • cristiam86
  • kp2pml30

Poem

🐰 Our docs now shine with APIs so new,
From gl.get_webpage to nondet.web.render so true,
Config keys dance in a validator's delight,
With chains and examples all set just right,
The changes are hopping—let's review with might! 🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The PR title "docs: March 2026 accuracy pass (validators, ICs, API refs, dApps)" clearly summarizes the main scope—a targeted documentation accuracy and consistency sweep across specific high-traffic sections (validators, intelligent contracts, API references, and dApps). It follows Conventional Commits format.
Description check ✅ Passed The description is well-structured, documenting the changes across four main areas (validators, intelligent contracts, API references, dApps), describing the testing approach including build output verification, and indicating successful Next.js compilation and page generation. It substantially addresses the required content.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pages/developers/intelligent-contracts/examples/prediction.mdx (1)

108-108: ⚠️ Potential issue | 🟡 Minor

Documentation is now incorrect — read method exists.

Line 108 states "there are no Read Methods defined", but the contract now includes get_resolution_data() (lines 83-89) which is a @gl.public.view read method. This documentation should be updated to reflect the new method.

-Once the contract is deployed, its address is displayed as well as the **Read Methods** section. In this case, there are no Read Methods defined.
+Once the contract is deployed, its address is displayed as well as the **Read Methods** section. You can call `get_resolution_data()` to view the current resolution state, including the winner, score, and whether the market has been resolved.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/prediction.mdx` at line 108,
Update the sentence that currently reads "there are no Read Methods defined" to
reflect that the contract exposes a read/view method; mention the
get_resolution_data() `@gl.public.view` method by name and briefly describe its
purpose (e.g., returns resolution data), so the README/example now correctly
shows that Read Methods includes get_resolution_data().
🧹 Nitpick comments (4)
pages/developers/intelligent-contracts/examples/wizard-of-coin.mdx (1)

49-49: Remove debug print from contract example logic.

print(result) can expose prompt/response content in logs and is noisy for production-style examples.

Suggested fix
-            print(result)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/wizard-of-coin.mdx` at line
49, Remove the debug print call that exposes prompt/response content: delete the
standalone print(result) in the contract example logic and, if you need to
indicate success or provide non-sensitive feedback, replace it with a minimal,
non-sensitive log or a comment (e.g., use an informational logger method like
processLogger.info or simply omit output). Ensure the change targets the exact
print(result) statement present in the example so no prompt/response content is
written to logs.
pages/developers/intelligent-contracts/examples/fetch-web-content.mdx (1)

44-44: Tighten wording: “same exact” → “same.”

Minor phrasing cleanup in the deterministic execution explanation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/fetch-web-content.mdx` at
line 44, Update the phrasing in the deterministic execution sentence: replace
"same exact content" with "same content" in the line referencing
gl.eq_principle.strict_eq() so it reads that the function "ensures that all
nodes in the network arrive at the same content."
pages/developers/intelligent-contracts/examples/fetch-github-profile.mdx (1)

45-45: Prefer “same content” over “same exact content.”

Small wording cleanup for clarity and style in the deterministic execution description.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/fetch-github-profile.mdx` at
line 45, Replace the phrase "same exact content" with "same content" in the
deterministic execution sentence that references gl.eq_principle.strict_eq() so
the line reads that the function "ensures that all nodes in the network arrive
at the same content"; update the text surrounding gl.eq_principle.strict_eq()
accordingly to reflect this wording change.
pages/developers/intelligent-contracts/examples/llm-hello-world.mdx (1)

47-47: Minor style improvement: "same exact" is redundant.

Consider rephrasing to either "exact same result" or simply "same result" for cleaner prose.

-2. **Deterministic Execution**: `gl.eq_principle.strict_eq()` ensures that all nodes in the network arrive at the same exact result.
+2. **Deterministic Execution**: `gl.eq_principle.strict_eq()` ensures that all nodes in the network arrive at the exact same result.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/llm-hello-world.mdx` at line
47, The phrase "same exact result" is redundant; update the sentence mentioning
gl.eq_principle.strict_eq() to use cleaner wording such as "same result" (e.g.,
change "same exact result" to "same result" or "exact same result") so the line
reads: "gl.eq_principle.strict_eq() ensures that all nodes in the network arrive
at the same result." Reference: gl.eq_principle.strict_eq().
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pages/api-references/genlayer-test.mdx`:
- Around line 63-79: The snippet uses undefined fixtures alice and bob; update
all occurrences to the documented fixtures direct_alice and direct_bob so the
examples using direct_vm.sender, direct_vm.prank, and direct_vm.expect_revert
work; specifically replace alice -> direct_alice and bob -> direct_bob in the
lines that set direct_vm.sender, the with direct_vm.prank(...) block, and the
contract.transfer call as well as any comments referencing those fixture names.

In `@pages/developers/intelligent-contracts/examples/prediction.mdx`:
- Line 92: Update the GitHub link in the line referencing
"football_prediction_market.py": change the repository segment to point to
genlayer-project-boilerplate and update the filename to football_bets.py so the
URL targets the actual file location (replace the reference to
football_prediction_market.py in the existing markdown link with
football_bets.py in the genlayer-project-boilerplate repo).

In `@pages/developers/intelligent-contracts/examples/wizard-of-coin.mdx`:
- Around line 52-57: The code assumes gl.eq_principle.prompt_comparative returns
valid JSON with a boolean "give_coin" and directly mutates self.have_coin; wrap
the json.loads call and subsequent access in a try/except to catch
json.JSONDecodeError, TypeError and KeyError, verify parsed_result is a dict and
that "give_coin" exists and is a bool (use
isinstance(parsed_result["give_coin"], bool)), and only then set self.have_coin
= not parsed_result["give_coin"]; on invalid output raise or return a controlled
error/validation failure (or log and use a safe default) so state mutation
happens only after successful validation (referencing
gl.eq_principle.prompt_comparative, get_wizard_answer, parsed_result, and
self.have_coin).

In `@pages/developers/intelligent-contracts/features/vector-storage.mdx`:
- Around line 23-27: The example uses typing.Literal in type annotations (e.g.,
typing.Literal[384]) but never imports typing; fix by adding an import for the
Literal type (either add "from typing import Literal" and replace occurrences of
typing.Literal[...] with Literal[...], or add "import typing" at the top so
typing.Literal[...] resolves) and ensure all annotations referencing
typing.Literal are updated to match the chosen import style (references:
typing.Literal occurrences in the sample contract code).

---

Outside diff comments:
In `@pages/developers/intelligent-contracts/examples/prediction.mdx`:
- Line 108: Update the sentence that currently reads "there are no Read Methods
defined" to reflect that the contract exposes a read/view method; mention the
get_resolution_data() `@gl.public.view` method by name and briefly describe its
purpose (e.g., returns resolution data), so the README/example now correctly
shows that Read Methods includes get_resolution_data().

---

Nitpick comments:
In `@pages/developers/intelligent-contracts/examples/fetch-github-profile.mdx`:
- Line 45: Replace the phrase "same exact content" with "same content" in the
deterministic execution sentence that references gl.eq_principle.strict_eq() so
the line reads that the function "ensures that all nodes in the network arrive
at the same content"; update the text surrounding gl.eq_principle.strict_eq()
accordingly to reflect this wording change.

In `@pages/developers/intelligent-contracts/examples/fetch-web-content.mdx`:
- Line 44: Update the phrasing in the deterministic execution sentence: replace
"same exact content" with "same content" in the line referencing
gl.eq_principle.strict_eq() so it reads that the function "ensures that all
nodes in the network arrive at the same content."

In `@pages/developers/intelligent-contracts/examples/llm-hello-world.mdx`:
- Line 47: The phrase "same exact result" is redundant; update the sentence
mentioning gl.eq_principle.strict_eq() to use cleaner wording such as "same
result" (e.g., change "same exact result" to "same result" or "exact same
result") so the line reads: "gl.eq_principle.strict_eq() ensures that all nodes
in the network arrive at the same result." Reference:
gl.eq_principle.strict_eq().

In `@pages/developers/intelligent-contracts/examples/wizard-of-coin.mdx`:
- Line 49: Remove the debug print call that exposes prompt/response content:
delete the standalone print(result) in the contract example logic and, if you
need to indicate success or provide non-sensitive feedback, replace it with a
minimal, non-sensitive log or a comment (e.g., use an informational logger
method like processLogger.info or simply omit output). Ensure the change targets
the exact print(result) statement present in the example so no prompt/response
content is written to logs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 63bb62bc-dfc9-4805-b1f4-bde317e633a8

📥 Commits

Reviewing files that changed from the base of the PR and between 2985d8b and 8e4acf8.

📒 Files selected for processing (16)
  • pages/api-references/genlayer-py.mdx
  • pages/api-references/genlayer-test.mdx
  • pages/developers/decentralized-applications/dapp-development-workflow.mdx
  • pages/developers/decentralized-applications/genlayer-js.mdx
  • pages/developers/intelligent-contracts/examples/fetch-github-profile.mdx
  • pages/developers/intelligent-contracts/examples/fetch-web-content.mdx
  • pages/developers/intelligent-contracts/examples/github-profile-projects.mdx
  • pages/developers/intelligent-contracts/examples/github-profile-summary.mdx
  • pages/developers/intelligent-contracts/examples/llm-hello-world-non-comparative.mdx
  • pages/developers/intelligent-contracts/examples/llm-hello-world.mdx
  • pages/developers/intelligent-contracts/examples/prediction.mdx
  • pages/developers/intelligent-contracts/examples/user-storage.mdx
  • pages/developers/intelligent-contracts/examples/wizard-of-coin.mdx
  • pages/developers/intelligent-contracts/features/special-methods.mdx
  • pages/developers/intelligent-contracts/features/vector-storage.mdx
  • pages/validators/setup-guide.mdx

Comment on lines +63 to +79
```python
# Change sender
direct_vm.sender = alice

# Prank (temporary sender change)
with direct_vm.prank(bob):
contract.method() # Called as bob

# Snapshots (captures full state: storage, mocks, sender, validators)
snap_id = direct_vm.snapshot()
contract.modify_state()
direct_vm.revert(snap_id) # Full state restored

# Expect revert
with direct_vm.expect_revert("Insufficient balance"):
contract.transfer(bob, 1000000)

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, let's check the file exists and see its structure
wc -l pages/api-references/genlayer-test.mdx

Repository: genlayerlabs/genlayer-docs

Length of output: 112


🏁 Script executed:

# Check the specific lines mentioned (63-79) and surrounding context
sed -n '55,85p' pages/api-references/genlayer-test.mdx

Repository: genlayerlabs/genlayer-docs

Length of output: 1049


🏁 Script executed:

# Search for fixture definitions in the file
rg -n "direct_alice|direct_bob|fixtures|alice|bob" pages/api-references/genlayer-test.mdx | head -40

Repository: genlayerlabs/genlayer-docs

Length of output: 495


Cheatcodes example uses undefined fixture names.

Lines 65, 68, and 78 use alice and bob, but the documented fixtures are direct_alice and direct_bob. The code snippet needs to use the correct fixture names to be runnable.

Required fix
 # Change sender
-direct_vm.sender = alice
+direct_vm.sender = direct_alice

 # Prank (temporary sender change)
-with direct_vm.prank(bob):
-    contract.method()  # Called as bob
+with direct_vm.prank(direct_bob):
+    contract.method()  # Called as direct_bob

 # Snapshots (captures full state: storage, mocks, sender, validators)
 snap_id = direct_vm.snapshot()
 contract.modify_state()
 direct_vm.revert(snap_id)  # Full state restored

 # Expect revert
 with direct_vm.expect_revert("Insufficient balance"):
-    contract.transfer(bob, 1000000)
+    contract.transfer(direct_bob, 1000000)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/api-references/genlayer-test.mdx` around lines 63 - 79, The snippet
uses undefined fixtures alice and bob; update all occurrences to the documented
fixtures direct_alice and direct_bob so the examples using direct_vm.sender,
direct_vm.prank, and direct_vm.expect_revert work; specifically replace alice ->
direct_alice and bob -> direct_bob in the lines that set direct_vm.sender, the
with direct_vm.prank(...) block, and the contract.transfer call as well as any
comments referencing those fixture names.

```

You can check out this code on our [GitHub](https://github.com/genlayerlabs/genlayer-studio/blob/main/examples/contracts/football_prediction_market.py)
You can check out this code on our [GitHub](https://github.com/genlayerlabs/genlayer-testing-suite/blob/main/tests/examples/contracts/football_prediction_market.py)
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify GitHub link accessibility
curl -s -I "https://github.com/genlayerlabs/genlayer-testing-suite/blob/main/tests/examples/contracts/football_prediction_market.py" | head -1

Repository: genlayerlabs/genlayer-docs

Length of output: 81


🌐 Web query:

genlayerlabs genlayer-testing-suite GitHub repository football_prediction_market.py

💡 Result:

  • In genlayerlabs/genlayer-testing-suite, there is no football_prediction_market.py (GitHub code search returns 0 files). [1]
  • The football example contract lives in genlayerlabs/genlayer-project-boilerplate, under contracts/—and in the current repo it is named football_bets.py (not football_prediction_market.py). [2][3]
  • GenLayer docs still reference contracts/football_prediction_market.py in the boilerplate’s project structure, which appears to be an outdated filename. [4]

Sources:
[1] (github.com)
[2] (github.com)
[3] (github.com)
[4] (docs.genlayer.com)

Citations:


Update GitHub link: file does not exist at referenced location.

The referenced file football_prediction_market.py does not exist in the genlayerlabs/genlayer-testing-suite repository. The file actually resides in genlayerlabs/genlayer-project-boilerplate/contracts/ and is named football_bets.py. Correct the link to point to the valid file location.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/prediction.mdx` at line 92,
Update the GitHub link in the line referencing "football_prediction_market.py":
change the repository segment to point to genlayer-project-boilerplate and
update the filename to football_bets.py so the URL targets the actual file
location (replace the reference to football_prediction_market.py in the existing
markdown link with football_bets.py in the genlayer-project-boilerplate repo).

Comment on lines +52 to +57
result = gl.eq_principle.prompt_comparative(
get_wizard_answer, "The value of give_coin has to match"
)
parsed_result = json.loads(result)
assert isinstance(parsed_result["give_coin"], bool)
self.have_coin = not parsed_result["give_coin"]
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Harden JSON parsing and field validation before state mutation.

This block assumes valid JSON and a present give_coin key. Invalid model output will raise and fail the transaction path without a controlled error.

Suggested fix
-        result = gl.eq_principle.prompt_comparative(
+        result = gl.eq_principle.prompt_comparative(
             get_wizard_answer, "The value of give_coin has to match"
         )
-        parsed_result = json.loads(result)
-        assert isinstance(parsed_result["give_coin"], bool)
-        self.have_coin = not parsed_result["give_coin"]
+        try:
+            parsed_result = json.loads(result)
+        except json.JSONDecodeError as exc:
+            raise ValueError("Model response must be valid JSON") from exc
+
+        give_coin = parsed_result.get("give_coin")
+        if not isinstance(give_coin, bool):
+            raise ValueError("Model response must include boolean `give_coin`")
+
+        self.have_coin = not give_coin
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
result = gl.eq_principle.prompt_comparative(
get_wizard_answer, "The value of give_coin has to match"
)
parsed_result = json.loads(result)
assert isinstance(parsed_result["give_coin"], bool)
self.have_coin = not parsed_result["give_coin"]
result = gl.eq_principle.prompt_comparative(
get_wizard_answer, "The value of give_coin has to match"
)
try:
parsed_result = json.loads(result)
except json.JSONDecodeError as exc:
raise ValueError("Model response must be valid JSON") from exc
give_coin = parsed_result.get("give_coin")
if not isinstance(give_coin, bool):
raise ValueError("Model response must include boolean `give_coin`")
self.have_coin = not give_coin
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/examples/wizard-of-coin.mdx` around
lines 52 - 57, The code assumes gl.eq_principle.prompt_comparative returns valid
JSON with a boolean "give_coin" and directly mutates self.have_coin; wrap the
json.loads call and subsequent access in a try/except to catch
json.JSONDecodeError, TypeError and KeyError, verify parsed_result is a dict and
that "give_coin" exists and is a bool (use
isinstance(parsed_result["give_coin"], bool)), and only then set self.have_coin
= not parsed_result["give_coin"]; on invalid output raise or return a controlled
error/validation failure (or log and use a safe default) so state mutation
happens only after successful validation (referencing
gl.eq_principle.prompt_comparative, get_wizard_answer, parsed_result, and
self.have_coin).

Comment on lines +23 to 27
The `VecDB` type is available through the `genlayer` package. Import it with `from genlayer import *` along with other GenLayer types.

#### Creating a Contract with Vector Store
Here’s an example of a contract using the Vector Store for indexing and searching text logs:
Here’s an example of a contract using `VecDB` for indexing and searching text logs:

Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cat -n pages/developers/intelligent-contracts/features/vector-storage.mdx | head -100

Repository: genlayerlabs/genlayer-docs

Length of output: 4641


Example code uses typing.Literal without importing typing.

Lines 50 and 60 reference typing.Literal[384] in type annotations, but the code block does not import the typing module. This breaks copy-paste execution.

Suggested fix
 from genlayer import *
+import typing
 import genlayermodelwrappers
 import numpy as np
 from dataclasses import dataclass
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/developers/intelligent-contracts/features/vector-storage.mdx` around
lines 23 - 27, The example uses typing.Literal in type annotations (e.g.,
typing.Literal[384]) but never imports typing; fix by adding an import for the
Literal type (either add "from typing import Literal" and replace occurrences of
typing.Literal[...] with Literal[...], or add "import typing" at the top so
typing.Literal[...] resolves) and ensure all annotations referencing
typing.Literal are updated to match the chosen import style (references:
typing.Literal occurrences in the sample contract code).

@acastellana acastellana closed this Mar 6, 2026
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.

1 participant