feat: durable AUD0 outbox + dataset/search/ER HTTP surfaces + P065 stängd (kanoniserad från GitHub #10) #42

Closed
admin wants to merge 0 commits from feat/aud0-outbox-http-surfaces-20260907 into main
Owner

Durable AUD0 outbox + HTTP surfaces (kanoniserad fran GitHub PR #10, PORTERAD FORST HIT)

Canonical Gitea = source of truth: denna PR landar FORST har; GitHub-mirrorn foljer via push-mirror.

Innehall (63 commits + slutgransknings-fix 3edc56d)

  • Durable Postgres-outbox for alla standard-AUD0-events + OpenLineage (samma centrala
    durability-boundary; dispatcher explicit durable:false - aterkover aldrig sitt eget event;
    retry/backoff, leasing, SKIP LOCKED, dead-letter, tenant-binding, idempotency)
  • DatasetService: repo-pattern mot kanoniska opt_datasets + nya durabla opt_dataset_versions;
    immutable versions (monotont nummer under transaction lock), idempotency med payload-drift-
    detektering, cross-tenant => NOT_FOUND; exports med deterministiskt export-id
  • HTTP: datasets/versions CRUD + ER candidates/internal/batch + search definitions/query
    (klient kan inte hoja rights_tag - fail-closed till internal)
  • Search: versionerade index-definitioner i Postgres (sekventiella schemaversioner, replay-
    idempotens, same-version-andrat-schema => CONFLICT); OpenSearch forblir rebuildable projection
  • ER split-brain stangd: Python ar thin adapter mot kanonisk TS-motor; stable-identifiers.v3
    (LEI global, org_nr lands-scopad, hard-negative vinner, fuzzy => human review); cluster-wide
    hard-negative constraints; P065 STANGD (closure-record i STATUS.md)
  • CI: integration-jobb mot live OpenSearch/ClickHouse/Postgres (run-unique identity);
    python-engine blocking pytest-gate; Trivy HIGH/CRITICAL blocking (ersatter falskt-gron --exit-code 0)

Slutgranskning (3edc56d, exekverad)

  • CreateDatasetVersionInput readonly-artifact_refs + tx.array kopia (postgres.js typings)
  • 3 testkorrigeringar stale mot STARKARE implementation: ER-http 401 fail-closed
    (default-param-bugg), ER-meddelande bounds-aware, search fail-closed flush + negativ kontroll
  • dataset-postgres.realinfra: DATABASE_URL aktiverar outbox - 5/5 mot live Postgres
  • STATUS.md: sanning enligt kod (AUD0/lineage/gappista/P065 closure-record)

Verifierat lokalt (exekverat)

  • typecheck EXIT 0 - unit 945/945 (184 real-infra skippas arist lokalt, kors i CI)
  • real-Postgres integration 5/5 - next build EXIT 0 (Next 16-kontraktet)
## Durable AUD0 outbox + HTTP surfaces (kanoniserad fran GitHub PR #10, PORTERAD FORST HIT) Canonical Gitea = source of truth: denna PR landar FORST har; GitHub-mirrorn foljer via push-mirror. ## Innehall (63 commits + slutgransknings-fix 3edc56d) - Durable Postgres-outbox for alla standard-AUD0-events + OpenLineage (samma centrala durability-boundary; dispatcher explicit durable:false - aterkover aldrig sitt eget event; retry/backoff, leasing, SKIP LOCKED, dead-letter, tenant-binding, idempotency) - DatasetService: repo-pattern mot kanoniska opt_datasets + nya durabla opt_dataset_versions; immutable versions (monotont nummer under transaction lock), idempotency med payload-drift- detektering, cross-tenant => NOT_FOUND; exports med deterministiskt export-id - HTTP: datasets/versions CRUD + ER candidates/internal/batch + search definitions/query (klient kan inte hoja rights_tag - fail-closed till internal) - Search: versionerade index-definitioner i Postgres (sekventiella schemaversioner, replay- idempotens, same-version-andrat-schema => CONFLICT); OpenSearch forblir rebuildable projection - ER split-brain stangd: Python ar thin adapter mot kanonisk TS-motor; stable-identifiers.v3 (LEI global, org_nr lands-scopad, hard-negative vinner, fuzzy => human review); cluster-wide hard-negative constraints; P065 STANGD (closure-record i STATUS.md) - CI: integration-jobb mot live OpenSearch/ClickHouse/Postgres (run-unique identity); python-engine blocking pytest-gate; Trivy HIGH/CRITICAL blocking (ersatter falskt-gron --exit-code 0) ## Slutgranskning (3edc56d, exekverad) - CreateDatasetVersionInput readonly-artifact_refs + tx.array kopia (postgres.js typings) - 3 testkorrigeringar stale mot STARKARE implementation: ER-http 401 fail-closed (default-param-bugg), ER-meddelande bounds-aware, search fail-closed flush + negativ kontroll - dataset-postgres.realinfra: DATABASE_URL aktiverar outbox - 5/5 mot live Postgres - STATUS.md: sanning enligt kod (AUD0/lineage/gappista/P065 closure-record) ## Verifierat lokalt (exekverat) - typecheck EXIT 0 - unit 945/945 (184 real-infra skippas arist lokalt, kors i CI) - real-Postgres integration 5/5 - next build EXIT 0 (Next 16-kontraktet)
admin added 64 commits 2026-09-07 17:32:47 +00:00
docs(er): reconcile ecosystem acquisition plan with canonical ER architecture
CI (SIAX Cloud) / security (push) Successful in 16s
CI (SIAX Cloud) / quality (push) Failing after 19s
Security Scan (SIAX Cloud) / security (push) Successful in 32s
CI (SIAX Cloud) / integration (push) Failing after 49s
Python Engine CI (SIAX Cloud) / python-engine (push) Failing after 5m34s
e2437ab09e
fix: slutgranskning av dataset/search/ER-ytorna + STATUS-sanning
Security Scan (SIAX Cloud) / security (push) Successful in 16s
CI (SIAX Cloud) / security (push) Successful in 17s
CI (SIAX Cloud) / integration (push) Successful in 29s
CI (SIAX Cloud) / quality (push) Successful in 48s
Security Scan (SIAX Cloud) / security (pull_request) Successful in 15s
CI (SIAX Cloud) / security (pull_request) Successful in 28s
CI (SIAX Cloud) / quality (pull_request) Successful in 48s
CI (SIAX Cloud) / integration (pull_request) Successful in 55s
Python Engine CI (SIAX Cloud) / python-engine (push) Failing after 4m52s
Python Engine CI (SIAX Cloud) / python-engine (pull_request) Failing after 4m48s
3edc56dcdb
Slutgate inför merge (per fortsättningsplan):

Kontrakt: CreateDatasetVersionInput.artifact_refs → readonly string[]
(anropare får skicka 'as const'; servicen muterar aldrig); postgres.js
tx.array() får muterbar kopia vid INSERT.

Testkorrigeringar (stale mot starkare implementation — aldrig svagare):
- entity-resolution-http: request(body, undefined) triggade default-param
  och skickade GILTIGT token → 200. Tomt token = 'utan token' → 401 fail-closed.
- entity-resolution: /two records/ → /between 2 and 5000/ (bounds-aware validering)
- search-service: omformat purpose-filter-test + NY negativ kontroll —
  rebuild avvisar dokument utan purpose_tags (fail closed, generation discarded)
- dataset-postgres.realinfra: sätter DATABASE_URL i setup så den durabla
  AUD0-outboxen aktiveras (testet ljög annars om durabilitet) — 5/5 mot live Postgres

STATUS.md: AUD0-klient + lineage-rader (outbox nu real-infra testad),
gap-listan (persistence/routes/outbox stängda, exakt vad som återstår),
P065 STÄNGD med closure-record (thin adapter, v3-semantik, hard-negative
transitivitet, fail-closed 401 — 4/4 planpunkter verifierade).

Verifierat: typecheck EXIT 0 · 945/945 unit · 5/5 real-Postgres · next build EXIT 0
CODEOWNERS rules requested review from sax3l 2026-09-07 17:32:47 +00:00
admin closed this pull request 2026-09-08 20:47:38 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/0pt#42