Retire experimental darkmatter naming: mdk for the kit, wn for app binaries#725
Conversation
…naries Kit/workspace layer renames to mdk: docs prose, darkmatter#NNN -> mdk#NNN issue refs, OTLP service.name=mdk / tenant=mdk-ios, internal CI/test env vars (MDK_E2E_*, MDK_CONFORMANCE_SQLITE_STORAGE, MDK_TUI_DEV_RELAYS, MDK_REPO), dev relay names, Docker WORKDIR /work/mdk, and marmot-protocol/darkmatter URLs -> marmot-protocol/mdk. Application layer renames to wn (White Noise): package darkmatter-cli -> wn-cli; binaries dm -> wn, dmd -> wnd, dm-agent -> wn-agent; DM_* env knobs -> WN_*; sockets wnd.sock / wn-agent.sock; release tags and assets dm-agent-v* -> wn-agent-v*; systemd unit, install scripts, Homebrew checklist (formula wn), and hermes/openclaw plugin surfaces. State and links: default data dir darkmatter -> whitenoise (fallback .whitenoise), keychain service com.marmot.darkmatter -> com.marmot.whitenoise, deep-link scheme darkmatter:// -> marmot:// (the now-dead 'd' scheme tripwire is dropped from the markdown fast-scan). Clean break by design: no old-name fallbacks; manual migration steps are documented in the wn-cli CHANGELOG Unreleased entry. Direct-message semantics (OpenClaw dm.allowFrom, MARMOT_DM_ALLOW_FROM, chat_type "dm") are intentionally unchanged. Past CHANGELOG entries and docs/learnings.md keep their historical darkmatter wording. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 26 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (14)
WalkthroughThis is a repository-wide rebrand renaming Darkmatter/dm/dm-agent/darkmatter-cli to MDK/wn/wn-agent/wn-cli across Rust crates (cli, agent-connector, marmot-account/app, cgka-*, markdown, uniffi), CI workflows, Docker/systemd assets, Hermes/OpenClaw integrations, deployment scripts, documentation, and issue-tracker comment references, plus a markdown autolink scheme change from darkmatter:// to marmot://. ChangesDarkmatter to MDK/WN Rebrand
Estimated code review effort: 3 (Moderate) | ~30 minutes Sequence Diagram(s)Not applicable — this PR is a systematic renaming/rebranding change with no new interaction flows to diagram. Related PRs: None identified. Related issues: None identified. Suggested labels: rename, chore, documentation Suggested reviewers: None identified. 🐰 A rabbit hopped through darkened code, 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Ready to review this PR? Stage has broken it down into 14 individual chapters for you: Chapters generated by Stage for commit 3c7f774 on Jul 4, 2026 11:04am UTC. |
erskingardner
left a comment
There was a problem hiding this comment.
Adversarial review summary
Rename looks mechanically complete (legacy-token grep outside historical CHANGELOG/learnings exclusions is clean; CI green). The main risks are operational migration, not code correctness:
- Install scripts 404 until first
wn-agent-v*release — default tag won't resolve until post-merge cut. - Legacy
dmdorphan — newwndsocket/pid paths won't see a still-running old daemon. - Bundled non-rename changes — socket 0600 bind, QUIC SSRF hardening, and daemon framing improvements deserve separate scrutiny even though they look good.
- No automated naming regression gate — manual grep claim isn't enforced in CI.
See thread comments on specific lines.
Overall: reasonable to merge if the post-merge checklist (Homebrew tap rename, first wn-agent-v* release, app marmot:// registration) is treated as a hard gate rather than optional cleanup.
|
Two additional nits that aren't on changed diff lines:
|
erskingardner
left a comment
There was a problem hiding this comment.
Non-blocking stale-name pass: GitHub would not anchor a few context-only lines inline, so also check integrations/hermes/marmot/README.md:26, integrations/hermes/marmot/README.md:171, and docs/marmot-architecture/hermes-agent-production-runbook.md:37,151,184 for remaining Dark Matter wording in newly renamed docs.
There was a problem hiding this comment.
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)
crates/cli/tests/cli.rs (1)
546-571: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winStale
dmd_helpvariable name for the renamedwndbinary check.This block now builds
env!("CARGO_BIN_EXE_wnd")help output but still stores/reads it asdmd_help, leaving a legacy token in a test that this same PR is otherwise renaming end-to-end.✏️ Suggested rename
- let dmd_help = Command::new(env!("CARGO_BIN_EXE_wnd")) + let wnd_help = Command::new(env!("CARGO_BIN_EXE_wnd")) .arg("--help") .output() .expect("wnd help should run"); assert!( - dmd_help.status.success(), + wnd_help.status.success(), "{}", - command_output_summary(&dmd_help) + command_output_summary(&wnd_help) ); - let dmd_help = format!( + let wnd_help = format!( "{}{}", - String::from_utf8_lossy(&dmd_help.stdout), - String::from_utf8_lossy(&dmd_help.stderr) + String::from_utf8_lossy(&wnd_help.stdout), + String::from_utf8_lossy(&wnd_help.stderr) ); for flag in [ "--data-dir", "--logs-dir", "--discovery-relays", "--default-account-relays", ] { - assert!(dmd_help.contains(flag), "wnd --help missing {flag}"); + assert!(wnd_help.contains(flag), "wnd --help missing {flag}"); } assert!( - !dmd_help.contains("--relay"), + !wnd_help.contains("--relay"), "wnd --help should match wnd-style relay defaults instead of singular --relay" );🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/cli/tests/cli.rs` around lines 546 - 571, The help-output test block is still using the stale dmd_help variable name even though it now targets the wnd binary via Command::new(env!("CARGO_BIN_EXE_wnd")). Rename the local variable and its usages in this test to match wnd so the test reflects the binary rename consistently, keeping the assertions and command_output_summary call aligned with the updated identifier.
🧹 Nitpick comments (2)
crates/cli/src/lib.rs (1)
368-368: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winLeftover
dmnaming:json_dm_errorwas not renamed.Every other helper in this rename pass (
resolve_relay,resolve_account,validate_relay_url,wn_allow_loopback_blob_endpoints, etc.) dropped thedmtoken, but this function still is namedjson_dm_erroreven though it now takes/serializes aWnError. Given the PR description states a grep gate verifies legacy tokens are removed outside documented exceptions, this stray identifier should be renamed for consistency.♻️ Proposed rename
- Err(err) if json_output => json_dm_error(err), + Err(err) if json_output => json_wn_error(err), @@ -fn json_dm_error(err: WnError) -> CliOutput { +fn json_wn_error(err: WnError) -> CliOutput { let error = wn_error_json(&err);Also applies to: 1114-1128
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/cli/src/lib.rs` at line 368, The `json_dm_error` helper still carries the old `dm` token even though it now handles `WnError`, so rename it to match the rest of the `crates/cli/src/lib.rs` cleanup and update the `Err(err) if json_output => ...` match arm plus any other call sites in the same rename pass. Keep the new name consistent with the surrounding helpers like `resolve_relay` and `resolve_account`, and remove the legacy identifier wherever it appears in this change.crates/marmot-app/src/relay_telemetry_export.rs (1)
892-892: 🧹 Nitpick | 🔵 TrivialOTLP
service.nameidentity change.Renaming the exported
service.nameattribute fromdarkmattertomdkchanges the metric identity for any existing OTLP dashboards/alerts filtering on this value. Since this is part of the documented rebrand, just flagging for downstream telemetry-consumer coordination.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/marmot-app/src/relay_telemetry_export.rs` at line 892, The OTLP export in relay_telemetry_export currently sets service.name via string_key_value to mdk instead of the previous darkmatter value, which changes metric identity for downstream consumers. If this rename is intended, keep the relay_telemetry_export setting aligned with the documented rebrand and make sure any other service.name emitters in the telemetry path use the same value; otherwise revert the string_key_value("service.name", ...) value so existing dashboards and alerts remain stable.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/agent-connector/README.md`:
- Around line 1-8: Update the README introduction for the wn-agent binary to
remove the leftover Dark Matter branding and replace it with the current
Marmot/wn-agent naming. Specifically, revise the descriptive sentence in the
crate overview so it no longer says “the local Dark Matter agent connector,” and
ensure the surrounding text in the README consistently refers to the agent
connector using the renamed terms in this section.
In `@crates/cli/CHANGELOG.md`:
- Around line 34-45: The changelog migration note is internally inconsistent
because it says there are no compatibility fallbacks while later describing a
keychain override via WN_KEYCHAIN_SERVICE and com.marmot.darkmatter. Update the
wording in the changelog entry to say there is no automatic fallback, and keep
the rest of the migration guidance aligned with that phrasing so the section
remains consistent.
In `@release.md`:
- Around line 144-148: Update the WN Agent Release section text to remove the
lingering Dark Matter wording and replace it with the correct WN Agent/wn-agent
description. Edit the release.md entry under the WN Agent Release heading so the
sentence no longer says “Use this for the Dark Matter agent connector entry
point,” and ensure any related wording in that paragraph consistently uses the
new naming.
In `@scripts/openclaw_marmot_dev_setup.sh`:
- Around line 67-71: The generated wrapper arguments from WN_AGENT_EXTRA and
RELAY_ARGS are being flattened into plain text, so values with spaces can split
when run-wn-agent.sh is invoked. Update openclaw_marmot_dev_setup.sh to preserve
argument boundaries when building the wrapper command, and make the same
escaping/quoting fix in the RELAY_ARGS handling referenced by the later block so
both wrappers pass each flag as a distinct shell argument.
---
Outside diff comments:
In `@crates/cli/tests/cli.rs`:
- Around line 546-571: The help-output test block is still using the stale
dmd_help variable name even though it now targets the wnd binary via
Command::new(env!("CARGO_BIN_EXE_wnd")). Rename the local variable and its
usages in this test to match wnd so the test reflects the binary rename
consistently, keeping the assertions and command_output_summary call aligned
with the updated identifier.
---
Nitpick comments:
In `@crates/cli/src/lib.rs`:
- Line 368: The `json_dm_error` helper still carries the old `dm` token even
though it now handles `WnError`, so rename it to match the rest of the
`crates/cli/src/lib.rs` cleanup and update the `Err(err) if json_output => ...`
match arm plus any other call sites in the same rename pass. Keep the new name
consistent with the surrounding helpers like `resolve_relay` and
`resolve_account`, and remove the legacy identifier wherever it appears in this
change.
In `@crates/marmot-app/src/relay_telemetry_export.rs`:
- Line 892: The OTLP export in relay_telemetry_export currently sets
service.name via string_key_value to mdk instead of the previous darkmatter
value, which changes metric identity for downstream consumers. If this rename is
intended, keep the relay_telemetry_export setting aligned with the documented
rebrand and make sure any other service.name emitters in the telemetry path use
the same value; otherwise revert the string_key_value("service.name", ...) value
so existing dashboards and alerts remain stable.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 79ad47bc-aba7-4134-a1b0-93f769124cf1
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (205)
.config/nextest.toml.github/workflows/bindings.yaml.github/workflows/ci.yml.github/workflows/wn-agent-binaries.ymlAGENTS.mdCargo.tomlDockerfile.hermes-marmotDockerfile.openclaw-marmotJustfileREADME.mdcrates/agent-connector/AGENTS.mdcrates/agent-connector/Cargo.tomlcrates/agent-connector/README.mdcrates/agent-connector/src/bin/wn-agent.rscrates/agent-connector/src/bootstrap.rscrates/agent-connector/src/event_projection.rscrates/agent-connector/src/socket.rscrates/agent-connector/src/tests.rscrates/agent-control/src/lib.rscrates/cgka-conformance-simulator/AGENTS.mdcrates/cgka-conformance-simulator/README.mdcrates/cgka-conformance-simulator/src/client.rscrates/cgka-conformance-simulator/src/vector.rscrates/cgka-conformance-simulator/tests/canonical_scenarios.rscrates/cgka-conformance-simulator/tests/issue_494_admin_promote_delivery.rscrates/cgka-conformance-simulator/tests/report_runner.rscrates/cgka-conformance-simulator/tests/tracing_audit.rscrates/cgka-engine/AGENTS.mdcrates/cgka-engine/src/app_components.rscrates/cgka-engine/src/bounded_id_set.rscrates/cgka-engine/src/canonicalization.rscrates/cgka-engine/src/engine.rscrates/cgka-engine/src/epoch_manager.rscrates/cgka-engine/src/group_lifecycle.rscrates/cgka-engine/src/key_package.rscrates/cgka-engine/src/openmls_projection.rscrates/cgka-engine/tests/AGENTS.mdcrates/cgka-engine/tests/distributed_convergence.rscrates/cgka-engine/tests/group_creation.rscrates/cgka-engine/tests/hydration_quarantine.rscrates/cgka-engine/tests/invite_leave.rscrates/cgka-engine/tests/mip03_guards.rscrates/cgka-engine/tests/pending_commit_recovery.rscrates/cgka-session/src/lib.rscrates/cli/AGENTS.mdcrates/cli/CHANGELOG.mdcrates/cli/Cargo.tomlcrates/cli/README.mdcrates/cli/src/args.rscrates/cli/src/bin/wnd.rscrates/cli/src/commands/account.rscrates/cli/src/commands/chats.rscrates/cli/src/commands/debug.rscrates/cli/src/commands/follows.rscrates/cli/src/commands/groups.rscrates/cli/src/commands/key_package.rscrates/cli/src/commands/media.rscrates/cli/src/commands/messages.rscrates/cli/src/commands/notifications.rscrates/cli/src/commands/profile.rscrates/cli/src/commands/relay_stats.rscrates/cli/src/commands/relays.rscrates/cli/src/commands/settings.rscrates/cli/src/commands/stream.rscrates/cli/src/commands/sync.rscrates/cli/src/commands/users.rscrates/cli/src/daemon/lifecycle.rscrates/cli/src/daemon/mod.rscrates/cli/src/daemon/runtime_host.rscrates/cli/src/daemon/stream_workers.rscrates/cli/src/daemon/subscriptions.rscrates/cli/src/daemon/tests.rscrates/cli/src/error.rscrates/cli/src/lib.rscrates/cli/src/main.rscrates/cli/src/tui/app.rscrates/cli/src/tui/client.rscrates/cli/src/tui/mod.rscrates/cli/src/tui/model.rscrates/cli/src/tui/tests.rscrates/cli/src/tui/view.rscrates/cli/tests/cli.rscrates/marmot-account/AGENTS.mdcrates/marmot-account/README.mdcrates/marmot-account/src/home.rscrates/marmot-account/src/key_package.rscrates/marmot-account/src/runtime.rscrates/marmot-account/tests/runtime.rscrates/marmot-app/README.mdcrates/marmot-app/src/audit_log.rscrates/marmot-app/src/client/mod.rscrates/marmot-app/src/client/sync.rscrates/marmot-app/src/config.rscrates/marmot-app/src/directory/cache.rscrates/marmot-app/src/directory/methods.rscrates/marmot-app/src/directory/sync.rscrates/marmot-app/src/groups.rscrates/marmot-app/src/lib.rscrates/marmot-app/src/messages/intents.rscrates/marmot-app/src/notifications.rscrates/marmot-app/src/notifications/tests.rscrates/marmot-app/src/relay_plane/directory.rscrates/marmot-app/src/relay_plane/mod.rscrates/marmot-app/src/relay_plane/telemetry.rscrates/marmot-app/src/relay_plane/tests.rscrates/marmot-app/src/relay_telemetry_export.rscrates/marmot-app/src/relay_telemetry_export/tests.rscrates/marmot-app/src/runtime/account_worker.rscrates/marmot-app/src/runtime/commands.rscrates/marmot-app/src/runtime/mod.rscrates/marmot-app/src/runtime/tests.rscrates/marmot-app/src/tests.rscrates/marmot-app/tests/relay_runtime.rscrates/marmot-app/tests/relay_telemetry_otlp.rscrates/marmot-forensics/src/audit.rscrates/marmot-forensics/src/audit/tests.rscrates/marmot-markdown/src/inline.rscrates/marmot-markdown/src/lib.rscrates/marmot-markdown/tests/golden/bare_urls.jsoncrates/marmot-markdown/tests/golden/bare_urls.mdcrates/marmot-markdown/tests/unit_autolinks.rscrates/marmot-markdown/tests/unit_inlines.rscrates/marmot-markdown/tests/unit_links.rscrates/marmot-markdown/tests/unit_nesting_depth.rscrates/marmot-uniffi/.gitignorecrates/marmot-uniffi/kotlin-support/io/crates/keyring/Keyring.ktcrates/marmot-uniffi/src/commands/account.rscrates/marmot-uniffi/src/commands/group.rscrates/marmot-uniffi/src/conversions/account.rscrates/marmot-uniffi/src/conversions/event.rscrates/marmot-uniffi/src/conversions/group.rscrates/marmot-uniffi/src/conversions/relay.rscrates/marmot-uniffi/src/markdown.rscrates/marmot-uniffi/tests/smoke.rscrates/storage-sqlite/src/account_projection/tests.rscrates/storage-sqlite/src/chat_list/tests.rscrates/storage-sqlite/src/timeline/tests.rscrates/traits/src/engine.rscrates/transport-nostr-adapter/src/lib.rscrates/transport-nostr-adapter/src/sdk_client.rscrates/transport-nostr-adapter/tests/inbound_routing.rsdev/nostr-rs-relay-config.tomldev/strfry.confdocker-compose.ymldocs/marmot-architecture/hermes-agent-production-runbook.mddocs/marmot-architecture/hermes-openclaw-agent-integration-plan.mddocs/marmot-architecture/index.mddocs/marmot-architecture/overview/app-core-boundary.mddocs/marmot-architecture/overview/current-state.mddocs/marmot-architecture/overview/marmot-app-runtime.mddocs/marmot-architecture/overview/nostr-account-transport.mddocs/marmot-architecture/overview/observability.mddocs/marmot-architecture/relay-observability.mddocs/marmot-architecture/runtime-state-bounds.mddocs/marmot-architecture/telemetry.mddocs/quic-broker-deployment.mddocs/release/wn-homebrew.mdintegrations/hermes/marmot/README.mdintegrations/hermes/marmot/adapter.pyintegrations/hermes/marmot/plugin.yamlintegrations/hermes/marmot/tests/e2e_connector.pyintegrations/hermes/marmot/tests/e2e_deterministic.pyintegrations/hermes/marmot/tests/test_adapter.pyintegrations/hermes/marmot/tests/test_dev_scripts.shintegrations/openclaw/marmot/AGENTS.mdintegrations/openclaw/marmot/README.mdintegrations/openclaw/marmot/index.tsintegrations/openclaw/marmot/openclaw.plugin.jsonintegrations/openclaw/marmot/package.jsonintegrations/openclaw/marmot/scripts/wn-agent-smoketest.tsintegrations/openclaw/marmot/src/account.tsintegrations/openclaw/marmot/src/channel.tsintegrations/openclaw/marmot/src/client.tsintegrations/openclaw/marmot/src/config.tsintegrations/openclaw/marmot/src/dispatch.tsintegrations/openclaw/marmot/src/inbound-runtime.tsintegrations/openclaw/marmot/src/inbound.tsintegrations/openclaw/marmot/src/live.tsintegrations/openclaw/marmot/src/messaging.tsintegrations/openclaw/marmot/src/outbound.tsintegrations/openclaw/marmot/src/security.tsintegrations/openclaw/marmot/src/transcript.tsintegrations/openclaw/marmot/test/client.test.tsintegrations/openclaw/marmot/test/config.test.tsintegrations/openclaw/marmot/test/dispatch.test.tsintegrations/openclaw/marmot/test/inbound-runtime.test.tsintegrations/openclaw/marmot/test/messaging.test.tsintegrations/openclaw/marmot/test/outbound.test.tspackaging/systemd/hermes-gateway.service.examplepackaging/systemd/hermes-marmot.env.examplepackaging/systemd/openclaw-gateway.service.examplepackaging/systemd/openclaw-marmot.env.examplepackaging/systemd/wn-agent.service.examplerelease.mdscripts/cut-wn-agent-release.shscripts/hermes_marmot_connector_e2e.shscripts/hermes_marmot_container_entrypoint.shscripts/hermes_marmot_deterministic_e2e.shscripts/hermes_marmot_dev_setup.shscripts/install-hermes-marmot.shscripts/install-openclaw-marmot.shscripts/openclaw_marmot_container_entrypoint.shscripts/openclaw_marmot_dev_setup.shscripts/reset_tui_dev.shscripts/wait_for_relays.sh
…r quoting - Replace "Dark Matter" (two-word form the grep gate missed) with White Noise / MDK per context in agent-connector README, release.md, hermes README, the production runbook, and marmot-app config docs. - Rename stale identifiers: json_dm_error -> json_wn_error, dmd_help -> wnd_help. - Reword the CHANGELOG migration note to "no automatic compatibility fallback" so the manual keychain override no longer contradicts it. - Bake shell-quoted args into the generated openclaw run-wn-agent.sh wrapper (printf %q) so paths/tokens with spaces survive, matching the hermes dev-setup script's approach. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
… note - CHANGELOG migration entry now leads with stopping the legacy dmd daemon before the first wnd start (renamed socket/pid files make an orphan dmd invisible to wn daemon status) and names the empty-account-list symptom when the data directory is not moved. - Both install scripts document that they require a published wn-agent-v* release: pre-rename dm-agent-v* assets have incompatible names, so overriding MARMOT_RELEASE_TAG alone cannot bridge the gap. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
Adversarial review point 4: the rename's legacy-token grep was a manual claim. scripts/check_legacy_naming.sh now encodes it - retired darkmatter/dm/dmd/DM_* tokens fail the build outside the documented historical exclusions, while direct-message semantics (integrations' dm config keys, is_dm fields, MARMOT_DM_ALLOW_FROM) stay allowed. Wired into `just fast-ci`, `just ci`, and the Rust format CI job. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Responding to the two agent reviews: Adversarial review summary — all four points addressed:
Non-blocking stale-name pass — all five listed lines (hermes README:26/171, runbook:37/151/184) were fixed in 🤖 Addressed by Claude Code |
…ks (#341) Adopts marmot-protocol/mdk#725, which retired the experimental "darkmatter" naming across the kit (clean break, no compat shims). Bindings bump & build tooling - Rebuild Vendored/MarmotKit from mdk e712232 (was darkmatter 745959e) via scripts/sync-bindings.sh, now driven by MDK_DIR (default ~/code/mdk); MARMOT_VERSION stamps mdk-sha/mdk-branch and the generated provenance constant is MarmotKitVersion.mdkSHA. - Adopt the new AppGroupRecordFfi/ChatListRowFfi selfMembership field in test fixtures (.member); binding artifact names (MarmotKit.*) are unchanged upstream by design. - AGENTS.md / README / .gitignore now point at marmot-protocol/mdk. marmot:// deep links (closes #340) - Register the marmot:// URL scheme (CFBundleURLTypes) and route open-URL events through WorkspaceState.handleDeepLinkURL, with a pending-reference queue for links that arrive before bootstrap reaches ready (flushed from activateReadyState). - New MarmotProfileLink helper is the single source of truth for the strict marmot://profile/<npub|nprofile> form: OS deep links, kit-emitted message autolinks (MarkdownLinkPolicy now consumes them in-app), the New Chat paste pre-check, and QR emission (marmot://profile/<npub>?from=qr, replacing the bare-npub payload). - Clean breaks accepted per mdk#725: darkmatter:// links/QRs are no longer recognized anywhere, and the kit's keychain service moved to com.marmot.whitenoise with no migration — previously signed-in users must re-import their nsec. Telemetry build-config rename (app-local alignment) - Info.plist keys Darkmatter* → WhiteNoise*, build settings DARKMATTER_* → WN_*, xcconfig secrets *_DARKMATTER_MAC → *_WN_MAC; local gitignored Config/AppSecrets.xcconfig needs the same key rename. Removed two orphaned Darkmatter strings from the catalog. 312 unit tests pass; macos-sanity-checks.sh green; LaunchServices registration and marmot:// delivery smoke-tested against the built app. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
What changed
Repo-wide retirement of the experimental "darkmatter" naming (206 files, ~450 occurrences), split into two deliberate layers:
Application layer →
wn(White Noise) — the installed binaries are application-level and align with the White Noise apps:darkmatter-cli→wn-cli; binariesdm→wn,dmd→wnd,dm-agent→wn-agentDM_*→WN_*(WN_ACCOUNT,WN_RELAY,WN_SOCKET,WN_SECRET_STORE,WN_HOME,WN_KEYCHAIN_SERVICE, …) andDM_AGENT_VERSION→WN_AGENT_VERSIONdmd.sock/dm-agent.sock→wnd.sock/wn-agent.sockdm-agent-v*→wn-agent-v*; workflow, cut-release script, install scripts, systemd unit, Docker/compose, and the Homebrew checklist (formulawn) renamed to matchDm*types →Wn*Kit/workspace layer →
mdk:darkmatter#NNNissue refs →mdk#NNN(repo was renamed in place on GitHub, so numbering is continuous; docs already usedmdk#NNN)service.name=mdk, tenantmdk-ios; internal CI/test env varsDARKMATTER_*→MDK_*; dev relay namesmdk-dev; GitHub URLs →marmot-protocol/mdkState & links (clean break, no compat shims):
darkmatter→whitenoise(dev fallback.whitenoise); keychain servicecom.marmot.darkmatter→com.marmot.whitenoisedarkmatter://→marmot://; the now-deaddbyte is dropped from the markdown parser's bare-URL fast-scan tripwirewn-cliCHANGELOG Unreleased entry (data-dir move, env vars,WN_KEYCHAIN_SERVICE=com.marmot.darkmatterescape hatch for old keychain entries)Deliberately unchanged
dm.allowFromconfig keys,MARMOT_DM_ALLOW_FROM,chat_type: "dm"— verified these mean direct message, not darkmatterdocs/learnings.mdkeep darkmatter wordingdev.ipf.marmotkitKotlin package,MarmotKit.*binding artifacts,MARMOT_*protocol env vars,whitenoise://schemeVerification
just fast-cigreen (fmt, check, clippy incl. OTLP feature builds)wn-clie2e suite 207/207 (spawns realwn/wndprocesses); agent-connector, marmot-app, marmot-account, marmot-uniffi, marmot-markdown, storage-sqlite, cgka-engine, traits, and conformance report suites all greenwn --help,wnd --help,wn-agent --helpsmoke-tested; scripts passbash -n; Justfile/YAML/JSON parsedarkmatter/dm/dmd/DM_*tokens outside the intentional exclusions aboveb255836); the incoming cgka-engine/traits commits carry no legacy namingPost-merge checklist (outside this repo)
darkmatter.rb→wn.rbinmarmot-protocol/homebrew-tapwn-agent-v*release so install-script defaults resolve (olddm-agent-v*assets stay downloadable; the renamed workflow won't trigger on old tags)service.name=mdk/tenant=mdk-iosmarmot://scheme and stop emittingdarkmatter://QR codes (old QR codes/links break — accepted clean break) — filed as Update deep-link scheme: darkmatter:// -> marmot:// whitenoise-ios#544, Update deep-link scheme: darkmatter:// -> marmot:// whitenoise-mac#340, Introduce marmot:// deep-link scheme whitenoise-linux#85, Update deep-link scheme: darkmatter:// -> marmot:// whitenoise-android#1018@marmot-protocol/openclaw-marmot; confirm scope ownership before any publish🤖 Generated with Claude Code
Summary by CodeRabbit