GEODE
Autonomous Agent Harness
From observation to the next action.
A local autonomous-agent harness you can hand research, file work and scheduled tasks.
Decision Offloading w. Jev
Which of the intermediate decisions an agent makes mid-task can be handed to Jev, a decision-only model? This research checks whether independently verified task quality holds once they are, counting preparation, repeated judgments, repair and final delivery. Early pilots could not be explained by swapping the judgment call alone, so the input contract, the decision contract, the probability policy and the execution agent’s consumption were separated into their own experiments.
Runtime · final verdict
With Jev selected, final verification calls Jev once with one Choice question, and only an admitted supported verdict passes.
judgment_engine · llm | jev
core/config/judgment.pyrun · decide: choose the routefinal verdict · one Choice questioncore/agent/verify.pyThe Jev route is used only when judgment_engine is set to jev (default llm). provider auto picks TypeSafe, then OpenRouter, whichever has a key; without a key the LLM-judge route stays. This is not a fallback that retries a failed request elsewhere.
final verdict · one Choice question
core/agent/verify.pydata: request · candidate · observationsSystemOne · one call · no fallbackadapters/typesafe.pyThe original request and candidate are redacted and bounded, then sent with the tool observations as one Choice question (supported, contradicted, insufficient_evidence). The judgment call gets no tools (allow_tools=False). A judgment that needs images is not sent to Jev and becomes verification_error.
SystemOne · one call · no fallback
adapters/typesafe.pydata: one SystemOne callTypeSafe SystemOneOne call, direct to TypeSafe or through OpenRouter, with no hop to another provider. Jev is never used as the root text-generation model.
admission · sum tolerance 1e-5
adapters/typesafe.pydata: admitted Choiceonly supported passes · text onlycore/agent/verify.pyA response is used only after type, range and probability-sum (tolerance 1e-5) admission. Only supported passes; contradicted and insufficient_evidence become a retry signal with a fixed next check. A response that is not end_turn or fails admission becomes verification_error, which is not a retry signal (should_retry=False). The score is a binary projection, not a calibrated probability.
only supported passes · text only
core/agent/verify.pydata: passed · reflectionPostVerify · Stop policyloop/_lifecycle.pyThe verdict goes to the completion chapter’s PostVerify and Stop policy. A verdict is an input to that policy, not an authority; when it waits for review, the candidate stays only as pending_text and the final response is empty, so nothing is delivered.
PostVerify · Stop policy
loop/_lifecycle.pyrecord · observe: verdict rowstimeline · ledger decision rowsmemory · observabilityVerdict decisions are recorded in the timeline and evidence ledger: runtime records, separate from the research artifacts.
Runtime · reflection
The same choice drives reflection’s evidence classification; the next-check sentence is set by code.
judgment_engine · llm | jev
core/config/judgment.pyrun · decide: same choicereflection · evidence classificationloop/_reflection.pyThe same choice applies to reflection.
reflection · evidence classification
loop/_reflection.pydata: classify evidenceSystemOne · one call · no fallbackadapters/typesafe.pyReflection uses Jev to classify bounded evidence and appends a code-owned next check. It does not change belief hypotheses or self-confidence.
SystemOne · one call · no fallback
adapters/typesafe.pydata: one SystemOne callTypeSafe SystemOneOne call, direct to TypeSafe or through OpenRouter, with no hop to another provider. Jev is never used as the root text-generation model.
admission · sum tolerance 1e-5
adapters/typesafe.pydata: classificationreflection · evidence classificationloop/_reflection.pyOnly an admitted classification updates the reflection state; on failure the next round retries from the same prior state.
Research · fixed panel U3
Without an actor, Jev and Astra judgments on the same state and question were compared in pairs.
Astra · Jev · same question
U3 · fixed-state paneldata: Jev judgmentTypeSafe SystemOneU3 (original experiment commit 2f2b494): 120 fixed states · 27 source clusters · 240 calls. Each state and question went to Jev and Astra as one pair; no actor, tools or Harbor.
Astra · Jev · same question
U3 · fixed-state paneldata: Astra judgmentAstra judge · actor modelCorrect on the same sample: Astra 90/120, Jev 84/120; median per call 10.446 s vs 0.253 s. This is judgment-call latency only, not task time or cost savings.
U3 · fixed-state paneldata: panel results · reportJev research report
U3’s accuracy and latency results appear in the public technical report. Whether this panel is part of the E2E public packet is not claimed here.
Research · E/I runs
With Astra as the actor, only the judgment route changed, and an independent rule oracle checked results and delivery separately.
Astra actor · tools · repair
E/I · Harbor 0.22data: generate · tools · repairAstra judge · actor modelIn E/I on Harbor 0.22, the actor Astra handles generation, tool calls and repair; only the judgment route changes.
judge route · Astra · Jev · Jev-first
E/I · Harbor 0.22data: completion-judgment routeTypeSafe SystemOneE7 (original experiment commit 1f65534): 12 authored synthetic tasks × 3 configurations × 2 runs = 72 runs, 24/24 per configuration. The Jev-first configuration had 0/24 actual fallbacks, so its effect was not measured.
E/I · Harbor 0.22record · observe: independent checkcorrectness · delivery separate
rule oracleAn independent rule oracle checks the final result, and actual final delivery is counted separately. In the interrupted U8n’s 11 post-hoc pairs, every candidate passed the oracle, yet delivery was Astra 11/11 and Jev Noul 0/11.
E/I · Harbor 0.22data: failure · repair lineageE2E-DATA · source · public hashes
jev-v3-20260927The E2E public packet keeps preparation, failure and repair lineages, with source and public-copy hashes kept apart. A redacted public copy does not stand in for unchanged source validation.
REPRODUCE · model-free
jev-v3-20260927data: model-free recomputationJev research reportRecomputing figures from stored responses and running anew are different operations. The report is a public technical report, not a peer-reviewed paper.
Every connection at the same weight. Pick a flow to highlight only its path, with numbered steps.
- Solid · the direction requests, candidates and results flow
- Dashed · run, decide, authorize, configure
- Long dash-dot · records and observation, separate from the verdict
- Heavy black line · the selected flow; numbers give the order
- Box · a code or record boundary, its path in the header
- Inner chip · a component in that boundary
- Dashed box · outside that boundary
- loop · execution harness
- route choice · verdict · oracle
- records · public packet
- transport · judgment panel
The upper and lower parts are different systems. The research configurations and results are not all switched on in today’s runtime path; the only shared link is that both call the same Jev model (jev-1.13.0).
- Runtime admission
- The runtime keeps the probability-sum tolerance strict at 1e-5. Evaluation callers pass their own recorded tolerance instead of loosening the runtime parser.
- Research scope
- U3 measures judgment calls only; E/I includes the actor and repair. Their denominators are never mixed, and U8n’s 11 pairs are a post-hoc analysis of an interrupted study.
Three decision contracts
Choice
- Returns
- Probability per category or option
- Decides
- Completion; the intent and target of a request
Noul
- Returns
- P(true) for each condition
- Decides
- Contradiction; missing evidence
Score
- Returns
- Expected value and distribution on a fixed ordered scale
- Decides
- Ranking of generated candidates
The expected value places a candidate on the scale; it is not used as confidence.
Evaluation and wiring
Each contract was evaluated on its own fixed input panel, and some were wired into the experiment harness’s execution path to see how the execution agent consumes the judgment. In the map above, the research part shows those runs; the runtime part is the opt-in path in today’s GEODE.
Observations that changed the design
- I5 → I6 · input contract
- Tracing a shared delivery failure showed the judgment input lacked the task contract and described same-request tool observations as past context
- I6 delivered 6/6 in a separate run with the revised code and a new account
- U3 · same 120 state pairs
- Median per call Astra 10.446 s · Jev 0.253 s; correct on the same sample 90/120 · 84/120
- Speed and accuracy are weighed together for each decision to set the delegation scope
- U2 · probabilities
- Jev’s probabilities were better calibrated in size, but Astra ranked its wrong judgments ahead more reliably
- Calibration and error selection are measured separately, and the threshold is frozen on the selection split
- U6a · intent and target
- On 40 designer-authored families, Jev 216/220 · Astra 220/220, meeting the preregistered −5 pp margin
- Fixed intent and target classification narrowed as the next application candidate
- U8n · delivery
- Post-hoc 11 pairs from an interrupted run: repaired candidates passed the oracle in both arms; delivery Astra 11/11 · Jev Noul 0/11
- Missing-evidence judgments blocked correct delivery; the current Noul setup lacks grounds to serve as the sole delivery judge