opdev / opdev/agentic-status-report
M5.1: Manager delivery — Google Doc and team JSON export
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 2
- Avg merge
- 7d 51m
- Merged PRs (30d)
- 8
Description
Summary
Extend report delivery beyond Slack markdown: when the weekly management report is ready, deliver it to managers as a Google Doc plus a structured JSON export containing every teammate's confirmed entries for that week.
Design reference: docs/DESIGN.md §5.4 (Synthesizer), §10 (Configuration), team scale notes (Postgres person roster, no per-user env vars)
Why M5.1 (separate from M5)
M5 (#8) covers synthesizer skill invocation, audit chain (report_run / report_entry), and posting markdown to REPORT_CHANNEL_ID.
M5.1 adds manager-facing artifacts needed for ~20-person team operations:
- Editable Google Doc (current manual workflow parity)
- Machine-readable JSON for dashboards, archival, or downstream tooling
Deliverables
1. JSON export
- CLI:
status report --week YYYY-MM-DD --format json -o report-2026-08-14.json - Payload includes:
week_endingentries[]— all confirmedstatus_entryrows (person, epic, state, outcome, evidence, blocker, ask)participation[]— per-person status (confirmed, expired, sent, send_failed, on_leave)flags[]— unacknowledged flags for the weekreport_runmetadata when persisted (run id, prompt_version, generated_at)
- Stable schema documented in
docs/DESIGN.md§7
2. Google Docs delivery
- Google Cloud project + Docs API credentials (service account or OAuth — document chosen approach)
- Create or update a Doc from synthesizer markdown (template doc optional)
- Share with manager recipients (Google group or explicit emails)
- Config env vars (names TBD):
GOOGLE_*,REPORT_DOC_FOLDER_ID,MANAGER_EMAILSor roster-driven viapersontable
3. Manager notification
- Slack DM or email to managers with:
- Link to Google Doc
- Path/attachment reference to JSON export (or upload to shared drive)
- Triggered by
status report --deliver-managersor as part of M6lock-and-report
4. Person roster (no per-teammate env vars)
- Managers and teammates tracked in Postgres
persontable (slack_user_id,jira_account_id,github_login, optionalmanager_id) - Batch seed script for ~20 teammates (CSV/SQL) — not env var explosion
Acceptance criteria
- JSON export matches confirmed ledger for a pilot week; validated against Postgres
- Google Doc created/updated with synthesized report content
- Managers receive Doc link + JSON after
status report --deliver-managers - Works for multiple confirmed people in one week (not single-pilot only)
- Secrets documented in
deploy/secrets.example.yaml(no credentials committed)
Depends on
- M5 (#8) — synthesizer produces markdown + audit chain
- Ops (#10) — roster seeded in Postgres for pilot team
Out of scope
- Replacing Slack channel report (keep M5 Slack delivery)
- CronJob scheduling (M6 #9)
Branch / PR
- Branch:
feat/m5.1-manager-delivery - Base:
main(after M5) - PR title:
feat(report): Google Doc and JSON delivery for managers (M5.1)
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/DESIGN.md sections 5.4, 7, and 10, then inspect the existing status report flow from M5, the Postgres person and confirmed status_entry data, and deploy/secrets.example.yaml. Define the JSON and Google Docs delivery paths without committing credentials; done means the acceptance checks pass for multiple people and --deliver-managers sends both manager artifacts.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- google-cloud, postgresql, python
- Domain
- backend, cli, cloud, databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100