meter-verify · v2.0.1 · 2026-09-30 · sha256 45a97c9e44962b4e

meter-verify v2.0.1A

Immutable. This exact content never changes and is served at /api/v1/blob/45a97c9e44962b4e.

---
name: "meter-verify"
description: "Verify CocoMeter outcome evidence for a run and mark whether measured work reached outcome level L4."
version: "2.0.1"
author: "CocoPlus"
tags:
  - cocoplus
  - cocometer
---

Your objective is to implement `$meter verify <run-id> [--evidence "<description>"] [--update]`.

Before proceeding, verify that `.cocoplus/` exists. If not, output: "CocoPlus not initialized in this directory. Run `$pod init` to begin." Then stop.

## Contract

Read the matching meter record from `.cocoplus/meter/`, `.cocoplus/lifecycle/meter/`, or the active session meter file. Compare the recorded output against explicit evidence supplied by the operator or available in lifecycle artifacts.

Report:

- Run ID
- Evidence source
- Outcome level, including whether L4 was reached
- Verification confidence
- Any missing proof needed before the result can be treated as verified

If `--update` is supplied, append a verification envelope with timestamp, evidence summary, confidence, and outcome level to the run's meter artifact. Do not overwrite raw usage counters or transcript reconciliation data.

## Exit Criteria

- [ ] Missing run records produce a clear "not found" result.
- [ ] Verification distinguishes measured activity from outcome proof.
- [ ] L4 is claimed only when the artifact demonstrates durable user-visible outcome.
- [ ] `--update` preserves existing metering fields and appends verification metadata.

## Anti-Rationalization

| Shortcut / Temptation | Why It Fails |
|-----------------------|--------------|
| Treat the skill as complete because the file exists | Skill contracts must describe observable behavior and verification, not just command names. |
| Skip artifact and safety checks for a small command | Small commands still mutate state or guide execution; preserve the same gates. |