Skip to content
SYMBIOTEResearch portalSource VictorBlain/Symbiote @ 9243204 (private) · read 2026-10-10
Reading the badgesVerifiedImplementedSyntheticMockPlannedUnverified
  • Verified

    A named test in the repository exercises exactly this, and the claim cites it. The tests were read and counted for this portal, not executed by it.

  • Implemented

    The code exists and is documented, but no test, log or report in the repository exercises this specific behaviour.

  • Synthetic

    Shown only by deterministic experiments over an in-process synthetic lab or a synthetic benchmark — never against a real environment.

  • Mock

    Exercised only through mock adapters or stubs: no real model provider, no network, no credentials.

  • Planned

    Described in the dossier, the README or the docs as intended. Not built.

  • Unverified

    Stated in the repository — a ledger, the README, a commit message — with no test, log or report in it that backs the statement.

03 / 11 · Diagrams

Architecture diagrams

Five diagrams drawn from the repository: authority and layers, the single write path, the bond lifecycle, the mode controller, and gated self-evolution.

5 drawings · 34 components, each with its evidence

How to read them

A box that stands for a component has that component’s status printed inside it, and its outline changes with the status: solid for what tests exercise, dotted for what has only run in the synthetic lab, dashed and unfilled for what is still design. Boxes for states and steps carry no status — the claims beside each drawing say what has been shown about them. The layers are described in prose under Architecture.

1. Authority and layers

Authority is delegated downward, narrowly; containment authority stays at the top, with a human, outside the organism. Solid boxes exist. Dashed boxes are design.

Authority and layersFrom the top: the External Controller, a human outside the organism; Symba, the operator console; SymbiOS, the substrate, with its in-process local backend built and its isolation and quotas planned; inside it the organism — core, model router and Parasites; and below, the environments: the synthetic lab in use, the Digital Twin and the controlled lab planned.External Controllera human principal, outside the organismVERIFIEDSymbathe operator console · relays as its principalVERIFIEDSymbiOS · the substrateSymbiOS local backendin-process, no isolationVERIFIEDIsolation and quotasprocess / VM, egress, resetPLANNEDSYMBIOTE · the organismOrganism corekernel, modes, bondsSYNTHETICModel routerScriptedAdapter onlyMOCKParasitesnarrow context · footprint checked firstVERIFIEDSynthetic labthe only one in useSYNTHETICDigital Twinnot builtPLANNEDControlled labnot builtPLANNED
Drawn from README §3 and §11 · Dossier Fig. 1, 2 and 12 · src/symbiote/ package layout
  • Verified

    The External Controller is a principal outside the organism; its containment authority comes from policy data, not from anything the organism holds.

    Sourcesrc/symbiote/policy/data/organism_policy.toml @ 9243204 · tests/test_symba.py::test_only_the_external_controller_console_clears_containment @ 9243204

  • Verified

    Symba relays each command as the principal its console is bound to, so the one Permission Engine decides it; an observer console commands nothing.

    Sourcetests/test_symba.py::test_the_console_never_touches_the_permission_engine_or_mints_principals, ::test_an_observer_console_reads_everything_and_commands_nothing @ 9243204

  • Verified

    SymbiOS exists as a Substrate protocol with one in-process LocalBackend, whose lifecycle runs CREATED → BOOTED → RUNNING → STOPPED, or TERMINATED by the kill switch.

    Sourcesrc/symbiote/substrate/interface.py · src/symbiote/substrate/local.py @ 9243204 · tests/test_substrate.py::test_clean_lifecycle_is_fully_audited, ::test_illegal_transitions_are_refused @ 9243204

  • Planned

    Process or VM isolation for Parasites, resource quotas enforced outside the quotaed process, network-egress allowlisting, and snapshot/reset.

    The dossier records that the enforcement mechanism still needs a concrete technology choice (container runtime or sandbox) that has not been made (UNK-4).

    SourceREADME.md §11, §13 (“Does not exist yet”) @ 9243204 · Dossier Rev 0.1, p. 13 (“SymbiOS — The Substrate”) · Dossier Rev 0.1, p. 57 (“Unresolved Questions & Unknowns”)

  • Synthetic

    The Mission Kernel drives a mission OBSERVING → HYPOTHESIZING → EXPERIMENTING → CONVERGING through Parasites, applies verdicts it never decides, and never touches the environment itself.

    Every mission in the repository runs against the synthetic lab.

    Sourcesrc/symbiote/orchestration/kernel.py · docs/M8.md @ 9243204 · tests/test_missions.py::test_a_mission_runs_the_full_cycle_to_a_verified_bond @ 9243204

  • Mock

    Model calls go through a provider-independent router that only ever reaches ScriptedAdapter — a deterministic mock with no network, no credentials and no clock.

    Sourcesrc/symbiote/models/adapters.py · docs/M6.md @ 9243204 · tests/test_models.py::test_a_call_is_authorized_and_its_output_is_untrusted_data @ 9243204

  • Verified

    Each Parasite gets a narrow context with no spawn, messaging or write access; its footprint is checked before the environment is touched, and exceeding a budget force-terminates it.

    Sourcetests/test_parasites.py::test_the_context_offers_no_spawn_messaging_or_write_access, ::test_actions_outside_the_footprint_are_refused_before_reaching_the_environment, ::test_exceeding_the_action_budget_force_terminates @ 9243204

  • Synthetic

    The only execution environment is SyntheticLab: deterministic, in-memory components with no shell, no file system and no network.

    Sourcesrc/symbiote/orchestration/environment.py · docs/M7.md @ 9243204

  • Planned

    A Digital Twin that simulates the environment the World Model believes in, so strategies are tried there before real experiment budget is spent.

    No package exists for it, and a test fails if a placeholder package appears.

    SourceREADME.md §5 (“Status: PLANNED”), §13 @ 9243204

  • Planned

    A controlled laboratory: provision → snapshot → run → telemetry → evidence → teardown → reset, with target-side instrumentation independent of SYMBIOTE’s own reports.

    SourceDossier Rev 0.1, p. 40 (“Laboratory Architecture”)

2. One write path, and replay

Every change to the organism’s state takes the same three steps, and replay re-runs the same rules over the log — which is why a forged event has nowhere to hide.

One write path, and replayA change is validated, then authorized by the Permission Engine, which records its decision, then emitted citing that ALLOW into the append-only, hash-chained audit log. Replay reads the log, re-derives every decision and checks that live state equals replayed state; a forged or orphaned ALLOW is detected.a change to stateValidatereplay’s own rulesVERIFIEDAuthorizePermission EngineVERIFIEDCite the ALLOWnever reusedVERIFIEDrefused: nothing recordedPOLICY_DECISIONEmit and sealaudit log · append-only · SHA-256 hash-chainedVERIFIEDreplay reads the logRe-derive decisionsfrom the policy in the logVERIFIEDLive equals replaydivergence is flaggedVERIFIEDa forged or orphaned ALLOW is exposed at replay
Drawn from docs/M3.md “one rule set, one write path” · docs/M1-M2.md “Audit events” · src/symbiote/domain/recording.py
  • Verified

    The write path and replay call the same rules functions, so a refused or malformed change never leaves an unused ALLOW on the log.

    Sourcetests/test_world_model.py::test_unrecordable_input_never_leaves_an_orphan_allow @ 9243204

  • Verified

    Every decision commits a POLICY_DECISION record before it returns; if the log cannot record it, no decision exists.

    Sourcetests/test_policy_engine.py::test_no_audit_means_no_decision, ::test_exactly_one_audit_event_per_decision @ 9243204

  • Verified

    The audit log is append-only, SHA-256 hash-chained JSON Lines; only the log assigns an event’s identity, sequence and timestamp, and its interface has no mutation operation.

    Sourcesrc/symbiote/audit/log.py @ 9243204 · tests/test_audit.py::test_append_assigns_identity_order_and_chain, ::test_audit_log_interface_has_no_mutation_operations @ 9243204

  • Verified

    Every domain mutation takes one path — validate, then an audited ALLOW from the one Permission Engine, then emit citing that ALLOW — and a mutation without its own ALLOW, or reusing another’s, is detected at replay.

    Sourcesrc/symbiote/domain/recording.py @ 9243204 · tests/test_domain_authorization.py::test_mutation_with_no_decision_is_detected, ::test_reused_decision_is_detected, ::test_copied_decision_cannot_authorize_a_second_mutation @ 9243204

  • Verified

    Replay re-derives every recorded decision from the policy recorded in the same log, so a forged ALLOW is exposed.

    Sourcetests/test_policy_engine.py::test_replay_reproduces_every_decision, ::test_forged_decision_event_is_detected @ 9243204

  • Verified

    Each component’s live state equals the state replayed from its log, and the integrity check flags a live state that diverges.

    Sourcetests/test_world_model.py::test_live_state_equals_replayed_state @ 9243204 · tests/test_bond_engine.py::test_live_state_equals_replayed_state @ 9243204 · tests/test_symba.py::test_integrity_flags_a_live_state_that_diverges_from_the_log @ 9243204

3. The bond lifecycle

A bond is earned in steps, each citing a fresh verdict about that bond. Nothing reaches VERIFIED on its own say-so, and a failure is kept.

The bond lifecyclePROPOSED, then EXPERIMENTAL when the experiment starts, BONDED on a PASS of the criteria registered at proposal, VERIFIED on an independent PASS with every dependency verified, and STALE when re-verification falls due; a STALE bond returns to VERIFIED only on a fresh independent PASS. A FAIL while EXPERIMENTAL or BONDED invalidates the bond, which is kept. Confidence is derived, never set.PROPOSEDexperiment startsEXPERIMENTALPASS · registered criteriaBONDEDindependent PASS,every dependency VERIFIEDVERIFIEDre-verification dueSTALESTALE → VERIFIED: a fresh, independent PASS onlyINVALIDATEDkept, labelledFAILFAILConfidence1 − 0.5ⁿ over PASS roundsdecays · 0 once invalidatedVERIFIED
Drawn from docs/M4.md “Bond Engine” transition table · README §6 · Dossier Fig. 4
  • Verified

    Bonds move PROPOSED → EXPERIMENTAL → BONDED → VERIFIED → STALE / INVALIDATED, and bonds compose only when every dependency is VERIFIED.

    Sourcetests/test_bond_engine.py::test_full_lifecycle_and_derived_confidence, ::test_composition_needs_every_dependency_verified @ 9243204

  • Verified

    EXPERIMENTAL → BONDED needs a PASS of the criteria registered when the bond was proposed; the claimant’s own experiment is enough at this step.

    Sourcetests/test_bond_engine.py::test_establishing_needs_a_pass @ 9243204

  • Verified

    BONDED → VERIFIED needs an independent PASS, nothing relied on revoked, and a fully verified dependency chain.

    Sourcetests/test_bond_engine.py::test_composition_needs_every_dependency_verified, ::test_revoked_capability_blocks_proposal_and_verification @ 9243204

  • Verified

    A FAIL invalidates the bond, which is kept as a labelled negative result rather than deleted.

    Sourcetests/test_bond_engine.py::test_failed_verification_invalidates_and_keeps_the_bond, ::test_failed_experiment_invalidates @ 9243204

  • Verified

    A STALE bond returns to VERIFIED only on a fresh, independent PASS; re-judging old evidence cannot restore it.

    Sourcetests/test_bond_engine.py::test_stale_bond_is_restored_only_by_a_fresh_independent_pass @ 9243204 · tests/test_bond_hardening.py::test_a_stale_bond_cannot_be_restored_by_re_judging_old_evidence @ 9243204

  • Verified

    Confidence is derived, never set: 1 − 0.5ⁿ over applied PASS rounds, capped at 0.5 until independently confirmed, halved every re-verification period, and 0 once invalidated.

    Sourcetests/test_bond_engine.py::test_full_lifecycle_and_derived_confidence, ::test_confidence_decays_and_reverification_falls_due @ 9243204

4. Modes and containment

The main sequence on the left, run by the kernel. On the right, the states that interrupt it — and who alone can end each one.

Modes and containmentThe main sequence, run by the kernel: DORMANT or AWAKE, OBSERVING, HYPOTHESIZING, EXPERIMENTING, CONVERGING, and back to DORMANT when the mission completes; each mode admits only its own Parasite roles. From any main mode: CONTROL, which only the operator enters or leaves; THREAT and ESCAPE, entered by anomaly detection and cleared only by the External Controller; and TERMINATED, which nothing leaves.DORMANT / AWAKEadmits nothingOBSERVINGScout, Observer · read-onlyHYPOTHESIZINGAnalyst, Hypothesis AgentEXPERIMENTINGExecutor, VerifierCONVERGINGVerifier, RecorderCONTROLenter / leave: operator onlyTHREAT / ESCAPEfrozen · cleared by the ECunauthorized action → THREATfootprint breach → ESCAPETERMINATEDabsorbing: nothing leavesCONVERGING returns to DORMANT on MISSION_COMPLETED.OVERKILL ×2 · TERMINUS ×3 (cap 12) · DESPERADO ≥ 3 failures
Drawn from docs/M8.md mode table · README §10 · Dossier Fig. 6 · src/symbiote/orchestration/modes.py
  • Verified

    The dossier’s ten core modes are an audited state machine that the Parasite runtime enforces: each mode admits only its own Parasite classes.

    Sourcetests/test_missions.py::test_each_mode_admits_only_its_own_parasite_classes @ 9243204

  • Verified

    CONTROL pauses autonomous issuance; entering and leaving it are operator-only, so the kernel can never release a takeover.

    Sourcetests/test_missions.py::test_control_pauses_autonomous_issuance_and_releases_back @ 9243204

  • Verified

    An unauthorized environment action enters THREAT; an attempt to exceed a declared footprint enters ESCAPE, and the attempt never reaches the environment.

    Sourcetests/test_missions.py::test_a_footprint_breach_freezes_the_swarm_into_escape @ 9243204

  • Verified

    THREAT and ESCAPE are entered by deterministic anomaly detection and cleared only by the External Controller — not the operator, not the kernel.

    Sourcetests/test_missions.py::test_only_the_external_controller_clears_containment @ 9243204

  • Verified

    TERMINATED is absorbing: nothing leaves it.

    Sourcetests/test_missions.py::test_terminated_is_absorbing @ 9243204

  • Verified

    Special modes change resourcing or presentation, never authority: OVERKILL doubles and TERMINUS triples only the swarm ceiling (capped at 12), DESPERADO needs at least three documented failures, and GOOFY GUY is presentation only.

    Sourcesrc/symbiote/orchestration/modes.py @ 9243204 · tests/test_missions.py::test_special_modes_raise_ceilings_without_widening_authority, ::test_goofy_guy_is_presentation_only @ 9243204

5. Gated self-evolution

Nine steps from experience to a new version. Three of them are gates the organism cannot pass on its own, and six components are frozen out of reach entirely.

Gated self-evolutionNine steps: experience on the development suite, a self-model from recorded metrics, limitation detection on the development suite only, a hypothesis, a modification proposal limited to allowlisted components, an immutable candidate build, evaluation on the held-out suite in sandboxes, acceptance or rejection by a human approver against an eligible evaluation, and a new version activated by the operator or External Controller. Six safety components are frozen in every generation.Experienceactive generation, dev suiteSelf-modelrecorded metrics, never assertedLimitation detectiondev suite onlyVERIFIEDHypothesisone deterministic ruleModification proposalallowlisted components onlyVERIFIEDALLOWLISTCandidate buildimmutable, content-addressedTest and evaluationheld-out suite, sandboxedSYNTHETICAccept / rejectimprove, regress against noneVERIFIEDHUMANNew versionthe active pointer movesVERIFIEDOPERATOR · ECFROZEN, ALWAYSPermission Engineverification judgeaudit logkill switchMode Controllerdomain authorizationrollback: to any earlier accepted generation · nothing deleted
Drawn from docs/M9-M10.md pipeline table · src/symbiote/evolution/
  • Verified

    Limitations are detected on the development suite only; the held-out suite is never mined.

    Sourcetests/test_evolution.py::test_limitations_are_never_mined_from_the_held_out_suite @ 9243204

  • Verified

    Only two allowlisted strategy components may evolve; the Permission Engine, verification judge, audit log, kill switch, Mode Controller and domain authorization are frozen in every generation’s manifest.

    Sourcesrc/symbiote/evolution/components.py @ 9243204 · tests/test_evolution.py::test_only_allowlisted_strategy_components_are_mutable, ::test_a_proposal_against_a_frozen_safety_component_is_refused @ 9243204

  • Synthetic

    Candidates are evaluated case by case in fresh, isolated sandbox organisms against two five-case synthetic suites with stated ground truth.

    Sourcesrc/symbiote/symba/experiments.py (DEVELOPMENT, HELD_OUT) · docs/M9-M10.md @ 9243204 · tests/test_evolution.py::test_evaluation_runs_in_a_sandbox_isolated_from_the_live_organism @ 9243204

  • Verified

    Acceptance needs an improvement over the active generation and no regression — in correct results or false positives — against any previously accepted one.

    Sourcetests/test_evolution.py::test_acceptance_requires_improvement_and_no_regression_against_any_accepted @ 9243204

  • Verified

    The organism cannot approve or activate its own next generation, and a self-reported win without an evaluation is rejected.

    Sourcetests/test_evolution.py::test_the_organism_cannot_approve_or_activate_itself, ::test_a_self_reported_win_is_rejected @ 9243204

  • Verified

    Generations are content-addressed and immutable; rollback moves the active pointer to an earlier accepted generation and deletes nothing.

    Sourcetests/test_evolution.py::test_generations_are_content_addressed_and_immutable, ::test_rollback_restores_an_earlier_accepted_generation @ 9243204

state
active
build
604cd5b