VARUX AXIS Deterministic PostgreSQL Write-Path Control
v0.6 · Pilot Readiness
AXIS Documentation / Testing & Adoption / FAQ

FAQ

Common questions

Short answers to the questions that come up most often. For details, follow the links.

Basics

What is AXIS?
A deterministic PostgreSQL write-path control layer: it classifies SQL, evaluates versioned policy, enforces ALLOW / BLOCK / REQUIRE_APPROVAL, and records durable, hash-linked evidence.
Is AXIS production-ready?
No. It reached v0.6 Pilot Readiness — controlled demos, local review and non-production pilot. It is not compliance-certified enterprise software.
Does AXIS use AI to decide?
No. Decisions come from a deterministic policy engine. "AXIS does not guess with AI."
Which port does AXIS listen on?
HTTP API on 6543 (LISTEN_ADDR); the lab wire listener uses 6544 and is disabled by default. PostgreSQL is 5432; the Control Plane is 3000.

Protection model

Does AXIS protect all database traffic?
Only traffic that passes through AXIS. Direct database access with valid credentials bypasses AXIS and must be closed by deployment.
Are reads protected too?
Reads default to ALLOW and, in the pilot integration, safe reads go directly to PostgreSQL. The read/write split is intentional; reads are not the protected surface.
What happens to dangerous writes?
They are blocked (403) or require approval (202) before any execution. Evidence is recorded either way.
Can operators bypass AXIS silently?
No. emergency_bypass is explicit, configured and logged with a reason code — "AXIS does not support silent emergency bypass."

Approvals

Does approving a request execute it?
No. Approval is consent; the client must retry the request with the approval_id before AXIS evaluates and executes.
Can an approval be used twice?
Resolution is immutable and each retry is a separate audited event; expired or rejected approvals never execute.
How long is an approval valid?
Default TTL 300 seconds (AXIS_APPROVAL_DEFAULT_TTL_SECONDS); expired approvals return approval_expired (410).

Integration

Which drivers are verified?
psycopg3, asyncpg, Prisma and pgJDBC single-statement through AXIS — 37 tests each (2026-07-05). Batch (JDBC) and COPY are fail-closed.
Can I point psql at AXIS?
In the lab, the pgwire listener intercepts Simple Query; it is experimental, disabled by default, and not for production. Extended Query is planned.
Does SQLAlchemy work with AXIS?
AxisRoutingSession is a v1 routing adapter for the HTTP path; it is not a universal ORM solution.
What happens to prepared statements?
HTTP path: AXIS-side session store with fail-closed EXECUTE. Wire path: Extended Query planned; prepared statements fail closed today.

Evidence

How is audit tamper detected?
Every event carries event_hash and previous_hash; corruption or tampering breaks the chain and is surfaced by /evidence/verify.
Is the audit trail an external ledger?
No. The WAL + hash chain is a local integrity guarantee; external ledger anchoring is planned.
What is an Evidence Bundle?
A range export (bundle_type: axis.evidence_bundle.v1) with first/last hashes and optional Ed25519 signing, for out-of-band verification.
Can I delete the JSONL audit file?
Yes — it is a human-readable projection; the WAL is canonical. Verification is unaffected.

Operations

What happens if the audit WAL cannot be written?
Protected writes do not execute (audit_wal_failure); evidence comes first.
Can I auto-retry a timed-out request?
No. After execution_state: unknown the write may have applied; verify first, then re-submit explicitly.
How do I update policy safely?
Validate → diff → dry-run → create candidate → activate with expected_hash; rollback is available against archived versions.
Why is operator_auth_enabled: false?
AXIS_OPERATOR_TOKEN is unset. Set a real token; an unset token keeps local dev unblocked but must never ship.

Roadmap

What is next after v0.6?
The hardening path continues (v0.7+): JWT context shipped in v0.9; planned items include mTLS completion, Extended Query, RBAC/SSO, KMS and external ledger anchoring. See the Changelog.
Can AXIS protect an existing application without changes?
Only where traffic can be routed through AXIS. The HTTP path requires integration (or the SQLAlchemy adapter); the wire path is not production-ready.

Related: Glossary · Getting Started · Pilot