The stack, the deployment discipline, the security posture and the working rules that were written after incidents rather than before them.
The research is only as good as the machinery that produces it, and most of the rules below exist because something broke first.
Stack
The services are Python, with a columnar store for market data and embedded databases for journals and dashboard state. Model training uses gradient boosting and, for the heavy search stage, GPU-backed sequence models. The live engine runs on a single node under process supervision with per-service resource quotas; the public edge runs in containers behind a reverse proxy that terminates TLS.
The deliberate absences matter as much as the choices. There is no message bus, no orchestration cluster and no general-purpose metrics stack. For a single-node deployment each of those adds a failure mode without removing one, and the platform's own incident history is dominated by coordination failures rather than by capacity.
Deployment discipline
One writer per dataset, enforced by configuration rather than convention.
Releases are verified by content parity between the built artifact and what the server actually serves, because "deployed" and "running" turned out to be different states more than once.
Child processes inherit the release explicitly. A release that reached the parent process and not its subprocesses produced a system that reported the new version while running the old code, and the fix is now part of the deployment contract.
Static surfaces are served from a positive list. Anything not named explicitly returns a not-found, so a forgotten file cannot leak by default.
Backups run in tiers with verified exit codes and file counts. A backup that was silently incomplete for two days is the reason the verification step exists.
Testing and documentation as a gate
Each service carries a test suite and lint gates. Beyond that, the repository enforces its own bookkeeping with a documentation linter, and the rule it enforces is unusual enough to state:
A task may only be marked complete if the completion carries evidence – a file and line, a commit hash, a production acceptance date, or a test run result. The assertion "done" is not evidence. A deliberate refusal is also a valid closure, but it must carry the measurement that justified it.
That rule was written after an audit of 896 tracked items found 156 marked open while already implemented, 328 items from three reports that had never reached any task list, and 137 documents that contradicted themselves. The cost of a bookkeeping defect in a research project is not tidiness; it is repeated work and lost decisions.
The same audit produced a decision register: every operator decision is recorded in the repository, with its date and its wording, in the same session in which it was made. Agent memory is not a substitute, because the register has to be readable by anyone who reads the repository.
Security posture
The platform holds no customer funds and no customer data, and its exposure is a private analytics surface. The posture is correspondingly plain:
Everything except a small public surface sits behind authentication.
Per-address rate limiting at the edge, with a tighter budget on expensive endpoints, after an audit showed a single endpoint could return tens of megabytes for a request of a few hundred bytes.
Request-pattern blocking for reconnaissance paths and scanner signatures, applied to the request rather than to the address, so that a legitimate client behind a shared address is never banned by association.
Firewall bans are constrained to ports that no shared service occupies. A ban that hits a shared port takes down more than the attacker.
Secrets live in the environment only, never in code, and never in logs. Where a key is unavoidable in a log line, only a mask is written.
Weekly image vulnerability scanning with alerting on fixable critical findings.
Two structured penetration tests were carried out against the perimeter, and their findings are tracked as ordinary tasks with the same evidence requirement as everything else. The one high-severity finding is an accepted risk, documented as accepted rather than quietly closed.
Working rules
A set of process rules is enforced across the project because each of them has a measured cost attached:
Measure before refactoring. A planned refactor was cancelled by the measurement that showed the duplication it targeted amounted to under one per cent of the file.
A deliberate trade-off is recorded together with its reason at the moment it is made. An unrecorded trade-off is indistinguishable from a defect at the next audit, and the time then goes into defending a decision that was already correct.
A crashed multi-agent run is resumed, never restarted from scratch. Two full runs were burned before this became a rule.
Fix and ship in one pass, to a working and accepted state, rather than to "the code is deployed". Returning to the same topic a second time is treated as a process defect.
An operator decision is written down in the same turn it is given. Of 59 decisions lost in one audited period, 25 had left no trace anywhere.
What runs where
Research runs offline against a frozen store, on the operator's own hardware, and never pulls live data. The live engine and its surfaces run on a single server. Data collection runs continuously and is the only writer of the source of truth. Nothing in the research path can write into the live path, and nothing in the live path can write into the collected history.