Skip to content

feat(agent_platform): kernel skills + MCP builder playbooks#66211

Open
daniloc wants to merge 7 commits into
masterfrom
feat/agent-builder-playbooks-from-mcp
Open

feat(agent_platform): kernel skills + MCP builder playbooks#66211
daniloc wants to merge 7 commits into
masterfrom
feat/agent-builder-playbooks-from-mcp

Conversation

@daniloc

@daniloc daniloc commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Problem (written by Danilo)

Migrating to the skills store left the agent builder in an awkward place. It had duplicate skills to reason about, since its playbooks now lived in two places, and its prompting wasn't helping at all.

We need a way to left the agent builder reference the same playbooks via MCP that MCP consumers do, while still allowing its agent-specific guidance (how to use focus tools, for example) to be scoped properly.

Changes (written by robot)

Splits the concierge's instructional content into three clearly-owned homes:

Home What Delivery
Kernel skills (4) The concierge's own runtime behaviour, coupled to the platform — safety, console UI, working outside the console, fleet audit Injected into the bundle at freeze from backend code (products/agent_platform/backend/kernel_skills/), merged with store-resolved skill_refs. Code-locked, identical across accounts, never in the DB.
MCP playbooks (13) Reusable builder knowledge — read / debug / edit / author agents, identity, secrets, Slack, MCP-surface design, model choice, testing, cost, observability Moved to services/mcp/playbooks/, served on demand via agent-resolve-resource with a live, scope-aware tool surface.
Skill store Team-authored skills skill_refs (unchanged).

The load-bearing constraint: any agent can carry kernel skills, but no outside author can author them. There is no skills field on any author endpoint, so skill_refs → the store stays the only author path into a bundle's skills/. Kernel content must move in lockstep with the platform and be identical per account, so it can't live in the DB (drift) and can't be author-supplied.

Kernel skills are fully data-driven: each is a folder whose SKILL.md frontmatter declares its description and an agents mapping (["*"] = every agent / the shared baseline, or a slug list). Adding one is "drop a folder." At freeze the injected kernel ids are exempted from the legacy-orphan guard and the bundle sweep, with a kernel-vs-store alias collision check.

How did you test this code?

I'm an agent (Claude Code) — no manual UI testing. Automated checks I actually ran:

  • 27 Python teststest_freeze_skill_refs.py (new: injection alongside store refs, sweep exemption, collision rejection, legacy-guard exemption) + new test_kernel_skills.py (registry folder-scan, agents mapping, single-line/≤280 parity). mypy clean on changed files.
  • Full MCP suite (1947 tests) — codegen/schema consistency after the playbook move + tool-inputs.json regen.
  • agent-tests harness — the example-agent-builder bundle wiring case (43 files / 289 tests green on an isolated run).
  • End-to-end, locally — deployed the concierge and confirmed a live session reads both a kernel skill (@posthog/load-skill) and an MCP playbook (agent-resolve-resource) in one turn, and that the frozen spec.skills[].description lands full rather than truncated.

Regressions these tests catch: the freeze tests fail if the injection / sweep-exemption / collision-check are reverted; the registry test fails if a kernel description is folded or >280 chars — which would silently truncate the model's skill-load signal (the janitor derives the description from only the first frontmatter line).

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

Internal in-tree docs only: the example-bundle README and a new services/mcp/playbooks/README.md describing the three homes. No public docs affected.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Built with Claude Code (Opus 4.8). Skill invoked: /qa-team (multi-agent review of the branch before this PR). /django-migrations and /improving-drf-endpoints were loaded while working in the freeze view, though no migration was ultimately needed (the design is pure freeze logic + content).

Design path worth flagging for review — the gate placement changed twice: an app-level allow_kernel_skills flag was rejected (every agent should be able to carry kernel content; the gate belongs on authoring, not the app), as was a privileged internal write endpoint (no inbound internal auth exists on the authoring views) and a kernel_skills author spec field (authors must not be able to author them). The landing point — server-side injection at freeze from backend code — keeps the store-only boundary intact for authors while letting the platform inject. The /qa-team pass then caught a real bug: the janitor derives spec.skills[].description from only the first frontmatter line, so the folded multi-line descriptions were silently truncated (the model's load signal for safety-and-boundaries lost its trigger clause). Fixed with single-line ≤280 descriptions plus a load-time parity guard, and a CI-blocking un-regenerated tool-inputs.json was regenerated.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BY6C34DmGGmL4sgx5Wajn6

daniloc and others added 3 commits June 25, 2026 14:27
…books

The agent-builder concierge bundled 17 "skills" that were ALSO served by the
MCP `agent-resolve-resource` tool (both generated from the same dir), so the
agent had two copies of the same guidance and agent.md told it the bundled
copy was "primary" — the wrong one. Resolve by giving each piece of content
exactly one home, chosen by what it is:

- **Builder playbooks (13)** — reusable knowledge about the authoring tools.
  Moved to `services/mcp/playbooks/` (MCP-owned), served via
  `agent-resolve-resource` to any consumer with a live, scope-aware tool
  surface. No longer bundled. The concierge fetches them like any other MCP
  consumer — it builds agents, so it needs build knowledge the same way Code
  does.
- **Kernel skills (4)** — the concierge's own runtime behaviour, coupled to
  the implementation (`focus_*` client tools, client-kind modes, safety
  persona, fleet-audit workflow): safety-and-boundaries, using-the-console-ui,
  working-outside-the-console, auditing-the-fleet. Stay code-bundled in the
  concierge — they must move in lockstep with the runtime and can't drift in a
  per-account DB, so they are NOT store skills.

This complements the skill-store work: store = team content (skill_refs, DB,
per-account); MCP playbooks = platform docs (code, served to builders); kernel
= the concierge's architecture-coupled behaviour (code, bundled). Each piece
of content has one canonical home; nothing is inlined-and-duplicated.

agent.md rewritten to distinguish "fetch the <id> playbook" (the 13) from
"load skills/<id>" (the 4 kernel), with a framing section up top.
`services/mcp/playbooks/README.md` captures the three-home rationale.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The tool's top-level description still called the playbooks "the same skills
the agent concierge loads" — stale after the split. They are builder playbooks
the concierge (and any consumer) fetches; the concierge's kernel skills are
bundled separately. Reword to match, and note the response includes the live
tool surface.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Kernel skills — the concierge's own code-locked operator behaviour
(safety, console-UI, working-outside-the-console, fleet audit) — are now
injected into an agent's bundle at freeze from backend code
(products/agent_platform/backend/kernel_skills/), materialized alongside
the store-resolved skill_refs and merged into the derived spec.skills[].

They cannot be authored through any API: there is no skills field on an
author endpoint, so skill_refs -> the llma-skill store stays the only
author path into a bundle's skills/. Kernel content must move in lockstep
with the platform and be identical across accounts, so it can't live in
the DB (drift) and can't be author-authored. (The skill-store cutover had
made bundle skills store-only, removing the prior inline path.)

Data-driven: each kernel skill is a folder whose SKILL.md frontmatter
declares its description and an `agents` mapping (`*` = every agent, or a
slug list). The freeze exempts kernel ids from the legacy-orphan guard and
the sweep, with a kernel-vs-store alias collision check.

Also addresses review findings: single-line <=280 descriptions with a
load-time parity guard (the janitor derives spec.skills[].description from
only the first frontmatter line, so a folded one would silently truncate
the model's load signal), loud validation of malformed kernel folders,
regenerated services/mcp/schema/tool-inputs.json, and doc path fixes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY6C34DmGGmL4sgx5Wajn6
@daniloc daniloc self-assigned this Jun 25, 2026
@assign-reviewers-posthog assign-reviewers-posthog Bot requested a review from a team June 25, 2026 20:49
@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Size Change: 0 B

Total Size: 64 MB

ℹ️ View Unchanged
Filename Size
frontend/dist-report/decompression-worker/src/scenes/session-recordings/player/snapshot-processing/decompressionWorker 2.85 kB
frontend/dist-report/exporter/_chunks/chunk 2.24 MB
frontend/dist-report/exporter/_parent/products/actions/frontend/pages/Action 27.9 kB
frontend/dist-report/exporter/_parent/products/actions/frontend/pages/Actions 5.66 kB
frontend/dist-report/exporter/_parent/products/ai_gateway/frontend/AIGatewayScene 13.2 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityScene 120 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilitySessionScene 19.4 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityTraceScene 132 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/AIObservabilityUsers 3.44 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene 21.8 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene 53.9 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene 20.7 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene 4.07 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation 60.6 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene 32.8 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/evaluations/EvaluationTemplates 671 B
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay 4.81 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene 37.5 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptScene 32.8 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene 5.21 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTag 32 kB
frontend/dist-report/exporter/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene 11.8 kB
frontend/dist-report/exporter/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene 23.3 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee 1.38 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours 2.69 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/components/TicketTags/CyclotronJobInputTicketTags 783 B
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene 5.73 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene 41.4 kB
frontend/dist-report/exporter/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene 1.68 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene 100 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene 6.48 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene 6.33 kB
frontend/dist-report/exporter/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene 9.23 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/DataWarehouseScene 32.3 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene 2.88 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene 34.1 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene 7 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene 2.69 kB
frontend/dist-report/exporter/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene 7.49 kB
frontend/dist-report/exporter/_parent/products/early_access_features/frontend/EarlyAccessFeature 5.54 kB
frontend/dist-report/exporter/_parent/products/early_access_features/frontend/EarlyAccessFeatures 3.73 kB
frontend/dist-report/exporter/_parent/products/endpoints/frontend/EndpointScene 47.6 kB
frontend/dist-report/exporter/_parent/products/endpoints/frontend/EndpointsScene 27.4 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene 5.31 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene 21.5 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene 20.8 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene 6.42 kB
frontend/dist-report/exporter/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene 7.94 kB
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene 7.66 kB
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene 102 kB
frontend/dist-report/exporter/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene 42.6 kB
frontend/dist-report/exporter/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene 6.91 kB
frontend/dist-report/exporter/_parent/products/games/368Hedgehogs/368Hedgehogs 5.24 kB
frontend/dist-report/exporter/_parent/products/games/FlappyHog/FlappyHog 5.7 kB
frontend/dist-report/exporter/_parent/products/growth/frontend/IdentityMatchingScene 35.9 kB
frontend/dist-report/exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene 60.1 kB
frontend/dist-report/exporter/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene 6.37 kB
frontend/dist-report/exporter/_parent/products/links/frontend/LinkScene 25.4 kB
frontend/dist-report/exporter/_parent/products/links/frontend/LinksScene 5.15 kB
frontend/dist-report/exporter/_parent/products/live_debugger/frontend/LiveDebugger 19.6 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/LogsScene 22.6 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene 18.5 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene 9 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene 6.11 kB
frontend/dist-report/exporter/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene 3.12 kB
frontend/dist-report/exporter/_parent/products/managed_migrations/frontend/ManagedMigration 15.2 kB
frontend/dist-report/exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene 109 kB
frontend/dist-report/exporter/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail 20.1 kB
frontend/dist-report/exporter/_parent/products/metrics/frontend/MetricsScene 18.1 kB
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/sandbox/components/tool/builtinToolRenderers 4.48 kB
frontend/dist-report/exporter/_parent/products/posthog_ai/frontend/sandbox/SandboxQuestionRenderer 1.76 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/stickiness/StickinessBarChart/StickinessBarChart 4.17 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/stickiness/StickinessLineChart/StickinessLineChart 4.05 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart 9.6 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsLifecycleChart/TrendsLifecycleChart 5.87 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart 5.82 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsPieChart/TrendsPieChart 5.01 kB
frontend/dist-report/exporter/_parent/products/product_analytics/frontend/insights/trends/TrendsSlopeChart/TrendsSlopeChart 2.6 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/observations/ReplayObservation 17.9 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner 41.3 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene 22.4 kB
frontend/dist-report/exporter/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene 25.2 kB
frontend/dist-report/exporter/_parent/products/revenue_analytics/frontend/revenueAnalyticsLogic 1.49 kB
frontend/dist-report/exporter/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene 29.8 kB
frontend/dist-report/exporter/_parent/products/session_summaries/frontend/SessionGroupSummariesTable 5.4 kB
frontend/dist-report/exporter/_parent/products/session_summaries/frontend/SessionGroupSummaryScene 23.3 kB
frontend/dist-report/exporter/_parent/products/skills/frontend/LLMSkillScene 1.47 kB
frontend/dist-report/exporter/_parent/products/skills/frontend/LLMSkillsScene 1.48 kB
frontend/dist-report/exporter/_parent/products/tasks/frontend/SlackTaskContextScene 9 kB
frontend/dist-report/exporter/_parent/products/tasks/frontend/TaskTracker 67.9 kB
frontend/dist-report/exporter/_parent/products/tracing/frontend/TracingScene 86.6 kB
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterview 10.8 kB
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterviewResponse 8.05 kB
frontend/dist-report/exporter/_parent/products/user_interviews/frontend/UserInterviews 6.46 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene 3 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene 47.2 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene 8.23 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene 11.6 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene 14.3 kB
frontend/dist-report/exporter/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene 19.8 kB
frontend/dist-report/exporter/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate 17 kB
frontend/dist-report/exporter/_parent/products/workflows/frontend/Workflows/WorkflowScene 113 kB
frontend/dist-report/exporter/_parent/products/workflows/frontend/WorkflowsScene 61.4 kB
frontend/dist-report/exporter/src/exporter/exporter 25.9 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterDashboardScene 6.64 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterHeatmapScene 20.1 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterInsightScene 7.21 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterInterviewScene 310 kB
frontend/dist-report/exporter/src/exporter/scenes/ExporterNotebookScene 2.9 MB
frontend/dist-report/exporter/src/exporter/scenes/ExporterRecordingScene 5.59 kB
frontend/dist-report/exporter/src/exporterSharedChunkAnchors 1.26 kB
frontend/dist-report/exporter/src/lib/components/ActivityLog/describers 129 kB
frontend/dist-report/exporter/src/lib/components/Cards/TextCard/TextCardMarkdownEditor 10.6 kB
frontend/dist-report/exporter/src/lib/components/MonacoDiffEditor 533 B
frontend/dist-report/exporter/src/lib/lemon-ui/LemonMarkdown/MermaidDiagram 2 kB
frontend/dist-report/exporter/src/lib/lemon-ui/LemonTextArea/LemonTextAreaMarkdown 790 B
frontend/dist-report/exporter/src/lib/lemon-ui/Link/Link 415 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditor 448 B
frontend/dist-report/exporter/src/lib/monaco/CodeEditorImpl 26.5 kB
frontend/dist-report/exporter/src/lib/monaco/CodeEditorInline 649 B
frontend/dist-report/exporter/src/lib/monaco/vimMode 211 kB
frontend/dist-report/exporter/src/lib/ui/Button/ButtonPrimitives 482 B
frontend/dist-report/exporter/src/queries/nodes/WebVitals/WebVitals 11.5 kB
frontend/dist-report/exporter/src/queries/nodes/WebVitals/WebVitalsPathBreakdown 4.76 kB
frontend/dist-report/exporter/src/queries/Query/Query 5.08 kB
frontend/dist-report/exporter/src/queries/schema 955 kB
frontend/dist-report/exporter/src/scenes/approvals/changeRequestsLogic 622 B
frontend/dist-report/exporter/src/scenes/authentication/login/loginLogic 569 B
frontend/dist-report/exporter/src/scenes/authentication/shared/passkeyLogic 602 B
frontend/dist-report/exporter/src/scenes/data-pipelines/event-filtering/EventFilterScene 22.8 kB
frontend/dist-report/exporter/src/scenes/data-pipelines/TransformationsScene 8.09 kB
frontend/dist-report/exporter/src/scenes/experiments/notebook/NotebookCompactTable 1.54 kB
frontend/dist-report/exporter/src/scenes/hog-functions/misc/Diff 1.35 kB
frontend/dist-report/exporter/src/scenes/insights/views/BoxPlot/BoxPlot 4.49 kB
frontend/dist-report/exporter/src/scenes/insights/views/CalendarHeatMap/CalendarHeatMap 8.88 kB
frontend/dist-report/exporter/src/scenes/insights/views/RegionMap/RegionMap 30.3 kB
frontend/dist-report/exporter/src/scenes/insights/views/WorldMap/WorldMap 1.04 MB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/CreateInsightWidget 5.73 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/CreateNotebookWidget 1.8 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/EditDiffRenderer 3.23 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/ErrorTrackingWidget 5.55 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/QueryWidget 5.67 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/SearchSessionRecordingsWidget 5.58 kB
frontend/dist-report/exporter/src/scenes/max/messages/adapters/UpsertDashboardWidget 1.61 kB
frontend/dist-report/exporter/src/scenes/models/ModelsScene 20 kB
frontend/dist-report/exporter/src/scenes/models/NodeDetailScene 19 kB
frontend/dist-report/monaco-editor-worker/src/lib/monaco/workers/monacoEditorWorker 288 kB
frontend/dist-report/monaco-json-worker/src/lib/monaco/workers/monacoJsonWorker 419 kB
frontend/dist-report/monaco-typescript-worker/src/lib/monaco/workers/monacoTsWorker 7.02 MB
frontend/dist-report/posthog-app/_chunks/chunk 2.62 MB
frontend/dist-report/posthog-app/_parent/products/actions/frontend/pages/Action 29.3 kB
frontend/dist-report/posthog-app/_parent/products/actions/frontend/pages/Actions 6.95 kB
frontend/dist-report/posthog-app/_parent/products/ai_gateway/frontend/AIGatewayScene 13.7 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityScene 122 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilitySessionScene 19.9 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityTraceScene 133 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/AIObservabilityUsers 4.23 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/clusters/AIObservabilityClusterScene 22.3 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/clusters/AIObservabilityClustersScene 54.4 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetScene 21.2 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/datasets/AIObservabilityDatasetsScene 4.54 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluation 61.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/AIObservabilityEvaluationsScene 34.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/evaluations/EvaluationTemplates 671 B
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/LLMASessionFeedbackDisplay 4.81 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/playground/AIObservabilityPlaygroundScene 38.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptScene 34.1 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/prompts/LLMPromptsScene 5.69 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTag 33.2 kB
frontend/dist-report/posthog-app/_parent/products/ai_observability/frontend/tags/AIObservabilityTagsScene 13 kB
frontend/dist-report/posthog-app/_parent/products/business_knowledge/frontend/scenes/BusinessKnowledgeScene 23.8 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/Assignee/CyclotronJobInputAssignee 1.38 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/SlaBusinessHours/CyclotronJobInputBusinessHours 2.7 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/components/TicketTags/CyclotronJobInputTicketTags 783 B
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/settings/SupportSettingsScene 7.77 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/ticket/SupportTicketScene 35.2 kB
frontend/dist-report/posthog-app/_parent/products/conversations/frontend/scenes/tickets/SupportTicketsScene 2.15 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/CustomerAnalyticsScene 100 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerAnalyticsConfigurationScene/CustomerAnalyticsConfigurationScene 8.52 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyBuilderScene/CustomerJourneyBuilderScene 7.58 kB
frontend/dist-report/posthog-app/_parent/products/customer_analytics/frontend/scenes/CustomerJourneyTemplatesScene/CustomerJourneyTemplatesScene 10 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/DataWarehouseScene 2.04 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/NewSourceScene/NewSourceScene 3.66 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SchemaScene/SchemaScene 34.6 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourceConnectScene/SourceConnectScene 7.71 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourceScene/SourceScene 3.37 kB
frontend/dist-report/posthog-app/_parent/products/data_warehouse/frontend/scenes/SourcesScene/SourcesScene 8.1 kB
frontend/dist-report/posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeature 6.97 kB
frontend/dist-report/posthog-app/_parent/products/early_access_features/frontend/EarlyAccessFeatures 4.21 kB
frontend/dist-report/posthog-app/_parent/products/endpoints/frontend/EndpointScene 48.9 kB
frontend/dist-report/posthog-app/_parent/products/endpoints/frontend/EndpointsScene 26.7 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsAuthorScene 5.79 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/EngineeringAnalyticsScene 22 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/PullRequestDetailScene 21.3 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunDetailScene 6.89 kB
frontend/dist-report/posthog-app/_parent/products/engineering_analytics/frontend/scenes/WorkflowRunsScene 8.42 kB
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingFingerprintsScene/ErrorTrackingIssueFingerprintsScene 8.17 kB
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingIssueScene/ErrorTrackingIssueScene 103 kB
frontend/dist-report/posthog-app/_parent/products/error_tracking/frontend/scenes/ErrorTrackingScene/ErrorTrackingScene 44.9 kB
frontend/dist-report/posthog-app/_parent/products/feature_flags/frontend/FeatureFlagTemplatesScene 6.92 kB
frontend/dist-report/posthog-app/_parent/products/games/368Hedgehogs/368Hedgehogs 5.24 kB
frontend/dist-report/posthog-app/_parent/products/games/FlappyHog/FlappyHog 5.7 kB
frontend/dist-report/posthog-app/_parent/products/growth/frontend/IdentityMatchingScene 36.3 kB
frontend/dist-report/posthog-app/_parent/products/legal_documents/frontend/scenes/LegalDocumentNewScene 60.6 kB
frontend/dist-report/posthog-app/_parent/products/legal_documents/frontend/scenes/LegalDocumentsScene 6.84 kB
frontend/dist-report/posthog-app/_parent/products/links/frontend/LinkScene 25.9 kB
frontend/dist-report/posthog-app/_parent/products/links/frontend/LinksScene 5.63 kB
frontend/dist-report/posthog-app/_parent/products/live_debugger/frontend/LiveDebugger 20 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/components/LogsViewer/LogsViewerModal/LogsViewerModal 2.41 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/LogsScene 23.8 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsAlertDetailScene/LogsAlertDetailScene 19.1 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsAlertNotificationDetailScene/LogsAlertNotificationDetailScene 9.54 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsSamplingDetailScene/LogsSamplingDetailScene 6.59 kB
frontend/dist-report/posthog-app/_parent/products/logs/frontend/scenes/LogsSamplingNewScene/LogsSamplingNewScene 3.6 kB
frontend/dist-report/posthog-app/_parent/products/managed_migrations/frontend/ManagedMigration 15.7 kB
frontend/dist-report/posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsScene 110 kB
frontend/dist-report/posthog-app/_parent/products/mcp_analytics/frontend/MCPAnalyticsToolDetail 20.6 kB
frontend/dist-report/posthog-app/_parent/products/metrics/frontend/MetricsScene 18.9 kB
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/sandbox/components/tool/builtinToolRenderers 4.48 kB
frontend/dist-report/posthog-app/_parent/products/posthog_ai/frontend/sandbox/SandboxQuestionRenderer 1.76 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/stickiness/StickinessBarChart/StickinessBarChart 4.62 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/stickiness/StickinessLineChart/StickinessLineChart 4.5 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsBarChart/TrendsBarChart 10 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsLifecycleChart/TrendsLifecycleChart 6.31 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsLineChart/TrendsLineChart 6.27 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsPieChart/TrendsPieChart 5.45 kB
frontend/dist-report/posthog-app/_parent/products/product_analytics/frontend/insights/trends/TrendsSlopeChart/TrendsSlopeChart 3 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/observations/ReplayObservation 20 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScanner 42.6 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ReplayScannersScene 23.6 kB
frontend/dist-report/posthog-app/_parent/products/replay_vision/frontend/replay_scanners/ScannerEditorScene 25.7 kB
frontend/dist-report/posthog-app/_parent/products/revenue_analytics/frontend/revenueAnalyticsLogic 1.86 kB
frontend/dist-report/posthog-app/_parent/products/revenue_analytics/frontend/RevenueAnalyticsScene 31.1 kB
frontend/dist-report/posthog-app/_parent/products/session_summaries/frontend/SessionGroupSummariesTable 5.88 kB
frontend/dist-report/posthog-app/_parent/products/session_summaries/frontend/SessionGroupSummaryScene 25.3 kB
frontend/dist-report/posthog-app/_parent/products/skills/frontend/LLMSkillScene 1.94 kB
frontend/dist-report/posthog-app/_parent/products/skills/frontend/LLMSkillsScene 1.96 kB
frontend/dist-report/posthog-app/_parent/products/tasks/frontend/SlackTaskContextScene 9.47 kB
frontend/dist-report/posthog-app/_parent/products/tasks/frontend/TaskTracker 27.5 kB
frontend/dist-report/posthog-app/_parent/products/tracing/frontend/TracingScene 87.1 kB
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterview 10.8 kB
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterviewResponse 8.52 kB
frontend/dist-report/posthog-app/_parent/products/user_interviews/frontend/UserInterviews 6.94 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewIndexScene 3.48 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewRunScene 47.7 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewRunsScene 8.71 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSettingsScene 12.1 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotHistoryScene 14.7 kB
frontend/dist-report/posthog-app/_parent/products/visual_review/frontend/scenes/VisualReviewSnapshotOverviewScene 20.3 kB
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/TemplateLibrary/MessageTemplate 17.6 kB
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/Workflows/WorkflowScene 107 kB
frontend/dist-report/posthog-app/_parent/products/workflows/frontend/WorkflowsScene 62.5 kB
frontend/dist-report/posthog-app/src/index 62.4 kB
frontend/dist-report/posthog-app/src/layout/panel-layout/ai-first/tabs/NavTabChat 7.89 kB
frontend/dist-report/posthog-app/src/lib/components/ActivityLog/describers 130 kB
frontend/dist-report/posthog-app/src/lib/components/Cards/TextCard/TextCardMarkdownEditor 10.6 kB
frontend/dist-report/posthog-app/src/lib/components/MonacoDiffEditor 533 B
frontend/dist-report/posthog-app/src/lib/components/Shortcuts/utils/DebugCHQueriesImpl 20.1 kB
frontend/dist-report/posthog-app/src/lib/components/Support/supportRouterLogic 1.56 kB
frontend/dist-report/posthog-app/src/lib/lemon-ui/LemonMarkdown/MermaidDiagram 2 kB
frontend/dist-report/posthog-app/src/lib/lemon-ui/LemonTextArea/LemonTextAreaMarkdown 790 B
frontend/dist-report/posthog-app/src/lib/lemon-ui/Link/Link 415 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditor 448 B
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditorImpl 26.5 kB
frontend/dist-report/posthog-app/src/lib/monaco/CodeEditorInline 649 B
frontend/dist-report/posthog-app/src/lib/monaco/vimMode 211 kB
frontend/dist-report/posthog-app/src/lib/ui/Button/ButtonPrimitives 482 B
frontend/dist-report/posthog-app/src/queries/nodes/WebVitals/WebVitals 12.7 kB
frontend/dist-report/posthog-app/src/queries/nodes/WebVitals/WebVitalsPathBreakdown 5.13 kB
frontend/dist-report/posthog-app/src/queries/Query/Query 6.34 kB
frontend/dist-report/posthog-app/src/queries/schema 955 kB
frontend/dist-report/posthog-app/src/scenes/activity/explore/EventsScene 8.51 kB
frontend/dist-report/posthog-app/src/scenes/activity/explore/SessionsScene 9.85 kB
frontend/dist-report/posthog-app/src/scenes/activity/live/LiveEventsTable 6.58 kB
frontend/dist-report/posthog-app/src/scenes/agentic/AgenticAuthorize 5.51 kB
frontend/dist-report/posthog-app/src/scenes/approvals/ApprovalDetail 17.7 kB
frontend/dist-report/posthog-app/src/scenes/approvals/changeRequestsLogic 622 B
frontend/dist-report/posthog-app/src/scenes/audit-logs/AdvancedActivityLogsScene 43 kB
frontend/dist-report/posthog-app/src/scenes/AuthenticatedShell 207 kB
frontend/dist-report/posthog-app/src/scenes/authentication/account/AccountConnected 3.32 kB
frontend/dist-report/posthog-app/src/scenes/authentication/account/AgenticAccountMismatch 2.43 kB
frontend/dist-report/posthog-app/src/scenes/authentication/account/credential-review/CredentialReview 5.04 kB
frontend/dist-report/posthog-app/src/scenes/authentication/cli/CLIAuthorize 12.1 kB
frontend/dist-report/posthog-app/src/scenes/authentication/cli/CLILive 4.05 kB
frontend/dist-report/posthog-app/src/scenes/authentication/email-mfa-verify/EmailMFAVerify 3.04 kB
frontend/dist-report/posthog-app/src/scenes/authentication/invite-signup/InviteSignup 1.44 kB
frontend/dist-report/posthog-app/src/scenes/authentication/login-2fa/Login2FA 4.74 kB
frontend/dist-report/posthog-app/src/scenes/authentication/login/Login 1.42 kB
frontend/dist-report/posthog-app/src/scenes/authentication/login/loginLogic 569 B
frontend/dist-report/posthog-app/src/scenes/authentication/password-reset/PasswordReset 4.5 kB
frontend/dist-report/posthog-app/src/scenes/authentication/password-reset/PasswordResetComplete 3.06 kB
frontend/dist-report/posthog-app/src/scenes/authentication/shared/passkeyLogic 602 B
frontend/dist-report/posthog-app/src/scenes/authentication/signup/SignupContainer 1.42 kB
frontend/dist-report/posthog-app/src/scenes/authentication/two-factor-reset/TwoFactorReset 4.04 kB
frontend/dist-report/posthog-app/src/scenes/authentication/vercel/VercelConnect 5.03 kB
frontend/dist-report/posthog-app/src/scenes/authentication/vercel/VercelLinkError 2.3 kB
frontend/dist-report/posthog-app/src/scenes/authentication/verify-email/VerifyEmail 1.44 kB
frontend/dist-report/posthog-app/src/scenes/billing/AuthorizationStatus 768 B
frontend/dist-report/posthog-app/src/scenes/billing/Billing 717 B
frontend/dist-report/posthog-app/src/scenes/billing/BillingSection 21.7 kB
frontend/dist-report/posthog-app/src/scenes/cohorts/Cohort 33.9 kB
frontend/dist-report/posthog-app/src/scenes/cohorts/CohortCalculationHistory 7.3 kB
frontend/dist-report/posthog-app/src/scenes/cohorts/Cohorts 11 kB
frontend/dist-report/posthog-app/src/scenes/coupons/Coupons 895 B
frontend/dist-report/posthog-app/src/scenes/dashboard/Dashboard 7.76 kB
frontend/dist-report/posthog-app/src/scenes/dashboard/dashboards/Dashboards 22.6 kB
frontend/dist-report/posthog-app/src/scenes/dashboard/dashboards/templates/DashboardTemplateCopyScene 7.02 kB
frontend/dist-report/posthog-app/src/scenes/data-management/DataManagementScene 6.65 kB
frontend/dist-report/posthog-app/src/scenes/data-management/definition/DefinitionEdit 23.3 kB
frontend/dist-report/posthog-app/src/scenes/data-management/definition/DefinitionView 31.5 kB
frontend/dist-report/posthog-app/src/scenes/data-management/MaterializedColumns/MaterializedColumns 12.8 kB
frontend/dist-report/posthog-app/src/scenes/data-management/variables/SqlVariableEditScene 8.5 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/batch-exports/BatchExportScene 67.8 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/DataPipelinesNewScene 5.25 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/DestinationsScene 5.68 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/event-filtering/EventFilterScene 23.3 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/legacy-plugins/LegacyPluginScene 22 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/TransformationsScene 4.88 kB
frontend/dist-report/posthog-app/src/scenes/data-pipelines/WebScriptsScene 5.54 kB
frontend/dist-report/posthog-app/src/scenes/data-warehouse/DataWarehouseScene 2.02 kB
frontend/dist-report/posthog-app/src/scenes/data-warehouse/editor/EditorScene 4.91 kB
frontend/dist-report/posthog-app/src/scenes/debug/DebugScene 25.3 kB
frontend/dist-report/posthog-app/src/scenes/debug/hog/HogRepl 8.95 kB
frontend/dist-report/posthog-app/src/scenes/experiments/Experiment 227 kB
frontend/dist-report/posthog-app/src/scenes/experiments/Experiments 23.3 kB
frontend/dist-report/posthog-app/src/scenes/experiments/notebook/NotebookCompactTable 1.98 kB
frontend/dist-report/posthog-app/src/scenes/experiments/SharedMetrics/SharedMetric 12.3 kB
frontend/dist-report/posthog-app/src/scenes/experiments/SharedMetrics/SharedMetrics 1.81 kB
frontend/dist-report/posthog-app/src/scenes/exports/ExportsScene 5.53 kB
frontend/dist-report/posthog-app/src/scenes/feature-flags/FeatureFlag 117 kB
frontend/dist-report/posthog-app/src/scenes/feature-flags/FeatureFlags 3.9 kB
frontend/dist-report/posthog-app/src/scenes/groups/Group 23.5 kB
frontend/dist-report/posthog-app/src/scenes/groups/Groups 9.48 kB
frontend/dist-report/posthog-app/src/scenes/groups/GroupsNew 8.59 kB
frontend/dist-report/posthog-app/src/scenes/health-alerts/HealthAlertsScene 6.38 kB
frontend/dist-report/posthog-app/src/scenes/health/categoryDetail/HealthCategoryDetailScene 13.2 kB
frontend/dist-report/posthog-app/src/scenes/health/HealthScene 17.1 kB
frontend/dist-report/posthog-app/src/scenes/health/pipelineStatus/PipelineStatusScene 12.2 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapNewScene 5.15 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapRecordingScene 5.15 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmap/HeatmapScene 7.87 kB
frontend/dist-report/posthog-app/src/scenes/heatmaps/scenes/heatmaps/HeatmapsScene 5.16 kB
frontend/dist-report/posthog-app/src/scenes/hog-functions/HogFunctionScene 60.6 kB
frontend/dist-report/posthog-app/src/scenes/hog-functions/misc/Diff 1.35 kB
frontend/dist-report/posthog-app/src/scenes/inbox/InboxScene 223 kB
frontend/dist-report/posthog-app/src/scenes/insights/InsightQuickStart/InsightQuickStart 8.16 kB
frontend/dist-report/posthog-app/src/scenes/insights/InsightScene 41.2 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/BoxPlot/BoxPlot 4.93 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/CalendarHeatMap/CalendarHeatMap 9.26 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/RegionMap/RegionMap 30.7 kB
frontend/dist-report/posthog-app/src/scenes/insights/views/WorldMap/WorldMap 6.1 kB
frontend/dist-report/posthog-app/src/scenes/instance/AsyncMigrations/AsyncMigrations 14.3 kB
frontend/dist-report/posthog-app/src/scenes/instance/DeadLetterQueue/DeadLetterQueue 6.65 kB
frontend/dist-report/posthog-app/src/scenes/instance/QueryPerformance/QueryPerformance 12.4 kB
frontend/dist-report/posthog-app/src/scenes/instance/SystemStatus/SystemStatus 18.1 kB
frontend/dist-report/posthog-app/src/scenes/integrations/IntegrationsLandingScene 1.67 kB
frontend/dist-report/posthog-app/src/scenes/IntegrationsRedirect/IntegrationsRedirect 955 B
frontend/dist-report/posthog-app/src/scenes/marketing-analytics/MarketingAnalyticsScene 46.8 kB
frontend/dist-report/posthog-app/src/scenes/max/Max 20.5 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/CreateInsightWidget 6.99 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/CreateNotebookWidget 1.8 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/EditDiffRenderer 3.23 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/ErrorTrackingWidget 7.56 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/QueryWidget 6.93 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/SearchSessionRecordingsWidget 7.58 kB
frontend/dist-report/posthog-app/src/scenes/max/messages/adapters/UpsertDashboardWidget 1.61 kB
frontend/dist-report/posthog-app/src/scenes/models/ModelsScene 20.5 kB
frontend/dist-report/posthog-app/src/scenes/models/NodeDetailScene 19.8 kB
frontend/dist-report/posthog-app/src/scenes/moveToPostHogCloud/MoveToPostHogCloud 4.5 kB
frontend/dist-report/posthog-app/src/scenes/new-tab/NewTabScene 2.76 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookCanvasScene 12.3 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookPanel/NotebookPanel 14.3 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebookScene 18 kB
frontend/dist-report/posthog-app/src/scenes/notebooks/NotebooksScene 8.69 kB
frontend/dist-report/posthog-app/src/scenes/oauth/OAuthAuthorize 810 B
frontend/dist-report/posthog-app/src/scenes/onboarding/legacy/coupon/OnboardingCouponRedemption 1.34 kB
frontend/dist-report/posthog-app/src/scenes/onboarding/Onboarding 785 kB
frontend/dist-report/posthog-app/src/scenes/onboarding/shared/sdkHealth/SdkHealthScene 9.04 kB
frontend/dist-report/posthog-app/src/scenes/organization/ConfirmOrganization/ConfirmOrganization 4.5 kB
frontend/dist-report/posthog-app/src/scenes/organization/Create/Create 704 B
frontend/dist-report/posthog-app/src/scenes/organization/Deactivated 1.17 kB
frontend/dist-report/posthog-app/src/scenes/organization/PendingDeletion 2.24 kB
frontend/dist-report/posthog-app/src/scenes/persons/PersonScene 28.4 kB
frontend/dist-report/posthog-app/src/scenes/persons/PersonsScene 11.7 kB
frontend/dist-report/posthog-app/src/scenes/PreflightCheck/PreflightCheck 5.57 kB
frontend/dist-report/posthog-app/src/scenes/product-tours/ProductTour 273 kB
frontend/dist-report/posthog-app/src/scenes/product-tours/ProductTours 5.97 kB
frontend/dist-report/posthog-app/src/scenes/project-homepage/ProjectHomepage 27.2 kB
frontend/dist-report/posthog-app/src/scenes/project/Create/Create 982 B
frontend/dist-report/posthog-app/src/scenes/project/PendingDeletion 2.6 kB
frontend/dist-report/posthog-app/src/scenes/resource-transfer/ResourceTransfer 10.5 kB
frontend/dist-report/posthog-app/src/scenes/saved-insights/SavedInsights 3.47 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/detail/SessionRecordingDetail 8.55 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/file-playback/SessionRecordingFilePlaybackScene 11.2 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/kiosk/SessionRecordingsKiosk 16.6 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/player/modal/SessionPlayerModal 8.26 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/player/snapshot-processing/DecompressionWorkerManager 323 B
frontend/dist-report/posthog-app/src/scenes/session-recordings/playlist/SessionRecordingsPlaylistScene 11.7 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/SessionRecordings 7.68 kB
frontend/dist-report/posthog-app/src/scenes/session-recordings/settings/SessionRecordingsSettingsScene 8.88 kB
frontend/dist-report/posthog-app/src/scenes/sessions/SessionProfileScene 21.8 kB
frontend/dist-report/posthog-app/src/scenes/settings/SettingsMap 6.66 kB
frontend/dist-report/posthog-app/src/scenes/settings/SettingsScene 9.96 kB
frontend/dist-report/posthog-app/src/scenes/sites/Site 1.57 kB
frontend/dist-report/posthog-app/src/scenes/startups/StartupProgram 21.1 kB
frontend/dist-report/posthog-app/src/scenes/StripeConfirmInstall/StripeConfirmInstall 3.7 kB
frontend/dist-report/posthog-app/src/scenes/subscriptions/SubscriptionScene 17.5 kB
frontend/dist-report/posthog-app/src/scenes/subscriptions/SubscriptionsScene 7.02 kB
frontend/dist-report/posthog-app/src/scenes/surveys/forms/SurveyFormBuilder 3.02 kB
frontend/dist-report/posthog-app/src/scenes/surveys/Survey 7.48 kB
frontend/dist-report/posthog-app/src/scenes/surveys/Surveys 27.7 kB
frontend/dist-report/posthog-app/src/scenes/surveys/wizard/SurveyWizard 69.7 kB
frontend/dist-report/posthog-app/src/scenes/themes/CustomCssScene 4.91 kB
frontend/dist-report/posthog-app/src/scenes/toolbar-launch/ToolbarLaunch 3.97 kB
frontend/dist-report/posthog-app/src/scenes/Unsubscribe/Unsubscribe 1.71 kB
frontend/dist-report/posthog-app/src/scenes/web-analytics/SessionAttributionExplorer/SessionAttributionExplorerScene 12.3 kB
frontend/dist-report/posthog-app/src/scenes/web-analytics/WebAnalyticsScene 20.8 kB
frontend/dist-report/posthog-app/src/scenes/wizard/Wizard 4.45 kB
frontend/dist-report/posthog-app/src/sharedChunkAnchors 1.33 kB
frontend/dist-report/render-query/src/render-query/render-query 24.9 MB
frontend/dist-report/toolbar/src/toolbar/toolbar 11.3 MB

compressed-size-action

@greptile-apps

greptile-apps Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "feat(agent_platform): inject platform ke..." | Re-trigger Greptile

The freeze view imports the new logic/kernel_skills registry; add it to the
import-linter "presentation must use facade" allowlist alongside the existing
views→logic.* entries so `lint-imports` passes. (No new boundary — same
pattern as the other agent_platform presentation→logic imports.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY6C34DmGGmL4sgx5Wajn6
@tests-posthog

tests-posthog Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

⏭️ Skipped snapshot commit because branch advanced to a711470 while workflow was testing 0366f44.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

daniloc and others added 2 commits June 25, 2026 17:11
Addresses review findings on the kernel-injection path:

- Scope the blast radius: kernel_skills_for(slug) now only fully validates
  the folders that target the agent being frozen, and skips dot/underscore
  cruft dirs (e.g. __pycache__). A malformed folder for one agent can no
  longer raise a 500 that breaks freeze for every other tenant. The strict
  whole-set _all_kernel_skills() check stays (exercised by a unit test) so a
  bad folder still fails CI before merge.
- Assert every injected kernel id is present in the sealed spec before the
  draft→ready flip — a 2xx put_skill that didn't materialize would otherwise
  ship a live agent silently missing a kernel skill (e.g. safety-and-boundaries).
- Validate `agents` slugs against the resource-id regex and reject "*" mixed
  with specific slugs (a typo silently reaches nobody; a stray wildcard
  silently broadcasts). Reject CR line endings — checked on the raw bytes the
  janitor reads, since read_text() strips them.

Tests cover the loader rejections, the runtime scoping resilience, and the
updated freeze materialization invariant.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BY6C34DmGGmL4sgx5Wajn6
@tests-posthog

tests-posthog Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Query snapshots: Backend query snapshots updated

Changes: 1 snapshots (1 modified, 0 added, 0 deleted)

What this means:

  • Query snapshots have been automatically updated to match current output
  • These changes reflect modifications to database queries or schema

Next steps:

  • Review the query changes to ensure they're intentional
  • If unexpected, investigate what caused the query to change

Review snapshot changes →

@tests-posthog

tests-posthog Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

⏭️ Skipped snapshot commit because branch advanced to dd739f9 while workflow was testing 75553ee.

The new commit will trigger its own snapshot update workflow.

If you expected this workflow to succeed: This can happen due to concurrent commits. To get a fresh workflow run, either:

  • Merge master into your branch, or
  • Push an empty commit: git commit --allow-empty -m 'trigger CI' && git push

@dmarticus dmarticus left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Solid refactor overall — the three-homes split (kernel / playbook / store) is a real improvement, the freeze-time injection plumbing is thoughtful, and the test coverage on the new logic is substantive. Requesting changes because three findings put users into states with no programmatic recovery; the fixes look small.

Blockers

1. Post-seal materialization invariant can permanently wedge a sealed bundle (backend/presentation/views.py:2469)

The new missing_kernel check turns any drift between the kernel set at original-seal time and the retry attempt into a stuck draft:

  • Attempt 1 seals the bundle; the response is lost or the client times out.
  • Between then and the retry, the kernel set for this slug grows (or a kernel is renamed).
  • Attempt 2: put_skill 409s with sealed-bundle → caught by _is_sealed_bundle_conflict → falls through to idempotent janitor.freeze, which re-derives derived_spec from sealed bytes that cannot contain the newer kernel id.
  • kernel_ids - materialized_ids = {missing} → APIException → row stays draft.

Every subsequent retry repeats the same failure (the bundle is permanently sealed; put_skill can no longer rewrite it). The retry path is no longer the idempotent operation the docstring promises. Either gate the invariant on whether we actually wrote a kernel skill this turn (skip on the 409 fall-through path), or treat 'kernel skill missing from a previously sealed bundle' as an acceptable post-condition for re-freeze.

2. Legacy-orphans recovery message is circular (backend/presentation/views.py:2393)

The error says: "branch a fresh draft from the current live revision (which no longer carries it)". But the current live revision does still carry the de-designated kernel id in its sealed spec.skills[] — a fresh draft branched from live inherits the same orphan and hits the identical guard. skills[] is server-pinned on spec writes (test_spec_write_preserves_server_skills), so there's no API path that lets the user remove the inline entry either.

Either the orphan guard needs to tolerate a stale kernel id when the rest of the bundle agrees, or there needs to be an explicit 'drop stale kernel entry' operation.

3. Cross-team clone_from of agent-builder bricks freeze (backend/presentation/views.py:2386)

A normal (non-allowlisted) team that clone_froms an agent-builder revision lands an opaque server-minted slug. kernel_skills_for(opaque_slug) returns [], so the carried inline kernel entries (no source_version_id) fall into legacy_orphans → 400. There's no live revision in the destination team to "branch from", and skills[] is unwritable. The fork is permanently unfreezable.

Per the agents: mapping the kernel skills can target a slug — but the clone path doesn't rename, so this is structurally bricked unless clone_from filters out non-applicable kernel-id inline entries from the carried spec, or the orphan guard treats 'inline entry that was a kernel id for the source's slug' as silently droppable.

Worth fixing in the same review

  • _agents_of is locale-dependent (backend/logic/kernel_skills.py:121). md.read_text() uses the process locale. Every shipped kernel SKILL.md description contains UTF-8 em dashes; under LC_ALL=C or POSIX (ASCII-default) the very first folder iteration raises UnicodeDecodeError, taking down freeze for every agent — defeating the docstring's "malformed folder for one agent can't take down freeze for another" invariant. Pass encoding="utf-8" explicitly (and consider read_bytes().decode("utf-8") for consistency with _load_skill).
  • Test mock doesn't pin the call arg (backend/tests/test_freeze_skill_refs.py:187). All four new tests do mock_kernel.return_value = [...] and never assert what kernel_skills_for was called with. Swapping the call site at views.py:2366 to pass revision.id (or anything else) keeps every test green while silently disabling kernel injection. Add mock_kernel.assert_called_with(self.application.slug) per test.
  • auditing-the-fleet/SKILL.md lines 19–20 still say bare "Load it" for debugging-sessions and editing-agents-safely — both are playbooks now, not bundled kernel skills. Directly contradicts agent.md's rule "Never recite … from memory — fetch the playbook" and "Builder playbooks are not in your bundle — don't look for skills/<id> files for them." Line 99 of the same file uses the correct "fetch the … playbook" phrasing, so the contract is clear — 19/20 were left in pre-refactor form.
  • _skill_dirs() raises on missing dir (backend/logic/kernel_skills.py:187). iterdir() on a missing path raises FileNotFoundError, propagated uncaught. Any deploy variant that ships the Django code without kernel_skills/ 500s every freeze across every team, including agents the platform never designated. An is_dir() guard at the top of _skill_dirs degrades to empty list.
  • yaml.safe_load(block) is unguarded (backend/logic/kernel_skills.py:153). Broken YAML raises yaml.YAMLError, not ValueError. Wrap to re-raise as ValueError to match the rest of the malformation contract (and the parameterized rejection tests).
  • Concurrent-freeze race produces a wrong error (backend/presentation/views.py:2471). When process A wins the conditional UPDATE and flips state to ready, process B's post-seal check can raise "revision left in draft. Retry the freeze" — but the row is already ready, and the user's retry hits the early "Cannot freeze a ready revision" guard. The bundle is correctly sealed under A's intent; the user is bricked by misleading error text.

Nits / follow-ups (not blocking)

  • Post-seal invariant is structurally gated on derived_spec is not None — if a future janitor response ever omits derived_spec, the check fails open (skips), not closed. Worth inverting.
  • Frozen spec.skills[] carries kernel entries with no source_version_id and no kernel marker — indistinguishable from legacy inline skills for any downstream consumer that discriminates on those fields.
  • _RESOURCE_ID_RE is the third Python copy of the janitor's RESOURCE_ID_REGEX (the others live at presentation/views.py:193 and presentation/serializers.py:277). The module's own docstring warns about exactly this drift surface; worth lifting to one constant.
  • Altitude question: kernel injection in Django ships kernel bytes over HTTP every freeze and leaves the janitor kernel-unaware. Any future bundle-producing path that doesn't go through Django's freeze (a janitor-side authoring API, a CLI seeder, future tooling) will silently omit kernel skills the platform considers code-locked. Worth thinking about whether deriveSpec is the more natural home long-term.

Happy to pair on any of these.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants