Provenance
Every number we publish, and where it comes from
There are 20 of them. Each carries a label saying what kind of number it is, and most carry the artifact they come from and the date that artifact last changed. No figure on this page is typed by hand — the prose around them is.
We do this because the numbers on a data company's website are the part a buyer can least easily check, and because ours are small. A figure with a source you can name is worth more than a larger one without.
The four labels
Every figure we publish is one of these four, and the label is part of the figure rather than a comment on it.
measured | computed from a committed artifact named in `source` |
|---|---|
derived | computed from measured values |
target | intended, not achieved — never publishable as inventory or capability |
none | a real, deliberate zero |
target is the one to watch. A target is what a capture brief is scoped to produce. It is not footage we hold, and it may never be read as availability.
Four containers and our own JSON schema ship. MCAP and WebDataset do not. What arrives, and in what container.
13 figures
Measured
Computed from a committed artifact, named in the source column. Re-run the command below and you get these numbers back.
| Figure | How it is arrived at | Source artifact | Source last changed |
|---|---|---|---|
1 end-to-end annotation runsvalidated_runs |
count of *_Annotation.json files tracked by git in the engine's sampledata/ | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
1,843 framesreference_run_frames |
tracks.hand_control.total_frames_annotated | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
30 fpsreference_run_fps |
fps field | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
16 segmentsreference_run_action_segments |
len(actions) | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
294 entriesreference_run_kinematic_entries |
len(tracks.kinematics_3d) — one entry per detected hand per sampled frame, not a frame count | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
185 framesreference_run_kinematic_sampled_frames |
count of distinct tracks.kinematics_3d[].frame_idx | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
5 timeline tracksreference_run_schema_tracks |
len(tracks) | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
173 HTTP routesbackend_routes |
regex count of router decorators in routers/*.py | fourthuman_engine_api/routers |
2026-09-10 |
32 public pagesweb_pages |
public routes in routes.json — the registry vite, the sitemap, the chrome and the SEO baseline all derive from | fourthuman_web_suite/routes.json |
2026-09-10 |
6 domainscatalogue_capture_domains |
count of non-simulation capture briefs in the registry | fourthuman_engine_api/config/capture_briefs.json |
2026-09-09 |
5 export formatsdelivery_formats_implemented |
detected in fourthuman_engine_api/services/ by the writer or library each format requires — not asserted Implemented: FH-Ego v1 JSON, LeRobot v2.1, HDF5, Zarr v2, TFRecord (RLDS-style). P.6 executed 13-08-2026 (D15); MCAP/WebDataset retired from the offer, verified via the admin format bench. |
fourthuman_engine_api/services |
2026-09-10 |
24 durable storespersistent_stores |
count of distinct .db filenames referenced in backend source Distinct stores, not connect() call sites. Store(s): accounts.db, api_keys.db, audit_log.db, capture_partner_profiles.db, clip_origin.db, cohorts.db, consent_ledger.db, consent_publication.db, crm.db, cycle_settlements.db, deliveries.db, earnings.db, engagements.db, equipment.db, leads.db, payouts.db, pipeline_jobs.db, qa_verdicts.db, quotes.db, releases.db, request_throttle.db, retention.db, signoffs.db, tasks.db. |
fourthuman_engine_api/services |
2026-09-10 |
0 dev-only storesin_memory_placeholder_stores |
count of PROVENANCE: placeholder markers Lost on process restart. No published figure may derive from these. |
fourthuman_engine_api |
2026-09-10 |
2 figures
Derived
Aggregates over values held in a committed artifact. No new observation enters at this step — though the arrays they aggregate live in the file, not in the table above.
| Figure | How it is arrived at | Source artifact | Source last changed |
|---|---|---|---|
0.8712 confidence (0-1)reference_run_mean_hand_confidence |
arithmetic mean of tracks.kinematics_3d[].confidence — MediaPipe handedness classifier score, one per detected hand | fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
0.508 confidence (0-1)reference_run_min_hand_confidence |
min of tracks.kinematics_3d[].confidence — MediaPipe handedness classifier score, one per detected hand Published deliberately. The floor matters more than the mean for a buyer assessing worst-case quality. |
fourthuman_engine_api/sampledata/Egocentric_Sample_2_Annotation.json |
2026-08-21 |
3 figures
A real zero
Not missing, not pending — nothing is there, and we publish it. Our main competitor's equivalent zero is measured and sits in the notes below.
| Figure | How it is arrived at | Source artifact | Source last changed |
|---|---|---|---|
0 customersnamed_customers |
we are pre-revenue; no company may be presented as a customer Our main competitor also names zero across 2,213 URLs, but does not say so. We do. |
no artifact — see the method | — |
0 attestationsthird_party_attestations |
we hold no SOC 2, ISO 27001, or equivalent We publish the consent-ledger mechanism instead — verifiable today, where a badge attests to a process. |
no artifact — see the method | — |
0 hourscaptured_dataset_hours |
the Capture Partner network is in pilot; no delivered inventory Catalogue entries carry targetVolume + availability and are commissioning targets, never inventory. |
no artifact — see the method | — |
2 figures
Target
What a brief is scoped to produce, never what exists. A target may not be read as inventory or as capability.
| Figure | How it is arrived at | Source artifact | Source last changed |
|---|---|---|---|
182,700 clips (target)catalogue_target_clips |
sum of target_volume across non-simulation capture briefs — every input is itself a target agreed per brief, never delivered inventory | fourthuman_engine_api/config/capture_briefs.json |
2026-09-09 |
1,505 hrs (target)catalogue_target_hours |
same sum, hours. Excludes simulation-traversals: 10,000 of those hours are simulated scenes, a different product that is not addable to human capture | fourthuman_engine_api/config/capture_briefs.json |
2026-09-09 |
Recompute them yourself
The table above is generated from a single file, and that file is generated from the artifacts named in it. One command rebuilds the lot:
python3 .agents/generate_facts.py
If a figure on this page disagreed with the artifact it names, that command would change the file and our build would fail. That is the whole mechanism, and it is deliberately unexciting.
What it does not cover, said plainly: a number typed straight into a sentence is not on this page, and nothing we run looks for one. That gap is real and unguarded, which is exactly why the figures on this page are the only ones we bind into a sentence anywhere.
FH-Ego v1, field by field · The clip most of these are computed from