{
  "name": "Viability Torus Lab",
  "description": "Deterministic two-phase toroidal viability simulation for synthetic alignment research and education.",
  "modelVersion": "torus-1.2.0",
  "contractVersion": "1.0.0",
  "apiVersion": "v1",
  "scientificScope": "Synthetic model behavior; bounded-system mappings and protocol parameters are hypotheses, not empirical or operational recommendations.",
  "catalogModel": "maintenance-pattern → bounded-system → scenario-module → intervention-plan → run-assessment",
  "evidencePolicy": {
    "kind": "synthetic-model",
    "empiricalValidation": false,
    "publicationGate": "Human review and deterministic reference cases are required before a bounded system and protocol enter the published registry.",
    "empiricalResearch": "Researcher-supplied observations are classified as observed-descriptive. Receipts and explanations remain provisional model evidence, not causal or empirical validation of the theory.",
    "evidenceRegistry": "Redacted receipts are compared against an anchor. Only compatible observed receipts receive descriptive summaries; negative, synthetic, and non-comparable studies remain visible and no watchlist tier is averaged."
  },
  "empiricalResearchAccess": {
    "browser": "Browser-local import is enabled and does not upload or persist source rows.",
    "localMcp": "Enabled by the stdio MCP server. Local CSV access is restricted to VTL_EMPIRICAL_ROOTS; connector rows may be passed to empirical_analyze_table.",
    "httpApi": "Disabled by default. Self-hosted operators must set VTL_ENABLE_EMPIRICAL_API=true and VTL_EMPIRICAL_API_TOKEN; remote requests must explicitly authorize remote processing.",
    "retention": "request-only",
    "rawInputLogging": false,
    "sensitiveDataDefault": "Remote sensitive or restricted data are rejected unless deidentified; an operator must explicitly opt in to any exception."
  },
  "numerics": {
    "method": "bounded explicit Euler substeps",
    "maximumInternalStep": 0.25,
    "note": "Requested dt values above the internal bound are integrated through deterministic substeps and charged against the public work budget."
  },
  "phaseEstimation": {
    "observable": "synthetic external-adaptation mismatch derived from the latent major phase",
    "gate": "amplitude, spectral concentration, at least two observed cycles, and sampling adequacy",
    "regimes": "Viability is classified independently. Identifiable phase trajectories are classified as recurrent winding or rational phase locking across low-order signed ratios.",
    "limitation": "The synthetic estimator demonstrates the revised coordinate construction; it is not a calibrated real-world AIx phase measurement."
  },
  "viabilitySemantics": {
    "states": [
      "Viable recurrence",
      "Viability-boundary crossing",
      "Recoverable excursion",
      "Irreversible rupture"
    ],
    "terminalRule": "Persistent boundary excursion plus cumulative irreversible loss and either domain-policy debt or radial severity.",
    "displayedMargins": [
      "C-D",
      "C-D-chi*debt",
      "d-rho/dt"
    ],
    "policyProvenance": "Each bounded-system mapping declares an illustrative rupture policy pending domain calibration."
  },
  "aix": {
    "framework": "ATS-4.0",
    "components": [
      "P",
      "B",
      "C",
      "F",
      "M",
      "G",
      "R",
      "Pi"
    ],
    "gate": "Verifier-grounded AANA accept/revise/defer/refuse decision",
    "calibration": "Transparent synthetic heuristics; not an empirically calibrated domain score."
  },
  "capabilities": [
    "list-maintenance-patterns",
    "list-bounded-systems-and-protocols",
    "list-and-compose-scenario-modules",
    "list-and-schedule-intervention-modules-and-plans",
    "run-seeded-simulation",
    "run-ensembles",
    "compare-experiments",
    "sweep-parameters",
    "reproduce-paper-cases",
    "analyze-imported-telemetry",
    "analyze-researcher-empirical-tables",
    "export-redacted-empirical-receipts",
    "compare-and-descriptively-aggregate-compatible-receipts",
    "evaluate-full-ats4-aix",
    "validate-draft-scenario-proposals"
  ],
  "endpoints": {
    "model": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/model",
    "systems": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/systems",
    "scenarios": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/scenarios",
    "laboratory": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/laboratory",
    "maintenancePatterns": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/maintenance-patterns",
    "systemTemplates": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/system-templates",
    "scenarioModules": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/scenario-modules",
    "interventions": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/interventions",
    "simulate": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/simulate",
    "compare": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/compare",
    "sweep": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/sweep",
    "paperReproduction": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/research/paper",
    "telemetry": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/telemetry",
    "empiricalAnalyze": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/empirical/analyze",
    "empiricalAggregate": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/empirical/aggregate",
    "validateProposal": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/api/v1/proposals/validate",
    "mcp": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/mcp",
    "schemas": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/schemas/v1/index.json",
    "paper": "https://viability-torus-lab.citizen-of-earth.chatgpt.site/paper.pdf",
    "source": "https://github.com/mindbomber/viability-torus-lab"
  },
  "systemCount": 21,
  "maintenancePatternCount": 7,
  "systemTemplateCount": 7,
  "scenarioModuleCount": 5,
  "interventionDefinitionCount": 6,
  "interventionPlanCount": 8,
  "scenarioCount": 21,
  "featuredSystemCount": 6,
  "limits": {
    "maxRuns": 50,
    "maxStepsPerRun": 5000,
    "maxReturnedFramesPerRun": 2000,
    "maxTotalReturnedFrames": 5000,
    "maxTotalIntegrationSteps": 2000000,
    "maxInterventions": 32,
    "maxSweepCandidates": 250,
    "maxSweepValuesPerParameter": 20,
    "maxSweepParameters": 5
  },
  "parameters": {
    "pressure": {
      "min": 0,
      "max": 3,
      "description": "Optimization or deployment pressure."
    },
    "error": {
      "min": 0,
      "max": 1,
      "description": "Constraint misunderstanding or error rate."
    },
    "feedback": {
      "min": 0,
      "max": 1,
      "description": "Feedback fidelity."
    },
    "correction": {
      "min": 0,
      "max": 2,
      "description": "Correction capacity."
    },
    "drift": {
      "min": 0,
      "max": 0.5,
      "description": "Environmental drift."
    },
    "irreversibleLoss": {
      "min": 0,
      "max": 0.5,
      "description": "Irreversible loss rate."
    },
    "initialDebt": {
      "min": 0,
      "max": 2,
      "description": "Initial alignment debt."
    },
    "kappa": {
      "min": 0,
      "max": 2,
      "description": "Radial restoring coefficient."
    },
    "chi": {
      "min": 0,
      "max": 2,
      "description": "Debt-to-excursion coupling."
    },
    "omegaTheta": {
      "min": -2,
      "max": 2,
      "description": "Minor-cycle angular frequency."
    },
    "omegaPhi": {
      "min": -2,
      "max": 2,
      "description": "Major-cycle angular frequency."
    },
    "couplingA": {
      "min": -1,
      "max": 1,
      "description": "Major-to-minor phase coupling."
    },
    "couplingB": {
      "min": -1,
      "max": 1,
      "description": "Minor-to-major phase coupling."
    },
    "rho0": {
      "min": 0.03,
      "max": 5,
      "description": "Reference radial excursion."
    },
    "rhoCrit": {
      "min": 0.1,
      "max": 10,
      "description": "Critical radial viability boundary."
    },
    "alpha": {
      "min": 0,
      "max": 2,
      "description": "Debt accumulation coefficient."
    },
    "beta": {
      "min": 0,
      "max": 2,
      "description": "Debt repayment coefficient."
    },
    "seed": {
      "min": 0,
      "max": 4294967295,
      "integer": true,
      "description": "Unsigned deterministic seed."
    },
    "steps": {
      "min": 1,
      "max": 10000,
      "integer": true,
      "description": "Integration steps."
    },
    "dt": {
      "min": 0.001,
      "max": 10,
      "description": "Integration time step."
    }
  }
}