Conversation
…whisper sources." This reverts commit 1468ad8.
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughRefactors HDK link queries from GetLinksInputBuilder to LinkQuery with explicit GetStrategy::Network, bumps Holochain/Rust dependencies and adds wasm RUSTFLAGS for getrandom_backend="custom", updates DNA manifests (manifest_version 1→0; Changes
Sequence Diagram(s)sequenceDiagram
participant Zome as Zome code
participant Old as GetLinksInputBuilder
participant New as LinkQuery
participant HDK as HDK runtime
rect rgb(245,245,255)
Note over Zome,Old: Legacy builder flow
Zome->>Old: build GetLinksInput (try_new → .tag_prefix → .get_options → .build)
Old->>HDK: get_links(input)
HDK-->>Old: Vec<Link>
end
rect rgb(240,255,240)
Note over Zome,New: New query flow
Zome->>New: LinkQuery::try_new(...)? .tag_prefix(...)
New->>HDK: get_links(query, GetStrategy::Network)
HDK-->>New: Vec<Link>
end
sequenceDiagram
participant App as Application
participant LangCtrl as LanguageController
participant HoloSvc as HolochainService
rect rgb(255,248,235)
Note over App,LangCtrl: Old DNA resolution
App->>LangCtrl: Load DNA
LangCtrl->>LangCtrl: read hapYaml.roles[0].dna.bundled
LangCtrl->>HoloSvc: unpack & validate wasm dir
end
rect rgb(235,255,248)
Note over App,LangCtrl: New DNA resolution
App->>LangCtrl: Load DNA
LangCtrl->>LangCtrl: read hapYaml.roles[0].dna.path
LangCtrl->>HoloSvc: expand_bundle(path)
HoloSvc-->>LangCtrl: Path result
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas to focus review on:
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🧰 Additional context used🧠 Learnings (1)📓 Common learnings⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (3)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (1)
executor/src/core/LanguageController.ts (1)
643-643: Migration to new YAML format looks correct.The change from
happYaml.roles[0].dna.bundledtohappYaml.roles[0].dna.pathproperly reflects the mr_bundle YAML format update in Holochain 0.6.0-rc.0.Consider adding defensive validation to guard against unexpected YAML structure:
let happYaml = yaml.load(fs.readFileSync(happYamlPath, 'utf8')); //console.log("happ.yaml", happYaml) //@ts-ignore +if (!happYaml.roles || !happYaml.roles[0] || !happYaml.roles[0].dna || !happYaml.roles[0].dna.path) { + throw new Error("Invalid happ.yaml structure: expected roles[0].dna.path"); +} let dnaBundlePath = path.join(unpackHappPath, happYaml.roles[0].dna.path)This would provide clearer error messages if the YAML format is malformed, though the standardized format in 0.6.0-rc.0 may make this less critical.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (11)
Cargo.lockis excluded by!**/*.lockbootstrap-languages/agent-language/hc-dna/Cargo.lockis excluded by!**/*.lockbootstrap-languages/direct-message-language/hc-dna/Cargo.lockis excluded by!**/*.lockbootstrap-languages/file-storage/hc-dna/Cargo.lockis excluded by!**/*.lockbootstrap-languages/p-diff-sync-socket-signaling/hc-dna/Cargo.lockis excluded by!**/*.lockbootstrap-languages/p-diff-sync/hc-dna/Cargo.lockis excluded by!**/*.lockdeno.lockis excluded by!**/*.lockpnpm-lock.yamlis excluded by!**/pnpm-lock.yamlui/src-tauri/gen/schemas/acl-manifests.jsonis excluded by!**/gen/**ui/src-tauri/gen/schemas/desktop-schema.jsonis excluded by!**/gen/**ui/src-tauri/gen/schemas/linux-schema.jsonis excluded by!**/gen/**
📒 Files selected for processing (90)
bootstrap-languages/agent-language/hc-dna/build.sh(1 hunks)bootstrap-languages/agent-language/hc-dna/workdir/dna.yaml(1 hunks)bootstrap-languages/agent-language/hc-dna/workdir/happ.yaml(2 hunks)bootstrap-languages/agent-language/hc-dna/zomes/agent_store/Cargo.toml(1 hunks)bootstrap-languages/agent-language/hc-dna/zomes/agent_store/src/utils.rs(1 hunks)bootstrap-languages/agent-language/hc-dna/zomes/agent_store_integrity/Cargo.toml(1 hunks)bootstrap-languages/direct-message-language/hc-dna/build.sh(1 hunks)bootstrap-languages/direct-message-language/hc-dna/workdir/dna.yaml(1 hunks)bootstrap-languages/direct-message-language/hc-dna/workdir/happ.yaml(2 hunks)bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message-integrity/Cargo.toml(1 hunks)bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message/Cargo.toml(1 hunks)bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message/src/lib.rs(3 hunks)bootstrap-languages/file-storage/hc-dna/build.sh(1 hunks)bootstrap-languages/file-storage/hc-dna/workdir/dna.yaml(1 hunks)bootstrap-languages/file-storage/hc-dna/zomes/file_storage/Cargo.toml(1 hunks)bootstrap-languages/file-storage/hc-dna/zomes/integrity/Cargo.toml(1 hunks)bootstrap-languages/p-diff-sync-socket-signaling/.gitignore(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/README.md(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/customHttpDownloader.js(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/dna.js(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/esbuild.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/Cargo.toml(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/build.ps1(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/build.sh(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/default.nix(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/holochain_version.nix(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/nix/sources.json(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/nix/sources.nix(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/workdir/dna.yaml(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/Cargo.toml(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/errors.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/inputs.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/lib.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/chunked_diffs.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/commit.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/mod.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/pull.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/render.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/revisions.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/snapshots.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/test_graphs.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/tests.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/topo_sort.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/workspace.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/retriever.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/retriever/holochain.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/retriever/mock.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/telepresence/mod.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/telepresence/signal.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/telepresence/status.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/utils.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync_integrity/Cargo.toml(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync_integrity/src/impls.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync_integrity/src/lib.rs(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/common.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/download-hc-binaries.sh(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/index.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/package.json(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/pull.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/queue.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/render.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/revisions.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/signals.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/stress.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/telepresence.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/tsconfig.json(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/utils.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/index.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/integration-test.js(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/linksAdapter.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/package.json(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/rollup.config.hc-dna.js(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/telepresenceAdapter.ts(0 hunks)bootstrap-languages/p-diff-sync-socket-signaling/tsconfig.json(0 hunks)bootstrap-languages/p-diff-sync/hc-dna/build.sh(1 hunks)bootstrap-languages/p-diff-sync/hc-dna/workdir/dna.yaml(2 hunks)bootstrap-languages/p-diff-sync/hc-dna/workdir/happ.yaml(2 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/Cargo.toml(1 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/lib.rs(1 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/link_adapter/snapshots.rs(1 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/link_adapter/workspace.rs(1 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/retriever/holochain.rs(2 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/telepresence/status.rs(4 hunks)bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync_integrity/Cargo.toml(1 hunks)cli/mainnet_seed.json(1 hunks)executor/src/core/LanguageController.ts(1 hunks)rust-executor/Cargo.toml(1 hunks)rust-executor/src/holochain_service/mod.rs(4 hunks)rust-executor/src/mainnet_seed.json(1 hunks)rust-executor/src/perspectives/sdna.rs(2 hunks)
💤 Files with no reviewable changes (58)
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/build.sh
- bootstrap-languages/p-diff-sync-socket-signaling/dna.js
- bootstrap-languages/p-diff-sync-socket-signaling/rollup.config.hc-dna.js
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/snapshots.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/render.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/index.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/holochain_version.nix
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/pull.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/inputs.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/default.nix
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/nix/sources.json
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/telepresence.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/revisions.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/chunked_diffs.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/build.ps1
- bootstrap-languages/p-diff-sync-socket-signaling/telepresenceAdapter.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/pull.ts
- bootstrap-languages/p-diff-sync-socket-signaling/.gitignore
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/tsconfig.json
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/package.json
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/mod.rs
- bootstrap-languages/p-diff-sync-socket-signaling/integration-test.js
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/topo_sort.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/test_graphs.rs
- bootstrap-languages/p-diff-sync-socket-signaling/tsconfig.json
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/commit.rs
- bootstrap-languages/p-diff-sync-socket-signaling/esbuild.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/download-hc-binaries.sh
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/workdir/dna.yaml
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/common.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/render.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/queue.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync_integrity/src/lib.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/utils.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/revisions.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/Cargo.toml
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync_integrity/src/impls.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/tests.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/lib.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/retriever/mock.rs
- bootstrap-languages/p-diff-sync-socket-signaling/linksAdapter.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/retriever/holochain.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync_integrity/Cargo.toml
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/telepresence/signal.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/Cargo.toml
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/retriever.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/errors.rs
- bootstrap-languages/p-diff-sync-socket-signaling/index.ts
- bootstrap-languages/p-diff-sync-socket-signaling/customHttpDownloader.js
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/signals.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/telepresence/mod.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/utils.ts
- bootstrap-languages/p-diff-sync-socket-signaling/README.md
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/tests/stress.ts
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/nix/sources.nix
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/link_adapter/workspace.rs
- bootstrap-languages/p-diff-sync-socket-signaling/hc-dna/zomes/perspective_diff_sync/src/telepresence/status.rs
- bootstrap-languages/p-diff-sync-socket-signaling/package.json
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-06-04T11:13:54.337Z
Learnt from: lucksus
Repo: coasys/ad4m PR: 605
File: bootstrap-languages/p-diff-sync/happ.js:1-5
Timestamp: 2025-06-04T11:13:54.337Z
Learning: In Holochain projects, .happ (Holochain app bundle) files are build-time artifacts generated by running "hc app pack workdir" in build scripts, not committed to the repository. The build process creates these files which are then imported by modules like happ.js.
Applied to files:
bootstrap-languages/agent-language/hc-dna/workdir/happ.yamlexecutor/src/core/LanguageController.tsbootstrap-languages/direct-message-language/hc-dna/zomes/direct-message-integrity/Cargo.tomlbootstrap-languages/agent-language/hc-dna/zomes/agent_store_integrity/Cargo.tomlrust-executor/src/holochain_service/mod.rsbootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync_integrity/Cargo.tomlbootstrap-languages/file-storage/hc-dna/zomes/file_storage/Cargo.toml
📚 Learning: 2025-06-05T11:39:48.641Z
Learnt from: lucksus
Repo: coasys/ad4m PR: 605
File: rust-executor/src/js_core/options.rs:59-68
Timestamp: 2025-06-05T11:39:48.641Z
Learning: In the rust-executor project, CUSTOM_DENO_SNAPSHOT.bin is a build-time generated artifact created by the generate_snapshot binary (with --features generate_snapshot). The file is not checked into source control but is created during the build process via pnpm build-deno-snapshot script and then included in subsequent builds via include_bytes! macro.
Applied to files:
bootstrap-languages/file-storage/hc-dna/build.shbootstrap-languages/agent-language/hc-dna/build.shbootstrap-languages/direct-message-language/hc-dna/build.shbootstrap-languages/p-diff-sync/hc-dna/build.sh
📚 Learning: 2025-09-15T17:50:36.722Z
Learnt from: lucksus
Repo: coasys/ad4m PR: 626
File: rust-executor/src/holochain_service/mod.rs:128-133
Timestamp: 2025-09-15T17:50:36.722Z
Learning: In the Holochain service signal processing loop in rust-executor/src/holochain_service/mod.rs, the tokio::select! loop with an unconditional sleep arm is intentionally designed to never reach the `else => break` branch. This keeps the loop alive indefinitely to handle streams from apps that may be installed later during the service lifetime, via the new_app_ids_receiver channel.
Applied to files:
rust-executor/src/holochain_service/mod.rs
🧬 Code graph analysis (7)
bootstrap-languages/agent-language/hc-dna/zomes/agent_store/src/utils.rs (1)
test-runner/example/languages/social-context.js (1)
LinkQuery(4016-4054)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/retriever/holochain.rs (1)
test-runner/example/languages/social-context.js (1)
LinkQuery(4016-4054)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/lib.rs (1)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/link_adapter/workspace.rs (2)
new(45-52)new(101-113)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/telepresence/status.rs (1)
test-runner/example/languages/social-context.js (1)
LinkQuery(4016-4054)
bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message/src/lib.rs (1)
test-runner/example/languages/social-context.js (1)
LinkQuery(4016-4054)
rust-executor/src/holochain_service/mod.rs (2)
rust-executor/src/holochain_service/interface.rs (2)
unpack_happ(229-237)unpack_dna(209-217)rust-executor/src/holochain_service/holochain_service_extension.rs (2)
unpack_happ(202-210)unpack_dna(178-186)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/link_adapter/workspace.rs (1)
test-runner/example/languages/social-context.js (1)
LinkQuery(4016-4054)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Cursor Bugbot
🔇 Additional comments (42)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync_integrity/Cargo.toml (1)
16-19: Holochain dependency updates align with PR objectives.All dependency versions have been correctly bumped to match the 0.6.0-rc.0 Holochain release cycle: hdi→0.7.0-rc.0, hdk→0.6.0-rc.0, holo_hash→0.6.0-rc.0, and holochain_serialized_bytes→=0.0.56 from registry. The branch references have been updated to 0.6.0-rc.0-coasys, and switching holochain_serialized_bytes to registry-based resolution improves reproducibility.
Verify that holochain_serialized_bytes version "=0.0.56" (from registry) is compatible with the RC versions of hdk/hdi, and that RC stability is acceptable for your project's deployment requirements.
rust-executor/src/mainnet_seed.json (1)
7-7: Verify IPFS content hashes correspond to updated bootstrap languages for Holochain 0.6.0-rc.0.The updated hashes appear to be properly formatted IPFS v0 CIDs and align with the PR's goal of updating bootstrap language components for Holochain 0.6.0-rc.0 compatibility. However, ensure these specific hash values are correct and have been published to the network.
Please confirm:
- These IPFS hashes are accessible and contain the expected bootstrap language bytecode for Holochain 0.6.0-rc.0
- Any downstream systems or peer nodes using this seed file will correctly fetch and load these language components
- The replaced hashes (old knownLinkLanguages and directMessageLanguage) are no longer needed and have been retired from the active network
Also applies to: 9-9
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/lib.rs (1)
27-32: LGTM! Correct API migration to HashSet.The switch from
BTreeSettoHashSetcorrectly adapts to the Holochain 0.6.0-rc.0 API change forGrantedFunctions::Listed. Since capability grants don't require ordering,HashSetis both semantically appropriate and more performant for this use case.bootstrap-languages/p-diff-sync/hc-dna/workdir/dna.yaml (1)
14-14: Bundled → path field migration looks correct.The transition from
bundledtopathkeys aligns with the Holochain 0.6.0 mr_bundle format changes noted in the PR objectives. The YAML paths reference the expected wasm32-unknown-unknown release build artifacts and are consistent with similar changes across other bootstrap languages in this PR.Also applies to: 18-18
bootstrap-languages/file-storage/hc-dna/workdir/dna.yaml (1)
1-1: Manifest format updates correctly aligned with Holochain 0.6.0-rc.0 spec.The manifest_version downgrade (1→0) and bundled→path transitions are consistent with the mr_bundle YAML format changes documented in the PR objectives. WASM artifact paths are preserved correctly.
Also applies to: 8-8, 12-12
bootstrap-languages/direct-message-language/hc-dna/workdir/happ.yaml (1)
1-1: Consistent manifest format alignment across happ bundles.Same well-executed manifest_version and bundled→path updates as other bootstrap language manifests. DNA reference path preserved correctly.
Also applies to: 10-10
bootstrap-languages/p-diff-sync/hc-dna/workdir/happ.yaml (1)
1-1: Consistent manifest format alignment.Manifest updates (version 1→0, bundled→path) consistent with other bootstrap language bundles. DNA path ./perspective-diff-sync.dna preserved.
Also applies to: 10-10
bootstrap-languages/file-storage/hc-dna/build.sh (1)
2-2: Custom getrandom backend RUSTFLAGS correctly injected for WASM compilation.The RUSTFLAGS configuration enables the custom getrandom backend required for WASM32 builds, aligning with the getrandom dependency strategy documented in the PR objectives. Environment variable approach is appropriate and preserves downstream packing steps.
bootstrap-languages/agent-language/hc-dna/zomes/agent_store/Cargo.toml (1)
16-16: Dependency upgrades and WASM configuration correctly coordinated.All changes align with Holochain 0.6.0-rc.0 migration strategy:
- getrandom 0.3 and custom backend rustflags are consistent with the custom getrandom backend requirements
- hdk/holo_hash versions and branch references match the PR's Holochain fork
- holochain_serialized_bytes pinned to =0.0.56 ensures reproducible builds
- Path dependency to agent_store_integrity enables proper workspace coordination
- Target-specific rustflags provides build-time redundancy with build.sh configuration
Also applies to: 18-18, 19-19, 20-20, 21-21, 23-24
bootstrap-languages/p-diff-sync/hc-dna/build.sh (1)
2-2: Custom getrandom backend RUSTFLAGS consistently applied.Same pattern as file-storage build.sh. RUSTFLAGS correctly enable custom getrandom backend for wasm32 target. Downstream app and DNA packing steps remain unchanged and preserve build flow.
bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message-integrity/Cargo.toml (1)
16-16: Integrity zome dependencies correctly aligned with Holochain 0.6.0-rc.0 release.HDI upgrade to 0.7.0-rc.0, holo_hash addition, and holochain_serialized_bytes pinning all align with PR objectives. Branch references consistently target the Holochain fork (0.6.0-rc.0-coasys).
Also applies to: 17-17, 18-18
bootstrap-languages/agent-language/hc-dna/zomes/agent_store_integrity/Cargo.toml (1)
16-16: Integrity zome dependencies comprehensively upgraded for Holochain 0.6.0-rc.0 compatibility.Both HDI and HDK present and upgraded correctly (0.7.0-rc.0 and 0.6.0-rc.0 respectively), along with holo_hash and pinned holochain_serialized_bytes (=0.0.56). Branch references consistently target 0.6.0-rc.0-coasys fork. Changes align across all zome manifests in the PR.
Also applies to: 17-17, 18-18, 19-19
bootstrap-languages/file-storage/hc-dna/zomes/file_storage/Cargo.toml (1)
20-27: Holochain dependency upgrade correctly configured.The Cargo.toml updates align with the Holochain 0.6.0-rc.0 upgrade plan. The exact version pinning for
holochain_serialized_bytes = "=0.0.56"is appropriate for RC stability, and the target-specific rustflags for WASM getrandom backend are properly configured.One minor note:
getrandom = { version = "0.3" }allows patch updates within 0.3.x. Verify this flexibility is intentional and won't cause compatibility issues if other dependencies constrain getrandom differently.bootstrap-languages/agent-language/hc-dna/workdir/happ.yaml (1)
1-10: YAML manifest format updated per Holochain 0.6.0-rc.0 spec.The manifest_version downgrade from '1' to '0' and the bundled → path field change are breaking format changes in Holochain 0.6.0-rc.0. The DNA reference path remains correct.
Confirm that manifest_version '0' is the correct value per the official Holochain 0.6.0-rc.0 spec (the downgrade is unusual and worth double-checking).
[scratchpad_end] -->
bootstrap-languages/agent-language/hc-dna/workdir/dna.yaml (1)
2-14: Manifest format updated for Holochain 0.6.0-rc.0 schema.The manifest_version change and bundled → path field updates align with the new format. WASM paths are correctly preserved, pointing to standard wasm32-unknown-unknown release output locations.
Verify that the build process consistently outputs WASM binaries to
../target/wasm32-unknown-unknown/release/for bothagent_store_integrity.wasmandagent_store.wasm.[scratchpad_end] -->
bootstrap-languages/agent-language/hc-dna/build.sh (1)
2-2: RUSTFLAGS correctly configured for custom getrandom backend.The injection of
RUSTFLAGS='--cfg getrandom_backend="custom"'is the correct approach for enabling the custom getrandom backend during WASM compilation, and the shell quoting is sound.bootstrap-languages/direct-message-language/hc-dna/build.sh (1)
2-2: Consistent RUSTFLAGS configuration with agent-language.The getrandom backend RUSTFLAGS are correctly applied, matching the pattern used in other bootstrap language build scripts.
bootstrap-languages/direct-message-language/hc-dna/workdir/dna.yaml (1)
2-14: Manifest schema updated consistently with other DNAs.The manifest_version and bundled → path changes are applied uniformly. Zome dependencies and paths are correctly preserved.
bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message/Cargo.toml (1)
17-26: Holochain dependencies upgraded consistently with coordinated PR changes.The dependency updates (getrandom, hdk, holochain_serialized_bytes, holo_hash) and target-specific rustflags match the pattern applied across other bootstrap language zomes. The internal path dependency to
direct-message-integrityremains stable.bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/telepresence/status.rs (4)
68-69: LGTM! Correct API migration to LinkQuery pattern.The migration from GetLinksInputBuilder to
LinkQuery::try_newwithGetStrategy::Networkis correct for Holochain 0.6.0-rc.0. Error handling is proper, and the network strategy is appropriate for DHT-based DID link queries.
93-98: LGTM! Consistent API migration.The LinkQuery migration is correctly applied with proper error propagation. The multi-line formatting maintains readability while following the new Holochain API pattern.
125-129: LGTM! API migration correctly applied.The LinkQuery pattern is properly implemented for DID-to-agent key lookup, maintaining consistent error handling and network strategy across the module.
140-144: LGTM! Final API migration complete.The LinkQuery pattern is correctly applied for agent-to-DID key lookup. All
get_linkscalls in this file have been successfully migrated to the Holochain 0.6.0-rc.0 API.bootstrap-languages/direct-message-language/hc-dna/zomes/direct-message/src/lib.rs (4)
13-13: API migration correctly applied.The change from
BTreeSettoHashSetaligns with the Holochain 0.6.0-rc.0 API requirements forGrantedFunctions::Listed. Since capability grants don't depend on iteration order, this change is functionally equivalent.
212-216: LinkQuery migration is correct.The migration from
GetLinksInputBuildertoLinkQuery::try_new()with chained.tag_prefix()properly maintains error handling and matches the new Holochain 0.6.0-rc.0 API pattern.
218-218: get_links call correctly updated.The explicit
GetStrategy::Networkparameter correctly reflects the new API requirements and maintains the network-wide link retrieval behavior for inbox fetching.
231-231: delete_link call correctly updated.The addition of
GetOptions::network()parameter aligns with the new API requirements and maintains the network-wide link deletion behavior.cli/mainnet_seed.json (2)
1-14: Valid JSON structure with consistent formatting.The file maintains valid JSON syntax and hash reference format consistent across all language entries. The configuration structure is appropriate for a seed/bootstrap file.
7-7: Hash updates are consistent across mainnet seed files, but require external verification for IPFS validity and HDK compilation.The updated hashes are properly synchronized:
- Both
cli/mainnet_seed.jsonandrust-executor/src/mainnet_seed.jsoncontain identical hashes at lines 7 and 9- No stale references to old hash values remain
- No conflicting bootstrap configurations in mainnet seeds
However, note that
tests/js/bootstrapSeed.jsoncontains different hashes (QmzSYwdo1HbQir61HG7xM1nBAuue5cAjTd7rKbP4d14bk1NgjKZandQmzSYwdhFZ7wqrX7H2Ep7ZejpHUjZBDNibhACv5w93VKEauWcv9). Verify whether this test seed should also be updated to match mainnet.Cannot verify offline:
- IPFS hash resolvability (requires network access)
- Whether hashes reference code actually compiled with HDK 0.6.0-rc.0 (requires build artifact inspection or source verification)
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/link_adapter/snapshots.rs (1)
44-49: LGTM: Correct migration to LinkQuery API.The migration from GetLinksInputBuilder to LinkQuery is implemented correctly, preserving the same tag prefix filtering and network retrieval strategy.
bootstrap-languages/agent-language/hc-dna/zomes/agent_store/src/utils.rs (1)
15-15: LGTM: Correct usage of new get_links API.The migration to the new
get_links(query, GetStrategy::Network)API is correct.bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/link_adapter/workspace.rs (1)
666-671: LGTM: Correct migration to LinkQuery API.The migration correctly preserves the snapshot tag prefix filtering and network retrieval strategy while adapting to the new LinkQuery-based API.
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/retriever/holochain.rs (2)
103-107: LGTM: Correct migration to LinkQuery API.The migration from GetLinksInputBuilder to LinkQuery is implemented correctly, maintaining the same retrieval behavior for latest revision links.
170-175: LGTM: Correct migration to LinkQuery API.The migration correctly preserves the active_agent tag prefix filtering and network retrieval strategy while adapting to the new LinkQuery-based API.
bootstrap-languages/file-storage/hc-dna/zomes/integrity/Cargo.toml (3)
18-21: Holochain dependency versions are RC pre-releases.Lines 18–21 update holochain-related crates (hdi, hdk, holo_hash) to 0.6.0-rc.0 and 0.7.0-rc.0 RC versions from the coasys fork. While intentional per the PR objectives, confirm this upgrade path has been validated and that RC stability is acceptable for your release cycle.
16-16: Getrandom 0.3 compatibility verified. Getrandom v0.3 supports a custom backend for wasm32 (and all targets), and the configuration at lines 16 and 23–24 is compatible. No changes needed.
16-21: holochain_serialized_bytes 0.0.56 is available on crates.io; dependency changes are verified.Line 20: getrandom 0.3 supports custom backend configuration for wasm32 targets, and the version of holochain_serialized_bytes specified has been confirmed as published. The dependency rationalization and upgrade path are sound.
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/Cargo.toml (4)
24-26: Getrandom migration to 0.3 with js-sys looks good.The migration from getrandom 0.2 (with js features) to 0.3 (relying on js-sys 0.3.82 for WASM bindings) aligns well with the PR's getrandom backend customization strategy. The addition of js-sys is the correct approach for handling JS bindings in newer getrandom versions.
30-30: Pinned holochain_serialized_bytes version is appropriate.The explicit pinning of
holochain_serialized_bytes = "=0.0.56"is correctly preserved and matches the PR requirement for compatibility across the Holochain ecosystem dependencies.
35-36: No issues found. Rustflags configuration is syntactically correct and properly integrated.The verification confirms the
[target.wasm32-unknown-unknown]section withgetrandom_backend="custom"is correctly formatted and consistently used across the codebase. The cfg is properly defined in the build pipeline—build scripts explicitly pass this flag via RUSTFLAGS during compilation for wasm32-unknown-unknown targets.
19-19: I need to search for the specific changelog information on crates.io for the graphviz-rust crate:Let me search for the GitHub repository and release notes:
Let me search more specifically for the besok/graphviz-rust release history:
Let me search for the CHANGELOG directly:
Verify graphviz-rust 0.9.6 compatibility before merging.
The upgrade from 0.2.1 to 0.9.6 represents a significant major version jump. While the library appears actively maintained and recent web searches don't reveal documented breaking changes, a comprehensive changelog or release notes for the intervening versions is not readily available online. Verify that the current crate's usage of graphviz-rust APIs (particularly
exec(),parse(),PrinterContext, and attribute structures) remains compatible with 0.9.6 by:
- Checking the repository's release notes or CHANGELOG for versions 0.3 through 0.9
- Running tests on the perspective_diff_sync zome after the upgrade
- Confirming no API signature changes in key exported functions
rust-executor/Cargo.toml (1)
98-101: Ensure Go toolchain is available for go-pion backend.Enabling the
backend-go-pionfeature switches tx5 over to the Go-based WebRTC backend, which depends on the Go toolchain during builds. Please confirm our CI and release builders have Go installed, or reconsider sticking with the default libdatachannel backend to avoid unexpected build failures.(docs.rs)
bootstrap-languages/agent-language/hc-dna/zomes/agent_store/src/utils.rs
Outdated
Show resolved
Hide resolved
bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/Cargo.toml
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.circleci/config.yml(2 hunks)
🔇 Additional comments (1)
.circleci/config.yml (1)
26-26: Cache key updates appropriately reflect Rust version change.Updating cache keys from
-v2to-1.88correctly invalidates existing caches tied to the previous Rust version. This ensures CI builds use fresh artifacts compatible with Rust 1.88.Also applies to: 56-56
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
rust-executor/src/perspectives/sdna.rs (2)
113-195: Excellent refactoring with proper empty JSON support!The extraction of JSON parser code into a dedicated public function improves maintainability and testability. The empty object (lines 125-126) and empty array (lines 146-147) clauses are correctly placed before non-empty variants, addressing the previous critical issue. The use of cuts and list-based key-value pairs aligns well with scryer-prolog 0.10.
Consider enhancing number parsing for full JSON spec compliance.
The current number parser (lines 176-188) handles digits and decimal points but doesn't support negative numbers (e.g.,
-1,-2.5) or scientific notation (e.g.,1e10,1.5e-10). While this may be sufficient for current use cases, consider enhancing it for broader JSON compatibility:json_number(Number) --> - number_sequence(Chars), + optional_minus(MinusChars), + number_sequence(Chars), + optional_exponent(ExpChars), - { number_chars(Number, Chars) }. + { append([MinusChars, Chars, ExpChars], AllChars), number_chars(Number, AllChars) }. + +optional_minus(['-']) --> "-", !. +optional_minus([]) --> []. + +optional_exponent(['e'|Exp]) --> "e", exponent_part(Exp), !. +optional_exponent(['E'|Exp]) --> "E", exponent_part(Exp), !. +optional_exponent([]) --> []. + +exponent_part([Sign|Digits]) --> + ("+"; "-"), { Sign = '+' }, !, + number_sequence(Digits). +exponent_part(Digits) --> number_sequence(Digits).Note: This is a future enhancement suggestion and not blocking given the PR's focus on Prolog compatibility.
672-882: Excellent test coverage for JSON parsing!The comprehensive test module validates the JSON parser integration with the Prolog engine across multiple scenarios: simple DCGs, empty objects/arrays (with and without whitespace), and non-empty structures. The use of the actual
PrologEngineprovides valuable integration testing.Consider verifying actual parsed values in tests.
While the tests correctly verify that parsing succeeds, they don't assert the actual values of the parsed results (e.g., that
Dictis an empty list[]for"{}"). Enhancing assertions would catch subtle bugs in the parser logic:// Example enhancement for test_empty_json_object_parsing match result { Ok(Ok(QueryResolution::Matches(bindings))) => { // Verify that Dict is bound to empty list assert!(bindings.iter().any(|b| { b.get("Dict").map_or(false, |v| v == "[]") }), "Dict should be empty list"); println!("✅ Empty JSON object parsing succeeded"); } Ok(Ok(QueryResolution::True)) => { println!("✅ Empty JSON object parsing succeeded"); } _ => panic!("Empty JSON object parsing failed: {:?}", result), }This is optional and would require understanding the binding format from
QueryResolution::Matches.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
rust-executor/src/perspectives/sdna.rs(4 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: lucksus
Repo: coasys/ad4m PR: 630
File: bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/Cargo.toml:28-29
Timestamp: 2025-11-13T12:18:07.265Z
Learning: For Holochain 0.6.0-rc.0 (branch 0.6.0-rc.0-coasys), the correct and compatible HDI/HDK pairing is: hdi version 0.7.0-rc.0 and hdk version 0.6.0-rc.0. HDI is intentionally one minor version ahead of HDK in this release.
Learnt from: lucksus
Repo: coasys/ad4m PR: 630
File: bootstrap-languages/p-diff-sync/hc-dna/workdir/dna.yaml:2-2
Timestamp: 2025-11-13T12:17:37.333Z
Learning: For Holochain 0.6.0-rc.0, the correct manifest_version in DNA YAML files (dna.yaml) is 0, not 1. The mr_bundle library in Holochain 0.6.0-rc.0 errors when manifest_version is set to 1. The versioning appears to have been reset in this release.
🧬 Code graph analysis (1)
rust-executor/src/perspectives/sdna.rs (1)
rust-executor/src/prolog_service/engine.rs (10)
new(37-44)spawn(46-238)e(79-79)e(84-84)e(121-121)e(127-127)e(189-189)e(193-193)e(206-206)e(209-209)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Cursor Bugbot
🔇 Additional comments (2)
rust-executor/src/perspectives/sdna.rs (2)
494-494: LGTM!Clean integration of the centralized JSON parser code, eliminating duplication and improving maintainability.
509-538: Excellent fix for the type safety issue!The addition of the
is_list(Value)guard at line 535 correctly prevents type errors whenliteral_from_url/3returns scalar values (numbers/booleans). This directly addresses the previous critical issue wherephrase/2would throwtype_error(list, _)on non-list inputs.The refactoring into three explicit cases (
resolve_property_value/5) with helper predicates (resolve_property_ensure_chars/2,resolve_property_extract_json_or_value/2) significantly improves code clarity and maintainability compared to the previous implementation.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
rust-executor/src/perspectives/sdna.rs (1)
534-537: Consider explicit guard over broad exception catching.The
catch/3with a wildcard pattern successfully prevents crashes whenValueis a non-list scalar, but an explicitis_list(Value)guard would be cleaner and more performant by failing fast without invokingphrase/2.Apply this diff for a more explicit approach:
- resolve_property_extract_json_or_value(Value, Data) :- - catch(json_property(Value, "data", Data), _, fail), - !. + resolve_property_extract_json_or_value(Value, Data) :- + is_list(Value), + json_property(Value, "data", Data), + !. resolve_property_extract_json_or_value(Value, Value).
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
rust-executor/src/perspectives/sdna.rs(4 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: lucksus
Repo: coasys/ad4m PR: 630
File: bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/Cargo.toml:28-29
Timestamp: 2025-11-13T12:18:07.265Z
Learning: For Holochain 0.6.0-rc.0 (branch 0.6.0-rc.0-coasys), the correct and compatible HDI/HDK pairing is: hdi version 0.7.0-rc.0 and hdk version 0.6.0-rc.0. HDI is intentionally one minor version ahead of HDK in this release.
Learnt from: lucksus
Repo: coasys/ad4m PR: 630
File: bootstrap-languages/p-diff-sync/hc-dna/workdir/dna.yaml:2-2
Timestamp: 2025-11-13T12:17:37.333Z
Learning: For Holochain 0.6.0-rc.0, the correct manifest_version in DNA YAML files (dna.yaml) is 0, not 1. The mr_bundle library in Holochain 0.6.0-rc.0 errors when manifest_version is set to 1. The versioning appears to have been reset in this release.
🧬 Code graph analysis (1)
rust-executor/src/perspectives/sdna.rs (1)
rust-executor/src/prolog_service/engine.rs (10)
new(37-44)spawn(46-238)e(79-79)e(84-84)e(121-121)e(127-127)e(189-189)e(193-193)e(206-206)e(209-209)
🔇 Additional comments (3)
rust-executor/src/perspectives/sdna.rs (3)
113-195: LGTM! Empty JSON support properly implemented.The addition of explicit empty dict (lines 125-126) and empty array (lines 146-147) clauses addresses the previous review concern. Placing them before the non-empty variants ensures correct parsing order. The comprehensive JSON parser with deterministic DCG rules using cuts is well-structured.
509-531: Well-structured refactoring with clear separation of concerns.The helper predicates cleanly separate the three property resolution cases with explicit cuts for determinism. The atom-to-chars conversion (lines 510-514) and literal URL prefix checking (line 520) are idiomatic and correct.
671-881: Excellent test coverage for JSON parsing and DCG rules.The comprehensive test suite validates empty JSON support (both objects and arrays, with and without whitespace), non-empty JSON parsing, and basic DCG functionality. The helper function
get_json_parser_for_test()(lines 679-686) properly sets up the test environment with required libraries. Integration testing withPrologEngineprovides strong confidence in the implementation.
There was a problem hiding this comment.
This PR is being reviewed by Cursor Bugbot
Details
You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
Bug: Cache Path Mismatch: Storage Ineffective
The cache path uses file-storage-language but should be file-storage to match the cache key on line 130 which references bootstrap-languages/file-storage/hc-dna/Cargo.lock. This mismatch will cause the cache to save to the wrong directory, making it ineffective.
.circleci/config.yml#L131-L132
Lines 131 to 132 in d56dcef
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
rust-executor/src/perspectives/sdna.rs (1)
113-274: JSON parser DCGs look good; consider broadening number supportThe new DCGs nicely fix empty
{}/[]handling and support nested objects via list-based key–value pairs, matching the new tests and previous review feedback. One limitation:json_number/1+number_sequence/1only accept unsigned integers and simple fractional forms (0-9and.), so JSON like-1or1e3will currently fail to parse. If you expect negative or exponential numbers inliteral://json:payloads, it’s worth extendingnumber_sequence/1and adding tests for those cases.
🧹 Nitpick comments (3)
rust-executor/src/perspectives/utils.rs (1)
36-61: LGTM with optional improvement for debugging.The implementation correctly converts
dict([Key-Value, ...])Prolog structures to JSON objects. The pattern matching logic is sound, error handling uses safe fallbacks, and the approach is consistent with existing converters likeconvert_assoc_to_json.Optional: Consider debug logging for invalid input shapes.
The function silently returns
"{}"when:
args.len() != 1(line 38-40)args[0]is not aTerm::List(implicit fallthrough)While this is consistent with similar helpers in the file, adding debug logging could help diagnose issues during development:
fn convert_dict_to_json(args: &[Term]) -> String { // args should be [PairsList] where PairsList is a list of Key-Value pairs if args.len() != 1 { + log::debug!("convert_dict_to_json: expected 1 argument, got {}", args.len()); return "{}".to_string(); } let mut map = JsonMap::new(); if let Term::List(pairs) = &args[0] { // ... existing logic + } else { + log::debug!("convert_dict_to_json: expected Term::List, got {:?}", &args[0]); } JsonValue::Object(map).to_string() }rust-executor/src/perspectives/sdna.rs (2)
575-625: Resolve-path refactor reads clearly; consider a small guard on URI typesThe three-case split in
resolve_property/5viaresolve_property_value/5and theresolve_property_extract_json_or_value/2helper makes the literal vs. URI vs. non-resolvable behaviour much easier to follow, and thecatch(json_property/3,_,fail)avoids crashes on non-JSON literals.One minor robustness suggestion:
resolve_property_ensure_chars/2falls through toresolve_property_ensure_chars(Input, Input)for any non-atom term, which then flows intoappend("literal://", _, PropertyUriChars)andliteral_from_url/3. If a future SDNA flow ever passes a non-list term here (e.g. a structured term instead of an atom or char list), you’ll get a type error from the list predicates. If that’s a realistic scenario, you could add an explicit list guard (oris_list/1+ fallback to the “pass-through URI” case) to fail fast rather than raising.
759-969: Strengthen tests with explicit assertions on query results and parsed valuesThe new tokio tests are a good sanity check that Scryer can load the JSON parser and that the empty/non-empty object/array DCGs succeed. A couple of improvements would make them more diagnostic:
test_simple_dcgcurrently only prints the query result; asserting onQueryResolution(e.g. expectingTrue) would turn it into a real regression test.- For the JSON tests, you only assert that the parse succeeds. If feasible, also assert on the actual
Dict/Arraycontents (e.g.Dict == []for"{}",Array == [1,2,3]for"[1, 2, 3]") via Prolog queries so that structural regressions in the DCGs are caught as well.These are incremental changes but will make future failures much easier to interpret.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
rust-executor/src/perspectives/sdna.rs(4 hunks)rust-executor/src/perspectives/utils.rs(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: lucksus
Repo: coasys/ad4m PR: 630
File: bootstrap-languages/p-diff-sync/hc-dna/zomes/perspective_diff_sync/Cargo.toml:28-29
Timestamp: 2025-11-13T12:18:07.265Z
Learning: For Holochain 0.6.0-rc.0 (branch 0.6.0-rc.0-coasys), the correct and compatible HDI/HDK pairing is: hdi version 0.7.0-rc.0 and hdk version 0.6.0-rc.0. HDI is intentionally one minor version ahead of HDK in this release.
Learnt from: lucksus
Repo: coasys/ad4m PR: 630
File: bootstrap-languages/p-diff-sync/hc-dna/workdir/dna.yaml:2-2
Timestamp: 2025-11-13T12:17:37.333Z
Learning: For Holochain 0.6.0-rc.0, the correct manifest_version in DNA YAML files (dna.yaml) is 0, not 1. The mr_bundle library in Holochain 0.6.0-rc.0 errors when manifest_version is set to 1. The versioning appears to have been reset in this release.
🧬 Code graph analysis (1)
rust-executor/src/perspectives/sdna.rs (1)
rust-executor/src/prolog_service/engine.rs (10)
new(37-44)spawn(46-238)e(79-79)e(84-84)e(121-121)e(127-127)e(189-189)e(193-193)e(206-206)e(209-209)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Cursor Bugbot
🔇 Additional comments (1)
rust-executor/src/perspectives/sdna.rs (1)
573-574: Good centralization of JSON parser loadingExtending
get_static_infrastructure_facts()withget_json_parser_code()keeps the production Prolog environment and the test helper in sync, avoiding drift between the embedded JSON parser and what the engine actually loads.
There was a problem hiding this comment.
Bug: Cache Path Mismatch: Unnecessary Rebuilds
The cache path for file-storage uses file-storage-language directory but the cache key references file-storage. This mismatch means the cache will be saved to the wrong path (./bootstrap-languages/file-storage-language/hc-dna/target) instead of the correct path (./bootstrap-languages/file-storage/hc-dna/target), causing cache misses and unnecessary rebuilds.
.circleci/config.yml#L129-L132
Lines 129 to 132 in d4cc9ad
Overview
This PR updates AD4M to work with Holochain 0.6.0-rc.0, addressing breaking changes in the Holochain HDK/HDI APIs, the mr_bundle format, and upgrading scryer-prolog to maintain compatibility with Rust 1.88.
Breaking Changes Addressed
1. Holochain HDK/HDI Version Updates
Updated all bootstrap languages with Holochain DNAs to use the new versions:
0.5.2→0.6.0-rc.00.6.2→0.7.0-rc.00.5.2→0.6.0-rc.0=0.0.56Affected Languages:
2. HDK API Changes
get_links()Signature ChangeThe function now requires two separate parameters instead of one:
Before:
After:
Changed Files:
p-diff-sync: 8 occurrences acrosslink_adapter/snapshots.rs,link_adapter/workspace.rs,retriever/holochain.rs,telepresence/status.rsagent-language: 1 occurrence inagent_store/src/utils.rsdirect-message-language: 1 occurrence indirect-message/src/lib.rsdelete_link()Signature ChangeNow requires
GetOptionsas second parameter:Before:
After:
Changed Files:
direct-message-language/hc-dna/zomes/direct-message/src/lib.rsGrantedFunctions::ListedType ChangeChanged from
BTreeSettoHashSet:Before:
After:
Changed Files:
p-diff-sync/hc-dna/zomes/perspective_diff_sync/src/lib.rsdirect-message-language/hc-dna/zomes/direct-message/src/lib.rs3. mr_bundle YAML Format Changes
Updated to use
path:instead ofbundled:in manifest files:happ.yaml:
dna.yaml:
Changed Files:
workdir/happ.yamlandworkdir/dna.yamlfilesexecutor/src/core/LanguageController.ts- Updated language templating code4. Language Templating Fixes
The new mr_bundle unpacking structure no longer includes a
target/wasm32-unknown-unknown/release/directory. WASM files are now directly in the unpacked DNA directory.Changes in
LanguageController.ts:happYaml.roles[0].dna.path(was.dna.bundled)5. Dependency Fixes
Added
getrandomdependency with custom backend configuration to fix WASM compilation issues:Cargo.toml additions:
Applied to:
6. Scryer-Prolog Upgrade (Rust 1.88 Compatibility)
Critical Change: Holochain 0.6.0-rc.0 requires Rust 1.88, which broke compilation of the old scryer-prolog version. This necessitated upgrading to scryer-prolog 0.10.
Version Update:
(was:
version = "0.9.4", branch = "ad4m-hc-0.5")Breaking Changes in Scryer-Prolog 0.10
The upgrade broke property resolution in SDNA because
list_to_assocandget_assocwork differently in the new version.Problem: The old code used association lists (assoc) to store JSON dictionaries:
Solution: Use list-based key-value pairs with
member/2instead of assoc structures:Additional Prolog Refactoring
The
resolve_propertypredicate was refactored for clarity and robustness:Before (nested if-then-else):
After (separate clauses with cuts):
This refactoring:
!) instead of complex if-then-elseDCG Parser Improvements
The DCG (Definite Clause Grammar) rules for JSON parsing were also updated to use explicit cuts instead of if-then-else:
Before:
After:
This makes the parsing more deterministic and compatible with scryer-prolog 0.10's evaluation strategy.
Changed Files:
rust-executor/Cargo.toml- scryer-prolog version updaterust-executor/src/perspectives/sdna.rs- Prolog code refactoring7. Removed p-diff-sync-socket-signaling
The
p-diff-sync-socket-signalingbootstrap language has been removed as it had complex dependency conflicts withgetrandomv0.2/v0.3 and is no longer actively maintained.Dependencies
Files Changed
Bootstrap Languages
agent-language/- 8 files modifieddirect-message-language/- 9 files modifiedfile-storage/- 8 files modifiedp-diff-sync/- 8 files modifiedp-diff-sync-socket-signaling/- Entire directory removedExecutor
executor/src/core/LanguageController.ts- Language templating updatesRust Executor & Prolog
rust-executor/Cargo.toml- scryer-prolog 0.10 upgraderust-executor/src/perspectives/sdna.rs- Prolog code refactoring for 0.10 compatibilityBuild System
Cargo.lockfiles updatedbuild.shscripts updated across bootstrap languagesTesting
All bootstrap languages with Holochain DNAs now build successfully:
Language templating tests should now pass with the updated mr_bundle format handling.
Migration Notes
For any external languages or forks:
Cargo.tomlfilesget_links()calls with the new two-parameter signature usingLinkQuerydelete_link()calls to includeGetOptionsparameterBTreeSettoHashSetforGrantedFunctions::Listedpath:instead ofbundled:cargo updatelist_to_assoc/get_assocto use list-based dictionaries withmember/2Related Issues
Checklist
Note
Enhances Tauri ACL JSON schemas (desktop and Linux) with webview-aware capability semantics, extensive markdownDescription metadata, and many new/updated permission identifiers across core/plugins.
Capabilityto include webviews; clarifywindowsvswebviewsbehavior and examples.markdownDescriptionand refine descriptions across permissions for better docs/UX.core:appbundle/identifier/data-store ops,core:webviewauto-resize/background-color,core:windowbackground/badge/overlay, plus fs/http/opener/dialog/notification/os/process/shell/updater/positioner/global-shortcut).ui/src-tauri/gen/schemas/desktop-schema.jsonandlinux-schema.json.Written by Cursor Bugbot for commit d4cc9ad. This will update automatically on new commits. Configure here.
Summary by CodeRabbit
Chores
Revert