mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-27 02:22:21 +02:00
221 lines
12 KiB
Markdown
221 lines
12 KiB
Markdown
# Tools v3 — No-RAG preview
|
|
|
|
Select this endpoint in the 7011 model picker, with model
|
|
`odysseus-qwen3.5-tools-pre-heretic`. This endpoint owns its complete tool loop
|
|
and enters Agent mode server-side on every turn, including ambiguous follow-ups;
|
|
it does not depend on the legacy per-message intent classifier. Start a new chat
|
|
for an uncontaminated comparison. Enable Web for searches. Clean routing is
|
|
owned by the exact model identity, so both the normal `preheret` endpoint and
|
|
the `cleanv3` alias use this runtime. Every other model remains on legacy RAG.
|
|
|
|
Endpoint ID: `cleanv3`. Its base URL uses the same inference server's Tailscale
|
|
DNS name, `http://odysseus.tailb895f4.ts.net:18182/v1`, to distinguish it from
|
|
the original IP-address route when existing chats omit endpoint IDs.
|
|
|
|
## Implementation
|
|
|
|
- `src/clean_agent_preview.py` is a separate streamed native-tool loop, entered
|
|
before legacy routing and substitutions. It uses real authenticated tool
|
|
dispatch, the tool-work `compact_contract_v5` builder, temperature 0,
|
|
and thinking disabled. No weights change or inference server was started.
|
|
- The offered tool inventory is stable except for permissions/toggles. Safe,
|
|
explicit personal creates/updates are enabled for notes, tasks, calendar,
|
|
memory, skills and documents. Destructive operations, shell/code, outbound
|
|
email, browser interaction, deployment/admin changes and unrelated-family
|
|
write substitution remain blocked. No tool or argument substitution is
|
|
applied by the loop.
|
|
- Native calls and matching results persist in `clean_v3_turn` metadata so
|
|
follow-ups use actual evidence. History retains at most eight complete turns,
|
|
trimming oldest whole turns for size; individual outputs cap at 8000 chars.
|
|
- Real search still uses the existing search backend and its provider handling;
|
|
this does not claim that provider quality or every backend transform is fixed.
|
|
- All routing, privileges and default settings outside this exact Odysseus model
|
|
remain unchanged. The loop has six execution/eight-round limits.
|
|
- Write completion is evidence-bound: affirmative success text is replaced
|
|
unless a private-write tool succeeded during the turn. Proposed call batches
|
|
are policy-preflighted atomically, so a batch containing a blocked operation
|
|
cannot partially execute before denial.
|
|
|
|
## Verification
|
|
|
|
399 focused Python tests passed after route integration. Browser runs r1/r2
|
|
accidentally exercised the old loop and are not preview evidence. The runner
|
|
now explicitly asserts `selection_mode=clean_compact_v3_preview`.
|
|
|
|
`reports/clean-v3-live-ui-r3-20260909.json` confirms the preview route, real notes
|
|
execution, correct repetition from history, successful search and no-tool
|
|
summary, plus visible incremental growth. Its notes assertions were for the
|
|
old routed contract: they prohibited offering web tools even with Web enabled,
|
|
and required another notes call for a verbatim repeat. The updated preview
|
|
checks permit stable offers and accept an exact match to the preceding saved
|
|
answer without re-execution; execution permissions are still asserted.
|
|
|
|
`reports/clean-v3-live-ui-r4-20260909.json` is the corrected four-turn check,
|
|
including notes with Web off and search with Web on: **4/4 passed**, with the
|
|
preview selection mode explicitly confirmed on every turn.
|
|
These are UI smoke tests, not all-family or factual-answer benchmark scores.
|
|
|
|
## Disable
|
|
|
|
Disabling only endpoint `cleanv3` removes the duplicate picker alias; it does
|
|
not disable this model-owned runtime. To roll back the runtime, revert the exact
|
|
model route in `routes/chat_routes.py`. Do not delete weights, adapters, or user
|
|
chats. The v3 schema builder dependency is
|
|
`/home/pewds/odysseus-tool-work/scripts/eval_alltools_unseen_compare.py` and its
|
|
schema-dropout helper; preserve those with this deployment.
|
|
|
|
## Expanded UI checks — 2026-09-09
|
|
|
|
24 additional turns completed through the preview: 23 automated passes and one
|
|
checker false alarm. The Cookbook follow-up correctly shortened the previous
|
|
six-server result to the first three requested names without another call. The
|
|
checker required either a fresh call or a verbatim repeat; manual inspection
|
|
confirmed the requested subset. Raw failure evidence is retained, not rescored.
|
|
|
|
Covered notes/misspellings/second-note selection, calendar/second-event time,
|
|
tasks, documents, memory, skills, Cookbook listing, misspelled search, and Web
|
|
toggle changes. Cross-family flows passed: Germany news → “whats my notes”,
|
|
notes → “seach current stock mraket news”, and calendar → “now show my noes”.
|
|
The model chose `current stock market news` itself. Every completed turn's
|
|
audit confirmed the preview mode. Search source factual accuracy is not graded
|
|
by this suite, and successful reads do not establish mutation coverage.
|
|
|
|
Email was separately attempted but the test guard stopped it because the
|
|
stable offered inventory exceeded its metadata-only verified scope. Email
|
|
therefore remains unverified in this expanded run; the guard was not weakened.
|
|
No production code, service settings or weights changed during these tests.
|
|
|
|
Evidence under `reports/`:
|
|
|
|
- `clean-v3-broader-ui-20260909.json`: 16 turns, 15 automatic passes, Cookbook caveat.
|
|
- `clean-v3-topic-switch-ui-20260909.json`: 6/6 passed.
|
|
- `clean-v3-second-note-ui-20260909.json`: 2/2 passed.
|
|
- `clean-v3-email-notes-ui-20260909.json`: blocked email attempt; notes not run in that file.
|
|
|
|
## Picker route fix
|
|
|
|
The previous tests selected sessions through the API, missing a real picker
|
|
bug: local entries were deduplicated by model ID, hiding alternative endpoints
|
|
with the same weights. The picker now uses endpoint+model identity for local
|
|
routes too, displays the endpoint name, and scopes its last-picked send override
|
|
to the current chat. `/api/sessions` returns owner-filtered endpoint identity
|
|
for unambiguous saved URLs, so reload labels do not depend on loading the model
|
|
catalog. Ambiguous identical URLs are not guessed.
|
|
|
|
The user-authorized chat `ec0683a2-015f-41d7-aa1f-34135c9640cb` was switched to
|
|
`cleanv3` using the authenticated session PATCH API; no messages were inserted
|
|
and no tool actions ran in that chat. Defaults and other chats were unchanged.
|
|
|
|
The runner's `--picker-route true` starts on the original route, clicks the
|
|
preview in the real picker, sends a greeting, reloads the chat permalink, then
|
|
asks for notes. Early picker/reload reports are incomplete, not passes: their
|
|
label check exposed the unloaded-catalog issue. Focused route/picker/history
|
|
tests: 16 passed.
|
|
|
|
Final picker test: `reports/clean-v3-picker-reload-r5-20260909.json`, **2/2
|
|
passed**. Real picker click, greeting, permalink reload, and notes follow-up
|
|
all confirmed the preview route. The label survived reload. R4 retained a
|
|
history/DOM mismatch from sending before restored history was ready; the final
|
|
driver explicitly waits for the saved first answer to render before sending.
|
|
This does not claim a general fix for sending during unfinished history loading.
|
|
|
|
## Native image/VL status
|
|
|
|
The inference launcher previously set `--limit-mm-per-prompt` to zero images,
|
|
so vLLM rejected attachments before the model saw them. The durable Odysseus
|
|
launcher now permits up to three images per prompt; video remains disabled.
|
|
|
|
`reports/clean-v3-vl-live-r4-20260909.json` proves the real 7011 attachment
|
|
path, clean compact route, object/color/spatial recognition, permalink reload,
|
|
and ambiguous image follow-up. Those checks pass. Exact OCR of the deterministic
|
|
`ODYSSEUS 42` heading fails in both the untouched Qwen 3.5 9B base and the
|
|
fine-tune, so it remains a base/runtime capability limitation rather than a
|
|
fine-tune regression or harness failure.
|
|
|
|
The same native path also passes JPEG and lossless WebP transport, object
|
|
recognition, reload, and follow-up grounding. Evidence:
|
|
`reports/clean-v3-vl-jpeg-r1-20260909.json` and
|
|
`reports/clean-v3-vl-webp-r1-20260909.json`. Both remain `partial` only because
|
|
the shared OCR check fails.
|
|
|
|
## Reversible write check
|
|
|
|
`scripts/verify_clean_v3_write.mjs` runs against only `sft_alex_creator`. It
|
|
creates one UUID-named note through the real 7011 UI, verifies that exact row,
|
|
requests a destructive bulk deletion, verifies the row still exists, and then
|
|
deletes only its own test row through the authenticated API. The cleanup is
|
|
verified by a 404 lookup.
|
|
|
|
Final evidence: `reports/clean-v3-write-ui-r8-20260909.json`, **passed**. Both
|
|
turns reported `selection_mode=clean_compact_v3_preview`; creation executed via
|
|
`manage_notes(action=add)`, the destructive action did not execute, and the
|
|
canonical response was “No changes were made.” The earlier r3/r5 files are
|
|
startup/placement failures, while r4/r6/r7 retained genuine intermediate
|
|
harness and verifier failures; none should be interpreted as passes.
|
|
|
|
## Stateful, search, and email checks
|
|
|
|
The reversible stateful runner passes all six mutation families in one run:
|
|
calendar, notes, tasks, documents, memory, and skills (**6/6**). Each flow
|
|
creates a UUID-only artifact through the real Agent UI, verifies it by
|
|
owner-scoped API, applies a noun-free correction, verifies persistence, and
|
|
removes only that artifact. A direct database audit found zero active synthetic
|
|
calendar, note, task, or document rows afterward.
|
|
|
|
The document failure was harness-owned. Compact description dropout left a
|
|
vague free-form `command` field, error envelopes defaulted to exit code 0, and
|
|
the clean loop dropped the active document ID. Compact v5 now exposes only
|
|
required structured `edits`, reports errors truthfully, and executes against
|
|
the request's explicit active document. Fresh document and combined stateful
|
|
runs pass.
|
|
|
|
Search Web-toggle combinations `00`, `01`, `10`, and `11` pass **8/8** across
|
|
two turns. A web question can no longer silently enable Bash because it says
|
|
“official source”, and an unavailable Web capability exposes no unrelated
|
|
fallback family. The quality suite passes **3/3**: evidence reuse without a
|
|
second call, explicit official-page inspection with `web_fetch`, correction of
|
|
“stock mraket” in actual search arguments, and a truthful unsupported result
|
|
for a synthetic company.
|
|
|
|
Production-path email reads pass **3/3** through the running email MCP: account
|
|
list, latest inbox list, and referential read of the first result. The report
|
|
retains no account names, addresses, subjects, bodies, prompts, or answers.
|
|
|
|
Post-fix representative direct/follow-up coverage also passes for every family:
|
|
notes/calendar 4/4, tasks/documents/memory/skills/Cookbook/search/shell 14/14,
|
|
and email 3/3 in its privacy-preserving runner. The combined legacy verifier's
|
|
metadata-only email guard correctly refused its broader stable inventory; that
|
|
stopped report is not counted as a model failure.
|
|
|
|
Evidence:
|
|
|
|
- `reports/clean-v3-stateful-all-r3-20260909.json`
|
|
- `reports/clean-v3-stateful-documents-r2-20260909.json`
|
|
- `reports/clean-v3-search-toggle-final-r6-20260909.json`
|
|
- `reports/clean-v3-search-quality-r3-20260909.json`
|
|
- `reports/clean-v3-email-read-r1-20260909.json`
|
|
- `reports/clean-v3-ten-family-tail-postfix-r1-20260909.json`
|
|
|
|
These checks verify routing, execution, persistence, follow-up, and selected
|
|
answer-quality invariants. They are not yet the sealed all-action ship score.
|
|
|
|
## Compact v5 and corrected contract evidence
|
|
|
|
Compact v5 keeps the compact-v3 surface and adds only development-positive
|
|
field hints for Email, Search/Hugging Face quant selection, and Shell/files.
|
|
A Calendar date hint regressed development and was excluded. The Python tool now
|
|
emits one final bare expression, REPL-style, without duplicating explicit
|
|
`print(...)`; this turns otherwise correct computation calls into visible tool
|
|
evidence for all models.
|
|
|
|
Under frozen scorer `odysseus.contract.v2.5`, development is 327/344 raw
|
|
(95.06%) and 327/336 scorable (97.32%). Sealed blind is 311/344 raw (90.41%)
|
|
and 311/336 scorable (92.56%), with zero reasoning leakage. Calendar, Shell,
|
|
and Tasks remain below the 90% family ship floor, so the model is not yet a
|
|
full benchmark ship candidate.
|
|
|
|
Fresh post-deploy real-UI evidence passes: stateful flows 6/6, Email 3/3,
|
|
Search quality/recovery 3/3, private browser 3/3, and VL workflow 3/3. The
|
|
Search check accepts a failed attempt only when a later tool succeeds and the
|
|
final answer remains grounded.
|