---
phase: 03-claude-md-hub-and-spoke-network-audit-create-missing-spokes-update-root-hub
plan: 03
type: execute
wave: 1
depends_on: []
files_modified:
  - python/opendeviationbar/compat/CLAUDE.md
  - python/opendeviationbar/notify/CLAUDE.md
  - python/opendeviationbar/ratelimit/CLAUDE.md
autonomous: true
requirements: [SPOKE-COMPAT, SPOKE-NOTIFY, SPOKE-RATELIMIT]

must_haves:
  truths:
    - "compat/CLAUDE.md exists with Parent link and file table for availability.py, manifest.py, panel.py"
    - "notify/CLAUDE.md exists with Parent link and documents Telegram bot integration + env vars"
    - "ratelimit/CLAUDE.md exists with Parent link and documents file-based cross-process coordination"
  artifacts:
    - path: "python/opendeviationbar/compat/CLAUDE.md"
      provides: "Backward compatibility spoke"
      contains: "**Parent**"
    - path: "python/opendeviationbar/notify/CLAUDE.md"
      provides: "Notifications spoke"
      contains: "**Parent**"
    - path: "python/opendeviationbar/ratelimit/CLAUDE.md"
      provides: "Rate limiting spoke"
      contains: "**Parent**"
  key_links:
    - from: "python/opendeviationbar/compat/CLAUDE.md"
      to: "/python/opendeviationbar/CLAUDE.md"
      via: "Parent header link"
      pattern: "\\*\\*Parent\\*\\*.*CLAUDE\\.md"
---

<objective>
Create CLAUDE.md spoke files for the 3 Tier 2 (medium-impact) missing directories: compat/ (backward compatibility), notify/ (Telegram notifications), and ratelimit/ (file-based rate limiting).

Purpose: These are smaller modules (176-565 LOC) but contain domain knowledge that helps AI agents understand their specific responsibilities and integration patterns.
Output: 3 new CLAUDE.md files following the established spoke pattern.
</objective>

<execution_context>
@$HOME/.claude/get-shit-done/workflows/execute-plan.md
@$HOME/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
@.planning/phases/03-claude-md-hub-and-spoke-network-audit-create-missing-spokes-update-root-hub/03-RESEARCH.md

@CLAUDE.md
@python/opendeviationbar/CLAUDE.md
</context>

<tasks>

<task type="auto">
  <name>Task 1: Create compat/CLAUDE.md, notify/CLAUDE.md, and ratelimit/CLAUDE.md</name>
  <files>python/opendeviationbar/compat/CLAUDE.md, python/opendeviationbar/notify/CLAUDE.md, python/opendeviationbar/ratelimit/CLAUDE.md</files>
  <read_first>
    python/opendeviationbar/compat/__init__.py
    python/opendeviationbar/compat/availability.py
    python/opendeviationbar/compat/manifest.py
    python/opendeviationbar/compat/panel.py
    python/opendeviationbar/notify/__init__.py
    python/opendeviationbar/notify/telegram.py
    python/opendeviationbar/ratelimit/__init__.py
    python/opendeviationbar/ratelimit/file_coordinator.py
  </read_first>
  <action>
    Create 3 CLAUDE.md spoke files following the established pattern.

    **python/opendeviationbar/compat/CLAUDE.md:**
    - `**Parent**: [/python/opendeviationbar/CLAUDE.md](/python/opendeviationbar/CLAUDE.md) | **Hub**: [/CLAUDE.md](/CLAUDE.md)`
    - 1-2 sentence description: Backward compatibility shims preserving public API stability across refactors
    - `## Files` table: __init__.py, availability.py, manifest.py, panel.py (+ .pyi stubs if present) -- with actual purposes from reading source
    - `## Compatibility Guarantees` section: what backward compatibility each module maintains and why
    - `## Related` section linking to parent, hub

    **python/opendeviationbar/notify/CLAUDE.md:**
    - `**Parent**: [/python/opendeviationbar/CLAUDE.md](/python/opendeviationbar/CLAUDE.md) | **Hub**: [/CLAUDE.md](/CLAUDE.md)`
    - 1-2 sentence description: Telegram notification module for production alerts
    - `## Files` table: __init__.py, telegram.py -- with actual purposes
    - `## Configuration` section: env vars (TELEGRAM_TOKEN, TELEGRAM_CHAT_ID), bot setup (@obdpy_bot)
    - `## Usage Patterns` section: how other modules (sidecar, kintsugi, heartbeat) import and use notifications
    - `## Related` section linking to parent, hub, /deploy/CLAUDE.md (where env vars are stored)

    **python/opendeviationbar/ratelimit/CLAUDE.md:**
    - `**Parent**: [/python/opendeviationbar/CLAUDE.md](/python/opendeviationbar/CLAUDE.md) | **Hub**: [/CLAUDE.md](/CLAUDE.md)`
    - 1-2 sentence description: File-based cross-process rate limiting coordinator
    - `## Files` table: __init__.py, file_coordinator.py -- with actual purposes
    - `## Mechanism` section: how file-based coordination works for cross-process rate limiting (read file_coordinator.py to determine)
    - `## Related` section linking to parent, hub

  </action>
  <verify>
    <automated>grep -l 'Parent' python/opendeviationbar/compat/CLAUDE.md python/opendeviationbar/notify/CLAUDE.md python/opendeviationbar/ratelimit/CLAUDE.md 2>/dev/null | wc -l | grep -q 3 && echo "PASS" || echo "FAIL"</automated>
  </verify>
  <acceptance_criteria>
    - compat/CLAUDE.md contains `**Parent**: [/python/opendeviationbar/CLAUDE.md]`
    - compat/CLAUDE.md has Files table with rows for availability.py, manifest.py, panel.py
    - notify/CLAUDE.md contains `**Parent**: [/python/opendeviationbar/CLAUDE.md]`
    - notify/CLAUDE.md documents TELEGRAM_TOKEN and TELEGRAM_CHAT_ID env vars
    - ratelimit/CLAUDE.md contains `**Parent**: [/python/opendeviationbar/CLAUDE.md]`
    - ratelimit/CLAUDE.md documents the file-based coordination mechanism
    - All 3 files have a `## Related` section
  </acceptance_criteria>
  <done>All 3 Tier 2 CLAUDE.md spokes created with correct Parent links, source-derived file tables, and domain-specific sections.</done>
</task>

</tasks>

<verification>
All 3 CLAUDE.md files exist:
1. `grep -l 'Parent' python/opendeviationbar/compat/CLAUDE.md python/opendeviationbar/notify/CLAUDE.md python/opendeviationbar/ratelimit/CLAUDE.md` returns all 3 paths
2. Each file has `## Files` and `## Related` sections
3. No file contains generic boilerplate
</verification>

<success_criteria>
3 new CLAUDE.md spokes created for Tier 2 directories (compat, notify, ratelimit), each with correct Parent links and source-derived content.
</success_criteria>

<output>
After completion, create `.planning/phases/03-claude-md-hub-and-spoke-network-audit-create-missing-spokes-update-root-hub/03-03-SUMMARY.md`
</output>
