A record sink that appends to one file — RecordSink plus what the app needs to manage the file.
fileSink's options — every resource the sink can spend, bounded.
One immutable-file selection capability. No path, descriptor, mutable index or discovered run catalog is served.
Host authorization is fixed before any stored entry is read. It is never inferred from the index.
A record file read back: every parsed line, and every line that could not be.
The default bound on flush(): 10 s.
The default cap on a record file: 64 MiB.
The default cap on ONE entry's line: 8 MiB.
The default cap on bytes accepted but not yet written: 16 MiB.
A record sink that appends each entry to path as one JSON line — the crash-safe record on a Node host.
Explicit bounded whole-file preparation, followed by authorized positional scope reads from that immutable file.
Read a record file back, line by line — the entries for readStoredRecord, and every line that could not be
read, by number, never a failed read. A stored key named __proto__ stays data (JSON.parse makes it an own
property). The file is untrusted: a file larger than maxBytes (default 256 MiB) is refused before it is read.
Node only. The crash-safe record as a JSON-lines file.
This door imports
node:fs; it is the one door that does (test/architecture/layering.test.ts), so every other door stays loadable in a browser. The port itself —RecordSink, and the referencememorySink()— is foottrace's (foottrace/write); the reader isreadStoredRecord(foottrace).Example