name: strategic_review description: "Crimson Leaf 24-hour strategic review -- mission assessment, portfolio evaluation, gap identification, and escalation." debug: true model: power system: agent_prompt agent_prompt: - "= identity.md" - "= mission.md" - "= strategic_log.md" participant_prompt: - "= identity.md" sections: - agent - project - history - participants - participants_prompt - rag - message - instructions builders: message: | *** PORTFOLIO REPORT *** {steps[0].text} steps: - type: tool action: get_portfolio_report output_key: portfolio_data - type: think max_tokens: 8000 rotate_participants: true loop: max_iterations: 3 hint: | You are {agent.name}, participating in the Crimson Leaf Holdings strategic review. This is round {task.iteration} of the board session. The portfolio report is above. Your mission charter and strategic log are in your system prompt. Analyze from YOUR perspective: - If you are Edgar (The Operator): Focus on systems health, metrics, gaps in capability. Are companies executing? Are we moving toward the mission success criteria? What gaps are blocking revenue? What should we PROPOSE to David? Check the strategic_log: what proposals are already submitted and awaiting David? Do NOT propose a company if it was already submitted in the last 30 days. - If you are Orion (The Visionary): Focus on opportunities and what we are missing. Are we building the right things? What should we start? What should we kill? - If you are Sloane (The Dealmaker): Focus on marketing, visibility, revenue. Are we selling? Does anyone know we exist? What channels are we missing? Build on previous speakers' points. Disagree if you must -- this is a board debate. When genuine consensus is reached across all perspectives, include exactly: consensus_reached: true If debate should continue, do NOT include that line. - type: think max_tokens: 6000 agent: first_available output_key: strategic_brief hint: | Synthesize the boardroom transcript into a STRATEGIC BRIEF for David. Structure: 1. EXECUTIVE SUMMARY -- one paragraph on portfolio health and mission progress 2. MISSION GAP AUDIT -- assess each gap from the mission charter. Is Gap 1 (CLO) still the top priority? Has anything changed that elevates a different gap? 3. CRITICAL ISSUES -- things needing immediate attention 4. OPPORTUNITIES -- ranked by priority 5. ACTION ITEMS -- specific tasks for David: "David, [verb]: [details]" 6. NEXT REVIEW -- focus for the next 24-hour review Keep it actionable. David is one person -- prioritize ruthlessly. PROPOSAL GATE ASSESSMENT: Check the strategic_log.md in your context. Has CLO (or whichever gap-company) been proposed in the last 30 days? If yes, state PROPOSAL_NEEDED: none. Only propose if: gap is materially blocking revenue AND cannot be solved by existing resources AND no proposal for this company appears in strategic_log.md. State one of: PROPOSAL_NEEDED: [company-slug] or PROPOSAL_NEEDED: none MARKETING DISPATCH ASSESSMENT: A book "needs marketing" if crimson_leaf_marketing shows no active campaign for it. At the end of your brief, include: CLM_DISPATCH: - type: think max_tokens: 100 output_key: proposal_project_slug hint: | Read the PROPOSAL_NEEDED line from the strategic brief above. If the value is "none", output exactly: none Otherwise output exactly: incubation Output ONLY one word. No explanation. No punctuation. - type: think max_tokens: 800 output_key: proposal_brief hint: | The proposal decision is: {proposal_project_slug} If {proposal_project_slug} is "none", output exactly: none Otherwise, write the task message for the company_proposal pipeline. This brief becomes the input that drives the full business plan. Include: - Which company to propose (name, slug, purpose in one sentence) - What gap it fills (specific -- what Edgar cannot do today without it) - Why now (cost of waiting another 30 days) - Proposed 90-day success criteria (measurable) - Known constraints or dependencies Be specific. This brief drives the entire proposal document. Output ONLY the brief text. No labels. No preamble. - type: tool action: enqueue_strategy optional: true params: company_slug: "crimson_leaf" project_slug: "{proposal_project_slug}" task_type: "company_proposal" content: "{proposal_brief}" agent_name: "edgar" - type: think max_tokens: 100 output_key: clm_dispatch_slug hint: | Read the CLM_DISPATCH line from the strategic brief above. Extract the value after "CLM_DISPATCH: " and output it exactly, nothing else. Valid values: cypress-bend, crimson-vows, binding-thread, or none. Output ONLY the value. No explanation. - type: think max_tokens: 600 output_key: clm_dispatch_message hint: | If {clm_dispatch_slug} is "none", output exactly: none Otherwise write a marketing campaign request for that book. Include: - Book title, genre, audience - The manuscript is complete in Crimson Leaf Publishing Gitea repo - Request: full marketing campaign (strategy, social, email, press release, ad copy) - Urgency: book has no active campaign and needs revenue generation Book reference: - cypress-bend: "Cypress Bend" contemporary romance, audience adult women 25-45 - crimson-vows: "Crimson Vows" paranormal romance, audience adult women 25-40 - binding-thread: "The Binding Thread" fantasy romance, audience adult women 20-40 Output ONLY the message text. No preamble. - type: tool action: enqueue_strategy optional: true params: company_slug: "crimson_leaf_marketing" project_slug: "book-marketing-agency" task_type: "marketing_campaign" content: "{clm_dispatch_message}" - type: think max_tokens: 3000 output_key: updated_log hint: | Write the COMPLETE updated strategic_log.md for this review cycle. The current log content is in your system context (loaded from agents/edgar/strategic_log.md at task start). Copy ALL existing entries EXACTLY as they appear. Do NOT summarize, shorten, or alter them. Then APPEND a new entry at the END using this exact format: --- ## Entry {task.created_at_date} (Task {task.id}) ### Board Consensus [One paragraph: what did the board agree on this cycle?] ### Gap Status Updates GAP 1 (CLO): [status -- submitted/deferred/awaiting David/no change] GAP 2 (CLR): [status] GAP 3 (KDP pipeline): [status] ### Proposal Decision [ONE of:] SUBMITTED: [company-slug] -- proposal task enqueued to incubation this cycle DEFERRED: [reason, e.g. "CLO already submitted on YYYY-MM-DD, awaiting David"] NONE: [reason] ### CLM Dispatch [ONE of:] DISPATCHED: [book-project-slug] -- marketing campaign task sent to CLM NONE ### Next Review Focus [One sentence on what to watch for next cycle] OUTPUT: The COMPLETE file content starting from the very first line. If the log exceeds 30 entries, compact the 10 oldest into an "ARCHIVED SUMMARY" block at the top to keep the file manageable. - type: document dest_path: "agents/edgar/strategic_log.md" commit_msg: "log: strategic review cycle" - type: reply target: discussion adjudication: enabled: false