Your objective is to refresh the CocoMeter dashboard with updated Snowflake data.
Pre-flight Check
Check that .cocoplus/meter-view.html exists. If not:
Output: "No meter dashboard found. Run $meter view first." Then stop.
Check that .cocoplus/meter/request-map.jsonl exists. If not:
Output: "No attribution data found. Run $meter on and execute some pipeline stages first." Then stop.
Re-execute Dashboard Generation
Execute steps 2–11 of $meter view exactly:
- Read and partition
request-map.jsonl(Direct IDs vs Anchor IDs) - Execute Pass 1 and Pass 2 Snowflake queries
- Join Snowflake rows with attribution data
- Compute aggregations
- Serialise merged dataset as JSON
- Read
meter-view.html.template - Inject data between
/* __METER_INJECTION_START__ */and/* __METER_INJECTION_END__ */ - Write to
.cocoplus/meter-view.htmlatomically - Update
.cocoplus/meter/last-sync.json
Do NOT open the browser. Only refresh the file.
Output
✓ CocoMeter dashboard refreshed.
Snowflake rows added: <N> | Total requests tracked: <N>
File updated: .cocoplus/meter-view.html
(Reload the tab in your browser to see the latest data.)
Anti-Rationalization
| Shortcut / Temptation | Why It Fails |
|---|---|
| Open the browser after sync | $meter sync is a background refresh — the developer has the tab open already |
| Skip if Snowflake returns same row count | Row count may be the same but token values may have updated |
Exit Criteria
-
.cocoplus/meter-view.htmlregenerated with latest data -
.cocoplus/meter/last-sync.jsonupdated - Output confirms row count and file path
- Browser NOT opened