Goal
Provide a DevAI-only, authenticated test console for the reusable OCR v1 API without exposing storage credentials, Langfuse secrets, tenant identity, or raw documents in telemetry.
Scope
- audit the canonical OpenAPI against running Axum routes and add contract tests for any gap
- document endpoint authz, idempotency, limits, state transitions, and safe error semantics
- add a DevAI console that obtains product/tenant identity only from the verified DevAI session, follows the upload-intent → signed PUT → complete → job → status/result flow, and redacts all uploaded content from traces/logs
- use only DevAI sandbox/dev product telemetry; no Kora production Langfuse credentials in the shared OCR service
- add API/UI tests and a local disposable integration path
- create GitOps deployment changes only after the documented design review gates and DevAI target discovery are complete
Security acceptance
- UI never accepts tenant/product identity or bearer credentials from browser form input
- no arbitrary URL ingestion, no client-side secrets, no raw document/result payload in logs or traces
- per-object tenant/product authorization gives 404 on foreign resources
- body/file/page/time limits and idempotency are enforced end-to-end
Delivery gates
- OpenAPI-route parity test; Rust and DevAI test/build/lint gates pass
- local real API exercise using an isolated disposable environment
- read-only GKE/Argo discovery identifies target namespace, ingress, workload identity and GitOps owner before any deploy
- dev deployment is canaried and verified with synthetic, non-sensitive fixtures
Goal
Provide a DevAI-only, authenticated test console for the reusable OCR v1 API without exposing storage credentials, Langfuse secrets, tenant identity, or raw documents in telemetry.
Scope
Security acceptance
Delivery gates