Operations
Secrets, vulnerabilities, logs and incidents.
How are secrets managed?
Partly answeredKept out of the code and out of every deployment, and supplied to the services on the server.
On this website
- No secret is committed: environment files are excluded from the repository, which tracks only examples without values.
- Database credentials and the session-signing key are supplied to the services as environment configuration held on the server, outside the repository and outside every deployment.
- Deployment credentials are held as encrypted secrets in the CI system.
In client engagements
- How secrets are stored and rotated in client systems is agreed per engagement.
No rotation schedule for this website’s secrets is published yet.
How are vulnerabilities handled?
Partly answeredJavaScript dependencies are audited on every change and backend dependencies are pinned. A disclosure policy is not yet published.
On this website
- JavaScript dependencies are audited on every change, and a high-severity finding stops the deployment.
- Backend dependencies are pinned to exact versions, so an upgrade is a deliberate change rather than an incidental one.
- Every response carries a content security policy that forbids other sites from framing this one, HTTP Strict Transport Security, and headers that stop content-type sniffing and limit what the referrer and the browser expose.
In client engagements
- AI-assisted delivery is governed by release gates for evaluation, security and approval.
Backend dependencies are not yet audited automatically, and there is no published vulnerability disclosure policy. Until there is, report a suspected vulnerability to contact@captivolt.com with “Security” in the subject line.
What logs are kept?
Partly answeredAn append-only audit trail, and structured application logs that can be tied back to it.
On this website
- The audit trail is append-only: records are never edited or deleted, including when the personal data they refer to is erased. Each records the action and the account, and where a request caused it, the request identifier and source IP address. Message bodies are never written to it.
- Application logs are structured, one JSON record per line, and carry the request identifier, so a log line can be tied to the audit record it belongs to.
In client engagements
- Audit logging is designed into agentic and RAG systems so actions are traceable, including which sources were read under whose access.
No retention period is set yet for the audit trail, the application logs or the web server’s logs, so none is stated.
How are incidents managed?
Partly answeredA faulty release can be rolled back by a written procedure. A public notification commitment is not yet published.
On this website
- A faulty release is rolled back by redeploying an earlier version, following a written procedure.
In client engagements
- Escalation paths and response playbooks for AI-related events are designed into the systems we build.
No public incident notification commitment is published yet. For client engagements, notification terms are set in each agreement.