You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Living tracker for "does every promised feature actually work, end to end?"
Pair with FLYWHEEL.md (the "done" bar: merged → released → deployed → verified live by me, with evidence).
Public repo: feature status only, no pricing/MRR/funnel (those live in clawmetry-cloud/AUDIT.md).
How to use this file
Every promised, user-facing capability gets a row with an honest Status.
Status legend:
✅ Verified - confirmed working end to end this cycle, with evidence noted.
🟡 Needs verification - believed working but not re-confirmed live this cycle.
🔴 Broken / gap - confirmed not working, or promised but not real (link the issue).
🛠️ Fixed (pending verify-live) - fix merged/landed; awaiting production verification.
🚧 Preview / partial - ships but plan-gated, OTA-later, or incomplete; copy must say so.
When you verify a row, replace the Status + add the date and the evidence (snapshot decrypt / screenshot / device photo).
A 🔴 that is user-facing is a conversion bug (the hosted trial IS the product) - fix or honestly degrade, never leave a silent blank.
Audit method (the only valid "pass")
Walk the trial path: hosted dashboard as a trial user, switch runtimes, click the tab → zero blank/wrong/error states + clean console.
For data/observability features: send a real message/turn and watch it travel channel → daemon → DuckDB → handler → rendered tab → (cloud) snapshot.
Verify across all 32 runtimes, not just OpenClaw (/api/runtimes).
For device-facing slices: the 4-repo chain (pro adapter → OSS _build_device_summary → cloud wheel/relay → firmware render).
A. Onboarding & cloud connect
#
Promised capability
Status
Notes / evidence
A1
pip install clawmetry && clawmetry zero-config local dashboard
Fixed in PR #3375 (this branch). Was email-only despite cloud OAuth being live. Reuses the clawmetry connect loopback bridge; registers node + starts sync. Verified: served HTML/JS + routes + browser screenshot + tests. TODO: verify-live a real Google/GitHub round-trip connects a node.
A2b
Connect must clear the local-only nocloud marker
🛠️
Real burn 2026-06-28 (founder): a local-only install writes ~/.clawmetry/nocloud → is_cloud_disabled() True → the daemon runs LOCAL-ONLY and never pushes, so "Enable Cloud Sync" silently did nothing and cloud showed 0 nodes despite a healthy syncing daemon. Fixed in PR #3375: new config.enable_cloud() clears the marker, called from _full_connect_with_key + both cmd_connect paths, which now also restart the daemon (not just "start if absent") so it re-evaluates cloud mode. Founder's node remediated live (marker removed + reconnected → 1 node visible).
A2c
Account/key alignment on connect
🟡
Same burn: the node synced under a different account key (cm_c9af6) than the browser session (cm_f6a68e), so the fleet showed 0 nodes. Re-connect aligns them, but consider surfacing "this node is on account X, you are viewing account Y" instead of a silent empty fleet.
A3
Email OTP cloud signup from the modal
🟡
Works as a signup, but note: the JS email path opens app.clawmetry.com/auth?token= and does not itself write the local node config (unlike the new OAuth path which fully connects). Consider routing email verify through _full_connect_with_key too for parity.
A4
clawmetry connect CLI (OAuth + email + key paste)
🟡
Loopback OAuth bridge present (cli.py:_oauth_browser_login); re-verify all three paths.
C. Control plane (the landing's headline promises)
#
Promised capability
Status
Notes / evidence
C1
One-click Kill a runaway agent from cloud
🔴/🚧
Memory flags this as historically vapor / read-only-conflict / disabled on device. Chain exists (enqueue_node_action → heartbeat → _dispatch_pending_action). Audit priority: confirm it actually kills a real agent E2E, or mark the copy as Preview.
C2
Pause / resume an agent mid-task
🔴/🚧
Same as C1 - recon done (SIGSTOP/CONT, proxy pause_<sid>), real E2E unproven. Verify or honestly gate.
C3
Approvals (approve/deny) for family runtimes
🟡
Was DEAD for claude_code/codex/cursor (fixed #2984). Re-verify a real pending approval resolves.
C4
Hallucination / anomaly detection
🟡
Trajectory-anomaly research done; confirm what's actually shipped vs landing copy.
C5
Crons CRUD via gateway RPC
🟡
C6
Custom alerts / budgets / webhooks
🟡
Pro-gated; confirm gate + upgrade CTA (no silent no-op).
D. Cross-cutting invariants (from FLYWHEEL)
#
Invariant
Status
Notes
D1
Cloud parity: every data card has a cm-cloud-* interceptor or honest empty state
🟡
Sweep for silent blanks on hosted trial.
D2
No OpenClaw-only copy anywhere (runtime-neutral)
🟡
Many surfaces still need the sweep (burned 2026-06-01).
D3
CPU budget ≤ ~5–10% of one core
🟡
Profile daemon with sample <pid>; caps + result-cache in place.
D4
No em-dashes / double-dashes in user-facing copy
🟡
Grep payloads before shipping copy.
Open items / next actions (priority order)
C1/C2 kill + pause E2E - the biggest credibility risk: landing promises them; prove real or gate as Preview.
A2 verify-live - real Google/GitHub OAuth round-trip connects a node + snapshot renders on cloud (PR #3375).
B8 12-runtime matrix - fan out a per-runtime E2E (/workflow), assert each lands in Brain by agent_type with cost+tokens.
A3 email-path parity - make the email modal path also fully connect the node (currently signup-only).
D1 cloud-parity sweep - hunt silent blank cards on the hosted trial.
Last updated: 2026-06-28 - seeded during the cloud-OAuth-CTA fix. Update rows as you verify them.