Code evidence and production readiness
Truenote applies server-side access limits, deterministic content checks, cited answers or refusals, browser request defenses, and security-event recording. Repository checks verify specific code paths. Customer use remains subject to organizational security approval, deployed-control verification, and the open requirements below.
Verified safeguards
"Verified" means the named repository acceptance check passed. It does not mean every deployed path or provider has been independently assessed. Configuration and operating limits stay attached to each capability.
01
Program and clearance isolation
Server-side filters deny cross-program and above-clearance access before protected content reaches ranking, generation, citations, or document reads. A request for another person's conversation, or feedback on another person's answer, gets the same "not found" response as a record that does not exist.
Repository tests passed02
Controlled content activation
Source, file-signature, EICAR, parsed-content, lifecycle, and role checks constrain activation. Missing or failed malware scanning quarantines uploads when scanning is enabled.
Repository tests passedEICAR detection is a test-signature check. A super user can disable external scanning; authorized senior managers and super users can activate their own uploads. Independent approval is not universal.
03
Hybrid retrieval boundary
Vector, full-text, typo-tolerant, reranking, and neighbor retrieval preserve authorization and lifecycle limits through the complete pipeline.
Repository tests passed04
Zero Data Retention routing policy
Approved answer routes request Zero Data Retention, deny data collection, pin one provider, disable OpenRouter provider fallback for each request, and reject arbitrary routes. Truenote can retry other routes within its approved model chain. Super users can reorder that chain but cannot add or remove a route; changing the approved list takes a code change.
Repository tests passedThis is a routing policy. Actual provider eligibility, account settings, contracts, and retention require separate evidence. It does not cover every parser, embedding, or reranking service.
05
Pre-provider input firewall
Supported secret, US Social Security number, Luhn-valid 13-to-19-digit card-number (space or hyphen separators), email, structured-phone, and IP-address patterns are redacted at embedding, reranking, answer, and utility-model text boundaries. In answer requests, excerpts from approved documents keep their email addresses, phone numbers, and IP addresses; secrets, Social Security numbers, and card numbers are still redacted.
Boundary tests passedNames, street addresses, arbitrary credentials, standalone card-verification codes, and obfuscated or contextual personal data are not comprehensively detected. Raw uploaded files follow a separate path.
06
Cite or refuse
Missing, malformed, unknown, and out-of-range citations produce a refusal. Generated text matching the supported secret, Social Security number, or card-number rules is also refused.
Generation tests passedA valid citation does not prove every statement is accurate. Output screening has a defined pattern scope; it does not guarantee complete personal-data protection or immunity to prompt injection.
07
Version-bound citation receipts
Ordered source snapshots preserve version and anchor context. Stored history rechecks current program, clearance, source approval, and lifecycle access before returning questions, answers, excerpts, or titles. Exchanges without complete authorized provenance, including zero-citation refusals, are withheld as a whole, so a past answer never appears with some of its sources missing. Refused questions and missing-content flags go to the Content gaps report instead: supervisors see their own team's, managers the whole program's. A title is hidden unless the exchange it was generated from is shown and every other withheld exchange is an uncited refusal; conversations with nothing to show are not listed. Eligible superseded receipts remain readable while their parent document and source stay authorized.
Repository tests passed08
Browser request defense
Trusted same-origin mutations pass while foreign, opaque, malformed, cross-site, and sibling-origin requests are rejected. CSP restricts active content. Clients sending neither Origin nor Fetch Metadata headers pass this browser-origin check and still require authentication on protected routes.
Browser-security tests passed09
Redacted diagnostics
Structured error handling removes credentials, complete private keys, Social Security numbers, and payment-card values from covered diagnostic paths.
Redaction tests passed10
Bounded provider failure
Provider operations use explicit deadlines, retry caps, and abort propagation. The ask path has an overall deadline that cancels outstanding provider calls; a request cut off that way returns the standard refusal. Database steps do not observe this deadline.
Failure-path tests passed11
Hash-chained audit logic
Security events are written through a database function that hash-chains each event to the previous one. In production the database refuses edits, deletions, and truncation of these events, and the application's database account can add events only through that function. API sign-ins and administrative/document changes produce events, and database triggers record document-version creation and lifecycle-state transitions, including background parsing and automatic activation, and content-source creation and updates, in the same transaction. A worker job writes each committed event to the service log in order and checks it against alert rules; ten of eleven rules were tested in production on 2026-10-10 by triggering the event and confirming the alert email.
10 of 11 alert rules tested in productionA daily copy of the logs is kept outside the hosting provider, but one owner administers the database, the hosting account and that copy, and can switch off the append-only protection. Define the retention period and separate who administers the copy before relying on audit integrity against a database administrator.
12
Evaluation integrity
Evaluation tests cover retrieval, reranking, citations, refusals, faithfulness, durable queue recovery, and separate pass rates for held-out questions.
Evaluation tests passed13
Workload limits
Answer requests use PostgreSQL counters per user and program; uploads use per-user counters. Login and selected administrative routes have additional limits.
Rate-limit tests passedSome static, history, personal and administrative reads remain without application request limits by an intentional demo-phase decision. Before customer use, the owner must approve application or verified edge abuse coverage and thresholds.
Data handling and account access
Permitted content
Truenote is intended for approved policies, procedures, and operational reference material. Until a signed data and PCI scope decision permits otherwise, keep payment-card numbers, CVV/CVC, PINs, track data, credentials, and live customer personal data out of questions, history, documents, screenshots, and reports.
Raw-file boundary
Uploads reach object storage before ingestion. An enabled scanner receives raw bytes; PDF and image parsing can send those bytes to LandingAI before parsed-text screening. Parsed text is persisted before its sensitive-content decision. Quarantine restricts activation; it does not undo earlier storage or disclosure.
Provider coverage
OpenAI receives protected embedding text, Cohere receives protected reranking text, and OpenRouter and its selected model provider receive protected generation and utility text. Parser and scanner data handling, account settings, contracts, retention, and subprocessors require separate approval.
Identity and sessions
Code implements Argon2id password hashing, hashed session tokens, production Secure and HttpOnly cookies, account deactivation checks, and session revocation. OIDC with MFA-claim validation is available but intentionally unconfigured during testing. Explicit disabled or break-glass local-login policy remains enforced even when OIDC configuration is unusable, including password-reset and invitation completion; a link refused this way is not used up and still works, before it expires, once access is allowed. Password-reset requests get the same response, sent before the account lookup, whether or not the email has an account. Public demo accounts cannot make shared or administrative changes by default; their personal notes, highlights, and labels stay available within that account. They cannot change or reset their published passwords, and only a super user can edit them, so one visitor cannot lock others out. Passwords set through account creation, reset, and change must be at least 15 characters; demo accounts configured by the operator are exempt. Application sessions have a seven-day absolute lifetime and no enforced idle timeout.
The security owner must approve session controls, MFA, access reviews, and break-glass handling. Public demo access must be isolated or retired before organizational data is introduced.
Retention and deletion
Normal document removal retires it and retains source bytes and evidence. Retention-gated permanent purge is restricted to super users. A deployment setting can permit a retention override. Customer-approved schedules must cover originals, parsed content, questions, answers, diagnostics, security events, provider copies, and backups; document purge alone does not establish complete deletion.
Unscreened personal fields
Personal notes, label names, and document titles are stored without the question or document sensitive-content screening. The prohibited-data policy applies to these fields too; current pattern controls do not enforce it there.
Transport and storage
The reviewed public pages serve over HTTPS with HSTS and a restrictive Content Security Policy. Private-service transport, storage and backup encryption, key access, rotation, and deletion still require platform evidence. Public HTTPS does not establish encryption for every hop or stored copy.
See the data-flow inventory and provider responsibility matrix for the reviewed paths and required evidence.
Service providers and data paths
Text redaction applies at the implemented AI boundaries. It does not screen raw files or establish provider contracts, account settings, endpoint eligibility, or retention.
| Provider | Purpose | Data handled |
|---|---|---|
| Railway and bucket provider Tigris | Web, worker, PostgreSQL, and private file storage | Application records, uploaded originals, parsed content, and operational records |
| OpenRouter and approved model hosts | Answer generation, query rewriting, and conversation titles; approved hosts include DeepInfra, Azure, Baseten, Inception, and CoreWeave | Questions, conversation context, and retrieved excerpts after application text redaction |
| OpenAI | Embeddings and optional evaluation scoring | Document passages, questions, and evaluation text after application text redaction |
| Cohere | Search reranking | Questions and candidate passages after application text redaction |
| LandingAI and a configured malware scanner | PDF/image parsing and optional malware scanning | Original uploaded file bytes before parsed-text screening |
| Resend | Invitation and password-reset email | Recipient names, email addresses, and one-time links |
| GitHub | Source hosting, automated checks, and security-report intake | Source code, check artifacts, and submitted reports; application customer content must stay out of reports and CI artifacts |
Truenote's OpenRouter account also has a guardrail for answer and query-rewrite requests, configured to redact card numbers, Social Security numbers, email addresses, phone numbers, IP addresses, and prompt-injection patterns. Its person-name and street-address detection is turned off, because it cannot be limited to the question and it redacted names in approved documents. Provider account settings, contracts, and retention still need separate approval.
Requirements before customer use
The review is incomplete. The current repository and limited read-only deployment observations support the following status, as of October 9, 2026. SSO and scanner integrations are intentionally unset during the demo/testing phase; they require configuration and end-to-end verification before customer use. Missing database prerequisites for external audit delivery are a separate installation gap. Missing evidence remains open even when the implementation passes tests.
| Area | Evidence grade | Required acceptance |
|---|---|---|
| Organizational approval and PCI scope | Operational evidence required | Approved data policy, accountable owners, assessed boundary, provider responsibilities, and written customer security approval. |
| SSO, MFA, and access | Configuration required | Configure the approved IdP, verify MFA and revocation, resolve idle-session controls, restrict emergency access, and review privileged and demo accounts. |
| Malware scanning | Configuration required | Configure an approved scanner, confirm scanning is enabled, govern overrides, and prove clean, infected, unavailable, and failure outcomes before parsing. |
| External audit delivery | Gap | Complete the deployed database prerequisites and receiver configuration; retain delivery, retry, alert, dead-letter, privilege, and independent-retention evidence. |
| Recovery and incident response | Operational evidence required | Confirm database and uploaded-file backups, restore to an authorized test target, measure recovery time and data loss, and complete an incident tabletop. Current records show backups off and no retained restore result. |
| Vulnerability management and release control | Operational evidence required | Reconcile current scans, assign and disposition findings, pass the strict managed-release gate, approve change records, and bind deployed bytes to the reviewed release. |
| Provider and cryptographic assurance | Third-party evidence required | Approve contracts, retention and deletion, subprocessors, account controls, encryption, key management, and the exact service scope of any provider attestation. |
| Independent assurance | Third-party evidence required | Complete authorized application/API and AI testing, any applicable network or segmentation tests, remediation, and retest. A separate test environment or explicitly approved substitute is required. |
Grades distinguish passed acceptance checks (Verified), existing code without operational proof (Implemented, unverified), missing configuration, missing operating records, missing provider or assessor evidence, and an absent or ineffective control (Gap). Not applicable requires a named owner and written justification.
Supporting procedures: security evidence map, recovery runbook, incident plan, and PCI review requirements.
Security delivery checks
The hosted security workflow for reviewed main commit e63293ca7d9d passed these checks. This receipt covers that commit; later commits and deployed bytes require their own verification.
Type checking and production build
Workspace TypeScript checks and the production frontend build completed successfully.
Automated test suites
Frontend, API, and security-script suites completed successfully.
Secret scanning
The hosted secret-scan job completed successfully.
Dependency audit and SBOM
The production dependency audit and CycloneDX software bill of materials step completed successfully.
CodeQL analysis
Hosted analysis and SARIF evidence generation completed successfully. Job success does not mean zero findings or approved finding dispositions.
Security evidence integrity
Machine checks validated evidence links, identifiers, hashes, and required security records.
The strict managed-release vulnerability gate and supplemental branch-enforcement gate were skipped in this ordinary main run. Green CI verifies engineering checks; it does not approve a production release or close the vulnerability register.
Source and vulnerability reporting
Inspect the implementation or report privately
The public repository contains implementation, tests, and evidence records. Use GitHub's private advisory intake for suspected vulnerabilities and follow the security policy. Reporting discovery is verified; intake monitoring and an end-to-end response exercise still require operating evidence.
Open implementation and test evidence · Reporting discovery record · Security reporting policy. Use synthetic data; keep exploit details, credentials, payment-card data, and customer content out of public issues. Test only systems and accounts you are authorized to use.