IBEX Harness
DocsBenchmarksBlogChangelogRoadmap
GitHub
IBEX Harness

Documentation

Architecture Decision RecordsADR-0002: Repository foundation bootstrapADR-0003: Branch protection and merge policyADR-0004: Protobuf and code generation policyADR-0005: Postgres migration strategyADR-0006: Auth protobuf contract (`ibex.auth.v1`)ADR-0007: Auth token validation implementationADR-0008: Security scanning and CI quality gatesADR-0009: Permission bitmap layoutADR-0010: Cryptography policyADR-0011: Proxy auth gRPC client and middlewareADR-0012: Proxy request normalization (OpenAI chat)ADR-0013: Proxy input validation and stable error envelopeADR-0014: Core domain migration sequencingADR-0015: Proxy rate limit skeleton (Phase 1)ADR-0016: Proxy agent identity verification (Phase 1)ADR-0017: Request ID and trace context strategy (Phase 1)ADR-0018: Graceful shutdown contract (Phase 1)ADR-0019: OpenTelemetry provider configuration (Phase 1)ADR-0020: Shared package boundaries — `packages/config` and `packages/apierror`ADR-0021: Prometheus Metric Catalog (Phase 1)ADR-0022: Health check contract (Phase 1)ADR-0023: Docs site architecture (Phase 1.5)ADR-0024: Benchmark data publishing modelADR-0025: LLM provider abstractionADR-0026: OpenAI client designADR-0027: Streaming dual-write strategyADR-0028: Auth cache designADR-0029: Token revocation propagation via Redis pub/subADR-0030: Directive versioning strategyADR-0031: System prompt injection strategyADR-0032: Session data model and retentionADR-0033: ClickHouse llm_traces schema and retentionADR-0034: Proxy overhead performance measurement methodologyADR-0035: Chat Idempotency-Key Redis dedupeADR-0038: Context assembly service design and gRPC contractADR-0039: Proxy Postgres ownership for session and directive storesADR-0040: Anthropic provider adapterADR-0041: Model capability registryADR-0042: Self-hosted OpenAI-compatible LLM adapterADR-0043: Tokenizer registry architectureADR-0044: Non-streaming response pipelineADR-0045: Streaming response transformationADR-0046: Embedder interface and profile registryADR-0047: Memory temporal validity foundationADR-0048: Memory multi-label categoriesADR-0049: Memory relationship graph readinessADR-0050: MCP server skeleton (transport, auth, audit)ADR-0051: Local LGTM observability stack (Phase 2.5 exit pull-forward)ADR-0052: Memory schema v2 expand (HNSW, quality columns)ADR-0053: Vector store abstraction and composite scoring v2ADR-0054: In-process Presidio PII detection in memoryADR-0055: Memory write-path exact and near-duplicate dedupADR-0056: Temporal-interval-aware conflict detectionADR-0057: Memory write-path persistence and orchestrationADR-0058: Semantic search FTS fallback triggerADR-0059: Hot cache read pathADR-0060: Memory service tenant isolation architectureADR-0061: Retrieval-quality benchmark methodologyADR-0062: Worker task observability and dead-letter handlingADR-0063: Extraction output schema v2ADR-0064: Extraction provider registry and batch executionADR-0065: Extraction batch idempotency and turn pointer orderingADR-0066: Extraction quality evaluation harnessADR-0067: Context capability catalog generate-and-diff for token budgetsADR-0068: Composite scoring-time relevance gateADR-0069: Context packer bounded DP knapsackADR-0070: Context formatting locked ordering and session nonceADR-0071: Context assembly gRPC degradation ladder and retrieval deadlineADR-0072: Extraction enqueue via worker HTTP (not Celery Redis wire format)ADR-0073: Organization Lifecycle and Cascading SuspensionADR-0074 Provider Credential StorageADR-0075 Per-Org Model Routing PolicyADR-0076: Circuit Breaker per ProviderADR-0077: Provider Fallback RoutingADR-0078: Operator runtime topology & environment contract (4.P.0)ADR-0079: Operator session RS256 dual-verify and TOTP step-upIBEX Console service rename and boundaryADR-0081: Fail-closed Proxy runtime controlsD2 metadata-only trace read contractD2 publication, identity, query, and lifecycle contract
ADRs›D2 metadata-only trace read contract
ADRs

D2 metadata-only trace read contract

Fail-closed, tenant-bound metadata reads for the first 4.D.2 vertical slice.

ADR-0082: D2 metadata-only trace read contract

  • Status: accepted for the first implementation slice; extended by ADR-0083 for identity/publication/query
  • Date: 2026-09-27
  • Issues: #907, #910

Decision

The first 4.D.2 vertical slice reads only the canonical PostgreSQL ibex_core.evidence_runs envelope. The API is a versioned, read-only operator surface under /v1/operator/traces, protected by the existing AuthService-verified operator session and OPERATOR_METADATA_READ. The server derives org_id from verified session claims, binds the request transaction to PostgreSQL RLS, and repeats the tenant predicate in every trace query.

The DTO exposes only fields proven by evidence_runs: trace/request/run/session/checkpoint identity, agent ID when persisted, status/error code, measured start/end/duration, schema/capture/completeness/sample state, and explicit source/freshness/retention state. Because this source does not expose an authoritative retention/deletion field, retention is unknown rather than inferred from completeness. Agent names, model/provider, token counts, stage timings, spans, candidates, score contributions, directives, tools, prompts, completions, raw JSON, replay, and actions remain unavailable. No join is inferred from timestamps, session, or aggregate projections.

List queries accept an allowlisted status and bounded UTC time range, stable (started_at, trace_id) descending order, and a maximum page size of 100. Cursors are opaque, expire, and are HMAC-bound to the verified tenant, normalized filters, sort, and cursor position. Missing cursor key material fails closed. Point lookups return the same anti-enumerating 404 for missing or foreign trace IDs. Responses are no-store.

The canonical publication watermark and projection-lag policy are not invented here: the response reports the observation time and a not_provided watermark until P2 owners publish an authoritative watermark. The exact five-term score vocabulary and weights remain deferred; interim_v1 is not rendered as an explanation.

Consequences

  • Live Console Explore can replace fixture rows with a truthful metadata table while retaining the existing visual language.
  • Detail is a frozen metadata snapshot with explicit unavailable sections; it cannot imply full provenance.
  • P2/P3/P4/P6 and hosted D1 #905 remain external gates. This slice makes no streaming claim, so C5 soak is not a dependency for this snapshot contract.
  • A future richer read model must add a new versioned contract and prove producer, storage, authorization, redaction, retention/deletion, freshness, and browser evidence before enabling content or explanations.

Evidence basis

  • infra/migrations/postgres/000036_evidence_plane.up.sql:122-163 defines the tenant-scoped evidence_runs envelope, lifecycle states, capture mode, sample decision, and RLS.
  • packages/evidenceoutbox/types.go:95-122 traces the writer's run identity and metadata inputs.
  • web/content/roadmap/phase-4-multi-provider/milestones/4.d.2-explore-provenance-trace-inspector.mdx:24-26,66-88 requires degraded labels and forbids inferred/full-detail claims.
  • web/content/roadmap/phase-4-multi-provider/milestones/4.p.2-canonical-evidence-durable-publication.mdx:25-41 requires typed reads, watermarks, and explicit completeness.
  • web/content/roadmap/phase-4-multi-provider/milestones/4.p.3-privacy-retention-deletion-audit.mdx:25-41 keeps lifecycle state in the DTO and content off by default.
  • web/content/roadmap/phase-4-multi-provider/milestones/4.p.4-query-usage-cost-data-platform.mdx:25-43 requires bounded, tenant-scoped queries and visible unavailable states.
  • web/content/roadmap/phase-4-multi-provider/milestones/4.p.6-contract-assurance-harness.mdx:29-56 distinguishes local contract evidence from hosted slice certification.

Was this page helpful?

Edit on GitHub

Last updated on

PreviousADR-0081: Fail-closed Proxy runtime controlsNextD2 publication, identity, query, and lifecycle contract

On this page

  • Decision
  • Consequences
  • Evidence basis
0%