{
    "chapters": [
        {
            "number": "1",
            "title": "Introduction",
            "anchor": "c1",
            "slug": "introduction",
            "url": "/guide/introduction",
            "sections": [
                {
                    "number": "1.1",
                    "title": "Philosophy",
                    "anchor": "c1.1"
                },
                {
                    "number": "1.2",
                    "title": "Installation",
                    "anchor": "c1.2"
                },
                {
                    "number": "1.3",
                    "title": "Project structure",
                    "anchor": "c1.3"
                },
                {
                    "number": "1.4",
                    "title": "Entrypoint",
                    "anchor": "c1.4"
                },
                {
                    "number": "1.5",
                    "title": "Build",
                    "anchor": "c1.5"
                },
                {
                    "number": "1.6",
                    "title": "Web server",
                    "anchor": "c1.6"
                }
            ]
        },
        {
            "number": "2",
            "title": "Configuration",
            "anchor": "c2",
            "slug": "configuration",
            "url": "/guide/configuration",
            "sections": [
                {
                    "number": "2.1",
                    "title": "Minimal configuration",
                    "anchor": "c2.1"
                },
                {
                    "number": "2.2",
                    "title": "Resources",
                    "anchor": "c2.2"
                },
                {
                    "number": "2.3",
                    "title": "Dev exclude",
                    "anchor": "c2.3"
                },
                {
                    "number": "2.4",
                    "title": "Release",
                    "anchor": "c2.4"
                },
                {
                    "number": "2.5",
                    "title": "Paths",
                    "anchor": "c2.5"
                },
                {
                    "number": "2.6",
                    "title": "Namespaces and bundles",
                    "anchor": "c2.6"
                },
                {
                    "number": "2.7",
                    "title": "Generated output",
                    "anchor": "c2.7"
                },
                {
                    "number": "2.8",
                    "title": "Credentials",
                    "anchor": "c2.8"
                }
            ]
        },
        {
            "number": "3",
            "title": "Runtime config",
            "anchor": "c3",
            "slug": "runtime-config",
            "url": "/guide/runtime-config",
            "sections": [
                {
                    "number": "3.1",
                    "title": "Identity and host",
                    "anchor": "c3.1"
                },
                {
                    "number": "3.2",
                    "title": "Modes: `build`, `debug`, `auth`, `thread`",
                    "anchor": "c3.2"
                },
                {
                    "number": "3.3",
                    "title": "Paths",
                    "anchor": "c3.3"
                },
                {
                    "number": "3.4",
                    "title": "Control Center and WebSocket",
                    "anchor": "c3.4"
                },
                {
                    "number": "3.5",
                    "title": "Composer autoload",
                    "anchor": "c3.5"
                },
                {
                    "number": "3.6",
                    "title": "Trace and CLI",
                    "anchor": "c3.6"
                },
                {
                    "number": "3.7",
                    "title": "Worker mode rules",
                    "anchor": "c3.7"
                },
                {
                    "number": "3.8",
                    "title": "Custom keys: your own constants",
                    "anchor": "c3.8"
                },
                {
                    "number": "3.9",
                    "title": "Example: dev and release side by side",
                    "anchor": "c3.9"
                },
                {
                    "number": "3.10",
                    "title": "The request and response objects",
                    "anchor": "c3.10"
                }
            ]
        },
        {
            "number": "4",
            "title": "Syntax & Structure",
            "anchor": "c4",
            "slug": "language",
            "url": "/guide/language",
            "sections": [
                {
                    "number": "4.1",
                    "title": "File structure",
                    "anchor": "c4.1"
                },
                {
                    "number": "4.2",
                    "title": "Statements and the line parser",
                    "anchor": "c4.2"
                },
                {
                    "number": "4.3",
                    "title": "Controller code",
                    "anchor": "c4.3"
                },
                {
                    "number": "4.4",
                    "title": "Instances",
                    "anchor": "c4.4"
                },
                {
                    "number": "4.5",
                    "title": "Props",
                    "anchor": "c4.5"
                },
                {
                    "number": "4.6",
                    "title": "Methods",
                    "anchor": "c4.6"
                },
                {
                    "number": "4.7",
                    "title": "Functions",
                    "anchor": "c4.7"
                },
                {
                    "number": "4.8",
                    "title": "Statics",
                    "anchor": "c4.8"
                },
                {
                    "number": "4.9",
                    "title": "Strings and operators",
                    "anchor": "c4.9"
                },
                {
                    "number": "4.10",
                    "title": "Named arguments",
                    "anchor": "c4.10"
                },
                {
                    "number": "4.11",
                    "title": "Error handling and JSON responses",
                    "anchor": "c4.11"
                }
            ]
        },
        {
            "number": "5",
            "title": "Routing",
            "anchor": "c5",
            "slug": "routing",
            "url": "/guide/routing",
            "sections": [
                {
                    "number": "5.1",
                    "title": "Basic form",
                    "anchor": "c5.1"
                },
                {
                    "number": "5.2",
                    "title": "sync / async / both",
                    "anchor": "c5.2"
                },
                {
                    "number": "5.3",
                    "title": "Variables",
                    "anchor": "c5.3"
                },
                {
                    "number": "5.4",
                    "title": "Payload check with `@`",
                    "anchor": "c5.4"
                },
                {
                    "number": "5.5",
                    "title": "Targets",
                    "anchor": "c5.5"
                },
                {
                    "number": "5.6",
                    "title": "Activating the router",
                    "anchor": "c5.6"
                },
                {
                    "number": "5.7",
                    "title": "Recommended structure",
                    "anchor": "c5.7"
                }
            ]
        },
        {
            "number": "6",
            "title": "Views",
            "anchor": "c6",
            "slug": "views",
            "url": "/guide/views",
            "sections": [
                {
                    "number": "6.1",
                    "title": "Declaration",
                    "anchor": "c6.1"
                },
                {
                    "number": "6.2",
                    "title": "Multiline blocks",
                    "anchor": "c6.2"
                },
                {
                    "number": "6.3",
                    "title": "HTML shorthand",
                    "anchor": "c6.3"
                },
                {
                    "number": "6.4",
                    "title": "Text and variables",
                    "anchor": "c6.4"
                },
                {
                    "number": "6.5",
                    "title": "Translatable view text",
                    "anchor": "c6.5"
                },
                {
                    "number": "6.6",
                    "title": "Attributes",
                    "anchor": "c6.6"
                },
                {
                    "number": "6.7",
                    "title": "Control flow",
                    "anchor": "c6.7"
                },
                {
                    "number": "6.8",
                    "title": "Rendering",
                    "anchor": "c6.8"
                },
                {
                    "number": "6.9",
                    "title": "Apply commands",
                    "anchor": "c6.9"
                }
            ]
        },
        {
            "number": "7",
            "title": "CSS",
            "anchor": "c7",
            "slug": "css",
            "url": "/guide/css",
            "sections": [
                {
                    "number": "7.1",
                    "title": "`<style>` block",
                    "anchor": "c7.1"
                },
                {
                    "number": "7.2",
                    "title": "Chains & groups",
                    "anchor": "c7.2"
                },
                {
                    "number": "7.3",
                    "title": "Media queries inside a selector",
                    "anchor": "c7.3"
                },
                {
                    "number": "7.4",
                    "title": "Variables",
                    "anchor": "c7.4"
                },
                {
                    "number": "7.5",
                    "title": "Dynamic variables",
                    "anchor": "c7.5"
                },
                {
                    "number": "7.6",
                    "title": "Full example",
                    "anchor": "c7.6"
                },
                {
                    "number": "7.7",
                    "title": "Best practices",
                    "anchor": "c7.7"
                },
                {
                    "number": "7.8",
                    "title": "Icon sprites",
                    "anchor": "c7.8"
                }
            ]
        },
        {
            "number": "8",
            "title": "ORM",
            "anchor": "c8",
            "slug": "orm",
            "url": "/guide/orm",
            "sections": [
                {
                    "number": "8.1",
                    "title": "Basics",
                    "anchor": "c8.1"
                },
                {
                    "number": "8.2",
                    "title": "Defining models",
                    "anchor": "c8.2"
                },
                {
                    "number": "8.3",
                    "title": "CRUD",
                    "anchor": "c8.3"
                },
                {
                    "number": "8.4",
                    "title": "Relational navigation",
                    "anchor": "c8.4"
                },
                {
                    "number": "8.5",
                    "title": "Instance dynamics",
                    "anchor": "c8.5"
                },
                {
                    "number": "8.6",
                    "title": "Filtering and queries",
                    "anchor": "c8.6"
                },
                {
                    "number": "8.7",
                    "title": "Caching and performance",
                    "anchor": "c8.7"
                },
                {
                    "number": "8.8",
                    "title": "Multiple engines",
                    "anchor": "c8.8"
                },
                {
                    "number": "8.9",
                    "title": "Opt-in features: audit, validation, custom PK",
                    "anchor": "c8.9"
                },
                {
                    "number": "8.10",
                    "title": "Function overview",
                    "anchor": "c8.10"
                },
                {
                    "number": "8.11",
                    "title": "Best practices",
                    "anchor": "c8.11"
                }
            ]
        },
        {
            "number": "9",
            "title": "Instance Management",
            "anchor": "c9",
            "slug": "instances",
            "url": "/guide/instances",
            "sections": [
                {
                    "number": "9.1",
                    "title": "The basics",
                    "anchor": "c9.1"
                },
                {
                    "number": "9.2",
                    "title": "Controller code",
                    "anchor": "c9.2"
                },
                {
                    "number": "9.3",
                    "title": "The role of `__handle()`: instance identity",
                    "anchor": "c9.3"
                },
                {
                    "number": "9.4",
                    "title": "Lazy initialization",
                    "anchor": "c9.4"
                },
                {
                    "number": "9.5",
                    "title": "The obj base class: powertools",
                    "anchor": "c9.5"
                },
                {
                    "number": "9.6",
                    "title": "Best practices",
                    "anchor": "c9.6"
                }
            ]
        },
        {
            "number": "10",
            "title": "Tooling & CLI",
            "anchor": "c10",
            "slug": "tooling",
            "url": "/guide/tooling",
            "sections": [
                {
                    "number": "10.1",
                    "title": "Build commands",
                    "anchor": "c10.1"
                },
                {
                    "number": "10.2",
                    "title": "Reflect commands",
                    "anchor": "c10.2"
                },
                {
                    "number": "10.3",
                    "title": "General CLI dispatch",
                    "anchor": "c10.3"
                },
                {
                    "number": "10.4",
                    "title": "Debug helpers",
                    "anchor": "c10.4"
                },
                {
                    "number": "10.5",
                    "title": "Workflow",
                    "anchor": "c10.5"
                },
                {
                    "number": "10.6",
                    "title": "Dev, stage and production",
                    "anchor": "c10.6"
                },
                {
                    "number": "10.7",
                    "title": "HEAD and async",
                    "anchor": "c10.7"
                }
            ]
        },
        {
            "number": "11",
            "title": "Translations",
            "anchor": "c11",
            "slug": "translations",
            "url": "/guide/translations",
            "sections": [
                {
                    "number": "11.1",
                    "title": "View shorthand",
                    "anchor": "c11.1"
                },
                {
                    "number": "11.2",
                    "title": "Helpers in code",
                    "anchor": "c11.2"
                },
                {
                    "number": "11.3",
                    "title": "Active language",
                    "anchor": "c11.3"
                },
                {
                    "number": "11.4",
                    "title": "Translation cache",
                    "anchor": "c11.4"
                },
                {
                    "number": "11.5",
                    "title": "Translation instructions",
                    "anchor": "c11.5"
                },
                {
                    "number": "11.6",
                    "title": "Best practices",
                    "anchor": "c11.6"
                }
            ]
        },
        {
            "number": "12",
            "title": "Advanced",
            "anchor": "c12",
            "slug": "advanced",
            "url": "/guide/advanced",
            "sections": [
                {
                    "number": "12.1",
                    "title": "App code and runtime resources",
                    "anchor": "c12.1"
                },
                {
                    "number": "12.2",
                    "title": "Multiple source paths",
                    "anchor": "c12.2"
                },
                {
                    "number": "12.3",
                    "title": "Integrating with existing PHP",
                    "anchor": "c12.3"
                },
                {
                    "number": "12.4",
                    "title": "Security and visitors",
                    "anchor": "c12.4"
                },
                {
                    "number": "12.5",
                    "title": "Cookiewall: GDPR consent",
                    "anchor": "c12.5"
                },
                {
                    "number": "12.5.1",
                    "title": "Captcha",
                    "anchor": "c12.5.1"
                },
                {
                    "number": "12.5.2",
                    "title": "Social login",
                    "anchor": "c12.5.2"
                },
                {
                    "number": "12.6",
                    "title": "Worker mode",
                    "anchor": "c12.6"
                },
                {
                    "number": "12.7",
                    "title": "Modifying resources without forking",
                    "anchor": "c12.7"
                },
                {
                    "number": "12.8",
                    "title": "File metadata: the complete @ reference",
                    "anchor": "c12.8"
                },
                {
                    "number": "12.9",
                    "title": "Best practices",
                    "anchor": "c12.9"
                }
            ]
        },
        {
            "number": "13",
            "title": "Appendices",
            "anchor": "c13",
            "slug": "appendices",
            "url": "/guide/appendices",
            "sections": [
                {
                    "number": "13.1",
                    "title": "Basic route with a view",
                    "anchor": "c13.1"
                },
                {
                    "number": "13.2",
                    "title": "Route with a variable",
                    "anchor": "c13.2"
                },
                {
                    "number": "13.3",
                    "title": "Async form",
                    "anchor": "c13.3"
                },
                {
                    "number": "13.4",
                    "title": "Minimal app.json",
                    "anchor": "c13.4"
                },
                {
                    "number": "13.5",
                    "title": "Dev entrypoint",
                    "anchor": "c13.5"
                },
                {
                    "number": "13.6",
                    "title": "Release entrypoint",
                    "anchor": "c13.6"
                }
            ]
        },
        {
            "number": "14",
            "title": "WebSocket",
            "anchor": "c14",
            "slug": "websocket",
            "url": "/guide/websocket",
            "sections": [
                {
                    "number": "14.1",
                    "title": "Streaming first",
                    "anchor": "c14.1"
                },
                {
                    "number": "14.2",
                    "title": "What Phlo Realtime is",
                    "anchor": "c14.2"
                },
                {
                    "number": "14.3",
                    "title": "Installation",
                    "anchor": "c14.3"
                },
                {
                    "number": "14.4",
                    "title": "App hooks",
                    "anchor": "c14.4"
                },
                {
                    "number": "14.5",
                    "title": "Auth flow",
                    "anchor": "c14.5"
                },
                {
                    "number": "14.6",
                    "title": "Broadcasting from PHP",
                    "anchor": "c14.6"
                },
                {
                    "number": "14.7",
                    "title": "Client side",
                    "anchor": "c14.7"
                },
                {
                    "number": "14.8",
                    "title": "Mini example: presence",
                    "anchor": "c14.8"
                },
                {
                    "number": "14.9",
                    "title": "Known limitations",
                    "anchor": "c14.9"
                }
            ]
        },
        {
            "number": "15",
            "title": "Tasks",
            "anchor": "c15",
            "slug": "tasks",
            "url": "/guide/tasks",
            "sections": [
                {
                    "number": "15.1",
                    "title": "Setup",
                    "anchor": "c15.1"
                },
                {
                    "number": "15.2",
                    "title": "Schedule",
                    "anchor": "c15.2"
                },
                {
                    "number": "15.3",
                    "title": "Callable (`do:`)",
                    "anchor": "c15.3"
                },
                {
                    "number": "15.4",
                    "title": "State on disk (`data/tasks/`)",
                    "anchor": "c15.4"
                },
                {
                    "number": "15.5",
                    "title": "Error flow",
                    "anchor": "c15.5"
                },
                {
                    "number": "15.6",
                    "title": "Phlo Control Center",
                    "anchor": "c15.6"
                },
                {
                    "number": "15.7",
                    "title": "Example",
                    "anchor": "c15.7"
                },
                {
                    "number": "15.8",
                    "title": "Scheduling without cron",
                    "anchor": "c15.8"
                }
            ]
        },
        {
            "number": "16",
            "title": "Daemon",
            "anchor": "c16",
            "slug": "daemon",
            "url": "/guide/daemon",
            "sections": [
                {
                    "number": "16.1",
                    "title": "What it is, and why it is optional",
                    "anchor": "c16.1"
                },
                {
                    "number": "16.2",
                    "title": "The worker protocol",
                    "anchor": "c16.2"
                },
                {
                    "number": "16.3",
                    "title": "The HTTP API",
                    "anchor": "c16.3"
                },
                {
                    "number": "16.4",
                    "title": "Configuration",
                    "anchor": "c16.4"
                },
                {
                    "number": "16.5",
                    "title": "Runtime helpers on the pool",
                    "anchor": "c16.5"
                },
                {
                    "number": "16.6",
                    "title": "Scheduling: the cron alternative",
                    "anchor": "c16.6"
                },
                {
                    "number": "16.7",
                    "title": "Consumers",
                    "anchor": "c16.7"
                },
                {
                    "number": "16.8",
                    "title": "When to run it",
                    "anchor": "c16.8"
                }
            ]
        },
        {
            "number": "17",
            "title": "SEO",
            "anchor": "c17",
            "slug": "seo",
            "url": "/guide/seo",
            "sections": [
                {
                    "number": "17.1",
                    "title": "Activation",
                    "anchor": "c17.1"
                },
                {
                    "number": "17.2",
                    "title": "The sitemap and hreflang",
                    "anchor": "c17.2"
                },
                {
                    "number": "17.3",
                    "title": "The head block",
                    "anchor": "c17.3"
                },
                {
                    "number": "17.4",
                    "title": "robots.txt and the indexable constant",
                    "anchor": "c17.4"
                },
                {
                    "number": "17.5",
                    "title": "Per-app and per-page overrides",
                    "anchor": "c17.5"
                }
            ]
        },
        {
            "number": "18",
            "title": "AI",
            "anchor": "c18",
            "slug": "ai",
            "url": "/guide/ai",
            "sections": [
                {
                    "number": "18.1",
                    "title": "Resources",
                    "anchor": "c18.1"
                },
                {
                    "number": "18.2",
                    "title": "A single answer",
                    "anchor": "c18.2"
                },
                {
                    "number": "18.3",
                    "title": "Streaming to the DOM",
                    "anchor": "c18.3"
                },
                {
                    "number": "18.4",
                    "title": "Tools (function calling)",
                    "anchor": "c18.4"
                },
                {
                    "number": "18.5",
                    "title": "Vision",
                    "anchor": "c18.5"
                },
                {
                    "number": "18.6",
                    "title": "Embeddings",
                    "anchor": "c18.6"
                },
                {
                    "number": "18.7",
                    "title": "Transcribe",
                    "anchor": "c18.7"
                },
                {
                    "number": "18.8",
                    "title": "Safety",
                    "anchor": "c18.8"
                }
            ]
        },
        {
            "number": "19",
            "title": "Trace",
            "anchor": "c19",
            "slug": "trace",
            "url": "/guide/trace",
            "sections": [
                {
                    "number": "19.1",
                    "title": "What trace does",
                    "anchor": "c19.1"
                },
                {
                    "number": "19.2",
                    "title": "Enabling",
                    "anchor": "c19.2"
                },
                {
                    "number": "19.3",
                    "title": "What a trace contains",
                    "anchor": "c19.3"
                },
                {
                    "number": "19.4",
                    "title": "Argument snipping",
                    "anchor": "c19.4"
                },
                {
                    "number": "19.5",
                    "title": "Reading via the Phlo Control Center",
                    "anchor": "c19.5"
                },
                {
                    "number": "19.6",
                    "title": "Maintenance: `build::traceShadow`",
                    "anchor": "c19.6"
                },
                {
                    "number": "19.7",
                    "title": "When to use it, when not",
                    "anchor": "c19.7"
                }
            ]
        },
        {
            "number": "20",
            "title": "For AI Agents",
            "anchor": "c20",
            "slug": "agents",
            "url": "/guide/agents",
            "sections": [
                {
                    "number": "20.1",
                    "title": "The triad: understand, execute, build",
                    "anchor": "c20.1"
                },
                {
                    "number": "20.2",
                    "title": "Recommended workflow",
                    "anchor": "c20.2"
                },
                {
                    "number": "20.3",
                    "title": "reflect:: in practice",
                    "anchor": "c20.3"
                },
                {
                    "number": "20.4",
                    "title": "phlo_eval in practice",
                    "anchor": "c20.4"
                },
                {
                    "number": "20.5",
                    "title": "Power and danger",
                    "anchor": "c20.5"
                },
                {
                    "number": "20.6",
                    "title": "build:: in practice",
                    "anchor": "c20.6"
                }
            ]
        },
        {
            "number": "21",
            "title": "Philosophy",
            "anchor": "c21",
            "slug": "philosophy",
            "url": "/guide/philosophy",
            "sections": [
                {
                    "number": "21.1",
                    "title": "One system, four layers",
                    "anchor": "c21.1"
                },
                {
                    "number": "21.2",
                    "title": "A line-based parser, no AST",
                    "anchor": "c21.2"
                },
                {
                    "number": "21.3",
                    "title": "Transpiles to readable PHP",
                    "anchor": "c21.3"
                },
                {
                    "number": "21.4",
                    "title": "The `obj` magic base class",
                    "anchor": "c21.4"
                },
                {
                    "number": "21.5",
                    "title": "`phlo()` as a tiny service registry",
                    "anchor": "c21.5"
                },
                {
                    "number": "21.6",
                    "title": "Rebuild on request in development",
                    "anchor": "c21.6"
                },
                {
                    "number": "21.7",
                    "title": "Zero dependencies",
                    "anchor": "c21.7"
                },
                {
                    "number": "21.8",
                    "title": "Self-hosted ownership",
                    "anchor": "c21.8"
                },
                {
                    "number": "21.9",
                    "title": "Agent-first by design",
                    "anchor": "c21.9"
                },
                {
                    "number": "21.10",
                    "title": "What Phlo is not",
                    "anchor": "c21.10"
                }
            ]
        },
        {
            "number": "22",
            "title": "Performance",
            "anchor": "c22",
            "slug": "performance",
            "url": "/guide/performance",
            "sections": [
                {
                    "number": "22.1",
                    "title": "What the platform already does",
                    "anchor": "c22.1"
                },
                {
                    "number": "22.2",
                    "title": "Server time: worker mode",
                    "anchor": "c22.2"
                },
                {
                    "number": "22.3",
                    "title": "The engine is not the cost",
                    "anchor": "c22.3"
                },
                {
                    "number": "22.4",
                    "title": "Images",
                    "anchor": "c22.4"
                },
                {
                    "number": "22.5",
                    "title": "Navigation: the SPA without the framework bill",
                    "anchor": "c22.5"
                },
                {
                    "number": "22.6",
                    "title": "The other three audits",
                    "anchor": "c22.6"
                },
                {
                    "number": "22.7",
                    "title": "Measuring honestly",
                    "anchor": "c22.7"
                }
            ]
        },
        {
            "number": "23",
            "title": "Deployment & CI/CD",
            "anchor": "c23",
            "slug": "deployment",
            "url": "/guide/deployment",
            "sections": [
                {
                    "number": "23.1",
                    "title": "The release build",
                    "anchor": "c23.1"
                },
                {
                    "number": "23.2",
                    "title": "Continuous integration",
                    "anchor": "c23.2"
                },
                {
                    "number": "23.3",
                    "title": "The deploy gate",
                    "anchor": "c23.3"
                },
                {
                    "number": "23.4",
                    "title": "A safe deploy on the server",
                    "anchor": "c23.4"
                },
                {
                    "number": "23.5",
                    "title": "Recording what is live",
                    "anchor": "c23.5"
                },
                {
                    "number": "23.6",
                    "title": "Automate the mechanics, not the decision",
                    "anchor": "c23.6"
                }
            ]
        },
        {
            "number": "24",
            "title": "PWA & native apps",
            "anchor": "c24",
            "slug": "mobile",
            "url": "/guide/mobile",
            "sections": [
                {
                    "number": "24.1",
                    "title": "The manifest",
                    "anchor": "c24.1"
                },
                {
                    "number": "24.2",
                    "title": "The service worker",
                    "anchor": "c24.2"
                },
                {
                    "number": "24.3",
                    "title": "What Capacitor adds",
                    "anchor": "c24.3"
                },
                {
                    "number": "24.4",
                    "title": "One app, three shapes",
                    "anchor": "c24.4"
                }
            ]
        },
        {
            "number": "25",
            "title": "Integrations",
            "anchor": "c25",
            "slug": "integrations",
            "url": "/guide/integrations",
            "sections": [
                {
                    "number": "25.1",
                    "title": "Connectors",
                    "anchor": "c25.1"
                },
                {
                    "number": "25.2",
                    "title": "Payments",
                    "anchor": "c25.2"
                }
            ]
        }
    ]
}