[{"data":1,"prerenderedAt":2155},["ShallowReactive",2],{"navigation_docs":3,"-develop-pipeline-apps-presentation":420,"-develop-pipeline-apps-presentation-surround":2150},[4,82,155,181,210,275,322,387],{"title":5,"icon":6,"redirect":7,"path":8,"stem":9,"children":10,"page":73},"Start","i-lucide-compass","\u002Fintro\u002Fquickstart","\u002Fintro","1.intro",[11,14,18,22,74,78],{"title":12,"path":7,"stem":13},"Quickstart","1.intro\u002F0.quickstart",{"title":15,"path":16,"stem":17},"Pipeline Applications","\u002Fintro\u002Fpipeline-app-walkthrough","1.intro\u002F1.pipeline-app-walkthrough",{"title":19,"path":20,"stem":21},"How Redgold works","\u002Fintro\u002Foverview","1.intro\u002F2.overview",{"title":23,"icon":24,"visibility":25,"redirect":26,"path":27,"stem":28,"children":29,"page":73},"Comparison","i-lucide-scale","private","\u002Fintro\u002Fcomparison\u002Fpositioning","\u002Fintro\u002Fcomparison","1.intro\u002F3.comparison",[30,33,37,41,45,49,53,57,61,65,69],{"title":31,"path":26,"stem":32},"Positioning","1.intro\u002F3.comparison\u002F1.positioning",{"title":34,"path":35,"stem":36},"vs Lovable","\u002Fintro\u002Fcomparison\u002Fvs-lovable","1.intro\u002F3.comparison\u002F10.vs-lovable",{"title":38,"path":39,"stem":40},"vs Cloudflare OS","\u002Fintro\u002Fcomparison\u002Fvs-cloudflare-os","1.intro\u002F3.comparison\u002F11.vs-cloudflare-os",{"title":42,"path":43,"stem":44},"vs a backend-as-a-service","\u002Fintro\u002Fcomparison\u002Fvs-baas","1.intro\u002F3.comparison\u002F2.vs-baas",{"title":46,"path":47,"stem":48},"vs serverless compute","\u002Fintro\u002Fcomparison\u002Fvs-serverless-compute","1.intro\u002F3.comparison\u002F3.vs-serverless-compute",{"title":50,"path":51,"stem":52},"vs a do-it-yourself data stack","\u002Fintro\u002Fcomparison\u002Fvs-diy-data-stack","1.intro\u002F3.comparison\u002F4.vs-diy-data-stack",{"title":54,"path":55,"stem":56},"vs Rama","\u002Fintro\u002Fcomparison\u002Fvs-rama","1.intro\u002F3.comparison\u002F5.vs-rama",{"title":58,"path":59,"stem":60},"vs Apache Spark","\u002Fintro\u002Fcomparison\u002Fvs-spark","1.intro\u002F3.comparison\u002F6.vs-spark",{"title":62,"path":63,"stem":64},"vs Apache DataFusion","\u002Fintro\u002Fcomparison\u002Fvs-datafusion","1.intro\u002F3.comparison\u002F7.vs-datafusion",{"title":66,"path":67,"stem":68},"vs Heroku","\u002Fintro\u002Fcomparison\u002Fvs-heroku","1.intro\u002F3.comparison\u002F8.vs-heroku",{"title":70,"path":71,"stem":72},"vs AI model providers","\u002Fintro\u002Fcomparison\u002Fvs-ai-providers","1.intro\u002F3.comparison\u002F9.vs-ai-providers",false,{"title":75,"path":76,"stem":77},"Common tasks","\u002Fintro\u002Fstarting-points","1.intro\u002F4.starting-points",{"title":79,"path":80,"stem":81},"FAQ","\u002Fintro\u002Ffaq","1.intro\u002F5.faq",{"title":83,"icon":84,"redirect":85,"path":86,"stem":87,"children":88,"page":73},"Examples","i-lucide-chef-hat","\u002Fcookbook\u002Foverview","\u002Fcookbook","10.cookbook",[89,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151],{"title":83,"path":85,"stem":90},"10.cookbook\u002F1.overview",{"title":92,"path":93,"stem":94},"One-shot task in CI","\u002Fcookbook\u002Fone-shot-ci","10.cookbook\u002F10.one-shot-ci",{"title":96,"path":97,"stem":98},"Rate-limit retries","\u002Fcookbook\u002Fretry-rate-limits","10.cookbook\u002F11.retry-rate-limits",{"title":100,"path":101,"stem":102},"Connect GitHub review automation","\u002Fcookbook\u002Fconnect-github-app","10.cookbook\u002F12.connect-github-app",{"title":104,"path":105,"stem":106},"Delegate a task to another agent","\u002Fcookbook\u002Fdelegate-agent-task","10.cookbook\u002F13.delegate-agent-task",{"title":108,"path":109,"stem":110},"Validate a pipeline application change","\u002Fcookbook\u002Fvalidate-pipeline-app","10.cookbook\u002F14.validate-pipeline-app",{"title":112,"path":113,"stem":114},"Verify a managed application deployment","\u002Fcookbook\u002Fverify-managed-deploy","10.cookbook\u002F15.verify-managed-deploy",{"title":116,"path":117,"stem":118},"Build, launch, and grow one project","\u002Fcookbook\u002Flaunch-and-grow","10.cookbook\u002F16.launch-and-grow",{"title":120,"path":121,"stem":122},"Set up managed reviews and project memory","\u002Fcookbook\u002Fmanaged-review","10.cookbook\u002F17.managed-review",{"title":124,"path":125,"stem":126},"First API call","\u002Fcookbook\u002Ffirst-api-call","10.cookbook\u002F2.first-api-call",{"title":128,"path":129,"stem":130},"Python client","\u002Fcookbook\u002Fmodel-api-python","10.cookbook\u002F3.model-api-python",{"title":132,"path":133,"stem":134},"Anthropic Messages","\u002Fcookbook\u002Fanthropic-messages","10.cookbook\u002F4.anthropic-messages",{"title":136,"path":137,"stem":138},"Check credits","\u002Fcookbook\u002Fcheck-credits","10.cookbook\u002F5.check-credits",{"title":140,"path":141,"stem":142},"Query data via MCP","\u002Fcookbook\u002Fmcp-query-data","10.cookbook\u002F6.mcp-query-data",{"title":144,"path":145,"stem":146},"Run a pipeline via MCP","\u002Fcookbook\u002Fmcp-drive-agent","10.cookbook\u002F7.mcp-drive-agent",{"title":148,"path":149,"stem":150},"Install the client","\u002Fcookbook\u002Finstall-client","10.cookbook\u002F8.install-client",{"title":152,"path":153,"stem":154},"Use another API host","\u002Fcookbook\u002Fpoint-client-at-host","10.cookbook\u002F9.point-client-at-host",{"title":156,"icon":157,"redirect":158,"path":159,"stem":160,"children":161,"page":73},"Agent operations","i-lucide-network","\u002Ffleet\u002Foverview","\u002Ffleet","11.fleet",[162,165,169,173,177],{"title":163,"path":158,"stem":164},"Running agent work","11.fleet\u002F0.overview",{"title":166,"path":167,"stem":168},"Workstreams and issues","\u002Ffleet\u002Fworkstreams-and-issues","11.fleet\u002F1.workstreams-and-issues",{"title":170,"path":171,"stem":172},"Agent lifecycle","\u002Ffleet\u002Fagent-lifecycle","11.fleet\u002F2.agent-lifecycle",{"title":174,"path":175,"stem":176},"Supervision and recovery","\u002Ffleet\u002Fsupervision","11.fleet\u002F3.supervision",{"title":178,"path":179,"stem":180},"An application workstream from request to delivery","\u002Ffleet\u002Fapplication-workstream","11.fleet\u002F4.application-workstream",{"title":182,"icon":183,"redirect":184,"path":185,"stem":186,"children":187,"page":73},"Architecture","i-lucide-layers","\u002Finfrastructure\u002Foverview","\u002Finfrastructure","3.infrastructure",[188,190,194,198,202,206],{"title":182,"path":184,"stem":189},"3.infrastructure\u002F0.overview",{"title":191,"path":192,"stem":193},"A request through the platform","\u002Finfrastructure\u002Frequest-path","3.infrastructure\u002F11.request-path",{"title":195,"path":196,"stem":197},"Agent work and durable state","\u002Finfrastructure\u002Fagent-work","3.infrastructure\u002F12.agent-work",{"title":199,"path":200,"stem":201},"Data and pipelines","\u002Finfrastructure\u002Fdata","3.infrastructure\u002F3.data",{"title":203,"path":204,"stem":205},"AI and agents","\u002Finfrastructure\u002Fai","3.infrastructure\u002F4.ai",{"title":207,"path":208,"stem":209},"Managed deployment","\u002Finfrastructure\u002Fdeployment","3.infrastructure\u002F7.deployment",{"title":211,"icon":212,"redirect":213,"path":214,"stem":215,"children":216,"page":73},"API","i-lucide-book-marked","\u002Freference\u002Fauthentication","\u002Freference","4.reference",[217,220,224,228,232,236,240,244,248,252,256],{"title":218,"path":213,"stem":219},"Authentication","4.reference\u002F1.authentication",{"title":221,"path":222,"stem":223},"Security disclosure policy","\u002Freference\u002Fsecurity-disclosure","4.reference\u002F11.security-disclosure",{"title":225,"path":226,"stem":227},"Model API","\u002Freference\u002Fllm-api","4.reference\u002F2.llm-api",{"title":229,"path":230,"stem":231},"MCP server","\u002Freference\u002Fmcp","4.reference\u002F2.mcp",{"title":233,"path":234,"stem":235},"Data platform preview","\u002Freference\u002Fdata-platform-preview","4.reference\u002F3.data-platform-preview",{"title":237,"path":238,"stem":239},"Terminal client","\u002Freference\u002Fcli","4.reference\u002F6.cli",{"title":241,"path":242,"stem":243},"Pipeline manifest preview","\u002Freference\u002Fpipeline-preview","4.reference\u002F7.pipeline-preview",{"title":245,"path":246,"stem":247},"Limits and retries","\u002Freference\u002Flimits","4.reference\u002F8.limits",{"title":249,"path":250,"stem":251},"API contract details","\u002Freference\u002Fapi-contracts","4.reference\u002F9.api-contracts",{"title":253,"path":254,"stem":255},"Errors","\u002Freference\u002Ferrors","4.reference\u002F9.errors",{"title":257,"icon":258,"visibility":259,"path":260,"stem":261,"children":262,"page":73},"Public API","i-lucide-route","public","\u002Freference\u002Froutes","4.reference\u002Froutes",[263,267,271],{"title":264,"path":265,"stem":266},"Memory routes","\u002Freference\u002Froutes\u002Fmemory","4.reference\u002Froutes\u002Fmemory",{"title":268,"path":269,"stem":270},"V1 routes","\u002Freference\u002Froutes\u002Fv1","4.reference\u002Froutes\u002Fv1",{"title":272,"path":273,"stem":274},"Voice routes","\u002Freference\u002Froutes\u002Fvoice","4.reference\u002Froutes\u002Fvoice",{"title":276,"icon":277,"visibility":25,"redirect":278,"path":279,"stem":280,"children":281,"page":73},"Develop","i-lucide-code","\u002Fdevelop\u002Fpipeline-apps\u002Foverview","\u002Fdevelop","5.develop",[282,286,310,314,318],{"title":283,"path":284,"stem":285},"Author a batch transform","\u002Fdevelop\u002Fauthor-a-batch-transform","5.develop\u002F10.author-a-batch-transform",{"title":287,"visibility":259,"redirect":278,"path":288,"stem":289,"children":290,"page":73},"Pipeline Apps","\u002Fdevelop\u002Fpipeline-apps","5.develop\u002F11.pipeline-apps",[291,294,298,302,306],{"title":292,"path":278,"stem":293},"Pipeline apps","5.develop\u002F11.pipeline-apps\u002F1.overview",{"title":295,"path":296,"stem":297},"Collaborative board walkthrough","\u002Fdevelop\u002Fpipeline-apps\u002Fcollaborative-board","5.develop\u002F11.pipeline-apps\u002F2.collaborative-board",{"title":299,"path":300,"stem":301},"Release and security lifecycle","\u002Fdevelop\u002Fpipeline-apps\u002Frelease-lifecycle","5.develop\u002F11.pipeline-apps\u002F3.release-lifecycle",{"title":303,"path":304,"stem":305},"Incident Triage","\u002Fdevelop\u002Fpipeline-apps\u002Fincident-triage","5.develop\u002F11.pipeline-apps\u002F4.incident-triage",{"title":307,"path":308,"stem":309},"App layout and authoring previews","\u002Fdevelop\u002Fpipeline-apps\u002Fpresentation","5.develop\u002F11.pipeline-apps\u002F5.presentation",{"title":311,"path":312,"stem":313},"Build a vertical","\u002Fdevelop\u002Fbuild-a-vertical","5.develop\u002F5.build-a-vertical",{"title":315,"path":316,"stem":317},"Managed application artifacts","\u002Fdevelop\u002Fscaffold-a-narrow-app","5.develop\u002F7.scaffold-a-narrow-app",{"title":319,"path":320,"stem":321},"Import your data","\u002Fdevelop\u002Fimport-your-data","5.develop\u002F8.import-your-data",{"title":323,"icon":324,"redirect":325,"path":326,"stem":327,"children":328,"page":73},"Guides","i-lucide-layout-grid","\u002Fapplications\u002Fai-agents\u002Foverview","\u002Fapplications","7.applications",[329,333,353,365],{"title":330,"path":331,"stem":332},"Application maturity catalog","\u002Fapplications\u002Fcatalog","7.applications\u002F0.catalog",{"title":334,"visibility":259,"path":335,"stem":336,"children":337,"page":73},"AI Agents","\u002Fapplications\u002Fai-agents","7.applications\u002F1.ai-agents",[338,341,345,349],{"title":339,"path":325,"stem":340},"Coding agents","7.applications\u002F1.ai-agents\u002F01.overview",{"title":342,"path":343,"stem":344},"GitHub App automation","\u002Fapplications\u002Fai-agents\u002Fgithub-app-automation","7.applications\u002F1.ai-agents\u002F04.github-app-automation",{"title":346,"path":347,"stem":348},"agent-cli assistance","\u002Fapplications\u002Fai-agents\u002Fagent-cli-assistance","7.applications\u002F1.ai-agents\u002F05.agent-cli-assistance",{"title":350,"path":351,"stem":352},"Agent REST control","\u002Fapplications\u002Fai-agents\u002Frest-agent-control","7.applications\u002F1.ai-agents\u002F06.rest-agent-control",{"title":354,"visibility":259,"path":355,"stem":356,"children":357,"page":73},"Tickets","\u002Fapplications\u002Ftickets","7.applications\u002F2.tickets",[358,361],{"title":354,"path":359,"stem":360},"\u002Fapplications\u002Ftickets\u002Foverview","7.applications\u002F2.tickets\u002F01.overview",{"title":362,"path":363,"stem":364},"API walkthrough","\u002Fapplications\u002Ftickets\u002Fapi-walkthrough","7.applications\u002F2.tickets\u002F02.api-walkthrough",{"title":366,"icon":367,"visibility":259,"path":368,"stem":369,"children":370,"page":73},"Case studies","i-lucide-book-open-check","\u002Fapplications\u002Fcase-studies","7.applications\u002F6.case-studies",[371,375,379,383],{"title":372,"path":373,"stem":374},"Case study: owner-scoped tickets","\u002Fapplications\u002Fcase-studies\u002Ftickets","7.applications\u002F6.case-studies\u002F01.tickets",{"title":376,"path":377,"stem":378},"Case study: repository review and correction","\u002Fapplications\u002Fcase-studies\u002Frepository-review","7.applications\u002F6.case-studies\u002F02.repository-review",{"title":380,"path":381,"stem":382},"Case study: repairing crawlability on Redgold’s website","\u002Fapplications\u002Fcase-studies\u002Fpublic-website-seo","7.applications\u002F6.case-studies\u002F03.public-website-seo",{"title":384,"path":385,"stem":386},"Workflow account: Elusive reviews and managed CI","\u002Fapplications\u002Fcase-studies\u002Felusive-managed-review","7.applications\u002F6.case-studies\u002F04.elusive-managed-review",{"title":388,"icon":389,"redirect":390,"path":391,"stem":392,"children":393,"page":73},"Resources","i-lucide-library","\u002Fresources\u002Fglossary","\u002Fresources","9.resources",[394,397,401,405,409,412,416],{"title":395,"path":390,"stem":396},"Glossary","9.resources\u002F1.glossary",{"title":398,"path":399,"stem":400},"Terms of Service","\u002Fresources\u002Fterms","9.resources\u002F2.terms",{"title":402,"path":403,"stem":404},"Privacy Policy","\u002Fresources\u002Fprivacy","9.resources\u002F3.privacy",{"title":406,"path":407,"stem":408},"Acceptable Use Policy","\u002Fresources\u002Facceptable-use","9.resources\u002F4.acceptable-use",{"title":79,"path":410,"stem":411},"\u002Fresources\u002Ffaq","9.resources\u002F5.faq",{"title":413,"path":414,"stem":415},"Documentation feedback","\u002Fresources\u002Fdocs-feedback","9.resources\u002F6.docs-feedback",{"title":417,"path":418,"stem":419},"Refund and Cancellation Policy","\u002Fresources\u002Frefund-cancellation","9.resources\u002F7.refund-cancellation",{"id":421,"title":307,"access":259,"audience":422,"body":423,"description":2142,"extension":2143,"last_verified":2144,"links":2145,"maturity":2146,"meta":2147,"navigation":502,"path":308,"seo":2148,"stem":309,"__hash__":2149},"docs\u002F5.develop\u002F11.pipeline-apps\u002F5.presentation.md","developer",{"type":424,"value":425,"toc":2136},"minimark",[426,430,435,455,690,1294,1308,1312,1338,1593,1612,1642,1664,1668,1749,1787,1875,1938,2065,2068,2090,2094,2120,2123,2126,2133],[427,428,429],"p",{},"App layout is authored independently of stored entity schemas. The engine owns\ntyped actions, permissions, synchronization, durable records and server business\nrules. The presentation compiler gives authors flex\u002Fgrid composition, typography,\nspacing, themes and responsive containers within that existing contract.",[431,432,434],"h2",{"id":433},"author-a-page","Author a page",[427,436,437,438,442,443,446,447,450,451,454],{},"Keep actions, entities, pipelines and capabilities in ",[439,440,441],"code",{},"app.toml",". A page declares\nexactly one of the existing ",[439,444,445],{},"root"," tree, an embedded ",[439,448,449],{},"template",", or a relative\n",[439,452,453],{},"ui"," file. Referenced files are embedded into the authored snapshot before\nsigning, so publication can reproduce the tree without the author's filesystem.",[456,457,462],"pre",{"className":458,"code":459,"language":460,"meta":461,"style":461},"language-toml shiki shiki-themes github-light github-light github-dark","[app]\n# Other identity\u002Fversion fields remain required.\nminimum_runtime_version = \"1.2.0\"\n\n[[views]]\nid = \"main\"\nname = \"Main\"\ninitial_page = \"home\"\n\n[views.theme]\naccent = \"#176b61\"\nbackground = \"#f4f3ee\"\nsurface = \"#ffffff\"\ntext = \"#203633\"\nmuted = \"#667873\"\nborder = \"#dbe1da\"\nfont = \"Inter, system-ui, sans-serif\"\n\n[[views.pages]]\nid = \"home\"\nroute = \"\u002F\"\ntitle = \"Committees\"\nsites = [\"web\"]\nui = \"ui\u002Fhome.vue\"\n","toml","",[439,463,464,480,487,497,504,516,525,534,543,548,563,572,581,590,599,608,617,626,631,645,652,661,670,681],{"__ignoreMap":461},[465,466,469,473,477],"span",{"class":467,"line":468},"line",1,[465,470,472],{"class":471},"sxrX7","[",[465,474,476],{"class":475},"snPdu","app",[465,478,479],{"class":471},"]\n",[465,481,483],{"class":467,"line":482},2,[465,484,486],{"class":485},"sCsY4","# Other identity\u002Fversion fields remain required.\n",[465,488,490,493],{"class":467,"line":489},3,[465,491,492],{"class":471},"minimum_runtime_version = ",[465,494,496],{"class":495},"sIIMD","\"1.2.0\"\n",[465,498,500],{"class":467,"line":499},4,[465,501,503],{"emptyLinePlaceholder":502},true,"\n",[465,505,507,510,513],{"class":467,"line":506},5,[465,508,509],{"class":471},"[[",[465,511,512],{"class":475},"views",[465,514,515],{"class":471},"]]\n",[465,517,519,522],{"class":467,"line":518},6,[465,520,521],{"class":471},"id = ",[465,523,524],{"class":495},"\"main\"\n",[465,526,528,531],{"class":467,"line":527},7,[465,529,530],{"class":471},"name = ",[465,532,533],{"class":495},"\"Main\"\n",[465,535,537,540],{"class":467,"line":536},8,[465,538,539],{"class":471},"initial_page = ",[465,541,542],{"class":495},"\"home\"\n",[465,544,546],{"class":467,"line":545},9,[465,547,503],{"emptyLinePlaceholder":502},[465,549,551,553,555,558,561],{"class":467,"line":550},10,[465,552,472],{"class":471},[465,554,512],{"class":475},[465,556,557],{"class":471},".",[465,559,560],{"class":475},"theme",[465,562,479],{"class":471},[465,564,566,569],{"class":467,"line":565},11,[465,567,568],{"class":471},"accent = ",[465,570,571],{"class":495},"\"#176b61\"\n",[465,573,575,578],{"class":467,"line":574},12,[465,576,577],{"class":471},"background = ",[465,579,580],{"class":495},"\"#f4f3ee\"\n",[465,582,584,587],{"class":467,"line":583},13,[465,585,586],{"class":471},"surface = ",[465,588,589],{"class":495},"\"#ffffff\"\n",[465,591,593,596],{"class":467,"line":592},14,[465,594,595],{"class":471},"text = ",[465,597,598],{"class":495},"\"#203633\"\n",[465,600,602,605],{"class":467,"line":601},15,[465,603,604],{"class":471},"muted = ",[465,606,607],{"class":495},"\"#667873\"\n",[465,609,611,614],{"class":467,"line":610},16,[465,612,613],{"class":471},"border = ",[465,615,616],{"class":495},"\"#dbe1da\"\n",[465,618,620,623],{"class":467,"line":619},17,[465,621,622],{"class":471},"font = ",[465,624,625],{"class":495},"\"Inter, system-ui, sans-serif\"\n",[465,627,629],{"class":467,"line":628},18,[465,630,503],{"emptyLinePlaceholder":502},[465,632,634,636,638,640,643],{"class":467,"line":633},19,[465,635,509],{"class":471},[465,637,512],{"class":475},[465,639,557],{"class":471},[465,641,642],{"class":475},"pages",[465,644,515],{"class":471},[465,646,648,650],{"class":467,"line":647},20,[465,649,521],{"class":471},[465,651,542],{"class":495},[465,653,655,658],{"class":467,"line":654},21,[465,656,657],{"class":471},"route = ",[465,659,660],{"class":495},"\"\u002F\"\n",[465,662,664,667],{"class":467,"line":663},22,[465,665,666],{"class":471},"title = ",[465,668,669],{"class":495},"\"Committees\"\n",[465,671,673,676,679],{"class":467,"line":672},23,[465,674,675],{"class":471},"sites = [",[465,677,678],{"class":495},"\"web\"",[465,680,479],{"class":471},[465,682,684,687],{"class":467,"line":683},24,[465,685,686],{"class":471},"ui = ",[465,688,689],{"class":495},"\"ui\u002Fhome.vue\"\n",[456,691,695],{"className":692,"code":693,"language":694,"meta":461,"style":461},"language-html shiki shiki-themes github-light github-light github-dark","\u003Ctemplate>\n  \u003Csection class=\"workspace\">\n    \u003Cheader>\u003Ch1>Committee workspace\u003C\u002Fh1>\u003C\u002Fheader>\n    \u003Cform aria-label=\"Choose committee\">\n      \u003Cselect name=\"committee_id\" label=\"Committee\"\n        :options=\"$state.committees\" :value=\"$state.selected_id\"\n        option-value=\"id\" option-label=\"name\" @change=\"choose_committee\" \u002F>\n    \u003C\u002Fform>\n    \u003Csection v-if=\"$state.has_proposals\" class=\"proposals\" aria-label=\"Proposals\">\n      \u003Carticle v-for=\"proposal in $state.proposals\" :key=\"proposal.id\" class=\"proposal\">\n        \u003Ch2>{{ proposal.title }}\u003C\u002Fh2>\n        \u003Cp>{{ proposal.summary }}\u003C\u002Fp>\n        \u003Cfooter>Due {{ proposal.deadline }} · \u003Cstrong>{{ proposal.cost }}\u003C\u002Fstrong>\u003C\u002Ffooter>\n      \u003C\u002Farticle>\n    \u003C\u002Fsection>\n    \u003Cp v-else class=\"empty\">No proposals yet.\u003C\u002Fp>\n  \u003C\u002Fsection>\n\u003C\u002Ftemplate>\n\u003Cstyle scoped>\n.workspace { display: grid; gap: var(--app-space-5); padding: var(--app-space-5); }\n.proposals { display: grid; gap: var(--app-space-4); }\n.proposal { padding: var(--app-space-5); border: 1px solid var(--app-border); border-radius: var(--app-radius-lg); }\n.proposal p { color: var(--app-muted); }\n.proposal footer strong { font-variant-numeric: tabular-nums; }\n@media (min-width: 900px) {\n  .workspace { grid-template-columns: 270px minmax(0, 1fr); }\n}\n\u003C\u002Fstyle>\n","html",[439,696,697,708,727,753,770,794,812,844,853,883,915,929,942,966,975,983,1006,1015,1024,1036,1089,1117,1175,1198,1221,1243,1279,1285],{"__ignoreMap":461},[465,698,699,702,705],{"class":467,"line":468},[465,700,701],{"class":471},"\u003C",[465,703,449],{"class":704},"sovSZ",[465,706,707],{"class":471},">\n",[465,709,710,713,716,719,722,725],{"class":467,"line":482},[465,711,712],{"class":471},"  \u003C",[465,714,715],{"class":704},"section",[465,717,718],{"class":475}," class",[465,720,721],{"class":471},"=",[465,723,724],{"class":495},"\"workspace\"",[465,726,707],{"class":471},[465,728,729,732,735,738,741,744,746,749,751],{"class":467,"line":489},[465,730,731],{"class":471},"    \u003C",[465,733,734],{"class":704},"header",[465,736,737],{"class":471},">\u003C",[465,739,740],{"class":704},"h1",[465,742,743],{"class":471},">Committee workspace\u003C\u002F",[465,745,740],{"class":704},[465,747,748],{"class":471},">\u003C\u002F",[465,750,734],{"class":704},[465,752,707],{"class":471},[465,754,755,757,760,763,765,768],{"class":467,"line":499},[465,756,731],{"class":471},[465,758,759],{"class":704},"form",[465,761,762],{"class":475}," aria-label",[465,764,721],{"class":471},[465,766,767],{"class":495},"\"Choose committee\"",[465,769,707],{"class":471},[465,771,772,775,778,781,783,786,789,791],{"class":467,"line":506},[465,773,774],{"class":471},"      \u003C",[465,776,777],{"class":704},"select",[465,779,780],{"class":475}," name",[465,782,721],{"class":471},[465,784,785],{"class":495},"\"committee_id\"",[465,787,788],{"class":475}," label",[465,790,721],{"class":471},[465,792,793],{"class":495},"\"Committee\"\n",[465,795,796,799,801,804,807,809],{"class":467,"line":518},[465,797,798],{"class":475},"        :options",[465,800,721],{"class":471},[465,802,803],{"class":495},"\"$state.committees\"",[465,805,806],{"class":475}," :value",[465,808,721],{"class":471},[465,810,811],{"class":495},"\"$state.selected_id\"\n",[465,813,814,817,819,822,825,827,830,833,835,838,842],{"class":467,"line":527},[465,815,816],{"class":475},"        option-value",[465,818,721],{"class":471},[465,820,821],{"class":495},"\"id\"",[465,823,824],{"class":475}," option-label",[465,826,721],{"class":471},[465,828,829],{"class":495},"\"name\"",[465,831,832],{"class":475}," @change",[465,834,721],{"class":471},[465,836,837],{"class":495},"\"choose_committee\"",[465,839,841],{"class":840},"sPrNH"," \u002F",[465,843,707],{"class":471},[465,845,846,849,851],{"class":467,"line":536},[465,847,848],{"class":471},"    \u003C\u002F",[465,850,759],{"class":704},[465,852,707],{"class":471},[465,854,855,857,859,862,864,867,869,871,874,876,878,881],{"class":467,"line":545},[465,856,731],{"class":471},[465,858,715],{"class":704},[465,860,861],{"class":475}," v-if",[465,863,721],{"class":471},[465,865,866],{"class":495},"\"$state.has_proposals\"",[465,868,718],{"class":475},[465,870,721],{"class":471},[465,872,873],{"class":495},"\"proposals\"",[465,875,762],{"class":475},[465,877,721],{"class":471},[465,879,880],{"class":495},"\"Proposals\"",[465,882,707],{"class":471},[465,884,885,887,890,893,895,898,901,903,906,908,910,913],{"class":467,"line":550},[465,886,774],{"class":471},[465,888,889],{"class":704},"article",[465,891,892],{"class":475}," v-for",[465,894,721],{"class":471},[465,896,897],{"class":495},"\"proposal in $state.proposals\"",[465,899,900],{"class":475}," :key",[465,902,721],{"class":471},[465,904,905],{"class":495},"\"proposal.id\"",[465,907,718],{"class":475},[465,909,721],{"class":471},[465,911,912],{"class":495},"\"proposal\"",[465,914,707],{"class":471},[465,916,917,920,922,925,927],{"class":467,"line":565},[465,918,919],{"class":471},"        \u003C",[465,921,431],{"class":704},[465,923,924],{"class":471},">{{ proposal.title }}\u003C\u002F",[465,926,431],{"class":704},[465,928,707],{"class":471},[465,930,931,933,935,938,940],{"class":467,"line":574},[465,932,919],{"class":471},[465,934,427],{"class":704},[465,936,937],{"class":471},">{{ proposal.summary }}\u003C\u002F",[465,939,427],{"class":704},[465,941,707],{"class":471},[465,943,944,946,949,952,955,958,960,962,964],{"class":467,"line":583},[465,945,919],{"class":471},[465,947,948],{"class":704},"footer",[465,950,951],{"class":471},">Due {{ proposal.deadline }} · \u003C",[465,953,954],{"class":704},"strong",[465,956,957],{"class":471},">{{ proposal.cost }}\u003C\u002F",[465,959,954],{"class":704},[465,961,748],{"class":471},[465,963,948],{"class":704},[465,965,707],{"class":471},[465,967,968,971,973],{"class":467,"line":592},[465,969,970],{"class":471},"      \u003C\u002F",[465,972,889],{"class":704},[465,974,707],{"class":471},[465,976,977,979,981],{"class":467,"line":601},[465,978,848],{"class":471},[465,980,715],{"class":704},[465,982,707],{"class":471},[465,984,985,987,989,992,994,996,999,1002,1004],{"class":467,"line":610},[465,986,731],{"class":471},[465,988,427],{"class":704},[465,990,991],{"class":475}," v-else",[465,993,718],{"class":475},[465,995,721],{"class":471},[465,997,998],{"class":495},"\"empty\"",[465,1000,1001],{"class":471},">No proposals yet.\u003C\u002F",[465,1003,427],{"class":704},[465,1005,707],{"class":471},[465,1007,1008,1011,1013],{"class":467,"line":619},[465,1009,1010],{"class":471},"  \u003C\u002F",[465,1012,715],{"class":704},[465,1014,707],{"class":471},[465,1016,1017,1020,1022],{"class":467,"line":628},[465,1018,1019],{"class":471},"\u003C\u002F",[465,1021,449],{"class":704},[465,1023,707],{"class":471},[465,1025,1026,1028,1031,1034],{"class":467,"line":633},[465,1027,701],{"class":471},[465,1029,1030],{"class":704},"style",[465,1032,1033],{"class":475}," scoped",[465,1035,707],{"class":471},[465,1037,1038,1041,1044,1048,1051,1054,1057,1060,1062,1065,1068,1072,1075,1078,1080,1082,1084,1086],{"class":467,"line":647},[465,1039,1040],{"class":475},".workspace",[465,1042,1043],{"class":471}," { ",[465,1045,1047],{"class":1046},"sBjJW","display",[465,1049,1050],{"class":471},": ",[465,1052,1053],{"class":1046},"grid",[465,1055,1056],{"class":471},"; ",[465,1058,1059],{"class":1046},"gap",[465,1061,1050],{"class":471},[465,1063,1064],{"class":1046},"var",[465,1066,1067],{"class":471},"(",[465,1069,1071],{"class":1070},"sP4rz","--app-space-5",[465,1073,1074],{"class":471},"); ",[465,1076,1077],{"class":1046},"padding",[465,1079,1050],{"class":471},[465,1081,1064],{"class":1046},[465,1083,1067],{"class":471},[465,1085,1071],{"class":1070},[465,1087,1088],{"class":471},"); }\n",[465,1090,1091,1094,1096,1098,1100,1102,1104,1106,1108,1110,1112,1115],{"class":467,"line":654},[465,1092,1093],{"class":475},".proposals",[465,1095,1043],{"class":471},[465,1097,1047],{"class":1046},[465,1099,1050],{"class":471},[465,1101,1053],{"class":1046},[465,1103,1056],{"class":471},[465,1105,1059],{"class":1046},[465,1107,1050],{"class":471},[465,1109,1064],{"class":1046},[465,1111,1067],{"class":471},[465,1113,1114],{"class":1070},"--app-space-4",[465,1116,1088],{"class":471},[465,1118,1119,1122,1124,1126,1128,1130,1132,1134,1136,1139,1141,1144,1148,1151,1154,1156,1159,1161,1164,1166,1168,1170,1173],{"class":467,"line":663},[465,1120,1121],{"class":475},".proposal",[465,1123,1043],{"class":471},[465,1125,1077],{"class":1046},[465,1127,1050],{"class":471},[465,1129,1064],{"class":1046},[465,1131,1067],{"class":471},[465,1133,1071],{"class":1070},[465,1135,1074],{"class":471},[465,1137,1138],{"class":1046},"border",[465,1140,1050],{"class":471},[465,1142,1143],{"class":1046},"1",[465,1145,1147],{"class":1146},"s8jYJ","px",[465,1149,1150],{"class":1046}," solid",[465,1152,1153],{"class":1046}," var",[465,1155,1067],{"class":471},[465,1157,1158],{"class":1070},"--app-border",[465,1160,1074],{"class":471},[465,1162,1163],{"class":1046},"border-radius",[465,1165,1050],{"class":471},[465,1167,1064],{"class":1046},[465,1169,1067],{"class":471},[465,1171,1172],{"class":1070},"--app-radius-lg",[465,1174,1088],{"class":471},[465,1176,1177,1179,1182,1184,1187,1189,1191,1193,1196],{"class":467,"line":672},[465,1178,1121],{"class":475},[465,1180,1181],{"class":704}," p",[465,1183,1043],{"class":471},[465,1185,1186],{"class":1046},"color",[465,1188,1050],{"class":471},[465,1190,1064],{"class":1046},[465,1192,1067],{"class":471},[465,1194,1195],{"class":1070},"--app-muted",[465,1197,1088],{"class":471},[465,1199,1200,1202,1205,1208,1210,1213,1215,1218],{"class":467,"line":683},[465,1201,1121],{"class":475},[465,1203,1204],{"class":704}," footer",[465,1206,1207],{"class":704}," strong",[465,1209,1043],{"class":471},[465,1211,1212],{"class":1046},"font-variant-numeric",[465,1214,1050],{"class":471},[465,1216,1217],{"class":1046},"tabular-nums",[465,1219,1220],{"class":471},"; }\n",[465,1222,1224,1227,1230,1233,1235,1238,1240],{"class":467,"line":1223},25,[465,1225,1226],{"class":1146},"@media",[465,1228,1229],{"class":471}," (",[465,1231,1232],{"class":1046},"min-width",[465,1234,1050],{"class":471},[465,1236,1237],{"class":1046},"900",[465,1239,1147],{"class":1146},[465,1241,1242],{"class":471},") {\n",[465,1244,1246,1249,1251,1254,1256,1259,1261,1264,1266,1269,1272,1274,1277],{"class":467,"line":1245},26,[465,1247,1248],{"class":475},"  .workspace",[465,1250,1043],{"class":471},[465,1252,1253],{"class":1046},"grid-template-columns",[465,1255,1050],{"class":471},[465,1257,1258],{"class":1046},"270",[465,1260,1147],{"class":1146},[465,1262,1263],{"class":1046}," minmax",[465,1265,1067],{"class":471},[465,1267,1268],{"class":1046},"0",[465,1270,1271],{"class":471},", ",[465,1273,1143],{"class":1046},[465,1275,1276],{"class":1146},"fr",[465,1278,1088],{"class":471},[465,1280,1282],{"class":467,"line":1281},27,[465,1283,1284],{"class":471},"}\n",[465,1286,1288,1290,1292],{"class":467,"line":1287},28,[465,1289,1019],{"class":471},[465,1291,1030],{"class":704},[465,1293,707],{"class":471},[427,1295,1296,1299,1300,1303,1304,1307],{},[439,1297,1298],{},"choose_committee"," must be a declared action. A select stores the chosen scalar\nidentity in ",[439,1301,1302],{},"action_input.values.committee_id"," and carries the complete option\nrecord in ",[439,1305,1306],{},"action_input.item",". String and numeric identities retain their types.\nUse entity hydration to populate options; people choose record names, not raw\nforeign keys. A select belongs inside a form even when its change action is\nindependent of submission. Options are bounded to 500 unique identities.",[431,1309,1311],{"id":1310},"supported-template-subset","Supported template subset",[427,1313,1314,1315,1318,1319,1271,1322,1325,1326,1329,1330,1333,1334,1337],{},"This is a declarative source format, not a Vue runtime. Quote attribute values\nand close every element, including void controls (",[439,1316,1317],{},"\u003Cinput ... \u002F>","). Bare boolean\nattributes such as ",[439,1320,1321],{},"required",[439,1323,1324],{},"disabled"," and ",[439,1327,1328],{},"submit"," mean ",[439,1331,1332],{},"true",". XML character\nreferences such as ",[439,1335,1336],{},"&amp;"," and numeric references are accepted.",[1339,1340,1341,1354],"table",{},[1342,1343,1344],"thead",{},[1345,1346,1347,1351],"tr",{},[1348,1349,1350],"th",{},"Source",[1348,1352,1353],{},"Native behavior",[1355,1356,1357,1398,1435,1460,1468,1478,1495,1506,1522,1537,1555,1572,1583],"tbody",{},[1345,1358,1359,1391],{},[1360,1361,1362,1271,1365,1271,1367,1271,1369,1271,1371,1271,1374,1271,1376,1271,1379,1271,1382,1271,1385,1271,1388],"td",{},[439,1363,1364],{},"div",[439,1366,715],{},[439,1368,734],{},[439,1370,948],{},[439,1372,1373],{},"aside",[439,1375,889],{},[439,1377,1378],{},"main",[439,1380,1381],{},"nav",[439,1383,1384],{},"ul",[439,1386,1387],{},"ol",[439,1389,1390],{},"figure",[1360,1392,1393,1394,1397],{},"Semantic ",[439,1395,1396],{},"box"," containers",[1345,1399,1400,1432],{},[1360,1401,1402,1404,1405,1271,1408,1271,1410,1271,1412,1271,1414,1271,1417,1271,1420,1271,1423,1271,1426,1271,1429],{},[439,1403,740],{},"–",[439,1406,1407],{},"h4",[439,1409,427],{},[439,1411,465],{},[439,1413,954],{},[439,1415,1416],{},"em",[439,1418,1419],{},"small",[439,1421,1422],{},"li",[439,1424,1425],{},"label",[439,1427,1428],{},"figcaption",[439,1430,1431],{},"blockquote",[1360,1433,1434],{},"Text leaves; inline boxes when they hold elements or several interpolations",[1345,1436,1437,1448],{},[1360,1438,1439,1271,1442,1271,1445],{},[439,1440,1441],{},"img",[439,1443,1444],{},"textarea",[439,1446,1447],{},"a href=\"\u002Fpage\"",[1360,1449,1450,1453,1454,1271,1457],{},[439,1451,1452],{},"image",", multiline ",[439,1455,1456],{},"input",[439,1458,1459],{},"navigation",[1345,1461,1462,1465],{},[1360,1463,1464],{},"Existing portable component names",[1360,1466,1467],{},"Existing typed components",[1345,1469,1470,1475],{},[1360,1471,1472],{},[439,1473,1474],{},":prop=\"$state.path\"",[1360,1476,1477],{},"Read binding to local state",[1345,1479,1480,1492],{},[1360,1481,1482,1271,1485,1271,1488,1491],{},[439,1483,1484],{},"$item.path",[439,1486,1487],{},"$item",[439,1489,1490],{},"$index"," inside list templates",[1360,1493,1494],{},"Read the current record\u002Findex",[1345,1496,1497,1503],{},[1360,1498,1499,1502],{},[439,1500,1501],{},"{{ $state.path }}"," in text",[1360,1504,1505],{},"Interpolation; any number per element, mixed with inline elements",[1345,1507,1508,1519],{},[1360,1509,1510,1271,1513,1271,1516],{},[439,1511,1512],{},"@click=\"action\"",[439,1514,1515],{},"@submit=\"action\"",[439,1517,1518],{},"@change=\"action\"",[1360,1520,1521],{},"Declared button\u002Fform\u002Fselect actions",[1345,1523,1524,1532],{},[1360,1525,1526,1271,1529],{},[439,1527,1528],{},"v-if=\"$state.ready\"",[439,1530,1531],{},"v-show",[1360,1533,1534,1535],{},"Render only when the bound value is boolean ",[439,1536,1332],{},[1345,1538,1539,1547],{},[1360,1540,1541,1271,1544],{},[439,1542,1543],{},"v-if=\"!$state.ready\"",[439,1545,1546],{},"v-else",[1360,1548,1549,1550,1056,1552,1554],{},"Render unless the value is ",[439,1551,1332],{},[439,1553,1546],{}," negates the previous sibling's condition",[1345,1556,1557,1562],{},[1360,1558,1559],{},[439,1560,1561],{},"v-for=\"(row, i) in $state.rows\"",[1360,1563,1564,1565,1568,1569],{},"A plain list whose rows join the parent's flex\u002Fgrid; ",[439,1566,1567],{},"row.x"," reads ",[439,1570,1571],{},"$item.x",[1345,1573,1574,1580],{},[1360,1575,1576,1579],{},[439,1577,1578],{},"aria-label=\"...\""," on containers",[1360,1581,1582],{},"Accessible name for a landmark or region",[1345,1584,1585,1590],{},[1360,1586,1587],{},[439,1588,1589],{},"tab-label=\"Overview\"",[1360,1591,1592],{},"Label a direct child of tabs",[427,1594,1595,1596,1599,1600,1603,1604,1607,1608,1611],{},"Rich text works as it does on a web page:\n",[439,1597,1598],{},"\u003Cp>Due {{ row.due }} · \u003Cstrong>{{ row.budget }}\u003C\u002Fstrong>\u003C\u002Fp>"," compiles into\ninline spans that keep the authored spacing. Labels of buttons, badges and links\ntake one interpolation without surrounding text. ",[439,1601,1602],{},"v-for"," renders up to 100 rows\nper page. A loop's ",[439,1605,1606],{},"v-if"," filters rows when it reads the loop alias. When it\nreads other state, it guards the whole loop. A nested loop reads only its own\nalias. ",[439,1609,1610],{},":key"," is accepted and ignored.",[427,1613,1614,1615,1271,1618,1621,1622,1271,1625,1325,1628,1631,1632,1634,1635,1637,1638,1641],{},"No scripts, imports, arbitrary expressions, event handlers, transforms, DTDs or\nprocessing instructions execute through this source. ",[439,1616,1617],{},"v-else-if",[439,1619,1620],{},"v-model",",\n",[439,1623,1624],{},"v-html",[439,1626,1627],{},":class",[439,1629,1630],{},":style"," are rejected with a hint. Derive display state\nin action flows and choose between variants with ",[439,1633,1606],{},"\u002F",[439,1636,1546],{},". There is one\nroot and optionally one ",[439,1639,1640],{},"\u003Cstyle scoped>"," block. Sources are capped at 128 KiB;\ntrees retain the 256-node\u002F12-depth limits. Compile errors name the page, line\nand column.",[427,1643,1644,1645,1271,1647,1271,1650,1325,1653,1656,1657,1325,1660,1663],{},"The additional interactions are ",[439,1646,777],{},[439,1648,1649],{},"badge",[439,1651,1652],{},"details",[439,1654,1655],{},"dialog",".\nBadges require a label; disclosures require a label and wrap ordinary children.\nDialogs require ",[439,1658,1659],{},"title",[439,1661,1662],{},"trigger-label",", wrap ordinary children, use the\nbrowser's modal focus behavior, close with Escape and restore trigger focus.\nForms and action controls stay disabled while their own submission is pending.\nThe engine remains responsible for eligibility, validation and transaction\nsemantics; a disabled button or hidden node cannot enforce a business rule.",[431,1665,1667],{"id":1666},"scoped-presentation","Scoped presentation",[427,1669,1670,1671,1674,1675,1271,1678,1271,1681,1271,1684,1687,1688,1691,1692,1695,1696,1699,1700,1703,1704,1706,1707,1271,1710,1271,1713,1271,1716,1621,1719,1271,1722,1271,1725,1325,1728,1731,1732,1735,1736,1271,1739,1271,1742,1325,1745,1748],{},"CSS compiles to optional ",[439,1672,1673],{},"ComponentNode.presentation.rules",", never a global\nstylesheet. The template is static, so the compiler resolves selectors against\nit at build time. Use element names, ",[439,1676,1677],{},".class",[439,1679,1680],{},"#id",[439,1682,1683],{},"*",[439,1685,1686],{},":root",", compounds\nsuch as ",[439,1689,1690],{},"h2.title"," or ",[439,1693,1694],{},".card.featured",", descendant selectors (",[439,1697,1698],{},".card h3",") and\nchild selectors (",[439,1701,1702],{},".card > header","). The compiler applies standard specificity\nand source order, and inline ",[439,1705,1030],{}," wins. A state pseudo-class applies to the\nselected element: ",[439,1708,1709],{},":hover",[439,1711,1712],{},":focus-visible",[439,1714,1715],{},":disabled",[439,1717,1718],{},":focus-within",[439,1720,1721],{},":active",[439,1723,1724],{},":first-child",[439,1726,1727],{},":last-child",[439,1729,1730],{},":nth-child(odd|even)",". Ancestor\nstates such as ",[439,1733,1734],{},".card:hover .title",", sibling combinators, attribute selectors,\n",[439,1737,1738],{},"!important",[439,1740,1741],{},"@keyframes",[439,1743,1744],{},"@import",[439,1746,1747],{},"@font-face"," are rejected.",[427,1750,1751,1752,1755,1756,1758,1759,1271,1762,1621,1765,1634,1768,1325,1771,1774,1775,1271,1777,1691,1780,1782,1783,1786],{},"Width queries are measured against the app surface's available width, so they\nwork beside platform navigation or inside another host. ",[439,1753,1754],{},"@container"," and\n",[439,1757,1226],{}," are equivalent. Both accept ",[439,1760,1761],{},"(min-width: N)",[439,1763,1764],{},"(max-width: N)",[439,1766,1767],{},"(width >= N)",[439,1769,1770],{},"(width \u003C= N)",[439,1772,1773],{},"and"," combinations in ",[439,1776,1147],{},[439,1778,1779],{},"rem",[439,1781,1416],{},", for\n240–3200 pixels. Mobile-first and desktop-first CSS both work. Media features\nother than width are rejected; the host already honors reduced motion. Choose\n",[439,1784,1785],{},"minmax(0, 1fr)"," for flexible tracks and check actual content overflow.",[427,1788,1789,1790,1271,1793,1271,1795,1271,1798,1621,1801,1271,1804,1325,1806,1809,1810,1813,1814,1634,1817,1820,1821,1824,1825,1271,1828,1621,1830,1833,1834,1271,1837,1840,1841,1844,1845,1848,1849,1852,1853,1271,1856,1621,1859,1271,1862,1271,1865,1271,1868,1325,1871,1874],{},"Shared controls expose stable ",[439,1791,1792],{},"::part(control)",[439,1794,1425],{},[439,1796,1797],{},"panel",[439,1799,1800],{},"trigger",[439,1802,1803],{},"body",[439,1805,1659],{},[439,1807,1808],{},"item"," hooks where relevant. For example, style\n",[439,1811,1812],{},".proposals::part(item)"," to change a list row wrapper. The property allowlist\ncovers flex, grid (including ",[439,1815,1816],{},"grid-template-areas",[439,1818,1819],{},"grid-area","), ",[439,1822,1823],{},"place-*",",\nlogical sizing and spacing, typography (",[439,1826,1827],{},"text-wrap",[439,1829,1212],{},[439,1831,1832],{},"line-clamp",", quoted font names), colors (",[439,1835,1836],{},"color-mix()",[439,1838,1839],{},"oklch()","), borders,\nshadows, filters, ",[439,1842,1843],{},"backdrop-filter",", transforms and transitions. Authored\ncustom properties (",[439,1846,1847],{},"--gap: 24px",") inherit like ordinary CSS variables. The\n",[439,1850,1851],{},"animation"," property names host keyframes: ",[439,1854,1855],{},"app-fade-in",[439,1857,1858],{},"app-rise",[439,1860,1861],{},"app-scale-in",[439,1863,1864],{},"app-slide-in",[439,1866,1867],{},"app-pulse",[439,1869,1870],{},"app-spin",[439,1872,1873],{},"app-shimmer",".\nValues reject URLs, executable functions, CSS escapes, fixed positioning and\nunbounded stacking levels. Strings are limited to names, spaces and dots. Each\nnode has at most 32 rules, 48 declarations per rule and 16 KiB of declaration\ntext.",[427,1876,1877,1878,1271,1881,1271,1884,1271,1887,1271,1890,1271,1893,1621,1895,1271,1898,1271,1901,1271,1904,1325,1907,1910,1911,1271,1914,1271,1917,1271,1920,1325,1923,1926,1927,1930,1931,1933,1934,1937],{},"Theme tokens are ",[439,1879,1880],{},"accent",[439,1882,1883],{},"background",[439,1885,1886],{},"surface",[439,1888,1889],{},"text",[439,1891,1892],{},"muted",[439,1894,1138],{},[439,1896,1897],{},"danger",[439,1899,1900],{},"success",[439,1902,1903],{},"warning",[439,1905,1906],{},"font",[439,1908,1909],{},"radius",". Runtime 1.2.0 adds\n",[439,1912,1913],{},"on_accent",[439,1915,1916],{},"accent_soft",[439,1918,1919],{},"heading_font",[439,1921,1922],{},"mono_font",[439,1924,1925],{},"shadow",". They\nbecome app-local ",[439,1928,1929],{},"--app-*"," variables (",[439,1932,1913],{}," becomes ",[439,1935,1936],{},"--app-on-accent",").\nThe host derives a shared scale from them. Use the scale instead of choosing a\nnew value on every page:",[1339,1939,1940,1950],{},[1342,1941,1942],{},[1345,1943,1944,1947],{},[1348,1945,1946],{},"Tokens",[1348,1948,1949],{},"Values",[1355,1951,1952,1966,1979,1999,2015,2030,2046],{},[1345,1953,1954,1963],{},[1360,1955,1956,1959,1960],{},[439,1957,1958],{},"--app-space-1"," … ",[439,1961,1962],{},"--app-space-8",[1360,1964,1965],{},"4, 8, 12, 16, 24, 32, 48, 64 px",[1345,1967,1968,1976],{},[1360,1969,1970,1959,1973],{},[439,1971,1972],{},"--app-text-xs",[439,1974,1975],{},"--app-text-3xl",[1360,1977,1978],{},"0.75rem to a fluid 2.75rem heading size",[1345,1980,1981,1994],{},[1360,1982,1983,1271,1986,1271,1989,1271,1991],{},[439,1984,1985],{},"--app-radius-sm",[439,1987,1988],{},"--app-radius",[439,1990,1172],{},[439,1992,1993],{},"--app-radius-full",[1360,1995,1996,1997],{},"Derived from ",[439,1998,1909],{},[1345,2000,2001,2012],{},[1360,2002,2003,1271,2006,1271,2009],{},[439,2004,2005],{},"--app-shadow-sm",[439,2007,2008],{},"--app-shadow",[439,2010,2011],{},"--app-shadow-lg",[1360,2013,2014],{},"Elevation",[1345,2016,2017,2027],{},[1360,2018,2019,1271,2022,1271,2025],{},[439,2020,2021],{},"--app-accent-soft",[439,2023,2024],{},"--app-accent-strong",[439,2026,1936],{},[1360,2028,2029],{},"Accent tints and text on accent",[1345,2031,2032,2043],{},[1360,2033,2034,1271,2037,1271,2040],{},[439,2035,2036],{},"--app-surface-sunken",[439,2038,2039],{},"--app-surface-raised",[439,2041,2042],{},"--app-border-strong",[1360,2044,2045],{},"Surface and border variants",[1345,2047,2048,2062],{},[1360,2049,2050,1271,2053,1271,2056,1271,2059],{},[439,2051,2052],{},"--app-heading-font",[439,2054,2055],{},"--app-mono-font",[439,2057,2058],{},"--app-ease",[439,2060,2061],{},"--app-duration",[1360,2063,2064],{},"Type families and motion",[427,2066,2067],{},"Headings, paragraphs, buttons, inputs, badges, cards, list rows and empty states\nalready use this scale, with hover, focus and pressed states. Use contrast\nappropriate for the chosen background. Themes grant no font downloads or\nasset\u002Fnetwork permissions; name fonts the viewer already has, with fallbacks.",[427,2069,2070,2071,2074,2075,2078,2079,2082,2083,2086,2087,2089],{},"TOML authoring automatically declares the ",[439,2072,2073],{},"presentation_v1"," host feature.\nNative manifest authors must declare it explicitly on the view. Both publication\nand hosts reject unknown features. Presentation requires runtime ",[439,2076,2077],{},"1.1.0"," or\nnewer. Page-style authoring and the wider vocabulary require runtime ",[439,2080,2081],{},"1.2.0",".\nThat covers expanded properties, functions, strings, states and ",[439,2084,2085],{},"max-width","\nqueries, plus inline text tags, plain lists, negated visibility, container\nlabels and the newer theme tokens. Validation names the exact runtime to\ndeclare. Old releases omit these optional fields and keep their serialization.\nSelector features compile to the same per-element rules, so they also work at\nruntime ",[439,2088,2077],{},". Deploy compatible publication validation and host rendering\nbefore upgrading an installed app to use a feature.",[431,2091,2093],{"id":2092},"review-before-publication","Review before publication",[427,2095,2096,2097,2100,2101,2104,2105,2108,2109,2112,2113,2116,2117,2119],{},"Open ",[439,2098,2099],{},"\u002Fapps\u002Fpreview"," from ",[954,2102,2103],{},"Apps → Preview layouts",". Governance, operations,\ncollection and studio examples show different workflows. The studio example is\nwritten entirely in page-style markup and CSS. Edit embedded TOML, open the\ncompiled manifest JSON produced by ",[439,2106,2107],{},"rac app inspect --json",", or open ",[439,2110,2111],{},"app-release.json"," from\n",[439,2114,2115],{},"rac app build",". A source containing external ",[439,2118,453],{}," references must first be\nexpanded by the CLI. Apply realistic fixture JSON and inspect populated, empty,\nloading and error states at desktop and mobile sizes.",[427,2121,2122],{},"The preview uses the publication compiler and installed renderer, with only\nlocal-state\u002Fnavigation action ports. It does not execute entity writes,\ncapability requests or live data views. It cannot prove persistence,\nserver-side voting rules, export behavior or release authenticity.",[427,2124,2125],{},"Start with a clear primary task and a recognizable visual hierarchy. Compose\nnavigation, context and primary content intentionally. Choose names for entity\nrelationships, put secondary forms in a dialog or disclosure, and provide\nuseful state messages. Inspect screenshots yourself; structural validity does\nnot assess visual quality. Exercise keyboard focus, dialog dismissal, labels,\nthe primary action and long content, then verify persistence in the installed\napp through the ordinary release lifecycle.",[427,2127,2128,2129,2132],{},"The existing ",[439,2130,2131],{},"runtime-app.spec.ts"," browser gate renders all four examples on\ndesktop and mobile, retains state screenshots, checks responsive columns and\noverflow, and exercises named selection and dialog focus. Its screenshots are\nreview artifacts rather than proof that every authored design looks good.",[1030,2134,2135],{},"html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sovSZ, html code.shiki .sovSZ{--shiki-light:#22863A;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sPrNH, html code.shiki .sPrNH{--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":461,"searchDepth":482,"depth":482,"links":2137},[2138,2139,2140,2141],{"id":433,"depth":482,"text":434},{"id":1310,"depth":482,"text":1311},{"id":1666,"depth":482,"text":1667},{"id":2092,"depth":482,"text":2093},"Compile declarative templates and scoped CSS into portable app components, then review real desktop and mobile rendering.","md","2026-10-10",null,"preview",{"toc":502,"visibility":259},{"title":307,"description":2142},"i6d8YiXvJY_N1wknvwAj6odjyXuvOSb4TmEd6ImpFns",[2151,2153],{"title":303,"path":304,"stem":305,"description":2152,"children":-1},"A second portable application using the same signed entities, actions and shared host as the collaborative board.",{"title":311,"path":312,"stem":313,"description":2154,"children":-1},"How to build an application vertical on the platform, in order — Rust schema, ingestion, transforms, service surface, UI, then deployment.",1791883623736]