|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 3 | +All notable changes to SlurmLedger are documented here. |
| 4 | +Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). |
| 5 | +This project follows pre-1.0 semver — see `## Versioning` in `README.md`. |
| 6 | + |
| 7 | +--- |
4 | 8 |
|
5 | 9 | ## [Unreleased] |
6 | | -- Placeholder for upcoming changes. |
7 | 10 |
|
8 | | -## [1.0.0] - 2025-08-04 |
| 11 | +_Promoted to `[0.1.0]` when the first release tag is cut._ |
| 12 | + |
9 | 13 | ### Added |
10 | | -- Initial release of SlurmCostManager. |
11 | 14 |
|
| 15 | +- **Core billing engine** — real-time cost calculation from SlurmDB (MySQL/MariaDB). |
| 16 | + Per-account, per-user, per-job cost breakdown. CPU-hour and GPU-hour tracking with |
| 17 | + configurable rates. Historical rate support (`rates.json` with timestamped entries). |
| 18 | + Configurable billing rules: failed job exclusion, short job exclusion, partition |
| 19 | + discounts. |
| 20 | + |
| 21 | +- **SU bank / allocation management** — prepaid and postpaid allocation modes. |
| 22 | + Annual/quarterly/monthly/custom allocation periods. Budget tracking with alert |
| 23 | + thresholds at 80%, 90%, and 100%. Carryover rules. Admin dashboard view of all |
| 24 | + account balances. |
| 25 | + |
| 26 | +- **Balance enforcement — Lua job_submit plugin** — real-time job rejection at |
| 27 | + submission via `job_submit.lua`. `ENABLE_ENFORCEMENT` flag for audit-only mode. |
| 28 | + User-visible error messages include remaining balance. Alternative: |
| 29 | + `balance_enforcer.py --sync` for sites that cannot use Lua. |
| 30 | + |
| 31 | +- **PDF invoice generation** — ReportLab-based PDF with institution branding. |
| 32 | + Line items include per-job breakdown, rates, and totals. Invoice lifecycle: |
| 33 | + Draft → Sent → Viewed → Paid. Sequential invoice numbering. Bulk generation |
| 34 | + by account. |
| 35 | + |
| 36 | +- **Credit memos** — refund support with linked credit memos. Adjustments |
| 37 | + reflected in the invoice ledger. |
| 38 | + |
| 39 | +- **Role-based access control** — four roles: Admin, PI, Member, Finance. |
| 40 | + PI auto-detection from Slurm account coordinators. Role-based UI with tabs and |
| 41 | + actions gated by role. |
| 42 | + |
| 43 | +- **Setup wizard** — three-step first-run wizard: institution profile, billing |
| 44 | + rates, DB connection test. Guides new admins through initial configuration without |
| 45 | + editing JSON directly. |
| 46 | + |
| 47 | +- **RPM and DEB packaging** — `make rpm` / `make deb` produce installable packages. |
| 48 | + RPM tested on Rocky Linux 9; DEB for Ubuntu/Debian. Packages handle config |
| 49 | + directory creation and Cockpit restart in `%post` / `postinst`. |
| 50 | + |
| 51 | +- **Billing rules engine** — admin-configurable rule-based charge/no-charge |
| 52 | + decisions. Admin-editable via UI with no config file editing required. Closed |
| 53 | + operator set (no eval/exec security risk). |
| 54 | + |
| 55 | +- **Reports and CSV export** — monthly/quarterly/annual billing summaries. |
| 56 | + RFC 4180 compliant CSV export. Journal entry CSV for ERP import (generic, not |
| 57 | + Oracle-specific). |
| 58 | + |
| 59 | +- **Docker Compose test environment** — `test/vm/` and `docker-compose.yml` for |
| 60 | + local development against a real MariaDB fixture. CI `db-integration` job |
| 61 | + validates `slurmdb.py` against live MariaDB. |
| 62 | + |
| 63 | +- **CI pipeline** — GitHub Actions: lint, unit tests, MariaDB integration tests, |
| 64 | + packaging dry-run. Five jobs: `lint`, `test`, `db-integration`, `package`, |
| 65 | + `security-scan`. |
0 commit comments