Fractal report verification
Type: agentic-system-analyses/types/agentic-system-verification.md
Verification
The reports support a bounded implementation account, with no publication blocker and one local recovery limit below. I read all supplied members, their types and record contract, and independently traced the consequential behavior in SRC-1. HEAD equals the frozen revision; the checkout is clean. The boundary correctly distinguishes the complete Fractal artifact from the external PredictRLM execution loop. No target, test, example or service was executed. Implementation and doctrine do not become observed operation or causal support. The supplied structural report has no findings; all four correction-answer inputs are empty.
Runtime records and controls
I checked RT-CMP-main-lm and RT-CMP-sub-lm against adapter construction and selection in SRC-1, src/fractal/runtime_lms.py, src/fractal/providers.py, src/fractal/runtime.py and src/fractal/agent/service.py. Shared adapters by default, separately selectable sub-models, mutable endpoint selection and lack of an enforced exact remote model revision are supported. Provider-internal parameter changes remain uninspected, not absent.
RT-OBJ-edit-workspace, RT-OBJ-session-state and RT-BAP-workspace-guidance match SRC-1, src/fractal/agent/signature.py, src/fractal/agent/service.py and src/fractal/session.py. Root instructions are reread, can be truncated or omitted, and enter interpreted signature text. They are not enforced filesystem permissions. The checkpoint is a mixed-content container, not a semantically accepted knowledge artifact.
I traced RT-RTE-headless-turn, RT-RTE-interactive-interrupt, RT-RTE-budget-exhaustion and RT-RTE-direct-agent through SRC-1, src/fractal/cli.py, src/fractal/runtime.py, src/fractal/tui/app.py and src/fractal/agent/service.py. Pending save precedes model work; result classification follows direct workspace execution. The interactive cancellation predicate is absent from headless submission. Budget fallback is retained with its separate status. Direct construction bypasses parser checks and automatic session persistence. The direct route's afforded status is appropriately weaker than the shipped drivers' wiring. No branch inspected restores already applied workspace edits.
RT-CLM-result-contract and RT-CLM-hook-accounting match the type checks and optional observer machinery in SRC-1, src/fractal/agent/service.py, src/fractal/events.py and src/fractal/runtime.py. Structural return validation does not certify edits. Missing hook imports and suppressed observer failures justify best-effort accounting rather than complete auditing.
RT-RTE-config-change matches validation, layered resolution, temporary-file replacement and current-runtime mutation in SRC-1, src/fractal/config_commands.py, src/fractal/config.py, src/fractal/runtime_lms.py and src/fractal/tui/app.py. Current model replacement precedes persistent writes in the inspected interactive paths. RT-RTE-package-release matches SRC-1, .github/workflows/release.yml: tag/version/ancestry checks, release, build and publish are separate dependent jobs; no test-job dependency or source-established human approval requirement exists. These are configuration and production routes, not demonstrated learning.
Memory and epistemic records
I checked MEM-OBJ-session-summary, MEM-OBJ-session-history and MEM-OBJ-turn-usage against the entire SRC-1, src/fractal/session.py, and their consumers in src/fractal/agent/signature.py, src/fractal/runtime.py, src/fractal/cli.py and src/fractal/tui/app.py. Full user/response strings survive in the summary; activity identities survive only in the detailed tail. Usage is trace-derived numerical content and is not rendered into summary instructions. The history cap includes the current pending entry. All three Part of relations are supported: summary and history belong to the checkpoint, and usage belongs to the summary.
MEM-RTE-checkpoint-update, MEM-RTE-session-context, MEM-RTE-session-reload and MEM-BAP-summary-context correctly separate write admission, recency selection, exact-ID reload and interpreted consumption. SRC-1, src/fractal/runtime.py, src/fractal/session.py, src/fractal/agent/service.py and src/fractal/agent/signature.py support their wiring but not activation or benefit. Failure/interruption records omit changed-file inputs; normal records use result-provided names rather than the hook tracker's modification list. Listing is weaker than loading on embedded-ID consistency. The memory annotations preserve the distinctions between direct caller inputs, persisted configuration, root instructions and the checkpoint.
I checked every epistemic object and ledger function against the corresponding producer and consequential consumer. EPI-OBJ-agent-turn and EPI-OBJ-session-summary are contained checkpoint material in SRC-1, src/fractal/session.py; their Part of relations hold. EPI-OBJ-runtime-event is transient normalized event input in src/fractal/events.py. EPI-OBJ-version-cache is the website-assertion cache in src/fractal/version_check.py, not conversation memory.
EPI-RTE-summary-render preserves prose and projects selected fields; its concrete deduction follows SRC-1, src/fractal/session.py. EPI-RTE-event-projection derives lists/counts only within reported-event semantics in src/fractal/events.py. Before-phase commands are attempts, not successful executions. EPI-RTE-provider-check separates connectivity classification from status/setup disposition in src/fractal/connectivity.py and src/fractal/config_commands.py: setup retains written configuration despite network warnings; status can fail. EPI-RTE-version-notice separates import, cache freshness and version ordering from installation in src/fractal/version_check.py and src/fractal/cli.py. EPI-RTE-contract-tests matches the synthetic round-trip assertions and CI job consequences in tests/test_session.py and .github/workflows/tests.yml, not a task-answer oracle or observed test success.
The passages supporting EPI-CLM-context-rot and EPI-CLM-readable-trace occur as doctrine in SRC-1, README.md; its example explicitly calls itself a pseudo trace. EPI-CLM-trustworthy-usage is correctly bounded by trace input and arithmetic in src/fractal/session.py. The ledger keeps checks separate from disposition, and retention separate from lifecycle integration. Opaque model generation remains indeterminate rather than automatically ampliative. The claimed benefits are not promoted to observed or causal evidence. Independent learning, reflection, theory-building and self-improvement conclusions are not inferred from storage or delivery.
Workflow and reconciliation
WF-RTE-audit-repair and its annotations match SRC-1, .agents/skills/fractal/RECIPES.md, src/fractal/cli.py, src/fractal/runtime.py, src/fractal/session.py and src/fractal/agent/signature.py. The recipe joins two calls through an ID printed before execution, without an audit-exit gate. It does not enforce read-only auditing, independent repair acceptance or rollback. Its wired account is supported by shipped calling instructions and executable resume/submit wiring, not by evidence of successful workflow operation.
I checked every reconciliation disposition. The sole supersession correctly joins the two declarations of SessionSummary without merging their findings. AgentTurn, usage, detailed history and the checkpoint remain valid contained parts or containers. Rendering is narrower than full context delivery; event input, event projection, hook claim and usage arithmetic are distinct. The two-turn workflow is not another identity for single-turn submission. The memory integration issues are accounted for, including lossy counts, dependency opacity, incomplete effect metadata, weaker listing checks and stale workspace-local calling documentation. There are no evidenced cross-report conflicts requiring an Unresolved conflict paragraph, and no evidenced absence records to adjudicate. All route operation statuses remain uninspected; no reconciliation language upgrades them.
Omission questions and stopping decision
I used the frozen top-level tree and tracked implementation/caller paths, then searched session/history/summary, agent construction, configuration writing and interruption consumers across SRC-1, src, docs and .agents. The consequential questions were whether another shipped driver changes persistence or recall; whether the context display enforces a hidden budget; whether callbacks or calling recipes add semantic acceptance; and whether model replacement or release notification supplies an improvement loop. Driver and API traces preserve the reported alternatives. Independent reads of src/fractal/context_meter.py and its TUI consumer show estimation and caching, not context admission or trimming. Reads of src/fractal/agent/skills.py, provider construction, connectivity, notifier, test/release workflows and complete calling recipes disclose no contrary gate in those inspected paths. A local decoding exception qualifies recovery, as retained below.
Further omission expansion stopped because these selected challenges have supported dispositions and no identified material challenge remains unaddressed. Remaining provider/dependency internals, auxiliary setup details and uninspected test bodies cannot support complete operational, security or evaluator comparisons. The reports already withhold those comparisons; additional available files alone do not undermine the retained client/state-loop account. This stopping decision is not evidence of system-wide absence.
Blockers
none
Limits
- MEM-RTE-session-reload and WF-RTE-audit-repair describe warning-and-empty-state recovery for unreadable or invalid session content. That recovery is not universal: invalid UTF-8 raises UnicodeDecodeError, which is outside the inspected loader's caught OSError/JSONDecodeError branch. Readers should withhold a guarantee that every unreadable checkpoint yields a backup and empty replacement, or that every malformed resume returns to the interactive prompt. SRC-1,
src/fractal/session.pysupplies the narrower exception boundary;src/fractal/tui/app.pycatches only FileNotFoundError in its resume handler. This local failure alternative leaves explicit-ID selection, valid-state reload, context delivery and caller-coordinated continuation supported; it changes no emitted comparison value or central conclusion.
data = json.loads(path.read_text(encoding="utf-8")) except (OSError, json.JSONDecodeError) as exc: ---
src/fractal/session.py