Context Traces
Every resolution — successful, blocked or rejected — creates a trace: a public seif.observation-trace.v1 envelope (@and2carvalho/seif-observability/wire) whose traceId is the traceRef.
| Record | Contents |
|---|---|
context.request.v1 | Build ref, full definition and artifact digests, runtime execution identity and instance, content expiration, consumer, requested objective, operational environment, actual resolutionEnvironment, correlation id, input digest and keys; the input itself only under content retention (redacted, ≤ 16 KiB). |
application.turn.prepared.v1 | The canonical SEIF Application turn observation: turn status/job/source, Context Kernel available/inline/on-demand/omitted/missing-required components, materialized and rendered components, projection facets and revision, plan status. |
context.selection.v1 | Objective source, profile, kernel result, projection, the per-layer decision table (available, applicable, desired, selected, materialized, projected, rendered, currentness, excluded-by-currentness, reasons, unknowns), materials and expandable refs. |
context.render.v1 | Rendered digest, message count, budget; messages only under bounded content retention (≤ 256 KiB), otherwise METADATA_ONLY. |
context.result.v1 | Status, reason, plan, unknowns, provenance (source revisions, embedded vs live), duration; or the rejection error. |
context.expansion.v1 | One per bounded expansion. |
context.consumption.v1 | One per consumer report: consumed digest, rendered digest, MATCHES_RENDERED/DIFFERS_FROM_RENDERED, provider/model as reported (redacted), retained messages under content retention, optional idempotency reportId. |
context.provider.v1 | One per live provider lookup (0.4.0): provider, binding revision/digest, provider version and its source, keyed request digest, status/code, currentness, upstream revision, pseudonymous item locators and fingerprints, duration, retention, retained items only under content retention. See Runtime Context Providers. |
OBSERVE lists traces live while the Workstation's runtime runs (or a connected one); search by consumer, Build, correlation id, status or trace, 30 rows at a time. While a runtime waits for its first request, Send test request sends a Context Test's input through it over HTTP (correlation workstation-test:<test id>; consumption stays UNKNOWN — the Workstation calls no model). Selecting a trace shows Why this context? (layers rendered and not, recorded unknowns, consumption), Investigation (ask a question or pick one of four investigations), why each layer was supplied or not, source revisions, rendered context (or METADATA_ONLY — never reconstructed) and the consumer report (or Consumed: UNKNOWN); the timeline (input → resolve → select → expand → render → consume → result) and per-layer stages are one click away. The coordinate strip shows the trace's own Build, environment and deployment. Compare… diffs two traces semantically (status, budget, per-layer stages, materials, projection facets). Import trace… opens an envelope file.
A trace is an observation of what the runtime did. It is not Evidence and grants no authority.
Deployed investigation and reproduction
Observe → Deployed traces searches Registry history by environment, Build, deployment, consumer, objective, status, contextRef, correlationId, from/to time, unknown/stale/mismatch presence, supplied outcome and — through indexed read models — context dimensions: layer (rendered), selectedLayer, layerCurrentness, material (digest or locator), source (including provider:<id>), provider and providerStatus. Dimension searches require a Project and are driven by covering indexes over a tenant-scoped term dictionary (100k traces: p95 < 0.1 ms on an Apple M4; see scale.json). Indexes are read models, not authority, and follow retention. The Inspector shows the trace's historical Build/environment/deployment/binding, not the current design selection, and a provider card explains lookup → selection → render → consumption for live material.
Trace lineage connects Project → Build → registration → promotion → deployment → resolution → trace → consumption → optional outcome. All are product facts or observations; TRACE and OUTCOME never become authority. Ingestion verifies deployment/Build/environment correlation and append-only record history.
Historical investigation opens a dedicated workspace from Observe: At the time → Now & compare → Reproduce → Improve. It loads the exact verified Build and exposes source material availability separately from the trace's recorded rendering. A reproduction records its own bounded receipt. EXACT_REPRODUCTION additionally requires full artifact identity, matching runtime execution identity, intact original input, recorded resolution environment, historical evaluation time, deterministic retained dependencies and identical semantic decisions and rendering. Equal text with incomplete conditions is EQUIVALENT_RENDERED_CONTEXT. Missing input/material, expiry, incompatible runtime and external nondeterminism are explicit limitations. See Reproduction for every state and the regression workflow. Legacy provenance is never fabricated from today's runtime.
Analytics currently aggregate trace volume, Build/environment distribution, average estimated tokens, unknown/stale observations, consumption mismatch, runtime rejection count and explicitly supplied success labels. No causal quality/accuracy inference is made. Reliability Impact groups explicitly supplied evaluation metadata by Build and experiment, while preserving unknown denominators and the absence of causal attribution.
Versioned tools
Context and tool delivery documents tool declarations and profile rules, v2 tool Builds, executor bindings, synthetic tests, operator approval, SDK integration and effect-free replay. Tool-free Builds preserve the v1 contract.