SEDIMENT
Halftone print illustration of an excavated ridge under a deep blue sky. A vintage desktop computer rests on the sunlit orange strata below the peaks; older terminals and green code lie embedded in the dark rock face beneath.

The pipeline, in section.

Traces without outcomes aren't training data. Observability tools see the gateway; Sediment sees the gateway, the editor, and the CI run. It ties them together. Claude Code, Copilot, and Codex each speak their own dialect; Sediment normalizes them into one dataset. Only facts persist; everything else is recomputed from them. Four stages, one direction of flow.

source control claude code · copilot · codex model apis OTEL model traffic git history · CI/CD callback CUSTOMER PERIMETER SEDIMENT · CAPTURE LLM Gateway 01 / FACTS sediment.db · git mirror 02 / DERIVATIONS completions → commits → ci 03 / TRIPLES triples + session rollouts 04 / PROJECTIONS dpo · sft · recovery · rlvr Your fine-tuning stack: TRL · OpenEnv · NVIDIA NeMo claude code · copilot · codex source control model apis git history · CI/CD OTEL callback CUSTOMER PERIMETER SEDIMENT · CAPTURE LLM Gateway 01 / FACTS sediment.db · git mirror 02 / DERIVATIONS completions → commits → ci 03 / TRIPLES triples + session rollouts 04 / PROJECTIONS dpo · sft · recovery · rlvr Your fine-tuning stack: TRL · OpenEnv · NVIDIA NeMo
01

Facts

what we capture

Immutable records of what actually happened: appended, never mutated.

  • completions Every gateway request/response pair
  • developer decisions Accept, reject, revert: from Claude Code, Copilot, and Codex
  • pushes Commits and workflow runs, straight from source control
  • ci outcomes Build pass/fail for every attributed commit
  • git mirror Full history per repository, including session attribution notes
02

Derivations

what we compute

Pure functions of the facts: recomputable over all history, never a source of truth.

  • correlations Each completion tied to the commit that carried it: deterministic git-notes attribution first, similarity only as fallback
  • reward linkage CI outcomes attached to correlated completions
  • rollouts Session trajectories with a terminal, verifiable reward
  • eval split Deterministic, session-keyed holdout
03

Clean triples

the canonical artifact

One resolved record per correlated completion.

  • the completion And every decision made on it
  • survival evidence What happened to the code, and the reward from CI
  • provenance Which derivation and policy version produced it
  • split assignment Train or eval, fixed at the triple
  • session rollouts The second canonical artifact: full session trajectories with their rewards · rows below
04

Projections

what we export

Thin, stateless projections over triples and rollouts: plain JSONL, inside your perimeter.

  • dpo pairs CI-pass set against CI-fail: same prompt, same model
  • sft sets High-confidence completions that passed CI
  • recovery pairs Red-to-green CI transitions, mined
  • rlvr Verifiable task specs with re-runnable CI rewards, plus reward-labeled rollouts
  • outcome report Which model actually performs best on your code
exhibit

The artifact

what stage 04 hands to your fine-tuning stack
{"instance_id":"acme-9f41c2-seg0","turns":[{"new_messages":[{"role":"user","content":"Fix the flaky retry backoff test"}],"completion":"def test_retry_backoff():\n    clock = FakeClock()\n    …","decisions":[{"accepted":true,"explicit":true,"source":"claude-code","file_path":"payments/tests/test_retry.py"}]}],"terminal_outcomes":[{"result":"passed","workflow_name":"CI","commit_sha":"9f41c2e"}],"provenance":{"attribution":"notes","split":"train"}}
{"instance_id":"acme-31d8a0-seg0","turns":[{"new_messages":[{"role":"user","content":"Add retries to the webhook client"}],"completion":"class WebhookClient:\n    def post(self, url, payload, retries=3):\n    …","decisions":[{"accepted":false,"explicit":true,"source":"copilot","file_path":"clients/webhook.py"}]}],"terminal_outcomes":[],"provenance":{"attribution":"notes","split":"train"}}
{"instance_id":"acme-c07be4-seg0","turns":[{"new_messages":[{"role":"user","content":"Migrate the session store to SQLite"}],"completion":"*** Update File: store/session.py\n    …","decisions":[{"accepted":true,"explicit":false,"source":"codex","file_path":"store/session.py"}]}],"terminal_outcomes":[{"result":"failed","workflow_name":"CI","commit_sha":"c07be44"}],"provenance":{"attribution":"notes","split":"eval"}}