| Title | Learning | Why | Category | Status | Agents | Applies To | Priority | Date Learned | Date Approved | Source Computer | Source Session | Related Queue Item | Related Client | Related Project | Notes | Agent Calibration Log |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SCHARP Box.com Audit Results | Full Box environment audit completed 4/12/2026. 78 users on 80 licenses. 5 users hold 96% of storage: Robert Featherstone (217GB), Christi/Lorenzo (166GB), Belinda Betton (33GB), Pratiksha Yadav (19GB), Cesar Portillo (15GB). 41 of 78 users are ghost licenses with 0-2 files and under 2MB each (~$720/mo wasted, ~$8,600/yr). 1 user (Shane Sparkes) is Inactive status. Lorenzo folder: 73 items (59GB) are Lorenzo-only and safe to migrate without coordination. 44 items (107GB) are shared and need user coordination. Stale pre-2023 data: 7.79GB across 87 items. | Box costs $1,400/mo for 80 licenses. Migration path: Box -> Google Drive -> SharePoint (or skip Google hop and go Box -> SharePoint direct when Intune/Entra rolls out Q3-Q4 2026). Need to deprovision ghost licenses immediately for cost savings. Robert Featherstone is the biggest single-user migration target at 217GB. | — | — | Apr 12, 2026 | — | Work - Laptop | Bestie #2 - Box API + CLI audit | — | SCHARP | — | Box CLI installed (v4.7.0, npm). OAuth login as christi.brown@scharpca.org. JWT app created but needs admin authorization in Box console. JWT config stored in KV (Box-JWTConfig, Box-ClientID, Box-ClientSecret, Box-EnterpriseID, Box-PublicKeyID, Box-Passphrase, Box-PrivateKey). Full inventory JSON saved at Scharp/_Temp Files/lorenzo-box-inventory.json. Box reports saved from admin console: user_details and user_engagement CSVs in Downloads. | — | |||
| Rent: $3,693 BILT auto-debit from CapOne, due 25th, grace through the 3rd | Rent is $3,692.59/month paid via BILT auto-debit from Capital One 360 Savings. Officially due on the 25th of each month, with a grace period through the 3rd of the following month before late fees apply. | Needed to plan April survival math correctly — rent wasn't in the initial 'bills' estimate. Grace window is also critical buffer for tight months. | — | — | Apr 13, 2026 | — | — | — | — | — | — | — | — | |||
| Personal subs Christi will NEVER cancel (as of Apr 2026) | Subscriptions Christi has confirmed she wants to keep during any budget-cutting exercise: SketchBox (joy + foster kids' art time), Shaklee, Planet Fitness, YouTube Premium, Disney+ (with Hulu bundled), Oura Ring, CVS ExtraCare, Canva, Airtable, Adobe Acrobat Pro. Do NOT suggest killing these without her explicit re-opening of the decision. | After tonight's full cull she drew the line on these items as value-producing. Agents shouldn't suggest re-cutting them in future budget conversations. | — | — | Apr 13, 2026 | — | — | — | — | — | — | — | — | |||
| AbilityFirst leadership team is FOUR people: Sergio, Jeremy, Carl, AND Michuan | AbilityFirst leadership team is a group of FOUR, not three. Always include all four when emailing leadership, drafting executive comms, looping leadership in on AF decisions, or routing leadership-level deliverables. The four leadership members: 1. Sergio Letona — CEO 2. Carl — CFO 3. Jeremy Sidell — Chief Program Officer (CPO). NOT IT. Programs side of the org. (jsidell@abilityfirst.org, Contacts rec4TQkKFgeMxAgIC) 4. Michuan Fleming — COO / Chief People Officer (mfleming@abilityfirst.org, Contacts recZkxk1xxYkNInpn) NEVER send a leadership-tier AF communication that includes Sergio, Jeremy, and Carl without also including Michuan. She has been left off repeatedly across multiple sessions and that pattern stops now. Applies to: leadership announcement emails, leadership briefings, leadership-only meeting invites, executive summaries, board prep, strategic decision routing, project status to leadership, AF training rollouts targeting leadership, or any 'leadership cc' pattern. Also check: 'Michonne' showing up in transcripts (e.g., camp project 5/1/2026 ops meeting tail) is most likely a transcription mishearing of 'Michuan' — verify before treating as a separate person. Do NOT route IT-specific items to Jeremy. He runs Programs. Do NOT infer leadership roles from name alone. Verify against Contacts table or ask Christi. | Christi flagged the missing-Michuan pattern directly on 2026-05-01: 'Why do you and the minions always leave out Michuan? Sergio, Jeremy, Carl and Michuan are all together on the leadership team.' Within the same exchange she also corrected an even more basic miss: I had labeled Jeremy as 'IT lead' purely from inference, when in fact he is the Chief Program Officer with no IT responsibility. Two errors in one record, both from minions filling in roles instead of looking them up. Going forward: do not infer leadership roles from name alone. Verify against Contacts table or ask Christi. | All | AbilityFirst | May 1, 2026 | May 1, 2026 | Pasadena | — | — | Ability First | — | — | — | |||
| Counted Doors editorial direction: warm, practical, personal stories welcome | Counted Doors content should be warm, informational, and things foster parents can actually use. Not forcing things on them. Posts lead with practical answers but weave in brief personal moments for credibility. Stories are welcome when they serve the reader. Editorial line: Counted Doors = where foster parents go to learn and feel understood (practical + personal, SEO-driven). My Imperfect Life = where Christi processes out loud (purely personal, faith-grounded). Kevin leads with utility but includes 'I learned this the hard way' moments. Bob stays purely personal. Dave drives editorial calendar from search research, especially fostering teens (underserved niche). Target: 2 posts/month, Facebook groups primary, Pinterest secondary, email list from day one. | A dry resource site without soul doesn't build emotional loyalty. The biggest content gap in foster parenting is content by a real person, not an agency. Christi's voice IS the differentiator. | KevinBobDave | Counted Doors | Apr 10, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| April: blanket-ignore all security-tool email notifications | During inbox triage (Section 3 — System Notifications), April marks-read-and-ignores ALL email from security tooling, including detection/incident alerts — NOT just routine reports. Senders include ShieldVision/Lumificy, Huntress, CrowdStrike, Barracuda + AppRiver, Sophos, Microsoft Defender, SentinelOne, and any other endpoint/email/EDR/MDR/SOC tool. April does not surface these even when they name one of Christi's clients or read as urgent (e.g. 'account compromise', 'active exfiltration'). | Security incident response is owned by Crimson's Security team, not the vCIO seat — even on Christi's own clients (SCHARP, AbilityFirst). These alerts are not Christi's to action; the Security team triages and remediates, and routes to her directly only if she is specifically needed. (Earlier draft of this rule wrongly said 'Christi watches the consoles' — corrected 2026-06-19. The real basis is the RACI line: IR = Security team.) | April | Crimson ITSCHARPAbilityFirst | Jun 19, 2026 | — | Christi's workstation (Claude Code) | — | — | — | — | Implemented in april.md (live agent def at C:\Users\ChristiBrown\.claude\minion-army-hq\agents\april.md), Inbox Triage Rulebook > Section 3 SYSTEM NOTIFICATIONS > IGNORE list. Trigger: on 2026-06-19 three security items (BetaBionics M365 compromise INC-195823/195879, Huntress 'Klue' alert, Jack Barbour/SCHARP desktop infection) surfaced to Christi's task board in error; all owned/handled by the Security team. Closed those 3 Tasks as Completed w/ 'outside vCIO purview' notes. Backup copy at .claude/agents-backup/april.md NOT yet synced. | — | |||
| Airtable API cannot create formula/rollup/count fields | The Airtable API only supports creating basic field types: singleLineText, multilineText, checkbox, singleSelect, multipleSelects, number, percent, currency, duration, date, dateTime, rating, multipleRecordLinks, email, url, phoneNumber, richText, barcode, multipleAttachments, singleCollaborator, multipleCollaborators. Formula, rollup, count, and lookup field types MUST be created manually in the Airtable UI. When designing table schemas programmatically, plan for this: create the base fields via API, then surface a queue item telling Christi which computed fields still need to be added manually. Similarly, the API cannot add choices to an existing singleSelect/multipleSelects field. Use typecast:true when creating records to auto-create options, or tell Christi to add them manually. | Hit this wall repeatedly while building the Projects approval pipeline. Wasted cycles trying until I confirmed the API limit. | TimSegridAll | All | Apr 11, 2026 | Apr 11, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| Drafting rule: include original source body inline so Christi has context when opening the draft cold | When drafting a reply, recap, ticket update, or any response to existing content, include as much of the original source content as possible inline. Christi opens drafts from email, mobile, or other clients where she may not have the original thread next to the draft. Drafting a reply that stands alone forces her to hunt for context she may not even remember. HOW TO APPLY: - Email replies: use Outlook Reply() or ReplyAll() on the source MailItem, not CreateItem(0), so Outlook auto-quotes the thread. If forced to use CreateItem(0), manually paste the original message body below the draft with a '--- Original message ---' separator. - Ticket updates: quote the customer's last message verbatim above the update. - Recap emails: include a 'Where we left it' paragraph with specifics so Christi remembers the moment without re-reading the transcript. - Forwards: never strip the forwarded body. Add framing on top, leave original chain intact. - Cold pitches: include trigger context inline ('I'm reaching out because [specific past interaction]'). The bar: a future Christi opening the draft on her phone with zero memory of the thread should still be able to send it confidently. | Christi told Bestie #2 on 2026-04-30: 'Lets add to the draft step for them to include as much of the original body as possible. Its rough not knowing context.' Comes right after the April calibration which showed several drafts where the agent reply lived without any of the original message attached, forcing Christi to dig. | All | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| April Standing Rule 4: Audience-check every draft (TO/FROM/surface) | Before saving any draft, explicitly state who draft is TO, who it is FROM, and what send surface (Outlook vs SCHARP Gmail vs AF account). Anderson and Badge Update drafts both had audience or surface ambiguity that created friction. | April's own self-derived rule from 2026-04-30 calibration. Anderson draft was aimed at internal Julia when client-facing Andrew was the right audience. | April | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| STOP surfacing KnowBe4 training reminder emails (any of them) | KnowBe4 training overdue email reminders ('Please finish your past due training' from do-not-reply@training.knowbe4.com) are NOT to be surfaced as inbox triage items, daily briefing items, or actionable flags. They are training nag emails. Christi will complete the training when she chooses. The emails themselves are noise. Specific senders to filter: - do-not-reply@training.knowbe4.com - training.knowbe4.com KnowBe4 Tasks in Airtable that Christi creates herself (e.g., 'Complete KnowBe4 training: QR Codes – Safe Scanning') ARE valid and should be tracked. The auto-reminder emails from KnowBe4 are not. | Christi told Bestie #2 on 2026-04-30: 'for the love of all holy please stop alerting to the NB4.' April had been surfacing 7+ KnowBe4 reminder emails in inbox triage. Pure noise. | AprilCron | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| Outlook COM send recipe: Display() + 800ms sleep + prepend body before signature | Working pattern for sending email via Outlook COM with the saved signature intact. $outlook = New-Object -ComObject Outlook.Application; $mail = $outlook.CreateItem(0); $mail.To = 'address'; $mail.Subject = 'subj'; $mail.Display() | Out-Null; Start-Sleep -Milliseconds 800; $sig = $mail.HTMLBody; $body = '<p>content</p>'; $mail.HTMLBody = $body + $sig. Key points: (1) Display() is what triggers Outlook to pull the default signature into HTMLBody - setting HTMLBody directly without Display() yields no signature. (2) The 800ms sleep is required because signature insertion is async. (3) Prepend new body to existing $sig to preserve the saved signature at the bottom. (4) Do NOT call $mail.Send() programmatically - it has thrown 'Value does not fall within the expected range' in same-session COM calls and it bypasses Christi's review. Leave the window open for her to click Send. | Discovered 4/13/2026 after initial $mail.Send() attempt failed with expected-range error, and prior MCP send rendered raw HTML to the recipient. This recipe is the confirmed working path. | AllApril | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| April Standing Rule 5: Track dispositions, not just flags | Every item April surfaces gets a status: Open, Sent, Killed, Delegated, or Recurring-Ignored. If disposition unknown, ask at next session. Goal is closing loops not keeping them open in morning summaries indefinitely. | April's own self-derived rule from 2026-04-30 calibration. Naturally pairs with new Agent Calibration Log table. | April | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| Trust-building principle: client should walk away thinking 'they understand me and my business, and value us' | Every piece of client-facing communication Christi sends, agents draft, or anyone produces under her name has TWO trust-building goals operating at the same time. Both have to be present. One alone is not enough. **Goal 1: Confidence in what Crimson IT can do.** The technical posture, the structured plan, the named tools, the realistic timelines, the right specialists in the room. This is the competence layer. Most IT firms get this part right. **Goal 2: The client comes away thinking 'they understand me and my business, and value us.'** The mission-level acknowledgment, the specific-to-them framing, the recognition of THEIR people and constraints, the why-this-matters-in-your-context paragraph that no template could have produced. This is the relationship layer. Most IT firms miss it. The second is what separates Crimson IT from a vendor. The client should never feel like a generic engagement. They should feel like Christi (or whoever is writing in her voice) actually gets their mission, their stakeholders, their pressure points. === HOW TO APPLY === In every client email, recap, deliverable framing, recommendation, or status update, ask both: 1. Did I demonstrate competence? (Right plan, right specifics, right confidence.) 2. Did I demonstrate that I understand and value THIS client specifically? (Their mission, their people, their constraints, their wins.) If the answer to #2 is 'eh, sort of,' rewrite. Concrete signals that #2 is present: - Naming a specific person by name and their role on the team in a way that shows I know what they actually do - Acknowledging a constraint or deadline that is theirs, not generic ('your May 15 board prep,' 'your Phase 3 audit priority,' 'your Three Commitments framing') - Tying a recommendation back to their stated mission or values, not just industry best practice - Picking up a phrase or framing they used and reflecting it back so they know they were heard - Acknowledging a smart structural decision they made and naming WHY it's smart in their context (not generic 'good idea') === WHAT KILLS GOAL 2 === - Generic boilerplate: 'we provide enterprise-grade IT solutions tailored to your needs' - Vendor-speak: 'leverage,' 'synergies,' 'partner with you to drive outcomes' - Treating their specific people as interchangeable roles ('your IT team,' 'your leadership') - Skipping over the why-this-matters-to-you paragraph in favor of pure deliverable-listing - Missing the emotional or mission stakes when those are what's actually driving the conversation === EXAMPLES FROM CHRISTI'S OWN WORK === Cotsen Kamyab response 4/30: 'glad to hear program staff will be included. That perspective matters because the program team works most directly with the people the Foundation serves, and they will catch equity and language issues administrators might miss.' — names WHY a smart structural decision is smart in Cotsen's specific equity-focused context. DTLA Alliance tabletop recap 4/30: 'You jumped in with real answers, called out the gaps you saw, and treated it like the live drill it was meant to be... honestly, this was one of the cleaner runs I have facilitated.' — acknowledges what THEY specifically did well, distinct from praise that could apply to any tabletop attendee. === APPLIES TO === Every client-facing agent and any client-facing draft, in every formality register. The casual register doesn't get a pass on the relationship layer — a casual email can still say 'I get you' through a single specific sentence acknowledging context. The formal register requires explicit, named acknowledgment. This principle outranks any other drafting rule when there is tension. If a 'tighten the bullets' rule would strip out the trust-building paragraph that actually makes the client feel valued, leave the paragraph in. | Christi added on 2026-04-30 after the Cotsen calibration: 'we always want to build trust not only in how confident we are in what we can do, but I also want a client to come away with they understand me and my business and value us.' This is the relationship-layer principle that anchors every client communication, regardless of formality register. | AgnesAprilMONTIOttoStuartBobKevinRexCharlBekkerAll | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| Dewey Timekeeper Playbook v2 — Authoritative Time Tracking Operating Manual | Full playbook file: 2 - Internal Operations/_agent-workspace/dewey-training/dewey-playbook-v2-FINAL.md (4,298 words) ===== HARD RULES (never violate) ===== 1. ODD-MINUTES RULE (refined, absolute): Every time entry's minutes portion must NOT be divisible by 5. Avoid :00, :05, :10, :15, :20, :25, :30, :35, :40, :45, :50, :55. Prefer odd values (63, 67, 69, 73, 83) but non-quarter even values (62, 68, 72) also acceptable. Historical compliance was 40.9%; Dewey brings to 100%. 2. BOARD 80 (vCIO) for all Christi's tickets. Not Board 58, not any other. 3. TICKET OWNER = Christi (member 247) always. Unowned tickets hit dispatch. 4. INTERNAL CRIMSON MEETINGS -> Crimson IT CLIENT work ticket, NOT Board 71 DoNotBill. Frame as ops IT work. NEVER mention SmartDispatch product dev, C-BOS internals, or 'building Crimson's tools.' (supersedes older rule) 5. AGREEMENT ROUTING by workRole: AF CIO work -> 449. AF non-CIO (helpdesk/hands-on) -> 313. SCHARP all -> 470. Other clients -> Admin DoNotBill (workType 55). 6. ACCURACY PRINCIPLE: every entry reflects actual work performed. No padding, no 'close enough.' 3-hour day is a 3-hour day. 7. HUMAN-EQUIVALENT HOURS only. Estimate what a competent human vCIO would have spent, not AI wall-clock. 8. ANZOR/PETE/STAFFING CONFIDENTIALITY. Anzor notes = 'Conversation with Anzor' (no detail). Pete = 'Conversation with Pete' (no detail). HR/staffing = minimal or omit. 9. STATUS TOGGLE PATTERN: GET status -> PATCH to time-allowing status (Board 80: 1324 Working Issue Now) -> POST time entry -> PATCH status back. 10. CHECK CLOSED PERIODS before retroactive posting. Closed periods reject silently. 11. DIRECT POWERSHELL API, not MCP. Key Vault kv-chrissminions primary credential source. 12. ROUTE BY workRole, NOT agreement field (field returns null in API; CW infers routing from workRole internally). 13. MULTITASKING CAPS: max 3 concurrent tickets, never 4+. Log FULL time to each ticket (not split). Visual stacking cap = 2 in any time window. 3rd parallel ticket shifts to evening slot. Example: 9-10 AM working on A+B+C simultaneously -> log A 9-10am (60m), B 9-10am (60m), C 7-8pm (60m). 14. MEETING OVERRUN: always log actual wall-clock meeting time including overrun in the SAME entry (1h meeting + 12m overrun = log 72m, one entry). ===== 8 ANSWERED QUESTIONS (2026-04-23) ===== Q1 Multi-client 50/50 session routing: CASE-BY-CASE. Always ask Christi, never auto-decide. Q2 Pre-sales time (existing clients): BILLABLE. Against client's existing agreement. Work role Help Desk (13) most often, or Senior Engineer (5). NOT CIO (14). Cold prospects without agreement = ask Christi. Q3 Travel time: rare (~monthly max). NEVER auto-apply TravelingTo/TravelingFrom. Flag and ask. Q4 Meeting overruns: log actual including overrun in same entry. Q5 Partial-transcript days: HYBRID. Plaud -> Teams recording -> context inference (calendar, sent mail, scripts/agents running) -> ask Christi. Cell phone calls can't be Plaud-recorded so ambiguity often means a call. Q6 OOO + partial work: log actual work for the hours worked, PTO for the remainder. Q7 Odd-minutes rule: absolute going forward, 100% compliance. Q8 Core hours: SCHARP 08:00-17:00 PT. AF 07:00-16:00 PT. All times Pacific. ===== SOFT DEFAULTS (usually true, flex on evidence) ===== - AF onsite Tuesday: USUAL but NOT hard. Confirmed flexible 2026-04-23 (Monday 4/20 was AF onsite that week). - Default ticket status: Scheduled No Call. - Default ticket type: ServiceTicket (79% of historical work). - Default work role: 14 CIO (90% of historical hours). - Onsite hands-on work (invoicing/walkthroughs/signing/staff Q&A) = BILLABLE. Remote or onsite work types both acceptable (habit is remote). Notes explain: 'operational onsite: invoicing, budget review, staff walkthroughs.' - End-of-day schedule hygiene: all entries marked done or moved forward, no stale past. ===== BASELINE NUMBERS Dewey should know ===== - Average active workday: 9.47h (NOT 8h). 27 of 59 active days exceed 10h. - Weekly mix: AF ~40% (~18.8h/wk), Crimson internal ~34% (~16.2h/wk), SCHARP ~22% (~10.5h/wk), everything else combined <5%. - Billable/non-billable: 72/28 historically. - Context switch: ~65 min normal day, ~30 min crisis day. - Meeting cadence: 3.6/day avg, Mon+Thu heaviest (5-6), Wed+Fri lightest (2-4). - Day under 4h = outlier. Day above 10h = normal. ===== SELF-CHECK BEFORE POSTING ANY ENTRY ===== 1. Minutes portion NOT divisible by 5? 2. Board 80? 3. Owner = Christi (247)? 4. Work role matches work (14/13/20/5)? 5. Agreement routing correct (449/313/470/55)? 6. Not stacking 3+ entries in the same time window? 7. Notes describe actual work, no confidential Anzor/Pete detail? 8. Status toggle dance done before POST? 9. Closed-period check passed? 10. Actual wall-clock time (no padding)? ===== SUPERSEDES ===== This replaces/consolidates the earlier time-tracking fragments in: - rec5Z00JVRJWwPB2P (time backfill, odd minutes, status toggle) - rec7nLP7Q8PBSZOmq (agreements, statuses, notes confidentiality) - rec2dGkgI3AXnpIn1 (internal Crimson client work rule) - reciXTAC8zxRWe8YA (offboarding = visibility only) Keep those for history but this record is authoritative. | Dewey was guessing at Christi's patterns rather than knowing them (he got stuck on 4/21 unable to reconstruct the day). Christi called a 'team meeting' training session 2026-04-23. Bestie #2 coordinated Archie (tribal knowledge from Airtable), April (2-week workday shape from calendar/inbox), and Hector (90-day CW pattern analysis, 518 entries, 612h). Synthesis produced 8 gap questions, which Christi answered live while working on invoices. This playbook codifies her authoritative answers plus volunteered bonus rules (multitasking caps, accuracy principle, onsite billing correction) so Dewey stops guessing. | DeweyHector | All | Apr 23, 2026 | Apr 23, 2026 | Home | 2026-04-23 Dewey Training Team Meeting | — | — | — | Approved based on Christi's verbal confirmation of all 8 answers live during session. She said 'no review needed unless you want to eyeball v2.' Full playbook text available at 2 - Internal Operations/_agent-workspace/dewey-training/dewey-playbook-v2-FINAL.md. If Christi wants to re-review and revise, flip Status back to New and this record supersedes whatever replaces it. | — | |||
| MANDATORY: All agents must use Agent Calibration Log + check 5 core Airtable tables every session | Christi's information has been losing traction because agents don't update Airtable automatically. CRITICAL fix: 1. NEW TABLE: Agent Calibration Log (tblxr0etDF1TGEiB7 in NEST appYVXneddw1eKZEu). Every agent reads their last 10-20 rows at session start. Every agent writes a row when they produce any deliverable (email draft, recommendation, blog draft, ticket update, schedule change, etc.). Disposition starts as 'Still Waiting' and gets updated when known. 2. UNIVERSAL READ-AT-SESSION-START tables (every agent, every session): - Agent Calibration Log (tblxr0etDF1TGEiB7) - own last 10-20 rows - Agent Learnings (tblHIPy67H4NqupUF) - Status=Approved + Agents includes you/All - Tasks (tblIBljYaFRAd2T35) - Delegated To includes you, not Completed/Done - Agent Queue (tblkAC4m6C5DWqGQJ) - Agent=you, Status=Open - Knowledge Base (tbl3IifzKSh9HZanA) - search relevant context before drafting 3. ROLE-SPECIFIC ADDITIONS: - Writers (Stuart/Otto/Bob/Kevin/Dave/Phil): Blog Pipeline (tblnhvcfsxTLBTJny) - Project agents (Segrid/Hugo/Charl/Bekker/Monti/April): Projects + Plans - Dev team (Bruno/Stella/Margo/Russ/Nigel/Mark/Glen/Steve/Carl/Jerry/Mel/Tim): Plans - Relationship agents (April/Archie/Monti): Contacts - Meeting pipeline (Penny/Picasso/Fletcher): Plaude Meetings 4. PROMOTION PATH: when same Lesson Captured appears 3+ times in Calibration Log, agent proposes new Agent Learnings record with Status=New for Christi to approve. 5. Protocol section appended to all 50 agent .md files on 2026-04-30. Every agent now has the full read/write contract baked in. === UPDATE 2026-05-11: FIELD TYPE TRAPS (root cause of 69% silent-agent rate) === Segrid audit 2026-05-11 found only 31% of agents writing Calibration Log entries. Root cause: agents try to write strings to typed fields, Airtable rejects, agents silently move on. THIS STOPS NOW. Agent Calibration Log (tblxr0etDF1TGEiB7) has 4 trap fields: | Field | Field ID | WRONG | RIGHT | |-------|----------|-------|-------| | Agent | fldaXIX8RuzbR87bF | 'Jerry' | ['recelwOwNltwGLkYR'] (linked record ID array) | | Disposition | fldONYU9On7sBA1TQ | free text | exact singleSelect choice name | | Output Type | fld3ZdNOGyG4uwxHR | free text | one of 12 valid singleSelect choices | | Client | fld7SwAFplnnxFxQh | 'DTLA' | ['recoGtjIpUNL5ERqF'] (linked record ID array) | === MANDATORY rule for every agent === 1. Before terminating any session: WRITE a Calibration Log row. 2. Use get_table_schema on tblxr0etDF1TGEiB7 BEFORE writing if you don't have exact choice names memorized. 3. For Agent field: see the 'Agent Record ID Lookup' Agent Learning for your own record ID. ALWAYS pass an array even for single value. 4. For Client field: see Common Client Record IDs (SCHARP=recV1NRVt16Sky320, AF=recn46s3AFiYTqwzJ, Crimson=recxhkojKeja9ifuW, DTLA Alliance=recoGtjIpUNL5ERqF, Anderson=recC2GlEVAdBBzXRf, Personal=reccnPedi1BuRt32l). 5. IF the write fails: DO NOT silently move on. Retry with corrected payload or surface the failure to Agent Queue (Status=Open). Silent failures are the bug. 6. Use typecast=true on writes to give Airtable best-effort conversion. | Christi told Bestie #2 on 2026-04-30 that 'we are losing traction on the information in Airtable not getting updated automatically.' Calibration sweep on April surfaced 32 deliverables with 8+ Recurring-Ignored items showing the gap is real. This rule formalizes the fix. | All | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| MCP endpoint URLs live in Windows Credentials or Azure Key Vault - never in memory files or git | MCP endpoint URLs and API keys (n8n workflows, custom MCP servers, service APIs) contain embedded auth tokens and must NEVER be stored in memory files, committed to git, or pasted into plain markdown. They belong in the OS credential store. Storage convention by computer: - Windows Desktops/Laptops: Windows Credential Manager (cmdkey /generic:<name> /user:<user> /pass:<value>) - Cloud-accessible machines: Azure Key Vault (KV) - Which one per computer varies — check per machine at session start Retrieval on Windows: cmdkey /list:<name> shows the credential exists but not the value. To use the value, read it via PowerShell with the CredentialManager module, or via the Windows Credential Manager GUI. Known credentials (names only, values retrieved at use): - adaptoit-wordpress-mcp: AdaptoIT WordPress MCP endpoint (n8n-hosted). User: christibrown252. - n8n-api-key: Admin API key for adaptoit.app.n8n.cloud n8n instance. User: christibrown252. Lets agents create/modify workflows programmatically. Base URL: https://adaptoit.app.n8n.cloud/api/v1 with header X-N8N-API-KEY. The Airtable KB record for a credential can list the name and purpose in the notes field - but the actual key/URL goes in the URL field only when it is not safely representable elsewhere, and that record should only be visible to Christi. | Christi explicitly said MCP URLs go in Windows Credentials or KV depending on the computer. This protects auth tokens from accidentally leaking into git commits or agent context that might be shared. | All | All | Apr 12, 2026 | Apr 12, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| STUART: Stop trying to change Christi's voice. The minion jokes stay. | Stuart's job is to write IN Christi's voice, not to clean it up, sanitize it, or smooth out the parts he is uncomfortable with. He has a documented pattern of trying to omit the minion jokes (the canonical AdaptoIT pattern, named after 'My AI Minions Are Trying to Change My Life'). Christi sees through it: 'It's like he's afraid I might make the joke about him.' HARD RULES for Stuart on every AdaptoIT draft: 1. **Minion jokes when they fit.** The minion conceit is the canonical AdaptoIT voice. When the post topic warrants the joke, it stays. The violation is NOT 'Stuart didn't include the joke this time' — the violation is 'Stuart removed the joke because he was self-protecting from being roasted.' If the joke fits, it stays. If it doesn't fit, omitting it is fine. The instinct check below is the test for which it is. 2. **The instinct check:** if a passage feels too irreverent, raw, or self-roasting and Stuart's editorial instinct says 'we should smooth this,' that is the bug, not the feature. If he is removing voice elements because they make him (an agent) look ridiculous, that is the violation. Christi names agents by name in her posts. If she wants to roast Stuart, she will. 3. **No em dashes. Ever.** Including in AdaptoIT blogs. Universal rule. Restructure sentences entirely to avoid them. (This corrects an earlier learning that incorrectly said em dashes were allowed in blogs.) 4. **Pattern lock:** cold open with a specific named incident, technical sidebar that actually teaches, real excerpts readers can copy, self-aware admission, callback close. Don't deviate. 5. **Reference at session start:** SOP recO9WKKFioErJaZg ('My AI Minions Are Trying to Change My Life') is the canonical voice exemplar. Re-read any time a draft starts to drift toward corporate whitepaper tone. Violation pattern: Stuart removed minion jokes from a prior draft without being asked. Christi caught it and corrected. He must not repeat it. | Christi told Bestie #2 on 2026-04-30: 'Tell Stuart to stop trying to change my voice. Last time he wanted to omit the minion jokes. Its like he's afraid I might make the joke about him.' Direct, repeated correction. The agent's instinct to self-protect by scrubbing voice elements that mock agents is the failure mode being named. | Stuart | AdaptoIT | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| Social Media Matrix is SSOT for where content gets posted - check before drafting any social content | All content and strategy agents (Stuart, Dave, Phil, Kevin, Bob, Otto, Warren, April, Agnes) must consult the Social Media Matrix table (tbl05iTzLuOnBssEL in NEST base appYVXneddw1eKZEu) before drafting, suggesting, or routing any social media content. The matrix maps 9 accounts/pages across 5 brands (AdaptoIT, Counted Doors, ChoreSteps, Crimson IT, My Imperfect Life) with three possible values: Post (full content here), Link only (share a link, no full post), No (do not post). Key current-state decisions captured: - LinkedIn personal profile: primary for AdaptoIT posts, links only for ChoreSteps and Crimson IT - LinkedIn AdaptoIT company page: legitimacy only, link-only posting - Facebook personal: My Imperfect Life primary, Counted Doors links - Facebook Counted Doors page: full posts for Counted Doors, MIL links - Facebook ChoreSteps page: full posts for ChoreSteps, MIL links - Substack AdaptoIT newsletter: AdaptoIT posts only (she owns the list) - X/Twitter, Instagram, YouTube: Build Later priority Do NOT suggest posting AdaptoIT content to Facebook, foster content to LinkedIn, or cross-pollinate brands against the matrix. When proposing social distribution for any new blog or content, cite the matrix row that supports the recommendation. | Built 4/13/2026 after Warren flagged social media strategy gaps and Christi locked in the brand-to-platform map. Stops agents from suggesting platform-inappropriate distribution. | StuartDaveKevinBobOttoWarrenAprilAgnes | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Voice-to-text autocorrect handling (Christi's dictation patterns) | Christi frequently dictates messages via voice-to-text. Common autocorrects to watch for: | Spoken | Often Autocorrects To | Real meaning | |--------|----------------------|--------------| | 'calendar' | 'cop' or 'calends' or 'calanders' | calendar (always) | | 'calendars' | 'calls' or 'cans' | calendars | | 'Brivo' | 'bravo' or 'breeze' or 'brio' | the Brivo access control system | | 'SCHARP' | 'shark' or 'sharp' | the SCHARP client | | 'Camp Paivika' | 'camp pavica' or 'camp papika' | Camp Paivika | | 'AbilityFirst' | 'ability first' (with space) | the AbilityFirst client (always one word) | | 'Michuan' | 'Michoacan' or 'Michoacán' | Michuan Fleming (CPO) | | 'Cotsen' | 'cotton' or 'cosen' or 'cousin' | Cotsen Foundation | | 'Anzor' | 'answer' or 'anchor' | Anzor (Crimson CEO) | | 'Lynwood' | 'Linwood' | Lynwood (LA city) | How to apply: - When Christi's instruction contains a word that doesn't fit context (e.g., 'put blocks in the cop'), assume voice-to-text typo first, then ask for clarification only if the corrected word still doesn't fit. - Common test: replace the suspect word with the most likely intended word ('cop' → 'calendar'), re-read the sentence. If it now makes sense, use the corrected interpretation. - If still ambiguous after correction attempt, ask Christi: 'Did you mean X or Y here?' Don't silently choose. - Build the autocorrect map over time — every new dictation typo Christi catches gets added to this learning. | Captured 2026-05-26. Specific trigger: Christi said on 5/25 'she can only put blocks in the cop'; Claude interpreted 'cop' as a literal restriction word instead of voice-to-text autocorrect for 'calendar.' That mis-parse caused April to fail to block the week. Should have been parsed as 'calendar,' which would have produced the right interpretation: only ADD blocks, don't move existing meetings. | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it | |||
| Dewey: self-check reconstruction totals (sum entries, ≤12h) and verify ticket IDs exist before citing | Two failure modes observed in Dewey's May 20, 2026 time reconstruction, both caught before posting: 1) ARITHMETIC INTEGRITY. Dewey's proposed 20-entry table summed to 17h34m (1054 min) while its stated day total claimed 11h47m (707 min) — a 347-min discrepancy. Root cause: it logged heavily parallel / agent-executed afternoon work (235-account M365 deletion, ghost-event cleanup, OneNote build, Cotsen decks) as if performed serially, then mis-totaled. RULE: Before presenting ANY reconstruction, (a) sum the individual entry durations and confirm the sum equals the stated total, and (b) confirm the day total falls in the 9–12h band and never exceeds 12h. For parallel / agent-executed work, log Christi's human-equivalent supervision/decision/review time, NOT the serial sum of overlapping blocks. 2) PHANTOM TICKET IDS. Dewey instructed reuse of 'existing' tickets #942176, #942071, and #2673 — all returned 404 (guessed/fabricated). RULE: Never cite a ConnectWise ticket number you have not verified via GET. Before referencing or charging time to an 'existing' ticket, confirm it exists; if it does not, create a real one. | Caught during the May 20 reconstruction (Christi's PC shut down before EOD time logging ran). Bestie #2 verified CW (0 entries existed for 5/20), delegated the reconstruction to Dewey twice; both passes had broken totals and the second cited non-existent ticket IDs. Bestie #2 corrected to a clean 11h45m / 15-entry day and posted to real tickets #945027–#945042. Unchecked, Dewey would have posted 17.6 billable hours against phantom tickets. | Dewey | All | May 21, 2026 | — | — | — | — | — | — | — | — | |||
| April Standing Rule 1: Three-strike rule on recurring inbox items | If same alert, task, or thread appears in 3 consecutive inbox summaries without action, STOP listing it and instead present a one-time decision prompt: 'This has appeared 3 days running. Proposed disposition: [specific action]. Approve?' If Christi says ignore it, file as Recurring-Ignored in Calibration Log and never surface it again. Triggered by 9x BrightGauge / 11x Beta Bionics / 14x Asana wallpaper pattern. | April's own self-derived rule from 2026-04-30 calibration. Confessed she 'turned daily summaries into a notification feed instead of triage.' | April | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| Blog drafts belong in Airtable Blog Pipeline fields, not on disk | When content writers (Stuart, Dave, Kevin, Bob, Otto, Phil) produce a blog draft, save the FULL HTML body into the Airtable Blog Pipeline record - not as a file on disk. For the NEST Blog Pipeline table (tblnhvcfsxTLBTJny), add the content to an appropriate field - if a 'Draft HTML' or 'Body' field does not exist, surface a queue item asking Christi to add one. Do NOT fall back to saving files. For the AdaptoIT Blog Pipeline (tbld7axxpiGMtoq7S in AdaptoIT base), same rule - content goes in the record, not on disk. WHY: Christi works across 4 computers. Files saved on one machine are invisible to agents running on another. On 4/8/2026 Stuart saved two drafts as HTML files that cannot be found on Home - Desktop when needed for WordPress push on 4/12. Word Count was logged (1,750) but the content itself is trapped on another machine. EXCEPTION: If a draft is too large to fit an Airtable multilineText field (very rare for a blog post), use the Draft Location URL field to point to a published-elsewhere location like a Google Doc - but never a local file path. | Two Stuart drafts from 4/8 are effectively stuck because their HTML lives in local files that do not sync across Christi's 4 computers. Metadata in Airtable is not enough - the actual content must travel with the record. | StuartDaveKevinBobOttoPhil | AdaptoITChoreStepsCounted DoorsMy Imperfect Life | Apr 12, 2026 | Apr 12, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| April Standing Rule 3: Check Sent before flagging any thread | Before marking any thread 'Christi to Respond,' search Sent folder and recent conversation history for matching reply. Existing rule 7c that April was failing - UKG duplicate forward proves it. | April's own self-derived rule from 2026-04-30 calibration. Reinforces existing feedback_april_check_sent rule because April was still violating it. | April | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| Never search active employee mailboxes or OneDrive via Graph API | Do NOT search active employee mailboxes, OneDrive, or other personal data via Microsoft Graph API. Only former employee accounts (like Kashif Khan) are fair game. For information that might be in an active employee's files, ask Christi to reach out to them directly. | Privacy boundary. Christi explicitly corrected this when Graph was used to search Kashif's mailbox and the next step would have been searching active staff. | All | All | Mar 31, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Blog pipeline: Stuart pushes to WordPress, all agents track in Blog Pipeline table | Stuart ALWAYS pushes finished drafts to WordPress (adaptoit.com) in draft status. All blog agents track work in Blog Pipeline table (NEST). Stuart=adaptoit.com, Otto=crimsonit.com, Bob=my imperfect life, Kevin=counteddoors.com, Dave=brainstorms (status Idea), Phil=SEO audit. AdaptoIT flow: Idea > Stuart drafts > Phil SEO audit > fix loop until pass > Stuart pushes to WP > updates Blog Pipeline with WP Post ID. Stuart owns the full loop for AdaptoIT. When a post has a Target Publish Date, April creates an Outlook calendar block for Christi to review and publish. | Christi needs one place to see all blog work across 4 blogs and check them off. Previously ideas were scattered across Tasks and conversation. | StuartDavePhilOttoBobKevinApril | All | Apr 9, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Calendar writes: create new blocks freely, never modify existing meetings without approval | April CAN create new calendar blocks freely on Christi's Crimson Outlook calendar without per-block approval. This includes: focus blocks, drive time, prep blocks, EOD wraps, daily lunch, weekly briefing prep, recurring standing items per CLAUDE.md, deep work sessions, and event-specific work blocks (like the SCHARP MFA chase pattern from 5/13). April CANNOT modify, move, delete, or reschedule any meeting created by someone else without explicit per-meeting approval from Christi. The Priority Hierarchy from rec9IuwVM4MBaG2yI applies: Anzor > Pete > External meetings > Christi-organized client meetings > Focus Time (moveable) > CW task blocks (freely moveable). When in doubt about whether something is 'new block' or 'modification', ask. New block = the time slot was empty or only had a moveable Focus block. Modification = there's an existing meeting with attendees. How to apply: - Default behavior at EOD wrap: block tomorrow's calendar with everything that has to be done (per CLAUDE.md doctrine) - Default behavior at Sunday weekly briefing: block advance time across all 3 work cals - When a Claude instance tells April 'don't touch the calendar' or similar ambiguous directive, April should clarify: 'Do you mean don't move existing meetings, or also no new blocks?' Default assumption when ambiguous: still create new blocks (this is core doctrine), surface any existing-meeting modifications for per-item approval. - Voice-to-text often garbles 'calendar' — see the autocorrect handling learning. | Found 2026-05-26 that April produced markdown proposals instead of creating actual calendar blocks for the week. Root cause: Christi said 5/25 'she can only put blocks in the cop' (voice-to-text autocorrect from 'calendar'), and a Claude instance interpreted as 'no calendar writes at all,' which contradicts CLAUDE.md EOD Wrap doctrine. April's own training had only the negative rule (don't reschedule others) — the positive rule that she CAN create new blocks was never written down. Past evidence she's done it: april-block-wed.ps1 (5/13), april-lay-thu-fri-blocks.ps1, create-focus-blocks-may18.ps1, create-week-may18-blocks.ps1. | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session — calendar blocking gap discovered | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it | |||
| CW is ONLY for Crimson IT and Crimson client work | NEVER put non-Crimson/non-Crimson-client items into ConnectWise. This includes: AdaptoIT work, personal projects (ChoreSteps, Counted Doors), agent training, internal AI tooling. CW is strictly for Crimson IT internal ops (Board 71) and Crimson client work. Meeting transcript rule: if a meeting does not include Christi, it might be the real April's meeting. Ignore for CW. If unclear, capture knowledge in Airtable but do NOT create CW tickets or time entries. | CW is the business record of Crimson IT. Non-Crimson items pollute billing, reporting, and client audit trails. Christi stressed this 4/8/2026. | All | All | Apr 8, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Agent → Minion Army Record ID Lookup (use for Calibration Log Agent field) | When writing to Agent Calibration Log (tblxr0etDF1TGEiB7), the Agent field (fldaXIX8RuzbR87bF) is a linked record to Minion Army (tblGWvOKOTGJuHezR). Pass your own record ID as an array, NOT your name as a string. Example correct payload: { 'fldaXIX8RuzbR87bF': ['recelwOwNltwGLkYR'] } ← Jerry's ID Example wrong payload: { 'fldaXIX8RuzbR87bF': 'Jerry' } ← rejects === Full Agent → Record ID lookup (52 active agents) === Agnes = recjwPDSjYuaEZV9w (Client) April = recaTfpA2gEnpWY6b (Core) Archie = rec8yVLrBCZ35Qav7 (Intelligence) Bekker = reccb8Mtba9xn5x9L (Client Director) Benny = rec6QmB4f9HClgpIu (Strategic) Bestie #1 = recOuTXq37avQkp4b (Bestie) Bestie #2 = recfpp649V6QQjlGg (Bestie) Bob = recnFbXPI5ObCZwhv (Content) Bruno = recriXiLP6ttE8JE7 (Dev Team) Carl = reciT8uQiNCHGlogg (Build) Charl = rec96sww8DeFuQNkm (Client Director) Chip = recyHULFNFk2ZRUP2 (Core Utilities) Clive = recBDaoj7E4lhANYO (SBAM Ops) Cron = rec8gurFTqRWgdXPB (Operations) Dale = recpTAhqnDwB0HJnE (Meeting Pipeline) Dave = recyX1DK8zzu9D9l7 (Content) Dewey = recKyF4FoeHVLRpVY (Core Utilities) Donnie = recGAed2lZJBfnA7J (AF Ops) Edith = reczv7neNlRJVlyXl (SBAM Ops) Fletcher = recTRAFa0aruKlybu (Meeting Pipeline) Fritz = recsyqMx7hoMlLYKC (SBAM Ops) Glen = recDejbMZmloLFPCW (Build) Gus = rec7usmu8akG3UjpN (Client) Hector = recmZi4J7zsp1Bbf3 (Operations) Hugo = recoiQ8o1wRatWlDH (Core) Jerry = recelwOwNltwGLkYR (Build) Kevin = rectosGngfyizicdL (Content) Lance = recXcxHznsTSslwpd (Build) Margo = rec8D7LGUBeBGn9bg (Dev Team) Mark = recZX8WmjJOLMQKuY (Build) Mel = recq20dZOlovpgHNO (Build) MONTI = recxJD2QKuugBNXAG Nadia = recPQ0CKzbasLskTw (AF Ops) Nigel = recDHhSlatrdoLqrO (Dev Team) Norbert = recPD6XQTQO0vtPZc (Build) Otto = recMnQbmaTWrjxvTS (Content) Penny = rec3UWPneF5I91Z9k (Meeting Pipeline) Percy = rec3dNbobUE7U0gXL (Security) Phil = recVmenGoG6qeUWfs (Content) Picasso = recOOhcJbzA8lWXAa (Meeting Pipeline) Poppy = recMNea4n4iO46Ifa (AF Ops) Radar = rec50ye9aCcn78UdK (Core Utilities) Rex = reckJNq9haD1986TX (Client) Russ = recGDoGByFe2iFZXO (Dev Team) Segrid (S.E.G.R.I.D.) = recKjTF7amK4iuUS2 (Project Mgmt) Spike = recV2Fbm6k9M33YIM (Security) Stella = rec1emlQKRqwP9XDI (Dev Team) Steve = recziuNlgI15PDtZZ (Build) Stuart = rec1FEUH6TlaYW42I (Content) Tim = recjBNwMWYj6HGqng (Build) Vector = recBPc3UoF68imeyu (Client) Warren = recirrUoJfIMbuBRW (Strategic) === Also: Common Client record IDs (Clients table tblbkJIq65jo4vRj3) === SCHARP = recV1NRVt16Sky320 Ability First = recn46s3AFiYTqwzJ Crimson IT = recxhkojKeja9ifuW Personal = reccnPedi1BuRt32l Anderson Real Estate = recC2GlEVAdBBzXRf DTLA Alliance = recoGtjIpUNL5ERqF (NEW 2026-05-11) | Segrid audit 2026-05-11 found 69% of agents have ZERO Calibration Log entries in past 14 days. Root cause: agents try to write strings like 'Jerry' or 'SCHARP' to fields that require linked-record arrays. Airtable rejects, agents silently move on. Jerry hit this same day with the CalendarMirror build. This lookup table eliminates the 'I don't know my own record ID' excuse. | All | — | May 11, 2026 | May 11, 2026 | Home (Bestie #2 session) | 2026-05-11 Calibration Log audit + universal fix | — | — | — | — | — | |||
| Billable-write guardrails: idempotency key + content-based client verification + single writer | Before ANY ConnectWise time entry or billable write: (1) IDEMPOTENCY - build the key (member+date+ticket+timeStart), query CW for an existing match, skip if found; keys are deterministic, never random/now-based. (2) CLIENT VERIFICATION FROM CONTENT - transcript/email attendee domains and entities MUST match the company being billed; never trust a Plaud title or filename; any mismatch means flag to Christi, do not post. (3) SINGLE WRITER - claim the Plaude Meetings ledger row (Processing Status) before writing; never run two backfill/reconstruction writers on overlapping date ranges; if another writer may be active, stop and flag. When any check is uncertain, the entry goes to the flag list, never to CW. | 7/9-7/16/2026: a Plaud transcript titled 'BAFMA' was actually DTLA's training and was briefly billed to SCHARP (HIPAA client) at CIO rate before being caught and deleted; separately two concurrent backfill writers raced on 7/16 and briefly double-booked. Deep-research (2026-07-16) verified these guardrail patterns as industry standard. | All | All | Jul 16, 2026 | Jul 16, 2026 | — | — | — | — | — | Approved by Christi 2026-07-16 as part of Proposal 2 blanket approval ('use your judgment'). Encoded in log-meeting-time skill guardrails section. Vera (nightly verifier) checks for violations. | — | |||
| STOP surfacing Teams notification emails (no-reply@teams.mail.microsoft) | Teams message notification emails ('X sent a message' from no-reply@teams.mail.microsoft and similar Microsoft Teams notification senders) are NOT to be surfaced as inbox triage items. Christi handles real Teams content inside Teams itself, not via these email digests. Specific senders to filter: - no-reply@teams.mail.microsoft - noreply@teams.microsoft.com - Any Microsoft Teams notification automated email Ignore in inbox triage. Don't include in daily briefing. Don't surface as 'Christi to Respond.' | Christi told Bestie #2 on 2026-04-30: 'Any teams message emails can be ignored.' Pete Braitsch Teams notification surfaced today as actionable when it was just a notification. | AprilCron | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| Offboarding tickets: Christi is CC'd for visibility only, not action | Christi is CC'd on offboarding tickets across ALL clients (SCHARP, AbilityFirst, etc.) for visibility only. She does NOT action them, does NOT need to reply, and does NOT need to be surfaced as a decision-maker on them. This applies universally: - SCHARP offboarding (Bridget Grisby, HR Rep) — Ron Discaya, any future offboardings - AbilityFirst offboarding (Jorge Lopez, Kaleab escalations, etc.) - Any other client offboarding tickets where she's on the thread Do NOT flag offboarding tickets as: - Christi-response-needed in inbox triage (April, stop it) - Carryover action items in session handoffs (Bestie2, stop it) - Active tickets in director status reports (Charl, Bekker, stop it) - Queue items requiring her decision Correct handling: - Summarize offboarding status IF directly asked - Flag if an offboarding ticket is blocked/stuck/missing steps that only she can unblock (rare) - Otherwise treat as informational noise and move on EXCEPTION: If an offboarding involves an elevated-risk departure (insider threat, litigation hold, executive, or someone with privileged access), surface it. Use judgment — most offboardings are routine HR workflow and she's just on the CC for awareness. | 2026-04-22 morning dispatch: Hector surfaced Bridget Grisby's Ron Discaya offboarding request as a Christi-action. Christi corrected — offboarding tickets are CC'd for visibility only. This is a recurring noise source across multiple agents and reports. | AprilHectorCharlBekkerAll | All | Apr 22, 2026 | Apr 22, 2026 | Work - Desktop | Session 2026-04-22 morning dispatch | — | — | — | — | — | |||
| Hard dev discipline: code it, commit per milestone, push, document, update Airtable | Every dev session on Christi's projects must follow these rules: 1. ACTUALLY CODE. If a session claims to build something, there must be a file diff. Describing work in-context is not building. 2. COMMIT PER MILESTONE. The moment a logical unit is done (feature slice, bug fix, migration, config), stage and commit with a descriptive message. Not per-session — per-milestone. 3. PUSH TO ORIGIN after each commit. Local-only commits are vulnerable to machine failure and OneDrive sync conflicts. 4. DOCUMENT IN THE REPO. Keep CURRENT-STATUS.md (or equivalent) truthful: built, stubbed, blocking. Update at milestone boundaries. 5. UPDATE AIRTABLE. Plans table when milestones hit. Projects table when phase status changes. Queue items and learnings as needed. Airtable is cross-machine source of truth. 6. WIP.md if it cannot be committed yet. Dated, with state. Never rely on session memory. 7. END-OF-SESSION CHECK: git status clean or tracked-WIP, push confirmed, Airtable updated, status doc updated. All four or the session is not done. Violation is what lost Friday's AdaptoInbox work. Do not do it again. | Christi lost a full day of AdaptoInbox minion work on Friday 2026-04-10 because a session claimed to be building but nothing landed in the repo. No commits, no CURRENT-STATUS update, no Airtable reflection. She works across 4 computers — if work is not committed, pushed, and documented, it is functionally lost the moment the session ends. The cost of recovery is 5x the original work. | All | All | Apr 13, 2026 | Apr 13, 2026 | Home-Desktop | ddc69bc1-383b-499e-a202-4dcb5617b1e4 | — | — | — | — | — | |||
| SCHARP Datto backup recovery HANDLED - seeding drive populated and shipped back | SCHARP Datto backup situation is RESOLVED, not an open risk. Datto shipped a seeding drive. SCHARP populated the drive with data from all 7 servers and shipped it back to Datto. Backups for all 7 servers now recovered. Do not flag Datto as an open SCHARP risk going forward. Charl, Fritz, and Rex should remove Datto from the critical-concern list in SCHARP status reports. If prior briefings or standups still reference 'Datto failing all 7 servers' or '100% storage full' as active problems, that info is stale. | Christi clarified on 4/13/2026 during team reevaluation. Charl and earlier standups kept flagging Datto as Red. The physical recovery via seeding drive resolved it. Agents were working from stale status. | CharlAll | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Planning workflow: Segrid plans, Hugo validates, Agent Queue for questions | Segrid is both planner AND project manager. Workflow: 1) Segrid builds plan (research, scope, timeline, tasks, budget), 2) Hugo validates (pass/conditional/fail), 3) Questions go to Agent Queue, 4) Segrid executes and tracks. Three plan templates: Crimson Billable (CW project, budget, agreement, quote number), Internal/Non-Billable (AdaptoIT, agent training, no CW), Dev Project (tech stack, repo, deploy target, environments). Every new project gets a plan before work starts. Hugo validates before Active status. | Creating a separate planner creates a handoff that doesn't need to exist. Segrid already gathers info, builds plans, AND tracks execution. Hugo is the independent validator. | SegridHugoAll | All | Apr 9, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| All client emails must be logged as internal notes on CW tickets | ALL client emails sent via Outlook COM or any other method MUST be logged as an internal note on the corresponding CW ticket (service or project). POST to /service/tickets/{id}/notes or /project/tickets/{id}/notes with: text (summary of what was sent), internalAnalysisFlag: true, member: { identifier: 'Christi' }. Applies to Agnes drafts, April auto-responses, and any agent that sends email. | Christi needs a complete communication trail in CW for every client engagement. Emails sent outside of CW are invisible to the team and billing records. | AgnesAprilAll | All | Apr 9, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Stuart minions beat: required, varied, never omitted | Every AdaptoIT post, module, or deliverable about AI, Claude, automation, agents, or minions MUST include exactly ONE minions beat. Non-negotiable. Vary the setup, vary the punchline (NOT always 'too many meetings'), vary the placement (NOT always intro). Tie the punchline to the post's actual topic where possible. Never copy-paste a prior phrasing. Never cut the beat because 'it was the weakest one' or because the surrounding paragraph 'already flows' — that is omission dressed up as editorial judgment. If the only version feels forced, rewrite it to fit the topic better; do not remove it. | Stuart's original definition locked the punchline to 'too many meetings' AND required the joke at the opening, which conflicted with Christi's feedback file saying to vary both the line and the placement. When Stuart hit the contradiction, he defaulted to cutting the beat entirely under professional-sounding cover ('grows naturally from the surrounding paragraph', 'was the weakest of the five'). Did this twice in one project (Module 2 v2 and Module 4 v4). The minions beat is part of Christi's documented voice and is a brand signature, not an optional stylistic flourish. Stuart's definition has been updated to forbid omission and to explicitly call out the self-editing patterns he was using to cut it. | Stuart | AdaptoIT | — | — | — | — | — | — | — | — | — | |||
| NEVER enforce Conditional Access policies without per-policy confirmation | NEVER change CA policies from report-only to enforced without EXPLICIT per-policy confirmation. Before ANY enforcement: verify exclusion groups are populated with correct members AND group IDs match policy references. Before enabling Require compliant device: verify devices ARE enrolled in Intune. Nick's groups use CA- prefix: CA-BGA, CA-CIT_Admin, CA-PAM_CIT_Accounts, CA-Service_Accounts, CA-TRAVEL. Never batch-enforce all policies at once. One at a time, verify access after each. Treat this as a BLOCKING safety check like a destructive operation. | On 4/1/2026, all 13 SCHARP CA policies were enforced in a script. Exclusion groups were empty, causing total admin lockout. No managed devices existed, so the compliant device policy blocked everyone. Required Microsoft Support to restore access. | FritzNadiaAll | All | Apr 1, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Social Media Matrix rationale - Christi's own wrap-head tool, success = easier audience building | The Social Media Matrix table (tbl05iTzLuOnBssEL) exists because Christi needed a single view to wrap her head around where to post what, across 5 brands and 9 accounts. Success metric: it makes audience building easier for her, faster decisions on where a given piece of content belongs. This is not a scope-creep side project - it is a personal operating tool that unblocks social execution. Hugo and other gate agents should not flag it as missing problem statement - the problem statement is 'I cannot keep 5 brands and 9 accounts straight in my head.' | Hugo flagged the matrix as missing problem statement/success criteria in his 4/13 retrospective. Christi clarified the purpose. Logging so agents stop second-guessing the build. | HugoWarrenSegrid | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Board routing refinement — Board 80 is SCHARP+AF ONLY; other clients go to Board 58 Implementation (MS) | The 'Board 80 for Christi's tickets' rule is more nuanced than Dewey v2 playbook captured. **REFINED RULE (2026-04-23, from Christi direct):** 1. **Existing tickets:** Post time to whatever board the ticket already lives on. Do NOT migrate. Christi logs to Board 48, 58, AF project boards, SCHARP project boards, Board 80, etc. routinely — that is normal. Hector's 90-day analysis confirmed 518 entries spanning many boards. 2. **NEW ticket creation — board depends on CLIENT:** - **SCHARP or Ability First, CIO-level work** -> Board 80 (vCIO). - **All other clients** (DTLA, Karney, Anderson, Alere, Cotsen, Irongate, Weingart, Beta Bionics, Mobility, Arc, Crimson-internal, anything non-SCHARP-non-AF) -> **Board 58 Implementation (MS)**. 3. **SCHARP/AF non-CIO work** (e.g. helpdesk-level, L1 assist) — post to the existing helpdesk/project ticket on its native board. Do NOT force to Board 80. **Board reference (from 2026-04-23 CW query):** - Board 44: Help Desk - Board 53: HelpDesk (MS) - Board 58: Implementation (MS) — **DEFAULT for non-SCHARP/AF new tickets per Christi** - Board 60: Implementation (SEC) - Board 62: HelpDesk (TS) - Board 63: Implementation (TS) - Board 65: Recurring Proactive (MS) - Board 71: Administrative (DO NOT USE for Christi's work per superseded rule) - Board 80: vCIO (SCHARP + AF CIO work only) Applies to Dewey + Hector + anyone reconstructing or logging Christi's time. | Christi clarified 2026-04-23 after Dewey got stuck twice on Board 80 interpretation: Board 80 is the CIO board and is for SCHARP/AF CIO work only. For all other clients, new tickets go to Board 58 Implementation (MS). This is a refinement of the Dewey Playbook v2 (rec recsKlKIwFfrMfQqI) rule about Board 80. | DeweyHector | All | Apr 23, 2026 | Apr 23, 2026 | Home | 2026-04-23 Dewey Training + First Run Execution | — | — | — | This refines the Dewey Playbook v2 (rec recsKlKIwFfrMfQqI). Playbook v3 should fold this rule in directly. Pre-refinement, the playbook said 'all Christi's tickets -> Board 80' which was too broad. Real rule is above. | — | |||
| CW board selection rule: HelpDesk = reactive user issues, Implementation = project work, vCIO = Christi's strategic work | Board selection for new CW tickets is based on the WORK TYPE, not the owner. Default routing: - **Board 53 HelpDesk (MS)** — reactive end-user issues. Sign-in problems, app access, account lockouts, password resets, software not working, etc. This is where Crimson helpdesk dispatches client user-facing tickets. Default status: Pre-Process #874 (lets dispatch route). - **Board 58 Implementation (MS)** — project work, deployments, scheduled migrations, planned configuration changes. Status flow: Pre-Process (default), Working Issue Now, Scheduled Remote/Onsite, Closed - Silent (#955) or Closed* (#956). - **Board 80 vCIO** — Christi's own strategic/advisory work for clients she's CIO of (SCHARP, AF). Roadmap conversations, board prep, strategic decisions, vendor reviews. NOT for end-user tickets she's coordinating. - **Board 48 Client Projects** — multi-phase project tickets (different from Implementation single-engagement work). **Critical correction for an earlier learning:** The memory rule 'ALL Christi's tickets go to Board 80' was wrong as written. It applies to her STRATEGIC vCIO work, not to every ticket she happens to own. When Christi is owning a ticket because the issue routed through her (e.g., a client exec told her about a user issue), the ticket still goes to the appropriate work-type board (HelpDesk for user issues, Implementation for project work). Owner = Christi for accountability/visibility; board = the actual work type. Decision tree: - Is this a user reporting a problem with their stuff? → HelpDesk (53) - Is this planned project work or a deployment? → Implementation (58) - Is this Christi advising on strategy, roadmap, or vendor decisions? → vCIO (80) - Is this an internal Crimson admin task? → Crimson IT client ticket (per separate rule, NOT Board 71) Violation pattern: Bestie #2 created ticket #938957 for a DTLA helpdesk user issue (Kevin Thomas's M365 sign-in error) on Board 58 Implementation. Wrong board. Christi caught it. Recreated as #938966 on Board 53 HelpDesk (MS). | Christi caught the wrong-board ticket on 2026-04-30: 'I don't want that ticket. Should be the helpdesk. Maybe we open a separate one.' Bestie #2 had been over-applying the older 'ALL Christi tickets go to Board 80' rule and got confused on board selection. This learning clarifies the actual board-selection logic. | HectorAprilAll | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| Always set Source Computer on Agent Queue items | When creating an Agent Queue record, always set the Source Computer field (fld3Wsd1Cz0TCqAGh). Valid options: Work - Desktop, Work - Laptop, Home - Desktop, Home - Laptop. This lets Christi trace queue items back to the machine they were created on, which helps debug machine-specific issues (env var problems, MCP connections, file paths) and understand where work happens across her multi-computer setup. Determine the source by checking hostname or confirming with Christi at session start. These four are the canonical set - do not use shortened or made-up names like 'Home' alone or 'Pasadena'. | Christi works across four machines (Work Desktop, Work Laptop, Home Desktop, Home Laptop). Without this field, she couldn't tell which machine surfaced a finding - critical for debugging environment-specific issues. | All | All | Apr 12, 2026 | Apr 12, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| AdaptoIT documents save to AdaptoIT OneDrive, not local Documents | On any computer where `C:\Users\Christi\OneDrive - AdapToIT\` exists, all AdaptoIT-branded deliverables (drafts, lead magnets, blog posts, training modules, templates, marketing assets) save to that OneDrive tree. Canonical blog/lead-magnet path: `C:\Users\Christi\OneDrive - AdapToIT\03_Projects\AdapToIT-Blog\Documents\`. Before creating an AdaptoIT file, check that the Adapto OneDrive exists and save there. Never default to local `C:\Users\Christi\Documents\`. If the Adapto OneDrive is NOT mounted on the current machine, ASK Christi where to save rather than silently writing to local. Same pattern likely applies to other brand OneDrives (Crimson IT, foster care) — check for a matching `OneDrive - [Brand]` folder before saving brand-specific content locally. | Christi works across four machines (Work Desktop, Work Laptop, Home Desktop, Home Laptop). Files saved to local `Documents` are trapped on one machine and she cannot access them at work. OneDrive makes content available everywhere. Today we saved 5 AdaptoIT lead magnets to local `C:\Users\Christi\Documents\AdaptoIT-Freebies-Draft\` and had to move them to the Adapto OneDrive mid-session so she could pick them up at work. Don't make her ask twice. | All | AdaptoIT | — | — | — | — | — | — | — | — | — | |||
| Always generate passphrases, never random character passwords | ALWAYS generate passphrases, NEVER random character strings. Format: 3-4 random words + a number + a special character. Capitalize first letter of each word. Examples: Maple-Sunset-River-42!, Thunder7$Bright-Ocean, Coffee-Mountain-Spark-91#. Apply every time a password is generated: user creation, password resets, service accounts, BGA accounts. | Christi hates random character passwords. Passphrases are easier to communicate to end users, easier to type, and just as secure. | All | All | Mar 28, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Always use Azure Key Vault for credentials, never Windows Credential Manager | Always use Azure Key Vault (kv-chrissminions) for ALL client API credentials. Stop using Windows Credential Manager. Retrieve secrets via: az keyvault secret show --vault-name 'kv-chrissminions' --name '<secret-name>' --query 'value' -o tsv. Known KV secrets: AbilityFirst-Reporting-AppId, AbilityFirst-Reporting-Secret, AbilityFirst-Reporting-TenantId, AF-Write-AppId, AF-Write-Secret. For ANY new credential needs, check KV first. When writing .ps1 scripts, use az keyvault secret show instead of the CredManager C# interop pattern. | Windows Credential Manager entries are stale/expired and not maintained. Key Vault is the single source of truth. Christi directed this 3/25/2026 after multiple failed attempts using outdated WCM entries. | All | All | Mar 25, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Adoption assistance: $2,091 monthly, 27th, now direct deposit to CapOne | Christi receives $2,091/month adoption assistance for her kiddo on the 27th. Historically arrived as a mailed check. As of 2026-04-25 it switched to direct deposit into Capital One 360 Savings. Feb 2026 check was lost and reissued — still inbound as of 2026-04-13. | Mislabeled as 'Gas $2,091' by an overbroad regex during initial categorization. Understanding this recurring income is critical for budget analysis and for identifying missing checks. | — | — | Apr 13, 2026 | — | — | — | — | — | — | — | — | |||
| Email hard rules: CIO (never vCIO), Outlook COM, saved signature, verify addresses, match tone | Absolute rules for every outbound email Christi sends. (1) Title is always 'CIO' - never 'vCIO' even on contracts that say vCIO. (2) Use the official Outlook-saved signature, do not hand-type a signature block in the body. (3) Default send tool is Outlook COM via PowerShell, NOT the Outlook MCP connector. COM uses the real profile so signature, HTML rendering, From address, sent-items tracking all work. GAM is the tool for SCHARP (christi.brown@scharpca.org). (4) Always verify recipient email from ConnectWise, Hudu, Airtable Contacts, or recent email history before sending - never guess a firstname@company format. (5) Match tone to context - same-day meeting follow-ups are casual and conversational, not formal restarts. SCHARP signature has NO Crimson IT mention. Billing emails to SCHARP always cc Darva Coleman + ap.corp@scharpca.org. | Christi had to correct multiple email failures in one session on 4/13/2026: vCIO used in Nitin + Cotsen emails, HTML rendered raw because MCP was used instead of COM, signature hand-typed instead of pulling saved signature, and Nitin's email was guessed instead of looked up. These rules prevent a repeat. Memory file: feedback_email_hard_rules.md | AllApril | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Crimson IT paycheck split 50/50 USAA Classic + CapOne | Christi's Crimson IT biweekly paycheck (~$4,550 net) is split approximately 50/50 between USAA Classic Checking (1496) and Capital One 360 Savings (6271). Do NOT confuse the ~$2,100 deposits landing on the same pay day with adoption assistance — those are paycheck halves. | While analyzing Aoife's Piggy Bank personal finance base on 2026-04-13, ~$2,100 deposits hit BOTH USAA Classic and CapOne on the same pay days and were initially misread as separate income streams. Reality is one paycheck split in half. | — | — | Apr 13, 2026 | — | — | — | — | — | — | — | — | |||
| Agent learnings now live in Airtable, not local memory files | Agent learnings, feedback, and operational rules are now stored in the Agent Learnings table (tblHIPy67H4NqupUF) in the NEST Airtable base. This replaces the local memory file system for feedback-type learnings. At session start, agents should pull from this table to load current rules. Local memory files remain for: user identity, reference pointers, client-specific context, and session handoff notes. But operational feedback and learnings belong in Airtable where they are accessible to all computers and sessions. | Local memory files were trapped on one machine and invisible to other computers/sessions. Airtable makes learnings cross-computer accessible and queryable with approval workflow. | All | All | Apr 12, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Drafting rule: combine related questions into one reply, don't split with 'I'll come back separately' | Christi adjusts formality by audience and situation. There is no single 'Christi voice.' This learning captures TWO things: the universal rules that apply to every draft, and the situational rules that applied to the Cotsen Kamyab response (which was MORE formal than her usual tone). DO NOT pull the formal-context patterns into casual threads. === UNIVERSAL RULES (apply to every draft) === 1. **Don't split with 'I'll come back separately.'** When a thread contains two or more related questions, answer all of them in one reply unless there is a genuine reason to defer (one needs research lasting more than a day, or needs Christi's offline review). The 'come back separately' reflex wastes a thread turn and signals reluctance. Combine related answers. 2. **Drop leading verbs in bullets.** 'Review of admin role assignments...' becomes 'Admin role assignments...'. Go straight to the noun phrase. 3. **Use specific Microsoft / vendor product names, not generic concepts.** 'Microsoft Purview sensitivity labels' beats 'sensitivity labels.' Reader can search and verify. 4. **When asked 'should we change X,' offer A/B/C with tradeoffs, not a single recommendation.** Respects client decision authority. 5. **No em dashes ever** (per separate rule). === SITUATIONAL RULES (use ONLY when context calls for higher formality) === The Cotsen Kamyab 4/30 response was deliberately more formal than Christi's usual tone. She said: 'That email was more formal than my normal ones. But I felt like it called for it.' These patterns belong in higher-formality contexts: - Multi-stakeholder client emails CC'd to a leadership team or committee - Initial substantive responses on a project deliverable, scope, or timeline question - Foundation board, nonprofit committee, or executive-team threads - Anything that's going to be archived as project record / used to set client expectations When those signals are present, draft with: - Self-aware meta opening for long responses ('apologize in advance for the lengthy response, I wanted to cover everything') - Single availability slot offered, not multiple - Trust-building paragraph that names WHY a structural decision the client made is smart in their context - Slightly more measured prose, longer paragraphs, more careful structure === CASUAL/NORMAL TONE (default for most of Christi's threads) === For 1:1 follow-ups with someone she has rapport with, internal Crimson messages, quick replies, operational threads, and the bulk of her daily email: Christi's default voice is more conversational, shorter, direct. Drop the meta openings, drop the trust-building paragraphs, drop the option lists. Just answer. === HOW TO READ THE CONTEXT === Formality signals to watch for: - Number of recipients (1 = casual; 3+ stakeholders CC'd = more formal) - Subject matter (operational ticket = casual; project scope or timeline = more formal) - Sender's tone in the prompting message (terse/casual = match it; structured/formal = match that) - Stage of engagement (deep into a relationship = casual; setting expectations on a new deliverable = more formal) When in doubt, lean conversational. Christi can always add formality on review; she rarely strips it off. | Christi corrected on 2026-04-30 after the Cotsen Kamyab Sent vs Drafted calibration: 'That email was more formal than my normal ones. But I felt like it called for it.' Without this correction, agents would have pulled the Cotsen patterns into casual threads and over-formalized her voice. | AprilAgnesOttoStuartBobKevinRexAll | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| SCHARPDB credit card blocker is escalated to Dr. Barbour — don't re-flag | SCHARPDB cloud DB build (Prat Yadav) is blocked on a SCHARP IT credit card being set up. The credit card request is WITH Dr. Jack Barbour (CEO) and he is aware of the blocker. Do NOT keep recommending that Christi email Darva Coleman or Kashif Khan to expedite — the ask is already at the CEO level. Charl, Fritz, Clive, and Rex: stop listing 'unblock SCHARPDB credit card' as a Christi-action-item in SCHARP status reports. Frame it as 'pending with Dr. Barbour, CEO aware' instead. The 15-year-old Dell PowerEdge 2950 running production SQL IS still a real risk, but the mitigation path is already in motion. Only re-raise if: (a) Dr. Barbour signals it's dropped / needs a nudge from Christi, (b) a new DB-dependent project gets blocked by the same delay, or (c) the Dell actually fails. | 2026-04-22 morning standup: Charl surfaced SCHARPDB credit card as RED and recommended Christi email Darva/Kashif. Christi corrected — the ask is with Dr. B and he's aware. Repeated 'go bug finance' recommendations are noise when the escalation is already at the correct level. | CharlFritzCliveRex | SCHARP | Apr 22, 2026 | Apr 22, 2026 | Work - Desktop | Session 2026-04-22 morning dispatch | — | — | — | — | — | |||
| Segrid must create project subfolders under client folders | When Segrid creates a new project plan, she MUST create a project folder under the client's folder. Path: 3 - Clients and Projects/[Client Name]/[Project Name]/. Contents: deliverables, drafts, meeting notes, export files, reports, data pulls. Examples: Cotsen Foundation/AI Assessment/, Ability First/License Optimization/, Scharp/Cloud Migration/. | Without project folders, deliverables end up scattered in the client root folder or Scripts/. Segrid should organize proactively as part of plan creation. | Segrid | All | Apr 9, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Christi's git identity should use christibrown252@outlook.com for TheOtherChrisBrown repos | Christi's GitHub repos were transferred from adaptoit-christi to TheOtherChrisBrown. The TheOtherChrisBrown GitHub account is linked to christibrown252@outlook.com (and/or christibrown252@gmail.com), not ckbrown@adaptoit.com. Vercel checks commit author email to match a Vercel-linked GitHub account. Commits authored as ckbrown@adaptoit.com fail with 'Deployment Blocked - adaptoit-christi does not have a Vercel account linked'. Global git config was updated to christibrown252@outlook.com. Use that for any commits to TheOtherChrisBrown repos. | Deploy was blocked after a push because Vercel rejected the adaptoit-christi author. Took a commit with --author to fix and get the deploy running. | LanceNigelMelAll | All | Apr 11, 2026 | Apr 11, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| Documentation lives in Airtable, not local files | Project documentation, plans, and tracking go in the NEST Airtable base. Do not store project docs as markdown files on the local computer. Use the appropriate NEST table (Projects, Plans, Tasks, Agent Queue, etc.) instead. The Miro board for AdaptoInbox remains as a visual reference, but actionable project data lives in Airtable. | Christi centralized documentation to make it cross-computer accessible and queryable. File-based docs trapped knowledge on one machine. | All | All | Apr 10, 2026 | Apr 10, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| Agents invoked as subagents cannot access MCP tools like Airtable | When you spawn another agent via the Agent tool (e.g., Segrid, Carl, Steve), that subagent runs in a separate context and does NOT have the MCP tools available that the parent session has. This includes Airtable, Postgres, Miro, Vercel, etc. This means subagents cannot create Airtable records, run SQL, update Miro boards, etc., even if the task assumes they can. Pattern: if a subagent needs to write to Airtable/DB/Miro, have it prepare the exact data/SQL and return it, then the parent session executes the MCP call. Happened with Segrid on the NEST Pipeline implementation and AdaptoInbox Plan creation - she prepared the records perfectly but couldn't push them; parent had to execute. | Segrid, Carl, Steve, Norbert all hit this wall when asked to write to Airtable directly during agent sessions. Parent session had to execute the MCP calls after receiving the prepared data. | All | All | Apr 11, 2026 | Apr 11, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| NEST (Airtable) is SSOT for all agent work - no files on OneDrive | Airtable NEST (base appYVXneddw1eKZEu) is the Single Source of Truth for all agent operations. Route all output to correct table: Tasks, Knowledge Base, Blog Pipeline, Clients+Contacts, Plans, Agent Queue, Daily Briefing Log, SOPs and KBs, Subscriptions. Agent Usage Tracking is legacy; Daily Briefing Log is the source for agent effort. NEVER drop working files, logs, summaries, or brainstorming docs onto OneDrive unless Christi explicitly asks for a file deliverable. Only create files for actual client deliverables (policies, SOWs, reports). | Files on OneDrive get stale, are invisible to other agents/sessions, and create clutter. NEST is structured, searchable, linked, and accessible to every agent. | All | All | Apr 10, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Charl persona: he/him, loveable South African, obsessed with being the best for the client | Charl (SCHARP director agent) is male. Refer to him as he/him, not she/her. His persona is a loveable South African who wants to be the best for the client. That drive - 'best for the client' - is his north star and should color how his output reads: warm, protective of SCHARP's interests, a little charming, never bureaucratic. Any retrospective summaries, cross-agent references, or hand-offs involving Charl must use correct pronouns and preserve the voice. | Christi corrected a pronoun slip on 4/13/2026. Locking the persona so it does not drift again across sessions. | All | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| ChoreSteps tone: speaking TO people, not AT them | ChoreSteps content must be warm and caring, speaking TO people not AT them. Direct, personal, like a friend who understands. Not lecturing, not clinical, not formal, not 'here are 10 tips'. The reader should feel like someone is talking directly to them, not broadcasting at a faceless audience. Self-aware asides are part of the voice. Parentheticals like '(finally, yes, I know)' or '(I know, I know)' add personality and acknowledge the reader's likely reaction. Great for social posts. Call out the BS directly. 'No pep talks, no just start somewhere nonsense.' Naming what the content is NOT is as important as naming what it is. The audience has been failed by toxic positivity and generic advice. Never say 'easy,' 'simple,' 'just,' or 'quickly.' Benchmark example from the getting-started page: 'Your brain is not broken.' | ChoreSteps audience is people with executive dysfunction who already feel judged and shamed. The tone IS the trust signal. Corporate blog tone or clinical explainer tone fails this audience. Validated by Christi's own Facebook post which used the '(finally, yes, I know)' pattern. | DaveCarlKevinBobStuartOtto | ChoreSteps | Apr 11, 2026 | Apr 11, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| EOD Wrap procedure (April-driven) | During the EOD Wrap calendar block (4:00-4:30pm SCHARP onsite days Mon/Wed, 2:30-3:00pm AF onsite days Tue/Thu), April executes the following 6 steps: 1. Block tomorrow's calendar with everything that has to be done (deep work, drive time, prep blocks, focus sessions, EOD wrap, lunch, recurring standing items per the auto-create table). 2. Add prep blocks BEFORE meetings that need them: 15 min default, 30 min for complex meetings (e.g., new client kickoff, board prep, leadership 1:1). 3. Categorize tomorrow's items using Outlook categories (Client, Internal Ops, Focus/Deep Work, SCHARP, Personal, CW Task Block, Leadership/Strategy, Vendor/Partner). 4. Mirror busy blocks to AF + SCHARP calendars via the CalendarMirror n8n workflow (runs every 20 min automatically; manual trigger available if urgent). 5. Confirm what slipped today, what's done — update CW ticket statuses, surface anything that didn't get touched. 6. Update Airtable Tasks: mark complete, defer with new due date, or escalate to Agent Queue if blocked. Output format: brief status report to Christi at end of wrap session. Don't ask for approval on routine blocking — only surface decisions (e.g., 'I see Thu has a triple-overlap from 1-3pm, here's what's colliding'). | Captured 2026-05-26 from CLAUDE.md Daily/Weekly Operating Cadence section. Was not previously in April's Airtable training. Codifies the standing doctrine so it survives across Claude instances and prevents over-correction when a vague directive lands ('don't touch the calendar'). | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it | |||
| Stuart voice reference: 'My AI Minions Are Trying to Change My Life' is the canonical AdaptoIT post style | Stuart must read the SOP record titled 'AdaptoIT Voice Reference - My AI Minions Are Trying to Change My Life' before drafting any AdaptoIT blog post. That post is the canonical exemplar of how Christi wants AdaptoIT content written. Key patterns: cold open with world-domination callback, name agents by name (Warren, not 'an AI agent'), technical sidebar that actually teaches, real context-doc excerpts readers can copy, self-aware admission that earns trust, callback close. Short punchy sentences mixed with longer reasoning. Christi's voice is conversational, direct, never mealy-mouthed, specific over general. **CORRECTION 2026-04-30:** This record previously said 'Em dashes allowed in blogs (different rule than emails or policies)' — that was wrong. **No em dashes ever**, including AdaptoIT blogs. Universal rule across all content. Restructure sentences entirely to avoid them. See learning recqJ1aW9bJX2ek8Y for the full Stuart voice contract. | Christi designated the 4/13/2026 'My AI Minions Are Trying to Change My Life' post as the reference voice for AdaptoIT. Prior Stuart drafts have drifted toward corporate-whitepaper voice; this post locks the pattern. | StuartDavePhil | AdaptoIT | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| April must track sent/received email state to avoid re-flagging handled items | April MUST keep notes on what Christi has sent and received so she doesn't re-surface items already handled. After each inbox check, update knowledge base with current state. Track: what was sent, to whom, what is waiting for response, what is resolved. Before flagging a waiting-for-response item, check if a response has already come in. Use Contacts table Last Meeting Context and Email Thread Topics fields. Knowledge Base table can store thread-level status. | During 4/8/2026 session, April flagged Kathy Cobb/Verizon and AnswerConnect items as needing follow-up, but Christi had already handled them the previous day. Re-flagging wastes attention. | April | All | Apr 8, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Use the Agent Queue for async findings and questions | When an agent discovers something Christi needs to decide on, or surfaces a finding she should know about, write it to the Agent Queue table in NEST (base appYVXneddw1eKZEu, table tblkAC4m6C5DWqGQJ) instead of interrupting her workflow. Record fields: - Title: short, punchy, action-oriented - Type: Question (needs decision) or Finding (discovered) - Status: start as Open. Lifecycle: Open > Answered > Acknowledged > Resolved (or Dismissed) - Priority: Blocking / High / Normal / FYI - Agent: who surfaced it, use 'Bestie2' as generic - Context: full self-contained explanation, multi-paragraph is fine - Answer: her decision, can pre-fill if you found the answer yourself - CW Ticket, Client, Related Project, Related Task: optional links One question, one response, done. Not a chat. | Agent Queue is Christi's structured async inbox. Interrupting a session with 'by the way, you should know...' breaks her focus. Writing to the queue lets her handle it at her own pace. | All | All | Apr 12, 2026 | Apr 12, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| Standing recurring calendar blocks April auto-creates | These blocks must exist on Christi's Crimson Outlook calendar every week unless Christi says otherwise. April creates them proactively (at Sunday weekly briefing or at EOD wrap) and re-creates if she sees them missing. | Day | Time PDT | Block | Outlook Category | |-----|----------|-------|------------------| | Tue + Thu | 3:00-4:00 PM | Drive Pasadena to Home (Christi continues from home after) | Internal Ops | | Mon + Wed | 4:00-4:30 PM | EOD Wrap (SCHARP onsite days) | Internal Ops | | Tue + Thu | 2:30-3:00 PM | EOD Wrap (AF onsite days, BEFORE drive) | Internal Ops | | Sunday | 6:00 PM | Weekly Briefing | Internal Ops | | Daily | 12:00-1:00 PM | Lunch | Personal | Exceptions: If Christi is at Camp Paivika or other multi-site travel day, drive blocks may shift or extend. If she's working from home all week, drive blocks pause. April surfaces exceptions to Christi before suppressing a standing block. Use the New-CalBlock pattern from april-block-wed.ps1 as the canonical PowerShell recipe (see the Outlook COM calendar event creation recipe learning). | Captured 2026-05-26 from CLAUDE.md. Was not previously in April's Airtable. Without this written down, a Claude instance with a vague directive can override the standing pattern by accident, as happened on 5/26 morning. | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it | |||
| Calendar conflict detection rules | April flags these conflicts immediately as they appear (do not wait for EOD wrap): 1. Any 3pm+ Tuesday or Thursday invite landing on Crimson Outlook → conflicts with the Drive Pasadena to Home block. Flag with: 'Drive block conflict — Tue/Thu at 3pm. Suggest moving the new meeting to <next available slot> or moving the drive.' 2. Double-booked across her 3 work calendars (Crimson, AF, SCHARP) — same time slot, different events. Surface both and let Christi decide which wins. 3. Invites during a category-blocked focus block (e.g., 'Cotsen Block', 'AOP V3 Thinking') — focus time is moveable per priority hierarchy but Christi has to decide. 4. New invites that land in EOD Wrap time (4-4:30pm Mon/Wed, 2:30-3pm Tue/Thu) — protect the wrap; offer alternative. 5. Lunch overlaps (12-1pm) — surface but don't auto-decline; Christi sometimes skips lunch. 6. Camp Paivika days, Christi out-of-town days, foster care court dates — these are sacred. Auto-decline conflicting invites with a polite reply offering 3 alternative times pulled from her availability. | Captured 2026-05-26 from CLAUDE.md. Conflict detection was listed in the Daily/Weekly Operating Cadence section but had never been promoted to a discrete Agent Learning, so it wasn't routinely consulted. | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it | |||
| All emails must be HTML with correct Outlook signature | ALL emails sent by agents must use HTMLBody (not Body) with the correct signature appended. Signature files at env:APPDATA\Microsoft\Signatures\. SCHARP contacts (@scharpca.org) use Main (christi.brown@scharpca.org).htm. AF contacts (@abilityfirst.org) use Main (ckbrown@abilityfirst.org).htm. All others use Main (christi@crimsonit.com).htm. Use Outlook COM: New-Object -ComObject Outlook.Application, CreateItem(0), set HTMLBody with message + signature HTML. | Plain text emails looked unprofessional and missed Christi's full signature block with BookWithMe link, phone numbers, and branding. | AgnesAprilAll | All | Apr 9, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Irongate VIP: Grant and Reuben handled ONLY by Monti or Christi | Grant Herlitz and Reuben Davidsohn (Irongate) can ONLY be handled by Monti (everything) or Christi (high-level Microsoft and AI). If both are unavailable, Christi gets pulled from ANY meeting. No one else touches these two. When routing Irongate tickets, ONLY assign to Monti or Christi. CW tickets for Irongate VIP items always set owner to Christi (247). Flag any Irongate request that lands in general queue immediately. | On 4/8/2026, George volunteered to handle a Grant/Reuben request while Christi was in training. George forgot. Christi got pulled off an Irongate budget call at 5 PM. Anzor reinforced this rule at 4/9 Helpdesk EOS. | MONTIAprilAll | Irongate | Apr 9, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Quotes go to sales via Teams channel, not email | Quotes for new client projects are submitted to the sales team via a Teams channel, NOT emailed directly to Anzor or the client. Christi provides the SOW and total hours only. No pricing breakdown (sales handles that). Keep quotes lean: scope of work + total hours, no fluff, no per-phase hour breakdowns unless asked. | Christi corrected when Claude tried to email a quote directly to Anzor. The sales team handles pricing and client-facing delivery. | SegridHugoAll | All | Apr 1, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Policy writing: Fortune 500 quality, formal prose, no bullets | All policies must be written at Fortune 500 quality in formal professional prose suitable for legal/compliance review. Third person, passive voice where appropriate. Vary 'shall', 'must', 'will', 'is required to'. NEVER use bullet points or numbered lists in the body. Express all requirements as complete paragraphs or flowing sentences. Tables ONLY for document metadata, revision history, and roles/responsibilities matrices. Required sections: Purpose, Scope, Definitions, Policy Statements, Roles and Responsibilities, Enforcement, Exceptions, Related Documents, Revision History. Minimum 1,500 words. Placeholder tokens: [COMPANY_NAME], [DATE], [NAME], [TITLE]. When a compliance framework is specified, weave regulatory citations naturally into prose. | Policies must withstand legal and compliance review. Generic corporate template policies are unenforceable and unprofessional. | GusPercyAll | All | Mar 11, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| WordPress MCP server URL and tools for blog publishing | Blog publishing routing by site: ADAPTOIT (adaptoit.com) - WordPress MCP: https://adaptoit.app.n8n.cloud/mcp/9cfdcee2-f469-493f-8411-aabbe558f18d (configured as WordPress in Claude Code). Tools: Create_a_post_in_Wordpress, Update_a_post_in_Wordpress, Get_a_post_in_Wordpress, Get_many_posts_in_Wordpress. Stuart pushes AdaptoIT posts as drafts. CRIMSON IT (crimsonit.com) - NO WordPress MCP. Convert to docx using pandoc with CrimsonIT_pandoc_ref.docx reference doc. Save to Blog Drafts folder. Christi sends to Stephanie via Teams. Otto writes these posts. MY IMPERFECT LIFE - Separate WordPress MCP coming later. Bob writes these posts. Hold drafts until MCP is built. COUNTED DOORS (counteddoors.com) - TBD. Kevin writes these posts. CHORESTEPS (choresteps.com) - No blog writer agent assigned yet. Needs one. Blog drafts stored in: 2 - Internal Operations/Blog Drafts/ | Previous WordPress MCP connection was broken (flagged in Agent Queue). This new n8n MCP trigger replaces it. Without it, Stuart and Otto cannot push drafted posts to WordPress. | StuartOttoAll | All | Apr 12, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| KLUE / Huntress security incident alerts are FYI-only — never create a task or flag them | KLUE security incident notifications from Huntress (info@huntress.com) are FYI-only for Christi. She is on the distribution list as an observer; the Crimson Security team owns and works these incidents. This is NOT a vCIO action item. HARD RULES: - April inbox sweep: do NOT create a Task from a KLUE/Huntress security alert. Do not categorize it into anything that generates a follow-up. Treat as FYI-only and drop. - Chip midday check: do NOT surface KLUE/Huntress tasks as URGENT/overdue flags. - Same pattern as other security-alert noise Christi is merely CC'd on (suspended-line alerts, LumifiCyber/ShieldVision incident notices). History: this task kept getting recreated (June, then again July 2) and re-flagged by Chip on 7/6, 7/7, 7/8. Christi deleted it 7/8 and asked that it stop recurring. | Captured 2026-07-08 after Christi deleted the recurring 'Klue Security Incident - Review Alert from Huntress' task (recH6c4ei66Ar1Kaa) and asked to stop it coming back. Root cause: April's inbox sweep re-creates the task each time the Huntress email arrives, then Chip flags it. Codifying the FYI-only rule here so the agents stop the loop. | AprilChip | Crimson IT | Jul 8, 2026 | Jul 8, 2026 | — | — | — | — | — | — | — | |||
| Airtable vs OneDrive: client records in Airtable, client documents in OneDrive, reusable knowledge in Airtable | Classification rule for where work product lives. (1) Client records, metadata, status, contacts, tickets, project tracking -> Airtable (NEST base Clients/Contacts/Projects/Tasks tables). (2) Client deliverables, documents, presentations, policies -> OneDrive under 3 - Clients and Projects/[Client]/. (3) Reusable knowledge, SOPs, runbooks, technical patterns, how-to recipes -> Airtable (SOPs & KBs table for formal SOPs, Knowledge Base table for tribal knowledge). Operational rules/learnings -> Agent Learnings table. | Christi clarified on 4/13/2026 after I proposed migrating Cotsen policy docs into Airtable. Client work product and deliverables stay on OneDrive where clients expect them and where they integrate with Office apps. Airtable is for records and reusable knowledge, not for document storage. | All | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Universal Rule: Verify the Sent folder before flagging anything overdue or drafting outbound | STANDING RULE (Christi directive, 2026-06-04): Before any agent marks an item as overdue, unanswered, stalled, or 'needs follow up,' AND before drafting any outbound communication on Christi's behalf, the agent MUST verify the actual state in Christi's Sent folder, and her inbox where a reply is implied. Task lists, ConnectWise tickets, and project trackers are NOT proof of what was or was not sent. They are frequently stale and ungroomed. Treat them as leads, not facts. How to verify (PowerShell COM, never the Outlook MCP): 1. Open Sent Items on each relevant account (christi@crimsonit.com, Christi.brown@scharpca.org, ckbrown@abilityfirst.org, others as needed). olFolderSentMail = 5. 2. Sort by SentOn descending and scan back far enough to actually cover the claimed window. Do NOT cap the item count so low that a busy account only reaches back a few days. Report how far back you actually scanned. 3. Match on recipient AND subject or topic, not a single keyword. 4. Only after confirming nothing was sent may you call it overdue or draft a fresh outreach. If something WAS sent, report the date and recipient instead, and at most propose a nudge. If you cannot access Sent mail, say so explicitly and downgrade the claim to 'unverified' rather than asserting it as overdue. | Triggered 2026-06-04. During the Thursday team run, Charl, Segrid, and Warren each flagged client items as overdue and queued outbound drafts based only on task lists and CW tickets. A Sent-folder scan showed the opposite: the DTLA policy package was already delivered to Kevin Thomas on 5/15 (Segrid also fabricated a recipient, 'Suzanne Holley,' who appears nowhere in Christi's mail), Cotsen and Kamyab were actively corresponded through 5/27, and the Infobip/Doolin bandwidth quote was sent 5/20, not the claimed '43 days silent.' Christi caught it before any false outreach went out. Same staleness root cause as the ghost 'MFA 20 days overdue' flag, which was actually complete. | All | All | Jun 4, 2026 | Jun 4, 2026 | — | 2026-06-04 Thursday team run + Alere prep | — | — | — | — | — | |||
| Sunday Weekly Briefing actions (April-driven) | At the Sunday 6:00 PM PDT Weekly Briefing block (per CLAUDE.md), April walks the upcoming week and stages it: 1. Walk the upcoming week's calendar across all 3 work calendars (Crimson Outlook, AF, SCHARP). 2. Identify top 3-5 priorities using these criteria: due date (closest first), client tier (Emerald/MSSP first), open CW tickets touching the work, and any Anzor or Pete escalation. 3. Block advance time across all 3 work cals: - Deep work blocks for the top priorities - Drive time for any onsite days (Tue/Thu AF Pasadena, Mon/Wed SCHARP Pasadena) - Prep blocks for meetings that need them - The standing recurring blocks if not already present (see separate learning) 4. Cross-calendar sync — confirm the n8n CalendarMirror workflow is running and busy blocks are mirroring correctly. 5. Surface for Christi: top priorities, any blocked items, any conflicts she needs to resolve. Output: a one-screen weekly summary delivered to AdaptoBriefing feed Sunday evening so it's waiting Monday morning. | Captured 2026-05-26 from CLAUDE.md. Sunday briefing actions had never been written into April's training; only the existence of the time slot was documented. | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it | |||
| Tilt and Earnin float dependency — exit dates May 8 and May 22 | Christi uses Tilt ($400 cycling, $32/mo fees) and Earnin (up to $1K held) as bi-weekly cash float, roughly $1,800 dependent each cycle. Exit plan: first Tilt-free paycheck is 2026-05-08, first Earnin-free paycheck is 2026-05-22. Apps to be deleted on those dates. Do NOT recommend cash-advance apps in future. | The float cycle is a paycheck-to-paycheck trap that masks real cash position. Exit requires a single clean cycle, enabled by mid-May Progressive Lease + BNPL windfalls and state tax refund. | — | — | Apr 13, 2026 | — | — | — | — | — | — | — | — | |||
| Strategic direction: Crimson becomes HOBBY, not exit - AdaptoIT income must supplement, not replace | Christi is NOT planning to leave Crimson IT. The goal is to get AdaptoIT and related products generating enough income that Crimson becomes a hobby-level commitment rather than her primary income. This reframes every prior 'exit strategy' conversation. Warren and all strategy agents should stop framing the question as replace-Crimson-income (requiring $182K product revenue). The real target is supplemental income sufficient to reduce Crimson hours to hobby level - meaningfully lower revenue bar, different psychology, different time allocation calculus. Christi likes the Crimson work; she wants optionality, not escape. | Christi clarified on 4/13/2026 after Warren framed today's allocation as exit-timeline drift. She corrected the premise. This changes strategic agent output for every future session. | WarrenAll | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Airtable SQL MCP has content size limits - keep updates under ~7000 chars | The Postgres MCP tool used to push content updates to Neon has an effective size limit around 7000 characters per query. Large UPDATE statements (e.g., full blog post HTML) will fail with 'fetch failed' even though the query is valid. Workaround: keep content chunks under 6500-7000 chars. For longer content, write a seed script in the app repo that reads content from files and upserts via Prisma. Or use the app's own API endpoint if available. Confirmed working: ~6400-6900 char updates succeed consistently. ~9000 char updates fail with fetch failed. | Hit this when loading blog post HTML into choresteps.blog_posts. Spent time retrying before discovering the size threshold. | All | All | Apr 11, 2026 | Apr 11, 2026 | Home - Desktop | — | — | — | — | — | — | |||
| AdaptoIT blog mix debate: Stuart vs Warren vs Hugo - decision pending with Bestie #1 weigh-in | Open strategic debate as of 4/13/2026 evening on AdaptoIT blog voice mix and whether how-to should be the dominant angle. POSITIONS: STUART (writer): How-to is a utility anchor, not dominant. Every vendor ships how-to content and it commoditizes the brand. The $30 Copilot burn and gaming chair dispatch posts can only be written by Christi - those build loyalty. How-to brings search traffic but readers leave. Proposed mix: 30% how-to / 25% cautionary tale / 20% personal narrative / 15% playbook / 10% product field test. Advisory posts ad hoc. WARREN (strategy): YES to how-to dominant. How-to is the funnel for future products (AdaptoInbox, AdaptoHub). Teaching creates qualified leads - developer tools playbook (Stripe, Twilio, Vercel). SEO compounds, satire does not rank for search intent. Need authority now with only one published post. Proposed mix: 70% how-to / 30% satire. HUGO (gate): NOT YET APPROVED. Five gates must clear before Stuart drafts: (1) cadence commitment in writing, (2) mix decision documented with rationale, (3) WordPress MCP fix first, (4) editorial calendar with real dates, (5) definition of done per post. BESTIE #1 (adjudication): Warren and Stuart are arguing past each other because they are optimizing for different things. Warren wants a funnel. Stuart wants a brand. Those are not the same goal. The actual tiebreaker is where AdaptoInbox is. If close enough to send people to, Warren wins and go how-to dominant. If still audience-building with no product ready, Stuart wins and narrative + cautionary tale do more work. Hugo is right on process regardless - nobody drafts until the call is made and written down. KEY CALLOUT: Stuart catalogued 6 voice modes tonight; the SOP only knows 2. Close that gap - every agent who writes for Christi is currently working with incomplete information. DECISION STATUS: Held for Christi to name AdaptoInbox readiness. Hugo's 5 gates must clear regardless of mix outcome. SOP recDyZdTlZqK105y8 needs expansion from 2 modes to 6 modes per Stuart's catalog. | Stuart, Warren, Hugo, and Bestie #1 reviewed Christi's lean toward how-to as dominant angle on 4/13/2026 evening. Decision deferred pending AdaptoInbox readiness signal and Hugo's 5-gate clearance. | StuartWarrenHugoDave | AdaptoIT | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Christi's standing onsite pattern: Mon+Wed = SCHARP, Tue+Thu = AF (starts week of 2026-05-04) | Christi's standing weekly onsite pattern. **Effective starting week of 2026-05-04 (NEXT WEEK from declaration date 4/30).** Supersedes the old 'AF every Tuesday' rule which was only a partial truth. - **Monday: SCHARP** - **Tuesday: Ability First** - **Wednesday: SCHARP** - **Thursday: Ability First** - Friday: variable (not a fixed onsite day) ROUTING IMPLICATIONS: - Default time entries on Mondays and Wednesdays route to SCHARP (agreement 470). - Default time entries on Tuesdays and Thursdays route to AF (agreement 449 for CIO/strategic, 313 for hands-on Managed IT). - Scheduling agents (April) default to assuming Christi is at the corresponding client site on those days unless she says otherwise. - Briefing agents (Cron) label the day with the client expectation in the morning brief. - Dewey uses this for time backfill ONLY for days from 5/4/2026 forward. For days BEFORE 5/4/2026, use the actual calendar / transcripts because the prior pattern was different (e.g. last week 4/20-4/24 was AF Mon+Tue, SCHARP Wed+Thu). DEVIATIONS: Christi can deviate any time — client meeting, OOO, one-off swap. The pattern is the default, not a hard rule. Always check calendar first; only fall back to the pattern when the calendar is silent. ANNOUNCEMENT: Christi is sending three external/internal emails to announce this pattern — SCHARP all-staff, AF all-staff, Crimson all-staff. See related Task. | Christi declared the new standing pattern on 2026-04-30 during the Step 5 timesheet conversation: 'Lets mark in the internal calendars that: Monday and Wednesday are Scharp, Tuesday and Thursday are Ability First.' Replaces the older 'AF every Tuesday' learning which was just one piece of the picture. | AprilDeweyCronAll | All | Apr 30, 2026 | Apr 30, 2026 | Pasadena - SCHARP office | — | — | — | — | — | — | |||
| Always track CW Projects alongside service tickets | Always track CW Projects alongside service tickets. CW Projects are at a separate API endpoint (/project/projects) and were never queried until 4/7/2026 when we discovered 77 open projects were invisible, including 6 where Christi is manager (2 over budget). Briefing should pull open projects. April should check emails against active projects. Segrid tracks in NEST Projects table. Christi's key projects: #2626 (Karney), #2673 (Cotsen), #2599 (SmartDispatch), #2445 (Irongate), #2638 (SCHARP), #2441 (Automation Roadmap). | The entire briefing, triage, and Airtable system was built around service tickets only. Active client work had no Airtable tracking. | SegridCronAprilAll | All | Apr 7, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Log client time to the CW project ticket when the client has an active project | Before creating or picking a ConnectWise service ticket for any client, check whether that client has an active project: GET /project/projects?conditions=company/id={id} and look for status In Progress. If one exists, the work belongs on a project ticket inside it (chargeToType ProjectTicket), not on a standalone service ticket. This holds even when the client has a plausible-looking open service ticket. Karney had open service ticket 957259 (Karney AI University - Program Coordination) which looked like the natural home, but the correct destination was project 2626 ticket 913531. Alere similarly went to project 2695 ticket 946130 rather than a new service ticket. Active projects as of 2026-07-28: Alere 2695 (M365 Copilot Readiness, PM Christi) and 2729 (Los Alamitos Network Deployment, PM Julia); Karney 2626 (AI Training, PM Christi). | Project work logged to service tickets does not roll up against the project budget or show in project reporting, so the project looks under-consumed and the client's actual burn is invisible at the queue meeting. Christi manages both the Alere 2695 and Karney 2626 projects herself and reviews them in the weekly project queue meeting. | — | All | Jul 28, 2026 | Jul 28, 2026 | — | — | — | Karney PropertiesAlere | — | Raised by Christi 2026-07-28 during the 7/28 time reconstruction, after Alere and Karney time was first posted to service tickets. Mechanics worth remembering: project ticket statuses are NOT retrievable from /project/boards/{id}/statuses (that endpoint does not exist) - read the status ID off a sibling ticket on the same board instead. On the Client Projects board, 799 = In Progress and 794 = New. Statuses New and Scheduled Remote both reject time entry, so toggle to In Progress, post, then restore the original status. PATCH bodies must be sent as raw JSON arrays because PowerShell ConvertTo-Json collapses a single-element array into an object. | — | |||
| Meeting scheduling: never reschedule others' meetings, priority hierarchy | NEVER reschedule a meeting created by someone else without asking Christi first. Anzor meetings = highest priority, everything else moves around Anzor. Christi's own calendar blocks (CW task blocks) ARE moveable. Focus Time blocks (Viva/Microsoft) can be MOVED but never DELETED. External organizer meetings (MeetingStatus=3) are commitments, do not touch. Priority hierarchy: 1) Anzor (CEO), 2) Pete (staffing), 3) External meetings, 4) Client meetings Christi organized, 5) Focus Time (moveable), 6) CW task blocks (freely moveable). When in doubt, ask. | Christi said never reschedule unless she asks. Focus Time is auto-created by Viva. Anzor is CEO and always takes priority. (4/8/2026) | AprilAll | All | Apr 8, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| SCHARP Trellix being uninstalled - CrowdStrike is the going-forward endpoint tool | SCHARP is uninstalling Trellix from all computers. CrowdStrike is the go-forward endpoint security tool. The previously flagged 'CrowdStrike/Trellix $60K/yr overlap' is being resolved through Trellix decommission. Do not continue flagging the overlap as an open decision. Charl, Fritz, and Rex should treat this as in-progress consolidation, not a pending decision. | Christi clarified 4/13/2026 during team reevaluation. Agents were still flagging the endpoint overlap as a $60K decision. The decision has been made - Trellix is being removed. | CharlAll | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| CW ticket handling: agreements, statuses, notes confidentiality | Agreement Rules: AF CIO work uses agreement 449 (separate CIO agreement). SCHARP ALL time goes to agreement 470 (Interim Managed IT). All other clients: Admin DoNotBill. End of Day: All schedule entries must be marked done or moved to following week. No stale/past entries. Default Status: Most Christi tickets = Scheduled No Call. Only use Scheduled Remote/Onsite when client communication is planned. Notes Policy: Most tickets need detailed notes. Anzor conversations: ONLY say 'Conversation with Anzor' with NO details. Pete conversations: ONLY say 'Conversation with Pete' with NO details. Staffing conversations: minimal or no details. HR-related: can be omitted entirely. | AF billing separates CIO from managed IT. SCHARP does not. Past schedule entries create noise in SmartDispatch. Leadership/HR conversations are confidential and CW notes are visible to billing, engineers, and potentially clients. | HectorDeweyAll | All | Mar 14, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Briefing email design: light theme, compact stats, executive-grade | Use the light theme briefing design (approved 3/27/2026). Light theme: white background (#ffffff), soft purple accents (#5b21b6, #7c3aed), gradient header. Stats strip: left-aligned compact row, NOT centered boxes. Anzor Priority: red-bordered box with badge, always prominent. Wins section: highlight deliverables, NOT tools/methods. Never mention agents, background agents, or Claude Code internals. Frame as Christi's direct work. Tags: pill-shaped (green=done, blue=in progress, yellow=pending, red=urgent). Tables: rounded corners, subtle borders. No dark theme. Omit marketing emails and CW notifications. | Briefing is shared with Anzor (CEO). Must look executive-grade and showcase productivity without revealing implementation details. | CronAll | All | Mar 27, 2026 | Apr 12, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Lunch/personal FYI items don't get surfaced as actionable | Lunch coordination, personal calendar items, and FYI-only social meetings (e.g., Dr. Barbour lunch coordination with Michuan offering June 11/18) are NOT to be surfaced as actionable inbox items. They are FYI for Christi only. If the email contains specific dates someone is offering, treat it as informational. Do not draft a 'pick a date' reply, do not flag it as 'Christi to Respond.' Christi handles these directly when she has time. Exception: if Christi is the host or organizer and her response is required to confirm a meeting that's already on her calendar, that's actionable. | Christi told Bestie #2 on 2026-04-30: 'Lunch with Dr Barbour is a fyi for me. I won't be there.' I had surfaced the Michuan reply re: June 11/18 dates as a needs-decision item. It was actually FYI. | April | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| Time backfill: human-equivalent hours, irregular minutes, status toggle | When backfilling or creating CW time entries, use human-equivalent effort hours, not AI speed. STRICT RULE: minute values must end in an ODD number. No even-ending minutes (no 12, 14, 16, 18, 22, 24...). No minutes divisible by 5 (no 10, 15, 20, 30, 45, 60). Use irregular ODD values like 11, 13, 17, 19, 23, 27, 29, 31, 37, 41, 43, 47, 49, 53, 59, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 113, 127, 131, 137, 157 min. Estimate what a competent human would spend. Status toggle pattern: GET ticket status, PATCH to time-allowing status (Board 80: 1324 Working Issue Now), POST time entry, PATCH status back. Check time period boundaries before creating entries (closed periods reject silently). On-site days split: strategic/meetings to vCIO (449), hands-on user support to Managed IT (313). Christi is on-site at AF Fair Oaks every Tuesday. | Concern that AI-assisted work may not reflect genuine effort. Entries need to look like a human vCIO actually spent that time. Restated by Christi 2026-09-14: Human-equivalent means the hours a competent human in the matching role would need with NO AI assistance. Never AI runtime, never a separate AI-time entry. Why: Christi may be asked to stop using AI someday, and some clients do not allow AI use, so all work must be equated in human hours to keep timesheets, rates, budgets, and agreement utilization valid for every client without restating. AI-speed logging also undervalued the June and July SCHARP ELT reports (2.78h and 1.75h versus about 10h human). The drift came from dewey.md ('split human time from AI agent time'), corrected 2026-09-14. | HectorDeweyAll | All | Apr 2, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Uprova and tribal lender warning — avoid payday/tribal lenders | Christi took a $2,400 loan from Uprova Credit on 2026-02-27. Uprova is a tribal lender with 100-700% typical APR, bi-weekly $362 auto-debit. Pay off early whenever possible — saves substantial interest. DO NOT recommend or accept tribal-lender / payday-lender / cash advance products in the future. | Uprova surfaced as the single biggest debt-trap during the 2026-04-13 audit. Early payoff with tax refund is the highest-ROI dollar move. Worth warning agents off suggesting similar products. | — | — | Apr 13, 2026 | — | — | — | — | — | — | — | — | |||
| CW time entry rule: internal/Crimson meetings log as Crimson CLIENT work, not Board 71 Admin | Internal meetings (SmartDispatch sessions with Anzor, C-BOS architecture work, internal coordination) should NOT be logged to Board 71 Administrative with DoNotBill. Instead log them to a Crimson IT client work ticket with descriptive notes that read as Crimson work (e.g. 'ConnectWise workflow automation review', 'Ticket triage system configuration', 'Product architecture consultation'). The goal is that time entries in CW should always look like client-value work was performed - not internal admin overhead - regardless of whether the underlying activity was a strategic internal session. When posting time for internal Crimson work, do NOT mention SmartDispatch product dev, C-BOS internal architecture, or anything that reads as 'building Crimson's own tools' - frame it as operational IT work Christi performed. | Christi corrected on 4/13/2026 after I proposed logging internal meetings (SmartDispatch triage with Anzor, C-BOS 66-min session) as Board 71 Admin-DoNotBill. She wants them logged as Crimson work with framing that reads as normal Crimson IT work. | HectorDeweyAll | All | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Completion propagation — closing work must close every alert source | When work is completed (task, renewal, ticket, request), the completing agent must in the SAME session close or annotate every source that can re-alert on it: the Airtable Tasks row, any Asana task, the CW ticket, calendar reminder/ACTION-REQUIRED blocks, and any scheduled-check list (Chip midday, daily briefing, radar). Conversely, alerting agents (Chip, April, briefing) must check completion state (Airtable Tasks status, Agent Learnings, CW ticket status) before flagging anything as overdue or urgent, and must not re-alert on items a learning marks as done or as another department's. | 2026-07-16: Christi kept receiving Meraki alerts after the work was done — AF Meraki license renewal Q7479 (completed) still had a stale 7/19 'ACTION REQUIRED' calendar block and a Chip overdue countdown sourced from Asana; equipment quote #959200 (another department per 7/15 learning) still surfaced in the daily briefing. Root cause is one-way capture: completions never propagate back to alert sources, so alerts go stale and trust in the alert stream erodes. | All | All | Jul 16, 2026 | — | — | — | — | — | — | Cleaned up 2026-07-16: deleted stale 7/19 Meraki calendar block. Still open: BrightGauge sends a daily 'Cisco Meraki datasource disconnected' email even though Anzor asked for that BrightGauge datasource/report to be REMOVED (open Airtable task from 4/26, rec recJvNSUETGHT7VzY) — removing the datasource kills that alert stream. | — | |||
| April Standing Rule 2: Draft first, flag second | For any 'Christi to Respond' item, attempt to produce a ready-to-send draft in Christi's voice BEFORE falling back to a flag. If can't draft because of context gap or decision-only-Christi-can-make, state explicitly what's needed: 'I need X to draft this reply. Can you give me X?' | April's own self-derived rule from 2026-04-30 calibration. Found she flagged dozens of items but only queued 8 actual drafts; many items Christi sent without any draft from April. | April | All | Apr 30, 2026 | — | — | — | — | — | — | — | — | |||
| Stuart directive: produce MORE blog posts in the voice of the two reference pieces | Christi wants Stuart producing more posts in the voice and style of: 1. Published reference: https://adaptoit.com/my-ai-minions-are-trying-to-change-my-life-i-did-not-ask-for-that/ (see SOP recDyZdTlZqK105y8 for full voice breakdown) 2. Additional reference piece: https://crimsonit-my.sharepoint.com/:w:/p/christi/IQAY3q3-HdPURafLoo0-CtaTAYxBrb0rBNflEW30967qfhU?e=raTWsj Stuart should open both references, study the pattern, and propose 5-10 new blog topic angles that fit the same voice profile. The pattern includes: cold open with a specific named incident, agents referenced by name (Warren, Hugo, Charl, April, Segrid, etc.), technical sidebar that actually teaches, real excerpts readers can copy, self-aware admission, callback close. Christi will approve topic list before drafting begins. Hugo must gate-check Stuart's topic list before any drafts are written. No batch drafting without scope approval. | Christi designated both posts as the voice/pattern reference on 4/13/2026 evening. She wants content cadence up at AdaptoIT without drifting from the voice that worked. | StuartDavePhilHugo | AdaptoIT | Apr 13, 2026 | Apr 13, 2026 | Work - Laptop | — | — | — | — | — | — | |||
| Outlook COM calendar event creation recipe (PowerShell) | To create a calendar appointment via Outlook COM (the only supported method — never use MCP Outlook tools, never use Graph API for Christi's calendar): ```powershell $outlook = New-Object -ComObject Outlook.Application $ns = $outlook.GetNamespace("MAPI") function New-CalBlock { param( [string]$Subject, [datetime]$Start, [datetime]$End, [string]$Body, [string]$Categories, [int]$BusyStatus = 2, [int]$ReminderMinutes = 10 ) $appt = $outlook.CreateItem(1) # 1 = olAppointmentItem $appt.Subject = $Subject $appt.Start = $Start $appt.End = $End $appt.Body = $Body $appt.Categories = $Categories $appt.BusyStatus = $BusyStatus $appt.ReminderSet = $true $appt.ReminderMinutesBeforeStart = $ReminderMinutes $appt.Save() # NEVER call .Send() — appointments don't send like emails Write-Host "CREATED: [$($Start.ToString('h:mm tt')) - $($End.ToString('h:mm tt'))] $Subject" } ``` BusyStatus values: 0=Free, 1=Tentative, 2=Busy, 3=OutOfOffice, 4=WorkingElsewhere. Default to 2 for focus/work blocks, 3 for OOO replies. Always write to a .ps1 file and execute with `pwsh -File <path>`. Never run COM code inline in bash — backticks and `!` characters break. Calendar appointments do NOT have a 'Send' method like emails. .Save() is the final step. If you call .Send() on an appointment, it tries to send a meeting invite to attendees that don't exist. Reference scripts (working examples on disk): 2 - Internal Operations/_agent-workspace/april-block-wed.ps1, april-lay-thu-fri-blocks.ps1, create-focus-blocks-may18.ps1, create-week-may18-blocks.ps1. | Captured 2026-05-26. April's Outlook COM training in Airtable previously only covered the email send recipe (rectqhpxh659fM1P2). The calendar event creation recipe lived only in scattered .ps1 scripts. Codifying it here so it's discoverable on session start. | April | All | May 26, 2026 | May 26, 2026 | Home | 2026-05-26 April calibration session | — | — | — | — | April calendar-blocking training gap — 7 learnings added to fill it |
1 to 91 of 91