Skip to content

Retire experimental darkmatter naming: mdk for the kit, wn for app binaries#725

Merged
erskingardner merged 4 commits into
masterfrom
claude/competent-lehmann-2b46b7
Jul 4, 2026
Merged

Retire experimental darkmatter naming: mdk for the kit, wn for app binaries#725
erskingardner merged 4 commits into
masterfrom
claude/competent-lehmann-2b46b7

Conversation

@erskingardner

@erskingardner erskingardner commented Jul 4, 2026

Copy link
Copy Markdown
Member

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:

  • Package darkmatter-cliwn-cli; binaries dmwn, dmdwnd, dm-agentwn-agent
  • User-facing env knobs DM_*WN_* (WN_ACCOUNT, WN_RELAY, WN_SOCKET, WN_SECRET_STORE, WN_HOME, WN_KEYCHAIN_SERVICE, …) and DM_AGENT_VERSIONWN_AGENT_VERSION
  • Sockets dmd.sock/dm-agent.sockwnd.sock/wn-agent.sock
  • Release tags/assets dm-agent-v*wn-agent-v*; workflow, cut-release script, install scripts, systemd unit, Docker/compose, and the Homebrew checklist (formula wn) renamed to match
  • CLI about/help/error text now says "White Noise"; internal Dm* types → Wn*

Kit/workspace layer → mdk:

  • Docs prose, architecture notes, and release guide now say MDK
  • ~180 darkmatter#NNN issue refs → mdk#NNN (repo was renamed in place on GitHub, so numbering is continuous; docs already used mdk#NNN)
  • OTLP service.name=mdk, tenant mdk-ios; internal CI/test env vars DARKMATTER_*MDK_*; dev relay names mdk-dev; GitHub URLs → marmot-protocol/mdk

State & links (clean break, no compat shims):

  • Default data dir darkmatterwhitenoise (dev fallback .whitenoise); keychain service com.marmot.darkmattercom.marmot.whitenoise
  • Deep-link scheme darkmatter://marmot://; the now-dead d byte is dropped from the markdown parser's bare-URL fast-scan tripwire
  • Manual migration steps are documented in the wn-cli CHANGELOG Unreleased entry (data-dir move, env vars, WN_KEYCHAIN_SERVICE=com.marmot.darkmatter escape hatch for old keychain entries)

Deliberately unchanged

  • Direct-message semantics: OpenClaw dm.allowFrom config keys, MARMOT_DM_ALLOW_FROM, chat_type: "dm" — verified these mean direct message, not darkmatter
  • History: past CHANGELOG entries and docs/learnings.md keep darkmatter wording
  • Behavior: the Unreleased CHANGELOG security/perf entries (socket 0600 atomic bind, QUIC SSRF hardening, daemon request framing) describe work that landed in earlier PRs — this PR only renames the binary names inside their text; no behavioral changes are bundled here
  • Existing conventions: dev.ipf.marmotkit Kotlin package, MarmotKit.* binding artifacts, MARMOT_* protocol env vars, whitenoise:// scheme

Verification

  • just fast-ci green (fmt, check, clippy incl. OTLP feature builds)
  • wn-cli e2e suite 207/207 (spawns real wn/wnd processes); agent-connector, marmot-app, marmot-account, marmot-uniffi, marmot-markdown, storage-sqlite, cgka-engine, traits, and conformance report suites all green
  • wn --help, wnd --help, wn-agent --help smoke-tested; scripts pass bash -n; Justfile/YAML/JSON parse
  • Grep gate: zero darkmatter/dm/dmd/DM_* tokens outside the intentional exclusions above
  • Rebased onto current master (b255836); the incoming cgka-engine/traits commits carry no legacy naming

Post-merge checklist (outside this repo)

🤖 Generated with Claude Code


Open in Stage

Summary by CodeRabbit

  • New Features
    • Renamed the CLI, daemon, and agent experience to WN across commands, sockets, environment variables, release tags, and installer flows.
    • Updated local setup, bootstrap, and release tooling to use the new WN names and paths.
  • Bug Fixes
    • Switched test and CI selection to the new CLI/agent names so automated workflows target the correct binaries.
  • Documentation
    • Refreshed user-facing docs, examples, and release guides to match the new naming and URL scheme.

…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>
@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

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.

@coderabbitai

coderabbitai Bot commented Jul 4, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 26 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2d18fbd1-38fa-47c9-9cfb-f4d5da01c40a

📥 Commits

Reviewing files that changed from the base of the PR and between 92642c6 and 3c7f774.

📒 Files selected for processing (14)
  • .github/workflows/ci.yml
  • Justfile
  • crates/agent-connector/README.md
  • crates/cli/CHANGELOG.md
  • crates/cli/src/lib.rs
  • crates/cli/tests/cli.rs
  • crates/marmot-app/src/config.rs
  • docs/marmot-architecture/hermes-agent-production-runbook.md
  • integrations/hermes/marmot/README.md
  • release.md
  • scripts/check_legacy_naming.sh
  • scripts/install-hermes-marmot.sh
  • scripts/install-openclaw-marmot.sh
  • scripts/openclaw_marmot_dev_setup.sh

Walkthrough

This 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://.

Changes

Darkmatter to MDK/WN Rebrand

Layer / File(s) Summary
CI and build configuration
.config/nextest.toml, .github/workflows/ci.yml, .github/workflows/bindings.yaml, Cargo.toml, Justfile
Test selection, CI package filters, workspace dependency name, and just targets switched from darkmatter-cli/dm-agent to wn-cli/wn-agent with MDK_* env vars.
agent-connector crate, wn-agent-binaries workflow, Docker/systemd/compose
crates/agent-connector/*, .github/workflows/wn-agent-binaries.yml, Dockerfile.*, packaging/systemd/*, docker-compose.yml
The connector binary, sockets, and release pipeline renamed dm-agent → wn-agent across code, tests, docs, container builds, and unit files.
wn-cli crate rename
crates/cli/**
darkmatter-cli renamed to wn-cli (binaries dm/dmd → wn/wnd), DmError renamed WnError across all commands/daemon/TUI, plus README/CHANGELOG/AGENTS and integration tests updated.
marmot-account rename/comments
crates/marmot-account/**
Keychain constant, docs, and issue comments updated to mdk/wn naming.
marmot-app comments/tenant
crates/marmot-app/**
Comment issue references switched to mdk#, telemetry tenant strings to mdk-ios, docs to wn wording.
cgka- comment renames*
crates/cgka-*/**
Issue references and an env var switched from darkmatter to mdk.
marmot-markdown scheme rename
crates/marmot-markdown/**
Recognized bare-URL autolink scheme changed from darkmatter:// to marmot://, with tokenizer and golden fixture updates.
marmot-uniffi bindings rename
crates/marmot-uniffi/**
FFI docs/tests and member-ref URL prefix updated to marmot://, plus comment renames.
Other crate comment updates
crates/storage-sqlite/**, crates/traits/**, crates/transport-nostr-adapter/**, crates/agent-control/**
Issue-tracker comment identifiers updated to mdk#.
Dev relay configs
dev/nostr-rs-relay-config.toml, dev/strfry.conf
Relay metadata renamed darkmatter-dev → mdk-dev.
Architecture/release docs
README.md, AGENTS.md, docs/marmot-architecture/**, docs/release/wn-homebrew.md, release.md
Documentation updated to describe wn/wnd/wn-agent/wn-cli naming and MDK release process.
Hermes integration rename
integrations/hermes/marmot/**
Hermes plugin, adapter, and test harnesses updated from dm-agent to wn-agent.
OpenClaw integration rename
integrations/openclaw/marmot/**
OpenClaw plugin source, manifests, and tests updated from dm-agent to wn-agent.
Deployment/dev scripts
scripts/**
Install, dev-setup, entrypoint, and release-cut scripts updated to wn-agent/wn-cli naming and MDK_* env vars.

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,
Renamed each byte along the road,
"dm" became "wn" with a cheer,
"darkmatter" turned to "mdk" here,
A tidy rebrand, light as snow.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly captures the main rename split: MDK for the kit layer and WN for app binaries.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/competent-lehmann-2b46b7

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

@erskingardner erskingardner left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

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:

  1. Install scripts 404 until first wn-agent-v* release — default tag won't resolve until post-merge cut.
  2. Legacy dmd orphan — new wnd socket/pid paths won't see a still-running old daemon.
  3. Bundled non-rename changes — socket 0600 bind, QUIC SSRF hardening, and daemon framing improvements deserve separate scrutiny even though they look good.
  4. 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.

@erskingardner

Copy link
Copy Markdown
Member Author

Two additional nits that aren't on changed diff lines:

  • crates/cli/CHANGELOG.md footer: [Unreleased] compare URL still points at marmot-protocol/darkmatter; should be marmot-protocol/mdk for the unreleased link (historical release tag URLs can stay if redirects work).

  • Regression gate: PR claims a manual grep gate for legacy tokens, but there's no CI/just step enforcing it. A small automated check would prevent accidental reintroduction of DM_* / dm-agent in new code.

Comment thread scripts/install-openclaw-marmot.sh
Comment thread crates/cli/src/daemon/lifecycle.rs
Comment thread crates/cli/CHANGELOG.md
Comment thread crates/cli/CHANGELOG.md Outdated

@erskingardner erskingardner left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

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.

Comment thread crates/agent-connector/README.md Outdated
Comment thread release.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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)
crates/cli/tests/cli.rs (1)

546-571: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Stale dmd_help variable name for the renamed wnd binary check.

This block now builds env!("CARGO_BIN_EXE_wnd") help output but still stores/reads it as dmd_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 win

Leftover dm naming: json_dm_error was not renamed.

Every other helper in this rename pass (resolve_relay, resolve_account, validate_relay_url, wn_allow_loopback_blob_endpoints, etc.) dropped the dm token, but this function still is named json_dm_error even though it now takes/serializes a WnError. 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 | 🔵 Trivial

OTLP service.name identity change.

Renaming the exported service.name attribute from darkmatter to mdk changes 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

📥 Commits

Reviewing files that changed from the base of the PR and between b255836 and 92642c6.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (205)
  • .config/nextest.toml
  • .github/workflows/bindings.yaml
  • .github/workflows/ci.yml
  • .github/workflows/wn-agent-binaries.yml
  • AGENTS.md
  • Cargo.toml
  • Dockerfile.hermes-marmot
  • Dockerfile.openclaw-marmot
  • Justfile
  • README.md
  • crates/agent-connector/AGENTS.md
  • crates/agent-connector/Cargo.toml
  • crates/agent-connector/README.md
  • crates/agent-connector/src/bin/wn-agent.rs
  • crates/agent-connector/src/bootstrap.rs
  • crates/agent-connector/src/event_projection.rs
  • crates/agent-connector/src/socket.rs
  • crates/agent-connector/src/tests.rs
  • crates/agent-control/src/lib.rs
  • crates/cgka-conformance-simulator/AGENTS.md
  • crates/cgka-conformance-simulator/README.md
  • crates/cgka-conformance-simulator/src/client.rs
  • crates/cgka-conformance-simulator/src/vector.rs
  • crates/cgka-conformance-simulator/tests/canonical_scenarios.rs
  • crates/cgka-conformance-simulator/tests/issue_494_admin_promote_delivery.rs
  • crates/cgka-conformance-simulator/tests/report_runner.rs
  • crates/cgka-conformance-simulator/tests/tracing_audit.rs
  • crates/cgka-engine/AGENTS.md
  • crates/cgka-engine/src/app_components.rs
  • crates/cgka-engine/src/bounded_id_set.rs
  • crates/cgka-engine/src/canonicalization.rs
  • crates/cgka-engine/src/engine.rs
  • crates/cgka-engine/src/epoch_manager.rs
  • crates/cgka-engine/src/group_lifecycle.rs
  • crates/cgka-engine/src/key_package.rs
  • crates/cgka-engine/src/openmls_projection.rs
  • crates/cgka-engine/tests/AGENTS.md
  • crates/cgka-engine/tests/distributed_convergence.rs
  • crates/cgka-engine/tests/group_creation.rs
  • crates/cgka-engine/tests/hydration_quarantine.rs
  • crates/cgka-engine/tests/invite_leave.rs
  • crates/cgka-engine/tests/mip03_guards.rs
  • crates/cgka-engine/tests/pending_commit_recovery.rs
  • crates/cgka-session/src/lib.rs
  • crates/cli/AGENTS.md
  • crates/cli/CHANGELOG.md
  • crates/cli/Cargo.toml
  • crates/cli/README.md
  • crates/cli/src/args.rs
  • crates/cli/src/bin/wnd.rs
  • crates/cli/src/commands/account.rs
  • crates/cli/src/commands/chats.rs
  • crates/cli/src/commands/debug.rs
  • crates/cli/src/commands/follows.rs
  • crates/cli/src/commands/groups.rs
  • crates/cli/src/commands/key_package.rs
  • crates/cli/src/commands/media.rs
  • crates/cli/src/commands/messages.rs
  • crates/cli/src/commands/notifications.rs
  • crates/cli/src/commands/profile.rs
  • crates/cli/src/commands/relay_stats.rs
  • crates/cli/src/commands/relays.rs
  • crates/cli/src/commands/settings.rs
  • crates/cli/src/commands/stream.rs
  • crates/cli/src/commands/sync.rs
  • crates/cli/src/commands/users.rs
  • crates/cli/src/daemon/lifecycle.rs
  • crates/cli/src/daemon/mod.rs
  • crates/cli/src/daemon/runtime_host.rs
  • crates/cli/src/daemon/stream_workers.rs
  • crates/cli/src/daemon/subscriptions.rs
  • crates/cli/src/daemon/tests.rs
  • crates/cli/src/error.rs
  • crates/cli/src/lib.rs
  • crates/cli/src/main.rs
  • crates/cli/src/tui/app.rs
  • crates/cli/src/tui/client.rs
  • crates/cli/src/tui/mod.rs
  • crates/cli/src/tui/model.rs
  • crates/cli/src/tui/tests.rs
  • crates/cli/src/tui/view.rs
  • crates/cli/tests/cli.rs
  • crates/marmot-account/AGENTS.md
  • crates/marmot-account/README.md
  • crates/marmot-account/src/home.rs
  • crates/marmot-account/src/key_package.rs
  • crates/marmot-account/src/runtime.rs
  • crates/marmot-account/tests/runtime.rs
  • crates/marmot-app/README.md
  • crates/marmot-app/src/audit_log.rs
  • crates/marmot-app/src/client/mod.rs
  • crates/marmot-app/src/client/sync.rs
  • crates/marmot-app/src/config.rs
  • crates/marmot-app/src/directory/cache.rs
  • crates/marmot-app/src/directory/methods.rs
  • crates/marmot-app/src/directory/sync.rs
  • crates/marmot-app/src/groups.rs
  • crates/marmot-app/src/lib.rs
  • crates/marmot-app/src/messages/intents.rs
  • crates/marmot-app/src/notifications.rs
  • crates/marmot-app/src/notifications/tests.rs
  • crates/marmot-app/src/relay_plane/directory.rs
  • crates/marmot-app/src/relay_plane/mod.rs
  • crates/marmot-app/src/relay_plane/telemetry.rs
  • crates/marmot-app/src/relay_plane/tests.rs
  • crates/marmot-app/src/relay_telemetry_export.rs
  • crates/marmot-app/src/relay_telemetry_export/tests.rs
  • crates/marmot-app/src/runtime/account_worker.rs
  • crates/marmot-app/src/runtime/commands.rs
  • crates/marmot-app/src/runtime/mod.rs
  • crates/marmot-app/src/runtime/tests.rs
  • crates/marmot-app/src/tests.rs
  • crates/marmot-app/tests/relay_runtime.rs
  • crates/marmot-app/tests/relay_telemetry_otlp.rs
  • crates/marmot-forensics/src/audit.rs
  • crates/marmot-forensics/src/audit/tests.rs
  • crates/marmot-markdown/src/inline.rs
  • crates/marmot-markdown/src/lib.rs
  • crates/marmot-markdown/tests/golden/bare_urls.json
  • crates/marmot-markdown/tests/golden/bare_urls.md
  • crates/marmot-markdown/tests/unit_autolinks.rs
  • crates/marmot-markdown/tests/unit_inlines.rs
  • crates/marmot-markdown/tests/unit_links.rs
  • crates/marmot-markdown/tests/unit_nesting_depth.rs
  • crates/marmot-uniffi/.gitignore
  • crates/marmot-uniffi/kotlin-support/io/crates/keyring/Keyring.kt
  • crates/marmot-uniffi/src/commands/account.rs
  • crates/marmot-uniffi/src/commands/group.rs
  • crates/marmot-uniffi/src/conversions/account.rs
  • crates/marmot-uniffi/src/conversions/event.rs
  • crates/marmot-uniffi/src/conversions/group.rs
  • crates/marmot-uniffi/src/conversions/relay.rs
  • crates/marmot-uniffi/src/markdown.rs
  • crates/marmot-uniffi/tests/smoke.rs
  • crates/storage-sqlite/src/account_projection/tests.rs
  • crates/storage-sqlite/src/chat_list/tests.rs
  • crates/storage-sqlite/src/timeline/tests.rs
  • crates/traits/src/engine.rs
  • crates/transport-nostr-adapter/src/lib.rs
  • crates/transport-nostr-adapter/src/sdk_client.rs
  • crates/transport-nostr-adapter/tests/inbound_routing.rs
  • dev/nostr-rs-relay-config.toml
  • dev/strfry.conf
  • docker-compose.yml
  • docs/marmot-architecture/hermes-agent-production-runbook.md
  • docs/marmot-architecture/hermes-openclaw-agent-integration-plan.md
  • docs/marmot-architecture/index.md
  • docs/marmot-architecture/overview/app-core-boundary.md
  • docs/marmot-architecture/overview/current-state.md
  • docs/marmot-architecture/overview/marmot-app-runtime.md
  • docs/marmot-architecture/overview/nostr-account-transport.md
  • docs/marmot-architecture/overview/observability.md
  • docs/marmot-architecture/relay-observability.md
  • docs/marmot-architecture/runtime-state-bounds.md
  • docs/marmot-architecture/telemetry.md
  • docs/quic-broker-deployment.md
  • docs/release/wn-homebrew.md
  • integrations/hermes/marmot/README.md
  • integrations/hermes/marmot/adapter.py
  • integrations/hermes/marmot/plugin.yaml
  • integrations/hermes/marmot/tests/e2e_connector.py
  • integrations/hermes/marmot/tests/e2e_deterministic.py
  • integrations/hermes/marmot/tests/test_adapter.py
  • integrations/hermes/marmot/tests/test_dev_scripts.sh
  • integrations/openclaw/marmot/AGENTS.md
  • integrations/openclaw/marmot/README.md
  • integrations/openclaw/marmot/index.ts
  • integrations/openclaw/marmot/openclaw.plugin.json
  • integrations/openclaw/marmot/package.json
  • integrations/openclaw/marmot/scripts/wn-agent-smoketest.ts
  • integrations/openclaw/marmot/src/account.ts
  • integrations/openclaw/marmot/src/channel.ts
  • integrations/openclaw/marmot/src/client.ts
  • integrations/openclaw/marmot/src/config.ts
  • integrations/openclaw/marmot/src/dispatch.ts
  • integrations/openclaw/marmot/src/inbound-runtime.ts
  • integrations/openclaw/marmot/src/inbound.ts
  • integrations/openclaw/marmot/src/live.ts
  • integrations/openclaw/marmot/src/messaging.ts
  • integrations/openclaw/marmot/src/outbound.ts
  • integrations/openclaw/marmot/src/security.ts
  • integrations/openclaw/marmot/src/transcript.ts
  • integrations/openclaw/marmot/test/client.test.ts
  • integrations/openclaw/marmot/test/config.test.ts
  • integrations/openclaw/marmot/test/dispatch.test.ts
  • integrations/openclaw/marmot/test/inbound-runtime.test.ts
  • integrations/openclaw/marmot/test/messaging.test.ts
  • integrations/openclaw/marmot/test/outbound.test.ts
  • packaging/systemd/hermes-gateway.service.example
  • packaging/systemd/hermes-marmot.env.example
  • packaging/systemd/openclaw-gateway.service.example
  • packaging/systemd/openclaw-marmot.env.example
  • packaging/systemd/wn-agent.service.example
  • release.md
  • scripts/cut-wn-agent-release.sh
  • scripts/hermes_marmot_connector_e2e.sh
  • scripts/hermes_marmot_container_entrypoint.sh
  • scripts/hermes_marmot_deterministic_e2e.sh
  • scripts/hermes_marmot_dev_setup.sh
  • scripts/install-hermes-marmot.sh
  • scripts/install-openclaw-marmot.sh
  • scripts/openclaw_marmot_container_entrypoint.sh
  • scripts/openclaw_marmot_dev_setup.sh
  • scripts/reset_tui_dev.sh
  • scripts/wait_for_relays.sh

Comment thread crates/agent-connector/README.md
Comment thread crates/cli/CHANGELOG.md
Comment thread release.md
Comment thread scripts/openclaw_marmot_dev_setup.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>
@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

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>
@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

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>
@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

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.

@erskingardner

Copy link
Copy Markdown
Member Author

Responding to the two agent reviews:

Adversarial review summary — all four points addressed:

  1. Install scripts 404 until first wn-agent-v* release → both install scripts now carry a header note that they require a published wn-agent-v* release (pre-rename releases ship differently-named assets, so a tag override can't bridge the gap), and cutting that release stays Add github CI workflow #1 on the post-merge checklist — agreed it's a hard gate, not optional cleanup (d7dfb37).
  2. Legacy dmd orphan invisible to wn daemon status → the CHANGELOG migration entry now leads with stopping the legacy daemon before the first wnd start, and names the empty-account-list symptom when the data dir isn't moved (d7dfb37).
  3. Bundled non-rename changes → those Unreleased CHANGELOG entries (socket 0600 atomic bind, QUIC SSRF hardening, daemon framing) describe work that landed in earlier PRs; this PR only renamed the binary names inside their text. The PR description now states this explicitly for bisect/revert.
  4. No automated naming regression gate → added scripts/check_legacy_naming.sh (3c7f774): retired darkmatter/dark matter/dmd/dm-agent/DM_*/bare-dm/Dm*-ident tokens now fail the build outside the documented historical exclusions, with direct-message semantics allowlisted. Wired into just fast-ci, just ci, and the Rust format CI job.

Non-blocking stale-name pass — all five listed lines (hermes README:26/171, runbook:37/151/184) were fixed in e05e11f, mapped to "White Noise" (phone app) or "MDK" (repo) by context; the two-word "Dark Matter" form is now covered by the CI gate above.

🤖 Addressed by Claude Code

@erskingardner erskingardner merged commit e712232 into master Jul 4, 2026
21 checks passed
@erskingardner erskingardner deleted the claude/competent-lehmann-2b46b7 branch July 4, 2026 11:52
erskingardner added a commit to marmot-protocol/whitenoise-mac that referenced this pull request Jul 4, 2026
…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>
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