[{"data":1,"prerenderedAt":967},["ShallowReactive",2],{"navigation_docs":3,"-develop-pipeline-apps-metrics-notebook":451,"-develop-pipeline-apps-metrics-notebook-surround":962},[4,82,155,181,196,225,294,353,418],{"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,"visibility":25,"redirect":184,"path":185,"stem":186,"children":187,"page":73},"Users","i-lucide-user","\u002Fusers\u002Finstall\u002Fagent-tools","\u002Fusers","2.users",[188],{"title":189,"path":190,"stem":191,"children":192,"page":73},"Install","\u002Fusers\u002Finstall","2.users\u002F1.install",[193],{"title":194,"path":184,"stem":195},"Agent tools setup","2.users\u002F1.install\u002F4.agent-tools",{"title":197,"icon":198,"redirect":199,"path":200,"stem":201,"children":202,"page":73},"Architecture","i-lucide-layers","\u002Finfrastructure\u002Foverview","\u002Finfrastructure","3.infrastructure",[203,205,209,213,217,221],{"title":197,"path":199,"stem":204},"3.infrastructure\u002F0.overview",{"title":206,"path":207,"stem":208},"A request through the platform","\u002Finfrastructure\u002Frequest-path","3.infrastructure\u002F11.request-path",{"title":210,"path":211,"stem":212},"Agent work and durable state","\u002Finfrastructure\u002Fagent-work","3.infrastructure\u002F12.agent-work",{"title":214,"path":215,"stem":216},"Data and pipelines","\u002Finfrastructure\u002Fdata","3.infrastructure\u002F3.data",{"title":218,"path":219,"stem":220},"AI and agents","\u002Finfrastructure\u002Fai","3.infrastructure\u002F4.ai",{"title":222,"path":223,"stem":224},"Managed deployment","\u002Finfrastructure\u002Fdeployment","3.infrastructure\u002F7.deployment",{"title":226,"icon":227,"redirect":228,"path":229,"stem":230,"children":231,"page":73},"API","i-lucide-book-marked","\u002Freference\u002Fauthentication","\u002Freference","4.reference",[232,235,239,243,247,251,255,259,263,267,271,275],{"title":233,"path":228,"stem":234},"Authentication","4.reference\u002F1.authentication",{"title":236,"path":237,"stem":238},"Security disclosure policy","\u002Freference\u002Fsecurity-disclosure","4.reference\u002F11.security-disclosure",{"title":240,"path":241,"stem":242},"RAC command guide","\u002Freference\u002Frac","4.reference\u002F13.rac",{"title":244,"path":245,"stem":246},"Model API","\u002Freference\u002Fllm-api","4.reference\u002F2.llm-api",{"title":248,"path":249,"stem":250},"MCP server","\u002Freference\u002Fmcp","4.reference\u002F2.mcp",{"title":252,"path":253,"stem":254},"Data platform preview","\u002Freference\u002Fdata-platform-preview","4.reference\u002F3.data-platform-preview",{"title":256,"path":257,"stem":258},"Terminal client","\u002Freference\u002Fcli","4.reference\u002F6.cli",{"title":260,"path":261,"stem":262},"Pipeline manifest preview","\u002Freference\u002Fpipeline-preview","4.reference\u002F7.pipeline-preview",{"title":264,"path":265,"stem":266},"Limits and retries","\u002Freference\u002Flimits","4.reference\u002F8.limits",{"title":268,"path":269,"stem":270},"API contract details","\u002Freference\u002Fapi-contracts","4.reference\u002F9.api-contracts",{"title":272,"path":273,"stem":274},"Errors","\u002Freference\u002Ferrors","4.reference\u002F9.errors",{"title":276,"icon":277,"visibility":278,"path":279,"stem":280,"children":281,"page":73},"Public API","i-lucide-route","public","\u002Freference\u002Froutes","4.reference\u002Froutes",[282,286,290],{"title":283,"path":284,"stem":285},"Memory routes","\u002Freference\u002Froutes\u002Fmemory","4.reference\u002Froutes\u002Fmemory",{"title":287,"path":288,"stem":289},"V1 routes","\u002Freference\u002Froutes\u002Fv1","4.reference\u002Froutes\u002Fv1",{"title":291,"path":292,"stem":293},"Voice routes","\u002Freference\u002Froutes\u002Fvoice","4.reference\u002Froutes\u002Fvoice",{"title":295,"icon":296,"visibility":25,"redirect":297,"path":298,"stem":299,"children":300,"page":73},"Develop","i-lucide-code","\u002Fdevelop\u002Fpipeline-apps\u002Foverview","\u002Fdevelop","5.develop",[301,305,337,341,345,349],{"title":302,"path":303,"stem":304},"Author a batch transform","\u002Fdevelop\u002Fauthor-a-batch-transform","5.develop\u002F10.author-a-batch-transform",{"title":306,"visibility":278,"redirect":297,"path":307,"stem":308,"children":309,"page":73},"Pipeline Apps","\u002Fdevelop\u002Fpipeline-apps","5.develop\u002F11.pipeline-apps",[310,313,317,321,325,329,333],{"title":311,"path":297,"stem":312},"Pipeline apps","5.develop\u002F11.pipeline-apps\u002F1.overview",{"title":314,"path":315,"stem":316},"Collaborative board walkthrough","\u002Fdevelop\u002Fpipeline-apps\u002Fcollaborative-board","5.develop\u002F11.pipeline-apps\u002F2.collaborative-board",{"title":318,"path":319,"stem":320},"Release and security lifecycle","\u002Fdevelop\u002Fpipeline-apps\u002Frelease-lifecycle","5.develop\u002F11.pipeline-apps\u002F3.release-lifecycle",{"title":322,"path":323,"stem":324},"Incident Triage","\u002Fdevelop\u002Fpipeline-apps\u002Fincident-triage","5.develop\u002F11.pipeline-apps\u002F4.incident-triage",{"title":326,"path":327,"stem":328},"App layout and authoring previews","\u002Fdevelop\u002Fpipeline-apps\u002Fpresentation","5.develop\u002F11.pipeline-apps\u002F5.presentation",{"title":330,"path":331,"stem":332},"Metrics Notebook","\u002Fdevelop\u002Fpipeline-apps\u002Fmetrics-notebook","5.develop\u002F11.pipeline-apps\u002F6.metrics-notebook",{"title":334,"path":335,"stem":336},"Webhook Relay","\u002Fdevelop\u002Fpipeline-apps\u002Fwebhook-relay","5.develop\u002F11.pipeline-apps\u002F7.webhook-relay",{"title":338,"path":339,"stem":340},"Tasks, repositories and applications from RAC","\u002Fdevelop\u002Fagent-task-cli","5.develop\u002F13.agent-task-cli",{"title":342,"path":343,"stem":344},"Build a vertical","\u002Fdevelop\u002Fbuild-a-vertical","5.develop\u002F5.build-a-vertical",{"title":346,"path":347,"stem":348},"Managed application artifacts","\u002Fdevelop\u002Fscaffold-a-narrow-app","5.develop\u002F7.scaffold-a-narrow-app",{"title":350,"path":351,"stem":352},"Import your data","\u002Fdevelop\u002Fimport-your-data","5.develop\u002F8.import-your-data",{"title":354,"icon":355,"redirect":356,"path":357,"stem":358,"children":359,"page":73},"Guides","i-lucide-layout-grid","\u002Fapplications\u002Fai-agents\u002Foverview","\u002Fapplications","7.applications",[360,364,384,396],{"title":361,"path":362,"stem":363},"Application maturity catalog","\u002Fapplications\u002Fcatalog","7.applications\u002F0.catalog",{"title":365,"visibility":278,"path":366,"stem":367,"children":368,"page":73},"AI Agents","\u002Fapplications\u002Fai-agents","7.applications\u002F1.ai-agents",[369,372,376,380],{"title":370,"path":356,"stem":371},"Coding agents","7.applications\u002F1.ai-agents\u002F01.overview",{"title":373,"path":374,"stem":375},"GitHub App automation","\u002Fapplications\u002Fai-agents\u002Fgithub-app-automation","7.applications\u002F1.ai-agents\u002F04.github-app-automation",{"title":377,"path":378,"stem":379},"agent-cli assistance","\u002Fapplications\u002Fai-agents\u002Fagent-cli-assistance","7.applications\u002F1.ai-agents\u002F05.agent-cli-assistance",{"title":381,"path":382,"stem":383},"Agent REST control","\u002Fapplications\u002Fai-agents\u002Frest-agent-control","7.applications\u002F1.ai-agents\u002F06.rest-agent-control",{"title":385,"visibility":278,"path":386,"stem":387,"children":388,"page":73},"Tickets","\u002Fapplications\u002Ftickets","7.applications\u002F2.tickets",[389,392],{"title":385,"path":390,"stem":391},"\u002Fapplications\u002Ftickets\u002Foverview","7.applications\u002F2.tickets\u002F01.overview",{"title":393,"path":394,"stem":395},"API walkthrough","\u002Fapplications\u002Ftickets\u002Fapi-walkthrough","7.applications\u002F2.tickets\u002F02.api-walkthrough",{"title":397,"icon":398,"visibility":278,"path":399,"stem":400,"children":401,"page":73},"Case studies","i-lucide-book-open-check","\u002Fapplications\u002Fcase-studies","7.applications\u002F6.case-studies",[402,406,410,414],{"title":403,"path":404,"stem":405},"Case study: owner-scoped tickets","\u002Fapplications\u002Fcase-studies\u002Ftickets","7.applications\u002F6.case-studies\u002F01.tickets",{"title":407,"path":408,"stem":409},"Case study: repository review and correction","\u002Fapplications\u002Fcase-studies\u002Frepository-review","7.applications\u002F6.case-studies\u002F02.repository-review",{"title":411,"path":412,"stem":413},"Case study: repairing crawlability on Redgold’s website","\u002Fapplications\u002Fcase-studies\u002Fpublic-website-seo","7.applications\u002F6.case-studies\u002F03.public-website-seo",{"title":415,"path":416,"stem":417},"Workflow account: Elusive reviews and managed CI","\u002Fapplications\u002Fcase-studies\u002Felusive-managed-review","7.applications\u002F6.case-studies\u002F04.elusive-managed-review",{"title":419,"icon":420,"redirect":421,"path":422,"stem":423,"children":424,"page":73},"Resources","i-lucide-library","\u002Fresources\u002Fglossary","\u002Fresources","9.resources",[425,428,432,436,440,443,447],{"title":426,"path":421,"stem":427},"Glossary","9.resources\u002F1.glossary",{"title":429,"path":430,"stem":431},"Terms of Service","\u002Fresources\u002Fterms","9.resources\u002F2.terms",{"title":433,"path":434,"stem":435},"Privacy Policy","\u002Fresources\u002Fprivacy","9.resources\u002F3.privacy",{"title":437,"path":438,"stem":439},"Acceptable Use Policy","\u002Fresources\u002Facceptable-use","9.resources\u002F4.acceptable-use",{"title":79,"path":441,"stem":442},"\u002Fresources\u002Ffaq","9.resources\u002F5.faq",{"title":444,"path":445,"stem":446},"Documentation feedback","\u002Fresources\u002Fdocs-feedback","9.resources\u002F6.docs-feedback",{"title":448,"path":449,"stem":450},"Refund and Cancellation Policy","\u002Fresources\u002Frefund-cancellation","9.resources\u002F7.refund-cancellation",{"id":452,"title":330,"access":278,"audience":453,"body":454,"description":953,"extension":954,"last_verified":955,"links":956,"maturity":957,"meta":958,"navigation":959,"path":331,"seo":960,"stem":332,"__hash__":961},"docs\u002F5.develop\u002F11.pipeline-apps\u002F6.metrics-notebook.md","developer",{"type":455,"value":456,"toc":946},"minimark",[457,470,475,483,499,505,516,520,613,623,627,773,785,789,796,800,803,942],[458,459,460,461,465,466,469],"p",{},"Metrics Notebook keeps a list of saved, named metric queries and shows the result\nof running one as a table. It ships no dedicated host page, renderer component\nor app-specific runtime branch. Its source is ",[462,463,464],"code",{},"apps\u002Fmetrics-notebook\u002Fapp.toml",";\nthe native records are in\n",[462,467,468],{},"crates\u002Fshared\u002Fschema\u002Fapp-metrics-notebook\u002Fsrc\u002Flib.rs",".",[471,472,474],"h2",{"id":473},"supported-workflow","Supported workflow",[458,476,477,478,482],{},"The notebook starts empty. ",[479,480,481],"strong",{},"New query"," opens a dialog that takes a name, a\ntarget metric and an optional description. Each saved query has two run\nbuttons:",[484,485,486,493],"ul",{},[487,488,489,492],"li",{},[479,490,491],{},"Run summary"," groups the matching samples by service and shows the count,\naverage, minimum and maximum.",[487,494,495,498],{},[479,496,497],{},"Latest samples"," shows the 50 most recent matching samples.",[458,500,501,504],{},[479,502,503],{},"Edit"," opens the query page. There you can change the name, metric and\ndescription, or delete the query.",[458,506,507,508,511,512,515],{},"Queries read the app's own ",[462,509,510],{},"MetricSample"," dataset. The ",[479,513,514],{},"Record a sample"," form\non the notebook page appends a sample (metric, service and value), and the\nserver sets its timestamp. This keeps the app self-contained, so it needs no\ncross-app dataset grant.",[471,517,519],{"id":518},"one-package-existing-host","One package, existing host",[521,522,523,536],"table",{},[524,525,526],"thead",{},[527,528,529,533],"tr",{},[530,531,532],"th",{},"Package declaration",[530,534,535],{},"Shared implementation",[537,538,539,555,566,584,592,603],"tbody",{},[527,540,541,552],{},[542,543,544,545,548,549,551],"td",{},"Native ",[462,546,547],{},"MetricQuery"," and ",[462,550,510],{}," schemas",[542,553,554],{},"Descriptor validation, typed CBOR records and per-field merge",[527,556,557,563],{},[542,558,559,562],{},[462,560,561],{},"metric-query-list"," pipeline",[542,564,565],{},"Authorized dataset read, filters, deterministic sort and projection",[527,567,568,577],{},[542,569,570,548,573,576],{},[462,571,572],{},"metric-summary",[462,574,575],{},"metric-recent"," pipelines",[542,578,579,580,583],{},"The ",[462,581,582],{},"invoke_pipeline"," action with one signed input binding, applied as an overlay filter",[527,585,586,589],{},[542,587,588],{},"Create, edit and delete actions",[542,590,591],{},"Durable entity operations, optimistic projection and explicit field masks",[527,593,594,600],{},[542,595,596,597,599],{},"Bound ",[462,598,521],{}," views",[542,601,602],{},"The shared data-view host",[527,604,605,610],{},[542,606,607],{},[462,608,609],{},"foreground_snapshot_v1",[542,611,612],{},"The installed host's bounded foreground refresh scheduler",[458,614,615,616,548,619,622],{},"The release requests read and write access to\n",[462,617,618],{},"app.metrics_notebook.MetricQuery",[462,620,621],{},"app.metrics_notebook.MetricSample",", and\ninvocation of the three pipelines. It requests no network, secret, notification\nor infrastructure capability.",[471,624,626],{"id":625},"author-build-and-install","Author, build and install",[628,629,634],"pre",{"className":630,"code":631,"language":632,"meta":633,"style":633},"language-bash shiki shiki-themes github-light github-light github-dark","rac app validate apps\u002Fmetrics-notebook\u002Fapp.toml\nrac app build apps\u002Fmetrics-notebook\u002Fapp.toml\nrac des spec publish --manifest apps\u002Fmetrics-notebook\u002Fpipelines\u002Fmetric-query-list.toml\nrac des spec publish --manifest apps\u002Fmetrics-notebook\u002Fpipelines\u002Fmetric-summary.toml\nrac des spec publish --manifest apps\u002Fmetrics-notebook\u002Fpipelines\u002Fmetric-recent.toml\nrac app publish apps\u002Fmetrics-notebook\u002Fapp.toml\nrac app install metrics-notebook --version 0.1.0 \\\n  --installation-id metrics-notebook-example \\\n  --grant notebook-read,notebook-write,notebook-pipelines\n","bash","",[462,635,636,655,667,688,704,720,731,753,764],{"__ignoreMap":633},[637,638,641,645,649,652],"span",{"class":639,"line":640},"line",1,[637,642,644],{"class":643},"snPdu","rac",[637,646,648],{"class":647},"sIIMD"," app",[637,650,651],{"class":647}," validate",[637,653,654],{"class":647}," apps\u002Fmetrics-notebook\u002Fapp.toml\n",[637,656,658,660,662,665],{"class":639,"line":657},2,[637,659,644],{"class":643},[637,661,648],{"class":647},[637,663,664],{"class":647}," build",[637,666,654],{"class":647},[637,668,670,672,675,678,681,685],{"class":639,"line":669},3,[637,671,644],{"class":643},[637,673,674],{"class":647}," des",[637,676,677],{"class":647}," spec",[637,679,680],{"class":647}," publish",[637,682,684],{"class":683},"sBjJW"," --manifest",[637,686,687],{"class":647}," apps\u002Fmetrics-notebook\u002Fpipelines\u002Fmetric-query-list.toml\n",[637,689,691,693,695,697,699,701],{"class":639,"line":690},4,[637,692,644],{"class":643},[637,694,674],{"class":647},[637,696,677],{"class":647},[637,698,680],{"class":647},[637,700,684],{"class":683},[637,702,703],{"class":647}," apps\u002Fmetrics-notebook\u002Fpipelines\u002Fmetric-summary.toml\n",[637,705,707,709,711,713,715,717],{"class":639,"line":706},5,[637,708,644],{"class":643},[637,710,674],{"class":647},[637,712,677],{"class":647},[637,714,680],{"class":647},[637,716,684],{"class":683},[637,718,719],{"class":647}," apps\u002Fmetrics-notebook\u002Fpipelines\u002Fmetric-recent.toml\n",[637,721,723,725,727,729],{"class":639,"line":722},6,[637,724,644],{"class":643},[637,726,648],{"class":647},[637,728,680],{"class":647},[637,730,654],{"class":647},[637,732,734,736,738,741,744,747,750],{"class":639,"line":733},7,[637,735,644],{"class":643},[637,737,648],{"class":647},[637,739,740],{"class":647}," install",[637,742,743],{"class":647}," metrics-notebook",[637,745,746],{"class":683}," --version",[637,748,749],{"class":683}," 0.1.0",[637,751,752],{"class":683}," \\\n",[637,754,756,759,762],{"class":639,"line":755},8,[637,757,758],{"class":683},"  --installation-id",[637,760,761],{"class":647}," metrics-notebook-example",[637,763,752],{"class":683},[637,765,767,770],{"class":639,"line":766},9,[637,768,769],{"class":683},"  --grant",[637,771,772],{"class":647}," notebook-read,notebook-write,notebook-pipelines\n",[458,774,775,776,780,781,784],{},"Publication requires the same registry authority and grant review described in\nthe ",[777,778,779],"a",{"href":319},"release lifecycle",". Only\n",[462,782,783],{},"build\u002Fapp-release.json"," is checked in.",[471,786,788],{"id":787},"bounds","Bounds",[458,790,791,792,795],{},"The query list returns at most 200 live queries, sorted by name. The summary\nreads at most 200 grouped rows and the recent view returns 50 rows. The only\nuser-chosen part of a query is the metric it filters on. The grouping\n(",[462,793,794],{},"metric, service","), the aggregates and the row limits are fixed when the\npipelines are signed.",[471,797,799],{"id":798},"friction-log","Friction log",[458,801,802],{},"These are the problems we hit while building the app. We describe them here\nwithout filing tickets.",[484,804,805,818,827,841,854,871,895,916,929],{},[487,806,807,810,811,814,815,817],{},[479,808,809],{},"No delete operation."," Entity operations are only create, set_fields,\nadd_set_element and remove_set_element. Delete is a soft delete: a ",[462,812,813],{},"deleted","\nbool written through a ",[462,816,813],{}," field mask, which the list pipeline filters\nout. Deleted records stay in storage.",[487,819,820,823,824,826],{},[479,821,822],{},"One parameter per pipeline invocation."," ",[462,825,582],{}," binds a single\ninput value, and its column, operator and value kind are fixed at signing.\nUsers therefore cannot choose a column, operator, aggregate or limit. The\n\"query\" is a saved filter value plus a choice between two pre-signed shapes.",[487,828,829,832,833,836,837,840],{},[479,830,831],{},"The overlay filter runs after the base stages."," The parameter filter is\nappended after the pipeline's own stages. The summary fold must therefore keep\n",[462,834,835],{},"metric"," in ",[462,838,839],{},"group_by",", or the filter column would no longer exist. We have\nnot verified whether the 200-row source limit applies before or after the\nfold.",[487,842,843,846,847,849,850,853],{},[479,844,845],{},"Table columns are static."," A ",[462,848,521],{}," view descriptor is a literal string,\nso the two result shapes need two tables, chosen with ",[462,851,852],{},"v-if"," flags.",[487,855,856,859,860,863,864,867,868,469],{},[479,857,858],{},"Collections need a fixed group."," Optimistic and hydration config requires\na group, so the list is ",[462,861,862],{},"v-for group in $state.queries"," around a ",[462,865,866],{},"list",".\nThere are no index paths such as ",[462,869,870],{},"queries[0].items",[487,872,873,881,882,885,886,885,889,892,893,469],{},[479,874,875,877,878,469],{},[462,876,852],{}," takes only booleans and lacks ",[462,879,880],{},"v-else-if"," We set the derived flags\n(",[462,883,884],{},"show_summary",", ",[462,887,888],{},"show_recent",[462,890,891],{},"sample_recorded",") with literal action steps.\nThe \"no result yet\" state is a nested negated ",[462,894,852],{},[487,896,897,823,900,903,904,907,908,911,912,915],{},[479,898,899],{},"Prop enums are checked only at validate time.",[462,901,902],{},"variant=\"ghost\""," and\n",[462,905,906],{},"tone=\"success\""," passed authoring and failed ",[462,909,910],{},"rac app validate",". A text\n",[462,913,914],{},"tone"," also propagates onto inline children.",[487,917,918,921,922,924,925,928],{},[479,919,920],{},"Async table in host tests."," The ",[462,923,521],{}," node renders through the async\n",[462,926,927],{},"DataViewHost",". The host test therefore checks the compiled rows binding\nrather than rendered cells.",[487,930,931,823,934,937,938,941],{},[479,932,933],{},"Observation:",[462,935,936],{},"remoteInstalledRuntimeAppSource.ts"," still contains\n",[462,939,940],{},"media","-specific branches in shared host code.",[943,944,945],"style",{},"html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}",{"title":633,"searchDepth":657,"depth":657,"links":947},[948,949,950,951,952],{"id":473,"depth":657,"text":474},{"id":518,"depth":657,"text":519},{"id":625,"depth":657,"text":626},{"id":787,"depth":657,"text":788},{"id":798,"depth":657,"text":799},"A gallery app that saves named metric queries and runs them through signed, parameterized pipelines on the shared host.","md","2026-10-25",null,"preview",{"toc":959,"visibility":278},true,{"title":330,"description":953},"rwxHJJX1myHVcWiFjdVlCXlBT8YqzVFlmU1_NYOFgwM",[963,965],{"title":326,"path":327,"stem":328,"description":964,"children":-1},"Compile declarative templates and scoped CSS into portable app components, then review real desktop and mobile rendering.",{"title":334,"path":335,"stem":336,"description":966,"children":-1},"A gallery app that records inbound webhook events, matches them to relay rules and tracks each delivery's status on the shared host.",1793335582409]