Generation Telemetry
videoclaw records generation telemetry as project events. The goal is simple: every provider submission and poll should leave enough machine-readable evidence to answer what route ran, how many tasks were sent, what it cost when the provider reports cost, how long it took, and how many outputs were ingested.
Where it is recorded
Telemetry is appended to the existing event ledger:
projects/<slug>/events/events.jsonlEach record uses event type:
generation.telemetry.recordedThe payload schema is versioned with schemaVersion: 1.
What is captured
Each telemetry payload can include:
projectSlug,routeId,operationKind,status, anddryRuntaskCountandsceneIndices- execution config such as aspect ratio, resolution, audio flag, output count, average duration, prompt word count, and reference counts
externalJobIdwhen live submission or polling exposes oneoutputsIngestedafter polling- provider-reported cost fields:
usdand/orcreditsCharged generationTimeSecwhen provider output exposes itissuesfor blocked, failed, or warning-bearing runs
Dry-runs are recorded as telemetry, but they are not used as historical cost samples.
Cost-estimate integration
vclaw video cost-estimate still uses the static Seedance defaults when there is no historical provider-reported USD data.
When completed seedance-direct telemetry exists with both cost.usd and taskCount, project estimates can switch to:
{
"estimateSource": "historical-telemetry",
"telemetry": {
"sampleCount": 1,
"matchedRouteId": "seedance-direct",
"averageSeedancePerSceneUsd": 0.5,
"lastRecordedAt": "2026-05-03T12:00:00.000Z"
}
}Credits are recorded but not converted to USD. Do not add a conversion unless the route has an explicit, verified conversion contract.
Operator guidance
Use telemetry to tune estimates and investigate provider behavior, not to replace the execution report. The execution report remains the canonical artifact for the latest execution state; telemetry is the longitudinal ledger for submissions, polls, costs, durations, and failures.
Public helpers
The package exports helpers for integration code:
appendGenerationTelemetryreadProjectGenerationTelemetryreadPortfolioGenerationTelemetrybuildGenerationTelemetryFromReportbuildGenerationTelemetryFromPollfindHistoricalSeedanceCostTelemetryextractProviderMetrics
