-
Notifications
You must be signed in to change notification settings - Fork 1
budget: capture first cost snapshot + bootstrap latest-report.md (task #287) #615
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| # Latest cost projection — auto-generated | ||
|
|
||
| **Generated:** `2026-04-26T14:37:11Z` | ||
| **Factory git SHA:** `a7fb1dbd47b020ffb56e0a63935dc70dd7000aec` | ||
| **Source:** `tools/budget/daily-cost-report.sh` (wraps snapshot-burn.sh + project-runway.sh) | ||
|
|
||
| This file is **OVERWRITTEN** on each daily run. Historical snapshots live in | ||
| `docs/budget-history/snapshots.jsonl` (append-only); historical projections | ||
| can be reconstructed from any snapshot subset via `tools/budget/project-runway.sh`. | ||
|
|
||
| --- | ||
|
|
||
| ## Projection text | ||
|
|
||
| ```text | ||
| Budget projection — three-repo-split Stages 1-4 | ||
| ================================================ | ||
|
|
||
| Evidence source: docs/budget-history/snapshots.jsonl | ||
| Samples (N): 1 | ||
| First snapshot: 2026-04-26T13:57:01Z | ||
| Latest snapshot: 2026-04-26T13:57:01Z | ||
| Latest factory SHA: 744e268dd6f57ba230deab8d77616ae19e38cf2f | ||
|
|
||
| Latest state | ||
| ------------ | ||
| Copilot plan: business | ||
| Copilot seats: 1 | ||
| Actions total_duration_ms (last 20 runs, all repos): 513000 | ||
| Actions billable_ms cumulative: 0 | ||
|
|
||
| Projection parameters | ||
| --------------------- | ||
| Estimated extra PRs for Stages 1-4: 20 | ||
| Copilot Business seat rate (USD/mo): $19 | ||
| Actions free-tier allowance (ms): 180000000 | ||
| Assumed migration span (days): 30 | ||
|
|
||
| Projection | ||
| ---------- | ||
| Per-PR Actions ms: insufficient data (N<2 or no duration delta) | ||
| Projected Actions ms: unavailable | ||
| Gate status: cannot project — accumulate more snapshots | ||
| Copilot projected USD (single span): $19 | ||
|
|
||
| Human-maintainer-decision surface | ||
| ---------------------- | ||
| N=1; BACKLOG row requires N>=3 across >=2 LFG merges before | ||
| projection is considered decision-ready. Keep accumulating. | ||
|
|
||
| Caveats | ||
| ------- | ||
| * recent_merged is a rolling-window count (last 10 closed PRs), | ||
| not a cumulative counter. Per-PR-ms uses it as a proxy — | ||
| introduces error when the 20-run window doesn't roll forward | ||
| between snapshots. A cumulative PR counter would be a | ||
| substrate improvement (BACKLOG follow-up). | ||
| * last_billable_ms on public repos is typically 0 (included | ||
| minutes). Projection still meaningful for macOS runs and | ||
| any future private-repo work. | ||
| * Copilot projection assumes constant seat count over the span. | ||
| Seat-count changes require rerunning projection. | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## How to read this | ||
|
|
||
| - **`Actions billable_ms cumulative`** — cumulative GitHub-Actions billable runtime across captured snapshots. On public repos this is typically 0 (included minutes); meaningful for macOS / private-repo / Enterprise-plan accounts. | ||
| - **`Per-PR Actions ms (naive)`** — rolling-window estimate of per-merged-PR Actions cost. Caveats in the projection text below; treat as proxy until `N \geq 3` cumulative snapshots exist. | ||
| - **`Actions fit`** — whether projected Stages 1-4 burn fits the configured free-tier allowance. If `EXCEEDS`, the gate-conditions section names escape valves. | ||
| - **`Copilot projected USD`** — assumed-30-day span at the current seat count and rate. Re-run with `--copilot-rate` to model rate changes. | ||
|
|
||
| --- | ||
|
|
||
| ## Source data | ||
|
|
||
| - Snapshots: `docs/budget-history/snapshots.jsonl` | ||
| - Methodology: `docs/budget-history/README.md` | ||
| - Wrapper: `tools/budget/daily-cost-report.sh` (this run) | ||
| - Capture script: `tools/budget/snapshot-burn.sh` | ||
| - Projection script: `tools/budget/project-runway.sh` | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| {"ts":"2026-04-26T13:57:01Z","factory_git_sha":"744e268dd6f57ba230deab8d77616ae19e38cf2f","org":"Lucent-Financial-Group","note":null,"copilot_billing":{"seat_breakdown":{"pending_invitation":0,"pending_cancellation":0,"added_this_cycle":1,"total":1,"active_this_cycle":1,"inactive_this_cycle":0},"seat_management_setting":"assign_selected","plan_type":"business","public_code_suggestions":"allow","ide_chat":"enabled","cli":"enabled","platform_chat":"enabled"},"repos":[{"repo":"Lucent-Financial-Group/Zeta","agg":{"total_runs":20,"total_duration_ms":513000,"billable_ubuntu_ms":0,"billable_macos_ms":0,"billable_windows_ms":0},"pr":{"recent_merged":5,"last_merged_at":"2026-04-26T13:54:29Z"},"last_20_runs":[{"id":24958345708,"name":"Copilot code review","conclusion":null,"run_started_at":"2026-04-26T13:56:13Z","updated_at":"2026-04-26T13:56:27Z"},{"id":24958344924,"name":"CodeQL","conclusion":"success","run_started_at":"2026-04-26T13:56:10Z","updated_at":"2026-04-26T13:56:32Z"},{"id":24958344908,"name":"gate","conclusion":null,"run_started_at":"2026-04-26T13:56:10Z","updated_at":"2026-04-26T13:56:14Z"},{"id":24958344765,"name":"Automatic Dependency Submission (NuGet)","conclusion":"success","run_started_at":"2026-04-26T13:56:10Z","updated_at":"2026-04-26T13:56:54Z"},{"id":24958344331,"name":"Code Quality: PR #614","conclusion":null,"run_started_at":"2026-04-26T13:56:08Z","updated_at":"2026-04-26T13:56:13Z"},{"id":24958344166,"name":".github/workflows/github-settings-drift.yml","conclusion":"failure","run_started_at":"2026-04-26T13:56:08Z","updated_at":"2026-04-26T13:56:08Z"},{"id":24958324676,"name":"Copilot code review","conclusion":null,"run_started_at":"2026-04-26T13:55:09Z","updated_at":"2026-04-26T13:55:20Z"},{"id":24958323549,"name":"gate","conclusion":null,"run_started_at":"2026-04-26T13:55:06Z","updated_at":"2026-04-26T13:55:09Z"},{"id":24958323544,"name":"CodeQL","conclusion":"success","run_started_at":"2026-04-26T13:55:06Z","updated_at":"2026-04-26T13:55:27Z"},{"id":24958322995,"name":"Code Quality: PR #613","conclusion":"success","run_started_at":"2026-04-26T13:55:04Z","updated_at":"2026-04-26T13:56:54Z"},{"id":24958318853,"name":".github/workflows/github-settings-drift.yml","conclusion":"failure","run_started_at":"2026-04-26T13:54:52Z","updated_at":"2026-04-26T13:54:52Z"},{"id":24958318721,"name":"Automatic Dependency Submission (NuGet)","conclusion":"success","run_started_at":"2026-04-26T13:54:51Z","updated_at":"2026-04-26T13:55:36Z"},{"id":24958316252,"name":"Automatic Dependency Submission (NuGet)","conclusion":"success","run_started_at":"2026-04-26T13:54:43Z","updated_at":"2026-04-26T13:55:23Z"},{"id":24958313052,"name":"gate","conclusion":null,"run_started_at":"2026-04-26T13:54:32Z","updated_at":"2026-04-26T13:54:36Z"},{"id":24958313042,"name":"CodeQL","conclusion":null,"run_started_at":"2026-04-26T13:54:32Z","updated_at":"2026-04-26T13:54:44Z"},{"id":24958313038,"name":"scorecard","conclusion":"success","run_started_at":"2026-04-26T13:54:32Z","updated_at":"2026-04-26T13:55:08Z"},{"id":24958312685,"name":".github/workflows/github-settings-drift.yml","conclusion":"failure","run_started_at":"2026-04-26T13:54:31Z","updated_at":"2026-04-26T13:54:31Z"},{"id":24958312663,"name":"Code Quality: Push on main","conclusion":"success","run_started_at":"2026-04-26T13:54:31Z","updated_at":"2026-04-26T13:56:16Z"},{"id":24958285907,"name":"Copilot code review","conclusion":"success","run_started_at":"2026-04-26T13:53:13Z","updated_at":"2026-04-26T13:54:43Z"},{"id":24958285505,"name":"gate","conclusion":null,"run_started_at":"2026-04-26T13:53:12Z","updated_at":"2026-04-26T13:53:15Z"}]}],"scope_coverage":{"has_read_org":true,"has_admin_org":false,"covered":["copilot-seats","actions-runs-per-run-timing"],"missing_requires_admin_org":["actions-billing","packages-billing","shared-storage-billing"]}} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The report text says “Caveats in the projection text below”, but the projection (including the caveats section) appears above this “How to read this” section. Also,
N \geq 3renders literally inside inline code in Markdown; consider usingN >= 3(orN ≥ 3) so it reads correctly without LaTeX rendering.