Builder's guide · Section 16
Security checklist
Go through this list before real books go on the system.
- The writer key is only on the console server, in a secret store. It is not in the repository, logs, or anything sent to a browser.
- The administrator key is stored separately and is not used by the console.
- The console's writer is a
posterscoped to its own companies, not all companies unless needed. - The API is reachable only over TLS, and only from your writers' networks.
- The console's database and the books' database use different logins, and neither login can reach the other database.
- Sessions are HttpOnly, SameSite=Strict cookies, stored as hashes and revocable. Failed sign-ins are rate-limited.
- Writes require a custom header that cross-site forms cannot send.
/v1/system/*(writer administration) is not relayed.- Every permission and approval is enforced on the server, with “not your own” also as a table constraint.
- Person-name fields (
prepared_by,closed_by, approver) are written by the server from the session. - The audit table refuses updates and deletes, and links each write to GAAPcore's request id.
- A key rotation has been rehearsed: issue, deploy, revoke.
- If an AI model is used for voice or search, it sees the command list only, never ledger data, and it cannot write without the on-screen confirmation.