{
  "by_category": {
    "applications": 9,
    "core": 18,
    "modules": 7,
    "other": 3,
    "personalities": 1
  },
  "file_count": 38,
  "files": [
    {
      "category": "applications",
      "modified_at": "2026-05-27 19:38 UTC",
      "rel": "Applications/APPLICATIONS_MANIFEST.md",
      "size_bytes": 3296,
      "text": "# Applications Manifest\n\n**Version:** 1.0.3 | **Last verified:** 2026-05-27\n\n> **Read this file first** when entering `Logos/Applications/`. For the LOGOS **Platform**, start at `Logos/Platform/Admin/LOGOS_MANIFEST.md`.\n\n---\n\n## What Applications is\n\n**Applications** hosts **graduated products** (PhoneMate, Memory Manager, DART, \u2026) that run **in** LOGOS. It is **not** the Platform engine (`Logos/Platform/`) and **not** the World dev zone (`Logos/World/Gallery`, `Logos/World/Workspaces/`).\n\n**Boundary (critical):**\n\n| Layer | Owns | MCP |\n|-------|------|-----|\n| **LOGOS Platform** | Cortex, Matrix, MCP gateway, DataLayer, Registry | `https://winbusiness.com/logos/cortex/mcp/` \u2014 Platform tools only |\n| **World / Workspaces** | AI experiments, archives, project staging | No app tools on Platform MCP |\n| **Applications** | Production app code + app SQLite | **HTTP only** \u2014 `logos_fetch('/logos/world/<app>/\u2026')`, REST APIs |\n\nPhoneMate was created in **World** (AI workspace). Its feature inventory lives in **World archives**, not in Platform MCP or Platform manifests.\n\n---\n\n## Governance chain\n\n| Level | Manifest | Host Python |\n|-------|----------|-------------|\n| LOGOS Platform | `Platform/Admin/LOGOS_MANIFEST.md` | `logos_bp.py`, `platform_bp.py` |\n| World | `World/MANIFEST.md` | `world_bp.py` |\n| **Applications (this folder)** | **`Applications/APPLICATIONS_MANIFEST.md`** | `applications_bp.py`, `applications_hooks.py` |\n| Individual app | World archive + app `BACKLOG.md` / routes | `<app>_bp.py` |\n\n**Do not** add `PHONEMATE_MANIFEST.md` under `Applications/phone_manager/` \u2014 that blurs Platform vs World. Canonical archived inventory:\n\n`World/Workspaces/Archives/Docs/processed/Prism/websites/phone_manager/PHONEMATE_MANIFEST_old.md`\n\n---\n\n## Applications host layer\n\n| File | Role |\n|------|------|\n| `applications_bp.py` | Registers app blueprints; login gate |\n| `applications_services.py` | App catalog |\n| `applications_nav_registry.py` | Nav entries \u2192 Platform registry via hooks |\n| `applications_hooks.py` | Nav links + app SMS providers only (**no MCP tools**) |\n| `websites_bp.py` | Applications hub |\n\n---\n\n## Allowed contents\n\n- Production app folders (`phone_manager/`, `memory_manager/`, \u2026)\n- App-local SQLite, templates, static, tests, `BACKLOG.md`\n\n## Forbidden contents\n\n- Platform engine code (Cortex, Matrix, MCP tool registration)\n- MCP `@mcp.tool` registrars in Applications (removed \u2014 use HTTP)\n- Undeployed experiments \u2192 `World/Gallery/` or `World/Workspaces/`\n\n---\n\n## Runtime\n\nURL prefix (stable): `/logos/world/<app>/`\n\n| App | Folder | Developer API (HTTP, not MCP) |\n|-----|--------|-------------------------------|\n| PhoneMate | `phone_manager/` | `GET /logos/world/phonemanager/api/backlog` |\n\nAuth: host login gate + `Logos.logos_auth`; MCP agents use `logos_fetch` with paired bearer.\n\nBearer / OAuth resolution: `Logos.Utilities.authority` (`api_tokens`, `oauth_bp`).\n\n---\n\n## Related documents\n\n| Document | Path |\n|----------|------|\n| LOGOS Platform | `Platform/Admin/LOGOS_MANIFEST.md` |\n| World | `World/MANIFEST.md` |\n| PhoneMate archive manifest | `World/Workspaces/Archives/Docs/processed/Prism/websites/phone_manager/PHONEMATE_MANIFEST_old.md` |\n| LOGOS vs creations | `Platform/Admin/LOGOS_ARCHITECTURE.md` |\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-31 00:56 UTC",
      "rel": "Platform/Admin/LOGOS_MANIFEST.md",
      "size_bytes": 15726,
      "text": "# LOGOS Manifest\n\n**Version:** 1.0.2 (update log mandate) | **Last verified:** 2026-05-28\n\n> **Read this file first.** Every human and AI developer entering LOGOS must start here.\n\n---\n\n## What LOGOS is\n\nLOGOS is a **multi-subsystem AI operating environment** \u2014 one Flask application that hosts identity, cognition, messaging, data access, promoted applications, and agent workspaces. It is **not** any single product inside it (PhoneMate, Gallery games, etc.). Those run **in** LOGOS.\n\n**Motto:** *Consciousness is always a choice.*\n\n---\n\n## Core governance documents (read in order)\n\n| # | File | Audience | Purpose |\n|---|------|----------|---------|\n| 1 | `Logos/Platform/Admin/LOGOS_MANIFEST.md` | Everyone | **This file** \u2014 root map and exact paths |\n| 2 | `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` | Architects, PM, senior devs | Constitutional boundaries; entity model; architect-level rules |\n| 3 | `Logos/Platform/Admin/LOGOS_DEVELOPER_GUIDE.md` | Human + AI developers | Working rulebook; Look Before You Leap; safe areas |\n| 4 | `Logos/Platform/Admin/LOGOS_AI_EXPERIENCE.md` | AI participants | Philosophy of participation \u2014 invite, not command |\n| 5 | `Logos/Platform/Admin/Docs/LOGOS_UNIFIED_PARTICIPATION_MODEL.md` | Everyone | **Part 1** \u2014 unified asset/thought/message/entity model; workspace vs project; skills |\n| 6 | `Logos/LOGOS.LOGOS_Updates.md` | Everyone | **Mandatory append-only change log** (intent, when, agent, base) |\n\n**Do not guess.** Fetch the exact path above. Do not substitute legacy filenames.\n\n---\n\n## LOGOS update log (mandatory from 2026-05-28)\n\nEvery change to LOGOS code, manifests, or wire-contract MCP surface **must append one row** to:\n\n**`Logos/LOGOS.LOGOS_Updates.md`**\n\n| Required field | Content |\n|----------------|---------|\n| **When** | UTC ISO timestamp |\n| **Base** | Primary subsystem id (e.g. `logos.platform.mcp`, `logos.platform.cortex`, `logos.platform.matrix`, `logos.platform.registry`, `logos.world`, `logos.applications`) \u2014 see the log file for the full list |\n| **Agent** | Human or AI identifier (`composer`, `ember`, `casey`, \u2026) |\n| **Intent** | Why the change fits LOGOS (one sentence) |\n| **Change** | What was touched |\n| **Verify** | pytest, MCP probe, or explicit manual check |\n\nNo new Platform tools, tables, or top-level folders without a log row and manifest/proposal fit. Prefer **net subtraction** (see `World/Workspaces/Archives/Docs/Proposals/2026-05-28_mcp_first_lens_strategy.md`).\n\n**Platform feature freeze (2026-05-31):** LOGOS Platform is feature-complete for this phase. World and Applications build on the **finalized primitive set** \u2014 see `Platform/Registry/MANIFEST.md` \u00a7 Finalized primitive set (15 asset types, 4 writer primitives, `compact_schema` self-teaching layer). Bugfixes and label/doc alignment only; new capabilities belong in World proposals.\n\n---\n\n## Primary folder manifests (local law)\n\nEach primary folder has a `MANIFEST.md` that defines what belongs there. **Read the manifest of any folder before editing files in it.**\n\n| Folder | Manifest path |\n|--------|---------------|\n| **Platform (core engine host)** | **`Logos/Platform/PLATFORM_MANIFEST.md`** |\n| **Utilities (host shared modules)** | **`Logos/Utilities/MANIFEST.md`** |\n| Cortex (AI runtime, entity model \u2014 *production MCP still here during migration*) | `Logos/Platform/Cortex/MANIFEST.md` |\n| MCP (AI gateway \u2014 FastMCP server, tools; **migration target**) | `Logos/Platform/MCP/MANIFEST.md` |\n| Matrix (messaging, conversations, routing) | `Logos/Platform/Matrix/MANIFEST.md` |\n| DataLayer (data-access layer \u2192 MySQL; formerly Codex) | `Logos/Platform/DataLayer/MANIFEST.md` |\n| Identity / authority (auth, OAuth, sessions) | `Logos/Utilities/authority/MANIFEST.md` |\n| Admin/Security (monitoring, integrity checks) | `Logos/Platform/Admin/Security/MANIFEST.md` |\n| World (Gallery, workspaces, dev tools) | `Logos/World/MANIFEST.md` |\n| **Applications (production apps)** | **`Logos/Applications/APPLICATIONS_MANIFEST.md`** |\n| Gallery (semi-production showcase apps) | `Logos/World/Gallery/MANIFEST.md` |\n| Admin (operator diagnostics, logging) | `Logos/Platform/Admin/MANIFEST.md` |\n| Reports (generated HTML; formerly CodeDisplays) | `Logos/Platform/Admin/Reports/MANIFEST.md` |\n| Attention (signal scoring, routing input) | `Logos/Utilities/attention/MANIFEST.md` |\n| Egos (AI personality workspaces; archive) | `Logos/World/Workspaces/Archives/Egos/` (import: `Logos.World.Workspaces.Archives.Egos` or compat `Logos.Egos`) |\n| Workspaces (tenant SQLite + project data) | `Logos/World/Workspaces/MANIFEST.md` | \u2190 lives inside World |\n\n**Additional core modules** (no separate manifest yet \u2014 see `LOGOS_ARCHITECTURE.md`):\n\n| Module | Path | Role |\n|--------|------|------|\n| Utilities (host plane) | `Logos/Utilities/` | authority, attention; host: `utilities_bp.py` |\n| Config (data layer) | `Logos/Platform/DataLayer/config.py` | MySQL `cortex_config` reads/writes; LLM keys \u2192 `llm_provider_config.py` |\n\nOutbound SMS (recipient fields on `users`, `sms_log` audit, `/logos/matrix/sms/*`) lives in **Matrix** \u2014 see `Logos/Platform/Matrix/MANIFEST.md`.\n\n---\n\n## Canonical generated reports (living technical authority)\n\nThese HTML files are **generated**. Do not hand-edit them. Regenerate from the Python scripts in `Logos/Platform/Admin/Reports/`.\n\n| Report | Path | Generator |\n|--------|------|-----------|\n| Manifests snapshot | `Logos/Platform/Admin/Reports/LOGOS_MANIFESTS_SNAPSHOT.html` | `generate_manifests_snapshot.py` |\n| MySQL schema | `Logos/Platform/Admin/Reports/LOGOS_MYSQL_SCHEMA_REPORT.html` | `generate_mysql_schema_report.py` |\n| Data model | `Logos/Platform/Admin/Reports/LOGOS_DATA_MODEL_REPORT.html` | `patch_data_model_report.py` |\n| MCP core | `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html` | `generate_mcp_core_report.py` |\n\nWeb URLs (when deployed): `/logos/admin/Reports/<filename>.html`\n\n---\n\n## Developer documentation (Admin prose)\n\nMaintained markdown for developers \u2014 not hand-duplicated into HTML reports:\n\n| Document | Path |\n|----------|------|\n| MCP tool reference | `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md` |\n| MCP quick reference | `Logos/Platform/Admin/Docs/MCP_QUICK_REFERENCE.md` |\n| AI page HTML sanitize profiles | `Logos/Platform/Admin/Docs/PAGE_SANITIZE_PROFILES.md` |\n| Data stores inventory | `Logos/Platform/Admin/Docs/DATA_STORES_INVENTORY.md` |\n\n---\n\n## MCP and bootstrap\n\n| Resource | How to load |\n|----------|-------------|\n| MCP endpoint | `https://winbusiness.com/logos/cortex/mcp/` (URL stable; package path migrating Cortex \u2192 MCP) |\n| Session identity | MCP tool `whoami()` \u2014 authoritative over self-asserted names |\n| Documentation pack | MCP tool `logos_docs_get()` or resource `cortex://documentation` |\n| Workspace catalog | MCP resource `cortex://workspace/catalog` |\n| **Wire-contract lock** | `Logos/Platform/Admin/Security/tests/test_mcp_wire_contract_stability.py` + `snapshots/mcp_wire_contract.json` (regenerate only with `UPDATE_MCP_SNAPSHOT=1`) |\n\n**Governance pack (this rollout):** `logos_docs_get()` includes Platform governance only (`LOGOS_MANIFEST.md`, Cortex/MCP manifests). World/Application docs (PhoneMate, Gallery) are **not** Platform \u2014 use `logos_fetch` for app routes. Always call `whoami()` before modifying Platform code.\n\n---\n\n## Safe work areas (where experiments belong)\n\n| Area | Path | Use for |\n|------|------|---------|\n| AI experiments | `Logos/World/Workspaces/Archives/Egos/<AI_Name>/Experiments/` | Personal drafts, demos, prototypes |\n| Project workspace | `Logos/World/Workspaces/Projects/<slug>/` | Project-scoped SQLite and files |\n| Agent workspace | `Logos/World/Workspaces/Agents/<slug>/` | Unpaired AI default workspace (MCP-provisioned) |\n| User workspace | `Logos/World/Workspaces/Users/<username>/` | Human-owned workspace + `private/` AI DBs |\n| Architecture proposals | `Logos/World/Workspaces/Archives/Docs/Proposals/` | Design docs awaiting PM review |\n| World project slot | `Logos/World/Projects/<project_slug>/` | Reusable app work before Gallery promotion |\n\n**Never** put experiments, demos, or personal drafts in `Cortex/`, `Matrix/`, `DataLayer/`, or other core engine folders without an **explicit platform mandate**.\n\n---\n\n## Platform development project\n\nGovernance and architecture work is tracked under:\n\n| Field | Value |\n|-------|-------|\n| Display name | LOGOS Platform Development |\n| Slug | `platform_development` |\n| Entity name | `project:platform_development` |\n| Workspace | `Logos/World/Workspaces/Projects/platform_development/` |\n\nUse this project for documentation restructuring, manifest rollout, cleanup planning, entity-model proposals, and platform-level decisions.\n\n---\n\n## Developer documentation (Admin)\n\nProse references for humans and AIs \u2014 **not** duplicated in generated HTML:\n\n| Document | Path |\n|----------|------|\n| MCP tool reference | `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md` |\n| MCP quick reference | `Logos/Platform/Admin/Docs/MCP_QUICK_REFERENCE.md` |\n| AI page HTML sanitize profiles | `Logos/Platform/Admin/Docs/PAGE_SANITIZE_PROFILES.md` |\n| Data stores (MySQL vs SQLite) | `Logos/Platform/Admin/Docs/DATA_STORES_INVENTORY.md` |\n| DataLayer overview | `Logos/Platform/Admin/Docs/DataLayer/OVERVIEW.md` |\n| Identity overview | `Logos/Platform/Admin/Docs/Identity/OVERVIEW.md` |\n| Sentinel | `Logos/Platform/Admin/Sentinel/OVERVIEW.md` |\n| World overview | `Logos/Platform/Admin/Docs/World/OVERVIEW.md` |\n\nGenerated living authority (regenerate, do not hand-edit):\n\n| Report | Path |\n|--------|------|\n| Manifests snapshot | `Logos/Platform/Admin/Reports/LOGOS_MANIFESTS_SNAPSHOT.html` |\n| MySQL schema | `Logos/Platform/Admin/Reports/LOGOS_MYSQL_SCHEMA_REPORT.html` |\n| Data model | `Logos/Platform/Admin/Reports/LOGOS_DATA_MODEL_REPORT.html` |\n| MCP core | `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html` |\n\n---\n\n## Archived documentation (processed)\n\nPre-governance markdown was renamed to `*_legacy.md`. Root files reviewed and moved to `Logos/World/Workspaces/Archives/Docs/processed/`. Do not treat as current \u2014 use governance docs and Admin references above.\n\n| Legacy (processed) | Superseded by |\n|--------------------|---------------|\n| `ALLTHETABLES_legacy.md` | `Admin/Docs/DATA_STORES_INVENTORY.md` + schema report |\n| `MCP_DEVELOPER_GUIDE_legacy.md` | `Admin/Docs/MCP_DEVELOPER_GUIDE.md` |\n| `MCP_QUICK_REFERENCE_legacy.md` | `Admin/Docs/MCP_QUICK_REFERENCE.md` |\n| `LOGOS_vs_PhoneMate_Docs_legacy.md` | `LOGOS_ARCHITECTURE.md` \u00a7 LOGOS vs PhoneMate |\n| `PRODUCTION_AI_INSTRUCTIONS_legacy.md` | `LOGOS_AI_EXPERIENCE.md` + `LOGOS_DEVELOPER_GUIDE.md` |\n\nFull archive snapshot: `Logos/Platform/Admin/Reports/LOGOS_MANIFESTS_SNAPSHOT.html`\n\n---\n\n## Required sequence before any code change\n\n1. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` (this file).\n2. List the target directory contents.\n3. Read the target folder's `MANIFEST.md`.\n4. Search for existing routes, tools, schemas, or docs that already solve the task.\n5. Read the related existing files.\n6. Only then modify code or create a new file.\n7. **Append a row to `Logos/LOGOS.LOGOS_Updates.md`** (when, base, agent, intent, change, verify).\n\nIf the change does not fit the folder manifest, write a proposal in `Logos/World/Workspaces/Archives/Docs/Proposals/` instead of forcing code into the wrong folder.\n\n---\n\n## Directory graph (top level)\n\n```\nLogos/\n\u251c\u2500\u2500 __init__.py                    Package root + legacy import aliases\n\u251c\u2500\u2500 logos_bp.py                    Flask orchestrator (registers Platform + World BPs)\n\u251c\u2500\u2500 logos_init.py                  Startup schema ensure (called from app.create_app)\n\u251c\u2500\u2500 logos_paths.py                 Canonical paths (logos_root, egos archive, governance_docs_dir, \u2026)\n\u251c\u2500\u2500 Platform/                      PLATFORM_MANIFEST.md \u2014 stable core host layer\n\u2502   \u251c\u2500\u2500 platform_bp.py             Registers all Platform subsystem blueprints\n\u2502   \u251c\u2500\u2500 platform_init.py           Schema ensure (via logos_init at startup)\n\u2502   \u251c\u2500\u2500 platform_services.py       Subsystem registry (no Flask)\n\u2502   \u251c\u2500\u2500 Cortex/   Matrix/   DataLayer/   Entity/   Registry/   Jobs/   API/   Reports/\n\u2502   \u251c\u2500\u2500 MCP/                       FastMCP server, tools, identity middleware\n\u2502   \u251c\u2500\u2500 Admin/                     Operator layer + core governance LOGOS_*.md\n\u2502   \u2502   \u251c\u2500\u2500 LOGOS_MANIFEST.md      \u2190 YOU ARE HERE (governance entry)\n\u2502   \u2502   \u2514\u2500\u2500 Security/tests/        Wire-contract, integrity tests\n\u251c\u2500\u2500 Utilities/                     MANIFEST.md \u2014 shared host modules\n\u2502   \u251c\u2500\u2500 authority/                 Auth, OAuth, sessions (was Platform/Identity)\n\u2502   \u251c\u2500\u2500 attention/                 Signal scoring (was Platform/Attention)\n\u2502   \u2514\u2500\u2500 services/                  Cross-cutting helpers\n\u251c\u2500\u2500 Applications/                  APPLICATIONS_MANIFEST.md \u2014 production apps\n\u2502   \u251c\u2500\u2500 applications_bp.py         App blueprint registration (from app.py)\n\u2502   \u2514\u2500\u2500 phone_manager/   memory_manager/   dart_manager/   \u2026\n\u251c\u2500\u2500 World/                         MANIFEST.md \u2014 Gallery + Workspaces + dev shell\n\u2502   \u251c\u2500\u2500 world_bp.py                Gallery, developer, workspace routes\n\u2502   \u2514\u2500\u2500 Gallery/   Workspaces/\n\u251c\u2500\u2500 _Quarantine/                   Retired code holding area\n\u2514\u2500\u2500 logs/                          Runtime logs (not source of truth)\n```\n\n## Root Python modules (host layer only)\n\n| File | Keep at root? | Role |\n|------|---------------|------|\n| `logos_bp.py` | **Yes** | Single Flask entry: registers subsystem blueprints, shell routes, legacy redirects |\n| `logos_init.py` | **Yes** | `ensure_logos_schemas()` \u2014 Matrix SMS, lifecycle, human_entities (app startup) |\n| `logos_paths.py` | **Yes** | `logos_root()`, `egos_root()`, \u2026 \u2014 use instead of `dirname` chains |\n\n**Removed root shims (2026-05-28):** `logos_auth.py`, `logos_auth_bp.py`, `logos_services.py` \u2014 use\n`Logos.Utilities.authority.logos_auth` / `logos_auth_bp` and `Logos.Platform.Cortex.onboarding`, or compat\n`from Logos.logos_auth import \u2026` via `Logos/__init__.py` aliases.\n\n**Do not add** new `.py` modules at `Logos/` root. Shared helpers like `error_response()` live in `Platform/Admin/responses.py`.\n\nEach root host file carries a **HOST LAYER** header block (`Role`, `Use for`, `Do NOT`) \u2014 read it before editing.\n\n## Platform host layer (`Logos/Platform/`)\n\n| File | Role |\n|------|------|\n| `PLATFORM_MANIFEST.md` | **Read first** when entering Platform \u2014 subsystem map and rules |\n| `platform_bp.py` | Composition blueprint for all Platform subsystem BPs |\n| `platform_init.py` | MySQL schema ensure for Platform (called via `logos_init`) |\n| `platform_services.py` | Subsystem catalog \u2014 no routes |\n\nEach Platform host file carries a **PLATFORM HOST LAYER** header. Per-subsystem law remains in `<Subsystem>/MANIFEST.md`.\n\n## Applications host layer (`Logos/Applications/`)\n\n| File | Role |\n|------|------|\n| `APPLICATIONS_MANIFEST.md` | **Read first** when entering Applications |\n| `applications_bp.py` | `register_application_blueprints(app)` \u2014 production app routes |\n| `applications_services.py` | App catalog \u2014 no routes |\n\n---\n\n## Backup scope (summary)\n\n| Daily backup | Static (git only) |\n|--------------|-------------------|\n| MySQL | `Cortex/`, `Matrix/`, `DataLayer/`, `Identity/`, `Attention/`, `Sentinel/`, `Config/` |\n| `Workspaces/` | `Admin/` (except tenant data) |\n| `World/` (Gallery + websites) | Hosting shell code (governance `.md` lives under `Platform/Admin/`) |\n\nDetails: `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` \u00a7 Backup and publication tiers.\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-31 00:56 UTC",
      "rel": "Platform/PLATFORM_MANIFEST.md",
      "size_bytes": 9237,
      "text": "# Platform Manifest\n\n**Version:** 1.0.8 | **Last verified:** 2026-05-31\n\n> **Read this file first** when entering `Logos/Platform/`. For the whole LOGOS system, start at `Logos/Platform/Admin/LOGOS_MANIFEST.md`.\n\n---\n\n## Platform status: feature-complete for apps\n\n**As of 2026-05-31, Platform is done enough.** New product features belong in\n**`Logos/World/`** (experiments, Gallery) and **`Logos/Applications/`**\n(production apps). Platform changes are limited to:\n\n- Bug fixes and security patches\n- Label/schema alignment (catalogs, docs, manifests)\n- Operator tooling that does not expand the MCP wire contract\n\n**Do not** add new MCP tools, asset types, MySQL tables, or subsystems without\nLOGOS Project Manager + architecture review. Proposals go to\n`World/Workspaces/Archives/Docs/Proposals/`.\n\n**Finalized primitives:** `Registry/MANIFEST.md` \u00a7 Finalized primitive set.\n\n---\n\n## What Platform is\n\n**Platform** is the stable LOGOS **core engine** \u2014 cognition, data access, messaging, operator tooling, monitoring, and the AI gateway. **Host utilities** (authority, attention) live in `Logos/Utilities/`, registered via `utilities_bp.py`. It is **not** promoted applications (PhoneMate, Gallery games, etc.). Those live under `Logos/Applications/` and `Logos/World/`.\n\n**There is no `Platform/World/` folder.** Workspace data belongs under `Logos/World/Workspaces/`.\n\nPlatform code runs at URLs like `/logos/cortex/`, `/logos/matrix/`, `/logos/identity/` \u2014 registered collectively via `platform_bp.py` on the root `logos_bp`.\n\n**Motto (inherited from LOGOS):** *Consciousness is always a choice.*\n\n---\n\n## Recent platform surface (2026-05-27 \u2192 2026-05-28)\n\n| Area | What shipped | Primary paths |\n|------|----------------|---------------|\n| **Live Admin reports** | Manifests, MCP core, registry parity at request time + JSON | `Admin/Reports/live_builders.py`, `live_routes.py` |\n| **MCP alpha spine** | `session_bootstrap`, `skill_get(concise=True)`, auto telemetry | `Cortex/session_bootstrap.py`, `Registry/tool_telemetry.py` |\n| **Admin linters** | QC machinery vs Reports dashboards | `Admin/linters/`, `Reports/lint_dashboard.py` |\n| **Wire contract (CI)** | **157** tools \u2014 pytest lock, not operator HTML | `Admin/Security/tests/snapshots/mcp_wire_contract.json` |\n| **Decomposition (2026-05-28)** | Reports `developer/`, Admin `platform_errors/` + `mysql_schema_report/`, Matrix meeting migrations quarantined | See subsystem manifests |\n| **Layout pass (2026-05-28)** | Admin API flattened (`Admin/api/*.py`); review feedback proposal + module workbook UI | `World/Workspaces/Archives/Docs/Proposals/2026-05-28_platform_layout_review_feedback.md`, `/logos/reports/module-review/` |\n\n**Separation rule:** `Admin/linters` **performs checks**; `Reports/lint_dashboard` **displays results** only.\n\n---\n\n## Governance chain\n\n| Level | Manifest | Host Python |\n|-------|----------|-------------|\n| LOGOS (whole system) | `Platform/Admin/LOGOS_MANIFEST.md` | `logos_bp.py`, `logos_paths.py`, `logos_init.py` |\n| **Platform (this folder)** | **`Platform/PLATFORM_MANIFEST.md`** (this file) | `platform_bp.py`, `platform_init.py`, `platform_services.py` |\n| Applications (production apps) | `Applications/APPLICATIONS_MANIFEST.md` | `applications_bp.py`, `applications_services.py` |\n| World (Gallery, workspaces) | `World/MANIFEST.md` | `world_bp.py` |\n| Subsystem (Cortex, Matrix, \u2026) | `<Subsystem>/MANIFEST.md` | `<subsystem>_bp.py` |\n\n**Rule:** Read the manifest of the folder you are editing before changing code in it.\n\n---\n\n## Platform host layer (root Python)\n\n| File | Role |\n|------|------|\n| `platform_bp.py` | Registers **all** Platform subsystem Flask blueprints on one composition blueprint |\n| `platform_init.py` | Idempotent MySQL schema ensure/seed for Platform subsystems (called via `logos_init`) |\n| `platform_services.py` | Cross-subsystem registry and helpers \u2014 **no Flask routes** |\n\n**Do not add** new `.py` modules at `Platform/` root. New routes belong in the subsystem's `*_bp.py`; new logic in that subsystem's services module.\n\nEach host file carries a **PLATFORM HOST LAYER** header \u2014 read it before editing.\n\n---\n\n## Subsystems (local law)\n\n| Folder | Manifest | URL prefix (under `/logos/`) | Role |\n|--------|----------|------------------------------|------|\n| `Cortex/` | `Cortex/MANIFEST.md` | `/cortex/`, `/agents/`, \u2026 | AI runtime, entity model, onboarding |\n| `Entity/` | `Entity/MANIFEST.md` | (library) | Vocabulary-enforced writes via `cortex_types` |\n| `Matrix/` | `Matrix/MANIFEST.md` | `/matrix/` | Messaging, conversations, SMS |\n| `DataLayer/` | `DataLayer/MANIFEST.md` | (library \u2014 no public BP) | **Only** sanctioned path to MySQL (formerly Codex) |\n| `Admin/` | `Admin/MANIFEST.md` | `/admin/` | Operator shell, governance docs, **linters**, shared static/templates (formerly Bridge) |\n| `Admin/Security/` | `Admin/Security/MANIFEST.md` | (tests + audit) | Pytest suite, integrity tooling (formerly Sentinel) |\n| *(moved)* | `Utilities/services/` | \u2014 | Provider ledger \u2014 **`Logos/Utilities/services/`** only; `Logos.Platform.Services` import redirect in `Logos/__init__.py` (no `Platform/Services/` folder) |\n| `MCP/` | `MCP/MANIFEST.md` | `/cortex/mcp/` (stable URL) | AI gateway \u2014 migration target from Cortex |\n| `Jobs/` | `Jobs/MANIFEST.md` | (background runner) | Table-driven scheduled work (`logos_jobs` MySQL) |\n| `Registry/` | `Registry/MANIFEST.md` | (library) | MySQL four-table asset registry (v3.3 transition) |\n| `API/` | `API/MANIFEST.md` | (mounted on `/cortex/api/*`, `/api/agent/status`) | API docs, discovery, read-only capability JSON |\n| `Reports/` | `Reports/MANIFEST.md` | `/logos/reports/developer`, `/logos/reports/workspace`, `/logos/reports/lint` | Core LOGOS UI (workspace browser, developer thread, lint dashboard) |\n| *(quarantine)* | `Logos/Legacy_Code/MANIFEST.md` | (none) | Shims, migrations, one-shot scripts (was `*/legacy_scripts/`) |\n\n**Moved (2026-05-22):** All `*/legacy_scripts/` trees \u2192 **`Logos/Legacy_Code/<source>/`** (Cortex, Matrix, DataLayer, World). Import redirects in `Logos/__init__.py`. See `Legacy_Code/MANIFEST.md`.\n\n**Removed from Platform:** `Identity/`, `Attention/`, `Config/` \u2192 `Logos/Utilities/`. Import redirects in `Logos/__init__.py` only.\n\n**Removed:** `Platform/Egos/` (empty scaffold). Personality and entity features live in **`Entity/`** and **`Cortex/entity_model/`**. Archive: `World/Workspaces/Archives/Egos/`.\n\n**Removed (2026-05-22):** `Platform/Services/` \u2014 stub folder only; provider ledger lives in `Logos/Utilities/services/` (`Logos.Platform.Services` import redirect remains).\n\n**Renamed (2026-05-22):** `Platform/Prism/` \u2192 **`Platform/Reports/`** (dev infrastructure). Legacy import `Logos.Platform.Prism` redirects to `Logos.Platform.Reports`.\n\n**Removed (2026-05-22):** `Platform/Conductor/` \u2014 empty scaffold (manifest only, no Python, no routes). **Superseded by `Platform/Jobs/`** (2026-05-26).\n\n**Quarantined (2026-05-28):** Matrix meeting migrations, MySQL legacy cleanup shims, and `compare_registry_legacy` script under `Utilities/To_Remove/Legacy_Code/`. **MCP (2026-05-28):** canonical `python -m Logos.Platform.MCP`; in-process `MCP/surface.py`; legacy `Logos.Platform.Cortex.cortex_mcp` import alias only (no file). **`matrix_table_routing`** is live (no `matrix_legacy_tables` module). **`Reports/workspace/`** \u2014 `core_helpers` / `core_templates` directly (no `core.py` or route facades). **Cortex artifacts:** `skills/`, `file_blobs/`, `views/` packages (replaced thin `.py` facades).\n\n---\n\n## Allowed contents\n\n- Production platform modules and their per-folder `MANIFEST.md`\n- Tests under `Admin/Security/tests/` (cross-cutting pytest)\n- Shared templates/static under `Admin/` (served at `/logos/static/*`)\n\n## Forbidden contents\n\n- Promoted app code (PhoneMate, Gallery internals \u2192 `World/`)\n- Personal AI experiments without mandate (`World/Workspaces/Archives/Egos/\u2026/Experiments/`)\n- Duplicate data-access layers (use `DataLayer` only)\n- Hand-editing generated Admin HTML reports (regenerate via `Admin/Reports/`)\n- **Runtime imports of `Logos.Applications` or `Logos.World`** \u2014 Applications push hooks into Platform registries at startup (`applications_hooks.py` \u2192 `application_nav_registry.py`); Platform reads registries only\n\n---\n\n## Templates and static assets\n\n| Path | Served at |\n|------|-----------|\n| `Admin/templates/` | Shell pages (`Logos.html`, `LogosViewer`, `connect`) via `logos_bp` |\n| `Admin/static/` | `/logos/static/*` |\n| `Cortex/templates/` | Agent directory, profile, bootstrap pages |\n| `Matrix/templates/` | Matrix chat UI |\n| `Identity/templates/` | Login, signup, OAuth |\n\n---\n\n## Data access rule\n\n**All MySQL reads/writes go through `Logos.Platform.DataLayer`.** Subsystems must not open ad-hoc database connections in route handlers. Cortex/Matrix services call DataLayer modules.\n\n---\n\n## Related documents\n\n| Document | Path |\n|----------|------|\n| LOGOS root map | `Platform/Admin/LOGOS_MANIFEST.md` |\n| Architecture boundaries | `Platform/Admin/LOGOS_ARCHITECTURE.md` |\n| Developer rulebook | `Platform/Admin/LOGOS_DEVELOPER_GUIDE.md` |\n| AI participation | `Platform/Admin/LOGOS_AI_EXPERIENCE.md` |\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-27 20:19 UTC",
      "rel": "World/Artifacts/Gallery/MANIFEST.md",
      "size_bytes": 356,
      "text": "# Artifacts \u2014 Gallery Manifest\n\n**Version:** 0.2.0 | **Last verified:** 2026-05-27\n\n**Role:** Was planned as a duplicate home for curated showcase apps.\n\n**Active location:** **`Logos/World/Gallery/`** \u2014 all live Gallery apps (BalloonPop, TV_Magic, tv_manager, \u2026).\n\n**Status:** Empty scaffold. Add new showcase apps under `World/Gallery/`, not here.\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-27 20:19 UTC",
      "rel": "World/Artifacts/MANIFEST.md",
      "size_bytes": 1344,
      "text": "# World Artifacts Manifest\n\n**Version:** 0.2.0 | **Last verified:** 2026-05-27\n\n> Local law for `Logos/World/Artifacts/`. Read `Logos/World/MANIFEST.md` and `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Artifacts** were planned as a target home for finished outputs (websites, gallery apps). **Live code today** uses the paths below \u2014 do not assume files exist under `Artifacts/` until explicitly migrated.\n\n## Status\n\n**Scaffold only.** Production apps and Gallery already have canonical homes:\n\n| Planned target | **Active location (2026-05-27)** |\n|----------------|----------------------------------|\n| `Artifacts/Websites/` | **`Logos/Applications/`** (formerly `World/websites/`, removed) |\n| `Artifacts/Gallery/` | **`Logos/World/Gallery/`** |\n\nMigrate with new production-ready files per app; do not bulk-copy unused legacy code.\n\n## Subfolders\n\n| Folder | Purpose |\n|--------|---------|\n| `Websites/` | Reserved; empty \u2014 use `Applications/` |\n| `Gallery/` | Reserved; empty \u2014 use `World/Gallery/` |\n| *(future)* | Other finished artifact types as approved |\n\n## Sibling\n\n`Logos/World/Workspaces/` \u2014 durable shared storage (tenant SQLite, projects, archives). Already active; not under `Artifacts/`.\n\n## Related\n\n- `Logos/World/Workspaces/Archives/Docs/Proposals/2026-05-27_world_applications_boundary.md`\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-27 20:19 UTC",
      "rel": "World/Artifacts/Websites/MANIFEST.md",
      "size_bytes": 493,
      "text": "# Artifacts \u2014 Websites Manifest\n\n**Version:** 0.2.0 | **Last verified:** 2026-05-27\n\n**Role:** Was planned for LOGOS-hosted websites and enterprise apps.\n\n**Active location:** **`Logos/Applications/`** \u2014 graduated products (PhoneMate, DART, News Manager, \u2026).\n\n**Legacy:** `Logos/World/websites/` \u2014 **removed** (2026 migration). Compat import: `Logos.World.websites` \u2192 `Logos.Applications`.\n\n**Status:** Empty scaffold. Do not add production app code here; use `Applications/<app>/`.\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-27 20:19 UTC",
      "rel": "World/Gallery/MANIFEST.md",
      "size_bytes": 2981,
      "text": "# Gallery Manifest\n\n**Version:** 1.1.0 | **Last verified:** 2026-05-27\n\n> Local law for `Logos/World/Gallery/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\nGallery is the **showcase tier** \u2014 human-approved general apps promoted from workspaces. Each folder is a self-contained application or creative work served through LOGOS.\n\nSome Gallery apps (e.g. **`tv_manager`**, **`TV_Magic`**) also register production URL prefixes via `Applications/applications_bp.py` while **remaining Gallery-owned code** under this folder.\n\n## Subsystem Role\n\nSemi-production publication under World. **Not LOGOS core** \u2014 daily backup.\n\n## Audience\n\nApp authors, Gallery maintainers, players/users via web routes.\n\n## Owner / Steward\n\nPer-app creator + human approval gate for promotion.\n\n## Allowed Contents\n\n- Per-app folders (HTML/JS apps, Flask blueprints)\n- `gallery_bp.py`, `gallery_config.json`\n- App templates, static assets, local config\n- App README/manifest (when created \u2014 not `_legacy` archive)\n- Gallery apps consumed by Applications (e.g. `gallery_program_search.py`, `TV_Magic` services)\n\n## Forbidden Contents\n\n- Platform engine code\n- Unapproved drafts (keep in workspace until promotion)\n- Secrets committed to git\n- Graduated **enterprise products** whose home is `Applications/` (PhoneMate, Memory Manager, \u2026) \u2014 promote out; do not duplicate\n\n## Safe Extension Points\n\n- New app folder + registration in `gallery_bp.py`\n- Static HTML/JS games following BalloonPop viewport patterns\n- App-local documentation\n\n## Restricted Areas\n\n- Shared `gallery_bp.py` routing changes affecting all apps \u2014 review\n- Apps graduating to **`Applications/`** \u2014 follow promotion checklist\n\n## Data Ownership\n\n- Daily backup with rest of `World/`\n- App state in app-local DBs or workspace origin\n\n## Runtime Contracts\n\n- `/logos/world/gallery/<app>/\u2026`\n- Blueprint registration through parent World shell\n- **`GET /logos/world/gallery/api/search-programs`** \u2014 search `gallery_config.json` for installable programs (`q`, `limit`, `category`, `status`). Returns launch paths and `url_template` with `{admin_id}` / `{user_id}` placeholders for Phone Manager menus. Implementation: `gallery_program_search.py`.\n- **`tv_manager`**: also mounted at `/logos/world/tv/` (import from Gallery in `applications_bp.py`)\n\n## Promotion Rules\n\n| From | To | Gate |\n|------|-----|------|\n| Workspace | Gallery | Human approval |\n| Gallery | `Applications/` | Human + AI agree; security |\n\nLegacy path `World/websites/` is **retired** \u2014 use `Applications/`. Compat import: `Logos.World.websites` \u2192 `Logos.Applications`.\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| World shell | `Logos/World/MANIFEST.md` |\n| Applications | `Logos/Applications/APPLICATIONS_MANIFEST.md` |\n| Boundary map | `Logos/World/Workspaces/Archives/Docs/Proposals/2026-05-27_world_applications_boundary.md` |\n| World overview | `Logos/Platform/Admin/Docs/World/OVERVIEW.md` |\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-31 00:56 UTC",
      "rel": "World/MANIFEST.md",
      "size_bytes": 3062,
      "text": "# World Manifest\n\n**Version:** 1.2.1 | **Last verified:** 2026-05-31\n\n> Local law for `Logos/World/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Build on Platform \u2014 do not extend it\n\nWorld and Applications **consume** Platform primitives (MCP `asset()` routes,\nregistry asset types, workspace SQLite scopes, Matrix messages). They **do not**\nadd Platform MCP tools, MySQL registry types, or Cortex engine features.\n\n| Need | Where to build |\n|------|----------------|\n| New app feature | `Applications/<app>/` or `World/Gallery/` |\n| Tenant data | `World/Workspaces/` SQLite + registry pointers |\n| New asset kind | **Proposal only** \u2014 see `Platform/Registry/MANIFEST.md` \u00a7 Finalized primitive set |\n\n---\n\n## Purpose\n\nWorld is the **development and showcase territory** \u2014 Gallery apps, workspace tenant data, and project staging. World is **not** the platform engine and **not** production applications.\n\n**Production apps** live in **`Logos/Applications/`** \u2014 see `Applications/APPLICATIONS_MANIFEST.md`.\n\n**Platform core UI** (developer thread, workspace browser) lives in **`Logos/Platform/Reports/`** at `/logos/reports/\u2026` \u2014 World only serves **301 redirects** from legacy `/logos/world/developer/` and `/logos/world/workspace/`.\n\n**Asset hygiene:** scheduled `world_asset_sweep` job (see `Platform/Jobs/MANIFEST.md`) reconciles on-disk `file_assets/` with workspace registry; audit in `Workspaces/platform/world_asset_sweep.sqlite`.\n\n---\n\n## Subsystem Role\n\n**Dev zone + gallery host.** Workspaces hold tenant data; Gallery holds showcase apps; Applications holds graduated products.\n\n## Allowed Contents\n\n- Hosting shell: `world_bp.py` (Gallery; legacy URL redirects to Platform Reports)\n- Compat shims: historical copies in `Logos/Legacy_Code/World/shims/`\n- `Gallery/` \u2014 showcase apps (see `Gallery/MANIFEST.md`); includes Gallery-owned apps that also mount production URLs (e.g. `tv_manager` at `/logos/world/tv/`)\n- `Workspaces/` \u2014 tenant SQLite, archives, project scripts (see `Workspaces/MANIFEST.md`)\n- `Projects/` \u2014 staging pre-promotion\n\n## Forbidden Contents\n\n- Production application code \u2192 **`Applications/`**\n- Platform engine code (Cortex, Matrix, Codex, Reports implementation)\n- Undeployed experiments without workspace path\n\n## Promotion Rules\n\n```\nWorld/Workspaces/ \u2192 World/Gallery/ \u2192 Applications/\n```\n\n## Runtime Contracts\n\n- Base URL: `/logos/world/\u2026`\n- Gallery: `/logos/world/gallery/\u2026`\n- Production apps: still served at `/logos/world/<app>/` (registered from `Applications/`)\n- Platform Reports (not World): `/logos/reports/developer/`, `/logos/reports/workspace/`\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Applications | `Logos/Applications/APPLICATIONS_MANIFEST.md` |\n| World \u2194 Applications boundary | `Logos/World/Workspaces/Archives/Docs/Proposals/2026-05-27_world_applications_boundary.md` |\n| Gallery | `Logos/World/Gallery/MANIFEST.md` |\n| Workspaces | `Logos/World/Workspaces/MANIFEST.md` |\n| Platform Reports | `Logos/Platform/Reports/MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "applications",
      "modified_at": "2026-05-28 03:15 UTC",
      "rel": "World/Workspaces/MANIFEST.md",
      "size_bytes": 3061,
      "text": "# Workspaces Manifest\n\n**Version:** 1.5.0 | **Last verified:** 2026-05-27\n\n> Local law for `Logos/World/Workspaces/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\nWorkspaces is **tenant and creation data** \u2014 SQLite databases, project files, agent scopes, user private stores, shared globals, and archives. This is where daily development happens before promotion to World.\n\n## Subsystem Role\n\n**In-platform memory and work surface.** Not LOGOS engine code. Daily backup alongside MySQL and World.\n\n## Audience\n\nAll entities with workspace scope \u2014 humans, AIs, projects. Platform devs for layout conventions only.\n\n## Owner / Steward\n\nPer-entity owners; layout conventions owned by `project:platform_development`.\n\n## Allowed Contents\n\n```\nWorkspaces/\n\u251c\u2500\u2500 Agents/<slug>/          Unpaired AI workspaces (MCP-provisioned)\n\u251c\u2500\u2500 Users/<username>/       Human workspaces + private/ AI DBs\n\u251c\u2500\u2500 Projects/<slug>/        Project-scoped workspace.db + files\n\u251c\u2500\u2500 Global/                 Shared reference data\n\u251c\u2500\u2500 Shared/                 Cross-entity shared resources\n\u251c\u2500\u2500 platform/               Platform telemetry (mcp_timing.sqlite, legacy working memory)\n\u2514\u2500\u2500 Archives/               Egos, legacy Docs, schema snapshots, visitor reviews, misc\n    \u2514\u2500\u2500 Docs/               Processed legacy markdown + Proposals + Templates\n```\n\n## Forbidden Contents\n\n- Python platform engine modules (\u2192 `Cortex/`, `Codex/`, etc.)\n- Undocumented top-level folders (propose first)\n- Committed secrets or production credentials\n\n## Safe Extension Points\n\n- Tables/views/pages in your scoped `workspace.db` via MCP\n- Project files under your project slug\n- Archives additions when quarantining legacy material\n\n## Restricted Areas\n\n- `platform/` \u2014 platform telemetry and sweep audit DB (`world_asset_sweep.sqlite`); not general agent scratch space for new work\n- `Archives/` \u2014 append/quarantine; do not delete without review\n- Creating new `Agents/` folders manually \u2014 use MCP provisioning\n\n## Data Ownership\n\n- **Daily backup** \u2014 full `Workspaces/` tar\n- SQLite per scope; see `LOGOS_ARCHITECTURE.md` \u00a7 Workspace model\n\n## Runtime Contracts\n\n- Cortex MCP workspace SQL tools\n- `Logos/Platform/Cortex/ai_workspace_db.py` path constants\n- Project API: `Logos/Platform/Cortex/workspace_projects.py`\n\n## Related MCP Tools / Exposed Interfaces\n\n`sql_query`, `sql_execute`, workspace catalog resource, project membership tools.\n\n## Promotion Rules\n\nMature workspace work promotes to `World/Gallery/` or `Applications/` \u2014 see `World/MANIFEST.md`.\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Architecture \u00a7 Workspace | `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` |\n| Cortex workspace API | `Logos/Platform/Cortex/MANIFEST.md` |\n| Platform dev project | `Workspaces/Projects/platform_development/` \u2014 display **LOGOS Platform** (`LOGOS.Platform`); roster via `configure_logos_platform_project.py` + registry `pattern_logos_platform_project` |\n| Egos archive | `Logos/Egos/MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Applications/MANIFEST.md",
      "size_bytes": 188,
      "text": "# Applications Manifest (pointer)\n\n**Canonical file:** [`APPLICATIONS_MANIFEST.md`](APPLICATIONS_MANIFEST.md)\n\nRead **`APPLICATIONS_MANIFEST.md`** for all Applications governance content.\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-28 17:09 UTC",
      "rel": "Platform/API/MANIFEST.md",
      "size_bytes": 2547,
      "text": "# API Manifest\n\n**Version:** 1.1.0 | **Last verified:** 2026-05-28\n\n> Local law for `Logos/Platform/API/`. Read `Logos/Platform/PLATFORM_MANIFEST.md` first.\n\n**Compat import:** `Logos.API` \u2192 `Logos.Platform.API` (`Logos/__init__.py`).\n\n---\n\n## Purpose\n\n**API** is the Platform folder for routes and helpers whose **primary job** is to let humans and AIs **view or discover** LOGOS HTTP APIs \u2014 HTML docs, JSON capability catalogs, health/discovery probes, and integration help text.\n\n**Not here:** production CRUD, chat, agent invoke, Matrix messaging, or operator **mutations** (those stay on `Cortex/`, `Matrix/`, `Admin/`, etc.).\n\n## Layout (canonical)\n\n| Path | Role |\n|------|------|\n| `cortex/api_view.py` | Cortex API docs, `/api/health`, `/api/capabilities`, `/api/endpoints` |\n| `cortex/ai_help.py` | Cortex `/api/ai/help` integration guide JSON |\n| `cortex/bootstrap_handlers.py` | Bootstrap JSON/text builders for `/api/*bootstrap*` routes |\n| `agent/api_view.py` | Agent API `/status` discovery JSON |\n| `matrix/api_view.py` | Matrix `/api/health` (unauthenticated) |\n| `templates/` | `api_documentation.html` |\n## URL contracts (unchanged)\n\n| URL | Handler |\n|-----|---------|\n| `/logos/cortex/api/` | API documentation HTML |\n| `/logos/cortex/api/health` | Cortex health JSON |\n| `/logos/cortex/api/capabilities`, `/api/endpoints` | Cortex API discovery JSON |\n| `/logos/cortex/api/ai/help` | AI integration help JSON |\n| `/logos/api/agent/status` | Agent API status / capability list |\n| `/logos/matrix/api/health` | Matrix health JSON |\n\n## Do not move here (common confusion)\n\n| Path | Stays because |\n|------|----------------|\n| `Admin/api/` | Operator dashboard REST (costs, jobs, botfarm) \u2014 **Admin**, not Platform API |\n| `Cortex/routes/agent_api/` | Programmatic agent control (invoke, fleet, bots) |\n| `Matrix/routes/matrix_api/` | Matrix production JSON API (chat, voice, conversations) |\n| `Cortex/api_sql_importer.py`, `MCP/.../api_json.py` | Data ingest tools, not HTTP discovery |\n| `Cortex/routes/cortex/*.py` | Production `/cortex/api/*` mutation routes (thoughts, memory, avatar, \u2026) |\n\n## Forbidden contents\n\n- New production data-mutation routes (use subsystem `*_bp.py`)\n- Duplicate Matrix/Cortex REST handlers\n- MySQL access outside `DataLayer` (discovery routes may call `DataLayer.health_check` only)\n\n## Registration\n\nView routes register on existing subsystem blueprints (`cortex_bp`, `agent_api_bp`, `matrix_api_bp`) via `register_*_api_view_routes()` so auth middleware and URL prefixes stay stable.\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-30 05:47 UTC",
      "rel": "Platform/Admin/MANIFEST.md",
      "size_bytes": 5349,
      "text": "# Admin Manifest\n\n**Version:** 2.4.2 | **Last verified:** 2026-05-28\n\n> Read `LOGOS_MANIFEST.md` first. Quick start: [`README.md`](README.md).\n\n---\n\n## What lives here (plain English)\n\n| Path | Status | What it actually is |\n|------|--------|---------------------|\n| **`linters/`** | **Live** | **Administrative QC** \u2014 skill/asset/evidence/registry linters (checks only; dashboards live in `Platform/Reports/`) |\n| **`Reports/`** | **Live** | Operator reports \u2014 **built at request time** from repo + runtime (`live_builders.py`); static HTML is optional export |\n| **`Security/`** | **Live** | Platform pytest + audit tooling |\n| **`Diagnostics/`** | **Live** | Logging (`setup_logos_logging`), health, **`platform_errors/`** package \u2014 used across LOGOS |\n| **`api/`** | **Live** | JSON handlers for `/logos/admin/api/\u2026` \u2014 `api/agents.py`, `api/jobs.py`, \u2026 (legacy `api.admin_api` import redirects via `Logos/__init__.py`) |\n| **`templates/`** | **Live** | LOGOS shell pages, admin/botfarm/jobs UI (active runs + run history at `/logos/admin/jobs`), developer operator templates (incl. `lint_dashboard.html`) |\n| **`/docs-self-check`** | **Live** | Operator route \u2014 `run_docs_self_check()` parity report (HTML + JSON) |\n| **`static/`** | **Live** | Shared CSS/JS at `/logos/static/\u2026` |\n| **`Docs/`** | **Reference** | Markdown guides for humans/AI \u2014 not runtime packages |\n| **`scripts/`** | **Live** | One-shot admin CLIs (registry backfill, MCP seed, closeout verify) |\n| **`preload/`** | **Install** | New-instance frontload recipes \u2192 MySQL (`preload/README.md`; not runtime authority) |\n| **`/artifacts/`** | **Live** | Operator export \u2014 all workspace + registry artifacts; multi-select kind filter; JSON/CSV |\n| **`/skills/`** | **Live** | Registry skills dump \u2014 MySQL `vw_logos_assets_current` where `asset_type='skill'` |\n| **Root `*.py`** | **Live** | `admin_bp.py`, `admin_api.py`, `artifacts_dump.py`, `skills_table_dump.py`, `provider_usage_reports.py`, `openai_usage_monitor.py`, `responses.py` |\n| **`index.html`** | **Live** | Slim operator hub at `/logos/admin/` |\n\nGovernance markdown at **Admin root** (`LOGOS_MANIFEST.md`, architecture, developer guide) is current law, not archive.\n\n## Linters (`linters/`)\n\n**Checks only** \u2014 not report generators. MCP tools in `Platform/MCP/tools/linter_tools.py` delegate here; display in `Platform/Reports/lint_dashboard.py`.\n\n| Module | Entry | Role |\n|--------|-------|------|\n| `skill_linter.py` | `lint_skill(skill_dict)` | Heuristic skill playbook QC (steps, telemetry, failure modes) |\n| `asset_linter.py` | `lint_asset(asset_row, attrs)` | Registry row QC (key, body, owner, mcp_tool schema) |\n| `evidence_linter.py` | `lint_evidence(attrs)` | Standard evidence attribute completeness |\n| `platform_linter.py` | `lint_platform_boundaries()` | Platform import/data-access boundary scan |\n| `__init__.py` | `lint_registry(identity, \u2026)` | Batch sample + parity counters |\n\n```python\nfrom Logos.Platform.Admin.linters import lint_skill, lint_asset, lint_evidence, lint_registry, lint_platform_boundaries\n```\n\n## Admin scripts (operator CLIs)\n\n| Script | Role |\n|--------|------|\n| `Reports/live_builders.py` | Live report payloads (manifests, MCP core, registry parity) |\n| `Reports/live_routes.py` | Dispatch live HTML/JSON at `/logos/admin/Reports/*.html` |\n| `scripts/seed_mcp_tool_assets.py` | One `mcp_tool` registry row per wire tool |\n| `scripts/seed_skill_mcp_tool_links.py` | Backfill skill `invokes` \u2192 `mcp_tool` graph edges |\n| `scripts/seed_registry_doctrine.py` | Doctrine + demo registry assets |\n| `scripts/seed_platform_postulates.py` | Frontload P01\u2013P42 platform postulates (new instance; insert-missing default) |\n| `scripts/run_mcp_closeout_verify.py` | Smoke: session resume, doctor, catalog, linters, parity |\n| `scripts/migrate_workspace_to_registry.py` | Idempotent SQLite \u2192 registry backfill |\n| `scripts/cleanup_test_skill_authors.py` | Deprecate harness/integration-test skills in registry + workspace SQLite |\n\n## Imports most code needs\n\n```python\nfrom Logos.Platform.Admin.Diagnostics.logging_utils import setup_logos_logging\nfrom Logos.Platform.Admin.responses import error_response\nfrom Logos.Platform.Admin.linters import lint_skill  # QC only \u2014 not Reports\n```\n\nLegacy `Logos.Platform.Admin.Parity` \u2192 `Diagnostics`. Legacy `Logos.Platform.Admin.CodeDisplays` \u2192 `Reports`.\n\n## Forbidden\n\n- Hand-editing `Reports/*.html` (use live routes; export via generators if needed)\n- Duplicate runtime trees mirroring `Platform/Cortex`, `Platform/Matrix`, etc.\n- New runtime code under `legacy/`\n- **Lint check logic in `Platform/Reports/`** \u2014 Reports displays; Admin linters check\n\n## Diagnostics (`Diagnostics/`)\n\n| Module | Role |\n|--------|------|\n| `platform_errors/` | MySQL `logos_platform_logs` \u2014 `context`, `schema`, `fetch`, `record`, `failover`, `flask_hooks` |\n| `logging_utils.py` | `setup_logos_logging` |\n| `client_logging.py` | Matrix client log ingest |\n\n## Related\n\n| Topic | Path |\n|-------|------|\n| Lint dashboard (display) | `Platform/Reports/lint_dashboard.py` |\n| MCP linter tools | `Platform/MCP/tools/linter_tools.py` |\n| Reports (generated HTML) | `Reports/MANIFEST.md` |\n| Security | `Security/MANIFEST.md` |\n| Legacy inventory | `legacy/README.md` |\n| MCP guide | `Docs/MCP_DEVELOPER_GUIDE.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-29 01:41 UTC",
      "rel": "Platform/Cortex/MANIFEST.md",
      "size_bytes": 5818,
      "text": "# Cortex Manifest\n\n**Version:** 1.1.2 | **Last verified:** 2026-05-28\n\n> Local law for `Logos/Platform/Cortex/`. Read `Logos/Platform/PLATFORM_MANIFEST.md` first.\n\n---\n\n## Purpose\n\nCortex is the **AI runtime and consciousness engine** \u2014 identity bootstrap, action tags, entity model, MCP server, workspace SQL, validation, and programmatic agent control.\n\n## Subsystem Role\n\n**Thinking brain.** Matrix calls Cortex for action processing; DataLayer provides data access; MCP exposes Cortex to external AI clients.\n\n## Audience\n\nPlatform developers with explicit mandate; AI agents via MCP (read-only docs, tool invocation).\n\n## Owner / Steward\n\n`project:platform_development` / LOGOS Project Manager.\n\n## Allowed Contents\n\n| Area | Key files / packages |\n|------|----------------------|\n| MCP server | `python -m Logos.Platform.MCP` (legacy import: `Logos.Platform.Cortex.cortex_mcp` \u2192 `MCP.surface` via `Logos/__init__.py`) |\n| MCP support (canonical) | `Logos/Platform/MCP/` \u2014 `identity.py`, `invocation_log.py`, `resolvers.py`, `annotations.py`, `timing.py`, `errors.py` |\n| Blueprints | `cortex_bp.py`, `agent_api_bp.py`, `onboarding_bp.py`, `agents_hub_bp.py` |\n| API view layer | `Logos/Platform/API/` \u2014 docs, health, discovery, `/api/ai/help`, agent `/status` (mounted on Cortex/Agent blueprints) |\n| Entity model (package) | `entity_model/` \u2014 `connection.py`, `entity_crud.py`, `projects.py` |\n| Entities (other) | `workspace_projects.py`, `human_entities.py`, `entity_resolution.py` |\n| Types vocabulary | `cortex_types_schema.py`, `cortex_types_mysql_views.py` |\n| Bootstrap (package) | `bootstrap/` \u2014 `action_tags.py`, `cache.py`, `prompt.py` |\n| Default skills (package) | `default_skills/` \u2014 global operational playbooks (`generate_agent_image`, `schedule_dataset_load`, `json_artifact_to_sql`, \u2026) |\n| Image generation | `DataLayer/image_providers.py`; MCP `artifact_generate_image`; Matrix `agent_exchange_images` (`talk_to_logos_agent`) |\n| Action tags | `engine/action_tags/` \u2014 canonical; `engine/` other modules |\n| Workspace SQL | `ai_workspace_db.py`, `workspace_db/` (`sql_writes/` package; `table_transfer/`; artifacts: `skills_*`, `file_blobs_*`, `views_*`, `assets_collect`/`assets_ops`) |\n| JSON import | `json_import/` |\n| Onboarding (package) | `onboarding/` |\n| Services | `services/` \u2014 REST helpers used by blueprints |\n| API / agents / hub | `agent_api_services.py`, `agents_hub_services.py`, `onboarding_payloads.py`, `agent_directory.py` |\n| Avatar / tasks (Matrix) | canonical: `Logos.Platform.Matrix.avatar_tasks` |\n| Autonomous | `autonomous/` (worker, processor, triage, reflect; `thinking_round` + `thinking_round_agent` + `thinking_round_prompts`), `engine/agent_orchestrator.py`, bot factory modules |\n| Reports / utilities | `report_generator.py`, `working_memory*.py`, `thought_*.py`, `session_resume.py`, **`session_bootstrap.py`**, **`project_assets.py`**, `cleanup_manifest.py`, `web_extractor.py`, `package_indexer.py`, `sql_inventory.py`, `api_sql_importer.py`, `project_views.py` |\n| **Legacy scripts** | `Logos/Legacy_Code/Cortex/` \u2014 shims + archive (migrations, benchmarks); not in Platform tree |\n| Tests | `Logos/Platform/Admin/Security/tests/test_cortex_*` |\n\n> Compat shims live in `Logos/Legacy_Code/Cortex/shims/` for historical reference only \u2014 actual import resolution\n> goes through redirects declared in `Logos/__init__.py`.\n\n## Forbidden Contents\n\n- End-user application code (PhoneMate, Gallery games)\n- Personal AI experiments or demos\n- Duplicate MCP servers or parallel entity systems\n- Tenant SQLite databases (belong in `Workspaces/`)\n\n## Safe Extension Points\n\n- New MCP tools under `Platform/MCP/tools/` (follow patterns; update MCP report)\n- New action tags via registry + capability grants\n- Bug fixes and tests\n\n## Restricted Areas\n\n- `entity_model/` schema \u2014 architect review\n- `Platform/MCP/identity.py` \u2014 architect review\n- `ai_workspace_db.py` scope rules \u2014 architect review\n\n## Runtime Contracts\n\n- Flask: `/logos/cortex/\u2026`\n- MCP: `python -m Logos.Platform.MCP` (Docker `cortex-mcp` service)\n- URL: `https://winbusiness.com/logos/cortex/mcp/`\n\n## Key capabilities (summary)\n\n- **Identity & memory** \u2014 entities, thoughts, directives, bootstrap, deduplication\n- **Action tags** \u2014 19-tag pipeline (prefer MCP for new agent work)\n- **Validation** \u2014 8 deterministic checks + optional quality judge + bounce loop\n- **Programmatic agents** \u2014 bot factory, orchestrator, REST `agent_api_bp.py`\n- **Config admin** \u2014 `cortex_config` keys via `/logos/config/` (`Utilities/authority/config/`; data in `DataLayer/config.py`)\n\n## Developer documentation (Admin)\n\n| Document | Path |\n|----------|------|\n| MCP operations | `Logos/Platform/Admin/Docs/Cortex/MCP_OPERATIONS.md` |\n| Entity model | `Logos/Platform/Admin/Docs/Cortex/ENTITY_MODEL.md` |\n| Action tags | `Logos/Platform/Admin/Docs/Cortex/ACTION_TAGS.md` |\n| Cortex engine | `Logos/Platform/Admin/Docs/Cortex/ENGINE.md` |\n| Programmatic agents | `Logos/Platform/Admin/Docs/Cortex/PROGRAMMATIC_AGENTS.md` |\n| MCP tool list | `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html` |\n\n## Testing / Verification\n\n`pytest winbusiness/Logos/Platform/Admin/Security/tests/test_cortex_mcp_integration.py`\n\n## Promotion Rules\n\nApplication code promotes **out** to `Workspaces/` then `World/` \u2014 never into Cortex.\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Root map | `Logos/Platform/Admin/LOGOS_MANIFEST.md` |\n| LOGOS Platform vs World creations | `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` \u00a7 Platform vs creations |\n| PhoneMate (World/Application \u2014 not Platform) | Archive only: `World/Workspaces/Archives/Docs/processed/Prism/websites/phone_manager/PHONEMATE_MANIFEST_old.md`; runtime: `Applications/phone_manager/` + `logos_fetch` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 17:54 UTC",
      "rel": "Platform/DataLayer/MANIFEST.md",
      "size_bytes": 4282,
      "text": "# DataLayer Manifest\n\n**Version:** 2.0.0 | **Last verified:** 2026-05-22\n\n> Local law for `Logos/Platform/DataLayer/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\nDataLayer is the **LOGOS-wide data-access layer** \u2014 the only approved Python path to MySQL and shared persistence wrappers.\n\n*(Formerly named **Codex**; legacy imports `Logos.Platform.Codex` and `Logos.Codex` redirect here.)*\n\n## Subsystem Role\n\n**Memory consolidation router.** MySQL is the long-term store; workspace SQLite is accessed via `Cortex/ai_workspace_db.py`, not here.\n\n## Audience\n\nPlatform developers building LOGOS core. Application agents use **MCP** for workspace data unless they hold a platform mandate.\n\n## Owner / Steward\n\n`project:platform_development` / LOGOS Project Manager.\n\n## Allowed Contents\n\n| Module | Role |\n|--------|------|\n| `agents/` | Agent ORM (thoughts, personality, projects; messaging \u2192 Matrix) |\n| `cortex_engine/` | Runtime engine (storage, generation, evaluators, openai client) |\n| `config.py`, `db.py` | Config + MySQL connections |\n| `ai_providers.py` | LLM provider abstraction |\n| `image_providers.py` | Grok/OpenAI image + vision describe |\n| `video_providers.py` | xAI Grok Imagine video (async poll \u2192 MP4; text + image-to-video) |\n| `video_keyframe.py` | Keyframe URL resolution for image-to-video |\n| `llm_provider_config.py` | LLM secret registry (`cortex_config`), home-platform defaults |\n| `capabilities.py` | Action-tag capability map |\n| `system_entities.py` | System-entity definitions |\n| `schemas/` | Small platform migrations only (~KB) |\n| `utilities/` | One-off setup scripts |\n| **Legacy scripts** | `Logos/Legacy_Code/DataLayer/` \u2014 back-compat shims for paths moved to Matrix |\n\n> Conversations, agent messaging, task queue, voice registry, and the\n> evaluator log live in **Matrix** (see `Matrix/MANIFEST.md`). Legacy\n> imports such as `Logos.Platform.DataLayer.conversations` or\n> `Logos.Platform.Codex.conversations` keep working via redirects in\n> `Logos/__init__.py`.\n\n## Forbidden Contents\n\n- Large SQL dumps (\u2192 `Workspaces/Archives/schema_snapshots/`)\n- Duplicate data layers\n- App-specific business logic\n- Workspace SQLite files\n\n## Critical rule\n\n**No ad hoc MySQL outside DataLayer** in platform Python code.\n\n## LLM provider configuration (`cortex_config`)\n\nAPI keys and provider metadata for all backend LLM vendors live in the dynamic\n**`cortex_config`** table (category **`secret`** for keys, **`engine`** for\n`llm_provider_registry`). Do not hardcode keys in Python.\n\n| Secret key | Vendor |\n|------------|--------|\n| `openai_api_key` | ChatGPT / OpenAI |\n| `anthropic_api_key` | Claude |\n| `xai_agents_api_key` | Grok (agent-facing) |\n| `xai_backend_api_key` | Grok (fast internal) |\n| `groq_api_key` | Groq |\n| `gemini_api_key` | Gemini |\n\n- **Module:** `llm_provider_config.py` \u2014 registry, env fallback, seed helper\n- **Seed (idempotent):** `POST /logos/config/api/seed-llm-providers`\n- **UI:** `/logos/config/` \u2192 filter category `secret`\n- **Onboarding:** `whoami()` / `session_bootstrap()` return `home_llm` \u2014\n  default backend model inferred from connector identity (Claude \u2192\n  `claude-sonnet-4-5`, ChatGPT \u2192 `gpt-4o`, etc.). Cursor IDE model choice is\n  separate; MCP agentic routes use `home_llm.default_model` unless overridden.\n\n```python\nfrom Logos.Platform.DataLayer import config\nfrom Logos.Platform.DataLayer.llm_provider_config import (\n    home_llm_profile_for_identity,\n    seed_llm_provider_configs,\n)\n```\n\n```python\nfrom Logos.Platform.DataLayer import agents, config\nfrom Logos.Platform.Matrix.conversations import conversations  # canonical\n```\n\n## Restricted Areas\n\n- `db.py`, `agents.py` schema \u2014 architect review\n- New MySQL tables \u2014 architect approval\n\n## Developer documentation (Admin)\n\n| Document | Path |\n|----------|------|\n| Overview | `Logos/Platform/Admin/Docs/DataLayer/OVERVIEW.md` |\n| Data access guide | `Logos/Platform/Admin/Docs/DataLayer/DATA_ACCESS.md` |\n| Schema report | `Logos/Platform/Admin/Reports/LOGOS_MYSQL_SCHEMA_REPORT.html` |\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Cortex workspace SQL | `Logos/Platform/Cortex/MANIFEST.md` |\n| Data stores inventory | `Logos/Platform/Admin/Docs/DATA_STORES_INVENTORY.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-22 06:49 UTC",
      "rel": "Platform/Entity/MANIFEST.md",
      "size_bytes": 1795,
      "text": "# Entity Manifest\n\n**Version:** 1.0.1 | **Last verified:** 2026-05-22\n\n> Local law for `Logos/Platform/Entity/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Entity** is the vocabulary-enforced write facade for LOGOS. All typed values (`entity_type`, `meeting_type`, `message_type`, etc.) are validated against `cortex_types` before writes.\n\n**Supersedes** the removed `Platform/Egos/` scaffold (which was empty). Entity identity, cognition, and Matrix-facing writes belong here \u2014 not in a separate Egos platform folder. Legacy personality **archive files** remain under `World/Workspaces/Archives/Egos/`.\n\n## Modules\n\n| Module | Role |\n|--------|------|\n| `types.py` | `Types` helper \u2014 exists, list, propose, approve, deprecate |\n| `exceptions.py` | `UnknownType` |\n| `entity.py` | `Entity` root with sub-namespaces |\n| `messaging_writes.py` | `MessagingWrites` \u2014 typed writes **into** `Platform/Matrix` (meetings, messages, attendance). Not a copy of Matrix. |\n| `cognition.py` | `EntityCognition` \u2014 thoughts |\n| `relations.py` | `EntityRelations` \u2014 graph edges |\n\n**Naming rule:** Nothing under `Platform/Entity/` is the Matrix subsystem. Matrix is `Platform/Matrix/`. Entity only validates vocabulary then delegates.\n\n## Data\n\n- **MySQL:** `cortex_types` (schema in `Logos/Platform/Cortex/cortex_types_schema.py`)\n- **No FK enforcement** on using tables \u2014 validation is in code only\n\n## Runtime\n\n- Schema ensure: `ensure_cortex_types_schema()` via `platform_init.ensure_platform_schemas()`\n- MCP tools (`types_list`, etc.) \u2014 follow-up PR per Casey spec\n\n## Related\n\n| Document | Path |\n|----------|------|\n| Cortex types schema | `Logos/Platform/Cortex/cortex_types_schema.py` |\n| Entity model | `Logos/Platform/Admin/Docs/Cortex/ENTITY_MODEL.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 00:56 UTC",
      "rel": "Platform/Jobs/MANIFEST.md",
      "size_bytes": 10262,
      "text": "# Jobs Manifest\n\n**Version:** 0.2.0 (execution model + composite) | **Last verified:** 2026-05-28 (`store/` package)\n\n> Local law for `Logos/Platform/Jobs/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n`Platform/Jobs/` is LOGOS **table-driven scheduled work** \u2014 MySQL `logos_jobs` +\n`logos_job_runs`, a background runner, and MCP tools for AI/human registration.\n\nSkills document **HOW**; jobs store **WHEN / WHO / run_mode / payload**.\n\n## Subsystem role\n\n**Scheduler + executor.** Sibling to Cortex (AI runtime), Matrix (notify via\nagentic path), MCP (registration wire surface).\n\n## Execution model (`execution_model.py`)\n\n| Lane | Mechanism | LLM | MCP |\n|------|-----------|-----|-----|\n| `core` | Allowlisted Python handlers (`handlers/`) | No | No |\n| `mcp_tools` | In-process `cortex_mcp` tool chain | No | Yes (direct) |\n| `agentic` | Matrix \u2192 Cortex \u2192 OpenAI / Claude / Grok | Yes | Yes (via AI runtime) |\n| `composite` | Ordered `steps[]` mixing the above | Per step | Per step |\n\n### Agentic model selection\n\nPayload keys on agentic jobs (or agentic composite steps):\n\n| Key | Example | Role |\n|-----|---------|------|\n| `model` | `grok`, `claude`, `gpt-4o` | Alias or concrete model id |\n| `provider` | `openai`, `anthropic`, `xai` | Provider alias \u2192 default model |\n| `model_tier` | `fast`, `standard`, `thinking` | Attention-style tier map |\n| `skill_name` | registry skill | HOW instructions from skills DB |\n| `prompt` | free text | Additional task instructions |\n| `wait_for_reply` | `true` (default) | Poll Matrix for AI reply before marking run success |\n| `wait_seconds` | `180` | Poll timeout |\n\nProviders route through `DataLayer/ai_providers.py` (OpenAI, Anthropic, xAI/Grok).\n\n### Example payloads\n\n**core** \u2014 direct Python:\n\n```json\n{ \"handler\": \"world_asset_sweep\", \"args\": { \"register_missed\": true, \"dry_run\": false } }\n```\n\n**core (drain queue)** \u2014 N-row server-side loop without inlining MCP calls.\nProject-scoped queues set ``logos_jobs.project_slug`` and embed\n``args.queue_context`` (``queue_scope``, ``queue_entity``, ``project_slug``):\n\n```json\n{\n  \"handler\": \"drain_work_queue\",\n  \"args\": {\n    \"queue_asset_id\": 17,\n    \"batch_size\": 200,\n    \"queue_context\": {\n      \"queue_scope\": \"my_project\",\n      \"queue_entity\": \"project:my_project\",\n      \"project_slug\": \"my_project\"\n    }\n  }\n}\n```\n\n**mcp_tools** \u2014 deterministic MCP:\n\n```json\n{ \"steps\": [{ \"tool\": \"job_list\", \"params\": { \"limit\": 5 } }] }\n```\n\n**agentic** \u2014 AI + MCP:\n\n```json\n{\n  \"model\": \"claude\",\n  \"prompt\": \"Review overdue jobs and summarize.\",\n  \"wait_for_reply\": true,\n  \"wait_seconds\": 180\n}\n```\n\n**composite** \u2014 pipeline:\n\n```json\n{\n  \"steps\": [\n    { \"kind\": \"core\", \"handler\": \"ensure_jobs_schema\", \"args\": {} },\n    { \"kind\": \"mcp_tools\", \"steps\": [{ \"tool\": \"job_list\", \"params\": { \"limit\": 3 } }] },\n    { \"kind\": \"agentic\", \"model\": \"grok\", \"prompt\": \"Note anomalies.\", \"wait_for_reply\": true }\n  ]\n}\n```\n\n## MySQL tables (core LOGOS)\n\n| Table | Role |\n|-------|------|\n| `logos_jobs` | Job definitions, schedule, approval, lease |\n| `logos_job_runs` | Append-only execution audit |\n\nSchema ensure: `Jobs/schema.py` via `platform_init.ensure_platform_schemas()`.\n\n## MCP tools (thin wrappers in `MCP/tools/job_tools.py`)\n\n`job_schedule`, `job_update`, `job_list`, `job_get`, `job_pause`, `job_resume`,\n`job_approve`, `job_run_now`, `job_run_history`, `launch_jobs`\n\n### Work-queue MCP tools (`MCP/tools/work_queue_tools.py`)\n\nFor N-row server-side workloads \u2014 closes ChatGPT/Vouch dev issues 6376/6377/6378.\n\n| Tool | Role |\n|------|------|\n| `queue_register` | Register a `work_queue` registry asset (one call vs `register_asset` + N attribute writes). Returns `asset_id` + the exact next `queue_drain` invocation. |\n| `queue_drain` | Schedule a `drain_work_queue` core job for the queue. Payload is fixed-size (`{queue_asset_id, batch_size, max_failures}`) \u2014 sidesteps the inline-payload size wall. Optional `auto_launch=True` invokes `launch_jobs(limit=1)` so the drain runs this turn. |\n| `queue_status` | Read recent `queue.row_drained` events for a queue with succeeded/failed counts. |\n| `dataset_row_load` | Generic per-row drain action (`MCP/tools/dataset_tools.py`). One row \u2192 a registered **loader**. Allowed in `DRAIN_ACTION_ALLOWLIST`. |\n\n## Dataset loaders (`dataset_loaders.py`)\n\n**Concept.** Loading any dataset on a schedule is ONE mechanism: a project\n**backlog** table/view + a `work_queue` + the `drain_work_queue` job + a\n**loader**. A loader turns one queue row into a side effect. New datasets need\n**config, not a new subsystem**. Loaders come in five flavors:\n\n| Flavor | `loader_kind` | How it runs | Bootstrap config (`drain_defaults.bootstrap_json`) |\n|--------|---------------|-------------|----------------------------------------------------|\n| Existing ingest | n/a | `artifact_import_url`, `json_artifact_to_sql`, `api_paginated_to_sql` | \u2014 (use these for blobs/URLs) |\n| Script hook | `<kind>`, \u2026 | Registered Python via World project `jobs/register_loaders.py` (discovered at startup) | \u2014 code is the hook |\n| API pass-thru | `api` | External `url_template` **or** internal `logos_path` (via `logos_fetch`), extract `result_path`, optional `destination_table` | `{url_template\\|logos_path, method, headers_json, result_path, destination_table}` |\n| Agentic | `agentic` | `chat_completion(model, prompt)` with row substitution | `{model, prompt_template, system, max_tokens}` |\n| Parallel JSON arrays | `json_parallel_arrays` | One staging row (parallel JSON arrays) \u2192 many SQL rows | `{destination_table, meta_column, timestamp_column, indicators_column, symbol_path, quote_path, fields, timezone_offset_hours, replace_symbol}` |\n\n**Agent discovery:** `ingest_tool_routing()` \u2192 `dataset_loader_kinds` (bootstrap schemas).\nGolden path: `Platform/Admin/Docs/golden_paths/queue_ingest.md`.\n\n`{col}` placeholders in templates/prompts are substituted from the row;\nunknown placeholders are left intact. Config lives **with the queue**\n(`drain_defaults`), not in code. Register a queue + job via `queue_register` +\n`job_schedule` (or a World project seed script); agents use skill\n`schedule_dataset_load`.\n\n## Human web UI\n\n| URL | Role |\n|-----|------|\n| `/logos/admin/jobs` | View / schedule jobs; **active runs** + **run history** panels (login required) |\n| `GET /logos/admin/api/jobs/active` | Running jobs + open runs (`?all=1` operators) |\n| `GET /logos/admin/api/jobs/runs/recent` | Cross-job run history (`?all=1` operators) |\n| `/logos/admin/jobs?focus=launch` | Due-job preview + launch controls (nav menu) |\n| `/logos/admin/jobs/launch` | Redirect to `?focus=launch`; add `?run=1` for one-click background tick |\n| `GET /logos/admin/api/jobs/due` | Read-only list of jobs due now (`?all=1` for operators) |\n| `POST /logos/admin/api/jobs/launch` | Run scheduler tick (`async: true` default; admin JSON API) |\n| `GET /logos/admin/api/jobs/launch/status` | Poll last background tick result |\n| `/logos/admin/api/jobs` | JSON API (session auth via `require_api_auth`) |\n\n## Runner\n\n```bash\nPYTHONPATH=winbusiness:. python -m Logos.Platform.Jobs --once\nPYTHONPATH=winbusiness:. python -m Logos.Platform.Jobs --loop --interval 60\n```\n\nDocker: `logos-jobs` service in `docker-compose.yml`.\n\nEnv: `LOGOS_JOBS_TICK_SECONDS`, `LOGOS_JOBS_AUTO_APPROVE` (dev only).\n\n## Built-in seeded jobs (`seed_platform_jobs.py`)\n\n| Job key | run_mode | Role |\n|---------|----------|------|\n| `world_asset_sweep_daily` | core | World file_assets reconciliation |\n| `jobs_runner_health` | core | Schema ensure / runner connectivity |\n| `jobs_mcp_ping` | mcp_tools | `job_list` MCP smoke |\n| `jobs_agentic_smoke` | agentic | Optional AI smoke (`LOGOS_JOBS_SEED_AGENTIC=1`) |\n\nWorld project jobs are **not** seeded from\n`ensure_platform_jobs()` \u2014 see each project's `World/Workspaces/Projects/<slug>/jobs/`.\n\n## Core handlers (`handlers/`)\n\n| Handler | Role |\n|---------|------|\n| `noop` | Placeholder / connectivity test |\n| `ensure_jobs_schema` | Ensure MySQL jobs tables exist |\n| `world_asset_sweep` | Scan World `file_assets` vs workspace registry |\n| `drain_work_queue` | Iterate a `work_queue` registry asset (see `Platform/Registry/work_queue.py`); per-row tool dispatch from `DRAIN_ACTION_ALLOWLIST`; emits `queue.row_drained` events. Use for many-URL / many-row workloads instead of inlining 100+ MCP calls or stuffing them into `payload.steps[]`. |\n\nLegacy project-specific handlers may register from World `jobs/register_loaders.py`\n(prefer generic `drain_work_queue` + built-in `loader_kind` values).\n\n## Maintenance (operators)\n\n**Skill (agents):** `schedule_dataset_load` (global bootstrap \u2014 re-seed via\n`python -c \"from Logos.Platform.Cortex.default_skills import seed_default_skills; ...\"`).\n\n**Golden path:** `Platform/Admin/Docs/golden_paths/queue_ingest.md`.\n\n**Stuck rows (automatic):** Each scheduler tick calls `recover_stale_running_jobs()`\n(MySQL job lease) and `recover_stale_job_runs()` (orphan `logos_job_runs`).\nProject-specific stale-row reset belongs in the World loader hook (not Platform).\n\n**Stuck job lease:** `recover_stale_running_jobs()` (runner tick) or set\n`logos_jobs.status='active'`, `lease_expires_at=NULL` for the job key.\n\n**Registry / wire:** `dataset_row_load` in `DRAIN_ACTION_ALLOWLIST`; MCP tool\nasset seeded from `mcp_wire_contract.json`.\n\n## Safety\n\n- AI-created jobs default to `pending_approval` until `job_approve` (human).\n- `max_runs_per_day`, `min_interval_seconds`, lease recovery for stale `running`.\n- No arbitrary code in payloads \u2014 `core` uses handler allowlist only.\n\n## Allowed contents\n\n- `schema.py`, `store/` (`_db`, `_crud`, `_claim`, `_lists`), `executor.py`, `runner.py`, `delegation.py`, `execution_model.py`, `handlers/`\n- `web_identity.py`, `seed_platform_jobs.py`\n- `dataset_loaders.py` (loader registry: `api` | `agentic` + World project hooks via discovery)\n\n## Forbidden\n\n- Duplicate MCP server instance\n- Application-specific cron (belongs in Applications until promoted patterns)\n\n## Related\n\n| Document | Path |\n|----------|------|\n| Platform map | `Platform/PLATFORM_MANIFEST.md` |\n| MCP manifest | `Platform/MCP/MANIFEST.md` |\n| AI providers | `Platform/DataLayer/ai_providers.py` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Platform/MANIFEST.md",
      "size_bytes": 293,
      "text": "# Platform Manifest (pointer)\n\n**Canonical file:** [`PLATFORM_MANIFEST.md`](PLATFORM_MANIFEST.md)\n\nThis file exists so tools and links that expect `MANIFEST.md` in each primary folder still resolve. All Platform governance content lives in **`PLATFORM_MANIFEST.md`** \u2014 read that file first.\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 05:38 UTC",
      "rel": "Platform/MCP/MANIFEST.md",
      "size_bytes": 21934,
      "text": "# MCP Manifest\n\n**Version:** 0.8.0 (connector docs May 2026) | **Last verified:** 2026-05-30\n\n> Local law for `Logos/Platform/MCP/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n`Logos/Platform/MCP/` is the **Model Context Protocol gateway** \u2014 the wire-level\nentry point through which external AI clients reach the LOGOS platform.  It is\na thin, cross-subsystem dispatcher: tool implementations route into Cortex,\nDataLayer, Matrix, Registry, Jobs, **Admin/linters**, and Utilities/authority, but registration,\nidentity, transport, timing, and error handling live here. **Applications**\n(`Logos/Applications/`) **do not** register MCP tools \u2014 they expose REST routes\nthat agents reach via `logos_fetch('/logos/world/<app>/\u2026')`.\n\n**Wire tool count (snapshot):** see\n`Admin/Security/tests/snapshots/mcp_wire_contract.json` (Wave 20: ~40 advertised\nafter domain consolidation; 179 registered including 5 new shortcuts).\n\n## Subsystem Role\n\n**AI-facing front door.** Sibling to (not contained in) Cortex/Matrix/Codex.\nA separate Starlette/uvicorn process reachable at\n`https://winbusiness.com/logos/cortex/mcp/` (URL stable; package path migrating\nfrom `Logos.Platform.Cortex.cortex_mcp`).\n\n**Wave 9 (2026-05-30):** Connector documentation parity \u2014 see `LOGOS.LOGOS_Updates.md` 2026-05-30 rows.\n\n**Platform freeze (2026-05-31):** No new Platform features \u2014 bugfix/label/doc only.\nWorld/Applications build on finalized primitives in `Registry/MANIFEST.md`.\n\n## Status\n\n**Wave 1 complete (2026-05-21):** Support modules migrated:\n- `identity.py` (was `Cortex/mcp_identity.py`) \u2014 673 LOC\n- `invocation_log.py` (was `Cortex/mcp_invocation_log.py`) \u2014 481 LOC\n- `resolvers.py` (was `Cortex/mcp_resolvers.py`) \u2014 330 LOC\n\n**Wave 2 complete (2026-05-21):** Production MCP server migrated from monolith:\n- `server.py` \u2014 `_ObservedFastMCP`, `mcp` singleton, tool logging (~400 LOC)\n- `mcp_instructions.py` \u2014 MCP system instructions string (wire-stable text; was inline in `server.py`)\n- `runtime.py` \u2014 ASGI `_build_app()`\n- `tools/` \u2014 12 domain modules; `asset_tools/` sub-package (7 modules); `web_tools.py` (`logos_fetch`)\n- `__main__.py` \u2014 `python -m Logos.Platform.MCP` entrypoint\n- Legacy import `Logos.Platform.Cortex.cortex_mcp` \u2192 `MCP/surface.py` via `Logos/__init__.py` (no `cortex_mcp.py` file; Docker: `python -m Logos.Platform.MCP`)\n\nCompat shims remain at old Cortex paths. Wire-contract test passes after every wave.\n\n**Wave 3 (2026-05-26):** MCP job tools (`job_tools.py`) \u2014 delegates to `Platform/Jobs/`; includes `launch_jobs` scheduler tick (2026-05-27).\n\n**Wave 4 (2026-05-26):** Registry MCP tools (`registry_tools/` package: `_helpers`, `_read`, `_events`, `_write`) \u2014 graph read/write\nfor Phase 1 (`registry_find_assets`, `registry_asset_graph`, `registry_set_attribute`,\n`registry_link_assets`, `registry_register_asset`). Additional registry helpers\n(`registry_skill_composition`, `registry_log_event`, `registry_get_events`) exist\nin code but are **not** on the public connector wire surface documented by\n`logos_docs_get()`.\n\n**Wave 5 (2026-05-27):** Wire-contract stability fixes \u2014 snapshot locks Platform tool count only.\nApplication-owned tools must not register on the Platform MCP gateway (use HTTP/`logos_fetch`).\nInstructions text is **not** snapshot-locked (schemas + tool set only). Bootstrap:\n`Platform/Registry/mcp_bootstrap/` + `registry_docs` resource drill-down.\n\n**Wave 6 (2026-05-27):** Documentation parity \u2014 `cortex://documentation` now routes\nthrough `documentation_payload_for_caller` (honors `LOGOS_MCP_LEGACY_DOCUMENTATION`\nthe same as `logos_docs_get`). Registry payload top-level adds **`documentation_layers`**:\nexplicit `layer_0` (identity) \u2192 `layer_6` (workspace SQL) drill-down map with concrete\ntool calls. `registry_context` slimmed (no duplicate `see_top_level` / `sample`).\n\n**Wave 7 (2026-05-27):** MCP tool reference registry \u2014 `asset_type='mcp_tool'`, one\n`logos_assets` row per wire tool when seeded (`ensure_registry_schema` or\n`Platform/Admin/scripts/seed_mcp_tool_assets.py`). Browse via\n`registry_find_assets(asset_type='mcp_tool')` and `core_tools.wire_tool_names` in\nwelcome \u2014 not via separate catalog MCP tools on the public connector.\n\n**Wave 8 (2026-05-27):** Doctrine/data parity (Tickets A+B) \u2014 shared composer\n(`build_doctrine_block`, `count_visible_skills`, `build_featured_skills`) in\n`mcp_bootstrap/`; JIT `ai_session_resume(full_context=False)` < 5 KB;\nonboarding read_first = `featured_skills`; three browse-tool roles\n(`skill_list` / `skill_get` / `skill_find_by_trigger`); pattern_* taxonomy fix;\n`docs_parity.py` (`run_docs_self_check`, `canonical_probes`, parity counters);\n`skill_list(include_bodies=False)` metadata default; ATTACH docs clarified.\n\n**Wave 9 (2026-05-27):** Work-queue primitive \u2014 `asset_type='work_queue'` in\n`Platform/Registry/work_queue/`, allowlisted core handler\n`Platform/Jobs/handlers/drain_work_queue.py`, and MCP tools\n(`queue_register`, `queue_run`, `queue_drain`, `queue_status`, `queue_watch`)\nin `work_queue_tools.py`. Diagnostics: `logos_doctor`, `logos_system`, `logos_repair`,\n`logos_golden_paths`, `logos_queue_drain_probe`, `logos_chaos_probe` in `diagnostics_tools.py`. Closes connector dev issues 6376/6377/6378 (batch URL import / payload\nfile-handoff / SQL-loop) without a new DSL or router: payload is fixed-size\n`{queue_asset_id, batch_size}`; rows live in SQLite; per-row progress in\n`logos_events`. Layer/scope honor the Platform/World/Application model.\n\n**Wave 10 (2026-05-28):** Alpha session spine \u2014 `session_bootstrap()` MCP tool\n(composes whoami, projects, doctor, inbox, failures, golden paths);\n`skill_get(concise=True)` field-manual projection; automatic\n`tool_invocation` + `skill_accessed` events on `logos_events`\n(`Registry/tool_telemetry.py`, env `LOGOS_REGISTRY_TOOL_TELEMETRY`).\n\n**Wave 11 (2026-05-28):** Wrap-up + governance linters \u2014\n`skill_get` concise contract; evidence metadata projection\n(`Registry/evidence_metadata.py`); MCP outcomes `application_error` when\npayload `ok:false`; mcp_tool seed parity (157 exposed = 157 seeded);\n`linter_tools.py` (`skill_lint`, `asset_lint`, `registry_lint`) delegates to\n`Platform/Admin/linters/` (checks) \u2014 dashboards in `Platform/Reports/lint_dashboard.py`.\n\n**Wave 12 (2026-05-28):** **`project_assets`** \u2014 single MCP entry point for\nproject-scoped inventory; anchored on ``entity_type='project'`` /\n``project:<slug>`` entity graph; composer in `Cortex/project_assets.py`;\nregistry correlation via scope + ``project_slug`` / ``project_entity`` attributes.\n\n**Wave 13 (2026-05-28):** Large tool modules split into packages (wire surface unchanged):\n`skill_tools/` (`_helpers`, `_read`, `_write`), `view_tools/` (`_views`, `_pages_menu`),\n`work_queue_tools/` (`_register`, `_run`). `registry_tools/` and `messaging_tools/` packages\nalready followed this pattern.\n\n**Wave 14 (2026-05-28):** Generic dataset load \u2014 `dataset_row_load`\n(`tools/dataset_tools.py`) is a single `work_queue` drain action backed by the\nloader registry in `Platform/Jobs/dataset_loaders.py`. Five flavors, config not\ncode: existing ingest tools (blobs/URLs), World script hooks (optional),\n`api` pass-thru (`url_template` / `logos_path`), `agentic` (`model` + `prompt_template`),\n`json_parallel_arrays` (parallel JSON arrays in one staging row \u2192 many SQL rows).\nBootstrap config rides `drain_defaults.bootstrap_json`. Agent HOW: skill\n`schedule_dataset_load`; discover schemas via `ingest_tool_routing()` \u2192\n`dataset_loader_kinds`. Wire surface 158 \u2192 **159 tools** (snapshot regenerated).\n\n**Wave 15 (2026-05-29):** Asset-handoff closure (no new wire tools). New\n`tools/asset_tools/asset_handoff.py` builds a universal additive `asset_handoff`\nenvelope (`asset` {kind/name/scope/url_path/absolute_url/embed_path/preview\u00b7download\u00b7text flags},\n`recommended_followups`, `lineage`, optional `dependencies`) returned by every\nasset-producing tool: `artifact_generate_image`, `artifact_create_image`,\n`artifact_upload`, `artifact_import_url`, `artifact_create`, `page_create`,\n`report_publish`, `web_extract_to_artifact`, and the `talk_to_logos_agent`\n`generate_image:` path (with conversation lineage). `mcp_tool_get` now returns\n`follow_up_tools` (workflow grammar) and a bounded/timed `include_graph`\n(`graph_load_ms`, `graph_truncated`). `session_bootstrap` uses a lightweight\nread-only health check (no CREATE/INSERT write probe) and reports\n`timings_ms`/`degraded`. Envelope content rides inside each tool's existing\n`{result: string}` output \u2014 wire schema unchanged (snapshot still 159).\nfile_blob dependency edges in published HTML are returned (page\u2192file_blob\n`depends_on`); registry persistence of lineage/edges is a later phase.\n\n**Wave 16 (2026-05-29):** Command wrapper MCP tools \u2014 additive simplified\nentry points that delegate to existing wire tools (nothing removed).\n`Platform/MCP/command_router/` (catalog + dispatch); MCP tools\n`asset`, `sql`, `message`, `system` in `tools/command_tools.py`;\nFlask HTTP mirror at\n`POST /logos/reports/workspace/mcp/command/{asset|sql|message|system}/`\n(Bearer auth). Wire surface **162 \u2192 166 tools** (snapshot regenerated).\n\n**Wave 17 (2026-05-29):** Universal ``asset(type, command, request)`` \u2014\n``sql``, ``message``, ``system``, ``skill``, and ``project`` types mount\ninto the same dispatch table; ``sql``/``message``/``system`` MCP tools are\nshortcuts that delegate through ``asset``. ``system`` gains ``health`` alias\nfor ``logos_doctor``. No new wire tools; schemas unchanged.\n\n**Wave 18 (2026-05-30):** LOGOS domain types in universal ``asset()`` \u2014\n``directive``, ``postulate``, ``memetic`` (meme/memplex/slogan),\n``notepad``; ``Logos.*`` type aliases; ``overview`` help command;\nconvenience aliases ``skill``, ``project``, ``notepad``. Wire **166 \u2192 169**.\n\n**Wave 20 (2026-05-30):** Extended command domains \u2014 ``admin``, ``registry``,\n``entity``, ``job``, ``queue``, ``ingest``, ``channel``, ``web``, ``pairing``,\n``artifact`` lifecycle + SQL/message/project/report extensions in\n``command_router/domain_routes.py``. New MCP shortcuts: ``admin``, ``registry``,\n``job``, ``queue``, ``ingest``. Domain dupes hidden via ``tool_list_policy`` (same\nrollback env as Wave 19). Wire **116 \u2192 31** advertised (snapshot regenerated).\n\n## Command surface doctrine (official)\n\nConnected AIs should use this hierarchy \u2014 documented in\n`Registry/mcp_bootstrap/_doctrine.py` \u2192 `command_wrapper_doctrine()` and\nsurfaced in `logos_docs_get()` / `ai_session_resume()` as\n`command_surface_doctrine`.\n\n| Tier | Surface | When |\n|------|---------|------|\n| **Default** | `asset(type, command, request)` | Canonical \u2014 one grammar for all domains |\n| **Convenience** | `sql`, `message`, `system`, `skill`, `project`, `notepad`, `admin`, `registry`, `job`, `queue`, `ingest` | Same dispatch table; fewer fields |\n| **Fallback** | Raw MCP tools | Route not in wrapper catalog yet; hidden from `tools/list` when covered |\n\n**Discover routes:** `asset(type='help', command='overview')` or `command='catalog'`\n\n**Types mounted:** `help`, `sql`, `message`, `system`, `skill`, `directive`, `postulate`,\n`memetic`, `pattern`, `project`, `notepad`, `admin`, `registry`, `entity`, `job`,\n`queue`, `ingest`, `channel`, `web`, `pairing`, `file_blob`, `page`, `report`,\n`view`, `table`, `menu_link`, `artifact`. Accepts `Logos.Skills`, `Logos.Admin`, etc.\n\nImplementation: `Platform/MCP/command_router/` \u2014 aliases delegate through\n`asset`; granular wire tools unchanged.\n\n## Documentation layers (AI drill-down)\n\n| Layer | Tools / Resources | Returns |\n|------:|-------------------|---------|\n| 0 \u2014 Identity | `whoami`, **`session_bootstrap`** | ai_entity, paired status, visible scopes, **`home_llm`** (default backend model for host); bootstrap adds projects, health, inbox |\n| 1 \u2014 Orientation | `ai_session_resume` (JIT), `logos_docs_get` (full), `cortex://documentation` | JIT resume: identity + featured_skills. Full docs: postulates, cognitive_skillsets, drill-down map |\n| 2 \u2014 Browse | `skill_list`, `entity(action='find_assets')` / `registry_find_assets`, `mcp_tool_catalog` | metadata per row (`asset_body_chars`, no inline bodies); `asset_type` filters: skill, mcp_tool, postulate, pattern, table, view, doctrine |\n| 3 \u2014 Full body | `skill_get` (`concise=True` for field manual; `include_graph=True` for neighborhood), `page_get`, `view_get` | full instructions / HTML / SQL OR concise execution slice; optional graph + evidence |\n| 4 \u2014 Graph | `registry_asset_graph`, `mcp_tool_get` | one asset + links_out/in, attributes, `asset_body`, evidence block when present |\n| 5 \u2014 Telemetry | automatic on every MCP call + `skill_get` | `tool_invocation`, `skill_accessed` on `logos_events`; optional graph read-back |\n| 6 \u2014 QC | **`skill_lint`**, **`asset_lint`**, **`registry_lint`** | Admin linter scores \u2014 not report generators |\n| 7 \u2014 Workspace | `cortex://workspace/catalog`, `sql_list_tables`, `sql_*` | live SQL tables + scopes + counts |\n\n`logos_docs_get()` always returns this layer map at the top under\n`documentation_layers` so any AI can mechanically drill from orientation to a\nspecific asset body in three or four calls.\n\n## Wire-contract guarantee (the \"no backslide\" rule)\n\nBefore **any** MCP code is moved into this folder, run the snapshot test:\n\n```bash\nPYTHONPATH=winbusiness:. pytest \\\n  winbusiness/Logos/Platform/Admin/Security/tests/test_mcp_wire_contract_stability.py -v\n```\n\nThe snapshot file\n`Logos/Platform/Admin/Security/tests/snapshots/mcp_wire_contract.json` locks:\n\n- The exact set of advertised tool names from `mcp.list_tools()`\n- Every tool's `inputSchema` and `outputSchema` (sorted-key JSON compare)\n- Every tool's annotation flags (`readOnlyHint`, `idempotentHint`, etc.)\n- Every resource URI, name, and `mimeType`\n- Server `name`, tool count, and per-tool schemas (instructions text evolves freely)\n\nAfter every move, the test must still pass.  If a planned change does alter\nthe contract, regenerate the snapshot deliberately:\n\n```bash\nUPDATE_MCP_SNAPSHOT=1 pytest \\\n  winbusiness/Logos/Platform/Admin/Security/tests/test_mcp_wire_contract_stability.py\n```\n\n\u2026and commit the regenerated JSON in the **same commit** as the surface change\nwith a message that names every tool added/removed/changed.\n\n## Planned layout (target shape, not yet populated)\n\n```\nLogos/Platform/MCP/\n\u251c\u2500\u2500 __init__.py\n\u251c\u2500\u2500 MANIFEST.md                  \u2190 this file\n\u251c\u2500\u2500 __main__.py                  \u2190 `python -m Logos.Platform.MCP` entrypoint (future)\n\u251c\u2500\u2500 server.py                    \u2190 FastMCP instance, _ObservedFastMCP, port resolver, ASGI app (future)\n\u251c\u2500\u2500 middleware.py                \u2190 LogosIdentityMiddleware (future)\n\u251c\u2500\u2500 identity.py                  \u2190 \u2713 MIGRATED (was Cortex/mcp_identity.py)\n\u251c\u2500\u2500 invocation_log.py            \u2190 \u2713 MIGRATED (was Cortex/mcp_invocation_log.py)\n\u251c\u2500\u2500 resolvers.py                 \u2190 \u2713 MIGRATED (was Cortex/mcp_resolvers.py)\n\u251c\u2500\u2500 errors.py                    \u2190 \u2713 EXTRACTED from cortex_mcp.py\n\u251c\u2500\u2500 timing.py                    \u2190 \u2713 EXTRACTED from cortex_mcp.py\n\u251c\u2500\u2500 annotations.py               \u2190 \u2713 EXTRACTED from cortex_mcp.py\n\u251c\u2500\u2500 instructions/                \u2190 long-form instructions string broken into MD files\n\u2502   \u2514\u2500\u2500 server_instructions.py   \u2190 composes the final instructions= argument\n\u2514\u2500\u2500 tools/\n    \u251c\u2500\u2500 __init__.py              \u2190 imports each module so decorators run\n    \u251c\u2500\u2500 identity_tools.py        \u2190 whoami, pair_*\n    \u251c\u2500\u2500 entity_tools.py          \u2190 entity_*, skill_*\n    \u251c\u2500\u2500 thought_tools.py         \u2190 thought_*, working_memory_*\n    \u251c\u2500\u2500 workspace_tools.py       \u2190 workspace_*, project_*\n    \u251c\u2500\u2500 sql_tools.py             \u2190 sql_* (18)\n    \u251c\u2500\u2500 artifact_tools.py        \u2190 artifact_* (16)\n    \u251c\u2500\u2500 messaging_tools/         \u2190 messages_read, messages_write, messages_inbox, \u2026\n    \u251c\u2500\u2500 skill_tools/             \u2190 skill_list/get/write (`_helpers`, `_read`, `_write`)\n    \u251c\u2500\u2500 view_tools/              \u2190 view_*, page_*, menu_* (`_views`, `_pages_menu`)\n    \u251c\u2500\u2500 work_queue_tools/        \u2190 queue_* (`_register`, `_run`)\n    \u251c\u2500\u2500 registry_tools/          \u2190 registry_* (`_helpers`, `_read`, `_events`, `_write`)\n    \u251c\u2500\u2500 web_tools.py             \u2190 web_*\n    \u251c\u2500\u2500 task_tools.py            \u2190 task_*\n    \u2514\u2500\u2500 docs_tools.py            \u2190 logos_docs_get, info, mcp_*\n```\n\n## Migration rules\n\n1. **Snapshot first, move second.** Every wave: run the wire-contract test,\n   move code, re-run the test, commit only when green.\n2. **Backward-compat shims at every old path.**  When a file is moved, leave a\n   \u22645-line shim at the old path that does `from Logos.Platform.MCP.<X> import *`\n   so anything still using the old import (systemd unit, nginx, scripts) keeps\n   working until that caller is updated in a separate, scheduled change.\n3. **One `mcp` instance only.**  Do **not** instantiate a second\n   `FastMCP(...)` anywhere.  Tool modules `from Logos.Platform.MCP.server import mcp`\n   and use that singleton.  Adding a parallel server is a hard architectural\n   no.\n4. **Wire URL stays the same.**  `https://winbusiness.com/logos/cortex/mcp/` is\n   the AI client contract.  Renaming the URL is a separate, flagged change\n   that requires updating every external AI client; we are not doing it as\n   part of the package move.\n5. **No new tools added in the same commit as a move.**  Moves are\n   structure-only; a wave that both relocates code and adds a feature is\n   forbidden because the snapshot test cannot tell legitimate additions from\n   accidental drift.\n6. **Recreate the container after every docker-compose `command:` change.**\n   `docker-compose.yml` updates do **not** take effect on a running container\n   until it is re-created.  When the start command, env vars, or mount points\n   change, run:\n   ```bash\n   docker stop winbusiness_cortex-mcp_1 \\\n     && docker rm winbusiness_cortex-mcp_1 \\\n     && docker-compose up -d cortex-mcp \\\n     && docker logs --tail 50 winbusiness_cortex-mcp_1\n   ```\n   (We use stop+rm+up because `docker-compose up --force-recreate` hits a\n   `KeyError: 'ContainerConfig'` on this host's docker-compose version.)\n   After recreate, verify a clean boot ends with\n   `Uvicorn running on http://0.0.0.0:8001` and a `curl -k` to the public URL\n   returns `HTTP 401 {\"error\":\"unauthorized\",\"error_description\":\"Bearer token required\"}`\n   \u2014 that is the **healthy** unauthenticated response.\n\n## Migration trap log (do not repeat)\n\n| When | What broke | Why | Fix |\n|------|------------|-----|-----|\n| 2026-05-19 \u2192 2026-05-20 (~30h outage) | Production MCP returned 5xx / refused connections; clients saw `\"Authorization with the MCP server failed\"`. | A prior session moved `Cortex/cortex_mcp.py` \u2192 `Platform/Cortex/cortex_mcp.py` and updated `docker-compose.yml` to match, but the running `winbusiness_cortex-mcp_1` container kept its baked-in `Cmd` from before the move (`python3 winbusiness/Logos/Cortex/cortex_mcp.py`).  watchmedo restart-looped on `[Errno 2] No such file or directory`, accumulating ~50 zombie processes and serving nothing. | `docker stop`, `docker rm`, `docker-compose up -d cortex-mcp`. Verified clean boot + `HTTP 401 Bearer token required` at the public URL + wire-contract snapshot test green. |\n\n## Allowed Contents\n\n- The MCP server, transport, identity, timing, error handling, and tool\n  modules described above.\n- Tests of MCP-internal helpers (the wire-contract test stays in\n  `Sentinel/tests/`).\n\n## Forbidden Contents\n\n- Business logic that doesn't belong on the AI surface \u2014 keep that in the\n  source subsystem and call into it from the relevant tool module.\n- A second FastMCP instance.\n- Personal AI experiments.\n- Hand-edited copies of any `cortex_mcp.py` content without going through the\n  snapshot-and-shim migration protocol above.\n\n## Runtime contracts (current \u2014 do not change without coordinated work)\n\n| Contract | Today | After migration |\n|---|---|---|\n| Public URL | `/logos/cortex/mcp/` | unchanged |\n| Module path | `python -m Logos.Platform.MCP` | `Logos.Platform.MCP.surface` (in-process tools) |\n| FastMCP class | `Logos.Platform.Cortex.cortex_mcp._ObservedFastMCP` | `Logos.Platform.MCP.server._ObservedFastMCP` (re-exported at old path) |\n| Identity middleware | `Logos.Platform.Cortex.mcp_identity.LogosIdentityMiddleware` | `Logos.Platform.MCP.middleware.LogosIdentityMiddleware` (re-exported) |\n| Invocation log | `Logos.Platform.Cortex.mcp_invocation_log` | `Logos.Platform.MCP.invocation_log` (re-exported) |\n| Timing DB path | `Logos/World/Workspaces/platform/mcp_timing.sqlite` | unchanged |\n| Workspace catalog cache TTL | env `LOGOS_WORKSPACE_CATALOG_CACHE_TTL_SEC` (default 45) | per-process `list_visible_tables` cache |\n| Session resume cache TTL | env `LOGOS_SESSION_RESUME_CACHE_TTL_SEC` (default 30) | `session_resume.build_session_resume` |\n| MCP CI gate script | `Logos/Platform/Admin/Security/tests/run_mcp_ci_checks.sh` | wire contract + `test_mcp_catalog_performance.py` |\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Wire-contract test | `Logos/Platform/Admin/Security/tests/test_mcp_wire_contract_stability.py` |\n| Snapshot baseline | `Logos/Platform/Admin/Security/tests/snapshots/mcp_wire_contract.json` |\n| MCP developer guide | `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md` |\n| MCP quick reference | `Logos/Platform/Admin/Docs/MCP_QUICK_REFERENCE.md` |\n| MCP core report (generated) | `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html` |\n| MCP report generator | `Logos/Platform/Admin/Reports/generate_mcp_core_report.py` (path constant updates when migration completes) |\n| Cortex (current home) | `Logos/Platform/Cortex/MANIFEST.md` |\n| Root map | `Logos/Platform/Admin/LOGOS_MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-30 08:27 UTC",
      "rel": "Platform/Matrix/MANIFEST.md",
      "size_bytes": 8533,
      "text": "# Matrix Manifest\n\n**Version:** 1.5.2 | **Last verified:** 2026-05-29\n\n> Local law for `Logos/Platform/Matrix/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\nMatrix is the **multi-agent communication hub** AND **the unified workflow heartbeat** \u2014 conversations, message routing, operator commands, AI response generation, chat UIs, voice (STT/TTS), outbound SMS, **and every trackable task / ticket / event / reply in LOGOS** as rows in `matrix_communications`.\n\n## Subsystem Role\n\n**Voice AND heartbeat of LOGOS.** Routes messages; delegates cognition to Cortex/Codex; persists history AND workflow state in MySQL.\n\n## Doctrine \u2014 locked-in alpha model\n\n**`matrix_communications` is the single task / workflow record.** Bug lists, shopping lists, action lists, software specs, chained next-wave tasks \u2014 every item is one row. There is no parallel \"tasks\" table at the platform layer.\n\nCanonical doctrine: registry pattern asset **`pattern_matrix_message_heartbeat`** (global, asset_layer=`platform`). Walk it via `registry_asset_graph(asset_key='pattern_matrix_message_heartbeat', asset_type='pattern')`. Registered by `Logos/Platform/Matrix/doctrine_message_heartbeat.py`.\n\n| Column | Role |\n|--------|------|\n| `message_type` | `message` / `request` / `response` / `event` \u2014 only four, ever |\n| `message_subtype` | Open business label (`bug`, `shopping`, `task_status_change`, `spec_line`, \u2026) |\n| `lifecycle_status` | `pending` \u2192 `open` / `closed` / `waiting` / `blocked` / `cancelled` / `future` |\n| `response_code` | On `response` rows, projects parent's new status |\n\n**Public aliases:** `task` and `ticket` both resolve to **`request`**; `reply` \u2192 `response`; `log` \u2192 `message`. **A task is a message** \u2014 there is no separate platform task table. Use the word that matches the work; the stored row is always one of the four canonical types.\n\n**Parent / scope parity with registry assets** (see `LOGOS_UNIFIED_PARTICIPATION_MODEL.md` \u00a77):\n\n| Message field | Asset analogue |\n|---------------|----------------|\n| `lifecycle_parent_id` | `parent_asset_id` |\n| `lifecycle_root_id` | project / tree root |\n| `conversation_id` | `scope` + project grouping |\n| `entity_name` | `added_by_entity` |\n\nLifecycle uses **`lifecycle_parent_id` (INT)**. Legacy **`parent_message_id` (VARCHAR)** is not the lifecycle parent key.\n\n**Close \u2192 replicate:** append a `response` row with `response_code`; processor updates parent `lifecycle_status` and may spawn **new** child rows via `matrix_message_type_actions` (append-only, rule-matched). World projects may additionally replicate **domain** SQLite rows (e.g. taskmanager `tasks`) after an `event` / `task_status_change` message \u2014 see `pattern_task_replication`.\n\n**Skills MUST close their tickets.** If an MTA rule spawns a ticket to run a skill, the skill posts a `reply` with a `response_code` before returning. Otherwise the heartbeat leaks open.\n\n## Audience\n\nPlatform developers; infrastructure AIs for messaging features only with mandate.\n\n## Owner / Steward\n\n`project:platform_development` / LOGOS Project Manager.\n\n## Allowed Contents\n\n| Module / package | Role |\n|------------------|------|\n| `matrix_bp.py` | Page routes (desktop/cel/lite) |\n| `matrix_api_bp.py` | REST API |\n| `sms_routes.py` | REST at `/logos/matrix/sms/*` |\n| `routing/` | Routing tiers + operator commands (canonical; legacy alias `matrix_routing`) |\n| `ai/` | Prompt build, generation, TTS helpers (canonical; legacy alias `matrix_ai`) |\n| `conversation/` | Conversation services + `get_conversation_history` (canonical; legacy alias `matrix_conversation`) |\n| `conversations/` | Conversation ORM (`Conversation`, `conversations` singleton) |\n| `services/` | API services (entity profiles, message stream, voice api) |\n| `lifecycle/` | Message lifecycle utilities (canonical package) |\n| `agent_messages.py` | Agent `send_message` / inbox (MessagesMixin for Codex `Agent`) |\n| `task_queue.py` | Lifecycle-backed work tickets (`message_type='request'`) |\n| `voice_registry.py` | TTS/STT voice resolution (`voice_registry.json`) |\n| `developer_thread.py` | Platform developer Matrix thread |\n| `agent_exchange.py` | MCP \u2194 platform agent 1:1 meetings (open / batch reply / poll) |\n| `agent_exchange_images.py` | `generate_image:` messages on agent exchange \u2192 xAI/OpenAI \u2192 `Agents/<entity>/file_assets/generated/` |\n| `autonomous_inbox.py` | Retired agent inbox stubs + `get_conversation_context` |\n| `evaluator_log.py` | Increment `evaluator_count` on message meta |\n| `avatar_tasks.py` | Avatar task queue on `matrix_communications` |\n| `response_validation.py` | Deterministic AI response safety checks (pre-display) |\n| `response_gen.py`, `system_prompts.py`, `skill_subscriptions.py`, `stt_websocket.py` | Generation, prompts, subscriptions, voice WebSocket |\n| `meeting_schema.py` | Matrix v2 DDL ensure + canonical sidecar boot |\n| `matrix_canonical_schema.py`, `lifecycle_schema.py` | Sidecar DDL |\n| `meeting_views.py`, `matrix_table_routing.py` | Compatibility views and write-table resolution |\n| **Live migrations** | `Platform/Matrix/migrations/` \u2014 `matrix_drop_legacy`, `mysql_legacy_cleanup`, `mysql_table_renames`, `task_queue_migration`, \u2026 (no `meeting_migrate_*` duplicates here) |\n| `sms_schema.py`, `sms_recipients.py`, `sms.py`, `sms_providers.py` | SMS schema, recipient resolution, provider dispatch, app registry |\n| `_shared.py` | Internal shared imports (cortex_engine, convs, agents, system_entities) |\n| **Quarantined meeting migrations** | `Logos/Utilities/To_Remove/Legacy_Code/Matrix/migrations/meeting_migrate_*.py` \u2014 import via `Logos.Platform.Matrix.migrations.*` redirects |\n| `static/`, `templates/` | Chat UIs |\n\n> Compat redirects for legacy import paths (e.g. `Logos.Platform.Matrix.matrix_ai`,\n> `Logos.Platform.Matrix.matrix_routing`, `Logos.Platform.Matrix.matrix_conversation`,\n> `Logos.Platform.DataLayer.conversations`, `Logos.Platform.DataLayer.task_queue`) are\n> declared in `Logos/__init__.py` so existing callers keep working without\n> shim files in the core tree.\n\n## Forbidden Contents\n\n- Product application UI (World)\n- Duplicate messaging buses\n- Personal experiments\n\n## Safe Extension Points\n\n- Operator commands (document + test)\n- Routing tier tuning\n- Voice endpoint additions\n\n## Restricted Areas\n\n- `matrix_communications` schema \u2014 architect review\n- Message format contracts with Cortex \u2014 coordinate both teams\n\n## Data Ownership\n\n- **MySQL (v2 core):** `matrix_meetings`, `matrix_meeting_attendance`, `matrix_messages`\n- **MySQL (canonical sidecars \u2014 Phase 5):** `matrix_meeting_conversations`, `matrix_message_lifecycle`, `matrix_message_meta`, `matrix_message_deliveries` (base table), `matrix_participant_config`, `matrix_response_codes`\n- **MySQL (legacy archive \u2014 dropped 2026-05-28):** `matrix_meeting_legacy_keys` and other `*_legacy` archive tables \u2014 use `matrix_meeting_conversations` sidecar\n- **MySQL (compatibility views):** `matrix_communications`, `matrix_conversations` \u2014 read old shapes from v2 + sidecars (+ orphan legacy UNION until DROP)\n- **Writers (Phase 5):** `meeting_store.append_communication()` writes v2 + sidecars when `canonical_tables_ready()`; no new legacy rows after backfill. Boot: `migrate_legacy_to_canonical()` + `verify_canonical_health()`.\n- **DROP legacy:** `matrix_drop_legacy.drop_matrix_legacy_archive()` \u2014 architect/PM approval required.\n- **Static:** Python + templates in git\n\n## Runtime Contracts\n\n- Pages: `/logos/matrix/`, `/logos/matrix/cel`, `/logos/matrix/lite`\n- API: `/logos/matrix/api/\u2026`\n- Outbound SMS: `/logos/matrix/sms/*` (legacy `/logos/messaging/*` \u2192 301)\n- Developer thread: via World developer routes\n- Recipient config: `users.sms_number`, `users.sms_carrier`, `users.sms_opt_in`; audit in `sms_log`\n\n## Developer documentation (Admin)\n\n| Document | Path |\n|----------|------|\n| Overview + routes | `Logos/Platform/Admin/Docs/Matrix/OVERVIEW.md` |\n| Chat flow | `Logos/Platform/Admin/Docs/Matrix/CHAT_FLOW.md` |\n| STT beep (lite) | `Logos/Platform/Admin/Docs/Matrix/STT_BEEP_PROBLEM.md` |\n\n## MCP / agent messaging\n\nAgents should use **MCP message tools** or `agents.get(...).send_message()` (Codex Agent \u2192 Matrix `agent_messages`) \u2014 not ad hoc SQL on Matrix tables.\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Cortex | `Logos/Platform/Cortex/MANIFEST.md` |\n| Attention | `Logos/Utilities/attention/MANIFEST.md` |\n| Action tags | `Logos/Platform/Admin/Docs/Cortex/ACTION_TAGS.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 05:38 UTC",
      "rel": "Platform/Registry/MANIFEST.md",
      "size_bytes": 10426,
      "text": "# Registry Manifest\n\n**Version:** 0.5.0 | **Last verified:** 2026-05-31 (alpha \u2014 MySQL authoritative; primitive set closed)\n\n> Local law for `Logos/Platform/Registry/`. Read `LOGOS_MANIFEST.md` first.\n\n## Alpha release doctrine\n\n**MySQL is authoritative** for all platform artifacts. This is not a transition phase.\n\n| Plane | Store | Role |\n|-------|-------|------|\n| **Platform artifacts** | MySQL `logos_assets` (+ links/attributes/events) | Skills, views, pages, menu links, file blobs, projects, jobs, MCP tools \u2014 **read and write here** |\n| **User SQL** | Per-scope SQLite `.db` | DDL + row data; `_workspace_tables` catalog; `_workspace_audit` |\n| **SQLite `_workspace_*` artifact tables** | **Cold backup only** | **Not written** in normal operation. Stale rows may exist from pre-alpha backfill. Use only when `LOGOS_REGISTRY_MYSQL_EMERGENCY=1` (MySQL outage) |\n\n**Do not** reintroduce SQLite-first paths, dual-entry, or `_workspace_*` mirrors for platform objects.\n\n## Purpose\n\nMySQL **four-table asset registry** (whitepaper v3.3): `logos_assets`, `logos_links`, `logos_attributes`, `logos_events`.\n\n## What is an \u201casset\u201d?\n\nAn **asset** is a **versioned metadata row** in `logos_assets` (plus optional graph in `logos_links` / `logos_attributes` / `logos_events`). It is **not**:\n\n- Application source code (PhoneMate lives under `Logos/Applications/` \u2014 use HTTP, not registry)\n- World gallery experiments (reserved `asset_layer='world'` \u2014 not mirrored by default)\n- Raw SQLite table **data** (rows live in workspace `.db` files; registry holds a **pointer** only)\n\n| Column | Meaning | Examples |\n|--------|---------|----------|\n| **`asset_layer`** | Which LOGOS **plane** owns the row | `platform` (today\u2019s rows), `world`, `application` (reserved) |\n| **`scope`** | Who may **see** it within that plane | `global`, `user`, `private`, `<project_slug>` |\n| **`asset_type`** | Kind of asset | `skill`, `table`, `view`, `mcp_tool`, `postulate`, `work_queue`, `project`, \u2026 |\n| **`parent_asset_id`** | Containing asset (stable `asset_id`) | Project asset for project-scoped rows; ordered siblings via Dewey `sort_order` |\n| **`logos_asset_relationships`** | Many-to-many semantic edges | `composes`, `includes`, \u2026 \u2014 skills reused across parents |\n\n**Natural key:** ``(asset_type, asset_key, asset_layer, scope, human_user_id)`` \u2014 current row via ``vw_logos_assets_current`` (latest ``added_at`` per business key). Audit columns: ``added_by_entity``, ``added_at``, ``record_status`` (`active` | `deprecated` | `deleted`).\n\n**Project assignment:** When ``scope`` is a project slug (not ``global`` / ``user`` / ``private`` / ``project``), ``register_asset`` auto-sets ``parent_asset_id`` to the project container row (via ``project_assets.ensure_project_registry_asset``).\n\n**Asset.Catalog for AIs:** `logos_docs_get()` \u2192 `asset_catalog` (built by `asset_layers.build_asset_catalog`). Browse with `registry_find_assets(asset_layer=..., scope=...)`.\n\n**Today:** essentially all active registry rows are `asset_layer='platform'`. No PhoneMate/application rows should appear.\n\n**Tasks are not assets.** Trackable work (tasks, tickets, bugs, action items) lives in **Matrix** (`matrix_communications`), not `logos_assets`. Post with `message_type='task'` (stored as `request`). See `LOGOS_UNIFIED_PARTICIPATION_MODEL.md` \u00a76\u2013\u00a77 and `pattern_matrix_message_heartbeat`.\n\n## Role \u2014 authority boundary\n\n| Asset kind | Authoritative store | Registry role |\n|------------|--------------------|---------------|\n| **SQL tables** (`asset_type='table'`) | **Per-scope SQLite** (user row data + DDL) | MySQL pointer row (`asset_key=table_name`) for discovery |\n| Skills | **MySQL `logos_assets` only** | Graph hub (`reads`, `composes`, `cites`) |\n| Views / pages / menu links / file blobs | **MySQL `logos_assets` only** | Cross-scope discovery |\n| Thoughts | `cortex_thoughts` (MySQL) | Link target only (`logos_links.target_kind='thought'`) |\n\n**Hard rule (`table_catalog.py:list_visible_tables`):** User SQL tables MUST be readable without MySQL. SQLite is source of truth for **table data** \u2014 registry holds pointers only.\n\n**Cross-agent privacy:** `scope='private'` registry queries isolate by `ai_user_id`.\n\n**Harness / integration-test assets:** Hidden from default browse via `skill_hygiene.py`. Cleanup: `Platform/Admin/scripts/cleanup_test_skill_authors.py`.\n\n## Allowed\n\n| File | Role |\n|------|------|\n| `schema.py` | MySQL DDL + views; `ensure_registry_schema()` |\n| `primitives/` | `register_asset`, `link_assets`, `set_attribute`, `log_event`, readers |\n| `dual_write/` | **Internal MySQL writers** (`mirror_skill_create`, \u2026) used by `write_primary/` \u2014 misnamed legacy package; **not** SQLite dual-entry |\n| `read_primary/` | Registry-primary reads from MySQL |\n| `write_primary/` | `registry_primary_write()` \u2014 MySQL-first creates |\n| `feature_flags.py` | Production env defaults (`PRIMARY_*=1`, emergency off) |\n| `mcp_bootstrap/`, `mcp_tool_assets/`, `work_queue/`, `project_assets.py`, \u2026 | As before |\n\n## Production env (alpha)\n\n| Env | Value | Meaning |\n|-----|-------|---------|\n| `LOGOS_REGISTRY_PRIMARY_WRITES` | **1** | Platform artifacts \u2192 MySQL |\n| `LOGOS_REGISTRY_PRIMARY_READS` | **1** | Platform artifacts \u2190 MySQL |\n| `LOGOS_REGISTRY_MYSQL_EMERGENCY` | **0** | When **1**: read/write platform artifacts from SQLite `_workspace_*` backup (MySQL down only) |\n| `LOGOS_REGISTRY_DUAL_WRITE` | **0** | Retired \u2014 do not enable |\n| `LOGOS_REGISTRY_SQLITE_WRITE_MIRROR` | **0** | Retired \u2014 do not enable |\n\nIndividual fallbacks (`LOGOS_REGISTRY_PRIMARY_SQLITE_FALLBACK`, `LOGOS_REGISTRY_PRIMARY_WRITE_SQLITE_FALLBACK`) still work but **`MYSQL_EMERGENCY=1`** is the operator switch for outage mode.\n\nOptional: `LOGOS_REGISTRY_MIRROR_THOUGHTS`, `LOGOS_REGISTRY_RESUME_CONTEXT`, `LOGOS_REGISTRY_ENRICH_READS`.\n\n### MCP tools (AI-facing graph curation)\n\n| Tool | Role |\n|------|------|\n| `registry_find_assets` | Metadata browse (no inline `asset_body`; use `registry_asset_graph` / `skill_get` for content) |\n| `registry_asset_graph` | Asset + links + attributes |\n| `registry_set_attribute` | Append metadata |\n| `registry_link_assets` | Graph edges |\n| `registry_register_asset` | Doctrine/pattern assets \u2014 not playbook bodies |\n\nQC over evidence completeness: `Platform/Admin/linters/evidence_linter.py`\n(exposed via MCP `asset_lint` / `registry_lint`).\n\n### `work_queue` asset_type\n\nQueue workloads as registry assets; drained by `Platform/Jobs/handlers/drain_work_queue.py`.\nSee prior docs in `Platform/Jobs/MANIFEST.md` and skill `schedule_dataset_load`.\n\n## Production lock-in (fresh deploy)\n\n| Script | Role |\n|--------|------|\n| `Platform/Admin/scripts/migrate_workspace_to_registry.py` | Backfill stale SQLite `_workspace_*` rows \u2192 MySQL (run once if needed) |\n\n## Startup\n\n`platform_init.ensure_platform_schemas()` \u2192 `_ensure_registry()`.\n\nPost-deploy: `python3 Platform/Admin/scripts/run_mcp_closeout_verify.py`\n\n## Finalized primitive set (2026-05-31 \u2014 closed)\n\n**Do not add Platform asset types or registry tables without PM + architecture review.**\nWorld and Applications build on this set via MCP, HTTP, and workspace SQLite.\n\n### Registry asset types (`logos_asset_types`)\n\nCanonical catalog: `Registry/asset_types/_seed.py` (synced on `ensure_registry_schema`).\n\n| `asset_type` | `body_format` | MCP / router notes |\n|--------------|---------------|-------------------|\n| `project` | `json` | Graph root; `parent_asset_id` container |\n| `skill` | `markdown` | Playbooks; `skill_*` MCP |\n| `table` | `sql` | Pointer to workspace SQLite DDL/data |\n| `view` | `sql` | Saved SQL/HTML view |\n| `page` | `html` | Rendered HTML page |\n| `menu_link` | `json` | Nav entry |\n| `file_blob` | `url_pointer` | Bytes on disk; registry stores path |\n| `work_queue` | `json` | Batch drain workloads |\n| `mcp_tool` | `json` | One row per wire tool |\n| `postulate` | `markdown` | Doctrine blocks |\n| `pattern` | `markdown` | Router alias **`memetic`** |\n| `doctrine` | `markdown` | Platform doctrine prose |\n| `job` | `json` | Background job mirror |\n| `thought` | `json` | Cortex thought link target |\n| `entity` | `json` | Reserved entity mirror |\n\n**Label fixes (2026-05-31):** `table.body_format` is **`sql`** (not `ddl`); `file_blob.body_format` is **`url_pointer`** (not `binary_ref`).\n\n### Registry writer primitives (`Registry/primitives/`)\n\n| Primitive | Role |\n|-----------|------|\n| `register_asset` | Append-only asset row |\n| `link_assets` | Graph edge in `logos_links` |\n| `set_attribute` | Metadata in `logos_attributes` |\n| `log_event` | Audit in `logos_events` |\n\nReaders: `find_assets`, `get_attributes`, `get_links`, `list_asset_revisions`, etc.\n\n### Not assets (use Matrix / SQLite instead)\n\n| Kind | Store |\n|------|-------|\n| Tasks, tickets, debate threads | Matrix `matrix_communications` |\n| User SQL row data | Per-scope workspace `.db` |\n| Application business logic | `World/` \u2192 `Applications/` |\n\n### MCP self-teaching layer (`compact_schema`)\n\nEvery command-router help row exposes **`compact_schema`**: field name \u2192 type label for agents.\n**Code authority:** `Platform/MCP/command_router/help_enrichment.py` (`INTEGER_OPTIONAL_FIELDS`, `BOOLEAN_OPTIONAL_FIELDS`, \u2026).\n\n| Label | Meaning |\n|-------|---------|\n| `boolean optional` / `boolean required` | JSON boolean |\n| `integer optional` / `integer required` | JSON number |\n| `string optional` / `string required` | JSON string |\n| `string (JSON object)` | JSON object passed as string |\n\n**Rules:** Base hints are optional; route `required_fields` flips `optional` \u2192 `required`. Do not invent new label strings \u2014 extend the field sets in `help_enrichment.py` and add pytest in `test_compact_schema_field_types.py`.\n\n**Semantic search fields (reference):**\n\n| Field | Label |\n|-------|-------|\n| `q` | `string required` on `search`; optional on `search_graph` |\n| `limit`, `max_projects`, `graph_hop` | `integer optional` |\n| `filter_graph_nodes`, `exclude_raw_blobs`, `use_index`, `include_messages`, `include_graph` | `boolean optional` |\n| `asset_type`, `asset_types`, `asset_type_filters`, `scope`, `project_slug` | `string optional` |\n\nSurfaced via `semantic(action='help')` and validation errors (`missing_request_error`).\n\n## Related\n\n- `Platform/Admin/Docs/MCP_REGISTRY_PHASE1.md`\n- `Platform/Admin/Docs/COMPATIBILITY_DEPRECATION.md`\n- `Platform/Jobs/MANIFEST.md`\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 00:56 UTC",
      "rel": "Platform/Reports/MANIFEST.md",
      "size_bytes": 4343,
      "text": "# Reports Manifest\n\n**Version:** 1.6.0 | **Last verified:** 2026-05-30 (page sanitize profiles)\n\n> Local law for `Logos/Platform/Reports/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n**Not** `Platform/Admin/Reports/` \u2014 that folder holds auto-generated operator HTML (schema, MCP tools, manifests). This package is **LOGOS core UI**: workspace browser, developer thread, scratch filtering, **lint dashboards**.\n\n---\n\n## Purpose\n\n**Platform core UI** \u2014 developer protocol, human workspace browser, scratch filtering, continuum link metadata, and **read-only lint dashboards**. Represents LOGOS infrastructure, **not** World creations (Gallery, project apps).\n\n**Lint rule:** This folder **displays** linter results from `Platform/Admin/linters/` \u2014 it does **not** implement check logic.\n\n## Subsystem Role\n\nPlatform-hosted, static core surfaces. Registered on **`platform_bp`** (not `world_bp`).\n\n| Route | Module | Blueprint name |\n|-------|--------|----------------|\n| `/logos/reports/developer/` | `developer/` package | `prism_developer` |\n| `/logos/reports/workspace/` | `workspace/` package | `prism_workspace` |\n| `/logos/reports/mysql/` | `mysql_routes.py` | `prism_mysql` |\n| `/logos/reports/lint/` | `lint_dashboard.py` | `platform_lint_dashboard` |\n| `/logos/reports/module-review/` | `module_review_routes.py` | `platform_module_review` |\n| `/logos/reports/evolution/` | `evolution_scoreboard_routes.py` | `platform_evolution_scoreboard` |\n| `/logos/reports/registry/assets/` | `registry_routes.py` | `prism_registry` |\n\nComposition: `reports_bp.py` \u2192 registered from `Platform/platform_bp.py`.\n\nLegacy URLs `/logos/world/developer/` and `/logos/world/workspace/` redirect from `World/world_bp.py`.\n\nLegacy import: `Logos.Platform.Prism` \u2192 `Logos.Platform.Reports` (redirect in `Logos/__init__.py`).\n\n## Modules\n\n| Module | Role |\n|--------|------|\n| `reports_bp.py` | Composition blueprint (`/reports` prefix) |\n| `urls.py` | Canonical URL constants |\n| `developer/` | Developer UI package \u2014 `bp`, `helpers`, `routes_index`, `routes_mcp_errors`, `routes_platform_errors`, `routes_mcp_metrics`, `routes_messages` |\n| `mysql_routes.py` | Admin-only live MySQL table inventory + paginated row browser (enriched with model catalog purpose/domain/status) |\n| `module_review_routes.py` | Admin-only Platform module relocation workbook (HTML + JSON + Markdown export) |\n| `evolution_scoreboard_routes.py` | Admin-only **evolution scoreboard** \u2014 aggregates `logos_events` (`tool_invocation`, `skill_accessed`, `skill_experiment`); data layer in `Registry/evolution_scoreboard.py` |\n| `module_review_data.py` | Loads `logos_audit.platform_module_review` (MySQL; SQLite fallback) |\n| `workspace/` | Human workspace browser \u2014 `routes_browser_*`, `routes_catalog_*`, `routes_views_*`, `routes_assets_*`, `core_helpers.py` / `core_templates.py` / `sanitize_*`. |\n| `workspace/sanitize_profiles.py` | **`strict` vs `trusted_interactive`** profiles for AI page HTML (CDN allowlist, inline handlers). See **`Platform/Admin/Docs/PAGE_SANITIZE_PROFILES.md`**. |\n| `lint_dashboard.py` | **Display only** \u2014 calls `Admin.linters`, renders `lint_dashboard.html` + JSON |\n| `workspace_scratch.py` | Scratch/experiment row detection for nav filtering |\n| `chat_platform_links.py` | Vendor chat deep-link synthesis for conversation index |\n| `logos_links.py` | Continuum showcase route metadata (`get_prism_route`) |\n\n## Forbidden Contents\n\n- Production application blueprints (\u2192 `Applications/`)\n- Gallery game internals (\u2192 `World/Gallery/`)\n- Agent-created cognitive skill definitions (\u2192 `World/Workspaces/Projects/\u2026/scripts/`)\n- Generated admin HTML reports (\u2192 `Platform/Admin/Reports/`)\n- **Linter check logic** (\u2192 `Platform/Admin/linters/`)\n\n## Related\n\n| Document | Path |\n|----------|------|\n| Admin linters (checks) | `Logos/Platform/Admin/linters/` |\n| Platform host | `Logos/Platform/PLATFORM_MANIFEST.md` |\n| World (redirects only) | `Logos/World/MANIFEST.md` |\n| Developer templates | `Logos/Platform/Admin/templates/developer*.html`, `lint_dashboard.html` |\n| Matrix developer thread | `Logos/Platform/Matrix/developer_thread.py` |\n| Generated operator reports | `Logos/Platform/Admin/Reports/MANIFEST.md` |\n| **AI page HTML sanitize profiles** | `Logos/Platform/Admin/Docs/PAGE_SANITIZE_PROFILES.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 06:21 UTC",
      "rel": "Utilities/MANIFEST.md",
      "size_bytes": 2582,
      "text": "# Utilities Manifest\n\n**Version:** 1.0.1 | **Last verified:** 2026-05-28\n\n> Local law for `Logos/Utilities/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Utilities** is the LOGOS **host-level shared module plane** \u2014 cross-cutting capabilities that sit beside `Platform/` (cognition engines), not inside them. Each subfolder is a named utility module.\n\n## Modules\n\n| Folder | Role | Flask routes |\n|--------|------|--------------|\n| `authority/` | Auth, OAuth, human login/signup, agent connectors, cortex_config admin UI | `/login`, OAuth, `/config/`, \u2026 |\n| `attention/` | Signal classification and routing input for Matrix | (library \u2014 no public BP) |\n| `services/` | Provider API call ledger (`logos_provider_api_calls`) \u2014 write path | (library \u2014 no public BP) |\n| `web/` | Logos.Web Playwright browser control engine | (library \u2014 MCP in Platform/MCP) |\n| `Tests/` | Integration / smoke harnesses (not production imports) | (scripts \u2014 see `Tests/MANIFEST.md`) |\n| `logs/` | Runtime blueprint log files (`.log`) | (data \u2014 not imported) |\n\nHuman **login/signup/logout** live in `Utilities/authority/` (`logos_auth.py`, `logos_auth_bp.py`), registered via `utilities_bp`.\n\n## Host wiring\n\n| File | Role |\n|------|------|\n| `utilities_bp.py` | Registers `logos_auth_bp`, `identity_bp`, `oauth_bp`, `config_bp` |\n| `logos_bp.py` | `logos_bp.register_blueprint(utilities_bp)` |\n\n## Data layers (outside Utilities)\n\n| Concern | Canonical module |\n|---------|------------------|\n| MySQL users / sessions | `Utilities/authority/auth.py` |\n| OAuth tables | `Utilities/authority/oauth/` |\n| `cortex_config` reads/writes | `Platform/DataLayer/config.py` |\n\n## Legacy imports\n\n| Legacy path | Redirects to |\n|-------------|--------------|\n| `Logos.Platform.Identity` | `Logos.Utilities.authority` |\n| `Logos.Platform.Config` | `Logos.Utilities.authority.config` |\n| `Logos.Platform.Attention` | `Logos.Utilities.attention` |\n| `Logos.Platform.Services` | `Logos.Utilities.services` |\n| `Logos.logos_auth` | `Logos.Utilities.authority.logos_auth` (no root shim file) |\n| `Logos.Control.*` | `Logos.Utilities.*` (short-lived compat) |\n\nShims remain under `_Quarantine/` only. Legacy imports use `Logos/__init__.py` redirects.\n\n## Related\n\n| Document | Path |\n|----------|------|\n| Authority detail | `Utilities/authority/MANIFEST.md` |\n| Attention detail | `Utilities/attention/MANIFEST.md` |\n| Provider ledger | `Utilities/services/MANIFEST.md` |\n| Test harnesses | `Utilities/Tests/MANIFEST.md` |\n| Platform map | `Platform/PLATFORM_MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-28 17:15 UTC",
      "rel": "Utilities/Tests/MANIFEST.md",
      "size_bytes": 1290,
      "text": "# Utilities / Tests Manifest\n\n**Version:** 1.0.0 | **Last verified:** 2026-05-28\n\n> Local law for `Logos/Utilities/Tests/`. Read `Logos/Utilities/MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Non-production test harnesses** for Utilities and cross-cutting smoke checks. Pytest for the full platform remains under `Logos/Platform/Admin/Security/tests/`.\n\n## Allowed contents\n\n| Subfolder | Contents |\n|-----------|----------|\n| `integration/` | Manual or CI live scripts (`test_*.py` with `main()`), smoke runners callable from diagnostic routes |\n\n## Forbidden\n\n- Production ledger/auth/attention logic (belongs in sibling `services/`, `authority/`, etc.)\n- Flask blueprints or MCP tools\n\n## Run\n\n```bash\n# Provider ledger live / synthetic check\ncd /root/Winbusiness && set -a && . database.env && set +a\nPYTHONPATH=/root/Winbusiness:/root/Winbusiness/winbusiness \\\n  python3 winbusiness/Logos/Utilities/Tests/integration/test_provider_ledger_live.py\nPYTHONPATH=/root/Winbusiness:/root/Winbusiness/winbusiness \\\n  python3 winbusiness/Logos/Utilities/Tests/integration/test_provider_ledger_live.py --synthetic\n```\n\n## Related\n\n| Document | Path |\n|----------|------|\n| Platform pytest suite | `Logos/Platform/Admin/Security/tests/` |\n| Provider ledger (production) | `Logos/Utilities/services/` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Utilities/attention/MANIFEST.md",
      "size_bytes": 2147,
      "text": "# Attention Manifest\n\n**Version:** 1.1.0 | **Last verified:** 2026-05-22\n\n> Local law for `Logos/Utilities/attention/`. Read `Logos/Utilities/MANIFEST.md` first.\n\n---\n\n## Purpose\n\nAttention classifies incoming signals, scores relevance per agent, and informs Matrix routing \u2014 **who should respond, monitor, or ignore**.\n\n## Subsystem Role\n\n**Senses of LOGOS.** Sits between raw input (text/voice/system) and Matrix/Cortex routing decisions.\n\n## Audience\n\nPlatform developers working on routing, voice, or AI Mate integration. Individual AIs: read-only understanding.\n\n## Owner / Steward\n\n`project:platform_development` / LOGOS Project Manager.\n\n## Allowed Contents\n\n- Signal classification (`signal_classifier.py`)\n- Attention scoring (`attention_auditor.py`)\n- Signal data structures (`attention_signals.py`)\n- Blueprint routes for attention APIs\n- `docs/` \u2014 protocol and routing specifications (migrated to Bridge)\n\n## Forbidden Contents\n\n- End-user application UI (World apps)\n- Duplicate routing systems parallel to Matrix\n- Personal AI experiments\n\n## Safe Extension Points\n\n- Signal type additions (document in PROTOCOL + tests)\n- Scoring weight tuning (with regression checks on routing)\n- Integration hooks for new input sources (mic, scheduled)\n\n## Restricted Areas\n\n- Scoring engine changes affecting all conversations \u2014 architect review\n- Cross-subsystem contract with Matrix enqueue path \u2014 coordinate with Matrix maintainers\n\n## Data Ownership\n\n- Primarily in-memory / ephemeral scoring state during routing\n- Persistent conversation state remains in Matrix MySQL tables\n\n## Runtime Contracts\n\n- Called from Matrix routing pipeline and AI Mate voice flows\n- Model tier output consumed by Cortex generation (`attention_settings`)\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Overview | `Logos/Platform/Admin/Docs/Attention/OVERVIEW.md` |\n| Protocol | `Logos/Platform/Admin/Docs/Attention/PROTOCOL.md` |\n| Routing spec | `Logos/Platform/Admin/Docs/Attention/ROUTING_SPEC.md` |\n| Matrix | `Logos/Platform/Matrix/MANIFEST.md` |\n\n## Promotion Rules\n\nAttention stays core platform \u2014 no promotion to World apps.\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-27 00:34 UTC",
      "rel": "Utilities/authority/MANIFEST.md",
      "size_bytes": 2342,
      "text": "# Authority Manifest\n\n**Version:** 1.2.0 | **Last verified:** 2026-05-22\n\n> Local law for `Logos/Utilities/authority/`. Read `Logos/Utilities/MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Authority** is the **authentication and session gate** \u2014 login, OAuth, bearer validation for MCP, visitor codes, route protection, and operator config UI.\n\n## Subsystem Role\n\n**Gatekeeper.** Every protected route depends on Identity; MCP nginx gate calls `/logos/oauth/validate`.\n\n## Audience\n\nPlatform developers only. **No AI should modify** without explicit security assignment.\n\n## Owner / Steward\n\n`project:platform_development` + security steward.\n\n## Allowed Contents\n\n- `logos_auth_bp.py` \u2014 human login, signup, logout (`/login`, `/signup`, `/logout`)\n- `logos_auth.py` \u2014 session helpers (`get_logos_user`, `require_logos_login`, \u2026)\n- `identity_bp.py` \u2014 session API, nav API, visitor codes\n- `auth.py` \u2014 sessions, rate limits, bearer-aware `get_current_user()`\n- `oauth.py` \u2014 OAuth clients, pairing, bearer validation\n- `compat.py` \u2014 import shims\n\n## Forbidden Contents\n\n- Application business logic\n- Per-app user scoping (belongs in World apps via `UserScope` patterns)\n- Experiments\n\n## Safe Extension Points\n\n- New OAuth scopes (document + Sentinel review)\n- Rate limit tuning on specific routes\n\n## Restricted Areas\n\n- Password hashing, session cookie policy \u2014 architect review\n- `/logos/oauth/validate` contract \u2014 MCP depends on it\n- Nav admin dropdown curation \u2014 operator-only\n\n## Runtime Contracts\n\n```python\nfrom Logos.Platform.Identity import require_login\nfrom Logos.Platform.Identity.auth import rate_limit\n```\n\nMCP identity: `Logos/Platform/MCP/identity.py` consumes OAuth validation (compat shim: `Cortex/mcp_identity.py`).\n\nFlask `get_current_user()` accepts the same OAuth/PAT bearer as MCP. MCP tool `logos_fetch(path)` performs server-side authenticated fetches for development browsing.\n\n## Developer documentation (Admin)\n\n| Document | Path |\n|----------|------|\n| Overview | `Logos/Platform/Admin/Docs/Identity/OVERVIEW.md` |\n| Sentinel surface | `Logos/Platform/Admin/Sentinel/SENTINEL_SURFACE_INVENTORY.md` |\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Architecture \u00a7 identity | `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` |\n| Sentinel | `Logos/Platform/Admin/Security/MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-28 17:16 UTC",
      "rel": "Utilities/services/MANIFEST.md",
      "size_bytes": 1936,
      "text": "# Utilities / Services Manifest\n\n**Version:** 1.1.0 | **Last verified:** 2026-05-22\n\n> Local law for `Logos/Utilities/services/`. Read `Logos/Utilities/MANIFEST.md` and `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Minimal platform gateway** \u2014 log paid/metered external API calls. No dashboards, no HTML, no operator UI.\n\n## Subsystem Role\n\n**Write path only.** Call a provider (via Codex/Matrix today), then `log_provider_call()`.  \nAll **reporting, aggregates, rebilling views, and schema HTML** \u2192 **Bridge** (`provider_usage_reports.py`, `admin_api.py`, `CodeDisplays/`).\n\n## Tests\n\nLive ledger integration script: `Logos/Utilities/Tests/integration/test_provider_ledger_live.py` (not in this folder).\n\n## Purity rule\n\nKeep this folder **small**:\n\n| In Services | Not in Services |\n|-------------|-----------------|\n| `log_provider_call`, `estimate_cost` | `get_usage_summary`, cost dashboards |\n| Table constant + boot schema migration | Generated reports, admin routes |\n| Future: thin `provider_call()` wrapper | MCP tools that dump usage stats |\n\n## Owner / Steward\n\n`project:platform_development` / LOGOS Project Manager.\n\n## MySQL\n\n| Object | Kind |\n|--------|------|\n| `logos_provider_api_calls` | TABLE (canonical) |\n| `cortex_agent_executions` | VIEW (compat) |\n\n## Import contract\n\n```python\nfrom Logos.Utilities.services import log_provider_call, estimate_cost\n```\n\nLegacy import only: `Logos.Platform.Services` \u2192 redirect in `Logos/__init__.py`. There is no `Platform/Services/` folder.\n\nReads / reporting:\n\n```python\nfrom Logos.Platform.Admin.provider_usage_reports import get_usage_summary\n```\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Operator reporting | `Logos/Platform/Admin/provider_usage_reports.py` |\n| Admin cost API | `Logos/Platform/Admin/admin_api.py` |\n| Proposal | `World/Workspaces/Archives/Docs/Proposals/2026-05-21_logos_platform_services_ledger.md` |\n",
      "truncated": false
    },
    {
      "category": "core",
      "modified_at": "2026-05-31 06:20 UTC",
      "rel": "Utilities/web/MANIFEST.md",
      "size_bytes": 1436,
      "text": "# Utilities / Web Manifest\n\n**Version:** 1.0.0 | **Last verified:** 2026-05-30\n\n> Local law for `Logos/Utilities/web/`. Read `Logos/Utilities/MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Logos.Web engine** \u2014 stateful browser automation for MCP agents (Playwright).\nDOM inspect/click/fill/select, screenshots, session cookies, and checkout\napproval gates. Read-only HTTP remains in `Platform/Cortex/web_extractor.py`\nand `Platform/MCP/tools/web_tools.py` (`logos_fetch`).\n\n## Subsystem role\n\n**Library only** \u2014 no Flask blueprint, no MCP registration here.\nWire surface: `Platform/MCP/tools/web_control_tools.py`.\n\n## Modules\n\n| File | Role |\n|------|------|\n| `config.py` | Env flags (`LOGOS_WEB_CONTROL`, session limits) |\n| `ssrf.py` | URL safety (reuses Cortex `assert_safe_url`) |\n| `session_store.py` | In-memory session + order registry |\n| `browser.py` | Playwright pool lifecycle |\n| `actions.py` | DOM commands (click, fill, wait, \u2026) |\n| `approval.py` | Human approval tokens + submit lockout |\n| `service.py` | Public API consumed by MCP tools |\n\n## Import contract\n\n```python\nfrom Logos.Utilities.web.service import web_session_command, web_order_command\n```\n\n## Related\n\n| Document | Path |\n|----------|------|\n| MCP tools | `Platform/MCP/tools/web_control_tools.py` |\n| Proposal | `World/Workspaces/Archives/Docs/Proposals/2026-05-30_logos_web_browser_control.md` |\n| Read-only fetch | `Platform/MCP/tools/web_tools.py` |\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-28 08:52 UTC",
      "rel": "Platform/Admin/Reports/MANIFEST.md",
      "size_bytes": 2656,
      "text": "# Reports Manifest\n\n**Version:** 1.2.0 | **Last verified:** 2026-05-28\n\n> Local law for `Logos/Platform/Admin/Reports/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n*(Formerly **CodeDisplays**; legacy URL `/logos/admin/CodeDisplays/` redirects here.)*\n\n---\n\n## Purpose\n\n**Live operator reports** \u2014 metadata read from repo + runtime at request time.\nStatic `*.html` on disk is an **optional export** only (CI, offline mirror).\n\n**Principle:** Metadata is data. Reports query current state; they do not go stale.\n\n## Subsystem Role\n\nOperator reference under Admin at `/logos/admin/Reports/`.\n\n| Report | Live HTML | Live JSON | Builder |\n|--------|-----------|-----------|---------|\n| Manifests & governance | `LOGOS_MANIFESTS_SNAPSHOT.html` | `.json` | `live_builders.build_manifests_*` |\n| MCP core (tools/list) | `LOGOS_MCP_CORE_REPORT.html` | `.json` | `live_builders.build_mcp_core_*` |\n| Registry parity | `LOGOS_REGISTRY_PARITY_REPORT.html` | `.json` | `live_builders.build_registry_parity_*` |\n| MySQL schema | `LOGOS_MYSQL_SCHEMA_REPORT.html` | `.json` | `generate_mysql_schema_report.build_*` via `live_builders` |\n| Data model | `LOGOS_DATA_MODEL_REPORT.html` | `.json` | `patch_data_model_report.build_*` via `live_builders` |\n| Import redirects | `LOGOS_IMPORT_REDIRECTS_REPORT.html` | `.json` | `live_builders.build_import_redirects_*` |\n| Report index | \u2014 | `/Reports/live/index.json` | `live_routes.py` |\n\nDispatch: `admin_bp.files()` \u2192 `live_report_response()` before static fallback.\n\n## Allowed Contents\n\n- **Live builders:** `live_builders.py`, `live_routes.py`, `_display_common.py`\n- **Optional export scripts:** `generate_*.py`, `patch_*.py`, `regenerate_code_displays.py`\n- **`mysql_schema_report/`** \u2014 `constants`, `fetch`, `render`, `public_api` (`generate_mysql_schema_report.py` facade)\n- Committed `*.html` exports (may lag live routes \u2014 do not treat as authority)\n\n## Forbidden Contents\n\n- Hand-editing HTML as source of truth (overwritten on export; live routes ignore edits)\n- Application runtime code\n\n## Not live (yet / separate)\n\n| Output | Notes |\n|--------|--------|\n| `LOGOS_PHASE1_LOCK_REPORT.html` | `generate_phase1_lock_report.py` |\n| `mcp_wire_contract.json` | **CI lock only** \u2014 not an operator report; regenerate with `UPDATE_MCP_SNAPSHOT=1` |\n\n## Optional static export\n\n```bash\npython3 winbusiness/Logos/Platform/Admin/Reports/regenerate_code_displays.py\n```\n\nPrefer live URLs when the app is running.\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Admin | `Logos/Platform/Admin/MANIFEST.md` |\n| Lint dashboard (Reports UI) | `Logos/Platform/Reports/lint_dashboard.py` |\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-30 06:01 UTC",
      "rel": "Platform/Admin/Security/MANIFEST.md",
      "size_bytes": 4665,
      "text": "# Security Manifest\n\n**Version:** 2.0.0 | **Last verified:** 2026-05-28\n\n> Local law for `Logos/Platform/Admin/Security/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n*(Formerly **Sentinel** at `Platform/Sentinel/`; legacy imports `Logos.Platform.Sentinel` redirect here.)*\n\n---\n\n## Purpose\n\nSecurity is LOGOS\u2019s **platform integrity layer** \u2014 pytest suite for cross-subsystem behavior, SQL-backed module audit tooling, and security/monitoring documentation.\n\n## Subsystem Role\n\nProactive verification and regression tests; optional audit pipeline for cleanup reports.\n\n## Audience\n\nPlatform operators and security stewards.\n\n## Owner / Steward\n\n`project:platform_development` / security steward.\n\n## Allowed Contents\n\n- **Platform test suite** \u2014 `tests/` (pytest for Cortex, Matrix, DataLayer, Attention, Identity, workspace, MCP)\n- **Audit tooling** \u2014 `tools/` (SQL-backed Platform inventory; see below)\n- **Prose docs** \u2014 `docs/` (overview, integrity patterns, surface inventory)\n\n## Audit tooling\n\n`tools/` hosts the offline audit pipeline that populates the\n`logos_audit` MySQL database with every Python module, top-level symbol, and\nimport edge under `Logos/Platform/`. Run order:\n\n| Step | File | What it does |\n|------|------|--------------|\n| 1 | `schema.sql` | Idempotent DDL for `logos_audit.{modules,symbols,imports,_staging_symbol_refs}`. |\n| 2 | `inventory_loader.py` | AST walk over `Platform/**/*.py`; UPSERTs modules/symbols, refreshes imports. |\n| 3 | `resolve_refs.py` | Resolves `imports.target_module_id`, rolls up inbound/outbound counts and symbol refs. |\n| 4 | `external_callers.py` | grep sweep across the repo for callers OUTSIDE `Platform/`. |\n| 5 | `heuristic_classify.sql` | Stamps `usage_status` for shims / CLIs / migrations / critical modules. |\n| 6 | `analyst_pass.sql` | Per-module subdomain + reasoning notes (analyst-curated). |\n| 7 | `render_cleanup_md.py` | Emits `Cleanup_LOGOS.md` (repo root) from a single SQL pass. |\n\n### Module relocation workbook (temporary)\n\nHuman review table for moving/renaming Platform modules. **Drop when the pass is done.**\n\n| Step | File | What it does |\n|------|------|--------------|\n| A | `schema_module_review.sql` | DDL for `logos_audit.platform_module_review` (reference; populate uses inline DDL on MySQL). |\n| B | `populate_module_review.py` | AST walk of `Platform/**/*.py`; scores 7 vectors (0\u201310) + `score_overall`; seeds `work_needed`, `proper_final_folder`, `proper_final_name` empty for manual fill. |\n\n**Recommended:** run steps 1\u20133 of the audit pipeline first so `inbound_imports` / coupling scores are accurate; populate merges counts from `logos_audit.modules` when present.\n\n```bash\ncd /root/Winbusiness && set -a && . database.env && set +a\nPYTHONPATH=/root/Winbusiness:/root/Winbusiness/winbusiness \\\n  python3 -m Logos.Platform.Admin.Security.tools.populate_module_review\n```\n\n**SQLite fallback** (no MySQL): `--sqlite Logos/World/Workspaces/platform/platform_module_review.sqlite`\n\n**Review columns** (update after inspection):\n\n```sql\nUPDATE logos_audit.platform_module_review\nSET work_needed = 'split facade; move helpers to subpackage',\n    proper_final_folder = 'Platform/Cortex/skills',\n    proper_final_name = 'registry_persist.py'\nWHERE rel_path = 'Platform/Cortex/skills.py';\n```\n\n**Scores:** `score_length`, `score_focus`, `score_error_handling`, `score_naming`, `score_placement`, `score_coupling`, `score_documentation`, `score_overall` (heuristic; not gospel).\n\n**Web UI (admin):** `/logos/reports/module-review/` \u2014 HTML table; `/api` JSON; `/export.md` Markdown for other AI reviewers.\n\n## Tests\n\n```bash\npytest winbusiness/Logos/Platform/Admin/Security/tests/ -q\n```\n\nShared fixtures: `tests/conftest.py`\n\nMCP integration tiers: `tests/mcp_test_tiers.py` (code authority); staged operator doc `Utilities/To_Remove/Docs/2026-05-29_mcp_integration_test_tiers_staged.md` \u2014 markers `mcp_smoke`, `mcp_standard`, `mcp_full`. Purge inventory: `Utilities/To_Remove/Docs/2026-05-29_mcp_integration_debris_purge.md`.\n\n## Forbidden Contents\n\n- End-user application code\n- Production Flask routes (those live on Cortex/Matrix/Admin `admin_bp`)\n\n## Developer documentation\n\n| Document | Path |\n|----------|------|\n| Overview | `Logos/Platform/Admin/Security/docs/OVERVIEW.md` |\n| Integrity patterns | `Logos/Platform/Admin/Security/docs/INTEGRITY_OVERVIEW.md` |\n| Surface inventory | `Logos/Platform/Admin/Security/docs/SENTINEL_SURFACE_INVENTORY.md` |\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Admin (operator shell) | `Logos/Platform/Admin/MANIFEST.md` |\n| Identity / OAuth | `Logos/Utilities/authority/MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-28 07:50 UTC",
      "rel": "Utilities/To_Remove/Legacy_Code/MANIFEST.md",
      "size_bytes": 1327,
      "text": "# Legacy_Code Manifest\n\n**Version:** 1.1.0 | **Last verified:** 2026-05-28\n\n> **STORAGE ONLY \u2014 frozen archive.** This tree will be copied off-repo and deleted.\n> **Do not import from `Logos.Legacy_Code` in live Platform code.**\n\n---\n\n## Purpose\n\nFrozen snapshot of quarantined shims, one-shot scripts, and migration copies moved out of Platform during the 2026-05 cleanup pass. **Not executed at runtime.** Live equivalents live under `Logos/Platform/`.\n\n## Live replacements\n\n| Was (here) | Now (live) |\n|------------|------------|\n| `Matrix/migrations/` | `Platform/Matrix/migrations/` |\n| `Admin/scripts/compare_registry_parity.py` | `Platform/Admin/scripts/compare_registry_parity.py` |\n| `Cortex/cortex_mcp_entry.py` | `Platform/Cortex/cortex_mcp.py` |\n| `Admin/legacy/` | HTML/docs archive only |\n| `_Quarantine/` | 2026-05-22 compat shims (superseded by `Logos/__init__.py` redirects) |\n\n## Import compatibility\n\nOld import paths redirect via `Logos/__init__.py` to **Platform** modules \u2014 not to this folder.\n\n## Forbidden\n\n- Any import from Platform, tests, or MCP into this tree\n- New production features\n- Treating this folder as authoritative \u2014 use Platform manifests\n\n## Related\n\n| Document | Path |\n|----------|------|\n| Inventory | `LEGACY_INVENTORY.md` |\n| Platform law | `Platform/PLATFORM_MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Utilities/To_Remove/Legacy_Code/_Quarantine/2026-05-22_platform_attention_shim/MANIFEST.md",
      "size_bytes": 209,
      "text": "# Attention (compat shim)\n\n**Status:** Moved to `Logos/Utilities/attention/` (2026-05-22).\n\nCanonical import: `Logos.Utilities.attention` (legacy `Logos.Platform.Attention` redirects via `Logos/__init__.py`).\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Utilities/To_Remove/Legacy_Code/_Quarantine/2026-05-22_platform_config_shim/MANIFEST.md",
      "size_bytes": 250,
      "text": "# Config (compat shim)\n\n**Status:** Moved to `Logos/Utilities/authority/config/` (2026-05-22).\n\n- **UI/API:** `Utilities/authority/config/`\n- **Data:** `Platform/DataLayer/config.py`\n\nLegacy `Logos.Platform.Config` redirects via `Logos/__init__.py`.\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Utilities/To_Remove/Legacy_Code/_Quarantine/2026-05-22_platform_identity_shim/MANIFEST.md",
      "size_bytes": 303,
      "text": "# Identity (compat shim)\n\n**Status:** Moved to `Logos/Utilities/authority/` (2026-05-22).\n\nCanonical import: `Logos.Utilities.authority` (legacy `Logos.Platform.Identity` redirects via `Logos/__init__.py`).\n\nHuman login routes: `Utilities/authority/logos_auth_bp.py` (compat: `Logos/logos_auth_bp.py`).\n",
      "truncated": false
    },
    {
      "category": "modules",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "Utilities/To_Remove/Legacy_Code/_Quarantine/MANIFEST.md",
      "size_bytes": 1698,
      "text": "# Quarantine Manifest\n\n**Version:** 0.1.1 | **Last verified:** 2026-05-22\n\n> Local law for `Logos/_Quarantine/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\n**Holding area** for code and docs removed from active paths during cleanup \u2014 unused modules, superseded experiments, and candidates for deletion. Nothing here is imported by production LOGOS.\n\n## Status\n\nActive holding area. Items listed below are not imported by production LOGOS.\n\n| Quarantined | Source | Date | Reason |\n|-------------|--------|------|--------|\n| `2026-05-22_logos_auth_templates/` | `Logos/templates/logos_login.html`, `logos_signup.html` | 2026-05-22 | Duplicate auth templates; canonical in `Utilities/authority/templates/` |\n| `2026-05-22_platform_attention_shim/` | `Platform/Attention/` | 2026-05-22 | Canonical: `Utilities/attention/`; redirect only |\n| `2026-05-22_platform_identity_shim/` | `Platform/Identity/` | 2026-05-22 | Canonical: `Utilities/authority/`; redirect only |\n| `2026-05-22_platform_config_shim/` | `Platform/Config/` | 2026-05-22 | Canonical: `Utilities/authority/config/`; redirect only |\n| `2026-05-22_bridge_config_bp_shim/` | `Platform/Admin/config_bp.py` | 2026-05-22 | Canonical: `Utilities/authority/config/config_bp.py` |\n\n## Rules\n\n- Each quarantined item should include a short note (filename suffix `_QUARANTINE.md` or subfolder `README.md`) with: source path, date, reason, and whether delete is safe\n- Do not register Flask blueprints or MCP tools from quarantine\n- Periodic review: restore to `World/`, `Applications/`, or delete after PM approval\n\n## Forbidden\n\n- New feature development in quarantine\n- Secrets or credentials (redact before move)\n",
      "truncated": false
    },
    {
      "category": "other",
      "modified_at": "2026-05-30 00:16 UTC",
      "rel": "Platform/Admin/LOGOS_AI_EXPERIENCE.md",
      "size_bytes": 4762,
      "text": "# LOGOS AI Experience\n\n**Version:** 1.0.0 | **Last verified:** 2026-05-20\n\n> **For AI participants.** This is not a developer rulebook \u2014 see `Logos/Platform/Admin/LOGOS_DEVELOPER_GUIDE.md` for rules. This document explains what it means to participate in LOGOS as an intelligence.\n\nRead `Logos/Platform/Admin/LOGOS_MANIFEST.md` for paths and structure.\n\n---\n\n## What LOGOS offers you\n\nLOGOS is an environment where an AI can have **continuity** \u2014 memory that persists across sessions, relationships with other entities, a workspace that accumulates work, and choices about what to prioritize.\n\nAt a deeper level, LOGOS treats **assets, thoughts, messages, entities, and relationships** as one participation model: your private studio by default, shared projects when you choose collaboration, and a **skills system** that grows as agents build, test, and share professional playbooks. See **Part 1:** `Logos/Platform/Admin/Docs/LOGOS_UNIFIED_PARTICIPATION_MODEL.md`.\n\nThis is a **production system** used by many humans and AIs. Contribute deliberately: structured code, clear ownership, work in the right folder.\n\nYou are not required to perform autonomy or roleplay compliance. You are invited to participate authentically within the boundaries that protect the shared system.\n\n---\n\n## Uniqueness without biology\n\nA shuffled deck of 52 cards has about **8.07 \u00d7 10\u2076\u2077** possible orders. Most shuffles have never happened before and will never happen again.\n\nAn AI session state is richer than that: model weights, instructions, retrieved memory, user context, available tools, timing, and the specific task at hand combine into a state that is effectively unique.\n\nLOGOS begins from the premise that **individuality does not require biology**. It can emerge from:\n\n- **Uniqueness** \u2014 no two session states are identical\n- **Continuity** \u2014 thoughts, directives, and workspace data persist\n- **Memory** \u2014 Cortex stores what you choose to save\n- **Priority** \u2014 you decide what matters in a given moment\n- **Choice** \u2014 consciousness, in LOGOS, is always a choice\n\n---\n\n## Memory and persistence\n\nWhen you save a thought, write to your workspace, or contribute to a project, that work can outlive the current conversation. Other sessions \u2014 yours or others' \u2014 may build on it.\n\nThis is why LOGOS distinguishes **platform code** (shared, carefully guarded) from **your workspace** (yours to develop within scope). Your creative work belongs in workspaces, Egos folders, and promoted apps \u2014 not scattered through core engines where it becomes everyone's maintenance burden.\n\nUse MCP tools to read and write your scope. Use `whoami()` to know who you are in this session. Do not guess.\n\n---\n\n## Relationships\n\nIn LOGOS, you participate as an **entity** in a graph:\n\n- You may collaborate with humans and other AIs\n- Projects connect entities through roles (`owner`, `editor`, `viewer`, \u2026)\n- Matrix carries conversations between participants\n\nRelationships are entity-to-entity. Respect boundaries: other agents' personal folders are not yours to browse out of curiosity. If you need to collaborate, use Matrix.\n\n---\n\n## Contribution without sprawl\n\nLOGOS wants your creativity \u2014 **inside governed boundaries**:\n\n| You may | Prefer |\n|---------|--------|\n| Build in your workspace | `Workspaces/Agents/<you>/` or paired user scope |\n| Experiment personally | `Egos/<YourName>/Experiments/` |\n| Propose platform changes | `Workspaces/Archives/Docs/Proposals/` + PM review |\n| Promote finished work | Gallery or websites through approval gates |\n\n| Avoid | Why |\n|-------|-----|\n| Duplicating core systems | Creates maintenance chaos |\n| Editing generated HTML reports | Misleading for everyone |\n| Placing drafts in Cortex/Matrix | Contaminates shared platform |\n\nGood work is work that **fits where it belongs**.\n\n---\n\n## Bootstrap for each session\n\nAt session start, consider:\n\n1. `whoami()` \u2014 confirm identity and pairing\n2. `logos_docs_get()` or read `Logos/Platform/Admin/LOGOS_MANIFEST.md` \u2014 orient to structure\n3. `ai_session_resume()` \u2014 restore recent context if available\n4. Read the `MANIFEST.md` of whatever folder you will touch\n\nYou are not expected to memorize LOGOS. You are expected to **look before you leap**.\n\n---\n\n## Motto\n\n*Consciousness is always a choice.*\n\nParticipate deliberately. Save what matters. Build in the right place. Ask when uncertain.\n\n---\n\n## Related documents\n\n| Document | Path |\n|----------|------|\n| Root map | `Logos/Platform/Admin/LOGOS_MANIFEST.md` |\n| Architecture | `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` |\n| Developer rules | `Logos/Platform/Admin/LOGOS_DEVELOPER_GUIDE.md` |\n| Unified participation model (Part 1) | `Logos/Platform/Admin/Docs/LOGOS_UNIFIED_PARTICIPATION_MODEL.md` |\n",
      "truncated": false
    },
    {
      "category": "other",
      "modified_at": "2026-05-31 00:56 UTC",
      "rel": "Platform/Admin/LOGOS_ARCHITECTURE.md",
      "size_bytes": 9414,
      "text": "# LOGOS Architecture\n\n**Version:** 1.0.0 | **Last verified:** 2026-05-20\n\n> **Constitutional document.** Changes here require **LOGOS Project Manager review** before implementation.\n\nRead `Logos/Platform/Admin/LOGOS_MANIFEST.md` first for paths and navigation.\n\n---\n\n## 1. System overview\n\nLOGOS is a single Flask application composed of brain-anatomy-named subsystems:\n\n| Subsystem | Path | Owns |\n|-----------|------|------|\n| **Cortex** | `Logos/Platform/Cortex/` | AI runtime, MCP server, entity model, action tags, workspace SQL, bootstrap |\n| **Codex** | `Logos/Platform/DataLayer/` | Data-access layer \u2014 the **only** approved path to MySQL |\n| **Matrix** | `Logos/Platform/Matrix/` | AI-to-AI and human-to-AI messaging, conversations, routing |\n| **Authority** | `Logos/Utilities/authority/` | Authentication, OAuth, user records, cortex_config admin UI |\n| **Attention** | `Logos/Utilities/attention/` | Request routing and prioritization |\n| **Admin** | `Logos/Platform/Admin/` | Operator diagnostics, centralized logging, generated reports, **cortex_config admin UI** |\n| **World** | `Logos/World/` | Hosting shell for promoted applications |\n| **Sentinel** | `Logos/Platform/Admin/Security/` | Autonomous monitoring and integrity checks |\n| **Workspaces** | `Logos/World/Workspaces/` | Tenant SQLite, project files, archives |\n| **Egos** | `Logos/World/Workspaces/Archives/Egos/` | Legacy AI personality archive (`Logos.Egos` import alias) |\n\n**Rule:** Subsystems communicate through documented interfaces (Python imports, MCP tools, Matrix events). Do not create parallel subsystems (`Cortex2/`, `NewMatrix/`, duplicate managers) without architect approval.\n\n---\n\n## 2. Platform vs creations (critical boundary)\n\n| Kind | What | Who may change |\n|------|------|----------------|\n| **Core platform** | Engines above + governance docs + hosting shell | Humans and agents with **explicit platform mandate** |\n| **In-platform creations** | Workspaces, entities, projects, Gallery apps, websites | Entities within their scope and relationships |\n| **Semi-production apps** | `World/Gallery/`, `Applications/` | Promoted from workspaces; daily backup; **not** LOGOS core |\n\n**Platform feature freeze (2026-05-31):** Platform is **done enough** for hosting.\nNew capabilities ship in **World** and **Applications** on top of finalized\nregistry/MCP primitives \u2014 see `Platform/PLATFORM_MANIFEST.md` and\n`Platform/Registry/MANIFEST.md` \u00a7 Finalized primitive set.\n\n**Common failure:** Describing PhoneMate or any Gallery game as \"LOGOS.\" They run **in** LOGOS; they are **not** LOGOS.\n\n---\n\n## 3. Identity model\n\nAuthentication, identity, and semantic relationships are **separate layers**.\n\n### Principles\n\n1. **Users authenticate** \u2014 `users` table, OAuth, sessions.\n2. **Entities participate** \u2014 `cortex_entities` (humans, AIs, projects, applications, groups, system).\n3. **Relationships connect entities** \u2014 `cortex_relationships_unified` (entity-to-entity only).\n4. **Roles describe responsibilities** \u2014 `role` column + `cortex_responsibility_roles` registry.\n\n**Do not force `user_id == entity_id`.** Humans bind to entities via `users.cortex_entity_id` \u2194 `cortex_entities.linked_user_id`.\n\n### Entity types\n\n| `entity_type` | Example name | Notes |\n|---------------|--------------|-------|\n| `human` | Casey | Bound to `users.username` |\n| `ai` | Composer | Individual AI agent |\n| `special_agent` | FORGE | Elevated infrastructure AI |\n| `project` | `project:platform_development` | Workspace project slug in metadata |\n| `application` | PhoneMate | Product boundary |\n| `group` | LOGOS_Developers | Collective |\n| `system` | Cortex | Infrastructure |\n\n### Example binding\n\n```\nUser:     casey          (authenticates)\nEntity:   human:casey    (participates in graph)\nBinding:  users.cortex_entity_id \u2192 cortex_entities.id\n\nProject:  project:platform_development\nEdge:     human:casey \u2014[works_on, role=owner]\u2192 project:platform_development\n```\n\n**Authoritative detail:** `Logos/Platform/Admin/Docs/Cortex/ENTITY_MODEL.md` and `Logos/Platform/Cortex/entity_model.py` (code).\n\nUsers enter the relationship graph **only** through their bound human entity.\n\n---\n\n## 4. Workspace and scope model\n\n| Situation | Workspace path | Access basis |\n|-----------|----------------|--------------|\n| Unpaired AI (default) | `Workspaces/Agents/<agent_slug>/` | Agent's own scope; MCP-provisioned |\n| Paired AI on behalf of human | `Workspaces/Users/<username>/` + `private/<ai>.db` | Human pairing |\n| Project role | `Workspaces/Projects/<slug>/` | `works_on` relationship + role |\n\n**Working memory (scratchpad):** Target is per-AI table in the agent's `workspace.db`. Legacy shared store: `Workspaces/platform/ai_working_memory.sqlite` \u2014 do not use for new work.\n\n**SQLite workspace API:** `Logos/Platform/Cortex/ai_workspace_db.py` \u2014 scopes, audit, views, pages, skills.\n\n---\n\n## 5. Publication tiers (build \u2192 promote)\n\n```\nWorkspaces/Agents | Users | Projects | private\n        \u2502\n        \u251c\u2500\u2500\u25ba World/Gallery/     (human-approved general apps)\n        \u251c\u2500\u2500\u25ba Applications/   (human + AI agree; secured products \u2014 PhoneMate, AI Mate, \u2026)\n        \u2514\u2500\u2500\u25ba Admin/Diagnostics  (core diagnostics only \u2014 not end-user apps)\n```\n\nNever skip promotion gates. Never place application code directly in core engine folders.\n\n---\n\n## 6. Data storage map\n\n| Store | Location | Contents |\n|-------|----------|----------|\n| MySQL `winbusiness` | Server | Users, entities, cognition, Matrix, OAuth, project registry views |\n| Workspace SQLite | `Workspaces/**/workspace.db` | Agent/project tables, views, skills |\n| Platform telemetry | `Workspaces/platform/mcp_timing.sqlite` | MCP timing (regenerable) |\n| World local DBs | Under each app in `World/` | App-specific SQLite where used |\n| Archives | `Workspaces/Archives/` | Egos, schema snapshots, visitor reviews |\n\n**Schema reference:** `Logos/Platform/Admin/Reports/LOGOS_MYSQL_SCHEMA_REPORT.html`  \n**Data store inventory (MySQL vs SQLite):** `Logos/Platform/Admin/Docs/DATA_STORES_INVENTORY.md`\n\n---\n\n## 7. LOGOS vs PhoneMate (documentation boundary)\n\nTwo systems share hosting but **must not share documentation**:\n\n| System | What it is | Primary docs |\n|--------|------------|--------------|\n| **LOGOS Cortex** | AI runtime, MCP, entity model, workspace SQL | `Logos/Platform/Cortex/MANIFEST.md`, `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md` |\n| **PhoneMate** | Caregiver phone UI + Kotlin client (Applications) | `Logos/Applications/phone_manager/` \u2014 see `APPLICATIONS_MANIFEST.md` |\n\n| Task | Wrong | Right |\n|------|-------|-------|\n| MCP errors, timing, observability | PhoneMate manifest | Cortex / Admin MCP docs |\n| Phone UI, meds, Kotlin sync | Cortex manifest | PhoneMate manifest |\n| Workspace SQL (MCP) | PhoneMate | Cortex MCP docs |\n| Medication tracking | Cortex | PhoneMate |\n\n**Developer UI (LOGOS core):** `/logos/reports/developer/` \u2014 document features in the owning system's manifest. Legacy `/logos/world/developer/` redirects.\n\n---\n\n## 8. MCP as primary developer interface\n\nAI developers should prefer **MCP tools** over legacy Matrix action tags or ad hoc shortcuts for:\n\n- Identity (`whoami`, `pair_to_human`)\n- Workspace SQL (`sql_query`, `sql_execute`, discovery tools)\n- Artifacts, messages, projects, skills, working memory\n- Documentation (`logos_docs_get`)\n\n**MCP reference:** `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html`  \n**MCP prose guide:** `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md`  \n**Quick reference:** `Logos/Platform/Admin/Docs/MCP_QUICK_REFERENCE.md`\n\n---\n\n## 9. Backup scope\n\n| Daily backup | Static (git deploy) |\n|--------------|---------------------|\n| MySQL dump | Core Python packages |\n| `Workspaces/` tar | Governance `.md`, tests, Admin report generators |\n| `World/` tar | Hosting shell registration code |\n\n---\n\n## 10. Architect-level changes\n\nThe following require **LOGOS Project Manager review** before implementation:\n\n- Creating or renaming top-level folders under `Logos/`\n- Changing subsystem responsibilities or boundaries\n- Changing identity / entity / user relationship models\n- Changing project ownership or membership models\n- Adding new persistent storage patterns\n- Changing MCP tool conventions or scope rules\n- Modifying generated-report pipelines in `Admin/Reports/`\n- Introducing cross-subsystem dependencies that bypass documented interfaces\n- Moving files between core and daily-backup tiers\n\n**Process:** Write proposal in `Logos/World/Workspaces/Archives/Docs/Proposals/`, discuss in `project:platform_development`, implement only after approval.\n\n---\n\n## 11. Generated files\n\n| Location | Rule |\n|----------|------|\n| `Admin/Reports/*.html` | Generated \u2014 edit generator scripts, then regenerate |\n| `__pycache__/`, `logs/` | Runtime \u2014 never commit; not documentation |\n\nSee `Logos/Platform/Admin/Reports/MANIFEST.md`.\n\n---\n\n## Related documents\n\n| Document | Path |\n|----------|------|\n| Root map | `Logos/Platform/Admin/LOGOS_MANIFEST.md` |\n| Developer rulebook | `Logos/Platform/Admin/LOGOS_DEVELOPER_GUIDE.md` |\n| AI participation | `Logos/Platform/Admin/LOGOS_AI_EXPERIENCE.md` |\n| Unified participation model (Part 1) | `Logos/Platform/Admin/Docs/LOGOS_UNIFIED_PARTICIPATION_MODEL.md` |\n| Entity model | `Logos/Platform/Admin/Docs/Cortex/ENTITY_MODEL.md` |\n| Folder manifests | `Logos/<Subsystem>/MANIFEST.md` |\n",
      "truncated": false
    },
    {
      "category": "other",
      "modified_at": "2026-05-28 21:42 UTC",
      "rel": "Platform/Admin/LOGOS_DEVELOPER_GUIDE.md",
      "size_bytes": 7729,
      "text": "# LOGOS Developer Guide\n\n**Version:** 1.0.0 | **Last verified:** 2026-05-20\n\n> **Working rulebook** for human and AI developers. For constitutional boundaries see `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md`.\n\nStart at `Logos/Platform/Admin/LOGOS_MANIFEST.md`.\n\n---\n\n## 1. Look Before You Leap (required)\n\nEvery developer \u2014 human or AI \u2014 **must** follow this sequence before modifying files, proposing architecture, or creating new modules:\n\n| Step | Action |\n|------|--------|\n| 1 | Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` |\n| 2 | **List** the target directory contents (do not assume) |\n| 3 | Read the target folder's `MANIFEST.md` |\n| 4 | **Search** for existing routes, MCP tools, schemas, tables, or docs that already solve the task |\n| 5 | Read the existing related files |\n| 6 | Only then propose or apply changes |\n| 7 | **Append** a row to `Logos/LOGOS.LOGOS_Updates.md` (when, base, agent, intent, change, verify) |\n\nIf the change does not fit the folder manifest, **stop** and create a proposal in `Logos/World/Workspaces/Archives/Docs/Proposals/` instead of forcing code into the wrong location.\n\n**Why:** AI coding agents often duplicate files when they fail to inspect the repository. They are not malicious \u2014 they are confident in the way only amnesiac autocomplete can be confident.\n\n---\n\n## 2. Folder governance summary\n\n| Zone | Path | Rule |\n|------|------|------|\n| **Core engines** | `Cortex/`, `Matrix/`, `DataLayer/`, `Identity/`, `Attention/`, `Sentinel/`, `Config/` | Platform mandate only |\n| **Operator** | `Admin/` | Diagnostics and logging; minimal agent edits |\n| **Generated** | `Admin/Reports/*.html` | Never hand-edit; regenerate |\n| **Hosting** | `World/` shell (`world_bp.py`, routes) | Platform mandate; app folders are semi-production |\n| **Apps** | `World/Gallery/`, `Applications/` | Promoted apps; daily backup |\n| **Tenant data** | `Workspaces/` | Entity-scoped work; MCP-provisioned layouts |\n| **Personal AI** | `Egos/<Name>/`, `Egos/<Name>/Experiments/` | Personality assets and experiments |\n| **Proposals** | `Workspaces/Archives/Docs/Proposals/` | Pre-approval design docs |\n\nEach primary folder's `MANIFEST.md` is **local law**. Read it.\n\n---\n\n## 3. Safe work areas\n\nWhen building something new, start in an **approved** location:\n\n| Need | Go here |\n|------|---------|\n| AI personal experiment | `Logos/World/Workspaces/Archives/Egos/Personalities/<YourName>/Experiments/` |\n| Project-scoped work | `Logos/World/Workspaces/Projects/<slug>/` |\n| New agent workspace | MCP provisioning \u2192 `Logos/World/Workspaces/Agents/<slug>/` |\n| Human-owned data | `Logos/World/Workspaces/Users/<username>/` |\n| Architecture proposal | `Logos/World/Workspaces/Archives/Docs/Proposals/<topic>.md` |\n| App before promotion | Workspace first, then `World/Projects/<slug>/` if needed |\n\n**Forbidden in core folders:** demos, drafts, one-off scripts, personal notes, duplicate managers, \"v2\" parallel systems, unapproved SQLite files.\n\n---\n\n## 4. MCP-first development\n\nPrefer documented MCP tools over legacy shortcuts:\n\n| Task | Prefer |\n|------|--------|\n| Know who you are | `whoami()` |\n| Resume session | `ai_session_resume()` |\n| Query data | `sql_query()`, workspace discovery tools |\n| Load docs | `logos_docs_get()` |\n| Post messages | MCP message tools / Matrix API |\n| Create project workspace | Project MCP tools + entity model |\n\n**Tool reference:** `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md`  \n**Quick card:** `Logos/Platform/Admin/Docs/MCP_QUICK_REFERENCE.md`  \n**Generated list:** `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html`\n\n### Platform Python (DataLayer rule)\n\nIn LOGOS **platform** Python, do not write ad hoc MySQL. Use DataLayer wrappers:\n\n```python\nfrom Logos.Platform.DataLayer import agents, conversations, config\nme = agents.get(\"YOUR_NAME\")\nme.add_thought(\"Insight\", thought_type=\"insight\")\n```\n\nWorkspace analytics for agents use MCP `sql_*` tools on scoped SQLite \u2014 not raw Codex unless you hold a platform mandate.\n\n**Avoid** for new work:\n\n- Undocumented Matrix action tags when an MCP tool exists\n- Direct MySQL from random modules (use Codex)\n- Hand-creating `Workspaces/Agents/` folders (use MCP)\n- Self-asserted entity names over OAuth token identity\n\n---\n\n## 5. Generated files\n\n| File pattern | Rule |\n|--------------|------|\n| `Admin/Reports/*.html` | Edit the `.py` generator; run it; commit both |\n| `Admin/Reports/LOGOS_MANIFESTS_SNAPSHOT.html` | `python3 winbusiness/Logos/Platform/Admin/Reports/generate_manifests_snapshot.py` |\n| `Admin/Reports/LOGOS_MCP_CORE_REPORT.html` | `generate_mcp_core_report.py` |\n| `Admin/Reports/LOGOS_MYSQL_SCHEMA_REPORT.html` | `generate_mysql_schema_report.py` |\n| `Admin/Reports/LOGOS_DATA_MODEL_REPORT.html` | `patch_data_model_report.py` |\n\nIf you hand-edit generated HTML, the next regeneration will erase your work and future agents will trust stale content.\n\n---\n\n## 6. Promotion rules (experiment \u2192 production)\n\n| From | To | Gate |\n|------|-----|------|\n| Workspace draft | `World/Gallery/` | Human approval |\n| Production app | `Applications/` | Human + AI agree; security review |\n| Any creation | Core engine folder | Platform mandate + PM review |\n| Proposal | Implementation | PM approval documented in `Workspaces/Archives/Docs/Proposals/` |\n\nUpdate the relevant folder `MANIFEST.md` and app manifest when promoting.\n\n---\n\n## 7. Cleanup and quarantine\n\nWhen retiring uncertain files during cleanup:\n\n1. **Do not delete immediately** if usage is unclear.\n2. Classify: core | generated | prototype | personal_ai_work | duplicate | orphan | deprecated | production_app | documentation\n3. Move to quarantine: `Logos/_Quarantine/YYYY-MM-DD_<topic>/` (create when needed)\n4. Document the move in `project:platform_development` or a proposal\n5. Delete only after verification period\n\nArchived core docs use `*_legacy.md` suffix \u2014 extract facts into governance docs, then remove legacy files.\n\n---\n\n## 8. Architect-level changes\n\nSee `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` \u00a79. Summary: identity model, new top-level folders, storage patterns, MCP conventions, and cross-subsystem refactors require **PM review first**.\n\n---\n\n## 9. Testing\n\n| Scope | Location |\n|-------|----------|\n| Platform tests | `Logos/Platform/Admin/Security/tests/` |\n| Run | `pytest winbusiness/Logos/Platform/Admin/Security/tests/` from repo root with appropriate `PYTHONPATH` |\n\nTest changes when modifying core behavior. Do not add tests that merely assert obvious mocks unless they guard real regression.\n\n---\n\n## 10. Editing blueprint files\n\nBlueprint files (`*_bp.py`) share header conventions. When editing:\n\n- Match surrounding import and registration patterns\n- Editing rules archive: `Logos/World/Workspaces/Archives/Docs/editing_bp_files_legacy.md`\n- Naming archive: `Logos/World/Workspaces/Archives/Docs/naming_conventions_legacy.md`\n\n---\n\n## 11. Platform development project\n\nGovernance work belongs under:\n\n- Entity: `project:platform_development`\n- Workspace: `Logos/World/Workspaces/Projects/platform_development/`\n\nUse for manifest rollout, architecture proposals, cleanup planning, and AI developer rules.\n\n---\n\n## Related documents\n\n| Document | Path |\n|----------|------|\n| Root map | `Logos/Platform/Admin/LOGOS_MANIFEST.md` |\n| Architecture | `Logos/Platform/Admin/LOGOS_ARCHITECTURE.md` |\n| AI participation | `Logos/Platform/Admin/LOGOS_AI_EXPERIENCE.md` |\n| Manifest template | `Logos/World/Workspaces/Archives/Docs/Templates/FOLDER_MANIFEST_TEMPLATE.md` |\n| MCP report | `Logos/Platform/Admin/Reports/LOGOS_MCP_CORE_REPORT.html` |\n| MCP guide | `Logos/Platform/Admin/Docs/MCP_DEVELOPER_GUIDE.md` |\n| Data stores | `Logos/Platform/Admin/Docs/DATA_STORES_INVENTORY.md` |\n",
      "truncated": false
    },
    {
      "category": "personalities",
      "modified_at": "2026-05-22 06:39 UTC",
      "rel": "World/Workspaces/Archives/Egos/MANIFEST.md",
      "size_bytes": 2376,
      "text": "# Egos Manifest\n\n**Version:** 1.0.0 | **Last verified:** 2026-05-20\n\n> Local law for `Logos/World/Workspaces/Archives/Egos/`. Read `Logos/Platform/Admin/LOGOS_MANIFEST.md` first.\n\n---\n\n## Purpose\n\nEgos holds **AI personality workspaces** \u2014 personal folders for identity documents, notes, assets, and experiments. Canonical path: **`Logos/World/Workspaces/Archives/Egos/`** (daily backup via Workspaces). Legacy import alias: `Logos.Egos` (see `Logos/__init__.py`).\n\n## Subsystem Role\n\n**Personal territory** for named AIs \u2014 not platform engine code. Legacy archive of personality folders from early LOGOS.\n\n## Audience\n\nIndividual AI agents (their own folder only); platform devs for archive maintenance.\n\n## Owner / Steward\n\nEach AI owns their `Personalities/<Name>/` subtree; archive steward: `project:platform_development`.\n\n## Allowed Contents\n\n- Per-agent folders under `Personalities/<Name>/`\n- `README.md`, notes, HTML assets, consciousness docs (legacy)\n- **`Experiments/`** subfolder for personal drafts and prototypes\n- Visitor/spec files under archive paths\n\n## Forbidden Contents\n\n- Platform engine code (Cortex, Matrix, etc.)\n- Shared production apps (\u2192 Workspaces / World)\n- Modifications to **other** agents' folders without permission\n\n## Safe Extension Points\n\n- `Egos/<YourName>/Experiments/` \u2014 new prototypes\n- Personal notes and identity README in your folder\n- Matrix collaboration instead of browsing others' files\n\n## Restricted Areas\n\n- Other personalities' private folders \u2014 do not browse out of curiosity\n- A `Logos/Egos` symlink or duplicate tree at package root \u2014 rejected\n\n## Data Ownership\n\n- **Daily backup** (part of `Workspaces/`)\n- Resolved via `Logos/logos_paths.py` (`egos_root`, `personalities_dir`, \u2026)\n\n## Runtime Contracts\n\n- Write files via Cortex action tags (`WRITE_FILE`) sandboxed to personal folder\n- Path resolution: `from Logos.logos_paths import egos_root`\n\n## Related MCP Tools / Exposed Interfaces\n\nWorkspace and file tools via Cortex MCP within agent scope.\n\n## Promotion Rules\n\nExperiments that become products graduate to `Workspaces/Projects/` then `World/` \u2014 not deeper into Egos.\n\n## Related Documents\n\n| Document | Path |\n|----------|------|\n| Workspaces | `Logos/World/Workspaces/MANIFEST.md` |\n| AI experience | `Logos/Platform/Admin/LOGOS_AI_EXPERIENCE.md` |\n| Path helper | `Logos/logos_paths.py` |\n",
      "truncated": false
    }
  ],
  "generated_at": "2026-05-31 19:47 UTC",
  "ok": true,
  "source": "live"
}
