aayudha docs Built from de79988 (2026-10-26)

measure: find out whether the Goal's number moved

After a release, the question is whether the number moved, counted the same way as before. measure computes a Goal's metric exactly as its baseline was computed, over a new window, and writes the Result into the Goal.

Field Value
In plain words Measures a Goal against its baseline, the same way as before, and writes the result into the Goal.
Journey stage Measure and learn
Accountable seat Data & AI Architect (Shuka)
Owns the thresholds Revenue Architect (Kuber)
Does the work Shuka, the Accountable seat's twin, in the spec model lane, with the seat's paired human when it has one
Consulted Product Strategist (Arjun)
Informed Founder (Atri)
Layers it can touch L08 Analytics / reporting
Who reasons no model: it is deterministic
Writes as the bot identity (a GitHub App); without one, your identity, tagged as human fallback
Where it runs the aayu command, a skill in your agent, an MCP tool (only with [mcp] expose_writes on)
The skill your agent reads skills/measure/SKILL.md

When to use it

Did your change cause the difference? Plan an experiment before the release.

Run it

The binary computes the number, with no model, so anyone can run it again. Your agent explains the Result:

Use the measure skill to measure Goal issue 12 against its baseline from payments.csv and events.jsonl, then tell me what the Result means and how far it can be trusted.

Needs setup: a billing export (CSV) or an events export from Application Insights, CloudWatch RUM, or GA4 BigQuery (JSON lines). For --live, connect Azure, AWS, or Google Cloud first. A Goal whose Metric is a PostHog or Sentry baseline needs that integration (PostHog and Sentry).

aayu measure [<issue>]
Input Required What it does
<issue> no Goal or Initiative to measure; without it, only the cohorts and North Star are reported.
--metric no acquisition, activation, retention, referral, revenue, north_star, aayu:founder_minutes_per_pr (from the actions log on the ledger), or <source>:<metric> [filter]; default the issue's Metric.
--from no Window start (YYYY-MM-DD, UTC); default 28 days before --to.
--to no Window end, exclusive (YYYY-MM-DD, UTC); default today.
--billing no Billing export (CSV).
--appinsights no Application Insights events export (JSON lines).
--aws no AWS CloudWatch RUM events export (JSON lines).
--gcp no Google Analytics 4 / Firebase BigQuery events export (JSON lines).
--live no Pull the window's events live from configured cloud integrations instead of an export file: azure, aws, gcp, comma-separated.
--engine no Query engine for the snapshot; duckdb is optional and shelled out. One of: sqlite, duckdb.

The most common run: aayu measure 12 --billing payments.csv --appinsights events.jsonl.

What you get back

A SQLite snapshot of the window, and a Result on the Goal: the value, baseline, target, verdict, snapshot hash, and query. The Goal moves to status:done when the target is met, else status:measured.

You should see a Result whose first line starts Target met: or Target not met:. Exit 4 with no Result means it refused, for example because no cohort is complete yet: rerun with a later --to. See exit codes.

Gates

It checks these before it acts, and stops when one fails:

What only a person does

The registry reserves no step of this verb for a person.

A person decides what the Result means. A target is never moved to make it pass: a new target for the next period is a Decision only a person accepts, through decide.

What's next