fx
Identity
-
Names:
com.vercel.fx; short aliasfx. -
Native format:
fx-event-log-v3:authority.json,events.jsonl,commit.<log_generation>.json. Session-manifest schema 3 differs from event-envelope schema 1. -
Session ID:
authority.session_id, checked againstsession_started.payload.idand commit watermarksession_id. The native timestamp/nanosecond/random ID needs no namespace. - Commit contract: Validate generation, framing, contiguous native sequence, terminal event ID and exact committed-byte watermark. Bytes after the watermark are not events or gaps. Defer capture while pending markers are present. Validate and project the same unchanged bytes, then recheck sidecars. The pinned reducer verifies replacement chunk IDs/order/lengths/checksums and final state identity.
- Notes: Committed events retain sequence order; canonical history/current state follow as snapshots. Compacted summaries have unknown extent. Keep numeric signals raw and non-UTF8 bytes native with an explicit content loss. Model preferences and permission rules are configuration, not served-model or approval-request evidence. Inspect marked secret answers in every decoded replacement, including superseded states; exclude encoded secret-bearing chunks too.
Position basis
Use only positions established by the stated format and mapping evidence. Current-state rows without transcript positions go at the end, as the snapshot tail. A protocol commit boundary takes precedence over physical EOF; uncommitted bytes are not a gap.
Destinations
fx: native facts without a standard field
Links
-
Entity keys and links: Audit identity derives from
(log_generation, event_id, projection slot). The pinned reducer appends one turn perhistory_turn_committedand replaces history atstate_replacement_committed. Appended-turn identity derives from its event; replacement turns use capture-scoped positions. Native tool IDs join resulttool_call_idonly when unique. Work IDs and recovery counts are not turn IDs. -
Lineage: Directory containment and
last_subagent_work_iddo not qualify child identity, parent, fork, copies or root.
Usage
Select one report per native accounting identity only when this entry establishes that identity. Keep unjoinable or overlapping reports as native evidence. Declare incomplete semantic coverage. Schema defaults and placeholder zeros are not reported usage. Backend inclusion rules require evidence; do not infer them from a model name.Lane and unassigned facts
Facts without established session ownership use manifest_meta["com.vercel.fx/unassigned"] with the common shape. Selection may retain these facts with any session subset, including an empty subset, but must not imply session ownership. State the selection policy in the export report.
Losses
Declare every applicable loss under ASR-157. Missing model rendering, accounting joins, lineage or exact context boundaries remain losses when this entry does not qualify them. Unknown ownership is not itself lost data. Omitted unassigned facts use a documented vendor loss or report, not a new core category.Evidence
Basis: source-verified and observed: fx0.0.6, commit 79666393e5f613c85f2f0b4b65475f1addd55379, transactional schema 3, with sanitized native tool-free/read-file captures and authored protocol tests. Schema 4 conversation logs and legacy snapshot stores are separate formats.
Evidence applies only to the named formats and explicit mappings above. A real capture covers only exercised behavior. A no-model writer probe covers persistence, not model or tool execution. Authored tests do not qualify an agent version. Unlisted formats and link mappings remain unqualified.