Engagements
Every registry project as a client — deterministic estimates with an AI/broker/platform cost decomposition, evidence-accrued actuals, and estimate-vs-actual variance per engagement.
Table of Contents
💼 Engagements — estimates vs actuals
Every registry project is a client; every entry is a statement of work produced by
tools/dash estimate (deterministic estimator-v1 over open issues, priced by the
rate card) and settled by
tools/dash ledger (actuals accrued from auditable evidence — claude-code-action CI runs,
Claude-attributed commits and PRs — into _data/engagements.yml). Each estimate decomposes along
the AI-era division of labor: AI performs the implementation, the human broker builds
context, defines goals, and validates, the platform runs the pipelines. The traditional
column is what the same scope would have cost at pre-AI consulting hours — its ratio to the
estimate is the engagement’s leverage. Model and lifecycle:
docs/ESTIMATION.md.
$1285
$0
$0
$0.0
12
12.7×
Status counts:
estimated 12
approved 0
in progress 0
delivered 0
reconciled 0
cancelled 0
— estimates are proposals: nothing accrues actuals until a human approves
(tools/dash ledger --set-status ENG-NNNN=approved).
Clients
| Client | Engagements | Open | Delivered | Estimated | Actuals |
|---|---|---|---|---|---|
law-ai |
1 | 1 | 0 | $342.74 | — |
lifehacker.dev |
2 | 2 | 0 | $191.9 | — |
ai-seed |
2 | 2 | 0 | $190.66 | — |
barodybroject |
2 | 2 | 0 | $190.66 | — |
zer0-mistakes |
2 | 2 | 0 | $190.66 | — |
githubai |
2 | 2 | 0 | $137.1 | — |
it-journey |
1 | 1 | 0 | $41.77 | — |
Engagements
Est. = AI implementation + human brokerage + platform + confidence
contingency. Lev. = traditional-consulting quote ÷ estimate. Every actual links to its evidence
(run, commit, PR) inside _data/engagements.yml.
| ID | Client | Work item | Type | Tier | Status | Est. | Actual | Variance | Lev. |
|---|---|---|---|---|---|---|---|---|---|
ENG-0001 |
lifehacker.dev |
Work order: link-rot — broken #comments anchor on /news/field-notes... | bug | s |
estimated | $95.95 | — | — | 12.5× |
ENG-0002 |
zer0-mistakes |
a11y: dialog titles use a bare <h5 class="modal-title"> — heading-o... | bug | s |
estimated | $95.33 | — | — | 12.6× |
ENG-0003 |
barodybroject |
Deployment failure: a1edc96 | bug | s |
estimated | $95.33 | — | — | 12.6× |
ENG-0004 |
githubai |
Bug [BUG] test | bug | s |
estimated | $95.33 | — | — | 12.6× |
ENG-0005 |
ai-seed |
[CI Failure] ci-cd-pipeline on refs/pull/17/merge @ 8a9d774 | ci | s |
estimated | $95.33 | — | — | 12.6× |
ENG-0006 |
it-journey |
🚨 Dependency Security Issues (automated) | deps | xs |
estimated | $41.77 | — | — | 14.4× |
ENG-0007 |
law-ai |
evolve: run /evolve on top BACKLOG item | unknown | m |
estimated | $342.74 | — | — | 10.5× |
ENG-0008 |
lifehacker.dev |
[sev2] content-bug: missing-preview (/docs/ai-usage/) | bug | s |
estimated | $95.95 | — | — | 12.5× |
ENG-0009 |
zer0-mistakes |
fix: <html class="no-js"> is never upgraded to "js" — dead progress... | bug | s |
estimated | $95.33 | — | — | 12.6× |
ENG-0010 |
barodybroject |
Deployment failure: 40cbff9 | bug | s |
estimated | $95.33 | — | — | 12.6× |
ENG-0011 |
githubai |
[Auto] Repository Health Check | chore | xs |
estimated | $41.77 | — | — | 14.4× |
ENG-0012 |
ai-seed |
[CI Failure] ci-cd-pipeline on refs/pull/17/merge @ 99f1a5d | ci | s |
estimated | $95.33 | — | — | 12.6× |
How an engagement flows
- Estimate —
tools/dash estimateclassifies an open issue (labels, title, per-repo cost history) into a tier and prices it from the rate card: AI tokens at API list rates, broker hours at the card rate, CI minutes at runner rates, plus a confidence-based contingency. Same inputs, same estimate — the quote is reproducible, not negotiable. - Approve — the broker reviews the plan (approach, deliverables, acceptance), adjusts, and
signs:
--set-status ENG-NNNN=approved. Only then does the meter start. - Execute — the AI implements (sessions, CI runs, PRs). The daily
ai-usagerefresh harvests the evidence;tools/dash ledgeraccrues it to the engagement, deduped by URL. - Deliver & reconcile — on
delivered, variance closes the loop: estimate vs actual, band (±10% = on), and the actual leverage against the traditional quote.
Where the numbers come from
- Estimates:
_data/engagement_rates.yml(the rate card) — change a rate, re-run, and every open estimate reprices. - Actuals: /ai-usage/ ledgers (CI cost scraped from run logs, Claude commits/PRs) + optional local session costs from /ai-activity/.
- Cross-fleet spend context: the Cost Cockpit.
- Work-item supply: the /triage/ snapshot.
Updated 2026-07-23 02:36 UTC ·
source .github/scripts/dash-gen/engagements.py ·
register _data/engagements.yml · rate card _data/engagement_rates.yml