CedarCopilot wants to merge 0 commits into staging from fix/sherlock-before-meeting-orgaop-20260815-161351
Live on prod, no production signal yet
OTEL fallback found no prod spans matching adminSubagentRouter before_meeting execution since deploy.
OTEL fallback found no prod spans matching handleExecuteScheduledExecution → runPlaybookSectionExecution (triggerType=before_meeting) since deploy.
OTEL fallback found no prod spans matching runPlaybookSectionExecution (before-meeting/cron/webhook direct-fire) since deploy.
Libra has verdicts on 0 of 3 tracked behaviors on prod; 3 are still being checked. Libra checks hourly for 3 days after each deploy.
Pre-meeting prep is configured at the org level (a <trigger type="before-meeting"> referencing the org meeting-prep subagent), the user has upcoming synced calendar meetings, agent execution is on, and post-meeting automations fire , yet no prep is ever produced. Diagnosed via Sherlock for Sam @ SimCare; affects every rep in the org (and any org that keeps before-meeting at org level).
Scheduling is org-aware but execution was not.
getBeforeMeetingConfigsForUser, manifest-utils.ts) independently looks up orgAopId and merges the org manifest → the run gets scheduled. So runs fire (one user had 211 completed + 50 pending).handleExecuteScheduledExecution.ts) called runPlaybookSectionExecution({ userId, orgId, aopId }) without orgAopId. resolvePlaybookContext only reads the org playbook when orgAopId is set (resolve-playbook-context.ts:197; org refs collected only if (orgCompiled …) at :235). With it null, the org's before-meeting <ref> (meeting-prep) never resolved → zero refs → legacy no-instruction path → silent no-op, and the parent is marked completed regardless.Every other runPlaybookSectionExecution caller (cron cron-task-registry.ts, field-change conversations.ts, webhook playbook-webhook.ts) already passes orgAopId. The scheduled before-meeting path was the only one that dropped it , which is exactly why post-meeting / field-change / daily-agenda work but pre-meeting prep doesn't.
playbook-before-meeting executions completed for the user, across every month , all with null output, no child subagent runs, and zero meeting_prep documents.beforeMeetingConfigs: [{stage:null, enabled:true, minutes:60}] (compiled); user manifest [].handleExecuteScheduledExecution: resolve the AOP's linked orgAopId and pass it through; add a structured log at fire time.admin-subagent test-before-meeting path: same fix, so the Playbook Editor "test" button matches prod.runPlaybookSectionExecution: log a warning when a before-meeting/cron/webhook direct-fire resolves zero refs , so this class of silent no-op is visible in Axiom instead of hidden.orgAopId (and null when there's no linked org AOP). 5/5 pass.Shared code path. Positively affects any org whose before-meeting trigger is org-level only (the standard multi-rep setup). No behavior change for orgs that already had a user-level before-meeting trigger (they were passing refs at user level). Typecheck clean on touched files.
Watch for playbook-before-meeting executions that now spawn a meeting-prep child run and produce a Slack notification + prep doc, and for the new [executeScheduledExecution] Firing playbook before-meeting log carrying a non-null org_aop_id. The direct-fire resolved zero refs warning should stop appearing for these orgs.
🤖 Diagnosed & fixed by Sherlock. Generated with Claude Code
The PR propagates each user AOP’s linked organization AOP into scheduled and admin-triggered before-meeting execution so organization-level meeting-prep references resolve correctly.
The PR appears safe to merge, with non-blocking cleanup needed for misleading zero-reference warnings and repository import conventions.
Organization-level playbook context is now propagated consistently in both production and admin before-meeting paths; the remaining findings affect
Libra has not measured any production surfaces for this change yet.