Summary for IT
- Hosting. Supabase (PostgreSQL 17 on AWS us-east-2, Ohio) for the database, sign-in and server functions; Netlify for the websites. Each railroad has its own database project and its own site.
- In transit. On 22 October 2026 every site and the database API accepted only TLS 1.2 and 1.3, and every site sent HSTS. The automated suite re-measures both.
- At rest. Encryption is the hosting providers'; the secrets RailOps stores are also encrypted in Supabase Vault. See Data protection.
- Access control. Row-level security is switched on for every database table (112 of 112 on 22 October 2026). The railroad's Director decides which screens each role sees, and only the Director can issue or change a Director's account or the vendor support account.
- Sign-in. Email and password, or Employee ID and password for crews; repeated wrong guesses lock an Employee ID for 15 minutes. There is no self sign-up. Passwords are at least 12 characters with a capital letter, a small letter, a number and a symbol. Directors, Trainmasters and Clearline's operator also enter a code from an authenticator app, and the database refuses their requests until they do, and the app signs them out after an hour with no activity unless their railroad sets another period or turns that off. No single sign-on yet.
- Vendor support. Only under a time-limited grant from the railroad's own Director (90 days at most), read-only unless the Director allows changes, logged and revocable, and walled off from personnel, records, hazmat and shipping-paper tables. Clearline's support tool is read-only.
- Records. A change log the app cannot skip, insert-only inspections, hash-chained TIH transfers, nightly off-site backups and a monthly restore drill.
- Report a vulnerability to security@clearlineprotocol.com; see Incident response & disclosure.
- No single sign-on (SSO).
- No SOC 2, ISO 27001, HIPAA or FedRAMP attestation or certification.
- No third-party penetration test yet; the reviews so far are our own.
- Encryption at rest is the hosting providers'; there are no customer-managed keys, and apart from stored secrets (kept in Supabase Vault) no data is encrypted at the column level.
- There is no FRA certification for a recordkeeping system, and we do not claim one. RailOps keeps records; it does not make compliance decisions.
Each claim on this page carries a number from C01 to C38. Claims our automated suite checks keep a hedged wording and a “not yet measured” or “failing” badge until the suite reports a pass; claims marked “source” are true by construction and cited, in our claims register, to the exact files and lines they rest on. The table under How to verify lists every claim and its status.
Architecture & hosting
RailOps is a web application. The browser talks to the railroad's own database project over encrypted connections; the database enforces who may read or change each row. Server functions hold every provider key, so the browser never talks to an AI provider directly.
| Component | Provider | Region | Notes |
|---|---|---|---|
| Database, sign-in and server functions | Supabase (PostgreSQL 17) | AWS us-east-2 (Ohio) | One project per railroad |
| Websites and customer apps | Netlify | Global CDN | One site per railroad; static files |
| RailOps AI assistant | Anthropic (Claude) | Provider-hosted | Called only from a server function |
| Demurrage Calculator AI | Google (Gemini) | Provider-hosted | Called only from a server function |
| Nightly backups | Backblaze B2 | us-east-005 | Private bucket that Clearline controls |
| Build, backup and scheduled checks | GitHub Actions | GitHub-hosted runners | Backups pass through during the nightly run |
| Clearline support tool | Runs on Clearline staff computers | — | Read-only; see Vendor support access |
- Every railroad runs in its own Supabase project and its own website; no account reaches more than one railroad's data. (C05)
Row-level security and tenant isolation are covered in their own section below.
Data protection
In transit and at rest
- passedConnections use TLS 1.2 or 1.3 only; TLS 1.0 and 1.1 are refused on every site and on the database API.C01 · Clearline production audit, 22 October 2026 ; tests SEC-T1
- sourceEncryption at rest is provided by the hosting providers: Supabase encrypts the database on AWS in us-east-2 with provider-managed keys (see Supabase's security statement), and the backup storage encrypts each dump with its own keys. The secrets RailOps stores (the AI provider key, the licensing and control-plane signing secrets, and the outreach email key) are also encrypted in Supabase Vault, with a key Supabase holds outside the database, and are decrypted only inside database functions that check who is asking. No other data is encrypted at the column level.C34 · Supabase's published security statement; Vault migration ; Backup storage settings
Backups
- Every night the database, including the accounts behind it, is dumped and copied to private, encrypted, object-lock-capable storage that Clearline controls, using an upload key limited to that one bucket that cannot delete; the dumps are encrypted with the storage provider's keys. A monthly automated restore drill restores the newest dump into a scratch database and checks the records. The drill proves that records restore, not that a complete hosting project can be rebuilt, and the backup job's success status does not by itself confirm that the dump reached off-site storage; an automatic check for that is planned. (C18)
Supabase keeps its own platform backups in addition to ours. We have not yet published a recovery point or recovery time objective; the nightly schedule alone implies a worst case of about one day of data loss, before counting Supabase's own backups.
Retention
- A retention schedule naming the governing authority and the minimum period for each of 13 record families lives in the database. (C16)
The schedule is shown on the Records screen so the railroad's Director can check each period against the regulation in force. The periods are floors: the backups keep everything.
Personal data RailOps holds
- Employees' names, employee numbers, email addresses and roles.
- Training, exam and qualification records.
- Incident reports and safety concerns; confidential safety concerns are stored without a name.
- Crew location check-ins and route traces, only after the person's recorded consent.
- Contact details of the railroad's customers, and of invited demonstration evaluators.
- The browser description recorded with sign-ins and terms acceptances.
Operational records (car movements, jobs, inspections, waybills, hazmat handling) sit alongside these. Hazmat and TIH handling data is Sensitive Security Information under 49 CFR 1520 and is restricted accordingly (see Record integrity).
Data on staff devices
RailOps keeps a copy of recent data on the device so crews can keep working without signal. Until sign-out also clears that copy (see Roadmap), treat shared yard computers and phones as holding railroad data and protect them with screen locks and separate operating-system accounts.
Identity & access
RailOps uses Supabase Auth with email and password. There are no social or enterprise sign-in providers, and no self sign-up: the sign-in screen offers none, and accounts are issued by the railroad.
- Crews sign in with an Employee ID. The system never discloses which email address sits behind an ID, and answers an unknown ID and a wrong password with the same message, in the same time. Five failed attempts on one ID, or thirty from one network address, within 15 minutes lock that ID or address for 15 minutes, with one message that is the same whether or not the ID exists. (C11)
- A database trigger refuses any change to a person's role, suspension, facility-administrator flag or support grant unless it comes from the railroad's Director or from the server itself. (C08)
- Account administration is checked on the server. On a railroad's project a Trainmaster can issue only the railroad's working roles, never a Director, Trainmaster or vendor support account, and only the Director can reset, suspend, reinstate or remove a Director's account or the support account. Each account change, and every change of role, is written to an add-only log that only the Director can read; if that log cannot be written, the change still goes through and the failure is reported in the server's own log. (C37)
- Screen access can only be narrowed by the Director, never widened beyond what the build allows; the route guard refuses a typed web address for a screen the person may not open, and an automated test covers every screen and role. Screen access is an organisational control, not the lock on the data: row-level security is. (C10)
Plain statements
- Two-step sign-in: Directors and Trainmasters, any other role a railroad chooses, and Clearline's operator account sign in with a password and then a six-digit code from an authenticator app. The database itself refuses their requests, reads included, until the code has been given, so a password alone opens nothing. The server functions behind the Anthropic-based AI features, the Demurrage Calculator AI and switch-list email apply the same rule themselves. A Director resets a lost phone. Crews and customers sign in with a password unless their railroad adds their role.
- Every new or changed password must be at least 12 characters and include a capital letter, a small letter, a number and a symbol. The sign-in service enforces this on every railroad project, and the app checks the same rule when an administrator issues or resets an account. When people change their own password, one known from a data breach is refused. A password set before 24 October 2026 keeps working until it is next changed.
- No self-service password reset, by design: a Director or Trainmaster issues and resets railroad accounts (only the Director for a Director's account or the support account), and a customer's facility administrator resets that facility's logins.
- Suspending an account is an authentication-level ban that takes effect at once; the person's records stay. We recommend suspending departing users rather than deleting their accounts (see Logging & audit).
- Sessions stay signed in on the device and refresh automatically. The app signs out everyone who must use two-step sign-in, apart from crews and customers working in the field, after a period with no typing, clicking or touching in any of its open tabs on that device: 60 minutes unless the Director sets another period, up to a day, or turns it off. A warning a minute before offers to stay signed in.
Settings we check by hand
- manually verifiedFour dashboard settings were checked by hand on the date shown: email self-signup is disabled on every railroad project, leaked-password protection is on, passwords must be at least 12 characters with lowercase and uppercase letters, digits and symbols, and the public website has no site-wide password.C33 · Manual checks register ; tests SEC-M1, SEC-M2, SEC-M3, SEC-M4; manually verified on 2026-10-24
Row-level security & tenant isolation
- Row-level security is switched on for every table in the database: 112 of 112 tables on 22 October 2026. Every read and write therefore passes through the table's access rules; whether each rule is exactly right for each role was last tested against the live database on 8 September 2026, and that per-role test is being repeated. (C07)
- The database rules are written so that customer (industry) logins see only their own facility's rows and shipper logins see only their own cars and never write; per-role testing of these rules against the live database was last done on 8 September 2026 and is being repeated. (C09)
- passedWithout an API key the database API answers 401. With only the public browser key, an anonymous caller reads no rows from any of the sensitive tables the suite probes, and every privilege check behind the access rules that the suite probes refuses anonymous callers.C04 · Clearline production audit, 22 October 2026 ; RailOps database migration revoking anonymous access to the privilege checks ; RailOps database migration of 28 October 2026 withdrawing anonymous access from the remaining privilege checks ; tests SEC-A1, SEC-A2, SEC-A3
Two representative rules
- The switching log can be read and written only by the railroad's own operating and office staff, not by customer logins, trainees or the vendor support account, and the anonymous role holds no rights on it at all.
- Every personnel, training, incident, records, terms, hazmat and shipping-paper table carries a restrictive rule that refuses the vendor support account, whatever any other rule allows and whether or not a grant is live.
Restrictive rules are combined with every other rule on the table, so a rule added later cannot quietly undo them. Paid modules use the same mechanism: a module that is switched off returns no rows to anyone.
Vendor support access and Clearline's support tool
Clearline staff help a railroad only through that railroad's own support account and only while its Director has granted access. There is no Clearline master login to any railroad's data.
How a railroad grants access
- Once, the railroad's Director creates a support account (role “RailOps support (vendor)”) in Setup → Users. Clearline holds its credentials.
- When help is needed, the Director grants access for a number of days (at most 90) with a reason, in Setup → Users → Support access, choosing “Read-only (recommended)” or “Read and change”.
- The grant ends on its own at the end time, or the Director ends it at once with one click.
- Each grant and revocation, with the kind of grant, is written to a log the railroad can read and nobody can edit. Expiry happens automatically at the recorded end time; the log shows that end time rather than writing a separate expiry entry.
- not yet measuredVendor support access is designed to exist only while the railroad's Director has granted it (at most 90 days at a time), to be read-only unless the Director chooses to let support make changes, to end on its own or by one-click revocation, to be logged append-only, and to stay walled off from 21 personnel, training, certification, incident, records, terms, hazmat and shipping-paper tables whether or not a grant is live. The checks that confirm this against the source and on each railroad's project are shown under How to verify.C06 · RailOps vendor-support migration ; RailOps read-only support migration, 27 October 2026 ; Clearline production audit, 22 October 2026 (Section 3; finding P-15) ; tests SEC-R1, SEC-S8
Read-only by default. A grant is read-only unless the Director picks “Read and change” when granting it. Under a read-only grant the support account can read what the grant opens on operational and configuration tables, and the database refuses it the office-level permissions that would let it change them. Under a “Read and change” grant it holds the same office-level permissions as the railroad's office staff, including making changes, until the grant ends. The Users screen shows which kind of grant is live next to its end date. Either way, Clearline's support tool cannot change anything: it is read-only by construction (C21).
Walled off by the database, grant or not
| Area | Walled off from the support account (21 tables) |
|---|---|
| Evaluations | Evaluation submissions; evaluation questions |
| FRA Part 243 qualification | Qualified-employee records; course completions; exams; instructors; the Part 243 audit trail |
| Training | Training attempts; training progress; training overrides; training answer keys |
| Reports people make | Incidents; confidential safety concerns |
| Records layer | Record exports; the record change log; the retention schedule |
| Agreements | Terms-of-use acceptances |
| Hazmat (Sensitive Security Information) | The hazmat handling audit log; hazmat inspections |
| Shipping papers | Waybills; positive transfers of custody |
What Clearline's support tool reads
- The support-access log (who granted access, when, until when and why).
- Module switches and the license sync state.
- Screen-access settings (which screens are switched off for which role).
- The railroad's list of industries it serves.
- The daily briefing schedule.
- Switch-list delivery records, only where the database lets a support login see them (normally it does not).
- The job-tracking and screen-guide switches.
- Account rows (role, suspension, grant dates), with email addresses, employee numbers and phone numbers masked and names reduced to initials.
- Railroad settings such as the railroad's name and ERG edition; emergency contact, phone and address are reported only as present or missing, never their values.
What the support tool never reads
- Evaluations, Part 243 certification files and training records.
- Incidents and confidential safety concerns.
- The Records layer (change log, exports and retention schedule) and terms acceptances.
- The hazmat audit log, hazmat inspections, positive transfers, waybills and other hazmat summaries (SSI).
- The sign-in log, failed sign-in counts, the account-change and switch-list email logs, and notifications.
- Crew location consents and positions, customer contacts and demonstration or call-booking leads.
- The AI provider key, control-plane and licensing secrets, and every other secret.
The support tool's own controls
| Control | Claim | Automated checks |
|---|---|---|
| Publishable key only; a stronger login is refused | C20 | SEC-S1, SEC-S6 |
| Reads only: no writes, deletes or account administration | C21 | SEC-S2, SEC-S7, SEC-S10 |
| Walled-off tables denied in the tool's code | C22 | SEC-S3, SEC-S10 |
| Identifiers masked before the model sees them | C23 | SEC-S4 |
| Tamper-evident audit log of every call | C24 | SEC-S5 |
| Grant re-checked during a session | C25 | SEC-S6, SEC-S8 |
| What the support login can read, measured per railroad | C26 | SEC-S8 |
| Internal documents kept out of a customer-tier knowledge base | C27 | SEC-S9 |
| Tickets need a person's confirmation and go only to Clearline's domain | C28 | SEC-S11, SEC-S12 |
- passedClearline's support tool refuses to start with anything but a railroad's publishable (browser) key, and refuses to serve data if the configured login is not a support account.C20 · Clearline support tool source ; tests SEC-S1, SEC-S6
- passedThe support tool performs only GET reads and allow-listed read-only function calls; it cannot write, delete, call account administration or send switch lists.C21 · Clearline support tool source ; tests SEC-S2, SEC-S7, SEC-S10
- passedSSI, hazmat, waybill, personnel, incident, records, terms, sign-in-log, account-change and secret tables are denied in the tool's code, and a configuration edit cannot remove those denials. The database itself also refuses the support role on the personnel, training, incident, records, terms, hazmat and shipping-paper tables.C22 · Clearline support tool source ; RailOps read-only support migration, 27 October 2026 ; tests SEC-S3, SEC-S10
- passedPersonal identifiers are masked before the AI model sees them: email addresses, employee numbers and phone numbers are partly hidden wherever they appear, including inside free-text notes; names in name fields are reduced to initials unless staff look up one exact account; contact details in railroad settings are reported only as present or missing. A person's name written inside a free-text note is not detected.C23 · Clearline support tool source ; tests SEC-S4
- passedEvery tool call is written to a tamper-evident, hash-chained audit log that records what was asked of which table, never the data returned; a per-railroad vendor access report is available to the Director on request.C24 · Clearline support tool source ; tests SEC-S5
- not yet measuredBecause the database re-evaluates the grant on every request, revoking or expiring it ends the tool's data access, and the tool is built to re-check the grant during a session; the status of the automated checks is shown under How to verify.C25 · RailOps vendor-support migration ; Clearline support tool source ; tests SEC-S6, SEC-S8
- not yet measuredWhat the support login can and cannot read follows from the database rules above; the per-project measurement (reach and support-wall probes) is shown under How to verify once it has run on a project.C26 · RailOps vendor-support migrations ; Support-login expectations file ; tests SEC-S8
- passedInternal documentation is never served to a customer-tier knowledge base.C27 · Clearline support tool source ; tests SEC-S9
- passedOpening a ticket is the tool's only outbound side effect; it needs a person's confirmation, goes only to Clearline's own email domain over encrypted mail transport, and never contains raw rows.C28 · Clearline support tool source ; tests SEC-S11, SEC-S12
Record integrity
- Regulated records are stamped by the server with who and when, and every change to them is written to an append-only change log by a database trigger the app cannot skip; inspections can be added but never changed or removed, and the database rights to empty a records table in bulk or to attach triggers to it are withdrawn. (C12)
- Inspections, bad orders, incidents, hazmat and Part 243 audit rows and sealed transfers cannot be deleted by any login; every other change or deletion on a regulated table is written to the change log with who did it. (C13)
- Completed TIH positive transfers are sealed into a SHA-256 hash chain and cannot be altered or deleted once complete; a monthly job re-verifies the whole chain and publishes its head outside the database. Two caveats: the head is published to our source repository, which has the same owner as the database, so it is not yet an independent anchor; and on the production project the chain holds one sealed transfer whose head has not changed since 9 September 2026, so the monthly job has re-verified it without adding a new entry. (C14)
- Records exports carry a SHA-256 manifest and are themselves recorded: who exported, when, which record family, which date range and the manifest hash. (C15)
- Hazmat and TIH handling is logged to a separate append-only audit table that only the Director and Trainmaster can read, because the data is Sensitive Security Information under 49 CFR 1520. (C17)
Managers can remove rows entered by mistake on some operational tables, such as a train entered twice or a car-department request raised in error; where the table is a regulated one, each removal is kept in the change log with who made it.
AI and third-party model providers
- AI provider keys are held server-side: the browser never calls Anthropic or Google directly, and the stored key cannot be read back except by the railroad's Director through a guarded function, and only a value shaped like a key can be stored. The RailOps AI operating assistant only proposes changes, which a person must confirm, and does not send the training program. Other AI features do send training material or employee data to a model; the table in the AI section lists exactly what each sends. (C35)
| Feature | Provider | What is sent |
|---|---|---|
| RailOps AI assistant | Anthropic | The question, and yard context: tracks, cars (including commodity, hazmat and bad-order flags), industries, jobs and notes; photographed switch lists when a user sends one |
| Demurrage Calculator AI (customer site) | Google Gemini | The conversation, tariff text and photographed statements |
| Training program: Ask AI (trainers and trainees) | Anthropic | The question and the railroad's training program: the lesson text of every module |
| Training program: generate quiz questions (trainers) | Anthropic | Up to 7,000 characters of one module's lesson text |
| Efficiency briefing (Director, Trainmaster) | Anthropic | Employee names with their work times and missed safety steps; trainee names with their progress and retention votes; delays and idle engines |
| Trainee evaluation analysis (trainers) | Google Gemini (provider being confirmed) | The trainee's name, scores, retention votes and evaluator comments |
| Clearline support tool | Anthropic | The staff member's question and the masked results of the tool's read-only lookups; never rows from walled-off tables, which it cannot read |
Answers from any AI feature can be wrong. Treat them as suggestions to check against the documentation and the railroad's own rules. Each request to the Anthropic-based AI features is logged with who asked, for which feature and how it ended, never the question itself, and a railroad's daily use of them is capped. An account that must use two-step sign-in can use those features and the Demurrage Calculator AI only after giving its code.
How long Anthropic keeps API inputs, and whether it may use them for training, is governed by Anthropic's commercial API terms; our statement of that position is in section 7 of the Terms of Use.
Sub-processors
These providers process data for RailOps, its websites or Clearline's support tool.
| Provider | What it does | Data that reaches it | Notes |
|---|---|---|---|
| Supabase | Database, sign-in, server functions | Everything RailOps stores, including password hashes; server function logs | AWS us-east-2 |
| Netlify | Hosts the websites and apps; Netlify Forms on the public website | Site access logs (IP address, browser); demonstration-request entries (name, company, email, phone, message) | Global CDN |
| Anthropic | RailOps AI assistant, training AI, quiz generation and management briefings; Clearline support tool | See AI and third-party model providers | Server-side calls only |
| Google (Gemini) | Demurrage Calculator AI on the customer site; trainee evaluation analysis (provider being confirmed) | Demurrage conversations, tariff text, photographed statements; trainee evaluation details | Server-side calls only |
| Google (Apps Script) | Optional export to Google Sheets set up by a Director | Each submitted report and delay | Only when a Director configures it |
| Google Fonts | Typography on the rail map page | Visitor IP address and browser | One page |
| OpenStreetMap tile servers | Maps on the jobs and rail map screens | Visitor IP address, browser and the map areas viewed | |
| Cloudflare cdnjs | PDF library used by the customer site's Demurrage Calculator | Visitor IP address and browser | To be self-hosted (see Roadmap) |
| Resend | Optional email: switch lists and call-booking confirmations | Recipients, message and attachments; booking name, company, email, phone and note | Only where configured |
| Backblaze B2 | Nightly database backups | The full database dump, including accounts | us-east-005; private bucket |
| GitHub | Source code; runners for backups, the restore drill and the chain-head job | Database dumps pass through the runner; if the upload to backup storage fails, the dump is kept for up to 14 days as a private build artifact; published chain-head hashes | |
| OpenAI, ElevenLabs | Narration audio for the demonstration, made at build time | Script text only; no customer data | Build time only |
See also our Privacy Policy.
Application & web security
Transport and browser headers
- passedHTTP Strict Transport Security is sent by every site.C02 · Clearline production audit, 22 October 2026 ; tests SEC-T2
- passedEvery site sends browser security headers: a Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy and Permissions-Policy. The automated suite checks all five on every site on each run, and their live status per site is published in the report.C03 · Clearline production audit, 22 October 2026 (finding P-4) ; Each site's header configuration ; tests SEC-T3, SEC-D1
Demonstration
- passedAccess to the demonstration is by individual invitation, on a separate project whose railroad data is fictitious and resets every hour (the project also holds invited evaluators' account details); the demonstration settings are present only on the demonstration portal.C19 · RailOps deployment guide ; RailOps demonstration mode ; tests SEC-D1, SEC-M1
Server functions and the control plane
In our 22 October 2026 audit, each of the four server functions we probed refused an unauthenticated call. The functions behind the public call-booking form accept unauthenticated requests by design.
- Clearline's control plane acts on a railroad only through HMAC-SHA256 signed messages made with a secret unique to that railroad: commands are accepted once and only within ten minutes, and an older license cannot replace a newer one. The secrets are kept encrypted in Supabase Vault, no signed-in or anonymous caller can read them, and they can be rotated. (C36)
- Switch lists, interchange orders and transfer records are emailed only to inboxes the facility has saved, ticked from that list, never to an address typed at the moment of sending. The server writes the subject and message; each account may send at most 50 in any 24 hours by default; each send is recorded with its outcome in a log only the Director can read; and an account that must use two-step sign-in can send only after giving its code. (C38)
Code and dependencies
- passedThe support tool's code is statically analysed and its dependencies are audited for known vulnerabilities on each report run; the result and date are in the report.C30 · Dependency audit, 22 October 2026 ; tests SEC-C1, SEC-C2
- passedNo secrets were found in the support tool's repository, its knowledge base or the website sources on the last scan; the date is in the report.C31 · Clearline security suite ; Secret-shape scan, 22 October 2026 ; tests SEC-C3, SEC-C4
- The portal's dependencies are pinned by a lockfile, and its third-party notices are generated from the dependency tree.
- A scan of 501 packages (the portal's dependency tree and the public website's two bundled libraries) on 22 October 2026 found published advisories against a few runtime libraries; our review found none reachable as deployed, and the updates are scheduled.
- The public website serves its browser libraries from its own address, not from a public CDN.
Logging & audit
| Log | Written by | Read by | Can it be changed? |
|---|---|---|---|
| Sign-in log | The app, one entry per person per device every six hours (best effort) | The railroad's operations managers | No edit or delete rule. A usage record, not a tamper-evident sign-in audit; Supabase Auth keeps the authoritative sign-in records |
| Support access log | Only the grant procedure, when the Director grants or revokes | The railroad's office staff | Nobody can add, edit or delete entries directly |
| Account changes | The account-administration server function, and a database trigger whenever a role changes | Director (Setup → Users) | Add-only; nobody can edit or delete entries |
| Failed Employee-ID sign-ins | The sign-in server function | Director, as counts per ID (no screen yet) | Kept 7 days; no app role can write or edit them |
| Switch-list email sends | The email server function, on each send | Director (no screen yet) | Add-only; never holds the addresses or the content |
| Record change log | A database trigger on every change to regulated records | Director and Trainmaster | No app role can write to it |
| Records export log | Director or Trainmaster, on each export | Director and Trainmaster | Add-only |
| Hazmat and TIH audit log | Railroad roles, through the movement log | Director and Trainmaster | No edit or delete rule |
| Part 243 audit trail | The training records layer | Training roles | Add-only |
| Terms acceptances | The person accepting, time-stamped by the server | The person, and office staff | Edits and deletions refused |
| Clearline support tool audit log | The tool, on every call | Clearline; the railroad's Director on request | Hash-chained and tamper-evident; never contains data |
- Not alerted today: there is no export to a security information and event management (SIEM) system and no real-time alert on failed sign-ins or refused requests. The monthly chain-head job fails loudly if the transfer chain stops verifying.
- Deleting an account today also removes its sign-in log and terms-acceptance entries, so suspend departing users instead; keeping those entries after deletion is planned.
- How long Clearline keeps its support tool's audit log and tickets is stated in section 7 of the Terms of Use.
Incident response & disclosure
Reporting a vulnerability
Write to security@clearlineprotocol.com with “Security” in the subject. Please include what you found, where, the steps to reproduce it and how to reach you. We will acknowledge your report and keep you informed of what we do about it.
- passedA security.txt file (RFC 9116) naming the disclosure contact on this page is published.C32 · RFC 9116 file prepared for the website ; tests SEC-T4
- Safe harbour. If you act in good faith — you test only accounts you are authorised to use, you do not access, change or delete other people's data, you do not degrade the service, and you give us reasonable time to fix an issue before you disclose it — we will not pursue or support legal action against you for that research.
- Do not run automated scanners or load tests against a railroad's production project; talk to us first.
- We do not run a bug bounty and do not pay for reports.
If an incident affects your railroad
Under the Master Subscription Agreement (section 6.4) we notify an affected customer without undue delay.
A written incident-response runbook, covering credential rotation for every class of secret and how we notify customers, is being prepared. Supabase, Netlify and our other providers run incident response for their own platforms.
This page works alongside our Terms of Use and our Privacy Policy.
Roadmap
Planned improvements as of 27 October 2026. We list them so your review can take them into account; this page does not promise completion dates.
- Added 2026-10-29: a weekly automated security check-up (dependencies, secrets, code, headers and content policy, certificates, the database catalog, platform settings) with a written report; an in-app AI notice with recorded acceptance and a generation log; single sign-on (SAML 2.0) for railroads that order it; a public Continuity page;
/.well-known/security.txton every site. RailOps is information technology on your people's phones and office computers; it connects to no signalling, control or interlocking system and issues no movement authority. - Self-hosted PDF library on the customer site.
- Clearing device caches on sign-out.
- Committing the source of every deployed function.
- An expiry entry in the support access log.
- An automatic check that each nightly backup reached off-site storage, and stated recovery objectives.
- An independent copy of the transfer-chain head.
- An independent penetration test.
- A written incident-response runbook and a breach-notification window stated in hours.
How to verify
Clearline runs its security test suite with api-agent-security --live --target demo. The live checks only read: they make no sign-up, no update and no insert, and they run against the demonstration project unless the production target is named explicitly. Each run writes a machine-readable report and a readable summary, which we share with your IT team on request.
- passedThe published security test suite makes no write request to any project: no sign-up, no update and no insert probes.C29 · Clearline security suite ; tests SEC-S13
Claims marked “source” are cited in our claims register to the exact files and lines of the RailOps source and configuration; we can walk your reviewers through those citations under NDA. Measured and tool claims show their latest automated result below; the manual claim shows the date it was checked.
Last automated run: 2026-10-29T00:07:51Z. 16/19 measured checks passing.
| Claim | Kind | Tests | Status | Last run |
|---|---|---|---|---|
| C01 | measured | SEC-T1 | passed | 2026-10-29T00:07:51Z |
| C02 | measured | SEC-T2 | passed | 2026-10-29T00:07:51Z |
| C03 | measured | SEC-T3, SEC-D1 | passed | 2026-10-29T00:07:51Z |
| C04 | measured | SEC-A1, SEC-A2, SEC-A3 | passed | 2026-10-29T00:07:51Z |
| C05 | source | — | source | — |
| C06 | measured | SEC-R1, SEC-S8 | not yet measured | 2026-10-29T00:07:51Z |
| C07 | source | — | source | — |
| C08 | source | — | source | — |
| C09 | source | — | source | — |
| C10 | source | — | source | — |
| C11 | source | — | source | — |
| C12 | source | — | source | — |
| C13 | source | — | source | — |
| C14 | source | — | source | — |
| C15 | source | — | source | — |
| C16 | source | — | source | — |
| C17 | source | — | source | — |
| C18 | source | — | source | — |
| C19 | measured | SEC-D1, SEC-M1 | passed | 2026-10-29T00:07:51Z |
| C20 | tool | SEC-S1, SEC-S6 | passed | 2026-10-29T00:07:51Z |
| C21 | tool | SEC-S2, SEC-S7, SEC-S10 | passed | 2026-10-29T00:07:51Z |
| C22 | tool | SEC-S3, SEC-S10 | passed | 2026-10-29T00:07:51Z |
| C23 | tool | SEC-S4 | passed | 2026-10-29T00:07:51Z |
| C24 | tool | SEC-S5 | passed | 2026-10-29T00:07:51Z |
| C25 | tool | SEC-S6, SEC-S8 | not yet measured | 2026-10-29T00:07:51Z |
| C26 | measured | SEC-S8 | not yet measured | 2026-10-29T00:07:51Z |
| C27 | tool | SEC-S9 | passed | 2026-10-29T00:07:51Z |
| C28 | tool | SEC-S11, SEC-S12 | passed | 2026-10-29T00:07:51Z |
| C29 | tool | SEC-S13 | passed | 2026-10-29T00:07:51Z |
| C30 | measured | SEC-C1, SEC-C2 | passed | 2026-10-29T00:07:51Z |
| C31 | measured | SEC-C3, SEC-C4 | passed | 2026-10-29T00:07:51Z |
| C32 | measured | SEC-T4 | passed | 2026-10-29T00:07:51Z |
| C33 | manual | SEC-M1, SEC-M2, SEC-M3, SEC-M4 | manually verified | manually verified on 2026-10-24 |
| C34 | provider | — | source | — |
| C35 | source | — | source | — |
| C36 | source | — | source | — |
| C37 | source | — | source | — |
| C38 | source | — | source | — |
Changes to this page
| Version | Date | Change |
|---|---|---|
| sec-2026-10-22 | 22 October 2026 | First version, written from our 22 October 2026 production audit. |
| sec-2026-10-24 | 24 October 2026 | Passwords now need at least 12 characters with a capital letter, a small letter, a number and a symbol, checked by hand on every railroad project; the 6-character minimum is gone from What we do not claim and from the roadmap. Every site now sends browser security headers, so that line is gone too. Directors, Trainmasters and Clearline's operator now sign in with two-step sign-in, enforced by the database, so the multi-factor line is gone as well. Stored secrets (the AI provider key, the licensing and signing secrets and the outreach email key) moved into Supabase Vault, so the column-level line now covers everything else. |
| sec-2026-10-27 | 27 October 2026 | Vendor support grants are read-only unless the Director chooses “Read and change”, enforced by the database, and the support account is now also walled off from the hazmat and shipping-paper tables (21 tables in all), so the read-only line is gone from the roadmap. Account administration is checked on the server and logged for the Director (new claim C37), so its two roadmap lines are gone too. Repeated failed Employee-ID sign-ins now lock the ID for 15 minutes (C11). Switch-list email goes only to the facility's saved inboxes, with a daily limit and a send log (new claim C38). The Anthropic-based AI features, the Demurrage Calculator AI and switch-list email need two-step sign-in from accounts that must use it, and the app signs those accounts out when idle. The sign-in screen no longer offers self sign-up. Corrected: each request to the Anthropic-based AI features has been logged per person since 24 October 2026. |
| sec-2026-10-28 | 28 October 2026 | Every privilege check behind the access rules that our test suite probes now refuses callers who are not signed in: the three helper checks that could still be asked, and only ever answered “no”, were closed on 28 October 2026, so that exception is gone from claim C04. |
When a claim's status changes, the page is regenerated from the latest security report; when its wording changes, the version above changes too.
Questions about this page: security@clearlineprotocol.com. Related: Terms of Use and Privacy Policy.