Did you know ... Search Documentation:
Pack asadb -- flaskserver/docs/MERGE_AUDIT.md

Server integration audit

This is an implementation audit, not a marketing claim. “Covered” means there is an implementation path and automated coverage in this repository; “release validation” means it needs a clean host or two running nodes and must be re-run for the exact release commit.

CheckpointStatusEvidence / boundary
One pack and offline Python setupCoveredbootstrap_python.py, locked wheelhouse, pack regression
Single browser entry pointCoveredstart, run_panel.sh, and run_panel.bat land at `/login`
Local + server contextsCovered`/mode` chooses an authenticated Local or Server Workspace in one panel
Shared panel designCoveredLogin/Admin load canonical web/assets/style.css plus small server additions
Local-only safetyCovered with stricter policyLoopback + ASADB_ALLOW_LOCAL_ONLY are required and login is never bypassed
Mode indicator and switchingCoveredInjected workspace bar identifies file, user, node, and switch/logout paths
Logout and rollbackCoveredConfirmation page, token revocation, user-session close and rollback behavior
Official Prolog authorityCoveredFlask supervises only src/asadb_web.pl; no Python SQL/storage executor exists
Streaming, jobs, import/export, backupCovered by integration contractsFlask forwards to the official backend; production backup remains backend-owned
Folder namingCovered for the added server treeNo duplicate panel or Python storage tree was added; a root-wide move is deferred to avoid breaking existing release paths
First-run setup and central configCoveredstart creates admin/registry; bootstrap config and secret files live outside pack directory
Upgrade preservationCoveredRuntime marker detects changed source, backs up launcher config/secrets, and does not delete data
DoctorPartially coveredOffline runtime/core/assets/paths are checked; deep engine/backup/query probes require SWI-Prolog on the target host
Security controlsCovered in codescrypt, hashed token records, HttpOnly/SameSite cookies, rate limit, RBAC, body limits, path safety, loopback policy, public-bind secret refusal
Admin, audit, observabilityCoveredAdmin APIs, JSONL audit, `/health`, `/readiness`, admin-only `/metrics`
Unit and browser-flow testsCoveredAuth/RBAC/session/job/file/FTS tests plus login-first workspace/logout route coverage
Real Flask → Prolog integrationRelease validationOpt-in test_engine_integration.py requires swipl and a complete checkout
Two-node replication and platform matrixRelease validationRun on two isolated nodes and target Linux/Windows builds; macOS server is not release-tested
Documentation and uninstall safetyCoveredPack/local/server/install docs; reset and pack removal preserve user data

Verified in this workspace

  • Python source compilation.
  • Fresh CPython 3.13 offline runtime creation from bundled wheels.
  • Bootstrap doctor JSON report.
  • Login-first portal, loopback mode gate, protected pre-login assets, and logout/session cleanup using Flask's test client.

Required before a release claim

Run `make test-pack and ASADB_RUN_REAL_TESTS=1 python -m pytest -q flaskserver/tests/test_engine_integration.py` on a machine with SWI-Prolog. Then run Windows packaging/CI and the two-node replication scenario. Do not describe those as passed until their logs exist.