daily-report · git:20261023.ef2f2f6 · 2026-10-23 · sha256 eed5dde31be7120c

daily-report git:20261023.ef2f2f6A

Immutable. This exact content never changes and is served at /api/v1/blob/eed5dde31be7120c.

---
name: daily-report
description: Render the daily and weekly desk reports from the ledger on schedule, and deliver only the fields the evaluation reads.
bots:
  - bot-09-journal
gates:
  - G-2
required_tools:
  - journal.render_report
required_data: []
permissions:
  max_side_effect: paper-write
  network: true
  filesystem: var
fixtures:
  - tests/fixtures/replay/smoke
---

# Daily Report

## L1 - Summary

JOURNAL renders the desk's report card on schedule: daily at 00:05Z, weekly on Monday at 00:15Z. The report reads fills, P&L, halts, and review grades from the ledger through `journal.render_report` and delivers exactly the fields the evaluation reads. No commentary, no forecasts, no invented fills.

```
schedule fires -> ledger read -> render -> deliver to the allowlisted sinks -> receipt attached
```

## L2 - Method

1. S1 - Run on schedule: daily 00:05Z and weekly Monday 00:15Z from the cron seat. A missed run is reported as missed, never backfilled with invented rows.
2. S2 - Render from the ledger: call `journal.render_report` with the period and as-of day. Every number traces to a ledger row; grades come from `desk-post-trade-review` rows, not memory.
3. S3 - Deliver the fixed fields: period, fills with realised P&L, open positions with marks, halts and kills with reasons, review grades, and open action items. Fields outside this set do not ship.
4. S4 - Deliver to sinks only: stdout, file, and the configured allowlist. No new destinations per report; adding a sink is a reviewed config change.
5. S5 - Receipt the delivery: attach the render receipt per `verification-receipts` so the evaluation reads a proven report, not a claimed one.

## Failure modes

| Symptom | Cause | Action |
|---|---|---|
| Missed schedule | Cron or gateway outage | Report the miss with its cause; render the next period on time |
| Number without a row | Manual edit or rendering bug | Fail the report; every field traces to the ledger |
| Extra commentary added | Helpful narrative instinct | Strip it; the report carries fields, not forecasts |
| New sink used | Ad-hoc delivery | Refuse; sinks change only by reviewed config |

## References

- Tool: `journal.render_report` (period report rendering)
- Gate G-2: reports are receipted claims
- Companion skills: `portfolio-ledger` (ledger reads), `desk-post-trade-review` (grade rows)