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