Placeholder DB tests converted to explicit test.skip markers.
Independent review — open blockers after V5
Ed25519 implementation is still not validly proven and likely incorrect: Node Ed25519 should use crypto.sign/verify with algorithm null; createVerify('SHA512') is not the canonical Ed25519 API path.
ledger-service compares DB errors using err.message exact equality. PostgreSQL RAISE EXCEPTION messages may carry wrappers/details; contention mapping needs robust SQLSTATE/custom code handling.
Trusted append compares created_at JSON string to p_created_at::text. PostgreSQL timestamptz text formatting is not guaranteed to equal canonical ISO-8601 YYYY-MM-DDTHH:mm:ss.SSSZ, so valid events may fail integrity checks. Compare parsed timestamps or canonicalize inside DB.
evidence_references are hashed after canonical unordered sorting, but p_evidence_references is passed from the original array order. DB JSONB array equality is order-sensitive; unsorted input can fail the field-binding check. Pass the same normalized array used for hashing.
External-fact transition evidence stores from_state using a SELECT after the UPDATE, so from_state becomes the new state rather than the prior state. Capture old state before CAS or use UPDATE ... RETURNING old/new semantics via locked read.
External-fact verifier proves presence of evidence records, not authenticity or cryptographic/provider verification. This remains evidence-presence verification, not source truth verification.
Idempotency existing-row response still does not return executionId because idempotency_keys has no execution_id link. Existing executing/unknown/succeeded responses cannot identify the actual execution reliably.
RETRY_ALLOWED path is not atomically claimed before creating a new action_execution_record. The UNIQUE(idempotency_scope,idempotency_key) constraint in action_execution_records can reject retries or race under concurrency.
reserveIdempotencyKey returns NEW_RESERVATION if the existing row disappears between INSERT and SELECT. Under canonical no-delete semantics this should fail closed/retry transaction, not pretend a reservation exists.
actionHash is computed from requestedAction with DEFAULT_PROFILE. Canonical action schema/profile must be explicitly defined so unordered fields cannot cause approval hash drift.
Approval consumption and idempotency reservation are coordinated locally, but external side-effect execution remains outside the shown transaction/outbox protocol. Exactly-once external-effect semantics are not yet demonstrated.
issuer trust store is empty, so all real passports fail ISSUER_UNTRUSTED until Architect-authorized bootstrap material exists.
_privilegedRegisterTrustedIssuer being an exported throwing function is not a security boundary. Trust material must come from immutable deployment configuration or privileged storage unavailable to ordinary runtime code.
payment_verifier role is declared in the report conceptually but V5 migration does not show a restricted verifier function/state-transition protocol that prevents other privileged application paths from setting RECONCILED.
payment confirmation query does not compare currency_exponent between receipt and intent.
ledger-verifier does not recompute payload_hash/event_hash, does not verify genesis anchoring, and returns postRepairChainOk=true unconditionally. It cannot satisfy canonical chain verification or repair semantics yet.
Chain-repair checkpoint semantics from SPEC-003 are not implemented in the provided V5 source.
package-lock.json absent; no reproducible build evidence.
tsc --noEmit not executed; compile readiness remains UNVERIFIED.
PostgreSQL integration/concurrency/permission tests remain skipped; E3/E4 cannot be raised.
Truth boundary
V5 is persisted as an implementation candidate only. This record does not assert IMPLEMENTED_LIVE, TESTED, RUNTIME_VERIFIED, PRODUCTION_VERIFIED, PAYMENT_CONFIRMED, or E6.
Next gate
ADRIAN V5.1/V6: close the open blockers above without changing canonical architecture.
LUCAS: independent static verification against actual persisted source, then typecheck/runtime/integration verification when executable runtime is available.
NO-RECHECK: retest only changed components plus required regression dependencies after state change.