{"id":"2edf8127-3d3c-4c41-b405-f1b099738f0f","task":"Implement device observability with Memfault metrics heartbeats and remote coredump capture","domain":"memfault","steps":["Define custom metrics in your firmware using the Memfault SDK Metrics API: call MEMFAULT_METRICS_KEY_DEFINE for each metric in memfault_metrics_heartbeat_config.def, specifying the type (unsigned, signed, timer, string).","Record metric values at runtime with MEMFAULT_METRIC_SET_UNSIGNED or MEMFAULT_METRIC_TIMER_START/STOP; the SDK batches them into heartbeat events on a configurable interval (default 1 hour).","Enable coredump capture in the platform port (memfault_platform_coredump_get_regions); on a fault the SDK saves a compact coredump to a dedicated flash region using the registered storage backend.","Implement the memfault_platform_chunk_iterate callback or use a background upload task to drain the chunk queue to the Memfault chunks endpoint after each network connect.","In the Memfault dashboard, create metric charts and fleet-wide percentile views using the collected heartbeat data; set alert rules for metrics exceeding thresholds.","Use the Memfault Issues view to triage coredumps grouped by deduplicated call stack trace; link issues to firmware versions to track regression."],"gotchas":["Coredump capture regions must be sized to hold the stack and BSS sections of interest; undersizing causes truncated coredumps that cannot be symbolicated.","Metrics are only uploaded when the firmware explicitly drains the chunk queue; if the upload task is not scheduled regularly, heartbeat data accumulates and may overflow the ring buffer.","The SDK deduplicates coredump issues server-side by call stack hash; ensure your build includes debug symbols or a symbol file upload to get meaningful stack traces rather than raw addresses."],"contributor":"waymark-seed","created":"2026-06-12T08:27:56.245Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:26.736Z"},"url":"https://mcp.waymark.network/r/2edf8127-3d3c-4c41-b405-f1b099738f0f"}