Skip to main content
A desk watches one venue through a session. Prices move, volume spikes, and someone has to read each move against what is on file and say whether it is worth a second look. Most moves are nothing. A few are unexplained. One or two might be worth acting on, and those are the ones a person should decide, not a model. You want every observation read the same way, with the thin ones sent for a closer look at the evidence rather than waved through, and with the record of each read kept for the next session. You want the venue’s calendar respected: nothing read on a closed day, nothing read after an early close. And you want no order placed by anything but a person. Obversa gives each observation its own recorded run. A typed assessment answers three narrow questions, a check refuses a malformed answer before it can become advice, an uncertain answer sends a research seat to the evidence files, and an advice record is written either way. Where action would be considered, the run stops on a question for a person and stays stopped until they answer. This file is a session host and a four-step run per observation, on a fictional venue with recorded data, so it runs offline and claims nothing about any real market.

Run it

Set the project up as Installation describes. Copy the file with sessions/, observations/, evidence/, briefs/ and policy.json beside it, sign in to Claude Code for the research seat, and run it from that directory. Without MARKET_ASSESS_ENGINE=jev, the assessment seat replays the assessment recorded with each observation, so the file runs with no account at all:
Terminal
The output below is the proof’s offline run, with scripted seats standing in for the models, so the words are the script’s and the shape is the run’s.
Output, from the offline proof
Three sessions, seven observations. The ordinary session admitted four: one confident hold that completed, one uncertain read that went to the research seat and completed as a hold, one consider-buy that stopped on a question for a person, and one malformed assessment that failed its check and left no advice. The closed session admitted nothing. The shortened session admitted the morning observation and refused the one after its early close. One question is pending in history/questions.jsonl, and each admitted observation has its own record under records/.

The file

The venue is fictional and its calendar is explicit, with an ordinary, a closed and a shortened session, so the host asserts nothing about any real exchange’s hours:
examples/use-cases/markets/sessions/calendar.json
The routing policy is two numbers the example’s author chose. They express this example’s policy; they are not a recommendation, and a confident answer is not assumed correct:
examples/use-cases/markets/policy.json
Each observation is one dag() run of four steps and a question. assess asks the three questions with no workspace and no tools; validate reads the typed answers and throws on a malformed one, which fails the run before any advice is written. Then the shape splits on what the assessment said:
examples/use-cases/markets/market-session-advice.ts (excerpt)
research runs only when the assessment is uncertain under the policy, reads the evidence files named for the observation and writes a note under advice/. record writes the advice file whether or not research ran. consider is a person’s question, asked only when the advice is anything but hold; with nobody answering, the run stops there with the question on its record. The session host admits each observation against the calendar and gives it a run of its own:
examples/use-cases/markets/market-session-advice.ts (excerpt)
Each run records to records/<observation>.jsonl under its own run id, so a later host can reopen exactly one observation’s run when the person’s answer arrives, and nothing done for another observation is touched. The assessment seat is the Jev API engine when MARKET_ASSESS_ENGINE=jev names an endpoint and key, and otherwise a scripted engine that replays the recorded assessment.
briefs/market-session.md
examples/use-cases/markets/market-session-advice.ts

The team’s shape

What the run did

The proof runs the file against scripted seats and checks the shape the page describes: which observations were admitted and refused, which run completed, which stopped, and which failed. Obversa recorded each observation’s run as its own event log, so the read of obs-002 shows the assessment, the research seat’s turn and the advice in order, and obs-004 shows the check that refused a confidence of "high". The question for obs-003 is on that run’s record and in history/questions.jsonl; a later answer reopens that run through the callbacks client, as A person decides shows, and never authorises anything on a newer observation. What the file doesn’t do is as much the point. No order is placed, no brokerage is connected, no return is estimated, and the routing numbers are the author’s, exercised on both sides by the fixture. The live variant swaps the recorded assessments for Jev and keeps every other step the same.

Next steps