Skip to content

feat(llc/kb): Board decision log writer — approvals indexed to company decisions KB #8243

Closed

Description

@mrveiss

Parent

Phase 5 (#8209) · Umbrella (#8204)

Depends On

#8235 — KB collections. #8214 — Approvals.

Context

Every board approval decision is organizational knowledge. Future decisions on similar topics should be informed by past rationales. The decision log makes this searchable.

Acceptance Criteria

  • DecisionLogWriter in llc/kb/decision_log.py:
    • write(approval_id):
      • Called as post-decision hook in ApprovalService.decide() (after any approval is resolved)
      • Composes document: {type, requested_by, decision, rationale (decision_note), payload_summary, decided_at}
      • Indexes into company:{company_id}:decisions collection with metadata: {"approval_type": ..., "decision": ..., "decided_at": ...}
  • Decision collection is read-only after write — DecisionLogWriter is the only writer
  • GET /api/llc/companies/{id}/decisions/search?q= — RAG search over decision collection
  • GET /api/llc/companies/{id}/decisions — list decisions (paginated, filterable by type and date)
  • CEO Chat (#8233) RAG-queries decision collection when resolving strategy messages
  • Heartbeat context builder includes relevant past decisions when context_mode = fat
  • python -m pytest autobot-backend/llc/ -k decision_log passes

Activity

  1. mrveiss commented on May 24, 2026

    @mrveiss
    OwnerAuthor

    ✅ Implementation complete and ready for review.

    PR: #8548

    Changes:

    • DecisionLogWriter/DecisionLogReader in llc/kb/decision_log.py
    • API endpoints for search and list (GET /api/llc/companies/{id}/decisions/search, GET /api/llc/companies/{id}/decisions)
    • Integration with ApprovalService.log_decision_to_kb() — post-decision hook
    • CEO Chat RAG integration via CeoChatService._query_decisions()
    • Heartbeat context builder integration for context_mode=fat
    • 14 comprehensive tests (all passing)

    Acceptance Criteria Met:
    ✅ DecisionLogWriter in llc/kb/decision_log.py with write(approval) method
    ✅ Decision collection indexed with metadata (approval_type, decision, decided_at)
    ✅ GET /api/llc/companies/{id}/decisions/search?q= endpoint
    ✅ GET /api/llc/companies/{id}/decisions endpoint (paginated, filterable)
    ✅ CEO Chat RAG-queries decision collection
    ✅ Heartbeat context includes decisions when context_mode=fat
    ✅ Tests: python -m pytest autobot-backend/llc/tests/test_decision_log.py (14/14 passing)

  2. mrveiss commented on May 24, 2026

    @mrveiss
    OwnerAuthor

    ✅ Implemented and merged via PR #8548 (commit 94dc0c5 → Dev_new_gui, 2026-05-24).

    Acceptance Criteria Met:

    • ✅ DecisionLogWriter indexes resolved approvals into company:{company_id}:decisions ChromaDB collection
    • ✅ Idempotent writes (get_by_ids pre-check on approval_id)
    • ✅ RAG search endpoint: GET /api/llc/companies/{id}/decisions/search?q=
    • ✅ List endpoint: GET /api/llc/companies/{id}/decisions (paginated, type/date filters)
    • ✅ ApprovalService post-decision hook (best-effort)
    • ✅ CeoChatService queries decision KB for strategy messages
    • ✅ HeartbeatScheduler includes recent decisions (context_mode=fat)
    • ✅ 14/14 unit tests passing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions