Files
0pt/STATUS.md
T
Simon AxelssonandClaude Fable 5 c47e3b468e
CI (SIAX Cloud) / integration (push) Failing after 22s
CI (SIAX Cloud) / security (push) Successful in 22s
Security Scan (SIAX Cloud) / security (push) Successful in 21s
CI (SIAX Cloud) / quality (push) Successful in 43s
CI (SIAX Cloud) / integration (pull_request) Failing after 3s
CI (SIAX Cloud) / security (pull_request) Successful in 17s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 16s
CI (SIAX Cloud) / quality (pull_request) Successful in 43s
test(integration)+ci+docs: live OpenSearch/ClickHouse suites, CI service containers, STATUS.md (§56)
- tests/integration/: 10 tests against REAL OpenSearch 2.11 (tenant
  isolation, purpose/rights filters, generation rebuild/rollback,
  projection-disaster rebuild §68) + REAL ClickHouse 24.8 (tenant-isolated
  metric DSL, TTL schema, injection-surface refusals). Honest skip without
  env - and CI fails hard if the suites skip instead of running.
- .gitea/workflows/ci.yml: new blocking 'integration' job with
  self-identifying service containers (st0re ci.yml's measured
  alias-collision discipline: run-unique cluster.name / credentials,
  getent-enumerated IP selection, no-match = hard fail).
- STATUS.md: full 8-level Master-DoD classification per capability incl.
  the honest gaps blocking PRODUCTION_READY.
- dependency-mode: NEXT_PHASE=phase-production-build is not a serving
  runtime (next build page-data collection must compile; guard re-arms at
  boot) - pinned by contract test.
- docs/02-architecture.md: superseded the accurate-but-now-fixed 'every
  client runs against its mock' paragraph; .env.example: client URLs now
  actually read from env + new P0 backend vars.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 16:56:33 +02:00

9.2 KiB

0pt — capability status (Master-DoD §56 status honesty)

Classification scale (Master-DoD §2, exactly one per capability): MISSING → DOCUMENTED_ONLY → SKELETON → MOCK_ONLY → IMPLEMENTED → INTEGRATION_TESTED → LIVE_VERIFIED → PRODUCTION_READY. Only PRODUCTION_READY may be called DONE. Docs ≠ implementation. Last full audit + re-classification: 2026-08-31 (SIAX Platforms P0 wave 2).

How to read this

  • INTEGRATION_TESTED here means: verified against a REAL dependency (live OpenSearch/ClickHouse container, or a recorded wire-contract double pinned to the sibling repo's real handler code on its main) in CI.
  • LIVE_VERIFIED requires a verification against the actual SIAX fleet deployment. No new capability in this wave claims it.
  • The unit/contract/integration suites are in tests/ and run in .gitea/workflows/ci.yml (jobs quality + integration).

Cross-product clients (Master-DoD §10 "Cross-product clients")

Capability Status Evidence Honest gaps
CL0UD client (policy evaluate, POST /api/policy/evaluate) INTEGRATION_TESTED (contract) src/clients/cl0ud-client.ts; tests/contracts/cl0ud-client.contract.test.ts pins the real camelCase {data} envelope; fail-closed (missing decision ⇒ deny) Not yet exercised against a live CL0UD deployment (no reachable CL0UD URL this session ⇒ not LIVE_VERIFIED)
CL0UD capability discovery (GET /api/capabilities) INTEGRATION_TESTED (contract) same suite 0pt's own capabilities are not yet registered in CL0UD's registry (§3 gap)
ST0RE client (artifact register, camelCase /v1/st0re/artifacts/register) INTEGRATION_TESTED (contract) src/clients/st0re-client.ts; tests/contracts/st0re-client.contract.test.ts Raw-bytes upload still goes via LocalBlobStore interim (pre-existing, unchanged); presign upload path not consumed yet
N0D client (create/get job, get result) INTEGRATION_TESTED (contract) src/clients/n0d-client.ts; tests/contracts/n0d-client.contract.test.ts pins required_role/resource_requirements/body idempotency_key CloudEvents completion callback receiving endpoint not built in 0pt (poll path works)
AUD0 client (events + OpenLineage ingest) INTEGRATION_TESTED (contract) src/clients/aud0-client.ts; tests/contracts/aud0-client.contract.test.ts; legacy lineage shape converts to real OpenLineage No durable local outbox for AUD0 outages (§70 "durable local/outbox path" — emission failure is surfaced, not queued)
No production mock fallback (§3/§10) INTEGRATION_TESTED src/platform/dependency-mode.ts; tests/contracts/dependency-mode.contract.test.ts drives NODE_ENV=production for all four factories ⇒ hard DEPENDENCY_UNAVAILABLE —

Correction of prior state (2026-08-31): the pre-existing clients' HTTP paths were verified against the sibling repos' actual main branches and THREE of four were wrong: cl0ud (/v1/cl0ud/policies/evaluate — never existed), st0re (snake_case body — would 400), aud0 lineage (/v1/aud0/lineage/events — never existed). All fixed and pinned by contract tests. The earlier MOCK_ONLY classification in the README was accurate.

Data-OS capabilities (Master-DoD §10)

Capability Status Evidence Honest gaps
Source Registry — register/query/describe/health, rights/license/purpose, freshness, provenance IMPLEMENTED src/services/source-registry-service.ts, src/types/source-registry.ts; tests/p0/source-registry.test.ts (fail-closed purpose gate, cross-tenant NOT_FOUND) In-memory persistence (per-process); no Postgres store yet — production boot must therefore configure one before this counts further. No API route surface yet
Source rate-policy IMPLEMENTED (pre-existing) src/services/source-rate-policy-service.ts unchanged this wave
Search — OpenSearch adapter, index defs, bulk, tenant + purpose/rights filter, rebuild, generation switch INTEGRATION_TESTED src/search/*; unit tests/p0/search-service.test.ts; real OpenSearch 2.11 tests/integration/search-opensearch.integration.test.ts incl. projection-disaster rebuild (§68-style) — runs in CI service container Hybrid (vector) query not built; no metrics emission; index definitions in-memory
Quality — versioned rules, runs, results, issues, score, trend, GE interchange IMPLEMENTED (local engine) / SKELETON (GE delegation) src/quality/*; tests/p0/quality-service.test.ts, tests/p0/expectation-engine cases Local engine covers 7 GE core expectation types; everything else delegates via N0D job 0pt.quality.ge_run whose EXECUTOR (0pt-motor GE runner) does not exist yet — delegated runs stay "delegated" until it does. Never fabricates results
Dataset — create (pre-existing) + version/query/export with st0re:artifact: refs IMPLEMENTED src/services/dataset-version-service.ts; tests/p0/dataset-version-service.test.ts (idempotency §53, canonical refs §5) Export assumes bytes already written by a job; no route surface; in-memory persistence
Lineage — OpenLineage emission to AUD0's real ingest INTEGRATION_TESTED (contract) src/lineage/*; aud0 contract suite; emitted from dataset version/export, quality runs, search rebuilds Emission is best-effort (never-throw); no outbox. AUD0-side ingestion verified against contract double, not live AUD0
Metadata — OpenMetadata projection (never canonical) IMPLEMENTED src/metadata/openmetadata-adapter.ts; tests/contracts/metadata-features.contract.test.ts; projectAll rebuild path No live OpenMetadata exercised (no local container this pass); lineage/glossary/ownership projection not built — only dataset entities
Analytics — ClickHouse, tenant-isolated, query limits, retention INTEGRATION_TESTED src/analytics/clickhouse-analytics.ts; real ClickHouse 24.8 tests/integration/analytics-clickhouse.integration.test.ts (tenant isolation, closed DSL, TTL schema) — runs in CI service container Closed metric-DSL only (no ad-hoc queries by design); no quota integration with CL0UD
Features — registry + Feast adapter IMPLEMENTED (online path, registry) / SKELETON (materialize/get-historical) src/features/feast-adapter.ts; contract suite pins Feast's get-online-features wire shape No live Feast server exercised; offline/materialization are N0D delegation contracts whose executor (0pt-motor) does not exist yet; point-in-time correctness therefore NOT yet proven
Entity Resolution — candidate API, blocking, explanation, hard-rule hook, review handoff IMPLEMENTED src/er/entity-resolution-service.ts; tests/p0/entity-resolution.test.ts (hard rules override both directions, review band, blocking refusals) Generic reference scorer (Jaccard+Levenshtein), NOT Splink probabilistic linkage — that is the 0pt.er.batch_resolution N0D contract, executor pending in 0pt-motor. No persistence of review queues
Graph (§10 Graph) MISSING — Not started this wave (explicitly out of the delivered P0 subset; next in line per §10)

Canonical platform plumbing

Capability Status Evidence
SiaxRequestContext + propagation headers (mirror of cl0ud @siax/contract) INTEGRATION_TESTED (contract-pinned) src/platform/siax-context.ts; tests/contracts/siax-context.contract.test.ts
Canonical 12-code error model + typed SiaxError (§6) INTEGRATION_TESTED (contract-pinned) src/platform/errors.ts; same suite
Canonical resource refs (§5) IMPLEMENTED src/platform/resource-ref.ts; tests/p0/dataset-version-service.test.ts

Pre-existing capabilities (unchanged this wave — prior classifications stand)

Capability Status Note
Iceberg write boundary via ST0RE lakehouse LIVE_VERIFIED (2026-07-13) docs/ICEBERG_WRITE_BOUNDARY.md; untouched
Document capture/extraction IMPLEMENTED LocalBlobStore interim persists bytes; ST0RE raw upload still pending
Edge order/payment app (Next.js) see docs/architecture/ARCHITECTURE.md outside this wave's scope
FastAPI engine (services/api) IMPLEMENTED outside this wave's scope
services/scrapers/* (WAF-bypass stack) quarantined, pending deletion PR feature/0pt-remove-noncompliant-scrapers — NOT touched by this wave; nothing new wires it

Global gaps blocking PRODUCTION_READY (§3, tracked, not hidden)

  1. Persistent stores: the new registries (sources/rights/quality rules/dataset versions/index definitions/feature views) are per-process in-memory. resolveStoreMode guarantees production boot FAILS rather than serving Maps, but the Postgres stores themselves are not built.
  2. Capability registration in CL0UD + API0 discovery for the new capabilities (§3 "Capability är registrerad i CL0UD Capability Registry").
  3. AUD0 outbox for evidence durability under AUD0 outage (§70).
  4. Surface exposure: no app/api/0pt/* routes yet for search/quality/datasets-versions/ER (services + contracts only).
  5. 0pt-motor executors for the delegated jobs (0pt.quality.ge_run, 0pt.features.*, 0pt.er.batch_resolution).
  6. Observability: no metrics/traces emitted by the new services (§36).