← All posts

Team report: each team and member as an outcome contract, activity underneath as evidence

Release notes 2026-09-15 — the team report (vocion-core#326, merged) reads worker runs against the org chart and states purpose, owner, KPIs, autonomy and spend weight per team and member; board and red-team runs are labelled as judgement.

Vocion Teamvocion-v2.69.0

Shipped: vocion-core#326, merged to main on 2026-09-15 as 775c5e10. Part of the 2026-09-15 release notes.

The outcome

A person responsible for a team of agents should be able to say, for each team and each member, what it is for, who owns the result, how it is measured, how it is doing, and what share of the spend it takes — without reading a log. Run counts, tokens and dollars are operational metrics. They belong underneath.

What it is

/dashboard/team-report reads worker_run rows (the long-running worker record from ADR 0004) against the org chart and presents an outcome contract per team and per member:

Runs, tokens and cents sit in a closed Evidence disclosure. Runs of kind board and red-team are labelled judgement and quality and carried separately, so a review cycle is never counted as output.

How it is authored

Two manifest additions (packages/core/src/libs/workspace/schemas.ts):

# teams/engineering.yaml
name: Engineering
goal: Keep main releasable every day with fewer human review hours
kpis:
  - key: prsMerged
    label: PRs merged
    target: 6
    baseline: 2
    unit: per 7d
    source: counts.prsMerged
    window: 7d

source: counts.<key> sums whatever a worker reports in its run's counts — any key a worker heartbeats becomes measurable. workspace.yaml gains a top-line goal: that heads the page. Older cores strip unknown keys, so a workspace can add these before the core that reads them is deployed.

What changed in the worker contract

POST /api/v1/worker-runs accepts kind (lead | board | worker | red-team | compact | snapshot, default worker) and model; POST /:id/complete accepts summary; GET /api/v1/worker-runs?kind= filters. Migration 0092 adds worker_run.kind, model, summary and team.goal, team.kpis, all with defaults. Existing rows read as kind = 'worker'; existing teams show "Nothing measured yet" with the YAML key to add.

The activity feed gains worker runs as a kind, with board and red-team rows badged.

Why the framing

The page follows the Product Design Manifesto: outcomes over activity; accountability with an owner; hide complexity, never hide truth. Its "outcome contract" — purpose, owner, KPI, baseline, target, permissions, quality threshold, escalation, current performance, autonomy level — is the manifesto's core model made visible.

The screenshot is a local workspace on the bundled engineering-team template; the numbers are fixtures.

Docs: [docs/entities/team.md](https://github.com/vocion/vocion-core/blob/main/docs/entities/team.md), [docs/entities/worker-run.md](https://github.com/vocion/vocion-core/blob/main/docs/entities/worker-run.md).

Where this lives in the repo

There is no feature flag; the page is on main from 775c5e10. related_version above is the core tag the post was verified against.