Field notes
Short notes from building the thing: one observation, its cause, the fix, the test that holds it, and what is still open.
Written and covered by tests — not yet observed in a live run
Each note follows the same four beats: what was seen, why it happened, what changed, and what is still not covered. They are short on purpose — a note is one measurement and one consequence.
#A fix that reproduced its own defect
- Observed — a request combining three deliverables produced only two of them.
- Cause — the negation list was matched as a substring. The French word for “a” contains the word for “not”, so “a presentation” read as “no presentation”.
- Fix — negation is matched on whole words, splitting on everything that is not alphanumeric, the apostrophe excepted.
- Test — a combined request must yield three distinct outputs.
- Still open — the parser is lexical. A request phrased as a question rather than an instruction is not covered.
#A test that accused the prose
- Observed — a guard asserted that the workbook tool exposes no file path, and it failed.
- Cause — the guard was reading the tool’s human description, found the word “path” in a sentence explaining that there is no path, and failed on its own explanation.
- Fix — the guard inspects the declared input schema keys instead.
- Test — the schema carries exactly six keys, and none of them is a path.
- Still open — nothing checks that the description and the schema agree.
#A file on disk is not evidence
- Observed — a spreadsheet sat in a data room, and it looked like proof that the engine worked.
- Cause — it had been written by a Python agent in an earlier version, before the engine existed.
- Fix — none needed in code; the reporting rule changed. A produced file counts as evidence only when the run that wrote it is identified.
- Test — the engine’s own tests write, reopen and verify, so the engine’s claim never rests on a file someone found.
- Still open — the engine has still never run inside a real agent session.
#A counter that saw the neighbours
- Observed — a test asserting that a blocked card starts no process failed, apparently at random.
- Cause — the process counter was global and picked up harmless helper processes spawned by tests running alongside.
- Fix — the counter only counts vendor processes.
- Test — the same assertion, now stable.
- Still open — the counter is a heuristic on the process name.
#A request that convened the wrong role
- Observed in a live run — a workbook request went to the fundamental analyst alone. Nobody who owns the workbook format was called.
- Cause — routing keyed on the words of the request rather than on the owner of the requested format.
- Fix — a requested deliverable convenes its owner. One format, one owner.
- Test — a workbook request calls the accounting role even with no accounting keyword in the sentence.
- Still open — tested, not yet observed in a live run.
#A hard kill is not a clean quit
- Observed — one orphan process remained after a session, and had to be terminated by hand.
- Cause — the application was stopped with a signal rather than through its own quit path, so its shutdown routine never ran.
- Fix — none. The behaviour is correct: a brutal kill bypasses cleanup by definition.
- Test — the quit path stops every process it started.
- Still open — this is not evidence that a normal quit leaks; it is evidence that a hard kill does.
#Sources
- Finexia OS — product state at 0.0.23FinexiaInternal document, not published
- Finexia OS — handover report 0.0.22FinexiaInternal document, not published
Read next
- Case studiesRuns that actually happened, with what was asked, which roles were convened, what was produced, and where each one stopped.
- MethodologyHow a Finexia run is set up so that its result can be argued with: scope, as-of date, admissible sources, missing data, provenance, checks, and what counts as evidence.
More in Research