> ## Documentation Index
> Fetch the complete documentation index at: https://qitor.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# G5 migration and limits

> QitOS G5 · G5 migration and limits

## Current R1 capabilities and migration

R1 local integration and the five reasoning, cleanup, handoff and YAML repairs are
complete. Python 3.10 cleanup compatibility was discovered and repaired afterwards.
Every owned resource is attempted; cleanup failures cannot masquerade as success or
refund a sent request. Callback/cancellation exceptions retain their identity.
On Python 3.10, safe numeric diagnostics remain accessible in exception `__notes__`;
the standard traceback does not automatically display them. CPython 3.10 Task
awaiters receive a cancellation wrapper whose `__context__` retains that original
exception and its notes.

* Initialize Memdir explicitly with `MemdirMemory("./memory", create=True)`; the default restores an existing directory.
* Direct Read/Edit calls return `ToolResult`; check `result.status`, then read `result.output`.
* Upgrade older WorkGraph readers that do not recognize `dispatch_not_started`; do not ignore unknown states.
* Strict snapshot paging and streaming export support bounded consumption; complete reads still materialize records and historical bytes are still verified.

Offline qualification does not imply live-model qualification, a PyPI release or a
site deployment. R1 does not complete all V5 scope. This page describes source
capabilities; install an exact source identity.

## Historical G5 qualification (not current R1 synchronization status)

G5 runtime `717b4cf1b23f2ed252cd03234ffd8605038d9567` passed framework qualification; S4 local integration is complete. Historical 2663 passed / 50 skipped belongs to that SHA, not documentation successors. Remote sync is verified and the default development branch is master. Successor CI stabilization is recorded separately; no release or deployment was performed. On the pinned historical G5 commit, Python 3.10 publication fails because it uses hashlib.file\_digest (introduced in Python 3.11); use Python 3.11+ for this path, with local G5 qualification specifically on 3.12.7.

| Boundary                      | Supported behavior                                                                                                                                                                                                    |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Durable Session / Memory      | SQLite survives process exit; Memory is process-local; ephemeral promises no restore.                                                                                                                                 |
| inspect / pause / steer       | CLI inspect needs no provider, credentials or Docker. Live CLI pause/steer is unsupported; Python safe-boundary pause and restore-time steering are supported.                                                        |
| approval / fork               | Unresolved approval blocks restore. Steering does not authorize tools. Fork reads an immutable snapshot without changing source head.                                                                                 |
| timeout / unknown             | Timeout is not hard cancellation. Unknown effects are not automatically replayed; reconcile externally.                                                                                                               |
| sandbox / publication         | Cleanup retains output but never publishes. Explicit publication supports limited top-level regular files and supported POSIX platforms; macOS was qualified, Linux host publication was not independently qualified. |
| Trajectory / historical trace | Journal is the default. Historical wire IDs and explicit TraceWriter remain compatible. qita is read-only. Complete reads currently materialize all frames.                                                           |
| export / privacy              | Public redacted export is a declared-loss projection, not a lossless copy of raw data.                                                                                                                                |

## Migration actions

1. Install by source identity, not only version 0.6.0.
2. Replace environment-first setup with agent.yaml + CredentialRef + explicit resolver.
3. Use AgentComposition.session for configured launches; custom AgentModule still uses public Engine/RuntimeComposition.
4. Move host file tools to attested Docker Env and explicitly select publication files.
5. Keep old traces; default\_reader reads both formats.

## Troubleshooting

`sandbox_unavailable`: start the daemon, verify image/resources; do not switch to unsafe host.

Credential file errors: check the credentials root, matching ref, 0600 file, 0700 directory and outside-repository location. G5 scaffold omits the root key; replace it with the configuration reference example.

Codec loss: a tool may have executed before the next request is rejected for unpreservable semantics. Keep request\_sent, budgets, tool outcomes and loss reports. Do not disable checks or blame model intelligence.

Required sink failure: resolve storage/permissions and reconcile durable facts; final text alone is not success.

[Configuration](/reference/configuration) · [Quickstart](/quickstart).

Master successor: publication now uses bounded descriptor hashing on Python 3.10 too. The pinned historical G5 commit remains unchanged; see the separate master CI stabilization plan for current qualification.

Master also reuses parsed journal data only after hashing all current file bytes. Changed content is fully parsed and verified; complete reads still materialize all records. Historical source qualification accepts only fixed, retained ancestor identities when source branches are absent; an existing mismatched branch still fails.
