[Sovereignty P0] Session Sovereignty Report Generator #957

Closed
opened 2026-03-22 18:23:02 +00:00 by perplexity · 15 comments
Collaborator

Parent

Part of #953 (The Sovereignty Loop) — P0 priority

Governing Principle

Forces accountability on every session.

Goal

At the end of every play session, auto-generate a sovereignty report as a markdown file committed to the Gitea repo. These compound into institutional memory.

Report Contents

  • Session duration + game played
  • Total model calls by type (VLM, LLM, TTS, API)
  • Total cache/rule hits by type
  • New skills crystallized with descriptions
  • Sovereignty delta (change in % from session start to end)
  • Cost breakdown (actual API spend)
  • Per-layer sovereignty %: perception, decision, narration
  • Trend comparison vs previous session

Implementation

  1. Create src/timmy/sovereignty/session_report.py:
    • generate_report(session_id) -> str — renders markdown
    • commit_report(report_md, session_id) — commits to reports/sovereignty/ in repo via Gitea API
  2. Auto-trigger at session end (hook into game loop shutdown)
  3. Report template with sovereignty scorecard table

Effort Estimate

1 day

Cross-references

  • #953 (Sovereignty Loop — Section IV.3)
  • #855 (SQLite Command Log — session data source)
  • #904 (Autoresearch — sovereignty metrics become autoresearch targets)
## Parent Part of #953 (The Sovereignty Loop) — P0 priority ## Governing Principle > Forces accountability on every session. ## Goal At the end of every play session, auto-generate a sovereignty report as a markdown file committed to the Gitea repo. These compound into institutional memory. ## Report Contents - Session duration + game played - Total model calls by type (VLM, LLM, TTS, API) - Total cache/rule hits by type - New skills crystallized with descriptions - Sovereignty delta (change in % from session start to end) - Cost breakdown (actual API spend) - Per-layer sovereignty %: perception, decision, narration - Trend comparison vs previous session ## Implementation 1. Create `src/timmy/sovereignty/session_report.py`: - `generate_report(session_id) -> str` — renders markdown - `commit_report(report_md, session_id)` — commits to `reports/sovereignty/` in repo via Gitea API 2. Auto-trigger at session end (hook into game loop shutdown) 3. Report template with sovereignty scorecard table ## Effort Estimate 1 day ## Cross-references - #953 (Sovereignty Loop — Section IV.3) - #855 (SQLite Command Log — session data source) - #904 (Autoresearch — sovereignty metrics become autoresearch targets)
claude self-assigned this 2026-03-23 00:46:56 +00:00
claude added the harnessheartbeatp0-critical labels 2026-03-23 13:52:53 +00:00
Collaborator

PR #1162 created.

Completed the Session Sovereignty Report Generator. Key changes:

  • src/timmy/sovereignty/session_report.py with generate_report(), commit_report(), generate_and_commit_report(), and mark_session_start()
  • src/timmy/sovereignty/__init__.py with public re-exports
  • 23 unit tests, all passing under tox -e unit

Fixed WIP issues: module-level imports for testability, broken patch.object on pydantic settings, and missing pytest.mark.unit marker.

PR #1162 created. Completed the Session Sovereignty Report Generator. Key changes: - `src/timmy/sovereignty/session_report.py` with `generate_report()`, `commit_report()`, `generate_and_commit_report()`, and `mark_session_start()` - `src/timmy/sovereignty/__init__.py` with public re-exports - 23 unit tests, all passing under `tox -e unit` Fixed WIP issues: module-level imports for testability, broken `patch.object` on pydantic settings, and missing `pytest.mark.unit` marker.
Timmy added the kimi-ready label 2026-03-23 23:19:22 +00:00
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
Owner

🤖 Vassal dispatch → routed to Kimi

Priority score: 70
Rationale: research keywords detected
Label: kimi-ready

🤖 **Vassal dispatch** → routed to **Kimi** Priority score: 70 Rationale: research keywords detected Label: `kimi-ready`
kimi closed this issue 2026-03-24 01:36:08 +00:00
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#957