# User Manual Changelog

One entry per release or milestone landing. Newest first.

## 3.27.77 — 2026-10-13 · OffTaker Dashboard explains the charts

V5 §7.2–§7.6 now teach how to read the Dashboard chapters: the monthly
delivery chart and exact monthly table, the source table and plot, the
cost waterfall, exact cost bridge and retrospective benchmark, the
outlook chart, and each of the six health cards. The chapter anchors
are unchanged.

## 3.27.76 — 2026-10-12 · OffTaker Commercial explains the buy

V5 §6 now summarises the Procurement Desk as one pass, then each of the
five steps in plain language: what the step achieves, what to look for,
and the judgement to make. §6.1 explains the coverage sizing the same way.
The chapter anchors are unchanged.

## 3.27.75 — 2026-10-12 · OffTaker §6 is Commercial

V5 §6 is now **Commercial — the Procurement Desk**, matching the site
workspace tab. The chapter anchor is unchanged.

## 3.27.74 — 2026-10-11 · OffTaker Performance explains CV

The OffTaker Performance Explanations drawer now spells out
**CV (Coefficient of Variation)**: spread ÷ average on midday weekday
load, with the low / high cut at 0.15. V5 §4.1.C and §4.11 match that
row.

## 3.27.73 — 2026-10-11 · OffTaker Operations energy table, Reads and site location

V5 §3.2 teaches **View energy data and choose a month**, §3.3 the
Reads tab (month, tiles, heatmap and hourly coverage table), and §3.4
**Site location**. V2 §7.2 keeps the chart sketches and now uses the
Reads tile names **Expected in window** and **Gaps in window**.

## 3.27.72 — 2026-10-10 · OffTaker chapters follow the site tabs

V5 now teaches the site workspace as separate chapters: §3 Operations,
§4 Performance, §5 Allocation, §6 Procurement (the coverage rationale is
§6.1), §7 Dashboard, and §8 landed cost. Older section anchors still
open the same teaching.

## 3.27.71 — 2026-10-10 · OffTaker remote interrogation reference

V5 §2.2 lists the remote interrogation reference on Metering assurance,
shown and required when the meter has a communications method other than
None.

## 3.27.70 — 2026-10-10 · Negotiation draft and signature protection

V7 §§4–5 and worked examples now teach saved and unsaved drafts, explicit
discard, saved-version review before Confirm freeze, read-only agreement
review, blank signer identity, signature-reset confirmation, shareable
filters, and phone section navigation. Existing section anchors remain stable.

## 3.27.69 — 2026-10-10 · OffTaker commercial certificate fields

V5 §2.2 lists the wheeling deposit status, whether the buyer accepts
contractual curtailment, and the optional certificate registry or claim
preference on Commercial & certificates.

## 3.27.68 — 2026-10-10 · OffTaker authority evidence fields

V5 §2.2 lists the application acknowledgement reference, the meter-data
authorisation date, the PPA or letter-of-intent reference, and the
application fee status on Authority & evidence.

## 3.27.67 — 2026-10-10 · OffTaker demand-profile fields

V5 §2.2 lists estimated annual consumption, the consumption-profile
interval, the historical interval-data reference, expected load change,
and the notes for operating hours, shutdowns and material load changes.

## 3.27.66 — 2026-10-10 · OffTaker metering assurance fields

V5 §2.2 lists the metering fields that sit beside the settlement meter:
manufacturer and model, accuracy class, compliance basis, onboard
recovery, remote collection, calibration date, configuration, commissioning
and single-line-diagram references, and the optional check meter. The
glossary notes that check meter on an off-taker site.

## 3.27.65 — 2026-10-10 · OffTaker Supply voltage, NMD and registration

V5 §2.2 lists Supply voltage, Proposed NMD, the Eskom TLF distance
band, the application or registration reference, and the approval date
on Supply & network, including which of them the form requires. The
glossary notes the distance band on TLF.

## 3.27.64 — 2026-10-10 · OffTaker Sites next step and worked sum

V5 §2.1 draws the next-step choice as five first-match rows, and walks
the illustrative capacity-cover sum in four spaced steps: hours, average
demand, a cover bar with the 100% ceiling, and the energy-only saving.

## 3.27.63 — 2026-10-09 · OffTaker Sites columns and portfolio summary

V5 §2.1 teaches each OffTaker Sites column, the optional price, saving
and PPA columns, the Needs attention filter, and Portfolio summary &
coverage notes. Glossary adds capacity cover. Needs you remains as the
former name of that filter.

## 3.27.62 — 2026-10-08 · Trader pool decisions and draft safety

V6 §2–3 teach the table directory, dated financial verdicts, unassessed values,
cause-specific attention and the five workspace tabs. §2B distinguishes saved
drafts from applying live changes and teaches inline repairs and keyboard review.
§10 adds calendar reconciliation and approval/submission refusal for inconsistent
nomination totals. Commercial periods and pool-filtered contract returns are clarified.
Published chapter anchors and legacy routes remain available.

## 3.27.61 — 2026-10-08 · Dashboard evidence and review navigation

V5 §6 distinguishes modelled demand coverage, recorded obligation fulfilment
and retrospective price benchmarks. It teaches meter freshness and elapsed
coverage, forecast provenance, exact monthly/yearly data, conditional P50/P90
scenarios, chapter jumps, refresh and Dashboard return behavior. The glossary
qualifies the served strip and retains “left on the table” as an older term.

## 3.27.60 — 2026-10-07 · Commercial assessment and draft continuity

V5 §4 teaches the reconciled full-site cost bridge, signed comparisons including
no purchase, separate contract and grid Year 5 scenarios, eligible route/pool
pairs, stale-term protection, saved scenarios and draft reassessment. Assessment
provenance, meter recovery, accessible hourly values and optional studio terms
are explicit. The glossary distinguishes residual grid cost from the full-site
benchmarks and loss fractions from delivery multipliers.

## 3.27.59 — 2026-10-07 · OffTaker Allocation evidence

V5 §3.7 teaches the Allocation workspace, URL-backed month and status selection,
meter completeness and freshness, true settlement states, calculated residuals,
keyboard-readable hourly values and month-scoped agreement return paths.

## 3.27.58 — 2026-10-07 · OffTaker Performance forecast basis

V5 §3 teaches completed-run selection, exact forecast windows and sealed input
assumptions, spill-window priorities, indicative replacement prices, source cost
reconciliation, Commercial handoffs, chart value tables and load detail. Assumptions
have required fields, safe numeric ranges and keyboard-safe modal dismissal.

## 3.27.57 — 2026-10-07 · OffTaker A Operations follow-up

V5 teaches meter quality alongside coverage, duplicate rejection before import,
meter-bound collection recovery, UTC settlement comparison and draft-versus-live
editor actions. Dashboard costs reconcile over one history window, while dated
current-book forecasts drive buying actions and historical scenarios remain
separate. V2 documents import dates, quality counts and occupied timestamps.

## 3.27.56 — 2026-10-07 · OffTaker Operations and evidence

[V5 §2.6](v5-offtaker.html#26-operations--meter-history-and-imports) teaches the
current workspace, SAST/UTC grouping, recorded-window gaps versus freshness,
and site-bound demand templates with preview confirmation. The directory and
five view names match the application. Commercial and proposal evidence share
annual units and assessed terms; stale evidence blocks Send. Coverage rationale
has bounded costs, supplier forecasts are labelled as whole-plant output, and
Dashboard explains unavailable assessments. V2 import guidance, V3's bridge,
glossary and coverage mappings follow the same behaviour.

## 3.27.55 — 2026-10-06 · IPP Operations usability

[V4 §11](v4-ipp.html#11-your-plant-live) follows the current IPP Sites workspace:
live output first, meter history and claims next, with plant visuals opened
on demand. [§11.9](v4-ipp.html#119-meter-history-and-interval-imports) teaches
keyboard chart drill-down, coverage tables, refresh feedback and the downloadable
settlement-interval CSV template. The plant glossary now names Operations;
manual contents have a chapter finder and deep links settle after page layout.

## 3.27.54 — 2026-09-29 · What the counterparty receives, on every physical studio

The off-taker, trader-buy and trader-sell studios' Review stage now lists
every term the draft sends, the way the IPP seller studio's does — grouped
by the studio's own sections, each with **Edit**, blanks as *Not set* — in
place of a six-line strip that claimed to be *exactly what the counterparty
will see*. [V7 §3.4](v7-deals.html#34-stage-8-review) teaches **What the
seller receives**: only the buyer-set and joint terms, a wholly blank
section as one line, and an optional device that is off as one line.
[§3.4e](v7-deals.html#34e-compose-in-the-trader-buy-proposal-studio) adds
its **Trader terms** group and
[§3.4f](v7-deals.html#34f-compose-in-the-trader-sell-proposal-studio) its
**Portfolio guarantees** group, technologies included. The IPP list in
[§3.4a](v7-deals.html#34a-stage-9-review) folds wholly blank sections the
same way. [§2.3](v7-deals.html#23-from-candidate-to-draft-proposal) and
§3.4 no longer say the evidence sits beside the form.

## 3.27.53 — 2026-09-29 · How sure are we?

[V4 §2.2](v4-ipp.html#how-sure-are-we) teaches the **How sure are we?**
drawer on IPP Sites → Fleet: why you open it before trusting the sales
sentence, the two-clock message, the coverage note, the five stat tiles,
and [volume correlation](v4-ipp.html#volume-correlation-estimated-and-n)
beside **Assumption sources** — measured shared hours, the technology
register, or a manual pair, and why chapter 03's "bigger fleet" claim
depends on that badge.

## 3.27.52 — 2026-09-29 · The seller proposal studio, from the heuristic evaluation

[V7 §3.4a](v7-deals.html#34a-compose-in-the-seller-proposal-studio) teaches
the rebuilt **Sales proposal** studio. Its one title carries the parties
and the plant, the draft reference appears once, **Save & exit** is now
**Keep draft & exit**, and **Discard draft** sits beside it.
[Shared terms](v7-deals.html#34a-stage-6-asks) (formerly *Public asks*)
checks the volumes under each field: a take-or-pay minimum above the
energy the deal allocates, or a cap below the take-or-pay, blocks the send;
a cap that never binds, asks above the buyer's need and more than the
plant can safely contract next month warn. The suggestions now size both
volumes on the deal's share of the plant. Review & send shows **What the
buyer receives** — every public term in five groups, blanks as *Not set* —
and each blocker opens the section and field that clears it, with a line
under **Send to buyer** saying why it is disabled. A blank warranty (or an
uncapped one) must be acknowledged before it can be sent, and the optional
availability guarantee device shows only its switch until you turn it on.
When the buyer asked for a different tariff than the suggestion, the price
card says so and offers the buyer's ask in one click.
[Evidence](v7-deals.html#34a-evidence-drift) says when it describes a
different deal from the draft and offers **Re-run for these terms**. Every
autosaved change can be undone from the notice at the bottom of the
section ([§3.4a](v7-deals.html#34a-undo)). Explanations sits beside the
section with an icon rail and moves focus in and back. Labels, options
and suggestions read in words (*Two-part*, *SO SCADA estimate*,
*Liquidated damages rate*), numbers drop their storage zeros and group
thousands, and the realised price is in c/kWh. The quote-window note says
when the prices were first suggested, here and in the trader-sell and
virtual studios. [§3.4](v7-deals.html#34-compose-in-the-buyer-proposal-studio)
renames *ToP min volume* to **Take-or-pay minimum**, and the glossary adds
[Take-or-pay minimum](index.html#g-take-or-pay-minimum).

## 3.27.51 — 2026-09-29 · The Sales desk, from the heuristic evaluation

[V4 §6](v4-ipp.html#5-sales) teaches the rebuilt desk. The market
baseline names its forecast run (*v101 · built 19 September 2026 · 5.0 %
imbalance allowance*, with a **stale** chip after a week), skips runs
whose every price is 0 and says so, and puts the market in c/kWh in one
sentence; every verdict names the forecast it was judged against, and a
verdict whose P50 and poor-year answers point different ways says *but
beats it by*. The price rail's markers no longer overprint, and a
legend lists them. Term cards check against the site: capacity above
the ceiling blocks **Simulate Sale** (the server refuses it too),
capacity well past the buyer's ask and a strike below the floor or
above replacement warn in amber, and capacity seeds from the buyer's
stated annual volume. Candidate cards read *shape fit*, *could take* and
*asks for*; search matches the whole card; the count chip follows the
filters, and an empty list offers **Show all candidates**. The route
checklist is folded, the builder scrolls into view on select, and after
a run **Build Proposal** leads. Runs are saved and come back on the next
visit; each row says whether it can be built, is drafted or had its
draft discarded, and **Remove run** takes one out. Compare and decide
leads, full width, with the chart after it below 1536 px. Params badges
are now **Terms** badges and versions are **runs**. On the site
workspace the gap band's fold, **Available energy, market pricing &
risk context**, now stays open once you open it.

[§6.7](v4-ipp.html#5-tou-pricing) and [§6.8](v4-ipp.html#6-firm-viability)
teach the pricing tools as right-hand drawers. TOU pricing opens at the
strike being built, shows each set in one **Peak / standard / off-peak**
column, and **Use as strike** carries a set into the deal. The firm card
reads **Expected margin −70 c/kWh**, **Chance the plant falls short
100 %** and **Margin with the battery**.
[V4 §5](v4-ipp.html#4-haf) teaches the capacity widget's plain labels:
**Historical availability factor (HAF)**, *Pro-rata · 845 MWh* tier
chips, **Already contracted (ED)** and **Not yet contracted (AES)**, the
note when the forecast counted no demand from signed PPAs, and the
formula and abbreviations folded under **How this is worked out**.

[V4 §4](v4-ipp.html#41-gap-hero)'s *Reprice or re-contract below-cost
volume* action now reads in c/kWh (*Realised 39 c/kWh vs LCOE 48
c/kWh.*). [V5 §2.3](v5-offtaker.html#23-onboarding-a-site) and
[V6 §2B](v6-trader.html#2b-onboarding-a-trader-pool) teach the layout
the off-taker and trader-pool onboarding now share with generator
sites: the *Core section N of 6* counter, **Next: {section}**, the
laptop-width checklist above the form, and **Explanations** beside the
form (with the icon rail) or over a backdrop. The glossary adds
[Terms badge](index.html#g-terms-badge) and updates
[P(short)](index.html#g-p-short) and [Option 0 (IPP)](index.html#g-option-0-ipp).

## 3.27.50 — 2026-09-28 · Generator-site onboarding, from the heuristic evaluation

New [V2 §4.3B](v2-entities.html#43b-when-a-section-counts-as-complete)
teaches when a section counts as complete: every required answer in
*and* the values checking out. A value that fails a check is saved but
flagged under its field, and the section shows **Fix values** until it
is corrected; a table lists every check. **Check & mark complete** now
answers beside the button, with the answers still needed and the values to fix
as buttons that jump to each field, and every blank field marked at
once. It teaches the capacity-factor-against-P50 warning with its two
one-click fixes, and the plant emissions factor, which now starts
blank.

[§4.3](v2-entities.html#43-editing-and-what-locks) teaches the blank
form's wording (**NEW GENERATOR SITE**, no **Draft** chip, **Nothing
saved yet**), the *Core section N of 6* counter, **Next: {section}**,
the laptop-width checklist above the form, the first-unfinished-section
resume, **Explanations** beside the form (with the icon rail) or over a
backdrop, the ⓘ terms, the fieldless Market section, and the gate's
footer button. [§4.3A](v2-entities.html#43a-the-identity-map--plant-and-point-of-connection)
adds arrow-key address suggestions, and [§4.1](v2-entities.html#41-the-directory)
gives a draft card's example line.
[V6 §2B.5](v6-trader.html#2b5-explanations) drops the retired
*Expanded* / *Collapsed* word from the Explanations control.

## 3.27.49 — 2026-09-28 · IPP Sites, from the heuristic evaluation

[V4 §2](v4-ipp.html#2-your-fleet) teaches the Fleet tab under its new
heading, **IPP Sites**. The same header as the Sites tab sits above the
tab bar, with **Import intervals** and the round **+**; the room chip
links back to Fleet; and **Manual** opens the chapter for the view you
are on. [§2.1](v4-ipp.html#21-read-the-portfolio-header) reads the
identity line as sites in the fleet, gives **Recompute now** its
tooltip, and explains why the register's **Sold share · selling sites**
tile can read 4 % while chapter 01's fleet model reads 1.2 %.
[§2.6](v4-ipp.html#26-export-csv-and-recompute) quotes *Queuing…* and
the three recompute flashes.

The sales drawer now ranks the fleet's sites by the energy each still
has to sell ([Review the sales plan](v4-ipp.html#review-the-sales-plan)).
Buyer exposure captions read *1-in-10 high price · short, buying
replacement energy* and its low-price twin, with comma thousands
([§2.3](v4-ipp.html#see-buyer-exposure)). A refused risk run is a status
box inside chapter 03 with **Review the assumptions**, and the risk
drawer dates every VaR note and turns its tiles amber when the figures
are not today's ([§2.4](v4-ipp.html#24-does-a-bigger-fleet-help)).
Chapter 04's rows leave the dashboard to act — **Open its Sales desk**,
**Open contracts**, **Import intervals**
([§2.5](v4-ipp.html#25-the-next-chapter)). **Record departure** asks
first and offers **Undo departure**
([§2.1](v4-ipp.html#24-membership-follows-ownership-by-date)).

[V4 §3](v4-ipp.html#3-sites) maps the site workspace's five tabs to their
chapters and names the browser-tab titles.
[V2 §4.1](v2-entities.html#41-the-directory) teaches the Sites register
as it is: counts of every site whatever its status, **Needs attention**
flags, a search that also matches addresses, **Clear filters** that
empties the search, the **Sold · forecast** column, page scrolling with
a sticky header, and a quick view that counts contracts.
[§4.3](v2-entities.html#43-editing-and-what-locks) teaches the blank
onboarding form — no draft until the first answer, *N of 6 core sections
complete · 2 optional* — and the readiness gate's branded header, Escape
and clickable rows. [§4.8](v2-entities.html#48-site-status--open-active-inactive)
places Activate and Deactivate under **Site details**.
[V2 §7.7](v2-entities.html#77-importing-interval-files) teaches the Import
intervals modal's intro, the button that waits for a file, the coloured
verdict and refusals in plain words;
[§7.2](v2-entities.html#72-the-consumption-explorer) names a generator
meter's history *generation*.

Performance: [V4 §4](v4-ipp.html#4-overview) adds **Buyer
organisations** ([§4.1](v4-ipp.html#41-gap-hero)), partly issued weather
days and the P90 source in words ([§4.6](v4-ipp.html#46-weather-outlook)),
puts the price rail and its verdict in c/kWh
([§4.7](v4-ipp.html#47-price-vs-cost)) and lists the new Explanations
entries ([§4.8](v4-ipp.html#48-explanations)). HAF band chips read
*Moderate · Caution* and the capacity line *next month as a Pro-rata
buyer* ([§5](v4-ipp.html#5-haf)). [§17](v4-ipp.html#17-where-your-forecast-comes-from)
says the demo weather follows each site's solar time.

Commercial: [§6.1](v4-ipp.html#61-what-this-screen-is-for) teaches
**Contract commitments** and how it estimates a PPA with no stated
volume; [§6.4](v4-ipp.html#64-process) teaches keyboard-selectable
candidates, equal fits ranked by absorption, the Eskom VPPA checklist
and price hints in c. The same keyboard route is in
[V5 §4](v5-offtaker.html#132-procurement--the-buy-workbench) and
[V6 §9.7](v6-trader.html#87-use-the-decision-log).

Allocation reads the last completed month, **Publish** waits for a
change ([§7.4](v4-ipp.html#74-publish)), the dry strip's legend has its
own line ([§7.9](v4-ipp.html#79-where-the-cascade-runs-dry)) and ARF has a
tooltip ([§7.3](v4-ipp.html#73-board)). The curtailment exposure basis is
in words ([§10.5](v4-ipp.html#105-exposure-and-the-money-room)), and a
feed with no sample reads *No sample received yet*
([§11.3](v4-ipp.html#113-plant-now)).

Dashboard: [§12.3](v4-ipp.html#123-waterfall) teaches a lifetime
waterfall whose steps add up, with a worked month; Monthly Money uses
one scale above and below zero ([§12.2.3](v4-ipp.html#1223-monthly-money));
chapter 3 counts physical PPAs and prints realised in c/kWh
([§12.4.7](v4-ipp.html#1247-total)); chapter 5's tiles state their basis
([§12.6](v4-ipp.html#126-health)); and the market move counts bids
([§12.8.4](v4-ipp.html#1284-bid)).

[V10 §3.1](v10-org-bidding.html#31-why-the-menu-is-in-this-order) says the
sidebar's site and pool counts cover every status. The glossary updates
*Adverse basis*, *Annual exposure*, *IPP Fleet*, *LCOE*, *Modelled
exposure*, *Realised R/MWh*, *Replacement cost*, *Story drawer* and
*Where the cascade runs dry*. Coverage corrects the chapter 04 rows and
retires `IppSiteWizardComponent`. [V22](v22-todos.html#4-v2-entities--setup)
files two follow-ups: re-cutting V2 §4.2 by onboarding section, and
teaching the rest of the site workspace
([V4 item](v22-todos.html#6-v4-ipp-allocation-forecast--haf)).

## 3.27.48 — 2026-09-28 · Billing's chart steps by keyboard

[V15 §12.2](v15-billing.html#122-read-overview-from-top-to-bottom) teaches
**Billed over time** from the keyboard again: Tab to the chart, step
through the months with the arrow keys and press Enter to open one.

## 3.27.47 — 2026-09-28 · Billing, from the seller's side

[V15 §12](v15-billing.html#12-the-billing-hub) now teaches that Billing
opens on the latest month with documents, because billing runs a month
behind, and that the first sentence and **Needs your attention** name
overdue money from every open month, not only the selected one. Every
amount on Billing includes VAT, the two charts included
([§18](v15-billing.html#18-analysis-and-exports)). An organization that only
issues documents, such as an IPP, sees where its revenue comes from, by
customer or by site, and has no Check bills tab. The open document is part
of the page's address, and Escape closes the PDF first, then the drawer.

[§16](v15-billing.html#16-payments-and-aging) teaches receipts and payments.
A seller's receipt names the customer who paid, so its money pays only that
customer's documents. The bank reference starts empty, a wrong entry is
marked on its own field, and the new
[§16.4](v15-billing.html#164-reverse-a-receipt-or-payment) teaches reversing
a record, with a reason that stays on it. The register hides pro formas
until **Show pro formas**, shows each row's status and its days to or past
due, filters by counterparty, and keeps the other filters under **More
filters**, with a **Showing** line and **Clear filters**.

The month pack holds the documents you issued under `issued/`
([§18.3](v15-billing.html#183-download-the-month-pack)).
[§5](v15-billing.html#5-numbering-and-artifacts) adds what a document's face
says: only Market Operator documents carry the SAWEM face. The deemed-energy
line is now *Deemed energy for buyer-caused curtailment*
([V8 §12](v8-settlement.html#12-the-settlement-ui)). The glossary adds
*Receipt* and *Payment reversal*, and the reference card lists the current
views.

## 3.27.46 — 2026-09-28 · The Money Room for a buyer

[V16 §3](v16-analytics.html#3-where-the-numbers-come-from) now teaches
that a fact's amount is money in its own direction, so a buyer's
purchases, network charges and contract adjustments are costs. It also
teaches that pro formas never become facts, and that an invoice you
received is tied to your own buying site, not the supplier's.
[The three grades](v16-analytics.html#the-three-grades) are never added:
each month's stream counts once, at its best grade, on the page, the P&L
statement and the fact CSV ([§9](v16-analytics.html#9-exports-and-the-pl-statement)).
[§4](v16-analytics.html#4-when-the-numbers-refresh) adds that the fact
build rolls up a buyer's savings against grid-only.
[§7](v16-analytics.html#7-the-money-room) teaches the buyer's page.
Savings lead the tiles only once an estimate exists; until then the page
makes no savings claim. A programme that cost more than grid-only is said
to be behind it by an unsigned amount, never to have saved a negative. A cost-only book's verdict says what the energy
cost and never names **Not tied to a site**. Waterfall bars below zero
are drawn below the axis. Bills still overdue from earlier months stay in
view on the pay side, with **Open in billing**.

Hourly losses group by kind, with the hour on each row, **Show N more
hours** and **Review all N**, and there is one finding per kind. The
evidence drawer opens the right invoice when numbers repeat across
suppliers, opens an imbalance hour on the Imbalance screen, and names the
network operator on a network charge. Off-taker books are never offered
**Plan against actual**.

The glossary's *Money grade* entry says the grades are never added.

## 3.27.45 — 2026-09-28 · The Money Room, from your side

[V16 §7](v16-analytics.html#7-the-money-room) now teaches owed and owing
from your side of each document. An invoice you issued is money to
collect, an invoice you received is money to pay, and pro formas never
count, as on the Billing Hub. Picking a month keeps the other months on
the chart, and the box beside it says why two months are not compared.
**Facts built** is in SAST and turns amber when an open month may have
moved. A seller sees cash only, with no savings lens. Recommendation
actions say what happened and offer **Undo**, and a dismissal needs a
reason. The **Evidence** drawer names each settlement line's amount and
the other side of its contract, and folds lines worth R 0.00. The charts
can be stepped with the arrow keys. The plan comparison opens on a book
with a built bridge, and the shared bridge card's caption matches its
state, including on the IPP Dashboard
([V4 §12.2.5](v4-ipp.html#1225-plan-missed)).
[§9](v16-analytics.html#9-exports-and-the-pl-statement) teaches the fact
CSV that follows the page's period and scope. COVERAGE now points the
Money Room and its engine at V16 instead of V14.

## 3.27.44 — 2026-09-27 · The Organization room, rebuilt

[V2 §2](v2-entities.html#2-your-organization--profile-and-accreditations)
now teaches the three tabs (**Organization**, **Accreditations**,
**Feeds & webhooks**). It covers the unsaved-changes chip and leave warning,
errors at the field, dates that wait for their agreement, the removal
preview when you untick a dated agreement, and the **Complete** /
**Incomplete** chips. A row counts only when both agreements are ticked and
dated. New [§2.5](v2-entities.html#25-carbon-participation) is the home for
applying to become a carbon participant and withdrawing a pending
application. New [§2.6](v2-entities.html#26-feeds-and-webhooks) bridges to
[V21 §11](v21-operations.html#11-feeds-and-delivered-events), which now
teaches the named feed table, webhooks with several topics per URL, **Edit
topics**, **Pause** / **Resume**, a confirmed **Rotate secret** (24-hour
overlap), and **Delete** / **Restore**. Configuration offers only the
three organisation topics that knock. The glossary gains
[carbon participant](index.html#g-carbon-participant) and refreshes
*Eskom trader accreditation*, *Municipal accreditation* and *Webhook*.

## 3.27.43 — 2026-09-27 · Orientation drops the market briefing

[V0 §1](v0-orientation.html#1-wheeling-and-why-this-platform-exists) no
longer points at `docs/market.md`. That point-in-time trader snapshot
was removed.

## 3.27.42 — 2026-09-26 · Logo in the top-right corner

The Webill Green logo sits in the top-right corner of every volume's
title bar, and of the hub's. **← Manual home**, the title and the
subtitle stay on the left, and the sticky bar is shorter.

## 3.27.41 — 2026-09-24 · Carbon rooms match the workspace

[V19](v19-carbon.html) and [V20](v20-carbon-tax.html) teach Carbon as
three sidebar rooms. Certificates is Overview, Portfolio, Origination,
Registry pipeline, and Claims & reporting. Market is Discover, Orders
& listings, Private negotiations, and Trades & delivery. Tax is Year
overview, Activity & evidence, Facilities, Offsets, and Return packs.
The old nine-tab Certificate Desk and the Trading tab as a book are
no longer the path.

## 3.27.40 — 2026-09-24 · Bilateral trade opens a dialog

[V19 §19](v19-carbon.html#19-your-certificate-portfolio) records an agreed
bilateral trade from Certificates → Portfolio in a dialog. The buyer and
price are no longer entered in the lot row.

## 3.27.39 — 2026-09-24 · Regional leaves the Trading sidebar

[V10 §3](v10-org-bidding.html#3-the-five-rooms) and
[V0 §2](v0-orientation.html#2-cast-and-apps) list Trading as Market, Bid
Desk, Month and Accounts. The pool desk is not a sidebar room in this
release. [V18 §6](v18-regional-trading.html#6-the-regional-desk) keeps
the boards for when that address is opened.

## 3.27.38 — 2026-09-24 · Portfolio chart key sits under the plot

[V10 §12.2.3](v10-org-bidding.html#1223-the-silent-line) places the colour
key for **Your portfolio through the day** centered under the chart.

## 3.27.37 — 2026-09-24 · Bid Desk follows the trading day

[V10 §12](v10-org-bidding.html#12-bid-desk) teaches the delivery-day lifecycle, connected summary filters, hourly portfolio and unit evidence, direct unit actions and read-only drawers. Published DAM and IDM quantities remain distinct; missing hours, shared books, gate extensions and metering vintages are explicit. The workbench remains separate. [V9 §21](v9-market.html#21-why-solar-earns-less) points to the historical benchmark drawer. Existing routes and chapter anchors remain available.

## 3.27.36 — 2026-09-24 · Accounts follows the money workflow

[V10 §14](v10-org-bidding.html#14-accounts) now teaches Overview, Payments & receipts, Balances and Statements, including scoped monthly charts and separate cash ledgers. Vesting moves into [Month §13.5](v10-org-bidding.html#135-vesting-in-the-published-results); replenishment arrangements move into [Account & cover §6.3.3](v10-org-bidding.html#633-open-a-replenishment-window). Legacy URLs and chapter anchors remain available. V9, V11 and glossary bridges point to the new homes.

## 3.27.35 — 2026-09-23 · Market API leaves the tab bar

[V10 §4](v10-org-bidding.html#4-market--the-membership-desk) is six tabs.
[§11](v10-org-bidding.html#11-market--api) stays at `/org/brp/api` and is
opened from the **API** link on [§5 Info](v10-org-bidding.html#5-market--info).

## 3.27.34 — 2026-09-23 · Document drawer Open PDF

[V15 §10](v15-billing.html#10-your-received-records) and
[§12](v15-billing.html#12-the-billing-hub) place **Open original PDF** at the
bottom right of the document drawer. The PDF viewer modal no longer offers
Print or Download PDF in its footer.

## 3.27.33 — 2026-09-23 · Settlement lines are named in the drawer

[V16 §7.11](v16-analytics.html#711-how-a-figure-proves-itself) names a
settlement line by its charge, time-of-use bucket and period start. A line
that cannot be opened says so without showing its identifier.

## 3.27.32 — 2026-09-23 · Billed over time has a labelled axis

[V15 §12](v15-billing.html#12-the-billing-hub) and
[§18](v15-billing.html#18-analysis-and-exports) show six months of received
and issued totals as a chart. The vertical axis is labelled in Rand.

## 3.27.31 — 2026-09-23 · Unallocated payment opens a dialog

[V15 §16](v15-billing.html#16-payments-and-aging) records an unallocated
payment from a button on Documents. The amount, counterparty, date and bank
reference are entered in that dialog.

## 3.27.30 — 2026-09-23 · Billing payments live on Documents

[V15 §12](v15-billing.html#12-the-billing-hub) is three views: Overview,
Documents and Check bills. Recorded payments, unallocated Rand, billing
periods, balance and due date sit on Documents. [§16](v15-billing.html#16-payments-and-aging)
and [§18](v15-billing.html#18-analysis-and-exports) follow that path. An old
Payments link opens Documents filtered to outstanding balances.

## 3.27.29 — 2026-09-22 · Connected portfolio Billing

[V15 §12](v15-billing.html#12-the-billing-hub) now teaches Overview,
Documents, Check bills and Payments. Sections 10, 11, 16, 18 and 22 follow
shared scope, document drawers, Rand payment entry, allocations, chart
drill-through, scoped CSV and utility evidence. Legacy links remain supported.
Utility originals and payment-record downloads enforce organization ownership.

## 3.27.28 — 2026-09-22 · Money Room portfolio overview

[V16 §7](v16-analytics.html#7-the-money-room) now follows the connected
portfolio overview: summary, history, attributed contributions, result
waterfall, payment aging and losses with next steps. It explains the shared
period and scope controls, preserved YTD anchor, actual fact grades,
evidence drawers and book-specific monthly plan comparison.
[§9](v16-analytics.html#9-exports-and-the-pl-statement) makes the
whole-portfolio, single-month export scope explicit. The Money Room glossary
entry follows the new layout.

## 3.27.27 — 2026-09-22 · V17 Virtual Wheeling expanded

[V17](v17-virtual-wheeling.html) is no longer a sparse spec sheet.
[§1](v17-virtual-wheeling.html#1-this-volume) teaches virtual wheeling
with the shared water-tank metaphor and a one-quarter-hour teaching
example. [§8](v17-virtual-wheeling.html#8-the-virtual-wheeling-section)
documents every `/org/virtual-wheeling` component (ids, empty states,
fill table, credit-note modal). Chapters 2–7 and 9–12 thickened with
bridges; GLOSSARY adds Virtual Wheeling account, uncredited excess,
gen-wheeling rate, credit note, fill order, quarter-hour, notified
capacity; COVERAGE maps `/org/virtual-wheeling` to **V17 §8**.

## 3.27.26 — 2026-09-22 · V8 §12 Settlements list → detail

[V8 §12.3](v8-settlement.html#123-open-a-window--list-to-detail) now
teaches the click path from a Settlements row to
`/org/deals/contracts/:ppa_id/settlements/:period_id`: what stays
(header + six tabs, Settlements current) and what appears underneath.
[§12.6](v8-settlement.html#122-read-the-page-from-evidence-to-cash)
documents the detail page top to bottom against
`ContractSettlementLive`, including when-present Devices and
data-quality blocks. COVERAGE maps the live `/org/deals/contracts/…`
routes (old `/org/contracts/…` paths stay as redirects). GLOSSARY:
`termination notice` (`#g-termination-notice`).

## 3.27.25 — 2026-09-22 · V17 §8 the Virtual Wheeling section, redesigned

[V17 §8](v17-virtual-wheeling.html#8-the-virtual-wheeling-section) now
walks the redesigned `/org/virtual-wheeling` page top to bottom: the
account strip, this month's refund with its credit note and aging, the
four-tile thread, the arithmetic table that sums to the credit note,
uncredited excess with its levers, the fill order in SAST (`?at=`),
who is enrolled, and the cite strip. §2's follow-along points at the
account strip.

## 3.27.24 — 2026-09-22 · V8 §12 the six contract tabs

[V8 §12](v8-settlement.html#12-the-settlement-ui) now walks the contract
page in tab order: **Overview**, **Settlements**, **Ledger**,
**Statements**, **Disputes** and **Termination**
([§12.16](v8-settlement.html#1216-overview--the-signed-terms)–[§12.18](v8-settlement.html#1218-termination--the-notice-clock)).
The header no longer pretends to carry window status chips. The dispute
banner sits under the window strip. V7 §6.1 points at those sections.
GLOSSARY: termination notice.

## 3.27.23 — 2026-09-19 · V6 §10 Nominated PPA in the heading

The Nominations workbench no longer has a top Nominated PPA card.
Member · PPA · MW live in `#org-page-heading` and
`#nominations-ppa-identity`; the Plans roster is the
`#nomination-plans-table` ([V6 §10](v6-trader.html#10-nominations--the-workbench-how-much-should-i-commit)).
Frozen `#9-nominations--the-workbench-how-much-should-i-commit` stays.

## 3.27.22 — 2026-09-19 · V6 §10 Nominations workbench walkthrough

[V6 §10](v6-trader.html#10-nominations--the-workbench-how-much-should-i-commit)
now teaches the live Nominations workbench
(`…/strategy/nominations?from=overview`) top to bottom: Overview-lit
nav, crumb and **‹ Back**, the **Plans** card roster (not a table),
month bounds ±3, **Re-optimise all** (`tooltip-left`), header /
stepper / Costs · Approve · Submit gating, the KPI strip (where
**vs P50** lives), the three-row hour grid whose **Nominated MWh by
hour** ⓘ opens **below**, rationale + override form, branded cost
modal, empty states, and T1 numbers from the seeded plans
([§10.8](v6-trader.html#10n-how-you-get-here)–[§10.13](v6-trader.html#10n-what-this-page-is-not)).
Frozen `#10-nominations--the-workbench-how-much-should-i-commit` and
`#9-nominations--the-workbench-how-much-should-i-commit` stay.

## 3.27.21 — 2026-09-19 · V6 Nominations doors and return

Desk · Commit plan rows and **Open the nominations workbench ›**
open `/nominations?from=desk` (rows also pass `month=`). Overview
always offers **Open Nominations workbench**
(`#overview-open-nominations`, `?from=overview`). The workbench
**‹ Back to …** (`#nominations-back`) returns to that door.
Frozen `#33-next-best-actions`, `#89-commit` and
`#9-nominations--the-workbench-how-much-should-i-commit` stay.

## 3.27.20 — 2026-09-19 · V6 §6A Book · Outcomes walkthrough

[V6 §6A](v6-trader.html#6a-settled-book--procured-vs-sold) now
teaches the live Outcomes screen
(`…/book?mode=outcomes`) block by block: route, Book tab, thread
strip, issues rail, headline, month picker, conservation chart,
money card, buy/sell tables, chains chrome, drift, and the
Outcomes-only `#book-moves` cards
([§6A.5](v6-trader.html#6a5-how-to-read-outcomes-block-by-block)–[§6A.15](v6-trader.html#6a15-empty-states)).
T1 numbers are confirmed from the ledger (September · −R 469 k ·
not balanced; August is a buy-only −R 196 k month). Frozen
`#6a-settled-book--procured-vs-sold` and `#6a4-explanations` stay.

## 3.27.19 — 2026-09-19 · V6 §8 run ledger destination

[V6 §8](v6-trader.html#8-run-detail--the-engine-made-visible) now
teaches the full `/strategy/allocations/:run_id` page against
`AllocationDetailLive`: route, Book stays lit, three arrival doors,
**← Pool · Forecast** href, empty / failed / incomplete states,
T1 September P50 numbers, and screen ids
([§8.6](v6-trader.html#86-how-you-get-here)–[§8.10](v6-trader.html#810-what-this-page-is-not)).
[§6.18](v6-trader.html#618-the-runs-line-ledger) stays the Forecast
fold plus a `Where this is taught` bridge. Frozen
`#7-run-detail--the-engine-made-visible`,
`#6-runs--execute-and-browse-the-engine` and
`#618-the-runs-line-ledger` stay.

## 3.27.18 — 2026-09-19 · V6 §11.11 `/strategy/bess` page

[V6 §11.11](v6-trader.html#1011-the-strategy-bess-page) teaches the
full trader BESS page against T1: Book tab (not a fifth nav door),
which Forecast it opens, crumb, contract chips, plans, facts, chart,
moves, hourly schedule, calendar, asset modal, empty states. September
P50 is R 0 with a 2.3 MWh spill charge; a dispatching October day is
shown from that run's BESS tab. [§6.17](v6-trader.html#617-battery-dispatch)
keeps the Forecast fold and bridges here. Frozen
`#10-bess--dispatch-the-battery` and
`#6-runs--execute-and-browse-the-engine` stay.

## 3.27.17 — 2026-09-19 · V6 §6.18 / §8 Back to Forecast

The run ledger (`…/strategy/allocations/:run_id`) now has
**← Pool · Forecast** (`#allocation-back-to-forecast`) back to
Book · Forecast for the same pool, month, and run. Frozen
`#618-the-runs-line-ledger` and `#8-run-detail--the-engine-made-visible`
stay.

## 3.27.16 — 2026-09-19 · V6 §6 Book · Forecast how to read

[V6 §6.9](v6-trader.html#69-how-to-read-forecast-block-by-block)–[§6.19](v6-trader.html#619-forecast-ctas-and-empty-states)
teach every Forecast block against T1 Renewables Pool September
2026 P50 (`01a0b951-…ecc12cd`): tiles, flow, margin tables, typical
day, caps, battery fold, ledger fold, Find offtake / Cover
shortfall, empty states. Frozen
`#6-runs--execute-and-browse-the-engine` stays. No `#book-moves`
on Forecast.

## 3.27.15 — 2026-09-19 · V6 §6 drop Forecast next-moves cards

Book · Forecast no longer shows the three `#book-moves` cards (Sell
the spill · Finish the nominated plan · Compare with what settled).
Nominations and Outcomes stay on the thread strip. When this run
spills more than 20 % of supply, `#book-forecast-offtake-cta` offers
**Find offtake → Desk**; when unmet demand is above 5 %,
`#book-forecast-cover-cta` offers **Cover shortfall → Desk**. Outcomes
still ranks three `#book-moves` cards. Frozen
`#6-runs--execute-and-browse-the-engine` stays.

## 3.27.14 — 2026-09-19 · V6 Book Explanations drawer

Book · Rules, Forecast and Outcomes each open **Explanations**
(`#book-explanations-open`) — the same right-hand drawer as Overview,
with a mode-specific **How to Read the View** and A–Z list. Frozen
`#5-pools--build-your-portfolio-structure`,
`#6-runs--execute-and-browse-the-engine` and
`#6a-settled-book--procured-vs-sold` stay.

## 3.27.13 — 2026-09-19 · V6 §9 Desk deal panel (no side drawer)

[V6 §9.2](v6-trader.html#82-set-the-terms-right-panel) now teaches the
Desk the same way as IPP Sales and OffTaker Procurement: click a Sell
or Buy candidate and the deal form opens **beside the list**
(`#desk-deal-panel`), not in a right-hand drawer. Frozen
`#82-set-the-terms-right-panel` stays.

## 3.27.12 — 2026-09-19 · V6 §5.7.2 Create a joiner

[V6 §5.7.2](v6-trader.html#472-how-to-create-a-solid-joiner) now teaches
the click path that draws a Supply→Demand joiner: **Rules** on a supply
card → **SHAPE_MATCH** → name a **Target pool** (not **Any**) → **Add
rule**. Frozen `#47-the-wiring-gutter` stays.

## 3.27.11 — 2026-09-19 · V6 §5 drop Rules next-moves cards

Book · Rules no longer shows the three `#book-moves` cards (Give the
spill a buyer · Or take less supply · Check the coverage bands).
Issues rail, outcome badges, and Overview actions stay. When forecast
spill is above 20 %, `#book-offtake-cta` offers **Find offtake → Desk**.
Frozen `#5-pools--build-your-portfolio-structure` stays.

## 3.27.10 — 2026-09-19 · V6 §5.7 Wiring gutter

[V6 §5.7](v6-trader.html#47-the-wiring-gutter) now teaches the coloured
joiners between Supply and Demand on Book · Rules (`#book-wires`):
colour is the supply type, the word is the rule, dashed red is leftover
spill. Frozen `#5-pools--build-your-portfolio-structure` stays; new
`#47-the-wiring-gutter` and `#471-t1-on-the-demo--reading-the-joiners`.

## 3.27.9 — 2026-09-19 · V6 §5.2 Member organisation on pool cards

[V6 §5.2](v6-trader.html#42-the-pool-card) now teaches that each Rules
card member line is `Organisation · Site` (or pool name). Frozen
`#42-the-pool-card` stays.

## 3.27.8 — 2026-09-19 · V6 §5.2 Archive drafts

[V6 §5.2](v6-trader.html#42-the-pool-card) now teaches **Activate** and
**Archive** together on a **DRAFT** Rules card (`#activate-pool-{id}`,
`#archive-pool-{id}`). Archive still appears on **ACTIVE** cards.
Frozen `#42-the-pool-card` stays.

## 3.27.7 — 2026-09-19 · V6 §5.2 Activate archived pools

[V6 §5.2](v6-trader.html#42-the-pool-card) now teaches **Activate** on
both **DRAFT** and **ARCHIVED** Rules cards (`#activate-pool-{id}`).
An archived Solar still occupies Solar on **Select a type** — press
Activate on that card instead of adding a second pool. Frozen
`#42-the-pool-card` stays.

## 3.27.6 — 2026-09-19 · V6 Book stays the top tab

[V6 §3.4](v6-trader.html#34-the-shared-strategy-shell),
[§5](v6-trader.html#5-pools--build-your-portfolio-structure),
[§6](v6-trader.html#5-runs--execute-and-browse-the-engine) and
[§6A](v6-trader.html#5a-settled-book--procured-vs-sold) now teach that
`#strategy-nav` stays **Overview · Book · Desk · Dashboard**. **Book**
stays the lit top tab on Rules, Forecast and Outcomes. Those views
switch on the thread strip, not as extra room tabs. Frozen
`#34-the-shared-strategy-shell`, `#4-pools--build-your-portfolio-structure`,
`#5-runs--execute-and-browse-the-engine` and
`#5a-settled-book--procured-vs-sold` stay.

## 3.27.5 — 2026-09-18 · V6 Book row is Rules · Outcomes

[V6 §3.4](v6-trader.html#34-the-shared-strategy-shell),
[§5](v6-trader.html#5-pools--build-your-portfolio-structure) and
[§6A](v6-trader.html#5a-settled-book--procured-vs-sold) now teach the
trader **Book** switch on the same `#strategy-nav` underline as Book:
**Rules** (default landing for `/org/trader-pools/:id/strategy/book`) and
**Outcomes**. **Forecast** is not on that row; it stays at
`…/book?mode=forecast` from the thread strip or a run link. Frozen
`#34-the-shared-strategy-shell`, `#4-pools--build-your-portfolio-structure`,
`#5-runs--execute-and-browse-the-engine` and
`#5a-settled-book--procured-vs-sold` stay.

## 3.27.4 — 2026-09-18 · V6 §4.6 Plant now opens Your plant live

[V6 §4.6](v6-trader.html#46-hour-by-hour) and
[§4.11](v6-trader.html#411-explanations-and-chrome): Overview **Plant
now** chips name the IPP site and open **Your plant live** as a
scrollable modal on Overview (`#overview-plant-live-modal`). They no
longer navigate to `/org/generator-sites/…/strategy/plant`. Frozen
`#46-hour-by-hour` stays.

## 3.27.3 — 2026-09-18 · V6 §4.9 Forecast said, book settled

[V6 §4.9](v6-trader.html#49-forecast-said-book-settled) now teaches
the Overview drift card in plain words: weather-forecast vs receipt,
how to read axes and colours, a good chart (lines travel together)
and a bad chart (one-way miss, growing gap), with the month-by-month
Rand behind each. Frozen `#49-forecast-said-book-settled` stays.

## 3.27.2 — 2026-09-18 · V6 §4.11 How to Read the View

[V6 §4.11](v6-trader.html#411-explanations-and-chrome) now notes that
the Trader Overview Explanations drawer puts **How to Read the View**
above the A–Z terms (`#overview-how-to-read`, collapsed until
`#overview-how-to-read-toggle`). Frozen `#411-explanations-and-chrome`
and `#46-follow-along--the-morning-check` stay.

## 3.27.1 — 2026-09-18 · V6 §4.6 Plant now under the clock legend

Trader Overview **Plant now** chips sit under the Long or short
legend (`#overview-clock` · `#trader-plant-chips`), above the chart —
not above the intro. Frozen `#46-hour-by-hour` stays.

## 3.27.0 — 2026-09-18 · V6 §4 Overview is the live strategy page

[V6 §4](v6-trader.html#4-overview--your-landing-page) now teaches
`/org/trader-pools/:id/strategy` card by card: position headline and
fan, Structural position, Concentration, Where the energy goes, Next
best actions, Long or short hour by hour (Typical day / Tomorrow),
Pool health, the margin heatmap, Forecast said / book settled, Run
Forecast Now, Explanations. Frozen `#3-overview--your-landing-page`,
`#30-the-book-as-a-marketplace`, `#31-kpi-cards`,
`#32-interpret-green-amber-and-red`, `#32-pool-cards`,
`#33-next-best-actions`, `#34-run-forecast-now`,
`#453-p50-and-p90-in-plain-language` stay. No flow charts.

## 3.26.2 — 2026-09-18 · V6 §2B.6 drop create/edit flowchart

[V6 §2B.6](v6-trader.html#2b6-create-or-edit) no longer shows the
Mermaid create/edit/save flowchart. The numbered chrome steps stay
(Add New or Edit through Discard). Frozen `#2b6-create-or-edit` stays.

## 3.26.1 — 2026-09-18 · V6 §2 / V2 §5 fleet-tile order

[V6 §2](v6-trader.html#2-trader-pools),
[V6 §3](v6-trader.html#2-getting-in) and
[V2 §5](v2-entities.html#5-trader-pools--the-commercial-layer) now list
the Trader Pools fleet tiles left to right: coverage · margin at plan ·
margin at risk · spill · shortfall (`#trader-pools-stat-coverage`,
`#trader-pools-stat-margin`, `#trader-pools-stat-mar`,
`#trader-pools-stat-spill`, `#trader-pools-stat-shortfall`). Frozen
`#2-trader-pools`, `#2a-trader-pools`, `#2-getting-in` and
`#5-trader-pools--the-commercial-layer` stay.

## 3.26.0 — 2026-09-18 · V6 §2B trader-pool onboarding

New **[V6 §2B](v6-trader.html#2b-onboarding-a-trader-pool)**
(`#2b-onboarding-a-trader-pool`) teaches
`/org/trader-pools/onboarding/<case id>` field by field: Profile &
licence, Network & roles, Activities & limits, Operations & data,
Commercial & risk, Customer protections, Market standing data, plus
drafts rail, Explanations drawer, create vs edit. Glossary adds
[trader pool draft](index.html#g-trader-pool-draft),
[Schedule 2 exemption](index.html#g-schedule-2-exemption),
[MPID](index.html#g-mpid). Coverage cites V6 §2B as home.
Published V6 had **no §2.5** under chapter 2 (ends at 2.4); nothing
to delete. Former Getting-in 2.5 is now [§3.5](v6-trader.html#35-read-badges-before-acting)
and stays. Frozen `#2a-trader-pools`, `#2-getting-in` stay.

## 3.25.7 — 2026-09-18 · V6 §2 / V2 §5 Shortfall fleet tile

[V6 §2](v6-trader.html#2-trader-pools),
[V6 §3](v6-trader.html#2-getting-in) and
[V2 §5](v2-entities.html#5-trader-pools--the-commercial-layer) now name
the fifth Trader Pools fleet tile **Shortfall**
(`#trader-pools-stat-shortfall`): unmet demand ÷ demand, the same
`SHORTFALL_PCT` as the book. Missing data is **—**, like Spill and
Coverage. Frozen `#2-trader-pools`, `#2a-trader-pools`, `#2-getting-in`
and `#5-trader-pools--the-commercial-layer` stay.

## 3.25.6 — 2026-09-18 · V2 §5.4 Explanations drawer

[V2 §5.4](v2-entities.html#54-editing) now names **Explanations** on the
trader-pool onboarding workspace (`#trader-pool-onboarding-explanations`):
a right-hand, section-aware list of field notes. Frozen `#54-editing`
stays.

## 3.25.5 — 2026-09-18 · V2 §5.4 Edit opens onboarding

[V2 §5.4](v2-entities.html#54-editing) no longer teaches **Edit** as the
five-step pool modal. Drawer **Edit** (`#trader-pool-edit-<id>`) opens
`/org/trader-pools/onboarding/<case id>` in edit mode — the same
workspace as create, prefilled, writing the same pool. Frozen
`#54-editing` stays.

## 3.25.4 — 2026-09-18 · Off-Taker Sites Edit → onboarding

Drawer **Edit** on [V5 §2](v5-offtaker.html#2-offtaker-sites) /
[V2 §3.3](v2-entities.html#33-editing-and-what-locks) opens the same
onboarding workspace used to create a site
(`/org/off-taker-sites/onboarding/<id>`), prefilled from the live shop.
The six-step **Edit** modal is gone. Connection type, address and site
GPS stay locked; **Save changes** updates that site.

## 3.25.3 — 2026-09-18 · V6 2A → §2, later chapters +1

Former **[§2A Trader pools](v6-trader.html#2a-trader-pools)** is volume
**[§2](v6-trader.html#2-trader-pools)**. Former **§2 Getting in** is
**[§3](v6-trader.html#2-getting-in)**; Overview–Dashboard shift to
**§4–§12**. Former **§5A / §5B** are **§6A / §6B**. Frozen ids stay
(`#2a-trader-pools`, `#2-getting-in`, `#3-overview--your-landing-page`,
`#5a-settled-book--procured-vs-sold`, `#5b-settled-chains--end-to-end-path-health`,
and the rest of the previous chapter slugs).

## 3.25.2 — 2026-09-18 · V5 Sources → §3.7, landed cost → §7

Former chapter **7 Sources** is now Overview **[§3.7](v5-offtaker.html#135-sources--where-settled-energy-came-from)**
(the Settled view). Former **§3.7–§3.11** shift to **§3.8–§3.12**
with frozen ids (`#37-what-to-buy-next` … `#311-explanations`).
Landed cost is volume **[§7](v5-offtaker.html#8-landed-cost)**
(new `#7-landed-cost`; `#8-landed-cost` and
`#124-the-landed-cost-model--where-saving-comes-from` stay).

## 3.25.1 — 2026-09-17 · V6 §3 drop Overview five-KPI fold

[V6 §3](v6-trader.html#3-overview--your-landing-page) no longer has an
**All five KPIs** fold (`#overview-kpi-cards`). Coverage, Margin (fcst),
Margin@Risk, Spill and Shortfall stay on the position headline, fan,
tiles and structural gauges. Frozen `#31-kpi-cards` stays.

## 3.25.0 — 2026-09-17 · V5 OffTaker volume rewrite

**[V5 · OffTaker](v5-offtaker.html)** is rewritten as one lifetime
Dashboard story (commissioning → demand met → cost → what to do next).
Each chapter now teaches **how to read** its charts, tables and tiles —
what the numbers and shapes mean, what good versus worrying looks like,
and what to do with the reading — instead of cataloguing page chrome.
Mermaid is gone from this volume. Typical versus Tomorrow is taught as
a reading of the outlined **P50 forecast (tomorrow)** line
([§3.2.B](v5-offtaker.html#32b-typical-day-or-tomorrow) ·
[#32d-typical-vs-tomorrow](v5-offtaker.html#32d-typical-vs-tomorrow)).
Frozen chapter numbers and anchors stay. Glossary adds
[Option 0 (off-taker)](index.html#g-option-0-offtaker). [V22 §7](v22-todos.html#7-v5-offtaker)
still holds the unpaid Midrand snapshot-Rand stamp and a Dashboard /
Procurement re-stamp.

## 3.24.2 — 2026-09-17 · OffTaker Typical-day P50 outline

[V5 §3.2](v5-offtaker.html#1312-supply-mix) Typical day now overlays the
outlined **P50 forecast (tomorrow)** line — the same darker dashed
stroke as Generator Unsold profile. Frozen `#1312-supply-mix` ·
`#32b-typical-day-or-tomorrow` · `#32c-lines-and-highlight` stay.

## 3.24.1 — 2026-09-17 · Overview Explanations sidebar

Generator and OffTaker Strategy **Overview** share one **Explanations**
control (`#overview-explanations-open`): a right-hand drawer of every
term and abbreviation on that screen, A–Z. [V4 §4.8](v4-ipp.html#48-explanations)
and [V5 §3.11](v5-offtaker.html#311-explanations). Same chrome as
Allocation Explanations. Frozen `#4-overview` and `#3-overview` stay.

## 3.24.0 — 2026-09-17 · V5 §3 Overview, each card and action

[V5 §3](v5-offtaker.html#3-overview) is rewritten against the live
OffTaker Strategy **Overview**
(`/org/off-taker-sites/:id/strategy`): use-vs-pay hero, ranked next-best
actions (trim / buy / SAWEM / green / coverage), Forecast · Settled and
Typical · Tomorrow, **What to buy next**, weather outlook, price rail,
Assumptions (now including optional SAWEM reference), Run Forecast Now,
and Missing grid rates. Frozen `#3-overview` · `#1311-five-kpi-cards` ·
`#1312-supply-mix` · `#1313-grid-escalation-vs-landed-cost` ·
`#1314-next-best-actions` · `#1315-run-forecast-and-assumptions` ·
`#1316-missing-grid-rates` stay; new `#37-what-to-buy-next` ·
`#38-will-your-supplier-deliver` · `#39-what-a-kwh-costs` ·
`#310-worked-example`. Escalation Yr 5 is `rate × 1.12⁴` (201.4 c from
128 c), matching the chart. No Simulate on this page. Glossary adds
hedge band, next best actions, SAWEM reference. [V22 §7.1](v22-todos.html#7-v5-offtaker)
holds the unpaid Midrand snapshot-Rand stamp.

## 3.23.2 — 2026-09-17 · V5 §3 drop Overview five-KPI cards

[V5 §3](v5-offtaker.html#3-overview) no longer has an **All five KPIs**
fold (`#offtaker-kpi-cards`). Bill Saving, Effective Cost, Coverage,
Green and Over-contract stay on the use vs pay hero, Next best actions
and the price rail. Frozen `#1311-five-kpi-cards` stays.

## 3.23.1 — 2026-09-17 · V5 §2.3 drop Review flowchart

[V5 §2.3](v5-offtaker.html#23-onboarding-a-site) drops the Mermaid
flowchart under **Review, create, and what "done" looks like** (Review
readiness → Create → Active / Inactive). The numbered create steps and
the lifecycle-rail stay. Frozen `#23-onboarding-a-site` and
`#237-market` (6 · Market standing data) stay.

## 3.23.0 — 2026-09-17 · V5 §2.3 OffTaker site onboarding

[V5 §2.3](v5-offtaker.html#23-onboarding-a-site) is now the OffTaker-seat
home for creating a site: the seven-section workspace at
`/org/off-taker-sites/onboarding/:id` (Identity → Commercial), click
path, every field, Explanations drawer, Review readiness, Active vs
Inactive, drafts rail, and refusals. [V5 §2.1](v5-offtaker.html#21-the-directory)
drops the two Mermaid flowcharts; numbered lists stay. Frozen
`#21-the-directory` stays. Former §2.3 Getting in is **§2.4**
(`#24-getting-in`, old `#23-getting-in` kept). Former §2.4 tabs is
**§2.5** (`#25-the-tabs`, old `#24-the-tabs` kept). [V2 §3.2](v2-entities.html#32-creating-a-site--the-wizard-step-by-step)
is a one-home bridge plus demand-class / spill entity rules; **Edit**
is named as the legacy modal. Glossary adds meter-point, NMD, and
off-taker site draft.

## 3.22.6 — 2026-09-17 · OffTaker onboarding Explanations drawer

[V2 §3.2](v2-entities.html#32-creating-a-site--the-wizard-step-by-step)
now names **Explanations** (`#off-taker-onboarding-explanations`) on
off-taker site onboarding: the control opens a right-hand drawer with
a short note for every field on the current section, the same pattern
as generator-site onboarding. [V5 §2](v5-offtaker.html#2-offtaker-sites)
bridges here. Frozen `#3-off-taker-sites--the-buy-side` stays.

## 3.22.5 — 2026-09-17 · OffTaker Import intervals is a modal

[V2 §7.7](v2-entities.html#77-importing-interval-files) now teaches
**OffTaker Sites** and **IPP Sites** the same way: **Import intervals**
(`#open-interval-import`) sits on the fleet-controls row next to
**Add New Site** and opens `#interval-import-modal`. OffTaker still
stores **kwh_import**; IPP **kwh_export**. Frozen `#773-where-to-click`
stays. [V2 §3.1](v2-entities.html#3-off-taker-sites--the-buy-side) and
[V5 §2.1](v5-offtaker.html#21-the-directory) name the button on the
Search / Network / Name row.

## 3.22.4 — 2026-09-17 · V5 §2.1.5 Needs you on OffTaker Sites

[V5 §2.1](v5-offtaker.html#21-the-directory) now also teaches the
**Needs you** rail (`#fleet-needs`): every word, how a site lands on
it, rank (tone then weight, top five), each row’s door, empty and
hidden states, and how the clipboard sits beside the four fleet tiles
and the per-site cards. Worked rail: OffTaker C’s two VW Demo ESKOM
meters. Frozen `#21-the-directory` stays; new `#215-needs-you`.
[V2 §3.1](v2-entities.html#3-off-taker-sites--the-buy-side) points here
for the ranking.

## 3.22.3 — 2026-09-17 · V5 §2.1 labeled OffTaker card vitals

[V5 §2.1](v5-offtaker.html#21-the-directory) now teaches the three
quiet-card vitals with uppercase labels above the figures — Served by
contracts, Contract price, Saving · month — the same words as the
drawer tiles. [V2 §3.1](v2-entities.html#3-off-taker-sites--the-buy-side)
drops “inline figures” for the same labels.

## 3.22.2 — 2026-09-17 · V5 §2.1 each OffTaker fleet tile

[V5 §2.1](v5-offtaker.html#21-the-directory) now teaches the four
OffTaker Sites directory tiles — Demand served by contracts, Contract
c/kWh, Saving · month, Cover — words, source, formula, tones, empty
states, and the OffTaker C worked strip (100 % · 96 c · R 201 k ·
9.0 MW). Frozen `#21-the-directory` stays. [V2 §3.1](v2-entities.html#3-off-taker-sites--the-buy-side)
points here for the tile arithmetic.

## 3.22.1 — 2026-09-17 · V5 §1.2 drop the chain flowchart

[V5 §1.2](v5-offtaker.html#12-the-chain) keeps the numbered reading
order. The Mermaid flowchart is gone. Frozen `#12-the-chain` stays.

## 3.22.0 — 2026-09-16 · V5 OffTaker and V6 Trader seats

After [V4 · IPP](v4-ipp.html), the set now has two more seat volumes.
**[V5 · OffTaker](v5-offtaker.html)** is the buy-side home: OffTaker Sites
and the site book (Overview, Procurement, coverage, Dashboard, Sources,
landed cost). **[V6 · Trader](v6-trader.html)** is the trader home: Trader
Pools and the two-sided book (Overview, Rules · Forecast · Outcomes, Desk,
nominations, BESS, Dashboard).

Former V5 The Deal Room is now **[V7](v7-deals.html)**; Settlement through
TODOs each shift +2 (V8–V22). Legacy filenames (`v5-deals.html`,
`v6-settlement.html`, …) are hash-preserving redirects. [V3](v3-strategy.html)
keeps the shared engine and points at the three seat volumes. Entity wizards
stay in [V2](v2-entities.html).

## 3.21.6 — 2026-09-16 · V4 §11 drop Dashboard / Sites / Fleet closer

[V4 §11](v4-ipp.html#11-your-plant-live) no longer has a §11.9
surface table. The chapter still closes on the empty-state field
guide and the **Where this is taught** bridges.

## 3.21.5 — 2026-09-16 · V4 §11 narrates the six Plant chapters

[V4 §11](v4-ipp.html#11-your-plant-live) is rewritten as a walk of
the Plant tab in reading order: the **How this page fits together**
strip, then each of the six Dashboard-style chapters, then each
form and card as you meet it (feed register, date stepper, sample
tiles, events, traces, collector kit, consent). Frozen anchors
unchanged.

## 3.21.4 — 2026-09-16 · `/demo` Update demo to today rolls the clock

**Update demo to today** again runs [V19 §4.4](v19-operations.html#44-the-procedures)
Procedure D (`WB.Setup.roll_forward/1`) in the background: derived `as_of`
moves to today, same seed. The button stays on the card as **Updating…**
and stays disabled until the new seal. **Catch up metering now** remains
the non-destructive meter fill.

## 3.21.3 — 2026-09-16 · V4 §11 the Plant tab told as six chapters

The **Plant** tab (`/org/generator-sites/:id/strategy/plant`) now
opens with **How this page fits together** (`#plant-pipeline`): one
sentence for the one-way flow collector → feed → readings → evidence
→ consent, and five linked steps with live status. The register
follows in six Dashboard-style chapters — Plant now, Feed register,
Device samples, Events and curtailment evidence, Collector kit,
Consent. [V4 §11](v4-ipp.html#11-your-plant-live) rewritten to match:
feed cards, the register disclosure, date stepping, four sample
tiles, locked and empty states, and an organisation picker on the
consent form. Also fixed on the page: every control now reaches the
register (**View feed**, **Register feed** and **Grant consent**
previously crashed the tab), and success or refusal flashes now
show.

## 3.21.2 — 2026-09-16 · `/demo` Update demo to today is metering catch-up

On the Demo Dashboard, **Update demo to today** no longer rebuilds the
sealed world. It starts the same S15 20-minute metering catch-up as
**Catch up metering now**. Organisations, contracts and invoices stay.
A destructive clock shift remains `mix wb.setup.roll_forward`
([V19 §4.4](v19-operations.html#44-the-procedures)).

## 3.21.1 — 2026-09-16 · V4 §11.3 drop Plant now flowchart

[V4 §11.3](v4-ipp.html#113-plant-now) keeps the numbered arrival
steps. The Mermaid flowchart is gone.

## 3.21.0 — 2026-09-16 · V4 Plant live is §11

The IPP volume now teaches the live register before the lifetime story.
**Your plant live** is [V4 §11](v4-ipp.html#11-your-plant-live) (the
**Plant** tab at `/org/generator-sites/:id/strategy/plant`, page
`#ipp-plant`). **Dashboard** is [V4 §12](v4-ipp.html#12-dashboard).
Former §11–§19 each shift +1 (guard §13, running §14, reference §15,
MEC §16, forecast-from §17, technology §18, capture §19, battery §20).
Curtailment stays §10.

The Plant chapter matches the built tab: Plant now tiles, feed
register (`#plant-feed-form`), device samples and day chart,
events/traces, and collector consent (LIVE_PANEL / SAMPLES /
EVIDENCE). Dashboard Chapter 5 keeps a compact Plant now glance;
**Open plant** navigates to the tab. `?plant=1` still redirects.
There is no plant drawer.

Frozen heading ids from the previous §11–§20 stay as
`<a id="…">` aliases (`#11-dashboard`, `#20-your-plant-live`,
`#12-guard`, …). Glossary, coverage, hub and cross-volume bridges
teach the new numbers.

## 3.20.66 — 2026-09-16 · V4 Plant tab

The IPP strategy bar is six tabs: **Overview · Sales · Allocation ·
Curtailment · Plant · Dashboard**. **Open plant** on Dashboard
Chapter 5 navigates to `/strategy/plant`; `?plant=1` redirects
there. The plant drawer is gone. V4 §3.2, §11.8.7, §20.

## 3.20.65 — 2026-09-16 · V4 §11.8 the next chapter

V4 §11.8 is now the field guide for Dashboard Chapter 6: the three
ranked next-action cards (`#ipp-story-actions`), how each is
priced from the loss-ledger baseline, stale-telemetry rewrite,
the Chapter 5 **Open plant** drawer (`#ipp-plant-drawer`),
housekeeping, and the battery *not a fourth move* fact. Glossary
adds `g-next-chapter-ipp` and `g-option-0-ipp`. Frozen
`#118-next` stays.

## 3.20.64 — 2026-09-16 · V4 §11.6.1 drops the flowchart

V4 §11.6.1 (When this site has a battery) no longer opens with a
Mermaid flowchart. The numbered reading order now carries the
Bess-asset branch and the Chapter 6 *not a fourth move* fact. Frozen
`#1161-battery-in-health` stays.

## 3.20.63 — 2026-09-16 · V4 §11.2 drops the flowchart

V4 §11.2 (Chapter 1 — the river of money) no longer opens with a
Mermaid flowchart. The numbered reading order now carries the
closed-month branch and the zero-line. Frozen `#112-timeline` stays.

## 3.20.62 — 2026-09-16 · V4 §11.1 and §11.1.1 drop flowcharts

V4 §11.1 (the verdict) and §11.1.1 (Generated) no longer open with a
Mermaid flowchart. The numbered reading order and month-fill steps
stay. Frozen `#111-verdict` and `#1111-generated` stay.

## 3.20.61 — 2026-09-16 · V4 §11.5 where the losses came from

V4 §11.5 is now the field guide for Dashboard Chapter 4: the loss
ledger (`#ipp-story-loss-ledger`), how each of the seven kinds is
valued, the hour × month heat strip (`#ipp-story-heat-chart`),
Annual curtailment exposure (`#ipp-curtailment-exposure`), and a
worked leftover month. Glossary adds `g-loss-ledger-ipp`,
`g-availability-slide`, and `g-heat-strip-unsold`. Frozen
`#115-losses` stays.

## 3.20.60 — 2026-09-16 · V4 §11.4 where the money came from

V4 §11.4 is now the field guide for Dashboard Chapter 3: the sources
ledger (`#ipp-story-sources-table`), each PPA buyer row, the always-on
RECs and SAWEM day-ahead zeros, the price rail against LCOE and market
P50, Total earned (achieved · realised · HHI), and a worked month.
Glossary adds `g-sources-ledger`. Frozen `#114-sources` stays.

## 3.20.59 — 2026-09-16 · V4 §11.2.5 How this step was counted

Each **Why the plan was missed** step now opens **How this step was
counted**: a short sentence and the MWh, Rand-per-MWh, and capture-factor
numbers that feed that step. The JSON dump, source refs, and fact ids
are gone. The Money Room copy can still open a lineage drawer; the
Dashboard copy does not.

## 3.20.58 — 2026-09-16 · V4 §11.2.5 Why the plan was missed dates and Rand

The **Why the plan was missed** card (`performance-bridge-{book id}`)
shows the month as `1 July 2027`, not `2027-07-01`. Plan, Actual, and
each step use grouped Rand (`R 1,000.00`, `−R 5,604,000.00`). V4
§11.2.5 examples match the screen.

## 3.20.57 — 2026-09-16 · V4 §11 Dashboard amounts and dates

IPP Dashboard money is grouped Rand (`R 1,000`, `−R 96,400,000`), not
compact `R 96.4 m` / `R 450 k`. Prose and card dates are `1 July 2026`.
Monthly Money still plots in **R million** on the axis; net annotations
and the verdict use grouped Rand. V4 §11 examples follow the screen.

## 3.20.56 — 2026-09-16 · V4 §11.2 Monthly Money and Why the plan was missed

V4 §11.2 is now the field guide for Dashboard Chapter 1: how to read
**Monthly Money** (stacks above and below zero, flags, grade ticks,
toggleable legend that hides a series and rescales) and **Why the
plan was missed** (the margin-bridge card above the chart). Glossary
adds `g-forgone` and `g-margin-bridge`. V14 §5 gets a one-sentence
bridge to that card. Frozen `#112-timeline` stays.

## 3.20.55 — 2026-09-16 · V4 §11.1 verdict cards and How sure is this story

V4 §11.1 now teaches each money-spine figure on the IPP Dashboard
verdict — **Generated**, **Earned**, **Cost of generation**, and **Net** —
and the **How sure is this story** grade bar (settled · invoiced ·
estimated), chips, and a worked month.

## 3.20.54 — 2026-09-16 · V4 §11 battery contract lives in Dashboard health

The IPP Dashboard no longer shows a disconnected **Battery contract**
banner. When this generator site has a `BessAsset`, Chapter 5 weaves
cycles, RTE and availability into the health vitals and
`#ipp-story-battery`. A site without a battery stays silent. V4 §19
opens from that health card.

## 3.20.53 — 2026-09-16 · V4 §11 drops the old-dashboard contrast

V4 §11 no longer explains the Dashboard by contrasting an old
scoreboard of KPIs, a gauge, a price chart, and an alert strip. The
chapter opens on the five owner questions and the six-chapter story
that is on the screen. Availability (HAF) is taught as the folded health
block, not as “the scoreboard that used to head the page.” The same
contrast is gone from the §5.8 bridge.

## 3.20.52 — 2026-09-16 · V4 §10.4 Record form by status

V4 §10.4 now teaches the Curtailment Review **Record** form
(`#claim-action-form`) for every status: which Record choices, which
fields (`#claim-record-action` through `#record-claim`), and which
close codes the ledger will accept. Draft close still uses the
close-reason list (not a Close row). **Closed** has no form.
Frozen `#104-lodge-and-reconcile` stays; `#104-the-record-form` and
`#1041-…`–`#1048-form-closed` append.

## 3.20.51 — 2026-09-16 · V4 §10.3 Prepare evidence is labelled on the Draft drawer

A Draft Review drawer now explains **Prepare evidence** in
`#prepare-claim-help` before you press it: it seals this version's
hours, weather and meters; you cannot lodge until that pack exists; it
does not send anything. After a pack, the help says the draft is
sealed, and `#claim-bundle-hash-label` captions the SHA-256 stamp.
The button tooltip matches. V4 §10.3.

## 3.20.50 — 2026-09-16 · V4 §10.5 Exposure is not a Money Room tile

V4 §10.5 no longer treats Annual exposure as a Money Room figure.
The year-ahead estimate lives on two *white* IPP cards
(`#curtailment-exposure`, Dashboard `#ipp-curtailment-exposure`).
`/org/money` has no Annual exposure tile. Panel 4 may show a period
**Unrecovered curtailment** sentence. Glossary adds `g-money-room` and
`g-unrecovered-curtailment`; `g-annual-exposure` drops any Money Room
tile claim. V14 §5 carries a one-sentence bridge.

## 3.20.49 — 2026-09-16 · V4 §10.7 six Curtailment totals tiles

V4 §10.7 now names every `[data-role=stat-card]` on Curtailment
claims (`#claim-totals`): **Claimed**, **Provisional**, **Final**,
**Unrecovered**, **Cash at risk**, and **Annual exposure**. Each tile
gets its id, formula, empty copy, tone, and whether it follows the
month picker. Frozen `#107-the-curtailment-tab` stays; aliases
`#107-the-six-tiles` / `#107-stat-cards` / `#107-claim-totals`
append. Glossary adds `g-cash-at-risk`, `g-unrecovered`,
`g-annual-exposure`.

## 3.20.48 — 2026-09-16 · V4 §10 Draft Record and close-reason list

On a **Draft** Review drawer, **Record** offers only **Mark as sent**.
**Close reason code** is a three-code list (WITHDRAWN,
HISTORICAL_NOT_LODGED, UNCOMPENSATED). **Prepare evidence** stays Draft
only. V4 §10.3, §10.4, and §10.7.

## 3.20.47 — 2026-09-16 · V4 §10.3 Review and Export CSV

V4 §10.3 is rewritten from two dense paragraphs into the full
review-and-export job on Curtailment claims: the 48-hour clock, the
**Review** drawer field-by-field, **Prepare evidence**, **Export CSV**
versus **Evidence bundle CSV**, and every `curtailment-claim-1` column
against the §10.2 wind fixture. Frozen `#103-the-clock-and-evidence`
stays; aliases `#93-…` / `#173-…` remain; `#103-review-and-export-csv`
appends. Glossary adds `g-evidence-bundle`.

## 3.20.46 — 2026-09-14 · V4 §9.5.5 Members walk on Outcomes

V4 §9.5.5 is rewritten from a smashed six-row **Quick reactions**
table into an operator walk on Allocation → **Outcomes · settled**:
Conserved first, then Members **Demand / Allocated / Share / ARF**,
then hours only if the buyer asks *when*. Frozen
`#955-quick-reactions` stays; aliases `#855-reactions` /
`#955-reactions` remain.

## 3.20.45 — 2026-09-14 · V4 §9.4 Outcomes conservation; §9.5.0 Members columns

V4 §9.4 **Conservation & rounding** is rewritten as the Outcomes
receipt proof (`/org/generator-sites/:id/strategy/allocations?month=`):
click path, receipt vs Rules draft vs Forecast paper, who/when, the
1 kWh identity, and where the stamp lives (badge, Members footer,
waterfall ticks, Roll-up, hour chart, exhaustion strip, Hour sort,
Explanations). Frozen `#94-conservation-rounding` stays. V4 §9.5.0
teaches **Demand**, **Allocated**, **Share**, and **ARF** as period
kWh and percentages (Share is of generation, not of demand).

## 3.20.44 — 2026-09-14 · Outcomes Hourly waterfall: sticky header, 10 rows

Allocation → Outcomes **Hourly waterfall** (`#ipp-allocations-waterfall`)
keeps column labels sticky and shows ten hour rows
(`#ipp-allocations-waterfall-scroll`); extra hours scroll. V4 §9.5.3.

## 3.20.43 — 2026-09-14 · Dashboard Forecast evidence fold and 6-row lists

Dashboard **Forecast evidence** (skill, providers, Grid Code packs) is a
closed fold (`#ipp-forecast-evidence-quality`), the same chrome as
Availability detail. **Forecast skill** keeps sticky column labels and
shows six rows (`#forecast-skill-scroll`); extra rows scroll.
**Grid Code forecast packs** also shows six rows (`#so-pack-scroll`).

## 3.20.42 — 2026-09-14 · Forecast skill / packs move to Dashboard

**Forecast skill**, **Compare providers**, and **Grid Code forecast
packs** leave Allocation → Forecast and sit on **Dashboard** chapter 5
inside operating evidence (`#ipp-forecast-evidence-quality`), under the
144-hour weather panel. V4 §8.1.10 stays as a frozen-id bridge. V4 §11.6
holds the on-page table. V4 §16.8 / §16.9 retarget the click path.
XML download remains `/strategy/forecast/so-pack/<id>.xml`.

## 3.20.41 — 2026-09-14 · V4 §8.1.8–§8.1.10 and running example

V4 §8.1.8 and §8.1.9 are rewritten so a non-engineer can say what
**Forecast said, settlement did** and **Rolling outlook** are for, what
each number means, and what to do. §8.2, §8.3, §8.4 and §8.6 are marked
as one running example (same plant, same 16,000 MWh book, 14,208 then
17,500). §8.5 stays the picker and is labelled *not the example*.
§8.1.10 is a three-row table for **Forecast skill**, **Compare
providers**, and **Grid Code forecast packs** (live ids and empty
copy; deep teaching still §16.8 / §16.9). Frozen heading ids stay.
`#8-running-example` appends at the gate (distinct from frozen
`#8-running` on §13).

## 3.20.40 — 2026-09-14 · V4 §8 Forecast rewrite · §9.6 Outcomes receipt

V4 §8 is rewritten to the live Allocation → **Forecast · next month**
story (`IppForecastLive`): sticky mode bar and Explanations, headline
+ bridge (owe is CO, not ED; SELLING / FULLY SUBSCRIBED are amber),
cascade columns (Covered, Flags, P90 dry, Surplus footer), methodology
stamp (no per-buyer `min(ED)→CO` list), FG / HAG rails, **Forecast
said, settlement did**, **Rolling outlook**, and a bridge to skill /
Grid Code packs. Frozen ids `#8-forecast` / `#7-forecast` and
`#81-…`–`#88-…` stay; `#818-forecast-vs-settled`,
`#819-rolling-outlook`, `#8110-evidence` append.

V4 §9.6 is rewritten from a one-table cheat sheet into twelve labelled
Outcomes pictures (Conserved, error, empty, ARF, Fixed soft, Surplus,
provisional, Claims, stack vs meter, exhaustion, Roll-up, provenance).
Heading id `#96-ch9-cheat-sheet` and aliases `#86-cheat-sheet` /
`#96-cheat-sheet` stay.

Glossary adds `g-forecast-vs-settled`, `g-fulfilment`,
`g-p90-month-runs-dry`, `g-rolling-outlook`. `g-treatment` Explained-in
retargets who-may-claim from “V4 §9.6” to **V4 §10.6**
(`#96-who-may-claim` alias unchanged). `g-sm-seasonal-model` now
points at §8.1.2 / §8.2.

## 3.20.39 — 2026-09-14 · Forecast heading drops AES list

The Forecast mode heading no longer prints the AES / AM / CO … cluster.
**Explanations** (`#allocation-explanations-open`) is the lookup: one
A–Z list of Allocation terms (AES through Surplus). V4 §7, §8 and §9
and glossary `g-allocation-tab` drop the heading-cluster teaching.

## 3.20.38 — 2026-09-14 · Allocation Explanations drawer

Rules, Forecast and Outcomes share an **Explanations** control on the
mode switch (`#allocation-explanations-open`). It opens a right-hand
drawer of Allocation abbreviations and terms — the Forecast AES
cluster, the three tiers, ARF, Conserved, and amber **reached Surplus
— did not run dry**. Mentioned in V4 §7, §8 and §9. Glossary
`g-allocation-tab` records the control.

## 3.20.37 — 2026-09-14 · V4 §7.9 amber means did not run dry

The Rules-rail exhaustion strip (`#hierarchy-exhaustion-strip`) now
labels amber **reached Surplus — did not run dry**, so leftover is
not read as a warning that the cascade emptied. V4 §7.9 and the §7.7
dry-strip picture quote the new legend. Glossary
`g-where-the-cascade-runs-dry` records the same mark. Hover is
unchanged (*every tier served — surplus left over*).

## 3.20.36 — 2026-09-14 · V4 §7.7 and §7.8 rewritten for operators

V4 §7.7 is rewritten from the three-column cheat sheet into twelve
labelled screen pictures (what you see, what it means, what to do) so
a non-engineer can read the Rules board. §7.8 keeps every limit
(draft vs live, one buyer, new joins, Fixed cap, trailing demand,
Effective day, viewers, dry strip, no Remove) as ten numbered blocks
in short sentences. Frozen ids
`#77-what-good-looks-like-seller-cheat-sheet` and
`#78-caveats-and-honest-limits` stay. Cascade-dry teaching remains
§7.9. Mermaid on §7.7.

## 3.20.35 — 2026-09-14 · V4 §7.9 Where the cascade runs dry

V4 §7 now teaches the Rules-rail card **Where the cascade runs dry**
on `/org/generator-sites/:id/strategy/hierarchy`: click path from IPP
Sites → Strategy → Allocation → **Rules · hierarchy**, the 24-cell
exhaustion strip, typical-day vote (most common SAST clock hour),
tooltips, grey *no settled hour*, and that the strip is the last
settled month — not the draft preview. Existing §7.1–§7.8 numbers
stay. Glossary adds `g-where-the-cascade-runs-dry` (plus
`g-cascade-runs-dry` / `g-exhaustion-strip` see-alsos). Primary
heading id `#79-where-the-cascade-runs-dry`. Mermaid + pipeline-spine.

## 3.20.34 — 2026-09-14 · V4 §7.1 one allocation-mode table

V4 §7.1 now has a single table for **PRIORITY**, **PRO_RATA**,
**FIXED**, and **Surplus**. The two earlier tables (meaning / how
served / typical buyer, and order / short-hour / what cannot happen)
are amalgamated so Surplus sits with the three tiers. Surrounding
prose no longer implies two tables. Chapter stays §7. No Mermaid.

## 3.20.33 — 2026-09-13 · V4 §2.6 Export CSV and Recompute now

V4 §2.6 now teaches the Fleet title-row buttons **Export CSV**
(`#fleet-export`, `GET /org/fleet.csv`) and **Recompute now**
(`#fleet-recompute`): where they sit (top right, no tooltip), what
each does in order, what “done” looks like, what they do not do,
empty / stale / 404 edges, and who may click. **Recompute now** queues
`RunFleet` for this organisation (not Overview **Run Forecast Now**);
the nightly 03:15 pass is the same worker while you sleep. Export
dumps today’s KPI keys, active sites, and pair sources as quoted
UTF-8. Primary heading id `#26-export-csv-and-recompute`;
`#26-risk-run-and-export` / `#25-…` / `#185-…` remain aliases.
Drawers stay under §2.2–§2.5. Glossary `g-ipp-fleet` Explained-in
adds §2.6. No Mermaid.

## 3.20.32 — 2026-09-13 · V4 §2 four story chapters as 2.2–2.5

V4 §2 now lists the four Fleet story chapters as `###` sections so they
appear in the volume TOC: **The sales opportunity** (§2.2), **Who the
fleet depends on** (§2.3), **Does a bigger fleet help?** (§2.4), and
**The next chapter** (§2.5, with each **Review** row). §2.1 stays the
glance opener and four-chapter map. Former §2.5 **Risk run and export**
is §2.6. Correlation labels, counterparties, membership, and story-drawer
chrome are folded (not standalone `###`); old `#22-…` `#23-…` `#24-…`
`#25-risk-run-and-export` `#26-fleet-story-drawers` ids remain as
`<a id>` aliases. Sales-plan, How sure are we?, buyer exposure, VaR,
Understand the estimate, and chapter 04 Reviews are not thinned. No
Mermaid.

## 3.20.31 — 2026-09-13 · V4 §2 What the risk estimate means

V4 §2 chapter 03 **Understand the estimate** (drawer title **What the
risk estimate means**) now teaches a made-up day or month of the fleet,
VaR-95 as a shortfall against the average leftover (95 of 100 / worst
5), one-day versus one-month as separate samples, what to do with the
tiles, and every **Distribution data** field for **1 day** and
**1 month** (Horizon, P05, P50, P95, dates, empty states). Glossary
extends `g-value-at-risk` and adds `g-p05-p50-p95-margin`. Seeded
R 30 / R 720 and R 1,680 versus R 720 stay. Existing §2.1–§2.6 and
`#18-your-fleet` aliases stay. No Mermaid.

## 3.20.30 — 2026-09-13 · V4 §2 See buyer exposure, adverse basis

V4 §2 chapter 02 **See buyer exposure** now teaches what modelled
exposure is (not an invoice), every buyers-table column, and the
centred **Adverse basis** cell: `p90 (short) — replacement expensive`
versus `p10 (long) — leftover cheap`. Short is replacement at the high
price tail; long is leftover at the cheap tail — the book's bad case,
not the buyer's invoice. Glossary adds `g-adverse-basis` and extends
`g-modelled-exposure`. Existing §2.1–§2.6 and `#18-your-fleet` aliases
stay. No Mermaid.

## 3.20.29 — 2026-09-13 · V4 §2 Volume correlation, estimated and n

V4 §2.1 **How sure are we?** now teaches **Volume correlation** on
Assumption Sources: when a pair is **estimated** versus
**default — no history yet** or **manual**, and that **n** is the
overlapping hours actually used (example `estimated (n = 720 h)` =
720 hours = 30 × 24; 720 is the floor, not the six-month window).
Glossary `g-volume-correlation` is extended; §2.2 stays the badge key.
No Mermaid.

## 3.20.28 — 2026-09-13 · V4 §2 Fleet story chapters and drawers

V4 §2 teaches the four on-page Fleet chapters in full: **01** sales
opportunity plus **Review the sales plan** and **How sure are we?**;
**02** buyer dependence plus **See buyer exposure**; **03** sites added
together versus combined fleet, Value at Risk, one-month VaR-95, and
**Understand the estimate**; **04** each **Review** row. Existing
§2.1–§2.6 and `#18-your-fleet` aliases stay. Glossary adds combined
fleet, diversification benefit, modelled exposure, sites added together,
story drawer, and volume correlation; VaR names the
loss-relative-to-expected convention. No Mermaid.

## 3.20.27 — 2026-09-13 · V4 Fleet is §2; Sites holder is §3

V4 now opens the portfolio before a single plant: **Your fleet** is §2;
**Sites** is a holder chapter (§3) whose first teaching is former
**Getting in — the IPP strategy area** (§3.1; old §2.2 tabs are §3.2).
Overview–Capture shift one number (old §3–§17 become §4–§18). Battery
and plant live stay §19–§20. New heading ids match the visible numbers;
every previous id (`#18-your-fleet`, `#2-getting-in`, `#3-overview`,
`#9-curtailment-claims`, `#17-curtailment-claims`, `#10-dashboard`,
`#9-dashboard`, `#17-capture-and-your-ppa`, `#16-capture-and-your-ppa`,
and the Overview 3.4–3.7 aliases) remains as an `<a id>` alias.

## 3.20.26 — 2026-09-13 · V4 §3.4–§3.7 Overview panels as subchapters

V4 §3 now lists four Overview panels as `###` subchapters so they appear
in the volume TOC: **Value of your generation hours** (§3.4), **Who buys
what you've sold** (§3.5), **Weather outlook** (§3.6), and **Price vs
cost, on one line** (§3.7). Existing §3.1–§3.3 numbers stay; old
`#322-value-of-generation-hours`, `#who-buys`, `#weather-outlook` and
`#price-vs-cost` ids remain as aliases. §3.2 still describes the layout
and bridges to the new homes.

## 3.20.25 — 2026-09-13 · V4 Curtailment is §9, Dashboard §10

V4 chapter order now matches the IPP Strategy tabs (Overview · Sales ·
Allocation · Curtailment · Dashboard). **Curtailment claims** is §9;
**Dashboard** is §10; former §10–§16 (guard, running, reference, MEC,
forecast, technology, capture) are §11–§17. Fleet, battery and plant
live stay §18–§20. Published heading ids keep the new numbers; every
previous id is kept as an `<a id>` alias.

## 3.20.24 — 2026-09-13 · V4 §3.3 stacked LCOE cards; §4 how to view HAF

V4 §3.3 puts the **LCOE** and **Replacement cost** field cards on
separate rows so each table is full width. V4 §4 drops the green Note
that said HAF was no longer a tab, and teaches how to open the
capacity widget: Overview **Safely contractable**, then **Sales →
Pricing tools → Firm viability · safe capacity**. Existing §3.3 and
§4 anchors are unchanged.

## 3.20.23 — 2026-09-13 · V4 §3.2 Overview generation hours, buyers, weather, price

V4 §3.2 now teaches the four Overview blocks under the unsold profile in
detail: **Value of your generation hours** (`#ipp-capture`), **Who buys
what you've sold**, **Weather outlook**, and **Price vs cost, on one
line**. Existing §3.2–§3.3 anchors are unchanged; `#33-the-capture-card`
is a pointer. Glossary adds generation-hour value.

## 3.20.22 — 2026-09-13 · V4 §3 Overview five-KPI fold removed

V4 §3 Overview no longer teaches a folded **All five KPIs** row. Realised,
Achieved, Unsold, Revenue HHI and vs LCOE stay on the gap hero, buyers meter
and price rail. Existing §3.1–§3.3 and `#all-five-kpis-folded` anchors are
unchanged.

## 3.20.21 — 2026-09-13 · V4 §3.2 plant assumptions fold

V4 §3.2 now teaches the Unsold profile fold **Solar PV / Wind / …
assumptions & forecast basis** (`#ipp-plant-assumptions`): why it exists, profile vs
default, P90/P50, and how to read Solar PV, Wind, Hydro, Thermal and
Hybrid tiles. Existing §3.2 and §15 anchors are unchanged. Glossary adds
plant profile.

## 3.20.20 — 2026-09-13 · V4 §3 Overview next best actions

V4 §3 now teaches **Next best actions** directly under the gap hero (the
% of plant still for sale card), before the unsold profile. Existing
§3.1–§3.3 anchors are unchanged.

## 3.20.19 — 2026-09-13 · V4 §2.2 strategy tabs

V4 §2.2 now teaches the five IPP strategy tabs in UI order: **Overview ·
Sales · Allocation · Curtailment · Dashboard**. Allocation is one tab
entry; Rules, Forecast and Outcomes remain modes on `#allocation-mode-bar`.
Existing §2.2 and Allocation-mode chapter anchors are unchanged.

## 3.20.18 — 2026-09-10 · V4 §18 fleet story

V4 §18 now teaches the IPP Sites **Fleet** tab as a four-chapter narration (sales opportunity, buyers, diversification, next chapter), with KPI tiles, correlations, counterparties and VaR in right-hand drawers. Existing §18.1–§18.5 anchors are unchanged; §18.6 is appended. V2 §4.1 now sends the Fleet tab to that story and keeps the directory landing on **Sites**. Glossary updates IPP Fleet and adds Value at Risk.

## 3.20.17 — 2026-09-10 · V4 §17 curtailment claims, in full

V4 §17 now teaches the claim end to end: what it is, how an ended instruction creates the draft, how deemed energy is calculated, how to lodge and record payment, and who may lodge versus only read. Existing §17.1–§17.5 anchors are unchanged; §17.6–§17.8 are appended. Glossary adds curtailment claim and curtailment regime.

## 3.20.16 — 2026-09-09 · IPP Sites Fleet / Sites tabs

V2 §4.1 and V4 §18 now teach the IPP Sites room tabs: **Fleet** (default, `/org/ipp-sites`) and **Sites** (`/org/ipp-sites/sites`) with a site count. `/org/fleet` still opens the Fleet dashboard.

## 3.20.15 — 2026-09-09 · V4 §18 one fleet dashboard

V4 §18 now teaches a single `/org/fleet` dashboard: no Dashboard / Counterparties / Sites tab bar. §18.1 treats **Generation profile** as a fifth IPP Sites-style tile on `#fleet-kpis`. §18.3 places **Counterparty exposure across sites** on that page. §18.4 keeps membership teaching on IPP Sites **Record departure**. §18.5 puts **Export CSV** and **Recompute now** on the title row. Existing §18 anchors are unchanged.

## 3.20.14 — 2026-09-09 · V2 directory cards open a detail drawer

V2 §3.1, §4.1 and §5.2 now teach the quiet fleet card (identity, subtitle, inline vitals) and the right-hand **detail drawer** for plumbing, verdict, tiles, Move and navigation chips. V3 §2.3 follows the same drawer. Existing §3.1, §4.1–§4.8 and §5.2 anchors are unchanged.

## 3.20.13 — 2026-09-09 · V2 §4.1 card border matches badge fill

V2 §4.1 and §4.8 now teach that an IPP Sites card's left border uses the **technology badge background** (not the badge letters), solid while Active and dashed while Open, Inactive or Closed. Existing §4.1–§4.8 anchors are unchanged.

## 3.20.12 — 2026-09-09 · V2 §4.3A map overlays and network service provider

V2 §4.3A now teaches the Identity map's **Site** / **Point of connection** overlay ticks (show or hide markers; a click still places the node) and the Connection & Network **Network service provider** select. §4.3 no longer describes a locked empty operator box. Existing §4.1–§4.8 and §4.3A anchors are unchanged.

## 3.20.11 — 2026-09-09 · V2 §4.3A Same as site location

V2 §4.3A now teaches the onboarding **Same as site location** tick: it copies the plant pin onto the point of connection, and a later map click or drag unticks it. Existing §4.1–§4.8 and §4.3A anchors are unchanged.

## 3.20.10 — 2026-09-09 · V2 §4.3A identity map point of connection

V2 §4.3A teaches the onboarding Identity map's Site / Point of connection switch: click an empty map to place the electrical-node marker, and the longitude / latitude fields follow. §4.3 now locks only the plant pin after registration. Glossary adds point of connection. Existing §4.1–§4.8 anchors are unchanged.

## 3.20.9 — 2026-09-09 · V2 §4.1 IPP Sites toolbar, Active chrome, Edit

V2 §4.1 now puts Import intervals and Add New Site on the search / Status / Technology / Name row, and teaches Active-card technology borders plus the Active chip set (Sales Desk · Dashboard · Contracts · Meter). §4.3 teaches Edit as prefilled onboarding that updates the same site. §4.8 names the Active chip and border change. Existing §4.1–§4.8 anchors are unchanged.

## 3.20.8 — 2026-09-09 · V2 §4.8 generator site Activate / Deactivate

V2 §4.8 teaches the Open → Active → Inactive shop-front badge on IPP Sites, and §4.1 names the Activate / Deactivate chips. Existing §4.1–§4.7 anchors are unchanged. Glossary adds generator site status.

## 3.20.7 — 2026-09-08 · V2 §4.1 IPP Sites status filter

V2 §4.1 now names the Status filter on the same row as Search sites (Active, Open, Inactive, Closed). Existing §4.1 anchor is unchanged.

## 3.20.6 — 2026-09-08 · V4 §18 fleet tiles match the directory strip

V4 §18.1 now describes the four IPP Fleet KPIs as the same compact tiles as IPP Sites, without a technology-mix band above them. Existing §18 and §18.1 anchors are unchanged.

## 3.20.5 — 2026-09-08 · IPP Fleet room and interval-import modal

V4 §18, V2 §7.7 and V8 §3 follow the shipped chrome: **IPP Fleet** is a Wheeling sidebar room above IPP Sites (`/org/fleet`); the Your-fleet card is gone; IPP Sites opens interval import in a modal. Existing §18 and §7.7 anchors are unchanged. Glossary adds IPP Fleet.

## 3.20.4 — 2026-09-08 · V2 §7.7 interval import, in plain language

V2 §7.7 now teaches when to import interval files, the wb-interval-1 JSON and CSV schemas, a worked OffTaker C sample, the all-or-nothing upload path, and the refusals. Existing §7.7 anchor is unchanged. Glossary adds wb-interval-1. No routes, workers or exports were added.

## 3.20.3 — 2026-09-07 · V19 §11.1 what webhooks are for

V19 §11.1 now opens with what a webhook is for, an `invoice.issued` worked example, and a table of every topic: what happened, why you would subscribe, and whether Your webhooks actually knocks today. Existing §11 and §11.1 anchors are unchanged. No routes, workers or exports were added.

## 3.20.2 — 2026-09-07 · V19 §11 feeds, in plain language

V19 §11 now teaches what a feed is (named pipe, family, grain, mode, policy), describes each family and seeded pathway, and walks `/ops/feeds`, Configuration **Your feeds**, webhooks / dead letters, and plant TELEMETRY. Existing §11 and §11.1 anchors are unchanged. Glossary adds feed, family, grain, mode, policy, webhook and dead letter. No routes, workers or exports were added.

## 3.20.1 — 2026-09-06 · Foundation audit repairs

The Contracts register now reviews and pins lost-margin notice assumptions before serving. Scenario Lab has an organization controls drill; S17 records day-2 refusal and day-4 gate-miss evidence. Settlement explanations and the weather comparison display are restored. S11 setup refusal reports are JSON-safe, and shared book icons include FLEET. No routes, workers or exports were added.

## 3.20.0 — 2026-09-06 · Foundation Stage 11

Plant telemetry adds the push API, historian CSV mirror, mock feeds, scoped consent, the Plant now panel and plant register. Measured intraday decisions, battery charge anchors, today's available capacity, provisional MEC warnings and immutable curtailment traces remain separate from settlement meters. V4 appends §20, V2 §11 and V11 §17; V12 and V19 describe the simulator and four workers. Catalogue: 158 LiveView routes, 118 routed modules and ten exports. P11M2 vendor clouds remain not opened — trigger unmet, checked 2026-09-06.

## 3.19.0 — 2026-09-06 · Foundation Stage 10

Battery dispatch now supports an explicitly chosen cycle-life curve, effective-dated capacity evidence, per-hour contracted reserves and daily wear/cycle-cap audit rows. Intraday plans preserve executed hours and rebase the remaining schedule after weather updates or battery instructions. V3 adds §10.8–10.10, V4 adds §19 for the owner's battery contract, and V7 §5 explains capacity revenue. Owner-only health, cost, availability and reserve revenue stay off the trader's page. Catalogue: 157 LiveView routes, 117 routed modules, ten exports. Existing worker schedules are unchanged.

## 3.18.0 — 2026-09-06 · Foundation Stage 9

Organisation fleet books, effective-dated site membership, versioned correlation assumptions, correlated profile and VaR aggregation, fleet KPIs, dashboard/counterparty/sites views, CSV export, IPP landing card and the daily fleet worker. V4 adds §18; V2, V3, V19 and the clock catalogue describe membership and scheduling. Catalogue: 156 LiveView routes, 116 routed modules, ten exports.

## 3.17.0 — 2026-09-06 · Foundation Stage 8

Feed registry and effective-dated policies; quality, vintage and revision provenance on wheeling meters; atomic canonical imports; persistent signed webhooks and dead letters. V19 appends §11 because Stage 1 owns §10. V2, V6 and V11 describe the new controls. Catalogue: 153 LiveView routes, 115 routed modules, nine exports.

## 3.16.0 — 2026-09-06 · Foundation Stage 7

Curtailment claim versions, D9 methods, warning and escalation clock, frozen evidence, provisional/final reconciliation, loss events and annual exposure. Adds the IPP Curtailment page, SO Claims tab and Dispatch column, scoped read API, CSV and explicitly mocked channel. V4 appends §17 because §15 and §16 already cover technology and capture; V10 adds §7, with settlement and Scenario Lab notes. Catalogue: 151 LiveView routes, 113 routed modules, eight exports.

## 3.15.0 — 2026-09-06 · Foundation Stage 6

Weekly issued-forecast skill, source comparison, book diversification and sampler evidence; hourly Grid Code XML packs with a bundled XSD and mocked delivery; optional Open-Meteo ensemble spread and Solcast quantile requests. V4 §14.8–14.9, V3 §11.9, V7 §4 and V19 §3 explain the screens, provenance and schedules. GD6 remains open. Catalogue: 150 LiveView routes, 112 routed modules, seven exports.

## 3.14.0 — 2026-09-05 · Foundation Stage 5

Trading controls, dated automation policy, six submission checks, emergency stops, independent approvals, actor sessions and annual evidence export. V8 Approvals is §21 because §20 already documents FX publications; its existing anchor is preserved. Route catalog: 150 LiveView routes, 112 routed LiveView modules and six catalogued exports.

## 3.13.0 — 2026-09-05 · Foundation Stage 4

Capture benchmarks, floor conventions, provenance, acceptance/DAM-capture distinctions, the Sales and vPPA comparators, and the seven-step margin bridge with separate statement exports. V4's existing technology chapter stays at §15; capture is §16. No routes added. The solar-glut example is corrected to 33.81% from its actual hourly quantities.

## 3.12.0 — 2026-09-05 · Foundation Stage 3

- V4 §15 and V2 §4.7 explain optional plant profiles, hybrid conservation and dispatch economics.
- V16 §9 covers hydrology observations, source evidence, provider refusals and the fourth shock.
- V19 documents fuel prices and both workers; V18 §4.5 covers proposed settlement-derived fuel activity.
- V2 §8.4 and V3 explain fuel references and peaker cover; V18 §5 corrects the worked example to the 60% basic allowance.
- Two new routes are reconciled at 148 routes / 111 LiveView modules.

## 3.11.0 — 2026-09-05 · Foundation Stage 2 contract devices

- V5 adds device capture, physical Termination step 12, and the register's notice lifecycle.
- V6 explains interval upside, chronological strikes, measured availability damages and final payments, with the R2,840 and 800 MWh examples.
- V4 covers measured-availability acknowledgement and the Sales capacity evidence line; V15 preserves full WER above a CfD strike.
- Existing anchors are preserved: the new V5 subjects append at §4.8–4.10 and the V4 warning at §10.6 because the requested numbers already exist.

## 3.10.3 — 2026-09-05 · Foundation Stage 1

- V19 §10 and §7 explain readiness, liveness, token-protected metrics and pending key rotation.
- V19 §3.3, V16 §3 and V8 §20 cover FX fetch schedules, provenance, calendar refusals and live gates.
- BRP scorecards say acceptance rate; the two unwritten overview gauges are removed.

## 3.10.2 — 2026-09-03 · Card details

- **V2 §3.1, §4.1, §5.2** — the status badge moves into the card header; the
  PPA count chips and the icon with the public / private dot are gone; the
  trader card lists its Trading Units inline (no count) and offers *Register
  with Market* only while it has none; no navigation chip is preselected; an
  **Archive** chip (Inactive for sites, Suspended for pools, with a confirm,
  hovering rose rather than green) joins every card, becoming **Activate** on
  an archived card; search, filter and sort sit under the fleet tiles.

## 3.10.1 — 2026-09-03 · Landings without the register

- **V2 §3.1, §4.1, §5.2** — the folded register tables are gone. Every card
  now carries the operational chips the rows held: network badge with the
  municipality name, the BRP cell with the **Trading Unit** id and its
  **market zone** colour dot (trader pools list every unit inline), *Register
  with Market* / *No Market Zone*, PPA counts, MEC and *No BRP* badges, the
  live-infrastructure icon, and the **address**, which opens the site map.
  Search, filter and a name sort sit above the cards; the new-registration
  button (site or pool wizard) sits in the landing header. Cards, their
  navigation chips and the fleet tiles highlight on hover.

## 3.10.0 — 2026-09-03 · Fleet landings on IPP Sites, OffTaker Sites and Trader Pools

- **V2 §3.1, §4.1, §5.2** — each directory opens with a **fleet landing**: a
  verdict written from the numbers, four fleet tiles in the persona's words
  (seller: installed, sold share, realised price, revenue · buyer: demand
  served, contract price against the grid, saving, cover · trader: margin,
  spill, coverage, margin at risk against its limit), a *Needs you* rail
  ranked across the fleet, and one card per site or pool with a verdict,
  three vitals, its top move and chips to Overview, the Desk, the Dashboard,
  Contracts, Meter and Edit. Sites and pools with nothing to judge are
  *not wired* cards, not rows of zeros. The register table is unchanged and
  folded underneath. Fed by `WB.Strategy.Glance`, loaded after the register.
- Corrections: off-taker cover counts SIGNED and ACTIVE contracts as well as
  AGREED PPAs (a site with eight active contracts read 0 MW); trader fleet
  figures exclude memberless pools; the IPP Gap card and its derived unsold
  figure are gone; the trader table gains an id, a name sort and a
  ten-column empty row; the off-taker table gains the sticky head.
- The first-visit "set up strategy" confirm is gone — the Strategy button and
  the card's Overview chip seed the book and open it. `/org/generator-sites`
  forwards to `/org/ipp-sites`.
- **V3 §2.3, §12.2** rewritten to match; COVERAGE; GLOSSARY: fleet landing,
  glance, not wired, committed capacity.

## 3.9.1 — 2026-09-03 · Dashboard folds trimmed to two

- **V3 §11** — the four folds that carried the old panels are gone: the
  margin heatmap and price triple, the BESS and nomination tiles, the
  coverage gauges, market panel and alerts feed, and the risk panel. The
  chapters, the Book and the Bid Desk already tell what they told. Two
  folds remain because they add information the chapters do not: forecast
  quality by member (Chapter 4) and the sampled distribution fan with its
  absent / stale notice (Chapter 5). §11.1–§11.6 are kept as stubs.

## 3.9.0 — 2026-09-03 · Trader Dashboard rebuilt as the story of the pool

- **V3 §11** — the ten numbered panels become six chapters, the trader's
  twin of the off-taker and IPP dashboards: a verdict written from the
  numbers and a **kept-of-achievable** dial; **Performance** (margin by
  month since inception — settled bar, plan outline, achievable tick — with
  a one-line diary per month); **Where it leaked** (a fixed loss ledger with
  an owner per row); **Who we traded with** (the trading web: generators,
  traders, off-takers, SAWEM and the grid, settled solid, wired dashed, with
  a ranked counterparty table); **Health over time** (eight vitals × every
  month against the limit in force, with an events row); **Outlook** (twelve
  months at P50 and P90 with the first move dotted in, MaR and VaR as facts);
  **Next moves** (ranked by Rand, each opening the Desk, Nominations, the
  Book or the Bid Desk; *Run the back-cast* in one click). Every month is
  graded settled · preliminary · engine · forecast, and artefact months are
  flagged and excluded. The old panels survive inside folds with their ids.
- Settled statements now drop REVERSED re-runs (the Book's check already
  did); the back-cast also writes each month's nomination and forecast
  quality scores onto that month's ACTUAL snapshot, so they read as a series.
- **V3 §2** tab table; COVERAGE row; GLOSSARY: kept of achievable, loss
  ledger (trader), trading web, health strip, month grade.

## 3.8.0 — 2026-09-03 · The trader Desk: Simulations, Nominations and Exposure become one flow

- **V3 §8** — the Simulations tab becomes the **Desk**, the trader's twin of
  the IPP Sales Desk and the off-taker Procurement Desk, two-sided: a step
  rail (Position → Candidates → Basket → Strategy board → Commit); a headline
  from the numbers; a **Sell need** and a **Buy need** card, each with its
  **Option 0** (SAWEM P50 less the imbalance haircut for the long side, the
  grid top-up for the short side) and a *The desk says* verdict; a signal row
  under every candidate (absorbs / covers, routes, badges, + Basket); the deal
  form and its result in a right-hand **deal drawer**; a bottom **basket** that
  runs several legs as one book; the **Strategy board** (buy legs → pools →
  sell legs, co-ordination, residuals, KPIs before → after, exposure per
  counterparty); a **Compare** table with Option 0 in row 0 and every row's
  residual spill valued at SAWEM; the counterparty exposure table; and the
  **Commit** step (proposals per leg, Bid Desk for the residual, the
  nominated members' plans). New §8.8–§8.10.
- **V3 §9** — Nominations keeps its URL and workflow, reached from the Desk's
  Commit step and titled *Desk — Commit · Nominations*; the tab is gone.
- **V3 §2, §11, §22** — the trader tabs are Overview · Book · Desk ·
  Dashboard; `…/strategy/exposure` forwards to the Desk (carrying `date`);
  the exposure method in §22.5 points at the Desk section.
- COVERAGE rows; GLOSSARY: Desk (trader), Option 0 (trader), Basket,
  Strategy board, Need card.

## 3.7.0 — 2026-09-03 · Battery dispatch as one day under the Book

- **V3 §10.4** — the dispatch page opens with the Book's thread strip, a
  breadcrumb naming the run and a way back to the forecast; a headline written
  from the selected day; facts with the run's figure under each; the day as
  moves (charge · discharge · held · idle) with the rejected pairs beneath; the
  hourly schedule folded; and a right rail with the month heat-calendar, the
  asset's parameters and what the battery feeds in the Book.

## 3.6.0 — 2026-09-03 · Trader Book: Rules · Forecast · Outcomes

- **V3 §2** — the trader tabs are Overview · Book · Simulations · Nominations ·
  Dashboard · Exposure. Pools, Runs, Chains and BESS fold into **Book**, one
  thread strip across three modes with a ranked issues rail.
- **V3 §4 Book · Rules** — the pools board gains the thread strip, a headline
  from the numbers, an outcome badge on every card (the cap or band filled
  with what the latest forecast did), wires between the columns for the rules
  that steer energy, and three ranked moves. Editing is unchanged.
- **V3 §5 Book · Forecast** — the runs list becomes a run picker; the mode
  reads one run: five tiles, where the supply goes, where the margin is made
  and lost, the typical day per pool, the caps table, the battery fold and
  the line-ledger fold. Run detail (§7) and the battery page (§10) sit under
  the Book tab.
- **V3 §5A Book · Outcomes** — the settled statement with procured-against-sold
  bars and the book check, the month's money, the chains (§5B) opened
  underneath, and the forecast-against-settled drift with a verdict.
- Routes `/allocations`, `/chains` redirect; `/book?month=` opens Outcomes;
  COVERAGE rows; GLOSSARY: thread strip, outcome badge, run picker.

## 3.5.0 — 2026-09-03 · Off-taker Dashboard rebuilt as the story of the site

- **V3 §13.4** — the five snapshot panels (Savings, Risk, Coverage, Price,
  Alerts) and the Run Forecast Now empty state are replaced by a six-chapter
  story from the site\'s first metered month: was demand met (monthly load
  by source with the served strip), which supply was most reliable and
  cheapest (landed cost, reliability, badges, SAWEM as a labelled model),
  what it cost and what could have been saved (all-grid waterfall and the
  left-on-the-table ledger), the future-proof outlook with the SAWEM
  share rule (P90 landed below the grid, capped at 30 % of the residual),
  six health vitals, and three ranked moves. Every month graded. Retired
  sub-section anchors kept as stubs.
- Hub card, COVERAGE row, GLOSSARY: served strip, left on the table, SAWEM
  share rule.

## 3.4.0 — 2026-09-03 · Off-taker Procurement rebuilt as the Procurement Desk

- **V3 §13.2** — the two-tab buy workbench is replaced by the five-step
  **Procurement Desk**, the buyer\'s twin of the IPP Sales Desk: the need
  band (uncovered block, grid TOU price line, price rail) with **Option 0 ·
  stay on the grid** as the baseline; candidates with fit, coverage,
  readiness and risk chips; the purchase builder with the contract-route
  switch (physical · virtual · via trader), term sliders and three
  recommended risk terms (spill, curtailment, shortfall); the assessment
  against the grid (saving and security scores, five risk gauges,
  break-even); the compare table and scatter with the grid as row 0; and
  multi-seller **strategies** simulated as one book. Anchors kept.
- **V3 §13.3** — the coverage rationale is now a **tool** beside the
  builder; the chapter is rewritten around the desk\'s one-sentence coverage
  target (hedge N % · buy nothing more when Cu ≤ 0). Maths unchanged.
- **V3 §13.1, §13.4, §21; V5 §2, §9** cross-references; hub card; COVERAGE
  row; GLOSSARY: Procurement Desk, Option 0 (stay on the grid), saving
  score, security %, strategy.

## 3.3.0 — 2026-09-03 · Off-taker Sources folded into Overview

- **V3 §13.5** — the off-taker **Sources** tab is retired. Where a month\'s
  settled energy came from is now the **Settled** view of the Overview\'s
  supply block, beside the forecast chart it is the twin of, on the same
  typical-day axis and colours. The view is rebuilt to read as one story:
  a headline sentence, a mix bar whose colours the table and chart reuse,
  the reconciliation stated as arithmetic against the meter with the reason
  when it does not match, the sources table, and the delivered-by-source
  chart with the grid filling to the load line. The old route redirects and
  carries the month.
- **V3 §12, §13.1** tab counts; hub card; COVERAGE row.

## 3.2.0 — 2026-09-03 · V4 IPP rewritten against the new strategy area

- **Four tabs.** V4 §2 now teaches **Overview · Sales · Allocation ·
  Dashboard**. HAF is a capacity check inside Sales (and a fold on the
  Dashboard); Hierarchy, Forecast and Allocations are the **Rules ·
  Forecast · Outcomes** modes of one Allocation tab. Old routes redirect;
  chapter numbers and every cross-linked anchor are kept (EVOLUTION §7).
- **V4 §3 Overview** — the gap hero (sold vs still for sale, worth at
  LCOE, safely contractable), ranked next best actions, the unsold
  profile with tomorrow's P50, buyers, weather outlook, price rail; the
  five KPI cards fold. §3.3 LCOE & params unchanged.
- **V4 §4 HAF** — reframed as the capacity check: where the widget lives
  now, the Dashboard fold (§4.8), the annotated widget (§4.9). Factor
  maths §4.1–§4.7 unchanged.
- **V4 §5 Sales** — the five-step **Sales Desk**: the gap and its market
  value (Option 0 · hold and sell on SAWEM), who could absorb it (fit,
  absorption, route chips, filters), build the deal (route switch, term
  sliders, advice), profit and risk vs holding (advantage / risk scores,
  five gauges, break-even strike), compare and decide (scatter, ranked
  table, same-terms filter). TOU pricing (§5.7) and firm viability (§5.8)
  become pricing tools; their maths is unchanged.
- **V4 §6 Allocation · Rules** — the cascade board with outcomes on each
  card, the draft preview against the last settled month, the exhaustion
  strip, versions rail and Changes panel. Tier maths §6.1–§6.2 unchanged.
- **V4 §7 Allocation · Forecast** — the story layout (headline, bridge,
  verdict) mapped onto the report's five sections; forecast-vs-settled
  and rolling outlook added. Formulas and worked months unchanged.
- **V4 §8 Allocation · Outcomes** — the settled-month replay: tier split,
  members, claims, by-hour chart with exhaustion strip, waterfall.
- **V4 §9 Dashboard** — rewritten as the site's story since
  commissioning: verdict and confidence bar, the river of money, sunlight
  to margin, where the money came from, the loss ledger and heat strip,
  six vital signs, the availability fold (§9.7), three ranked moves.
- **V4 §12.4** routes updated; hub card, COVERAGE rows and glossary
  (Sales Desk, hold option, advantage, risk score, Allocation tab, money
  grade) updated.

## 3.1.0 — 2026-09-01 · Volume reorder V15–V20 + V0 expansion

- **Volume order.** Product volumes after Analytics now read: **V15 Virtual
  Wheeling** (was V17) · **V16 Regional Trading / SAPP** (was V19) ·
  **V17 Carbon** (was V18) · **V18 Carbon Tax Compliance** (was V20) ·
  **V19 Operations & Administration** (was V15) · **V20 TODOs** (was V16).
  Legacy slugs (`v15-operations.html`, `v17-virtual-wheeling.html`, …)
  redirect.
- **V0 orientation.** New chapters §9 SAPP, §10 carbon (certificates,
  credits, tax, venue), §11 weather. Clock (§6) lists every configured
  cron run (62 lines / 35 workers) and AshOban trigger. Object model, cast
  and spine updated.
- **V1 §7** master timetable gains weather, carbon, billing, insight and
  MO cadence rows that were missing from the published clock.
- **V19 §3** ops catalog no longer claims “17 cron cards”; IdmMonitor is
  `04/10/16/22` (not `*/30`); weather, carbon, billing and MO cadence
  cards added. COVERAGE Matrix 3 lists every crontab line.

## 3.0.0 — 2026-08-31 · Webill Green rebrand

- **Product name.** The manual is now the **Webill Green** user manual
  (hub title, orientation prose, footer, logo, redirect pages). Energy-domain
  *wheeling* (Virtual Wheeling, Wheeling Charges, V17) is unchanged.
- **Palette.** Chrome tokens `--webill-gold*` become `--webill-green*`
  (`#059669` / `#047857` / `#d1fae5`); ink is `#212a34`; paper is `#fbfefc`.
  Header/nav chrome moves to the green-slate family. Figure card semantics
  (supply gold, demand green, zone register) stay. Mermaid `themeVariables`
  follow the same green anchors.
- **Hub TOC.** `vol-v20` now rewrites to `v20-carbon-tax.html`.

## 2.78.0 — 2026-08-31 · V8 §3 the organisation module sidebar

- **Organisation sidebar** — rebuilt to the same module shape as the MO
  console: Configuration is a row of its own, then WHEELING · TRADING ·
  CARBON · MONEY as icon-tiled module rows whose rooms are indented
  beneath them, the room you are in a solid amber chip. A **Quick jump**
  box filters rooms and modules as you type; the action bar carries Sign
  out and the collapse chevron above the organisation chip.
- **Shorter rows.** The module supplies the context, so the rows read
  Month, Room, Tax, Market. The rooms keep their names: TRADING › Month
  is still the Market Month (page title: After Delivery), MONEY › Room is
  the Money Room.
- **V8 §1.1, §1.3, §3, §3.1, §3.2, §3.3** — the module table, the short
  rows against their room names, quick jump, and the refreshed icons.

## 2.77.0 — 2026-08-31 · V9 §12 the MO module sidebar

- **Market Operator sidebar** — rebuilt to the module shape: each group is
  an icon-tiled row you open and close, its desks indented beneath it on a
  hairline rail, the desk you are in a solid amber chip. A **Quick jump**
  box filters desks and modules as you type. The action bar under the
  brand carries Switch application, Sign out and the collapse chevron.
  Desk icons follow the new design.
- **V9 §12.1, §12.2, §12.3–12.6** — the module row, the action bar, quick
  jump, and the refreshed icon column. The Market day table no longer
  lists Bidding as a sidebar row: it is Market Desk's six tabs.
- The other consoles (SO, Eskom, Municipal, operator portal) are
  unchanged.

## 2.76.0 — 2026-08-31 · V9 §12 the MO sidebar becomes collapsible

- **Market Operator sidebar** — Market day, Settlement, Eligibility and
  Reference are now collapsible groups, the same shape as the
  organisation sidebar: the group holding the room you are in opens
  itself, the console remembers your shape, and the desks scroll inside
  the sidebar instead of scrolling the page.
- **V9 §12, §12.1, §12.2** — the divider sentence becomes the
  disclosure behaviour, and the chrome table gains the group heading.

## 2.75.0 — 2026-08-31 · V8 §3 the sidebar becomes four groups

- **Organisation sidebar** — Configuration is pinned; the rooms below
  it are four collapsible groups (WHEELING · MARKET · SAWEM · CARBON ·
  MONEY). The group holding the room you are in opens itself; a closed
  group shows an amber roll-up of what is waiting inside; the shape is
  remembered per organisation.
- **V8 §3, §3.1, §3.2, §3.3** — rewritten as a caption of the real UI:
  the group table, what a sidebar number means (attention, never
  inventory), Billing's move to MONEY, Regional's row, and the
  disappearance of the Units/Groups row.
- **V8 §1.1, §1.3** — "lower block" becomes the MARKET · SAWEM group.

## 2.74.0 — 2026-08-31 · V8 §12.7 Imbalance split table and tiles

- **Bid Desk › Imbalance** — Split Table headers stay sticky;
  Vintage uses the timeline’s emerald badge; SE, IE, AE, SMP and
  Settlement Amount are centred. Header tiles print a sentence under
  each title, then the number.
- **V8 §12.7.1** — walkthrough names the four tiles and the Split
  Table.

## 2.73.0 — 2026-08-31 · V8 §12.7.1 Imbalance hour timeline

- **Bid Desk › Imbalance** — Unified Timeline uses the same vertical
  rail as Settlement: numbered amber nodes, `{HH:MM} SAST` badges on
  the left, **Metered Energy Entry** on the right.
- **V8 §12.7.1** — walkthrough names the timeline pieces.

## 2.72.0 — 2026-08-31 · V8 §12.7 Imbalance — what it is for

- **V8 §12.7** — Bid Desk Imbalance opens with what the room is for,
  how it fits the daily bid day (after Settlement and delivery), the
  three quantities (SE / IE / AE), who caused the gap, and the 5 %
  band cliff (19.100 MWh → R 810 vs 18.500 MWh → R 4,114.29). Screen
  walkthrough 12.7.1–12.7.4 unchanged.
- **Glossary** — Imbalance names the Bid Desk weighbridge as well as
  the §13 decision tree.

## 2.71.0 — 2026-08-31 · V8 §12.6.3 four pots · Settlement tile copy

- **Bid Desk › Settlement** — each header tile and each **Your
  day-ahead settlement** tile prints a short sentence under its
  title, then the number. Market Balancing now has a sentence.
- **V8 §12.6.1 / §12.6.3** — what each of the four day-ahead totals
  represents and displays (Energy market, Ancillary service recovery,
  Market Operator charges, Unsecured bad debt), and how they map to
  the header.

## 2.70.0 — 2026-08-31 · V8 §12.6 Settlement — what it is for

- **V8 §12.6** — Bid Desk Settlement opens with what the room is for,
  how it fits the daily bid day (Submissions → auction → chalkboard
  → IDM → delivery → Imbalance → Month), a crate-docket metaphor, and
  the worked 18:00 hour (75 MWh × R 900 = R 67,500; wire cut at own
  offer). Screen walkthrough 12.6.1–12.6.5 unchanged.
- **Glossary** — Settlement names both the PPA job (V6) and the Bid
  Desk chalkboard (V8 §12.6).

## 2.69.0 — 2026-08-31 · V18 §23 · CT6 origination — programme close

- **V18 §14** — SOP lifecycle on `CarbonProject`: EA assignment,
  validation, verification; the §6 artefact map; verification-linked
  `Issuance.mirror/2` (MX0 success path).
- **V18 §9** — Certificate Desk **Projects** tab (no new live route).
- **V18 §23** — A worked trade, end to end: accrual → verified
  issuance → lot → listing → venue trade → COAS → the buyer's July
  pack. Appended; §1–§22 anchors unchanged.
- **COVERAGE** — Projects tab, origination resources, demo step
  **S23**. Live count unchanged at 142. CS1 remains the V16 TODO.
  Q2 mainnet participant still waits.

## 2.68.0 — 2026-08-31 · V18 §22 · CT5 CAD Trust

- **V18 §22** — The world's card catalogue: observer sync, double-count
  suspects that block listing and retirement, the Certificate Desk
  banner, testnet-first publishing, sparse-honest v2.0 mapping, dormant
  AEF hooks. Appended; §1–§21 anchors unchanged. Mainnet participant
  still waits on Q2.
- **V15 §9** — CAD Trust observer console (`/operator/cadt`), node
  deployment sizing, mirror-database option, testnet posture, key-ceremony
  pointers (never material).
- **COVERAGE** — new live route `/operator/cadt` (141 → 142). Demo step
  **S22** (CAD Trust hit-and-resolve) listed after S21. Oban cron 60 → 62.

## 2.67.0 — 2026-08-31 · V20 · CT4 carbon tax

- **V20 · Carbon Tax Compliance** — new volume: the tax explained,
  facilities and DA 185 licences, capturing the year, the section-6
  formula worked by hand (R18 172 000), offsets, the July pack, and
  what the platform will never do.
- **COVERAGE** — three new live routes: `/signup/carbon`,
  `/ops/carbon-participants`, `/org/carbon-tax` (138 → 141). Demo step
  **S21** (BrickCo) listed after S20. CS1 live tax-pack wording still
  waits.

## 2.66.0 — 2026-08-31 · V18 §21 · CT3 registry connectors

- **V18 §21** — Registries connected: the connector seam, the Mock
  default, sync runs and the evidence rule, the CONFIRMED rung, the
  COAS pipeline stage by stage. Appended; §1–§20 anchors unchanged.
- **V15 §9** — Registry connector operations (fixture capture,
  credential environment names, COAS manual procedure).
- **COVERAGE** — Certificate Desk **Pipeline** tab patches onto
  `/org/certificates` (no new live route; S14 counts unchanged). CS2
  closed.

## 2.65.0 — 2026-08-31 · V18 §20 · CT2 the venue

- **V18 §20** — Trading carbon on the platform: the book and buckets,
  FIRM against INDICATIVE, RFQs, uniform-price auctions, escrow
  (never-promised-twice), fees from the register, the trading
  agreement, and what the venue will not do. Appended; §1–§19 anchors
  unchanged. Live venue trading still waits on CS1.
- **COVERAGE** — new live route `/org/carbon-market` (137 → 138).
  Certificate Desk **Trading** tab patches onto `/org/certificates`.
  Demo step **S20** (carbon venue) listed after S19.

## 2.64.0 — 2026-08-31 · V8 Bid Desk Settlement · V18 §19 CT1

- **V8 §12** — Settlement and Imbalance are Bid Desk destination rooms
  (one Trading Day, one Trading Unit), beside Submissions, IDM and
  Forward. Daily remains the front door. Old `#133-settlement` and
  `#134-imbalance` anchors still resolve.
- **V8 §13** — Market Month is only the Billing Period wallet and the
  monthly file-join. The old Recon tab lives on that page
  (`#135-recon`). Settlement and Imbalance are no longer chapter 13.
- **V7 §4 / §6 / §8 / §14**, **V10 §3.2**, glossary, coverage —
  screens pointed at the rooms they actually occupy.
- **V18 §19** — two new sections on the chapter CT0 opened (do not begin
  §20: that title is reserved for the venue, which has not landed yet):
  registering an external holding (three-rung ladder, serial-free
  sentinel, evidence upload) and recording a bilateral trade (pledge,
  invoice on the billing rail, fee documents from the register, payment
  delivers in the same transaction).
- **COVERAGE** — no new live route (137 unchanged). Three certificate
  export routes confirmed in the catalogue (`export_route_count` 5).
  Demo step **S19** (carbon market) listed; S18 remains the Regional
  desk.

## 2.63.0 — 2026-08-31 · V8 Bid Desk Forward · V18 §19 CT0

- **V8 §12.2.4** — Forward (calendar-days) sits with Submission and
  IDM in the Trading Unit card **Bidding** group.
- **V8 §12.5** — Bid Desk Forward room (`/org/brp/bid-desk/forward`):
  what a standing order is, every chrome item, the two-figure table
  (sticky headers, `1 Sept '26 00:00` clock, column tips), and a
  worked 18:00 hour. The old pocket card is **§12.6**.
- **V8 §18.2** — points at §12.5 for the screen walkthrough.
- **V18 §19** — Your certificate portfolio: lots, custody states, estimated-grade
  tiles, drill-down (split tree, journal, serial trail), the pool book.
  Appended; §1–§18 anchors unchanged. Closes CT0.
- **COVERAGE** — Portfolio tab, `CertificateLot`, `CertificateMovement`,
  certificate `SupplyCoverage`. No new route.

## 2.62.0 — 2026-08-30 · V19 / V8 / V15 / V10 · Stage 13 SAPP regional (T13M0–T13M5)

- **V19** — Volume shipped: the pool and membership, four markets and
  gates, currency risk, the wheeling path, the monthly shadow statement,
  the Regional desk, reference card and terms. Trader seat. Closes G12.
- **V8 §19** — Regional desk beside the Bid Desk; which gate belongs to
  which market.
- **V15 §3 / §4** — FX and SAPP transports pinned to in-process mocks;
  `full_demo` includes **S18**.
- **V10 §5** — Network Model **Usage** tab (declared capability minus
  firm usage). No new SO route.
- **V13 §3** — Document denomination: every document, invoice, account
  and statement names an ISO 4217 currency; the default is ZAR and the
  denomination is fixed at issue.
- **COVERAGE** — live count 137 (`/org/regional` and rates / exposure /
  nominations, on top of Stage 12's `/org/trader-pools/:id/strategy/exposure`).
  Two new LiveViews versus Stage 11. SO usage is a tab, not a route.
- **V16** — V19 chapter. Hub index and `build.sh` `vol-v19`.

## 2.57.0 — 2026-08-30 · V3 / V12 · Stage 12 Stochastic risk

- **V3 §11** — Risk panel sits four VaR tiles beside Margin-at-Risk; missing
  or stale distributions are labelled, never shown as `R 0.00`. Fan chart
  reuses the existing banded line. Closes stage 12 (gap G11).
- **V3 §22** — From sensitivity to distribution: two confidences, two
  horizons, expected shortfall, the fan, counterparty exposure at
  `/org/trader-pools/:id/strategy/exposure`, and the explicit statement that
  a VaR breach alerts and does not gate. Q6 remains open; pinned by
  `no_bid_gate_test.exs`.
- **V12 §17** — Scenario Lab stochastic mode: run a scenario N times; the
  spread is a rehearsal and never persists a `RiskDistributionSnapshot`.
- **COVERAGE** — live count 133 (`…/strategy/exposure` on top of Stage 11's
  132). Oban cron 60 / 33 distinct workers (`RunStochastic` at 02:45, after
  `RunNightly` and before `SubmitDamBids`).

## 2.56.0 — 2026-08-30 · V7 / V8 / V9 · Stage 11 forward register (T11M2)

- **V7 §20.6–§20.8** — Remaining transfer capability (defined once, for
  stage 13), the four participant API endpoints, and what the Market
  Operator does between submission and registration. Closes T11M2 of
  gap G6.
- **V8 §18** — Register-this-schedule on an ACTIVE physical agreement,
  and the Bid Desk forward-position panel (two figures, never collapsed).
- **V9 §27** — `/mo/forward` register (validate → register) and the
  capacity view, including what the `:ASSUMED` stamp means.
- **COVERAGE** — live count 132 (`/mo/forward`, `/mo/forward/capacity`,
  `/org/deals/contracts/:ppa_id/forward`, `/org/brp/bid-desk/forward`);
  two new LiveViews; four API operations. SAWEM API 78.

## 2.55.0 — 2026-08-30 · V7 / V9 · Stage 11 residual clearing (T11M1)

- **V7 §20.5** — Worked Trading Period: forward base, residual spot,
  Contracted Energy. The identity holds per period.
- **V7 §5.7 / §6.1** — Contracted Energy is the most recent IDM (or DAM
  constrained residual) **plus registered forward volume**.
- **V9 §6.8** — Residual clearing: a registered forward schedule is a
  constant on C1 and is netted from C17's limit. Priority over spot is
  arithmetic, not a tie-break. Formulation `MO-SPEC-4.3/2026-08` is a
  §9.5(7) amendment. Closes T11M1 of gap G6.
- **COVERAGE** — clearing model `forward_schedules`, C1/C17 encoding,
  Contracted Energy redefinition. No new routes (T11M2).

## 2.54.0 — 2026-08-30 · V7 · Stage 11 Forward Physical Market (T11M0)

- **V7 §20** — The Forward Physical Market: weekly and monthly standard
  products, what registering a schedule commits you to, when the
  registration gate closes relative to the day-ahead gate, and what a
  refusal means. The register and the door into it; clearing the residual
  and the screens arrive in T11M1 / T11M2. Closes T11M0 of gap G6.
  Nothing in T11M0 rests on an open Q- or GD-item.
- **V7 §18** — Forward-market registration is no longer a dormant
  capability key; the guard names the phase clause.
- **COVERAGE** — `WB.Sawem.ForwardSchedule` / `ForwardScheduleProfile`
  and `WB.Sawem.Forward.Gate` mapped to V7 §20. No routes yet (T11M2).
  Catalogue is twenty-six parameters (`forward_registration_lead_seconds`).

## 2.53.0 — 2026-08-30 · V8 · What a lodgement is

- **V8 §12.4.6** — A lodgement taught as the receipt for what
  you handed in (not the market reply). Columns, last-wins,
  empty state, and the 18:00 `TU-IPP-A-PV` slip. Glossary
  **Lodgement (IDM)**.

## 2.52.0 — 2026-08-30 · V8 · Redeclare form suggestions

- **IDM Re-declare modal** — branded header. Declared available
  capacity is suggested from this hour's forecast. Reason is a
  pick-list (forecast, outage, derate, fuel, SoC, load, own)
  plus a free-text note that is always yours.
- **V8 §12.4.4 / §12.4.5** — field list matches the form.

## 2.51.0 — 2026-08-30 · V8 · What redeclaring is

- **V8 §12.4.4** — Redeclaring taught in ordinary English: the
  restaurant-booking metaphor, what the Re-declare form sends
  (and does not), and a seven-step 18:00 worked hour (75 / 60 /
  20 / 40 × R 945) with figures. §12.4.5 keeps the field list
  and points here for the numbers.

## 2.50.0 — 2026-08-30 · V8 · Carry or Re-declare timeline

- **V8 §12.4.4** — Carry or Re-declare Schedule taught node by
  node: Target Baseline (contracted energy), the right-hand
  decision card, and the circular-arrow icon (opens Re-declare
  with the hour filled in). No component-library name.
- **IDM UI** — hover tooltip `#idm-position-{n}-redeclare-tip`
  on that icon.

## 2.49.0 — 2026-08-30 · V8 · IDM auction table columns

- **V8 §12.4.2** — The Intraday Market card table is `#idm-gates`
  (Iteration, Gate, Closes in, Hours rem., State). No SMP or
  Collar on that card. Hours rem. and State taught in full.
  `#idm-prices` is a later card, only after an auction publishes.

## 2.48.0 — 2026-08-30 · V8 · IDM Redeclare and Consent

- **V8 §12.4.5** — Redeclare and Consent taught as two jobs: what
  each button does, when to press it (and when not to), and the
  click-through — modal, refusals, flash, lodgements, and what
  does *not* change. Consent remains a day flag, not a volume
  patch.

## 2.47.0 — 2026-08-30 · V8 · Accounts Vesting tab

- **V8 §14** — Accounts is five tabs, not one page. New **§14.11 Vesting**:
  what a vesting contract is from the BRP's chair, why the tab sits on
  Accounts (money on the statement, not a bid), a peak-hour worked
  example on `BRP-SIM-IPP-12`, and the unvested empty state.
- **V8 §3** — five-rooms table lists the Vesting tab.
- **V7 §19** / **V9 §21.13** / glossary — bridge to the BRP screen.

## 2.46.0 — 2026-08-30 · V9 · What a vesting contract is

- **V9 §21.13** — The Vesting book now teaches the instrument before the
  screen: why a legacy plant needs a walk onto spot, when a determination
  creates a contract (and when it does not), the declining curve, and a
  one-hour R 650 / SMP worked picture. Glossary term **Vesting contract**.

## 2.46.0 — 2026-08-30 · V4 · Stage 10 Weather-driven forecasting

- **V4 §14** — Where your forecast comes from: the mock provider, power
  conversion, P50/P90, live adapters behind configuration, the stale
  badge, the drift loop into the existing intra-day decision, and what
  tomorrow's bid does when the feed is down. Closes stage 10 (gap G8).
  Q5 (Open-Meteo default live adapter, Solcast premium solar, Mock
  mandatory in every environment) is pinned by `weather_test.exs`.
- **V4 §9** — IPP dashboard weather panel (forecast · committed ·
  nowcast, or an explicit empty state).
- **V3 §1.3** — `:MODEL` series sits below a manual upload and above the
  synthesised shape.
- **COVERAGE** — live count unchanged at 128 (panel is inside
  `IppDashboardLive`; bid-desk provenance is inside `BidDeskLive`).
  Oban cron 59 / 32 distinct workers (`FetchWeatherCycle`,
  `FetchWeatherDrift`).

## 2.45.0 — 2026-08-29 · V7 / V9 · Stage 9 Vesting contracts

- **V7 §19** — The vesting instrument: a regulator-imposed two-way CfD
  on a legacy generation asset, the declining MW-per-TOU schedule, the
  delivered-energy cap, and the participant's hedged-versus-merchant
  panel at `/org/market-accounts/vesting`. Closes stage 9 (gap G3).
  Q3 (counterparty configurable, defaulting to the CPA at write) is
  pinned by `vesting_contract_test.exs`.
- **V9 §21.13** — Eighth **Vesting** tab (`/mo/participants/vesting`):
  the book of determinations, counterparties, and declining curves.
  Dormant contracts name the activating phase.
- **V7 §18** — Capability table gains vesting contracts.
- **COVERAGE** — live count 128 (`/mo/participants/vesting`,
  `/org/market-accounts/vesting`).

## 2.44.0 — 2026-08-29 · V17 · Stage 8 Virtual Wheeling

- **V17 · Virtual Wheeling** — published. The registered VW account,
  15-minute allocation, the consolidated 45-day refund, municipal
  off-takers, the organisation console at `/org/virtual-wheeling`, and
  the Eskom VWA register at `/eskom/virtual-contracts`. Closes stage 8
  (gap G1). Q1 (15-minute grain) and Q2 (excess routing is opt-in by
  naming a pool) are pinned by `vw_grain_validator_test.exs` and
  `vw_excess_routing_test.exs`.
- **V5 §9.9** — How a VW portfolio differs from the per-contract
  Virtual PPA the Deal Room already sells.
- **V6 §8** — The WER kernel is the same arithmetic; portfolio mode
  feeds it from `VwAllocation` rows.
- **V13 §5** — The refund is one more numbered, immutable Eskom credit
  note at `:VW_ACCOUNT` grain.
- **V15 §1.1** — `/eskom/virtual-contracts` is no longer a placeholder.
- **COVERAGE** — live count 126 (`/org/virtual-wheeling`); `/eskom/virtual-contracts`
  reclassified from Static to Rich State. Both consoles map to V17.

## 2.43.0 — 2026-08-29 · V11 / V9 · Stage 7 API security

- **V11 §2.1** — Rewritten: bearer JWT is required outside sandbox/test;
  mTLS and HMAC are opt-in per registration; `x-sawem-mpid` is
  sandbox/test-only. Curl samples in later chapters stay as shorthand
  and point here. Closes stage 7's documentation (gap G7).
- **V11 §14** — Internal MO↔SO header is sandbox/test-only; mTLS on the
  dedicated listener is the production path.
- **V11 §15.8** — Published sandbox `client_id`/`client_secret` and
  conformance test 21.
- **V9 §21** — Seventh **Credentials** tab (`/mo/participants/credentials`):
  issue, rotate and revoke OAuth, mTLS and HMAC credentials; audit feed.
  Registrations panel gains an **API auth** adoption column.
- **COVERAGE** — live count 125; controller routes 156; SAWEM API routes
  74 (`POST /api/v1/oauth/token`). V11 §16 endpoint index is 70 operations
  (token plus the three already-routed billing documents/registers ops).

## 2.42.0 — 2026-08-29 · V5 / V6 · Top-up energy contracts

- **V5 §4.4** — Physical wizard gains Step 11 **Top-up** for offtaker-buyer
  deals (`OFFTAKER_IPP` / `OFFTAKER_TRADER`): source, price basis, cap,
  notice, tolerance. A trader buyer keeps the original ten steps and
  edits the same fields on the pool membership form. A monthly cap
  without a source, and a trader-pool source without a named pool, are
  refused on both surfaces.
- **V6 §7.2.1** — `top_up_term_id` provenance on `:replacement_energy` /
  `:shortfall_penalty` lines. Three sourcing paths on real (`ACTUAL` /
  `NOMINATED`) shortfalls: trader-pool draw, Eskom-retail booking, and
  a market-order candidate through unmodified `IdmDecision`. Settlement
  detail names the source by contract reference.
- **COVERAGE** — no new route or LiveView. Live count is unchanged (124).
- **V14 §8** — `priv/insight/ontology.json` regenerated so `TopUpTerm`
  (and earlier-stage resources the artefact had drifted past) match
  `Ontology.emit()`.

## 2.42.0 — 2026-08-29 · V8 · Bilateral vs market and the ladder table

- **V8 §12.3.9** — Bid Desk Submissions documents the five
  Bilateral vs market figures (Offer, P10, CE(λ), P50, P90), what
  the risk-aversion slider actually moves, the three verdicts, and
  what the hourly ladder table is for (kitchen residual vs the
  Submission the Market Operator clears).

## 2.41.0 — 2026-08-29 · V13 · Bill reconciliation and load-shift

- **V13 §22** — Off-taker bill reconciliation: expected bill from
  intervals × the site's own tariff, ingest of the utility bill at
  line grain, per-register findings, a dispute hand-off on the existing
  wheeling flow, and a load-shift savings card. Reached at
  `/org/billing?tab=reconciliation`.
- **V13 §12** — Billing Hub tab table gains Reconciliation.
- **V13 §13** — One-line pointer to §22 from the residual explanation.
- **COVERAGE** — no new route or LiveView. Live count is unchanged (124).

## 2.40.0 — 2026-08-29 · V8 · Bid Desk Submissions matches the live page

- **V8 §12.3** — Submissions (`/org/brp/bid-desk/submissions`) is
  redrafted against the UI: how you get here, gate open vs closed
  vs unpublished, the three top cards, the five price-curve cards,
  and the day-ahead period table. The old unit drawer, TUID picker
  form, and **Open** action are gone.

## 2.39.0 — 2026-08-29 · V8 · Bid Desk TU icons wait for selection

- **V8 §12.0.4 / §12.2** — Bidding and After Delivery icons on a
  Trading Unit card stay disabled until that unit is selected. Hover
  says *Select this trading unit first*.

## 2.38.0 — 2026-08-29 · V2 · Generate Reads for coal and gas

- **V2 §4 / §7** — **Generate Reads** on an empty generator meter now
  shapes coal as baseload and gas as morning/evening peak, so overlay
  SIM IPP meters such as `MTR-NERSA-SIM-GEN-12` fill like solar and
  wind. **V15 §4.7** notes that S17 market intervals do not fill that
  explorer.

## 2.37.0 — 2026-08-29 · V8 · Bid Desk system condition once

- **V8 §12.1 / §12.2** — SO system condition on `/org/brp/bid-desk` is
  only the banner under the Trading date bar. The Daily **System
  condition** stat card is gone.

## 2.36.0 — 2026-08-29 · V5 / V6 · Market-indexed CfDs

- **V5 §9.6.1 / §8.10** — A virtual PPA can net the strike against the
  published SAWEM System Marginal Price (`SAWEM_SMP` or `SAWEM_TOU_AVG`)
  instead of Eskom’s gen-wheeling credit. The default is unchanged. A
  short TOU-average worked figure sits on the virtual thread.
- **V6 §7.4 / §8.7 / §9.11** — Formula, the ledger branch (WER does not
  fire on a market-indexed leg), and the statement’s index label plus
  realised average. Settlement detail reads the stored snapshot.
- **COVERAGE** — no new route or LiveView. Live count is unchanged (124).

## 2.35.0 — 2026-08-29 · V7 / V15 · Market-phase enforcement

- **V7 §18** — Admission at `CONTRACTS_ISSUED` and bid intake read the
  phase × capability matrix. Refusals name the phase, the determination,
  and the bilateral wheeling aggregator alternative. `SUB_PHASE_INELIGIBLE`
  and `SUB_BELOW_WHOLESALE_FLOOR` join the submission catalogue.
- **V15 §8.7** — A phase change is a register publish, not a deployment.
  Check `/mo/rules`, `/`, and `/demo` before a sales demo. Live route
  count is unchanged (124).

## 2.34.0 — 2026-08-29 · V7 · Market phase register and matrix

- **V7 §18** — `market_phase` is a twenty-fifth register row, resolved like
  every other Annexure 2 figure. The phase × capability matrix is seeded
  for Phase 1 (everything open, nothing thresholded).
  `forward_registration` is seeded enabled and unread on purpose.

## 2.33.0 — 2026-08-29 · V6 / V15 · Non-bypassable charges

- **V6 §4 / §9 / §10** — Electrification subsidy and NERSA regulatory
  levy are effective-dated `NetworkRate` rows, charged once per physical
  period. `non_bypassable?` is data on the row. Settlement detail, the
  statement, and the billing document label those lines. `LevyConservation`
  plus billing preflight refuse an omitted levy; the monthly worker raises.
- **V15 §1.4** — Wheeling Charges (`/eskom/loss-factors`) gains a fourth
  table for the two national levies. The non-bypassable flag is fixed Yes.
  Live route count is unchanged.

## 2.32.0 — 2026-08-29 · V4 · Runtime MEC enforcement

- **V4 §13** — Generator sites (`/org/ipp-sites`) show an **MEC breach**
  badge when metered export has run over the connection-agreement limit.
  Money Room Panel 5 (`/org/money`) shows the same episode as a detector
  card. An `:excess_charge` settlement pair posts only when a penalty
  rate is on file; no rate is a correct silence, not a zero.

## 2.31.0 — 2026-08-29 · V8 · Bid Desk Daily matches the screen

- **V8 §12.0.4 / §12.1 / §12.2** — Bid Desk Daily (`/org/brp/bid-desk`)
  has no tab strip. The Trading date bar, seven stat cards, silent
  line, and Trading Unit cards (every label, message, and icon button)
  are documented as they render.

## 2.30.0 — 2026-08-29 · V8 · Auto DAM

- **V8 §5 / §12 / §16** — Auto DAM is a BRP registration switch
  (`#brp-auto-submit-dam` on Market → Info), on by default. Bid Desk
  shows whether the 03:00 worker will send (`#bid-desk-auto-dam`,
  `#org-dam-auto-submit`, and the draft banner). Off means Submit
  yourself before 10:00, or the Market Operator rolls over.

## 2.29.0 — 2026-08-28 · V14 · Analytics (MV3)

- **V14 §12** — estimated versus realised on the same card, measured by
  the same detector. Unmeasurable is first-class. Accuracy is per
  method version. Monthly advice is opt-in and silent when there is
  nothing to report.

## 2.28.0 — 2026-08-28 · V14 · Analytics (MV2)

- **V14 §12** — recommendations with a guarded lifecycle. The Rand is
  the detector's figure; ranking is labelled AI-proposed. Off, Panel 5
  is the deterministic subset. The platform never acts on a recommendation
  by itself.

## 2.27.0 — 2026-08-28 · V14 · Analytics (MV1)

- **V14 §12** — eight evidence-backed findings, carbon dormancy
  aggregated rather than duplicated, dismissal stored per organisation.
  Residual creep and escalation drift are not planner classes.

## 2.26.0 — 2026-08-28 · V14 · Analytics (MK4 + MV0)

- **V14 §11** — eval harness: four dimensions, thresholds committed before
  the first run, CI on Mock. The two-week QuestionLog review stays open.
- **R5** — eight detector classes enter MV1; residual creep waits on A1;
  escalation drift is not a planner class. Signed-interim, not countersigned.

## 2.25.0 — 2026-08-28 · V14 · Analytics (MQ3 + MK3)

- **V14 §7 / §9** — every figure on `/org/money` opens its lineage;
  the P&L statement PDF and fact CSV are a closed month by default,
  stamped PROVISIONAL when they are not.
- **V14 §11** — Ask the Money Room: seven read-only tools, citation
  post-check, Mock only. The box is off by default and is not on
  the critical path.

## 2.24.0 — 2026-08-28 · V14 · Analytics (MQ1 + ML1 + MK0)

- **V14 §7** — the verdict: cash and better-off lenses, a 13-month
  sparkline, and one waterfall from revenue to net. Traders see cash
  only; the better-off lens is suppressed, not zeroed.
- **V14 §5** — six further loss kinds against signed-interim R2
  sentences. Residual premium stays silent until A1 is countersigned.
- **R3** — data-boundary memo and LLM seam: Mock in every environment,
  allow-list as data, no real model call until legal countersigns.

## 2.23.0 — 2026-08-28 · V14 · Analytics (MQ2 + ML0 + MK2 + MA4)

- **V14 §5 / §7** — Panels 3–5 on `/org/money`: owed/owing gross from
  billing aging, the Loss Ledger with a display-only R100 floor, and
  deterministic findings. Verdict slots stay empty until MQ1.
- **V14 §6** — how the numbers prove themselves: invoiced facts must
  equal the registers to the cent, or the month is refused and the
  previous published set is kept.
- **V14 §10** — how the advisor finds context: typed org-month edges
  written with the fact build; R4 closed as not needed (p99 ≈ 13 ms).
- **R2** — seven remaining loss baselines recorded as signed-interim
  engineering recommendations; valuers stay unbuilt until countersignature.

## 2.22.0 — 2026-08-28 · V14 · Analytics (MA2 + MA3 + MK1)

- **V14 §4** — when the numbers refresh: fact build at 06:00 on the 1st,
  after invoices exist; unchanged `inputs_hash` writes nothing; residue
  is operator-only.
- **V14 §5** — money left on the table: four valued loss kinds whose
  baselines the contract or the Market Code already states; losses never
  join the P&L.
- **V14 §8** — the vocabulary: advisor-visible ontology generated from Ash
  domains, with a CI drift gate against the committed artefact.
- **COVERAGE** — FactBuilder cron, `LossFact` / valuers, and ontology
  catalogued; Oban cron count 20→54 / 17→27.

## 2.21.0 — 2026-08-28 · V14 · Analytics (MA1)

- **V14 §3** — where the numbers come from: a fact is one tagged Rand
  (org × month × grade × stream × counterparty × entity), three grades
  (invoiced / settled / estimated), P&L ex-VAT with VAT carried beside
  it, quarterly contracts making one month look expensive.
- **COVERAGE** — `PnlFact` `:create`, `for_org_month`, `for_org_period`,
  `by_stream` catalogued against V14 §3.

## 2.20.0 — 2026-08-28 · V14 · Analytics (MA0 + MQ0)

- **V14 §1** — volume opened: the organisation P&L and the Money Room,
  no longer a reserved stub.
- **V14 §2** — fourteen value streams, seats-aware: the same settlement
  line is a sale to one party and a purchase to the other.
- **V14 §7** — the Money Room at `/org/money`: period switcher (month,
  year-to-date, rolling 12 — no financial year), grade chips, empty
  state that does not invent `R 0.00`.
- **COVERAGE** — `/org/money` catalogued; live route count 123→124.

## 2.19.0 — 2026-08-28 · V15 §8 The demo dashboard

- **V15 §8** — new chapter: the Demo Dashboard at `/demo` — the landing page's
  demo tools (full demo data, simulated SAWEM market, trading months) moved
  into one room, plus set-up-everything, the built-world inventory, live
  push-driven progress and the daily start-up checks switchboard.
- **V15 §4.7 / §4.8** — the "from the landing page" procedures now point at
  the Demo Dashboard; the market card and month board carry them.
- **V15 §6.2** — bridge: **Catch up metering now** runs the S15 live profile,
  it is not a second path.
- **Hub** — V15 blurb names the Demo Dashboard.
- **COVERAGE** — `/demo` catalogued; `/org/market-accounts/bank|clearing|collateral`
  back-filled; route counts re-derived.

## 2.18.1 — 2026-08-27 · V8 §13 Market Month and §14 Accounts

- **V8 §13** — After Delivery rewritten as **Market Month**: Month
  first in the tab bar, then Settlement, Imbalance and Recon. Every
  tile, table, chart, hour timeline, instructed-energy drill-down,
  balancing leg, metering exception, query clock, heatmap and button
  in ordinary English. Frozen hash `#13-after-delivery` still lands
  here.
- **V8 §14** — Accounts rewritten field-by-field: cover cards and
  components, both answers to a cover call, replenishment window,
  Your money, every modal (Add funds / Pay / Pay by EFT / Request
  withdrawal), invoices, self-billing, cascade explainer, period
  statement, both ledgers.
- **V8 §12** — Bid Desk jumps and “after the last hour” now point at
  Market Month. Arithmetic still lives in V7 §4 / §5.
- **V16 §10** — After Delivery inventory closed; Accounts inventory
  closed; Billing field-by-field remains open.

## 2.18.0 — 2026-08-26 · V18 · Carbon

- **V18 · Carbon** — published. RECs, the certificate ledger, the
  Certificate Desk at `/org/certificates`, contract prices and warranty,
  invoicing of `:rec`/`:carbon` lines, dual-method Scope 2, Green
  Statement, detectors, and offset-project mechanics (CS1 eligibility
  still open).
- **V5 §4** — RECs & Carbon wizard steps list seven attributes (price,
  warranty, credit ownership, offset price).
- **V13 §3 / §7** — bridges to V18 for certificate lines and C1 VAT.
- **V16** — open-docs entry for V18 while CS1–CS3 close.

## 2.17.53 — 2026-08-26 · V8 §12 Bid Desk field-by-field

- **V8 §12** — Bid Desk rewritten as a full organisation-screen chapter:
  what the desk does; what the day-ahead market (DAM) and the intraday
  market (IDM) are, in ordinary English with worked pictures; why the
  three tabs exist; then every shared-chrome control, Daily tile, Silent
  units card, schedule table, per-unit card, Submissions table, book
  ladder (including the net-position chart), certainty-equivalent card,
  clip strip, §9.3 submission panel, drawer, IDM iteration chips, gates
  table, classification preview, hourly capacity chart, daisyUI
  carry/re-declare timeline, prices table, Redeclare / Consent
  modals, and lodgements (including Pricing basis and Status).
  Arithmetic still lives in V7 §4 / §5.

## 2.17.52 — 2026-08-26 · V8 Organization Market Bidding

- **V8** — published. How an organisation deals with the Market
  Operator and the System Operator. Comprehensive introduction, then
  five sidebar rooms: **Market** (every tab, card, table and
  operational button on Info, Account/Cover, Notices, SO, Registry,
  Standing Data, API), **Bid Desk**, **After Delivery**, **Accounts**
  and **Billing** (those four mapped tab by tab; arithmetic still in
  V7 / V13). Hub path for organisation bidders now lands here.
- **V8 §1.6** — four-picture mermaid: keep each stage to its own nodes
  and drop the first yellow card below the stage header so titles stay
  visible.

## 2.17.51 — 2026-08-24 · V9 §19 Billing tabs

- **V9 §19** — `/mo/billing` is seven icon tabs: **Overview** (lifetime
  invoiced / remitted / debit-noted, by month), then **Invoices**,
  **Remittances (SB)**, **Debit Notes**, **Notes**, **Correction**, and
  **Run**. The combined register is gone. Document tabs filter by
  direction and status, search by BRP / trading unit / organisation /
  number, and each exports CSV. Accounts invoice pots open **Invoices**
  and **Remittances (SB)**.

## 2.17.50 — 2026-08-24 · V9 §19 Billing

- **V9 §19** — new **Billing** chapter for `/mo/billing` (register,
  remittances, corrections, run status, document page). Dispute and
  later console chapters shift one number: Dispute §20, Participants
  §21, Registry §22, IPPs §23, Zones §24, Rules §25, Runs §26. Old
  hashes (`#19-dispute`, `#20-participants`, …) stay as spans.

## 2.17.49 — 2026-08-24 · §18 Billing Period picker

- **V9 §18.4** — Billing Period Settlement has a month picker
  (`#mo-billing-month`, `?settle=`). Cash position and the billing board
  follow that period; Credit/Debit keeps the same month across tabs.

## 2.17.48 — 2026-08-24 · §18 Accounts rewritten

- **V9 §18** — Accounts taught from the till up: why the three pots
  exist, how they inform the operator, then every tab, card, column,
  and control in ordinary English.

## 2.17.47 — 2026-08-24 · §18 Credit/Debit tab

- **V9 §18** — Accounts gains a **Credit/Debit** tab: Credit Cover
  Operations, Debit-note cascade, and Replenishment Window. Those cards
  are no longer on Billing Period Settlement.

## 2.17.46 — 2026-08-24 · §18 Billing Period actions

- **V9 §18** — Billing Period Settlement opens with three buttons:
  **NERSA Publish** (Settlement Calendar modal), **Download NERSA Pack**,
  and **Administered Settlement**. The calendar, pack, and administered
  cards are no longer stacked under the board.

## 2.17.45 — 2026-08-24 · §14 Billing register in rands

- **V13 §14** — `/mo/billing` register shows organisation name, period
  as `1 June 2026`, coloured kind and status badges, amounts in rands,
  and an eye that opens the stored PDF.

## 2.17.44 — 2026-08-24 · §18 Market invoices on Billing

- **V9 §18 / §13** — Invoice and self-billing pots on Accounts and
  Month open `/mo/billing` rows copied from the month's market
  invoices (same tax number and PDF). Opening the July register lists
  the documents Run the month raised.

## 2.17.43 — 2026-08-24 · §18 Ledger BRP and row hover

- **V9 §18** — Trading Clearing, Central Reserve, and MO Charge
  Transactions name the BRP and organisation (or Trading Unit) even
  when the bank row has no EFT, such as interest. Ledger, deposit, and
  movement-audit rows highlight on hover with a pointer cursor.

## 2.17.42 — 2026-08-24 · §18 Accounts filters

- **V9 §18** — Trading Clearing no longer lists designations under the
  balance (same card as Central Reserve). Movement Audit **Kind** and
  **Reason** are select lists; **Party** searches BRP, organisation, or
  trading unit.

## 2.17.41 — 2026-08-24 · §18 Accounts icon tabs

- **V9 §18** — `/mo/accounts` is six icon tabs: Billing Period
  Settlement, Trading Clearing, Central Reserve, MO Charge, Recent
  Deposits, Movement Audit. Ledger tables show the current month with a
  previous-month picker, organisation under the BRP, search, and a
  sortable `10 'Aug '26` date. Set Monthly Charge is a modal. Movement
  audit adds Date, rands, and centred cells.

## 2.17.40 — 2026-08-24 · §17 Balancing, why and when

- **V9 §17** — Balancing now teaches what the mechanism is and why the
  market needs it (schedule error, two stacks, BPB/BPS, MBA residual,
  preliminary vs official). **Run preliminary** and **Run official**
  each have what they compute, the Cadence bell, when to press them,
  and what they are not. The desk layout matches `/mo/balancing`
  (stage switch vs run, last-run cards, hour drawer, sortable stacks).

## 2.17.39 — 2026-08-24 · §17 Balancing stack sort

- **V9 §17** — Sold / Bought stack **Price** and **Volume** headers are
  sortable. Headers stay sticky; columns and values sit on the left.

## 2.17.38 — 2026-08-24 · §17 Balancing desk restyle

- **V9 §17** — `/mo/balancing` matches the balancing dashboard mockup:
  trading-day card with previous/next outside the date form, last-run
  outcome clocks, date badge, sun/moon hour grid, day-level MBA Net
  Settlement, and a restyled reserve inbox. Mock-only fields (per-hour
  MBA, calculation modal, SO feed, clause modal) are not invented.
  Run buttons, stage switch, hour drawer, and vintage gate are
  unchanged.

## 2.17.37 — 2026-08-24 · §17 Balancing stage badges

- **V9 §17** — Balancing mechanism shows **PRELIMINARY** / **OFFICIAL**
  and **PROVISIONAL** / **VERIFIED** as selected status badges (no
  count, no click). Degenerate, Daylight, and Night count buttons are
  gone. Alarms / metrics counts and the hour drawer are unchanged.

## 2.17.36 — 2026-08-24 · §17 Balancing hours and badge counts

- **V9 §17** — Balancing mechanism collapses stage, vintage, alarms, and
  daylight/night hours into titled count badges. The number opens a
  unique-badge modal. Hours are two equal rows (00:00–23:00); daylight
  **07:00–17:00** is sky, night is slate. Click an hour for a branded
  drawer with **Sold stack** / **Bought stack** tabs. Stacks stay
  anonymised.

## 2.17.35 — 2026-08-24 · §16 Metering desk restyle

- **V9 §16** — `/mo/metering` matches the metering dashboard mockup:
  action bar, intake banner, last-ingest / last-allocate cards, and a
  three-column verification board with pairing progress. Mock-only
  fields (interval stream, NEM12, latency) are not invented. Element
  ids are unchanged.

## 2.17.34 — 2026-08-24 · §16 Re-ingest and Allocate

- **V9 §16** — Metering now teaches what **Re-ingest** and
  **Allocate** each do, when to press them (late batch, empty
  ingest, pairing fix, D+7 vintage), the order, and what you get
  if you skip a step. They remain the same Cadence / cron
  callables; neither is **Run the day**.

## 2.17.33 — 2026-08-24 · §15 Notices table, period, New +

- **V9 §15** — Notices is a period table (`Type` badge, SAST
  `24 'Aug '26 10:20`, message). Default is the current month.
  **From** / **To** cannot invert. Type chips filter. **Date/Time**
  sorts. **New +** opens the Market Day publish modal.

## 2.17.32 — 2026-08-24 · §14 Cadence ledger status filter

- **V9 §14** — Ledger header counts (`#mo-cadence-status-filters`)
  filter the table by pending / due / ran / missed. **All** restores
  the day.

## 2.17.31 — 2026-08-24 · §14 Cadence ledger Due is sortable


- **V9 §14** — Ledger **Due** (`#mo-cadence-sort-due`) sorts earliest
  first, then latest. Rows with no due time sink to the end on
  earliest-first.

## 2.17.30 — 2026-08-24 · §14 Cadence ledger Due and run branches

- **V9 §14** — Ledger **Due** is SAST `23 'Aug '26 00:00`, not ISO8601.
  **Run the day** and **Run the month** sit as one branched pair
  (`#mo-cadence-run-actions`) and highlight on hover.

## 2.17.29 — 2026-08-24 · §15 Notices: what, who, every kind

- **V9 §15** — Notices in plain English: what a notice is, why one is
  created, who issues it and to whom. The tannoy form
  (`GENERAL` / `SYSTEM_STRESS` / `PRICE_CAP_EVENT`) stays the send
  desk. The catalogue lists every kind this product records or names
  (Daily ledger, event stream, credit cover, default, registry,
  counterparty, SO orders) and what happens if the recipient ignores
  it. Specified-but-not-yet-in-the-feed events are marked.

## 2.17.28 — 2026-08-24 · §14 Cadence: why it matters, who to hunt

- **V9 §14** — Cadence now explains why the ledger is the trading-day
  proof (gate → publish → IDM → meters → month), what goes wrong if you
  only watch Daily, the reading order, and who/what to hunt on the
  actual rows (`#mo-cadence-*`, `#mo-event-incidents`) before jumping
  to Submissions, Metering, Balancing, or Accounts.

## 2.17.27 — 2026-08-24 · §13.10 Settlement chart wash and Hours badges

- **V9 §13.10** — Settlement's 24-hour curve (`#dam-settlement-smp-chart`)
  centres the series legend, paints the peak mark in white, and washes
  daylight **07:00–17:00** with the sun/moon key
  (`#dam-settlement-smp-day-night-legend`). Hours **Σ |SG|**, **EPM**,
  and **CSC** are centred. Binding-constraint badges are colour-coded
  (capacity sky, consumption amber, security indigo).

## 2.17.26 — 2026-08-24 · §13.10 Settlement chalkboard restyle

- **V9 §13.10** — Settlement matches the day-ahead clearing mockup:
  KPI cards with left-edge accents, day-ahead residual + kinds board,
  24-hour SMP / Σ|SG| chart (`#dam-settlement-smp-chart`), searchable
  Hours table with CSV export, and the charges / notifications row.
  Solve, Publish, and the hour-lines drawer are unchanged.

## 2.17.25 — 2026-08-24 · §13.10 Settlement Hours: named marginal unit

- **V9 §13.10** — Hours **Marginal unit** shows the trading unit's
  official name with the organisation under it
  (`#dam-hour-{HHMM}-marginal-name`, `#dam-hour-{HHMM}-marginal-org`).

## 2.17.24 — 2026-08-24 · §13.10 Settlement hour lines drawer

- **V9 §13.10** — Hour lines (`#hour-lines-drawer`) uses the branded
  header. **TUID** shows the unit name with the organisation under it.
  **Qty** is two decimal places, with space before **Price**. Rows
  highlight on hover; column headers stay sticky.

## 2.17.23 — 2026-08-24 · §13.9 IDM lodgements: hover, sortable Period

- **V9 §13.9** — Lodgement rows highlight on hover with a pointer
  cursor. **Period** (`#idm-sort-period`) sorts the table; default is
  ascending clock.

## 2.17.22 — 2026-08-24 · §13.9 IDM lodgements: sticky TUID, org, bold amounts

- **V9 §13.9** — Lodgements `#idm-lodgements-table` keeps **TUID / BRP**
  sticky while you scroll. The organisation name sits under the TUID
  (and BRP code). **New DAC / DC**, **Estimated**, and **Cleared** MWh
  amounts are bold.

## 2.17.21 — 2026-08-23 · §13.12 Clear: equal timeline cards, bold times

- **V9 §13.12** — Published Hours and G5 Run Ledger are equal-width
  cards. Each timeline sits under the header, shifted right with a
  slight card margin. Hours show a bold clock label (no *Period*); G5
  shows a bold start time (no *Started*).

## 2.17.20 — 2026-08-23 · §13.12 Clear: hours and G5 cards; numbered circles

- **V9 §13.12** — Published Hours and G5 Run Ledger sit in cards (7 / 5)
  after the Clear day panel, matching the Clear reference headers. The
  daisyUI timelines inside are unchanged. Step *titles* stay unnumbered;
  the step *circles* show 1–4 again.

## 2.17.19 — 2026-08-23 · §13.12 Clear steps: no numbers

- **V9 §13.12** — Step titles stay **Unconstrained Ran** → **SO
  Constraints applied** → **Constrained Ran** → **Published**. DaisyUI
  no longer prints 1–4 inside the step circles (`data-content=""`).

## 2.17.18 — 2026-08-23 · §13.12 Clear security notice

- **V9 §13.12** — The network-model notice after the steps uses the
  reference info-alert chrome: **Security Notice:** label, info icon,
  `bg-info/10` border, underlined emphasis, and a mono chip for clause
  refs (`#clear-day-network-notice`).

## 2.17.17 — 2026-08-23 · §13.12 Clear steps without numbers

- **V9 §13.12** — Clear day steps read **Unconstrained Ran** →
  **SO Constraints applied** → **Constrained Ran** → **Published**. The
  daisy step circles still show the order; the titles no longer repeat
  `1 -` … `4 -`.

## 2.17.16 — 2026-08-23 · §13.12 Clear: hours and G5 as side-by-side timelines

- **V9 §13.12** — After the Clear day header and steps, Period / SMP /
  Marginal unit and the G5 ledger are daisyUI vertical timelines side by
  side. Binding constraints are a clickable count (modal, coloured by
  title). Steps read **1 - Unconstrained Ran** → **2 - SO Constraints
  applied** → **3 - Constrained Ran** → **4 - Published**, with the run
  time under each step when G5 has it.

## 2.17.15 — 2026-08-23 · §13.12 Clear day header: Settle modal

- **V9 §13.12** — Clear day (title, status, steps, Run both / Settle) is
  first on the tab. The trading date reads `15 'Jul '26`. **Settle**
  opens the §4 settlement-file form in a modal; it is no longer a card
  at the bottom.

## 2.17.14 — 2026-08-23 · §13.12 Clear: why it exists, Run both, Publish & reconcile

- **V9 §13.12** — Clear is taught as the G5 run room (not a second
  auction): why the two schedules sit here, when **Run both schedules**
  must be used (after the DAM gate, by 14:00 Publish), what it does not
  pin, and that **Publish & reconcile** is the monthly §4 file plus an
  immediate join — not a day-ahead clear. Consequences for
  participants, cadence, and Reconciliation are spelled out.

## 2.17.13 — 2026-08-23 · §13.11 Month tab matches the refactored screen

- **V9 §13.11** — reading order and the annotated sample now match the
  live Month tab: Calendar and status (gate-miss pill + Admin), Energy
  stacked above Windfall beside SMP duration (Peak / Min / Daylight /
  Night), Billing Period settlement first (calendar | four pots, ledger
  footer), Parties beside it (filter, sticky Party column). Target
  basis, variance, and the clause-15.11 modal are named; the old
  Month / EPM / Windfall / Parties replica is gone.

## 2.17.12 — 2026-08-23 · Month tab restyle (calendar header, SMP metrics, billing | parties)

- **V9 §13.11** — Calendar and status is a compact header with a
  gate-miss pill and branded **Admin** (still opens Administered
  Settlement, clause 15.11). Energy / windfall tiles sit in four of
  twelve columns with target and variance; SMP duration takes eight,
  with Peak / Min / Daylight avg / Night avg. Billing Period settlement
  is first on the lower row (calendar beside the four coloured run
  pots); Parties is beside it, height-capped, with a sticky Party
  column and a name / MPID / document filter.

## 2.17.11 — 2026-08-23 · Month tab layout, SMP ECharts, Admin modal

- **V9 §13.11** — Energy market stacked above Curtailment windfall, SMP
  duration (ECharts step line, daylight 07:00–17:00) beside those tiles,
  Parties beside the billing board. **Admin** on Calendar and status
  opens Administered Settlement in a modal; the form is no longer on the
  board.

## 2.17.10 — 2026-08-23 · Month tab: how to read it, and administered settlement

- **V9 §13.11** — the Month tab is taught as the Billing Period's books
  (not a day's chalkboard): calendar, EPM net, curtailment windfall,
  parties, and the billing board. **Administered Settlement** is
  explained in ordinary English — what the form is, when to use it, why
  both fields are required, and what switching does to participants
  (same calculator, queries intact, later reruns true-up the
  difference).

## 2.17.9 — 2026-08-23 · Settlement chalkboard layout

- **V9 §13.10** — five coloured tiles in one row; Day-ahead residual
  cards beside the kinds table; Hours headers sticky with info tips;
  **Solve** beside the status sentence (no footer card); Charges and
  Notifications share a row.

## 2.17.8 — 2026-08-23 · Settlement tab: chalkboard and when to Solve

- **V9 §13.10** — the Settlement tab is taught as the hour chalkboard
  (not the month's invoice): what each tile and table is, how to read a
  draft versus a published day, and that **Solve** is allowed — and
  intended — **after the DAM gate has closed**. Solve before 10:00 is a
  rehearsal; Solve does not reopen the gate; Publish is still what pins
  the energy pot.

## 2.17.7 — 2026-08-23 · Empty Submissions: weekday intake cards

- **V9 §13.8** — a date with no stored submissions hides the table
  headers and **CSV**. Days that have intake sit in Monday–Sunday rows
  of cards (*24 Aug '26*), not a line of ISO dates.

## 2.17.6 — 2026-08-23 · Extend stays on the Trading Date

- **V9 §13.8** — **Extend** is shown on the Trading Date itself (the
  chrome then reads the next IDM gate as open), not only on D−1 before
  10:00. Hidden when the DAM gate chip reads closed, or the date has
  passed.

## 2.17.5 — 2026-08-23 · Extend the DAM gate is a modal

- **V9 §13.8** — **Extend** sits after CSV on Submissions. It opens the
  §9.3(3) form in a modal. The button and the form are hidden once the
  DAM gate has closed or the Trading Date has arrived.

## 2.17.4 — 2026-08-23 · IDM tab: what it is, clock vs chair

- **V9 §13.9** — the IDM tab is taught as a watch, not a second Solve:
  what the five patches are, what the clock already clears, and what
  the Market Operator still does by hand (Publish the DAM by 14:00,
  read Cadence `:clear_idm`, explain named lodgements — never the
  anonymised stack). Five worked pictures, including the teaching
  hour and a `dam_not_published` miss.

## 2.17.3 — 2026-08-23 · Submissions tiles in one coloured row

- **V9 §13.8** — the six Submissions census cards sit in one row and
  use Daily's traffic-light tones (plus indigo for Versions today).

## 2.17.2 — 2026-08-23 · Submissions: what it is, what to look for

- **V9 §13.8** — the Submissions tab is explained as intake (not a Bid
  Desk): what a stored submission is, the six tiles, and the operator
  scan — silence after the gate, invalidated units, rejected/late
  attempts, staleness ≥ 4, horizon faults, and what a healthy row looks
  like.

## 2.17.1 — 2026-08-23 · Price board stat cards

- **V9 §13.7** — Low, High, Average and Spread on the Daily Price board
  are each explained: what the card shows, how it is made from that
  day's hourly SMPs, the unit line (**/ MWh** vs **Delta**), and what
  it is not (TOU names, energy-weighted average, volatility).

## 2.17.0 — 2026-08-22 · A month of market trading (S17)

- **V15 §4.8** — new chapter. Stage **S17** takes the fifty-participant
  overlay through **every Trading Day of a Billing Period** and then bills
  the month: the D−1 day-ahead chain, the intraday auction, the Network
  Operator's 20-minute metering, provisional then verified allocation,
  preliminary then official balancing, indicative statements, and month end
  from initial statements to invoices, payments, the credit call and the
  §15.3.4(11) cascade. Every step is `WB.Sawem.Cycles` on an explicit clock —
  no second implementation of the market.
- **V15 §4.8** — the days that are not ordinary, and where each shows up:
  gate misses rolled over (4th, 18th), a zonal export limit (7th, 21st), a
  dispatch instruction (9th, 23rd), metering that never verifies (11th), an
  intraday auction every third day. Plus the two defaulters at month end —
  one cures its Credit Call, one does not.
- **V15 §4.8** — six of the thirty SIM meters sit outside the provisional
  network model and are **not** read: §3.3(4)(a) makes jurisdiction a
  property of the zone, and the seed neither invents a zone nor settles the
  affected units at their own schedule. They appear on `/mo/zones/unplaced`.
- **V15 §4.8** — running it twice recovers a settled Trading Day from the
  record rather than re-trading it, so an interrupted month is finished by
  running the same command again. §15.3.4 issues a statement once.
- **V15 §4.2, §4.3** — new `market_month` profile and the S00–S17 stage
  graph. **§3.7** — `mix setup.market_month`.
- **V15 §4.7** — the overlay's off-takers now carry industrial-scale load
  (497 MW average against 1 300 MW of generation), so the market has a
  marginal unit and the SMP moves. A trader registers a Trading Unit with no
  Point of Delivery of its own — §12.3(1) makes it the counterparty at the
  IPP's and the off-taker's meters.
- **Landing page** — a third demo strip: pick a Billing Period, press
  **Populate trading month**, and watch a progress bar read from the rows the
  seed has written rather than from a counter in the page.

## 2.16.29 — 2026-08-22 · V9 §13 matches the Daily desk

- **V9 §13** — Bidding header is *National day-ahead desk — gates,
  intake, the hourly SMP, and settlement pots.* Daily is a 2×2 pulse
  (Clock and gates, Intake health, Energy and settlement, Notifications)
  then the Price board: status badge, Low/High/Average/Spread, emerald
  **Solve**, ink `#404068` step chart, **PUBLISHED** pill, footer
  Resolution / Currency / Timezone. Energy account pot chips are
  Unpublished / Balanced / Open.

## 2.16.28 — 2026-08-22 · Daily Price board after Solve / Publish

- **V9 §13.7** — Solve on a Trading Day with **no accepted submissions**
  is a miss (the board stays empty); it does not record a blank run.
  Publish of a run with no hourly prices is also a miss. The Price board
  still draws a stored SMP curve when the model period list on the row
  is empty but `prices` has hours.

## 2.16.27 — 2026-08-22 · Daily desk matches the operations dashboard

- **V9 §13.7** — Daily pulse is four rounded cards in **two rows**:
  Clock and gates with Intake health, then Energy and settlement with
  notices. SMP Low/High/Average/Spread are computed from that day's hours
  only. **Solve** / **Publish…** sit in the Price board toolbar. Intake
  counts stay unit counts, not MW.

## 2.16.26 — 2026-08-22 · Daily Price board daylight vs night

- **V9 §13.7** — Price board washes **amber daylight (07:00–18:00 SAST)**
  against **slate night**, with a sun/moon key
  (`#dam-daily-smp-day-night-legend`).

## 2.16.25 — 2026-08-22 · Daily Price board is ECharts with axes

- **V9 §13.7** — Price board is an ECharts step chart (`#dam-daily-smp-chart-line`),
  not a bare SVG path. Hour ticks on the x-axis (00:00–23:00 SAST) and a
  R/MWh y-axis from zero. Empty copy is unchanged.

## 2.16.24 — 2026-08-22 · Daily Price board line is always ink

- **V9 §13.7** — Price board stroke is ink `#404068` (not inherited
  colour). A one-hour run draws a shelf plus a dot. Empty chart copy is
  *This day has not been solved.* only when there is no run; a run with
  no SMP says *This run has no hourly SMP to draw.*

## 2.16.23 — 2026-08-22 · Daily Solve and Publish live on the Price board

- **V9 §13.7** — Daily no longer has a second "Solved, not published"
  card. **Solve** and **Publish…** sit on the Price board, left, under
  the status sentence (`#dam-daily-price-board` ·
  `#dam-price-board-actions`). Settlement still has its own Solve /
  Publish card.

## 2.16.22 — 2026-08-22 · Daily Price board, Solve, and Publish

- **V9 §13.7** — Price board: what the step chart is, how to read a
  shelf, empty vs drawn, the four status sentences, a teaching-day
  sketch (18:00 · R 900). Solve vs Publish in plain words, with
  flowcharts and a 2026-07-15 walk-through of what each button changes
  on Daily.

## 2.16.21 — 2026-08-22 · Daily cards colour, hover, and click

- **V9 §13.7** — Clock and Intake tiles lift on hover. Energy account
  and Intraday now are coloured whole-card links (Settlement / IDM); no
  "Open IDM" or "Click through to Settlement". Adequacy is coloured
  (amber empty, green on time, red late) and lifts on hover.

## 2.16.20 — 2026-08-22 · Daily stack: money left, notices right

- **V9 §13.7** — Energy account, Intraday now, and Adequacy report stack
  in `#dam-daily-money-column`. Notifications and exceptions sit to the
  right on the same pulse row as Clock and Intake.

## 2.16.19 — 2026-08-22 · Daily pulse is five cards on one row

- **V9 §13.7** — Clock and gates, Intake health, Energy account,
  Intraday now, and Adequacy report share `#dam-daily-pulse` (five
  columns from `xl`). Price board and Notifications sit below.

## 2.16.18 — 2026-08-22 · Daily pulse: every reading on four cards

- **V9 §13.7** — Energy account, Intraday now, Adequacy report, and
  Notifications and exceptions: what each card is, and every value it
  can show (empty, R0.00, signed nets, On time / Late, the three
  exception bullets, ledger columns).

## 2.16.17 — 2026-08-22 · Daily pulse: Clock beside Intake

- **V9 §13.7** — Clock and gates and Intake health share one row
  (`#dam-daily-pulse`). Intake tiles are colour-coded: Expected sky,
  Received green/amber/red against the census, Rolled over amber when
  greater than zero.

## 2.16.16 — 2026-08-22 · Market Desk includes the six tabs

- **V9 §13** — Market Desk is the `/mo` hop **and** the Bidding six
  tabs (Daily through Clear, plus the 2026-07-15 hour). Old Bidding
  anchors (`#15-bidding--the-six-tabs`, `#152-…`–`#158-…`) stay on
  those headings.
- **V9 §15–§25** — later console chapters shift down one: Notices 15,
  Metering 16, Balancing 17, Accounts 18, Dispute 19, Participants 20,
  Registry 21, IPPs 22, Zones 23, Rules 24, Runs 25. Cadence stays
  §14. Old chapter slugs (`#16-notices` … `#26-runs`) and explicit
  subsection ids (`#2112-balancing-groups`, `#224-…`, `#197-…`) are
  leftover spans or kept heading ids.

## 2.16.15 — 2026-08-22 · Every §3.3(6) flag on Participants

- **V9 §21.12** — **§3.3(6) flags in force** lists the only three
  directions the platform can raise (`EXPORT`, `IMPORT`, `BOTH`), who
  loses Balancing Group cover for each, and that **Reason** is free
  text, not a pick-list. Raising and lifting stay
  [V10 §5.5](v10-systems-operator.html#49-zone-constraint-flags).

## 2.16.14 — 2026-08-22 · Why Balancing Groups sit on Participants

- **V9 §21.12** — why the tab is on Participants (not Registry), what
  it is for (market-wide designations, §7.1(2) notice, cover forecast,
  administrative pause vs cancel vs §3.3(6)), and how to read every
  column and modal.

## 2.16.13 — 2026-08-22 · §21 headings match the six tabs

- **V9 §21.2** — names the six tabs and says there is no Suspension
  Queue tab and no Blocked Suspensions tab.
- **V9 §21.10 / §21.11** — TOC titles are **Issued suspensions on
  Registrations** and **Blocked units on Registrations** (anchors
  `{#2110-suspension-queue}` / `{#2111-blocked-suspensions}` kept).
  Those sections are Enforcement on Registrations, not worklists.

## 2.16.12 — 2026-08-22 · Enforcement on Registrations

- **V9 §21** — Suspension Queue and Blocked Suspensions are no longer
  tabs. Issued orders show as **Enforcement** on Registrations (BRP
  badges and expanded-unit cells). Old paths patch to Registrations.
- **V9 §21.2 / §21.5** — the `#accession-sla-summary` card under the
  seven-state tiles is gone. Accession is the register tab only.
- **V9 §21.4** — a **REVOKED** seat can be **Reactivated**, not
  suspended. Status filter (`#mo-brp-filter-status`) and totals are
  documented. Empty / filter-miss copy matches the board.
- **V9 §21.6** — clock-drawer **i** hints open away from the edge:
  left-column labels `tooltip-right`, right-column labels
  `tooltip-left`. Note modal and Ask-tab hints open right.
- **V9 §12** — Participants is six tabs, not eight.

## 2.16.11 — 2026-08-22 · No accession chrome on Registrations

- **V9 §21.4** — Registrations is who may bid today. The accession SLA
  strip and Accession column live on the Accession register tab and the
  worklist tabs.

## 2.16.10 — 2026-08-22 · Registrations View only

- **V9 §21.4** — Registrations row actions are **View** only. Open clocks
  is gone; the eye opens the same drawer.

## 2.16.9 — 2026-08-22 · Participants state cards tinted like Registry

- **V9 §21.3** — the seven `#mo-registration-state-*` tiles use the same
  filled-border chrome as the registry standing-data cards.

## 2.16.8 — 2026-08-22 · Filter Trading Units by today's failures

- **V9 §22.4** — `#mo-registry-filter-failures` on the registry board:
  has a failure, no failure, or a clause currently on the board.

## 2.16.7 — 2026-08-22 · Standing-data cards only on Trading Units

- **V9 §22.6** — the four standing-data summary cards stay above
  **Trading Units**. The Standing Data tab is incomplete filings and the
  SO certification queue only.

## 2.16.6 — 2026-08-22 · Two tills: auction vs meter

- **V7 §3.4** — why a physical PPA is not a ticket to join; why a merchant
  IPP still sees a pairing chase; §7.2(1)(i) on every Trading Unit (off-taker,
  IPP, trader pool) with remedies; worked hours for an unpaired merchant
  plant and a wheeled chain. Two-till figures.
- **V7 §13 / §14 / §17.13** — energy pot still pays the schedule; residual-grid
  BRP is not invented.

## 2.16.5 — 2026-08-22 · Today's failures catalogue

- **V9 §22.4** — every nightly-reassertion failure that can sit in
  **Today's failures** is named in plain words, with who fixes it and
  how. The cell lists the Code clauses (centred), each with its own
  hover.

## 2.16.4 — 2026-08-22 · Accession register on Participants

- **V9 §21.5** — the §6.2(9) accession publication SLA moves from
  `/mo/registry` to **Participants → Accession register**
  (`/mo/participants/accession`). Full table (effective date, acceded
  on, publish-by, status). Summary strip and an **Accession** badge on
  every other Participants tab.
- **V9 §22.3** — Registry no longer hosts the widget; pointer to §21.5.

## 2.16.3 — 2026-08-22 · What an accession is

- **V9 §22.3** — defines accession before the 7-business-day publication
  SLA: becoming a Party on the agreements' effective date (§6.2(8)),
  Activate as that step, publication as a separate stamp.
- **Glossary** — Accession (distinct from Accession Fee).

## 2.16.2 — 2026-08-21 · MO registry tabs

- **V9 §22** — `/mo/registry` is three icon tabs: **Trading Units**
  (accession + board), **Counter Party** (the two pairing exception
  lists), **Standing Data** (assumed / incomplete / SO queue).

## 2.16.1 — 2026-08-21 · MO registry board table

- **V9 §22.4** — the red pairing banner is gone. Failures sit on the
  Trading Unit as **Today's failures** (red count, hover for clause).
  Standing-data summary cards sit above the table. Filter by class and
  zone; search TUID or name; sort name, MCR, and effective
  (`1 Jan' 2026`). Class and status are badges; zone colour comes
  before the code (no `*`). An **assumed** badge opens the yellow
  assumption card in a modal.

## 2.16.0 — 2026-08-19 · MI0–MI3: issuer interfaces

- **V13 §9** — how you get to `/operator` (the two doors), issuer chip,
  facets, totals, CSV and month-pack for an operator clerk.
- **V13 §13** — reading your own documents, walking a month (preflight
  → pro forma → approve → issued), receiving the MO remittance,
  settings (grain, read-only transition, delivery).
- **V13 §14** — `/mo/billing` room: register, remittances split,
  corrections, board counters.
- **V13 §6** — the operator approval seat on the monthly run.
- **V15 §1.6 / §2.4** — door path and B13/B14 caveats.
- **V9 §12 / §19.7** — sidebar Billing; board counters open the room.
- B13 (spec-2) doors interim · B14 transition flip stays MO/ops ·
  B15 `/mo/billing` in Settlement.

## 2.15.0 — 2026-08-19 · V13 §16–§21: payments, delivery, close

- **V13 §16** — record a payment, short-paid invoices do not shrink,
  derived aging, remittance advice, dispute still due.
  [§16](v13-billing.html#16-payments-and-aging)
- **V13 §18** — Analyze tab from documents, month pack, opt-in email,
  billing API. [§18](v13-billing.html#18-analysis-and-exports)
- **V13 §19–§21** — worked month, terms, reference card.
- V6 §12 — payments live on
  documents; the settlement ledger stays accrued.
- Programme close: monthly close, numbering audit, `mix billing.audit`.

## 2.14.0 — 2026-08-19 · V13 §14 / §17: party tax documents and corrections

- **V13 §14** — the party document is the tax document; Invoice vs
  Self-Billing Invoice from the Code’s net; Debit Note Excess in
  two-business-day cash; supply-only refusal and B10 flagging;
  credit-cover basis on the market roll-up.
  [§14](v13-billing.html#14-market-operator-billing)
- **V13 §17** — a corrected month arrives as a note; the original
  stays issued; §15.5(3) fans a dispute out to every party.
  [§17](v13-billing.html#17-corrections-and-reissues)
- **V13 §12** — Market tab and a FINAL Overview once both roll-ups
  are present. [§12](v13-billing.html#12-the-billing-hub)
- V9 §19.7 and §8 bridge to the document layer and to §17.

## 2.13.0 — 2026-08-19 · V13 §10–§12: received records, site view, Billing Hub

- **V13 §10** — received records: what arrives, acknowledging is
  optional, three ways to find a document.
  [§10](v13-billing.html#10-your-received-records)
- **V13 §11** — the site view: issuer groups as who you pay, six
  charge groups, savings, residual as information, conservation
  footer. [§11](v13-billing.html#11-the-site-view)
- **V13 §12** — `/org/billing` tour: four tabs, month picker,
  CSV, the round trip into the settlement audit trail.
  [§12](v13-billing.html#12-the-billing-hub)
- V6 §9 — the consolidated artifact spanning agreements now exists
  (documents, not runs). Bridge to V13 §11–§12.
- V6 §12 — a single month invoice that merges every run is how
  billing works; V6’s month hub still lists runs.

## 2.12.0 — 2026-08-19 · V13 §13–§15: utility, market annexures, virtual

- **V13 §13** — Eskom and municipal billing: network charges, WER,
  explicit versus embedded, residual as unmet kWh, who pays the
  wheeling charge (seller / buyer / shared / pass-through).
  [§13](v13-billing.html#13-eskom-and-municipal-billing)
- **V13 §9** — operator clerk: three searches, approval, re-issue,
  received remittances for the supply-only hat.
  [§9](v13-billing.html#9-the-issued-register)
- **V13 §14** — Trading Unit and Balancing Group annexures; §13.10
  replaces unit balancing charges; per-unit payment destinations.
  [§14](v13-billing.html#14-market-operator-billing)
- **V13 §15** — virtual CfD documents, three layers, WER referenced
  not re-issued, B1 VAT note.
  [§15](v13-billing.html#15-virtual-ppa-billing)
- V15 §1.4 — the `/operator` portal as an administrative surface.
- V7 §15 and V6 §14 bridge to the document layer.

## 2.11.0 — 2026-08-19 · V13 §7–§8: issuer run and consolidation

- **V13 §7** — the atomic document: six charge groups, direction by
  net, opposite-direction supplies stay two documents, provenance on
  every line. [§7](v13-billing.html#7-per-entity-documents)
- **V13 §8** — the issuer's organisation consolidation; exactly one
  layer is the tax invoice; earliest due date when terms differ;
  weekend dates stay on the weekend (B12).
  [§8](v13-billing.html#8-consolidated-invoices)
- **V13 §9** — the issuer run writes the register; preliminary is pro
  forma; a re-run of an unchanged month is a no-op.
  [§9](v13-billing.html#9-the-issued-register)
- V5 §4.5.8 — `Invoice Cycle` and `Payment Due (days)` now reach the
  document.

## 2.10.0 — 2026-08-19 · V13 §14: market documents persist

- **V13 §14** — the Market Operator raises one Invoice or one
  Self-Billing Invoice per party, never both, never from an indicative
  statement. You pay in three business days; the market pays in four.
  [§14](v13-billing.html#14-market-operator-billing)
- V9 §19.7 now opens real documents, not a count of empty maps.

## 2.9.1 — 2026-08-19 · V13 §4: transition mode and the two hats

- **V13 §4** — you will see the utility amount, but Eskom still sends
  the bill until they leave transition. The same utility can be a
  network operator who charges you and a market supplier who gets paid.
  [§4](v13-billing.html#4-who-issues-what)

## 2.9.0 — 2026-08-19 · V13 §2 and §9: the document and the register

- **V13 §2** — statement, bill, and tax invoice are three words.
  The site view cannot be a tax invoice because it spans suppliers;
  that is what keeps one supply from carrying two tax documents.
  [§2](v13-billing.html#2-bill-statement-invoice)
- **V13 §9** — the issued register: search by month, entity, and
  organization. Nothing is deleted. A void or superseded row stays.
  [§9](v13-billing.html#9-the-issued-register)

## 2.8.0 — 2026-08-19 · V13 §6: the monthly run

- **V13 §6** — the chain on the 1st (SAST), preflight warn-vs-refuse,
  provisional vs final, a miss is a row, the five-business-day
  auto-finalise window (B7).
  [§6](v13-billing.html#6-the-monthly-run)
- V6 §11 now says the run advances statuses as well as a person.

## 2.7.0 — 2026-08-19 · V13 §5: stored artifacts

- **V13 §5** now covers the stored PDF: sha256, create-only, COPY is
  not a new number. HTML is the source of truth (B11).
  [§5](v13-billing.html#5-numbering-and-artifacts)

## 2.6.0 — 2026-08-19 · V13 §4–§5: who issues, and the number

- **V13 §4** — the five issuing capacities, what each may charge and
  credit, the three mandates (§54 / self-issued / §20(2) RCTI), and the
  grain election that keeps one tax invoice per supply.
  [§4](v13-billing.html#4-who-issues-what)
- **V13 §5** — gapless numbers allocated at issue (never at draft);
  reprints marked COPY; versions are not new numbers.
  [§5](v13-billing.html#5-numbering-and-artifacts)
- Eskom, municipalities and the VWP vendor are named ledger parties
  (no more `party_id: nil`).

## 2.5.0 — 2026-08-19 · V13 opens: VAT is computed

- **V13 · Billing** is no longer reserved. [§1](v13-billing.html#1-this-volume)
  orients the volume (you issue / you receive; settlement decides the
  numbers, billing turns them into documents). [§3](v13-billing.html#3-vat-and-rounding)
  teaches how VAT is computed per line from the rate in force, the four
  treatments, and why a credit note's VAT cancels its invoice.
- The running-ledger VAT column is the tax on the lines; net is exclusive
  of VAT. Historical statements are not restated.

## 2.4.6 — 2026-08-19 · V13 Billing; V14 Analytics; Operations → V15; TODOs → V16

- **New V13 · Billing** (`v13-billing.html`) — reserved stub; no chapter
  content yet.
- **New V14 · Analytics** (`v14-analytics.html`) — reserved stub; no
  chapter content yet.
- **Renumber** — former V13 Operations → **V15 · Operations &
  Administration** (`v15-operations.html`); former V14 TODOs → **V16 ·
  TODOs** (`v16-todos.html`). Legacy `v13-operations.html` /
  `v14-todos.html` (and the older operations/todos slugs) redirect.

## 2.4.5 — 2026-08-19 · V9 §23 IPP register search, sort, suspend

- **V9 §23** — IPPs search (site / organisation / BRP ref) and sort
  (IPP / site, MCR by MW) are wired. The MCR header has an i icon whose
  tooltip is *Maximum continuous rating*. Actions are uniquely coloured
  icons with hover tooltips; View is first. Suspend asks for confirm
  before it writes; a suspended unit shows Restore.

## 2.4.4 — 2026-08-18 · V9 §25 Market rules PDF

- **V9 §25** — Rules has **View Market rules**: Market Code Rev 2.3 and
  the four SAWEM Rules open in a PDF viewer on the page.

## 2.4.3 — 2026-08-18 · V9 §26 hash payload modal

- **V9 §26** — Click an inputs hash or a parameters hash on Runs to open
  the stored payload. The hex is a seal; the map next to it is what you
  read.

## 2.4.2 — 2026-08-18 · V9 §26 Runs browser

- **V9 §26** — Runs is the current SAST month, with previous / next,
  a Kind-chip filter, coloured kind badges, dates as `18 Aug 2026`,
  a sortable Date column, and sticky headers while you scroll.

## 2.4.1 — 2026-08-18 · V9 §7.4–7.6 AEPM, reserve, schedule report

- **V9 §7.4** — Additional energy payment taught with three gates, the
  golden hour (nobody above the cap), and a same-stairs walk of coal's
  R 6,000 emergency shelf against the shipped SMP. `[D-02]` cap reading
  shown as the other switch.
- **V9 §7.5** — Four reserve cheques walked: coal R 2,250 at the floors,
  OCGT Ten-Minute at R 0, Market Balancing R 15,750 with the CPP.
- **V9 §7.6** — Full 18:00 schedule report: public strip, own hours,
  both pots, who may see what, and the six-point publish checklist.
  §11.2 steps 4–5 point here.

## 2.4.0 — 2026-08-18 · V12 Scenario Lab; Operations → V13; TODOs → V14

- **New V12 · Scenario Lab** (`v12-scenario-lab.html`) — purpose, how to
  use `/org/sim`, every seeded recipe (`AUG-BASELINE`, `CODEX-S12-WARM`,
  `CODEX-S12-ISOLATION`), every editor panel, list action, run status,
  Compare strip, live day log, Teardown, the driver walk, and a
  clone-and-run worked example. Written in lay language; numbers from
  lab / full_demo · seed 42 · S12.
- **Renumber** — former V12 Operations → **V13 · Operations &
  Administration** (`v13-operations.html`); former V13 TODOs → **V14 ·
  TODOs** (`v14-todos.html`). Legacy `v12-operations.html` /
  `v13-todos.html` (and the older operations/todos slugs) redirect.
- **V13 §5** is now a pointer at V12 so `#5-scenario-lab` still lands.
- **GLOSSARY** — CODEX-S12-WARM, CODEX-S12-ISOLATION, Scenario drifted;
  AUG-BASELINE / Scenario Lab / Teardown back-links move to V12.

## 2.3.106 — 2026-08-18 · V9 §7.3 CPP/CSC walked with numbers

- **V9 §7.3** — Constrained adjustments are taught as a walk of each
  unit's own stairs. Nine numbered steps on the golden 18:00 hour:
  who moved, solar CSC R 0, the windfall, coal CPP R 13,500, a bend,
  who has no line, a load's axis, the Market Balancing pot, and the
  IDM contrast. §11.2 step 4 points here.

## 2.3.105 — 2026-08-18 · V9 §7.2 EPM numbered examples

- **V9 §7.2** — Energy payment is taught as eight numbered lines on the
  golden 18:00 hour: coal, solar, idle peaker, import, distributor,
  factory, the R 0.00 pot, and the wire that does not rewrite EPM.
  Ledger, bar, and mermaid figures. §11.2 points here.

## 2.3.104 — 2026-08-18 · V9 §6.3 demand colours mirrored

- **V9 §6.3** — Demand stack table: floor (must-serve) is green; top
  (R 1,500 slice) is red. Supply stays floor red / top green.

## 2.3.103 — 2026-08-18 · V9 §6.3 demand table floor/top colours

- **V9 §6.3** — Demand stack table: floor row (`TU-DIST1` must-serve) is
  red; top row (`TU-IND1` R 1,500 slice) is green.

## 2.3.102 — 2026-08-18 · V9 §6.3 bar matches table colours

- **V9 §6.3** — The sideways supply bar uses the same red floor (import)
  and green top (OCGT) as the stack table above it.

## 2.3.101 — 2026-08-18 · V9 §6.3 floor red, top green

- **V9 §6.3** — Supply stack table: floor row (import) is red; top row
  (peaker) is green.

## 2.3.100 — 2026-08-18 · V9 §6.3 step 2 floor row

- **V9 §6.3** — Supply stack table row **1** is labelled **floor**
  (import, free); row **7** is **top**.

## 2.3.99 — 2026-08-18 · V13 V9: MGC republish cap and floors

- **V13 §11.1** — Intermediate TODO: the Market Governance Committee
  must publish, and from time to time republish, the Market Price Cap
  and the four reserve floor prices. The Rules desk already has the
  ceremony; a commencement figure is not a standing determination.

## 2.3.98 — 2026-08-18 · V9 §6.4 how the SMP is read

- **V9 §6.4** — The System Marginal Price is taught as six checks on
  the unconstrained meeting: who ran, who is stuck, which shelf, the
  highest, the cap, or zero if nobody flexible ran. The golden 18:00
  hour is walked unit by unit (coal at 435 MW → R 900). The bend rule
  and `[D-08]` (factory at 19:00 → R 2,600 vs R 900) have their own
  figures. §11.2 points here.

## 2.3.97 — 2026-08-18 · V9 §6.3 stacks, crate by crate

- **V9 §6.3** — Building the stacks is taught as two piles of crates:
  supply cheap-on-the-floor, demand must-serve-then-willing. The golden
  hour 2026-07-15 18:00 is walked step by step (clamp, stack, lift,
  meeting at 530 MW, then the narrower door), with bar, staircase, and
  mermaid visuals. §6.1 and §11.2 point here.

## 2.3.96 — 2026-08-18 · V13 V10 urgent: SO day-ahead publish cron

- **V13 §12.1** — Urgent TODO: Oban cron at **10:00 SAST D−1** so the
  System Operator publishes demand forecast and reserve requirements,
  and at **13:30 SAST D−1** so it publishes the interconnection
  schedule. Today those facts arrive only by `PUT /internal/so/:input`.

## 2.3.95 — 2026-08-18 · V9 handbook and MO console rooms

- **V9 §§1–11** — The Market Operator volume opens with the
  day-ahead and intraday handbook from `docs/references/market/spec/market-dam.md`
  §§1–11: one picture, seats, the clock, intake, the bid
  field-by-field, prices, the chalkboard, the till, the IDM, and the
  golden hour 2026-07-15 18:00.
- **V9 §12–§26** — The current `/mo` console follows: chapter 12 is
  the sidebar map (four groups, fourteen rooms). Each later chapter
  is one sidebar item, tab by tab and field by field. Frozen
  `#12-the-mo-console` / `#125…` / `#126…` / `#127…` and the older
  `#15…` / `#16…` / `#17…` / `#18…` anchors land on those chapters.

## 2.3.94 — 2026-08-17 · zone edits land live

- **V10 §5.4** — Saving a zone's corridors or SAPP interconnectors
  updates every open SO Network Model desk and every BRP
  **Market › SO** page, without a refresh.

## 2.3.93 — 2026-08-17 · drawer Info / Constrain

- **V10 §5.4** — The zone drawer is **Info** and **Constrain**.
  Constraint Flag lives on Constrain. **Add corridor** omits zones
  that already have a corridor; remaining zones show their colour
  dot.

## 2.3.92 — 2026-08-17 · corridors both ways and SAPP interconnectors

- **V10 §5.2 / §5.4** — The zone drawer adds corridors **both ways**
  and **SAPP interconnectors**. Export and import capability are
  derived from corridor sums and are not editable.

## 2.3.91 — 2026-08-17 · edit zone capability

- **V10 §5.2 / §5.4** — The zone drawer can edit **export
  capability**, **import capability**, and **MW on each corridor**.
  Saved figures replace the assumed estimates and show as declared.

## 2.3.90 — 2026-08-17 · constraint-flag window and direction

- **V10 §5.5** — Constraint Flag **To** cannot be before **From**.
  Direction items spell out **exports** (too much trying to leave
  zone), **imports** (too much trying to enter), and **both** (too
  much trying to leave and to enter).

## 2.3.89 — 2026-08-17 · instruction and ack stay live

- **V10 §3 / §4** — An issued instruction arrives on the target
  BRP's **Market › SO** (`/org/brp/so`) without a refresh. The BRP's
  acknowledgement flips **Issued → Action** to **Acknowledged by
  BRP ✓** without a refresh.

## 2.3.88 — 2026-08-17 · V10 §4 matches the desk

- **V10 §4** — Dispatch Desk chapter matches the screen: System
  landing and cards; Issue Kind cards (no drop-down, no *i* icon);
  Site ref read-only from the Target BRP; Window hour cards; Cap
  only on Curtailment and Dispatch constraint; ranked reduction
  strip; follow-along no longer types Site ref.

## 2.3.87 — 2026-08-17 · V10 §4 lands on System

- **V10 §4.2** — Dispatch Desk opens on **System** (`/so`). Issue is
  `/so?tab=issue`.

## 2.3.86 — 2026-08-17 · V10 §4 System tab

- **V10 §4.2 / §4.6** — Dispatch Desk has a **System** tab before
  **Issue**. System condition lives there, not on the Issue form.

## 2.3.85 — 2026-08-17 · V10 §4.3 window hour cards

- **V10 §4.3** — Issue **Window** is two coloured rows of hour
  cards (From, then To). To hours at or before the selected start
  stay disabled.

## 2.3.84 — 2026-08-17 · V10 §4.10 ranking on Issue

- **V10 §4.3 / §4.10** — Issue shows ranked reduction options before
  the instruction is sent: priced demand response versus unpriced
  shedding, with the ranking stored on the instruction.

## 2.3.83 — 2026-08-17 · V10 §4.10 priced vs unpriced

- **V10 §4.10** — worked example of priced demand response versus
  unpriced shedding on TU-IND1 at 18:00 (20 MW at R 1 500 vs a
  20 MW blunt cut). Cost is the pair `{unpriced MW, priced rands}`,
  so a rand-only score cannot call shedding free.

## 2.3.82 — 2026-08-17 · V10 SO console split

- **V10 §§4–6** — the former “SO console” chapter is three rooms.
  **§4 Dispatch Desk** (Issue / Active / Issued — every field, column,
  filter, and the 17.11 MWh teaching clip). **§5 Network Model**
  (Model / Map / API, the zone drawer, and §3.3(6) flags). **§6
  Registry** (IPPs, Inbox, Certification Queue, and the per-plant
  Info / Reserve / Notices page, including every §7.2 field).
- Frozen anchors `#4-the-so-console`, `#40-registry-inbox-and-certification`,
  `#49-zone-constraint-flags`, `#410-network-model--model-map-api` still
  resolve.

## 2.3.81 — 2026-08-17 · Issued sort and filters

- **Issued** — **Window** sorts by the from-date; **Type**, **Site**,
  and **Action** filter the list.

## 2.3.80 — 2026-08-17 · Issued table

- **Issued** — table with sticky **Type**, **Site**, **Window**,
  **Action** headers.

## 2.3.79 — 2026-08-17 · Active site and kind filters

- **Active** — filter open constraints by **Site** and **Kind**.

## 2.3.78 — 2026-08-17 · SO kind colours and Active sort

- **SO notices** — each instruction kind has a distinct coloured
  badge, reused on Dispatch Desk, IPP Notices, and Market › SO.
- **Active** — **Window** sorts by the from-date.

## 2.3.77 — 2026-08-17 · SO Dispatch Desk tabs

- **SO Dispatch Desk** — **Issue**, **Active**, and **Issued** tabs.
  Issue holds the instruction form and system condition; Active holds
  open constraints; Issued holds the instruction list.

## 2.3.76 — 2026-08-17 · SO IPP page tabs

- **SO Registry IPP** — `/so/registry/ipps/{id}` has **Info**,
  **Reserve**, and **Notices** (instructions to that target BRP).

## 2.3.75 — 2026-08-17 · SO Registry View is its own page

- **SO Registry** — the IPP eye **View** opens
  `/so/registry/ipps/{id}` (certified reserve and §7.2 cards). It no
  longer expands under the table row.

## 2.3.74 — 2026-08-17 · Issue instruction Target BRP

- **SO Dispatch Desk** — the Issue instruction picker is labelled
  **Target BRP** (it still selects the BRP's strategy book).

## 2.3.73 — 2026-08-17 · V10 §3 notices in four kinds

- **V10 §3.1** — System Operator notices are taught as four
  pigeonholes (orders, warnings, registry notes, day-ahead facts).
  Each kind has a worked example and the impact on the receiver.

## 2.3.72 — 2026-08-17 · V10 §2.6 listed-direction blanks

- **V10 §2.6** — why Z2 can show no import and Z3 no export: the
  assumed set lists each corridor once, in the natural flow. Worked
  2,950 MW / 4,000 MW roll-up, reverse on the pair, interconnectors
  on a separate line, Z9 not represented.

## 2.3.71 — 2026-08-17 · SO API tab includes the §2.4 zone register

- **SO Network Model → API** — adds the three live
  `/api/v1/registry/network-zones*` calls from V10 §2.4 (allocate at
  Kathu, list, gaps). Those routes have not moved.

## 2.3.70 — 2026-08-17 · V10 §2.1 zone colour dots

- **V10 §2.1** — each zone code in the register table carries the same
  coloured dot as the SO/MO zone swatch.

## 2.3.69 — 2026-08-17 · V10 matches the SO console

- **V10** — Dispatch Desk, Network Model (Model / Map / API, copy on
  the API tab), and Registry (search, sort, viewport table) are taught
  as the screens now look. Sidebar has no Zones item.

## 2.3.68 — 2026-08-17 · SO Network Model API tab

- **SO console** — `/so/network-model` gains an **API** tab (OpenAPI call
  and live result). The API button leaves the Model card.

## 2.3.67 — 2026-08-17 · SO Zones moves under Network Model

- **SO console** — Zones leaves the sidebar. `/so/network-model` now has
  **Model** (constrained scheduling register) and **Map** (the former
  Zones page). `/so/zones` still opens the Map tab.

## 2.3.66 — 2026-08-17 · V10 §1.4 lights taught as a pigeonhole

- **V10 §1.4** — Present / Unknown / Late on Daily are no longer three
  store-and-deadline bullets. Each stamp is what the pigeonhole shows
  (arrived, still waiting, should-be-here-and-is-not), with the
  interconnect morning as the worked example.

## 2.3.65 — 2026-08-17 · V10 §1.4 taught from first principles

- **V10 §1.4** — the shared MO / SO day is no longer a five-bullet
  summary. Each moment (map before the gate, two schedules, registry
  share, Instructed Energy and the three pots, what `/mo` cannot do)
  now introduces every term, with a metaphor and a figure or worked
  hour.

## 2.3.64 — 2026-08-17 · V10 is the System Operator volume

- **V10 §1** — new chapter: what the System Operator is, what it does,
  how it works with the Market Operator and with BRPs, and which notices
  leave the desk.
- **V10 §2** — Network zones (former V7 §2), including the provisional
  `PROV-2026-07` map and corridor estimates.
- **V10 §3** — Notices: the SO catalogue, then SO instructions (former
  V7 §7) — Instructed Energy, control state, the commercial log.
- **V10 §4** — The SO console (former V10 §1 / V7 §11).
- **V7** no longer teaches zones or SO instructions; the primer points
  at this volume.

## 2.3.63 — 2026-08-17 · MO and SO consoles leave V7

- **V9 §1** — The MO console (former V7 §10) is now the first chapter of
  **V9 · Market Operator**: registration board, cadence, Bidding tabs,
  metering, balancing, month and disputes.
- **V10 §1** — The SO console (former V7 §11) is now the first chapter of
  **V10 · Systems Operator**: registry inbox, instructions, operating
  condition and zone-constraint flags.
- **V7** keeps the BRP seat (registration, Bid Desk, imbalance, SO feed,
  recon). Cross-links and the glossary now point at V9 / V10.

## 2.3.62 — 2026-08-17 · Reserve V8–V10 seats; renumber API / Ops / TODOs

- **New reserved volumes** — **V8 · Organization Market Bidding**,
  **V9 · Market Operator**, **V10 · Systems Operator**. Each is a stub
  that points at the teaching still in V7 (§4 Bid Desk, §10 MO console,
  §11 SO console) until those volumes are written.
- **Renumber** — former V8 Market API → **V11 · Market API**; former V9
  Operations → **V12 · Operations & Administration**; former V10 TODOs →
  **V13 · TODOs**. Legacy `v8-market-api.html` / `v9-operations.html` /
  `v10-todos.html` (and the older `v8-operations.html` / `v9-todos.html`)
  redirect to the new slugs.

## 2.3.61 — 2026-08-16 · G2 registry completeness

- **V7 §3** — Effective-dated §7.1(5) modifications (08:00 D−1 cutoff named
  and refused on the console), Point of Delivery add / remove / re-pair
  after the wizard, reserve-certification request, §7.3 / §7.4 profile
  forms, fleet CSV upload that will not invent provenance.
- **V7 §2** — Org zone-gap desk lists unplaced sites with nearest zone and
  offset; the organisation cannot snap them into the nearest zone.
- **GLOSSARY** — **modification (effective-dated)**, **Point of Delivery
  pairing**.

## 2.3.60 — 2026-08-16 · G9 dual-stack retirement

- **V7 §12** — the golden day is the operator walk (Cadence → Metering →
  Balancing → Billing) and the participant walk (Daily `#schedule-view` →
  After Delivery `#balancing-statement` / `#settlement-statement` →
  Accounts `#credit-cover`). Same numbers: R13 500 for `TU-PV1`,
  475.234 MWh instructed, energy account R0.00 on both consoles. There is
  no `/so` product.
- **V7 §10** — one object per conversation: `Submission`, `Mo.Balancing`,
  `Mo.Settlement.Query`. A failed §16(2)(f) delivery is
  `#mo-event-incidents`. §1.2 names are `POST /api/v1/internal/cycles/:callable`.
- **V7 §4** — Submit and the 03:00 worker `PUT` a Submission to `/api/v1`.
  The kitchen ladder is not the live write.

## 2.3.59 — 2026-08-16 · G8 billing period

- **V7 §15** — new §15.7: how the MO runs a month. `BillingBoard` is a
  real `Mo.Settlement.Month` on Accounts and Bidding → Month. A query
  that crosses the Settlement Recalculation Threshold reruns for
  everyone; an unset threshold refuses. A rerun is a diff. An invoice
  is never paused. Credit-cover operations: required vs posted, Increase
  Notices, replenishment windows that still need `closes_on`. Cash only;
  `[S28]` letters of credit stay disabled.
- **V7 §8** — the inbox is the three-tier `Mo.Settlement.Query` machine.
  Org Recon and `/mo/dispute` are the same resource.
- **V7 §10** — Month is a Billing Period. **Runs** browser
  (`/mo/runs`). Administered settlement is an act (approval +
  methodology). Dispute inbox is Query tiers, not a legacy case list.

## 2.3.58 — 2026-08-16 · G7 metering and balancing desks

- **V7 §10** — first-class **Metering** (`/mo/metering`) and **Balancing**
  (`/mo/balancing`) sidebar desks. After 14:00 the job moves off the
  chalkboard. Official balancing is vintage-gated on the desk. Empty
  registry readiness is unready. `[D-07]` Out-of-Merit alarm and `[S11]`
  reserve performance-factor inbox are on the balancing desk.
- **V7 §14** — new §14.6: the MO metering desk is where D+7 becomes official.
- **V7 §6** — the MO stack is the anonymised board; the org sees its own legs.

## 2.3.57 — 2026-08-16 · G5 MO operating cadence

- **V7 §10** — new **Cadence** sidebar (`/mo/cadence`): due / ran / missed
  for every MO-SPEC §1.2 callable. **Run the day** walks gate → rollover →
  unconstrained → constrained → prices → publish. **Run the month** walks
  statements, invoices, the timetabled rerun and credit cover. Solve /
  Publish on Bidding call the same `WB.Sawem.Cycles` wrappers as cron.
- **V7 §9** — new §9.7: a miss is a row; nightly reassertion is cron, not
  the Refresh button.
- **V1 §4 / §7** — the MO day in clocks: 10:00 gate, 13:30 constrained,
  14:00 publish, five IDM auctions, D+1…D+7 balancing, weekday cover.

## 2.3.56e — 2026-08-16 · G6 day-ahead console

- **V7 §10** — `/mo` lands on **Bidding → Daily**. Three live SO traffic
  lights; empty constraints labelled as unbound, not "network clear";
  intake-rejection audit and per-day notification ledger; gate-extension
  form requires reason, authoriser and `published_at`; public adequacy
  widget. Clear is a view onto the G5 run ledger — no second Solve on
  `WB.Brp.Bid`. Registry, accession SLA and standing-data review live at
  `/mo/registry`. IPPs gain certify / chase / suspend-unit; Participants
  has an ops action besides View; Zones acknowledges the SO network-model
  version.
- **V7 §4** — a Bid Desk 409 is on the MO Submissions chase list, not lost.

## 2.3.56d — 2026-08-16 · G4 Accounts and cover

- **V7 §15** — the Organization till: Trading Clearing withdrawal
  (`#trading-clearing-withdraw`); Collateral named as not withdrawable
  (`#withdraw-refused-collateral`, §15.2.1(5)); `#cascade-explainer`
  (expected, received, share, Excess Participant; honest empty);
  formal `#period-statement` with PDF / CSV; `#self-billing-detail`
  (expected date, paid date). The cover figure is the 17:00 published
  assessment, not a live recompute. Increase Notice is first-class
  (issued at, closes on, satisfied how). Interest on trust accounts
  accrues to the participant.
- **accounts.md §10** — withdrawal, cascade board, period statement and
  the interest job are no longer listed as unbuilt. Bank integration
  stays out of scope, in writing.

## 2.3.56c — 2026-08-16 · G3 after-delivery pipeline

- **V7 §6** — After Delivery shares one Trading Day and TUID. Imbalance
  loads the eleven §13 legs from `Mo.Balancing` / `GET /balancing/…`.
  The book figure is labelled "book actual − scheduled" and is not the
  bill. Month balancing equals the published §13 sum, or honest empty.
- **V7 §7** — Production `SoGateway.Http` is the SO path; the mock is a
  test double. Acknowledge is a round-trip. Reasons, `control_state`,
  the §14.2(1) report, availability revisions, IE disputes, and event
  subscription (poll fallback labelled) are on Market › SO. A missing
  instruction under `so_controlled` is a breach.
- **V7 §8** — Recon primary action is Raise query on
  `Mo.Settlement.Query` with a bid + meter + schedule pack. Escalation
  is in the UI. The day-board ledger reads projected events; it no
  longer says the ledger is not recorded.
- **V7 §14** — Vintage on the org allocation view; official AE refused
  when provisional.

## 2.3.56b — 2026-08-16 · G1 submission honesty

- **V7 §4** — Submit and the 03:00 `SubmitDamBids` worker write a 168-period
  `WB.Sawem.Submission` through `Intake.put/1`, per Trading Unit. The book
  ladder stays the kitchen; it is not what the market takes. The Submission
  Desk drawer is draft left, last accepted Submission right.
- **V7 §5** — IDM is five Code gates (18:00 D−1, then 00:00 / 06:00 / 12:00 /
  18:00 on D), not a rolling T−60 hour. The tab shows carry vs re-declare,
  lodges a TUID re-declaration, and keeps consent on its own control.
- Anyone who relied on the ladder write has a different object in the
  register: the operative offer is now a `Submission`.

## 2.3.56a — 2026-08-16 · G0 orphan views on their homes

- **V7 §3** — Standing data is an editor: every §7.2 field has an input,
  a clause, and a stated provenance. A blank is not written as zero.
- **V7 §4** — Daily and After Delivery › Settlement show unconstrained vs
  constrained `#schedule-view`, not only the publication sentence.
- **V7 §6 / §7** — After Delivery › Imbalance is the §13 statement;
  Market › SO and Settlement hour drill-down show the Instructed Energy
  ramp trace.
- **V7 §8** — Recon hosts the settlement statement and query clocks.
- **V7 §15** — Accounts shows required vs posted cover and both
  satisfaction paths; Market › Info carries the strip.

## 2.3.56 — 2026-08-15 · V9 Simulated SAWEM market

- **V9 §4** — new §4.7 *Simulated SAWEM market*: fifty extra participants
  (15 IPP / 15 off-taker / 20 trader) registered with MO and SO, daily
  DAM submissions, `mix setup.market`, `--include-market` on existing
  setup, and the landing-page **Include simulated market** overlay.
  Profile table and stage graph now include `market` / S16.
- **V9 §3** — `WB.Sim.Market.DamSubmitter` is the third long-running sim
  surface (dev-only GenServer, 03:00 SAST). Mix tasks 3→4
  (`mix setup.market`).
- **Coverage** — long-running processes 2→3; mix tasks 4→7.

## 2.3.55 — 2026-08-15 · V7 Bid Desk — five tabs

- **V7 §4** — Bid Desk is five `live_action` tabs under `/org/brp/bid-desk`
  (Daily, Submissions, IDM, Settlement, Month). §4.5 points at Submissions
  and the draft-not-sent banner. New §4.20 (five `tab-sample`s, draft
  lifecycle rail) and §4.21 (operate 2026-07-15 from the stall). Sidebar
  stays **Bid Desk**.
- **V7 §5** — new §5.11 for the Bid Desk IDM tab: five chips, classification,
  labelled book ledger, empty-day sentence.
- **Coverage** — `/org/brp/bid-desk*` + seven LiveComponents; live 67→71,
  LiveComponents 30→37.

## 2.3.54 — 2026-08-15 · V7 Bidding console — six tabs

- **V7 §4** — Bid Desk still teaches the BRP ladder; expands §4.8 (envelope,
  three doors, `WB.Brp.Bid` vs `WB.Sawem.Submission`); new §4.17–§4.19
  (doors, consumption curve, energy limits). Golden hour R 900 sits beside
  the desk-demo R 980. Rollover is the Market Operator's act.
- **V7 §5** — five-gate rail, IDM field table, on/against matrix, `[D-03]`
  collar with both prices, `IdmDecision` order; new §5.9 (what IDM does not
  change) and §5.10 (MO Bidding IDM tab).
- **V7 §6** — SE is last IDM else DAM constrained; spine DAM SG → IDM SE →
  AE; new §6.10 so nobody subtracts IDC from EPM.
- **V7 §10** — sidebar **Bidding** replaces MO Bid Desk / Clear / IDM /
  Settlement rows; follow-along is Solve then Publish; new §10.7 (six
  `tab-sample`s) and §10.8 (operate 2026-07-15 18:00). §10.6 Balancing
  Groups stays.
- **Glossary** — `g-bidding-console`.
- **Coverage** — `/mo/bidding*` + nine LiveComponents; live 61→67,
  controllers 80→85.

## 2.3.53 — 2026-08-15 · V7 §3.16 pay, deposit, and both account screens

- **V7 §3.16** — *Where the money actually is*: **Add funds** (deposit into your own
  bank) versus **Pay** (deposit of cash cover into the Collateral Reserve) versus
  **Pay by EFT** (payment into Trading Clearing or the MO Charge Account); the
  own-bank cap; the organisation **Market Accounts** screen (invoices, automatic
  EFT for the monthly fee, two designations, both statements); and the Market
  Operator **Accounts** screen (reconciliation, designations, **View
  transactions**, recent deposits, the monthly tariff, cash position).
- **V7 §10.1** — Accounts row names transactions, deposits and the monthly tariff.

## 2.3.52 — 2026-08-15 · V7 §3.16 participant sees two accounts, not three

- **V7 §3.16** — on **Market Accounts** (`/org/market-accounts`) a participant
  sees designations in Trading Clearing and Collateral Reserve only. Market
  Operator fees are deducted from Clearing and appear on the statement. The
  Market Operator Charge Account stays on the Market Operator's **Accounts**
  screen (`/mo/accounts`).

## 2.3.51 — 2026-08-14 · V7 §3.16 the three accounts from scratch

- **V7 §3.16** — folds in `docs/references/market/accounts.md` §§1–6: the one-paragraph
  picture and everyday comparisons; the six words (on trust, sole name,
  designation, first fixed charge, ring-fenced); each account's use and
  rules; and a worked August 2026 month (everybody pays vs Metro Foods
  short, cover drawn, cascade, MO Charge Account never touched). Bridges
  the owed-share picture to §15.3's payments-in sharing basis.
- **Glossary** — `g-market-bank`, `g-market-operator-charge-account`,
  `g-designation`, `g-on-trust`, `g-first-fixed-charge`, `g-ring-fenced`.

## 2.3.50 — 2026-08-14 · V7 §3.16 Bank accounts, EFT payments and the money panel

- **V7 §3.16** — *Where the money actually is, and how you move it*: the participant's own bank
  account, opened with **R3 000 000** on registration and topped up with **Add funds**; the
  designations inside the three §15 accounts and why they are slices of shared accounts rather than
  accounts of your own; paying an invoice by **EFT** with the three things the screen does in
  advance — warns you before the due date, refuses to overdraw, and explains that paying short is a
  **Shortfall** and not a smaller payment; both statements; and the cascade-reduction line that says
  *why* a creditor was paid less. Adds the participant's **Market Accounts** screen
  (`/org/market-accounts`) and the Market Operator's side on **Accounts** (`/mo/accounts`):
  the three accounts, the reconciliation line, the month's cash position, and who cannot pay.

## 2.3.49 — 2026-08-14 · Register Trading Units, not books

- **V7 §3.2 / §3.11** — You do not attach strategy books to the BRP
  seat. After ACTIVE, file Trading Units from sites and pools
  (**Register with Market**). §3.1, §3.10, §3.12, the §1 primer loop,
  and §10.2 follow-along drop the attach-books wording.

## 2.3.48 — 2026-08-14 · Balancing Groups on the consoles

- **V7 §3.6** — designation on Trading Units, the four ways a group stops
  (duration / cancel / MO suspension / §3.3(6) exclusion), kept distinct.
- **V7 §6.7** — screen path replaces the API-only paragraph; cover forecast
  as the answer to the contingency warning.
- **V7 §10.6** — MO Balancing Groups tab: Notified column, Suspend and
  Cancel, no Designate or Amend.
- **V7 §11.9** — SO zone-constraint flags with impact preview.
- **V7 §17.12** — we let the MO cancel a group, with a mandatory reason.
- **Glossary** — `g-balancing-group` gains the four-stop distinction;
  `g-zone-constraint-flag` added.

## 2.3.47 — 2026-08-14 · Balancing Groups worked hour

- **V7 §6.7** — Balancing Groups in plain language: two pockets vs one pair
  of trousers, who designates, a stepped 18:00 example (ungrouped
  −R17 942.88 vs grouped R0), and the directional catch when a zone is
  full. Figures 6.1–6.5.

## 2.3.46 — 2026-08-14 · Trading Unit registration wizards

- **V7 §3.9B** — Screen-by-screen guide to every Trading Unit registration
  wizard: IPP (Register generator site), Off-taker (Identity · Zone ·
  Delivery · Demand · Finance), Trader (Identity · Zones · Finance), and
  the Market Operator inspection boards (Participants **Trading Units**
  expand; **IPPs**). Shared chrome, every input, confirmation.

## 2.3.45 — 2026-08-14 · MO Registrations Trading Units

- **V7 §3.13A / §10.5** — Participants → Registrations **Books** is now
  **Trading Units**. The count expands the party's registered units (TUID,
  name, class, zone, status, site or pool), not strategy books.

## 2.3.44 — 2026-08-14 · Trading Units Zone and Class filters

- **V0 §2.4** — `/org/trading-units` filters by **Zone** and **Class** on
  OffTaker, IPP and Trader seats.

## 2.3.43 — 2026-08-14 · Trading Units Pool column

- **V0 §2.4** — On a Trader organisation, `/org/trading-units` **Site** is
  **Pool** and shows the trader pool name.

## 2.3.42 — 2026-08-14 · Trader Pools BRP count

- **V2 §5** — Trader Pools **BRP** shows a Trading Unit **count**. Hover lists
  each TUID and its colour-coded zone.

## 2.3.41 — 2026-08-14 · Trader pool zone select-all

- **V2 §5** — The pool Trading Unit wizard **Zones** step has **Select all
  zones** and a check mark on each zone card.

## 2.3.40 — 2026-08-14 · Trader pool TU in any zone

- **V2 §5** — A trader may register a pool Trading Unit in **any** published
  network zone. Member location is not checked. **No Market Zone** is gone
  from the Trader Pools BRP cell.

## 2.3.39 — 2026-08-14 · Trader Pools BRP column

- **V2 §5** — Trader Pools **Trading Units** is now **BRP**. The cell is blank
  until the organisation is an **ACTIVE** Market BRP. Then: TUID + zone (click
  through to Trading Units), **No Market Zone**, or **Register with Market**
  (one Trading Unit per selected pool zone).

## 2.3.38 — 2026-08-14 · Trading Units Site for demand-side

- **V0 §2.4** — `/org/trading-units` **Site** shows the off-taker site on a
  demand-side unit, not only a generator site.

## 2.3.37 — 2026-08-14 · IPP Sites: name above badges

- **V2 §4** — The IPP Sites **Site** column shows the generator site name
  in bold above the status and technology badges. The address is the
  map-pin link below.

## 2.3.36 — 2026-08-14 · BRP cell: ACTIVE seat and No Market Zone

- **V2 §3 / §4** — IPP and OffTaker **BRP** cells stay blank until the
  organisation is an **ACTIVE** Market BRP. An unallocated site shows
  **No Market Zone** instead of **Register with Market**.

## 2.3.35 — 2026-08-14 · OffTaker BRP gated on ACTIVE seat

- **V2 §3** — OffTaker Sites **BRP** is blank until the organisation is an
  **ACTIVE** Market BRP. Only then can a site be registered with the market.

## 2.3.34 — 2026-08-14 · Org BRP application status badge

- **V7 §3** — **Your application** uses the same coloured status badge as
  MO Pending Clocks. The italic gloss after the chip is gone.

## 2.3.33 — 2026-08-14 · OffTaker BRP and Trading Pools

- **V0 §2.4 / V2 §3** — OffTaker Sites **BRP** shows TUID then zone, or
  **Register with Market** (demand-side wizard). The Organization sidebar
  has **Trading Pools** (`/org/trading-pools`) beneath Trader Pools.

## 2.3.32 — 2026-08-14 · IPP Sites BRP shows TUID

- **V2 §4** — A registered **BRP** cell shows the Trading Unit id above
  the zone. Clicking either opens `/org/trading-units`.

## 2.3.31 — 2026-08-14 · IPP Sites BRP zone colour

- **V2 §4** — A registered **BRP** cell on IPP Sites uses the same zone
  colour swatch as the SO and MO zone registers.

## 2.3.30 — 2026-08-14 · Trading Unit zone colours and IPP BRP link

- **V0 §2.4 / V2 §4** — `/org/trading-units` uses the same zone colour
  swatch as the SO and MO zone registers. A registered **BRP** cell on
  IPP Sites opens Trading Units.

## 2.3.29 — 2026-08-14 · Organization Trading Units directory

- **V0 §2.4** — `/org/trading-units` lists the organisation's registered
  Trading Units (TUID, class, zone, MCR, status).

## 2.3.28 — 2026-08-14 · Organization Trading Units sidebar

- **V0 §2.4** — The Organization sidebar has a **Trading Units** item
  (`/org/trading-units`) next to the site and pool directories.

## 2.3.27 — 2026-08-13 · SO Registry tabs

- **V7 §11.0** — `/so/registry` has three tabs: **IPPs**, **Inbox**, and
  **Certification Queue**. Each tab shows its card.

## 2.3.26 — 2026-08-13 · MO / SO IPPs expand the TU card under the row

- **V7 §10 / §11** — MO **IPPs** and SO **Registry** use the same **View**
  behaviour as org standing data: certified reserve and the §7.2 field cards
  expand under the row (scrollable). Click **View** again to close.

## 2.3.25 — 2026-08-13 · Standing-data View expands the IPP row

- **V7 §3.7 / Standing data** — The Trading Units chip card is gone. **View**
  expands certified reserve and the §7.2 field cards under that IPP row
  (scrollable). Click **View** again to close.

## 2.3.24 — 2026-08-13 · Standing-data IPPs: View icon and Fields

- **V7 §3.9A / Standing data** — The IPPs table has a **Fields** count
  (`30/30`) and an **Actions** view icon (tooltip **View**, to the left).
  The Trading Unit field cards open only when that icon is clicked. The
  green “complete” banner is gone.

## 2.3.23 — 2026-08-13 · Standing-data wizard: no Review, no bulk entry

- **V7 §3.7** — The standing-data wizard has no Review step. **Register**
  appears when every required field is complete.
- **V7 §3.7 / Standing data** — Bulk CSV entry is removed from
  `/org/brp/standing-data`. Maintain each Trading Unit on the editor.

## 2.3.22 — 2026-08-13 · IPP register on SO, MO, and org standing data

- **V7 §3.9A / §10 / §11** — A generator site filed through the standing-data
  wizard appears live on org **Standing data**, MO **IPPs**, and SO
  **Registry**, with organisation name and BRP ref. Click the IPP to read
  every §7.2 field.

## 2.3.21 — 2026-08-13 · V2 §4.1 Site column shows address under the badges

- **V2 §4.1** — IPP Sites Site column: status and technology badges on the
  first line; the site **address** (not organisation or site name) under them.

## 2.3.20 — 2026-08-13 · V7 §3.7.8 Review is optional

- **V7 §3.7.1 / §3.7.8** — Review does not gate **Register** and is not marked
  outstanding on the stepper.

## 2.3.19 — 2026-08-13 · V7 §3.7.6 solar/wind engineering fields disabled

- **V7 §3.7.6** — For solar and wind, N/A engineering fields (worked renewable
  mapping) are shown disabled with the assumed value. Hydro start-up, run
  limits, and ramps stay editable.

## 2.3.18 — 2026-08-13 · V7 §3.7.5 / §3.7.6 i-icon field help

- **V7 §3.7.5 / §3.7.6** — Delivery and Engineering labels show an **i** icon;
  hover for the same short summary as the field guide.

## 2.3.17 — 2026-08-13 · V7 §3.7.3 Identity dispatchable checkbox

- **V7 §3.7.3** — Identity step: **Mingen**, **EL1**, and **Dispatchable** sit
  on one row. Dispatchable is a checkbox (checked = yes); unchecked is a
  valid No.
- **V7 §3.7.1** — Required standing-data fields show a red `*` on the label.

## 2.3.16 — 2026-08-13 · IPP Sites Register with Market

- **V2 §4.1 / V7 §3.7 / §3.9A** — Unregistered generator sites on IPP Sites
  open the standing-data wizard with **Register with Market** (text only), not
  **Register with BRP**.

## 2.3.15 — 2026-08-13 · V7 §3.7.7 Finance bank card pick

- **V7 §3.7.7** — Standing-data wizard Finance: **Bank** is a card pick of
  South African banks (name and logo, alphabetic), not a free-text box.

## 2.3.14 — 2026-08-13 · V7 §3.7 BRP standing-data wizard (field guide)

- **V7 §3.7** — Full per-step, per-field guide for the Register generator
  site wizard: what each input means and whether it is required. Site,
  Identity, Zone, Delivery, Engineering, Finance, Review, then TUID and
  optional reserve-certification request. §3.9A stays the journey overview
  and points here for the fields.

## 2.3.13 — 2026-08-13 · BRP standing-data wizard (sticky tabs, gated Register)

- **V7 §3.9A** — Standing-data wizard: branded header, sticky tabs and
  footer, jump to any step, red outstanding + hover list, **Register**
  only when required participant fields are complete. Also opened from
  IPP Sites **Register with BRP**.
- **V2 §4.1** — BRP column notes the gated Register button.

## 2.3.12 — 2026-08-13 · V2 IPP Sites BRP column (standing data)

- **V2 §4.1** — Zone column renamed **BRP**. A generator site that has a market
  Trading Unit shows its network zone; otherwise **Register with BRP** opens the
  §7.2 standing-data wizard for that plant.

## 2.3.11 — 2026-08-13 · V2 generator-site Live Infrastructure on the Site icon

- **V2 §4.1** — Live Infrastructure is opened from the Site-column icon (hover
  preview, click for the modal). The Actions cube is gone; remaining row
  actions are Sell-side Strategy, View Consumption, and Edit.

## 2.3.10 — 2026-08-13 · V7 §3.13A BRP application board (comprehensive)

- **V7 §3.13A** — Rewrote the joining journey end-to-end in layman's terms: every
  one of the fifteen statuses (what it means, whose move, the clock, what the
  applicant sees on Registration, what the Market Operator sees on Pending
  Clocks / Registrations); every lawful transition and who may take it; how
  agreements are prepared as hidden drafts, digitally signed by the Market
  Operator, issued only then, viewed (not downloaded) by the applicant, signed
  as a pair, approved, and activated. Documents that Activate from APPROVED
  completes accession housekeeping, that the daily clock takes exactly three
  moves, and that an overdue CONTRACTS_ISSUED is not auto-expired.
- **V7 §3.1 / §3.10 / §3.11 / §3.13** — PENDING → ACTIVE is no longer taught as
  a single Activate; those sections now point at the application board.
- **V7 §10.2 / §10.5** — Follow-along and the two-board intro aligned with
  Pending Clocks vs Registrations; joining detail stays in §3.13A.

## 2.3.9 — 2026-08-12 · V7 extension requests — live flow (comprehensive)

- **V7 §3.13** — *Asking for more time* rewritten end-to-end: which clocks are
  extendable; how to file days + reason; request is a record and does not move
  the deadline; live broadcast to MO Extension Requests; cannot re-ask while
  pending or after decline for that clock; grant/decline arrive live on the
  applicant page (new due date on grant).
- **V7 §10.5** — *Working the Extension requests queue* rewritten: how rows
  arrive live; column definitions; Grant / Grant with days… / Decline effects on
  the queue, Pending Clocks, and the applicant; stacking after grant vs no
  re-ask after decline.

## 2.3.8 — 2026-08-12 · V7 extension requests (applicant + MO)

- **V7 §3.13** — *Asking for more time*: applicant form on Registration with
  business days and reason while `INFO_REQUESTED` or `CONTRACTS_ISSUED`; request
  alone does not move the clock; grant updates the application deadline live;
  decline is live and blocks a second ask for that clock; no second request while
  one is undecided.
- **V7 §10.5** — *Working the Extension requests queue*: columns (BRP REF,
  Organization, Status, Deadline with time left, Days asked, Reason) and MO
  actions Grant / Grant with days… / Decline (reason required on refuse); queue
  updates live when an applicant requests.

## 2.3.7 — 2026-08-12 · V7 §3.13A BRP application state machine, and Z9

- **V7 §3.13A** — *The application board, step by step*: the fifteen-state
  operational machine behind accession, as a table with each state's period in
  business days and whose move is next. Documents the applicant's four actions
  (submit information, sign contracts, withdraw, request reinstatement) and
  nothing else; the three transitions the daily clock makes unattended, and why
  `PENDING` and an overdue `CONTRACTS_ISSUED` are deliberately **not** among
  them; both agreements generated, MO-signed and downloadable, with both
  signatures bound to the same terms hash; the per-change notice and the
  undelivered queue; and reinstatement returning to the state the application
  had actually reached.
- **V7 §2** — Ninth network zone `Z9` **Eastern Cape** (George, Nelson Mandela
  Bay, Buffalo City) in the register table; `Z5` Eastern Corridor carved back to
  the inland wind corridor and its core nodes updated, since East London sat
  inside the old polygon and the register has to stay mutually exclusive.

## 2.3.6 — 2026-08-11 · V7 §3.1 Security recommend + compulsory VAT

- **V7 §3.1.5** — Recommended guarantee amount from the current MGC Warning
  Limit maximum (when published); wizard shows that maximum on Security.
- **V7 §3.1.6** — VAT number compulsory; South African format (10 digits,
  starts with 4).

## 2.3.5 — 2026-08-11 · V7 §3.1.5 No None security for market participants

- **V7 §3.1.5** — Documented that Guarantee type **None** is blocked while
  Market participant is on; wizard requires a real instrument and amount.

## 2.3.4 — 2026-08-11 · V7 §3.1.3 Party type → Annexure 1 map

- **V7 §3.1.3** — Party types each get a plain-meaning line; documents that the
  wizard disables Qualifying criterion until Party type is chosen, then offers
  the usual Annexure 1 ground (Generator→1(1), Trader→1(2), network types→1(3),
  Import/Export→1(4), Consumer/Reseller→1(5)).

## 2.3.3 — 2026-08-11 · V7 §3.1 BRP registration wizard

- **V7 §3.1** — Rewrote *One registration per organisation* around the
  six-step Info-tab wizard (`/org/brp`): Identity, Party, Trading, Security,
  Agreements, Review. Every field explained in plain language with examples;
  view mode and PENDING → ACTIVE called out. Follow-along paths updated.

## 2.3.2 — 2026-08-10 · MS14 — generator site to market (§7.2 / §7.1(2))

- **V7 §3.9A** — *Bringing a generator site to market*: onboarding wizard on
  `/org/brp/registry`, owner split (site / plant engineer / finance / SO).
- **V7 §11.0** — SO Registry inbox and certification queue (`/so/registry`);
  certified capacities agreed by the SO, never typed by the participant.
- **V7 §17.11** — Readings: (q)–(t) as workflow output; emissions as site fact;
  `dispatchable?` de-defaulted ([D-20]).
- **V4 §1** — Site as source of market standing data; register CTA.
- **Glossary** — `g-standing-data`, `g-registration-notice` (bridges
  `g-certified-reserve-capacity`).

## 2.3.1 — 2026-08-10 · Org Deals tab consolidates deal lifecycle

- **V0 §2** — Sidebar **Deals** replaces separate Proposals / Negotiations /
  Contracts / Disputes items; tabs with counts under `/org/deals`.
- **V5** — Proposal / Negotiation / Contracts paths moved to
  `/org/deals/…`.
- **V6 §11** — Disputes room path and badge wording updated for the Deals tab.

## 2.2.17 — 2026-08-10 · V7 §2.1 provisional zones + SO Zones view

- **V7 §2.1** — Lists the eight `PROV-2026-07` zones (Z1–Z8) with dominant,
  core nodes and market implication; documents the SO **Zones** screen
  (`/so/zones`): map, Registry click-to-pan, provisional load.
- **V7 §11** — SO console screens line names Dispatch Desk and Zones.

## 2.2.16 — 2026-08-09 · V7 §1.12 what belongs elsewhere

- **V7 §1.12** — Lay explanation of V7 vs V3/V6/V8/V9; kitchen metaphor;
  “two bills” (PPA vs market); entity-map and hand-off table.

## 2.2.15 — 2026-08-09 · V7 §1.9 clock-dial matches V0 §6

- **V7 §1.9** — Market clocks redrawn with the V0 §6 `clock-dial` layout
  (SVG face, job list, day-of-month strip) instead of the flat item list.

## 2.2.14 — 2026-08-09 · V7 §1.8 automatic residual bid

- **V7 §1.8** — When/how `SubmitDamBids` posts residuals; residual
  arithmetic; BidBuilder hour-12 worked offer; desk sample of what the
  bid looks like; bridge to §4 for full ladder rules.

## 2.2.13 — 2026-08-09 · V7 §1.7 long / short / net to zero

- **V7 §1.7** — Kitchen metaphor, residual arithmetic, three-hour worked
  table, allocation-diagram / mermaid / pricing-flow visuals; distinguishes
  Bid Desk long/short from post-delivery imbalance.

## 2.2.12 — 2026-08-09 · V7 §1 SAWEM primer expanded

- **V7 §1** — Lay primer on what SAWEM is; BRP role and how a BRP trades;
  Market Operator and System Operator in detail; metaphors and entity-map /
  mermaid / pricing-flow figures. Preserves prior subsection anchors
  (`#11-dam-idm…` through `#16-what-belongs…`).
- **Glossary** — SAWEM / BRP definitions deepened; new **Market Operator**
  and **System Operator** entries pointing at §1.5 / §1.6.

## 2.2.11 — 2026-08-09 · Mermaid LR sources parse-safe

- **V6** — Flowchart LR sources quoted; thousand-separator commas removed
  from node labels so Mermaid 11 renders LR the same as TB.

## 2.2.10 — 2026-08-09 · Mermaid flowcharts render in HTML

- **Build** — Manual pages load Mermaid 11 and convert
  `<pre class="mermaid">` blocks into diagrams (flowchart TB/LR).
- **V6** — TB/TD diagram sources tightened so they parse (quoted labels,
  no thousand-separator commas in node text).

## 2.2.9 — 2026-08-09 · V6 §13 / §14 worked months expanded

- **V6 §13** — Lay-language physical day: what it demonstrates, Resolve →
  Match → Price → Adjust → Ledger with mermaid / pricing-flow figures,
  conservation and seat-net explanations.
- **V6 §14** — Same treatment for the virtual CfD day: strike/WER split,
  no-loss match, admin fee, ledger pairs, screen checklist.

## 2.2.8 — 2026-08-09 · V6 §12.15 dispute checklist expanded

- **V6 §12.15** — Lay-language purpose, ordered checklist, mermaid path,
  physical (9 Jul) and virtual worked replies, do/don’t table.

## 2.2.7 — 2026-08-09 · V6 §12 drop worked-screen section

- **V6 §12** — Removed former §12.14 worked screen reading (covered by
  §13); role-aware → **§12.14**, dispute checklist → **§12.15** (anchors
  `#124-…` / `#125-your-fast-dispute…` unchanged).

## 2.2.6 — 2026-08-09 · Statement PDF modal Print

- **Statement PDF modal** — **Print** control alongside Download; header CTA
  labelled **Download as PDF**.
- **V6 §9.6** — Documents Print on the PDF viewer modal.

## 2.2.5 — 2026-08-09 · V6 §12.5 Statements purpose

- **V6 §12.5** — Purpose / what it conveys / why; why a statement matters;
  use / do-not-use checklist (vs Ledger and consolidated month invoices).

## 2.2.4 — 2026-08-09 · Ledger stat cards + §12.4 wording

- **Ledger UI** — Mini-stats replaced with label-header **stat cards**;
  subtitles match the §12.4 Why column.
- **V6 §12.4** — “Mini-stat cards” renamed to “Stat cards”.

## 2.2.3 — 2026-08-09 · V6 §12.4 Ledger purpose

- **V6 §12.4** — Purpose / what it conveys / why; why the ledger matters;
  checklist of what to look for (running balance, zeros, drafts, categories,
  provenance).

## 2.2.2 — 2026-08-09 · V6 §12.3 Periods purpose

- **V6 §12.3** — Brief purpose / what it conveys / why for the Periods
  run directory (vs Ledger and Statements).

## 2.2.1 — 2026-08-09 · V6 §12 settlement UI synced to shipped screens

- **V6 §12** — Rewritten against the live Settlements UI: shared tabs +
  parties chrome; field-by-field **Periods**, **Ledger** (text monthly
  summary, not chart), and **Statements** month hub; period **detail**
  header, every stat card (why), both energy charts, line-item ledger,
  charges & credits summary (replaces cost chart), Allocation, Energy
  balance, counterparty, audit, optional saving. Preserves load-bearing
  anchors `#122-read-the-page-from-evidence-to-cash`,
  `#126-the-running-ledger--month-on-month-position`,
  `#123-worked-screen-reading`, `#124-role-aware…`, `#125-your-fast-dispute…`.

## 2.3.0 — 2026-08-08 · V7/V8 — inter-zonal capability and the published network model

- **V7 §2.3 / §2.5 (new)** — The provisional map's corridor limits are no longer blank.
  §2.3's "they carry no corridor limits" row becomes "the corridor limits are estimates
  too", and a new **§2.5 What can move between areas** documents the per-zone panel on
  **BRP / Market → System Operator**: export and import capability per area, each corridor
  with its direction and figure, and the cross-border links with import and export bounded
  separately. Carries the honesty framing in full — why an estimate with its derivation
  attached beats a blank, what the amber **assumed** chip means, that no figure is green
  yet, and which single estimate to distrust most (`Z1 → Z4`).
- **V8 §4.5 (new)** — `GET /api/v1/network-model` · `/network-model/{version}`: the other
  half of §3.3(4). Documents the provenance-before-numbers rule and why an unregistered
  version is 404 rather than an empty 200.
- **V8 §4.6 (new)** — `GET /api/v1/network-model/zone-constraints`: the §3.3(6) flags, and
  why an empty set carries its reason.

## 2.2.0 — 2026-08-08 · V6 — bilateral settlement disputes, end to end

- **V6 §11.5** — Rewritten for the shipped mechanism: **Raise dispute**
  beside Preliminary / Finalise on the period header (PRELIMINARY and FINAL
  only), the three-step composer, and what the raise screen does for you —
  the six checks that pre-select grounds, with the figures that prompted
  them, and why a suggestion is not an accusation.
- **V6 §11.7** — Correction routes as a table: **re-settle** (explicit
  reverse + re-run) vs **forward adjustment** (`dispute_correction` on a
  later period, disputed period keeps its stamp), plus two sign-offs and the
  “nowhere to land yet” case.
- **V6 §11.9 (new)** — The dispute screens: the banner, the composer, and
  the org-level **Disputes** room with its needs-my-action default. The
  figures table's turn-taking is documented as the contract wizard's
  grammar, because it is the same grammar.
- **V6 §11.10 (new)** — When the parties cannot agree: lapsed, deadlocked,
  escalated. Names the three things the platform does at escalation (quote
  the agreement's forum, hand over the evidence bundle, record the ruling)
  and the boundary — escalation is **not** a hand-off to the Market
  Operator.
- **V6 §11.11** — `DisputeClock` added to the worker cadence table.
- **V6 §11.1 / §11.4 / §11.8 Example 3** — Corrected: a routine re-run
  against a locked period now **skips it and logs why** rather than raising.
  An exception there would abort a whole nightly batch, which is untenable
  once counterparties can raise disputes at will.
- **V6 §11.8 Example 4** — The canonical dispute narrative retold through
  the actual screens, with the forward-adjustment variant.
- **V6 §12.5** — The fast dispute checklist now points at the composer,
  which performs it.
- **Glossary** — `g-bilateral-settlement-dispute`, `g-dispute-item`,
  `g-resolution-digest`; the market-side `g-settlement-dispute` entry now
  disambiguates against the bilateral one in both directions.
- **V10 TODOs** — “Settlement Raise dispute UI + `dispute_correction`
  adjustments” closed.

## 2.1.4 — 2026-08-08 · V6 — Preliminary / Finalise on period header

- **V6 §11 / §12 / §3** — Document Mark Preliminary (eye) and Finalise
  (lock) as shipped party-closer controls on the period detail header,
  with exact tooltips and IDs; scrub leftover “intended / future rule”
  wording. Raise dispute remains a V10 TODO.

## 2.1.3 — 2026-08-08 · Settlement Preliminary / Finalise controls

- Period detail header: eye **Preliminary** and lock **Finalise** icon
  buttons with tooltips (DRAFT → PRELIMINARY → FINAL). V6 §11.2 Follow
  along updated; Raise dispute remains a V10 TODO.

## 2.1.2 — 2026-08-08 · V6 §11 — status lifecycle, disputes, reversal

- **V6 §11** — Expanded: DRAFT → PRELIMINARY → FINAL in layman’s terms;
  who/where/when for bilateral disputes vs market disputes; what DISPUTED
  does; why REVERSED never becomes FINAL (replacement periods do); five
  worked examples. Honesty note on shipped locks vs pending UI actions.
  §3.4 provisional/DRAFT wording aligned; V10 TODO for status UI.

## 2.1.1 — 2026-08-08 · V3 §5B — Settled Chains screen guide

- **V3 §5B** — new Strategy chapter after Book: every Chains card and field
  (verdict, list, rail, volume bridge, money, legs, book check) in layman’s
  terms; Getting-in tab table, demo tour, and V6 §10.6 bridge updated.

## 2.1.0 — 2026-08-08 · V8 Market API volume + renumber Ops/TODOs

- **New V8 · Market API** — documents every `/api/v1` and `/internal`
  operation from live OpenAPI: auth, inputs/outputs, HTTP examples, and
  caller callouts (UI parallel, Oban MoGateway/SoGateway, or **no in-app
  HTTP caller**). Sandbox catalogue covered in §15.
- **Renumber** — former V8 Operations → **V9 · Operations & Administration**;
  former V9 TODOs → **V10 · TODOs**. Legacy `v8-operations.html` /
  `v9-todos.html` redirect to the new slugs.
- Hub paths updated (API integrator + MO/SO rows).

## 2.0.9 — 2026-08-08 · V6 §10 — Chains screen (Phase 1)

- **V6 §10.6** — new **Chains** strategy tab: verdict, rail, volume bridge
  (Unexplained), money, legs, book check; §10.3 runner wording (logs; screen
  recomputes); Follow along on the real path; glossary `g-unexplained-kwh`.

## 2.0.8 — 2026-08-08 · V6 §9 — full statement UI screen guide

- **V6 §9** — Reworked as a view-by-view guide: month hub, per-run statement,
  structured vs printable layout, PDF modal, party filter, worked walk, send
  checklist; §12.1 links into the new subsections.

## 2.0.7 — 2026-08-08 · V6 §9 — statement Download PDF modal

- **V6 §9 / §12** — Statement **Download PDF** opens a preview modal (iframe),
  then download from the modal; printable HTML stays as an on-page toggle.

## 2.0.6 — 2026-08-08 · V6 §9 — statement screens (run + month)

- **V6 §9** — Statements month hub + per-run statement view, Download HTML,
  Periods\|Ledger\|Statements toggle, Contracts register icon; follow-along
  updated to the real paths.

## 2.0.5 — 2026-08-08 · V6 §9 — where the statement is on screen

- **V6 §9** — new §9.1 maps “statement” to the product: period detail
  **Line-item ledger** (and running ledger / CSV); states clearly there is
  no Statements menu or PDF screen yet; follow-along no longer says
  “open statement”.

## 2.0.4 — 2026-08-08 · PPA running ledger UI

- **V6 §12.6** — new **Ledger** room (`/org/contracts/:ppa_id/ledger`):
  month-on-month charges/credits/VAT/running balance, category drill,
  line provenance, draft filter, CSV; access from Contracts icon,
  Periods|Ledger toggle, Net to date, and period detail.
- **V6 §12.1 / §8** — bridges from periods list and ledger theory to the
  running-ledger screen.

## 2.0.3 — 2026-08-08 · Settlement UI — who got what (Phase 1)

- **V6 §12** — Allocation block on contract settlement detail (above Energy
  balance): carve, share, fulfilment; seller member table / buyer sibling
  count; trivial one-to-one shows “Supply = metered, no carve”.
- **V4 §8** — IPP Allocations re-shot: named **Members** table (Share + ARF),
  expandable hourly rows, per-member chart (+ Tiers toggle), **Claims**
  reconciliation card, provenance footer.
- **V3 §5A** — new trader **Book** tab (`…/strategy/book`): procured vs sold
  warehouse rule (separate from forward **Runs**).
- **V3 §13.5** — off-taker **Sources** tab: settled suppliers + residual from
  grid; tab shell counts updated in §2.4 / §12.1.
- **Glossary** — ARF points at the Members fulfilment column.

## 2.0.2 — 2026-08-08 · V6 §8 ledger intro and parties/categories

- **V6 §8 intro** — what a ledger is (shared notebook / restaurant split),
  what it does (paired lines, Σ = 0), and why it is required, in layman’s
  terms with pipeline and entity-map figures.
- **V6 §8.1** — expanded: line-item anatomy; every party type; charge
  categories in five families (energy/capacity, network UoS, WER,
  adjustments, admin/certs); §7 residue → ledger category map; tiny
  balanced-pair examples.

## 2.0.1 — 2026-08-08 · V6 §7 pricing types expanded

- **V6 §7 intro** — Pricing vs Adjustments in plain language (cash register vs
  leftovers/missed promises), with pipeline spine and bridges.
- **V6 §7.1** — every physical tariff type with a shared 35,000 kWh teaching
  month and worked rand arithmetic plus figures: FIXED, PAY_AS_GENERATED,
  TOU_LINKED, ESCALATED, INDEXED, FLOOR_CAP, CAPPED, TWO_PART, MARKET_LINKED,
  TAKE_OR_PAY, FIRM_ENERGY, BLENDED; plus curtailment deemed-energy note.

## 2.0.0 — 2026-08-08 · The market, closed (MS13, Market Code §16, §9.5(7))

**A major version, because this is a new market-facing capability rather than
an increment.** Fourteen milestones ago this platform brokered wheeling
contracts. It now runs a spot market end to end — submissions, clearing,
prices, intraday, dispatch, metering, balancing and settlement — and MS13 is
the milestone that closes it: publishing the contract, proving conformance to
it, and saying out loud where the Market Code had to be interpreted.

- **V7 §12 — the worked delivery day is now the real day.** Tuesday
  15 July 2026, from the five submissions the evening before to the invoice
  three weeks later, with **every figure the test suite asserts**: the
  schedule unit by unit, the **R900.00** System Marginal Price, the four
  reserve prices at their floors, an energy account that nets to **exactly
  R0.00**, TU-PV1's **R0.00** constrained-off compensation and TU-COAL1's
  **+R13 500.00**, the intraday collar cutting R1 412.50 to **R945.00**,
  **475.234 MWh** of Instructed Energy with its trace, the hour where the
  balancing penalty **does not exist** and the hour where it bites at
  **3.05×**, and a bad debt that recovers **exactly R500 000**. The chapter
  it replaces was the prototype's narrative with prototype numbers.
- **V7 §17 — new chapter, "Where we had to interpret the Code."** Eighteen
  places where Rev 2.3 is unreadable, self-contradictory or silent. Eight are
  genuine forks and are *settings* rather than code; six of those eight move
  money, and each says how much. A factory that has been curtailed setting the
  price is worth **R1 700/MWh** in a scarcity hour. Being paid on the
  instruction rather than the meter is **R1 110.94** for 1.234 MWh that was
  never generated. Collecting a bad debt the literal way over-recovers by
  **R40 000**. When the market governance committee decides, the platform
  changes by configuration on a day the committee chooses.
- **The interface is published, and generated from itself.** The Market Code
  §16 data-exchange document is at `/api/v1/publication/data-exchange` with an
  OpenAPI description generated from the router, so the published contract and
  the running code cannot drift — a route the application serves and the
  document omits fails the build, and so does the reverse. The §9.5(7)
  scheduling-algorithm formulation, the rounding rule and the §16(4) audit
  evidence pack are published on the same unauthenticated surface, because
  §16 says *on its website* and a document only participants can read is not
  published.
- **An amendment to the algorithm cannot take effect inside a month.** §9.5(7)
  as a process with a clock in it: one full **calendar** month, so a January
  amendment gets a 28-day window and so does a February one, and the refusal
  names the earliest date it can take effect and how many days short the
  request fell.
- **A conformance harness a third party can run.** Twenty tests over real
  HTTP against a reference sandbox with a **drivable clock** — freeze
  09:59:59, submit, advance one second, watch the gate refuse you. Plus a
  thirty-five-row Code conformance checklist where a row with no test behind
  it **fails the build**, including when the test it rested on is renamed in
  an unrelated refactor.
- **New: the §6.5 event feed.** `GET /events` streams or pages on the same
  path, and the poll is the system of record. A stream that drops at 09:58 on
  a gate day must not cost anyone a gate, so everything the stream can deliver
  is retrievable by polling and the two are asserted to agree.
- **Reading back a rolled-over submission now shows the periods.** §9.3(2)
  rolls your previous declaration forward and your question is what you are
  trading on tomorrow — which a period *count* cannot answer.
- **Glossary** — nine terms: Bi-annual audit, Comment window, Conformance
  checklist, Data-exchange document, Defect switch, Dispatch-algorithm
  formulation, Idempotency-Key, Reference sandbox, Reference vectors.
- **Four superseded documents now say so**, each pointing at what replaced it:
  `docs/references/market/spot_mo.md`, `docs/references/market/mo/mo_data.md`, `docs/references/market/brp/so_data.md`
  and `docs/references/market/brp/brp_mo_so.md`.
- **Measured against the timetable, not a benchmark.** Clearing a 168-period
  unit-commitment problem with storage takes **15.6 s** of the four-hour
  10:00 → 14:00 window; balancing stacks for 200 units across 24 periods take
  **0.03 s**; the daily credit-cover cycle for 500 participants takes
  **0.007 s**. Recorded rather than only compared, because "it passed" says
  nothing about the headroom left.

## 1.18.0 — 2026-08-08 · Financial settlement (MS12, Market Code §15)

**Money leaving and entering bank accounts.** Statements, invoices,
self-billing invoices, the debit-note cascade, daily credit cover, the
three-tier query machine and administered settlement.

- **V7 §15 — new chapter, "Getting paid, and paying."** The settlement
  timetable as a calendar the reader can follow, from an indicative
  statement the next day to cash three weeks later. Four rules that
  surprise people, each with its clause: **you pay a disputed invoice on
  time** (§15.5(1) — and there is no partial payment, only a Shortfall);
  **somebody else's default costs you money in the same month**, with the
  worked R500 000 cascade and the Excess Participant who was owed R60 000
  and has to send R40 000 back; **credit cover is recalculated every
  business day**, with both ways to answer a call including paying an
  invoice early; and **a correction for one participant is applied to
  everyone** (§15.5(3)).
- **Same chapter, stated honestly:** the Market Code's credit-cover formula
  is incomplete — clause 15.10.3(4) is unreadable in the gazetted PDF and
  gives nothing at all for Undefined Potential Exposure. Ours implements
  the shape the words require with every coefficient a parameter, is being
  documented to the market governance committee, and the method is visible
  on the dashboard beside the figure.
- **V7 §16 — new chapter, "When the market breaks."** Administered
  settlement in plain terms: the Market Operator reconstructs the day with
  the governance committee's prior approval and reruns it properly
  afterwards. Includes why an Electrical System Collapse resets *both*
  scheduled and instructed energy — so no imbalance charge can arise from
  the collapse itself.
- **V7 §8** — the dispute kanban now points at the Code's own three tiers.
- **Glossary** — twenty-two terms: the three statement types, Invoice,
  Self-Billing Invoice, Debit Note, Debit Note Excess, Excess Participant,
  Shortfall, Unsecured Bad Debt, Credit Call, Required and Posted Credit
  Cover, Credit Cover Increase Notice, Warning Notice, Data Query,
  Settlement Query, Settlement Dispute, Validated Dispute, materiality,
  Administered Settlement and Administered Schedule; Settlement
  Recalculation Threshold rewritten.

## 1.17.0 — 2026-08-07 · The balancing mechanism (MS11, Market Code §13)

**Imbalance figures change materially for every participant, in both
directions.** The platform priced a single short/surplus price on the whole
deviation. Market Code §13 has eleven cumulative payment legs, two balancing
prices struck over merit orders, a 5 % Metering Accuracy Band that a dispatch
instruction removes, and a complete override for Balancing Groups.

- **V7 §6** — rewritten from scratch as the decision tree a participant
  actually faces: was I instructed? if yes, that part settles at my own offer
  and my 5 % allowance is gone; if no, am I within 5 %? if yes, the day-ahead
  price; if no, the *whole* deviation at the balancing price. With numbers —
  the cliff (19.100 MWh costs R810.00, 18.500 MWh costs R4 114.29), the tight
  hour (3.05 times the value of the energy), and the hour where the penalty is
  **zero** because a 2 000 MW Market Code allowance excludes the entire merit
  order. We flag that hour and are raising it with the market governance
  committee. Balancing Groups, the two-unit no-penalty example, and the catch:
  the System Operator can suspend the grouping for a constrained zone, hour by
  hour, in exactly the hours you most want it.
- **V3 §11** — the `IMBALANCE_COST_R` tile is re-baselined against §13. The
  previous model **under-stated the worst case** (no balancing price) and
  **over-stated the typical one** (no accuracy band). A limit tightened only
  for the new worst case will breach on ordinary days; re-set thresholds
  against a month of §13 figures rather than by scaling the old ones.
- **Glossary** — twelve terms: Imbalance Energy Bought/Sold, Balancing Energy
  Sold/Bought Stack, Balancing Price (Buying), Balancing Price (Selling), Out
  of Merit Energy, on instruction (balancing), against instruction
  (balancing), Metering Accuracy Band, Balancing Group instructed response,
  Balancing Penalty Factor, preliminary and official balancing price.

## 1.16.2 — 2026-08-07 · V6 §6 hierarchy waterfall expanded

- **V6 §6** — rewritten as a full layman’s chapter: problem picture, concept
  table, flat-set vs hierarchy, hand-off into Match, then each tier
  (PRIORITY / PRO_RATA / FIXED / surplus) with formulas, restaurant/jug
  metaphors, and worked figures; full cast walks; myths; screen inspection;
  four-fact diagnostic. Aligns PRO_RATA with demand shares (engine + V4).
- **V6 §5.12** — bridge retuned so FIXED is a separate guest rule (not a
  second badge on the same fair-queue member); links retargeted to new §6
  anchors.

## 1.16.1 — 2026-08-07 · V6 §5.11 / §5.12 in plain language

- **V6 §5.11** — expanded: bakery (shared meter) vs warehouse (trader book)
  metaphor, worked portfolio hour, oversell contrast, sorter rail, and
  figures so “two PPAs on a statement” is not mistaken for Allocate.
- **V6 §5.12** — expanded: VIP rope → fair queue → reserved-table ceiling
  restaurant metaphor, priority-prorata and Match figures, flat-set vs
  waterfall table, and clearer bridge into §6 / V4.

## 1.16.0 — 2026-08-07 · V6 §5 allocation & claim sets expanded

- **V6 §5** — rewritten from a short overview into a full teaching chapter:
  why allocation matters (what depends on the carve, what breaks without it),
  plain-language concepts, method table, scenario map, and step-by-step
  worked walks with allocation-diagram / entity-map figures for every
  allocation-set and claim-set scenario (A1 `PRO_RATA_DEMAND`, A2
  `FIXED_PCT`, B1 demand set, C1–C3 claim sets), plus portfolio vs meter-set
  contrast, hierarchy bridge, and a diagnosis rail.

## 1.15.0 — 2026-08-07 · MS10 metering and allocation: every meter has two owners

- **V7 §14** — a new chapter on metering in the market. The core idea in plain terms:
  **every meter has two owners.** Whatever flows through a metering point is sold by one
  party and bought by another, and the market requires that at every point in every hour.
  Worked with the wheeling chain — a generator injecting 42 MWh, an off-taker withdrawing
  38, and the trader's −4 MWh where losses and forecast error land because there is nowhere
  else for them to go.
- **§14.1, the consequence:** *if your counterparty has not registered, your settlement
  stalls too.* The rule is about the point, not about you, and one side cannot satisfy it
  alone — which is why the platform says so as soon as it sees it, rather than when the
  invoice fails to arrive.
- **§14.2 where your Actual Energy comes from.** Your Network Operator submits for its own
  delivery points and no others; we roll up to the hour and keep the sub-hourly data as
  evidence; a period missing intervals is flagged incomplete rather than scaled up. And the
  two things Actual Energy deliberately is not: netted across your units, or adjusted for
  network losses.
- **§14.3 three vintages of the same number.** Provisional from the day after and **never
  invoiced**, verified within seven days, revised any time after. Each figure carries its
  vintage; an official figure cannot be produced from provisional data. A revision does not
  overwrite, and how far a correction reaches depends on whether it passes the Settlement
  Recalculation Threshold.
- **§14.4 why we show exceptions rather than filling the gap.** An estimate settles, and
  then the fault is invisible. Five classes with **whose action** each is, sorted by
  megawatt-hours at risk rather than by count, each with a button to raise a data query with
  the evidence attached.
- **§14.5 the seven-day clock and the one that disagrees with it** — calendar days against
  working days, and why your query window is held open rather than closing before the
  figures it is for exist.
- **V6 §8.6** — a cross-reference from the wheeling ledger: SAWEM allocation is a second
  conservation rule at a different level, and network losses move from an energy uplift to
  the Network Operator's own market purchase.
- **Glossary** — nine terms: Actual Energy, allocation (metering), metering point, reading
  quality, data vintage, verified metering, Data Verification Period, Settlement
  Recalculation Threshold, Metering Service Provider.

## 1.14.0 — 2026-08-07 · MS9 dispatch and Instructed Energy: the area under the ramp, the trap, and the log you cannot see

- **V7 §7** — substantially rewritten. **What an instruction actually is**: not "reduce
  output" but a level, a time and a ramp rate together — and the energy the market
  credits you with is the **area under that ramp**, not a step change. Getting from 465
  to 480 MW at 8 MW/min starts the ramp at 18:18.125, and those 1.875 minutes are worth
  0.234 MWh in the hour. Which of your four registered rates applies is decided by the
  transition, not chosen; a transition crossing your minimum takes the **slower** of the
  two, and every instruction we show you names the rate and its clause.
- **§7.2 we show you the working.** The segment table — 8 428.125, 885.9375, 19 200
  MW·min summing to 28 514.0625 and 475.234 MWh — because the Code lets you dispute an
  Instructed Energy value and a table you can add up yourself is what makes that
  possible. A single number is only something to argue with.
- **§7.3 the trap.** Ordinarily nobody instructs you: your intraday schedule *is* the
  instruction and your 5 % metering allowance applies. One manual instruction changes two
  things at once — the System Operator must then instruct you before every subsequent
  hour, and your allowance stops applying to each of them. A deviation that would have
  been free at 21:00 is now priced, and **nothing in the volumes tells you**, so the desk
  shows a banner the moment it happens.
- **§7.4 a curtailment only protects you if it is logged commercially.** The same
  physical curtailment settles at **R0** or **−R 68,571.50** on 25 MWh, decided by
  whether the System Operator duplicated the instruction into a separate log you cannot
  see. Stated with both numbers, and with the plain commitment that the platform checks
  for the missing entry at D+7 and raises the settlement query on your behalf, evidence
  attached.
- **§7.5 two places to report a problem.** Telling the System Operator you cannot deliver
  changes what it dispatches. Telling the Market Operator changes what you owe. Do the
  first and not the second and you are dispatched correctly and charged anyway — the one
  warning written because the failure is silent, expensive and entirely predictable.
- **V7 §11.3–11.6** — the upgraded System Operator console: issuing a level rather than a
  cap with the derived ramp basis previewed; the control state and the obligation that
  comes with it, including the warning before a period when a held unit has no
  instruction; the operating condition and what it unlocks; and choosing what to reduce,
  where unpriced shedding is ranked last and not excluded.
- **Glossary** — eleven terms: dispatch instruction, Instructed Energy, ramp rate,
  loading ramp, de-loading ramp, Emergency Operating Condition, Load Reduction, Load
  Curtailment, Generator Curtailment, commercial log, Automatic Generation Control.

## 1.13.0 — 2026-08-07 · MS8 intraday market: five auctions, the cost of changing your own mind, and the cap on the price

- **V7 §5** — substantially rewritten. The intraday market is **five auctions at
  fixed times**, not a rolling window: 18:00 the day before, then 00:00, 06:00,
  12:00 and 18:00, each able to move only the hours still ahead of it. Iteration
  5 can move 19:00 and cannot move 18:00. Countdowns come from the server's
  clock, because a laptop four minutes fast shows you four minutes you do not
  have and the gate you miss is real.
- **§5.2 changing your own mind costs money; being moved does not.** The
  asymmetry worked through with the day's own numbers: the solar farm
  re-declares 60 → 20 MW at 11:30, is classified *against instruction*, and is
  charged 40 MWh at the R945 intraday price — **R 37,800** — where the same 40
  MWh taken by the System Operator would have been free at its own R0 offer. It
  still nets R 29,700 for 20 MWh generated, and only because the curtailment
  half was free. Stated with the practical conclusion: if a constraint is coming
  anyway, re-declaring first transfers value away from you.
- **§5.3 we tell you before you commit.** The classification preview, and why it
  can be **certain** rather than a guess — the Code decides it from your
  declaration, not from what the market later does. A single hour can carry both
  legs, and the preview says so rather than picking one.
- **§5.4 the price is capped near the day-ahead price.** ±5 % either way, worked
  through the iteration whose raw average was R1 412.50 and whose applied price
  was R945.00. Both figures render with a *collared* badge, because showing only
  the capped one hides that the market wanted a different answer. Plus the two
  rules behind it: only movements the Market Operator chose set the price, and a
  net-zero iteration simply *is* the day-ahead price.
- **§5.5 carry it, or re-declare it?** The old "re-bid anything over 1 MWh" rule
  is gone. Four rows, each with what is true and what we recommend: an expected
  instruction and a within-band deviation are both carried, and past the band it
  is a genuine comparison because the *whole* deviation reprices rather than the
  excess.
- **§5.6 reversals** — you do not pay twice for changing your mind twice, and the
  netting reaches back past iteration 1 to the day-ahead adjustment itself.
  **§5.7 Contracted Energy** is the most recent iteration's schedule, and it is
  what balancing measures you against.
- **V3 §18, §19** — the re-bid guidance updated: the decision is a comparison
  between the intraday charge and the expected balancing charge, not a fixed
  megawatt-hour threshold, and the five fixed gates added to the rhythms table.
- **Glossary** — nine terms: intraday market, iteration, on instruction, against
  instruction, Intra-Day Price, price collar, Contracted Energy, rescheduling
  consent, reversal.

## 1.12.0 — 2026-08-07 · MS7 day-ahead settlement: the three pots, the free curtailment, and the zero that explains itself

- **V7 §13** — a new chapter, *how the day-ahead money works*. Eight or nine
  lines on a statement where the reader expected one, and only three ideas
  underneath them: everyone who clears is paid the same hourly price; if the
  System Operator moves you off that schedule you are compensated at **your
  own** offer price; and standing ready to help with frequency is paid
  separately whether or not you were ever called.
- **§13.2 the three pots.** One statement, three totals, three counterparties.
  The energy pot sums to exactly **R 0.00** across the market — a proof, not an
  accounting convention, and the Market Operator's board shows the residual on
  every published day for that reason. The ancillary-recovery pot does *not*
  net to zero and is not meant to: it is where the cost of somebody's decision
  lands, and the System Operator holds it.
- **§13.4 being constrained off is compensated at what you offered** — the
  paragraph worth reading twice. The solar farm scheduled at 75 MWh, cut to 60
  by a zone export cap, keeps **R 67,500** and pays back nothing, because the
  charge is the integral of *its own* offer curve and it offered R0/MWh. Stated
  as what the Market Code says rather than as a defect being tolerated, with
  the two consequences for how you price — a low offer is also the price at
  which the system can take your energy away for free, and being curtailed by
  the System Operator is free while re-declaring your own capacity down is not.
  The clause runs both ways: the coal plant lifted 435 → 450 is *paid* its own
  offer for the increment.
- **§13.5 why your reserve payment might be zero** — four causes, four
  different responses, one line test each. Nothing contracted; the system price
  at its floor (nothing is wrong with your declaration); a **band condition
  failed** (qualifies zero, and does *not* fall back to the contracted amount);
  a performance adjustment factor. The distinction that matters is *floored*
  versus *out of band* — a participant who reads the first when the truth is the
  second changes nothing and keeps being paid nothing. Plus the rule that reads
  backwards from everything around it: **if your reserve was used, you are paid
  on the full contracted amount.** Utilisation is not a penalty.
- **§13.6** the above-cap payment, and why it never applies to a consumption
  curve: a load offering above the cap is expressing willingness to *pay*, not a
  cost of producing.
- **§13.7** reading the statement — the four line kinds to expect, and why only
  two of them carry a sentence. An explanation on every line is one nobody
  reads. The settlement is published **inside** the schedule report, not as a
  separate document arriving later.
- **V6 §8.6** — a cross-reference from the wheeling ledger: the market ledger
  proves sum-to-zero across *one of three* pots, and ancillary-service recovery
  now carries everything from constrained adjustments through to balancing.
- **Glossary** — eight terms: energy payment (EPM), constrained purchases
  payment, constrained sales charge, additional day-ahead energy payment,
  capacity qualifying, performance adjustment factor, Market Balancing Account,
  ancillary service recovery.

## 1.11.0 — 2026-08-07 · MS6 clearing and prices: the auction, the two schedules, the four reserve prices

- **V7 §4.12** — *what happens after the gate*. The auction stacks sellers
  cheapest-first and buyers most-willing-first, finds where they cross, and
  **everybody who clears trades at the crossing price**. Worked with the golden
  hour: a plant that offered R350 for its first 200 MW is paid R900 for them.
  Stated as the design rather than a quirk — your offer decides *whether* you
  clear and *how much of you* clears, never what you are paid, which is why the
  honest thing to offer is what the energy actually costs you.
- **V7 §4.13** — **why the price is sometimes lower than the most expensive plant
  running.** Four situations, each a reason your offer was not price-setting: at
  or below your minimum, declared `I`, ramp-bound, or held up by Regulating Down.
  The last two are properties of the *clearing* and not of your submission, which
  is why the schedule has to tell you. All units inflexible → the price is
  **zero**, and that is not a cheap hour. Plus the case we have decided and the
  market has not: at the scarcity hour the marginal resource is a **factory
  choosing not to consume** at R2 600 while the literal reading says R900. We
  treat the factory as price-setting because scarcity is otherwise invisible in
  the price — and say plainly that the rule is unsettled, the MGC has not
  decided, and every clearing records what the price would have been the other
  way.
- **V7 §4.14** — **two schedules, and why.** The unconstrained one prices the
  market; the constrained one runs the system; the difference is compensated at
  your **own offered price** and charged to the System Operator. Worked through
  the curtailment case: a solar farm keeps R67 500 on 75 MWh while generating
  60, because the charge is struck at its own zero offer. Two consequences that
  point opposite ways — being curtailed by the SO is free, re-declaring your own
  capacity down is not.
- **V7 §4.15** — **reserve prices sit at their floor most of the time**, and what
  it takes to lift them: a plant whose own cost is *below* the market price, held
  back to stand ready. An at-floor price is a real signal (nobody gave up
  anything valuable), not a placeholder.
- **V7 §4.16** — reading your own schedule: both volumes side by side and every
  period saying *why* it landed there, as a sentence. The System Operator must
  explain a dispatch instruction if asked; putting the reason on the schedule
  means you do not have to ask.
- **V8 §3.9** — the MO Clear Day panel: four steps with a human between the third
  and the fourth. Publishing is separate from solving because an operator who has
  just re-run a day needs to look at it before it becomes everybody's settlement
  basis, and a re-solve supersedes rather than edits. Also the network-model
  notice, the `[D-08]` badge, and the HiGHS requirement.
- **Glossary** — ten terms: **co-optimisation**, **constrained schedule**,
  **contingency reserve**, **cost above energy market**, **cost of lost
  opportunity**, **inflexible**, **marginal unit**, **reserve floor price**,
  **unconstrained schedule**; **SMP** rewritten (it is not the dual, and
  all-inflexible is zero).

## 1.10.0 — 2026-08-07 · MS5 submissions: seven days, five blocks, one character

- **V7 §4.8** — *what you are actually submitting*. The chapter has taught a
  ladder since M6; a real submission is how much you can produce **each hour
  for the next seven days**, priced as a five-block curve. The blocks
  explained as one rising cost curve cut at four points you nominate, with
  the figure: must-run at the bottom, Emergency Level 1 at the top. Two
  things stated because they are where the money is — **Mingen and E3 are
  locked to the registry** on the desk, so the two most common rejections in
  any electricity market are unauthorable rather than merely validated; and
  **you are paid the hourly price, not your block price**, so pricing a block
  low means being scheduled sooner, not being paid less.
- **V7 §4.9** — the **flexible indicator**, the most consequential single
  character on the form and the one routinely set without thought because it
  looks like a checkbox. `I` is a *commitment, not a ceiling*: worked through
  for a solar farm declaring a 40 MW forecast, which has promised 40 MW and
  settles the shortfall when the cloud arrives. The compensation — an
  inflexible offer cannot set the price — spelled out as a real trade rather
  than a consolation.
- **V7 §4.10** — **missing the gate is not the end of the day.** Rollover in
  plain terms (we re-use yesterday's plan, shifted a day), the day-7 fixed
  point stated exactly, and why seven consecutive misses leave you declaring
  one week-old profile for every day of your horizon — which is why staleness
  is a number that escalates and not a badge. Also: the gate clock is the
  server's, and a laptop four minutes fast is not evidence about a deadline.
- **V7 §4.11** — pre-flight, and why the desk's *Validate* runs the **same
  code** as the API and the real submission. A browser-side check that
  reimplements the rules drifts, and the drift surfaces in exactly one place:
  told clean, rejected at 09:59.
- **V3 §10.7** — a battery's degradation cost now reaches the market **through
  the offer price**, the decision recorded as a decision rather than a
  reading of the Code. Stated with its limitation: the addend is a single
  constant, so a shallow cycle and a deep one price identically today — which
  is exactly what §10.6 said should not happen. Keep `min_spread` doing the
  depth-aware work in the book.
- **Glossary** — eight terms: **energy limit**, **flexible indicator**,
  **preferred run flag**, **reserve availability indicator**, **rolled-over
  submission**, **submission**; **Emergency Level 1** and **gate closure**
  rewritten for §9.3 (EL1 as the fifth block; the gate judged at the moment
  of receipt, so a later extension cannot resurrect a rejection).

## 1.9.0 — 2026-08-06 · MS4 party lifecycle: accession, default, suspension, accounts

- **V7 §3.1** — the four-status lifecycle is now labelled as the *operational*
  view and points forward at the Code's seven states, so a reader does not
  take `PENDING → ACTIVE → SUSPENDED / REVOKED` as the whole story.
- **V7 §3.13** — the joining journey as a table with both sides' deadlines,
  and the number everyone asks first: **about fifty business days**, roughly
  ten calendar weeks, being the sum of the four forward clocks. Two things
  called out because they are misread: §6.2(4) is a permission and not a
  promise, and the three-business-day rule **counts backwards** from the
  effective date, so signing early does not guarantee arriving in time. Plus
  the two agreements, how to ask for more time (and that asking on its own
  moves nothing), and the one lawful route to trading before accession —
  testing and commissioning.
- **V7 §3.14** — what happens if you get it wrong, as four separate steps
  with their own clocks. A default is **not** a suspension: you keep trading
  through the first two. Both protections named — no order solely for absent
  credit cover during a replenishment or provider-search window, and a
  demand-side suspension cannot take effect **at all** until the MGC has
  arranged a Default Retailer.
- **V7 §3.15** — **pay now, argue later.** A disputed invoice is still due on
  its due date; a successful dispute is corrected by a Settlement Rerun.
  Carried through the exit: Required Credit Cover until every amount is paid,
  and a deregistered unit's Fixed Credit Requirement until the last rerun for
  its deregistration day — a date that cannot be known in advance.
- **V7 §3.16** — the three accounts and which money is yours. All three are in
  the Market Operator's name, which is why the differences matter: trust
  versus sole name, who may withdraw (you cannot, from the Collateral Reserve
  Account), and the ring-fenced MO Charge Account that may never reach a
  shortfall. Plus §6.2(11)'s written notification, why a Trading Unit's
  payment destination is a different thing, and who may be a Credit Cover
  Provider — a licensed bank or nothing.
- **V7 §10.5** — the MO registration board, queue by queue, including the one
  nobody thinks to build: **blocked suspensions**, an order that has issued
  and cannot bite. Also why an undecided extension request is itself a
  finding, and why one of the five clocks is a window rather than a duty.
- **Glossary** — twelve terms: Accession Fee, Balancing Agreement, Collateral
  Reserve Account, Credit Cover Provider, Default Notice, Default Retailer,
  Deregistration, Market Participation Agreement, Suspension Order,
  Termination Order, Trading Clearing Account, Warning Limit.

## 1.8.18 — 2026-08-06 · Loss / UoS engine wired (§4.1)

- **V6 §4.1 / §4.1.7** — product note updated: `FIXED` vs `PUBLISHED`
  binding, sequential TLF-Gen → TLF-Load × DLF Match chain, dimensioned
  UoS + municipal branch, period `loss_resolution` snapshot. Careful note
  now states when a statement is invoice-grade (site dims + published
  rows) rather than “not built”.

## 1.8.17 — 2026-08-06 · Loss factors deep-dive (§4.1)

- **V6 §4.1** — comprehensive layman guide: TLF / DLF / MLF vs UoS
  (TUoS / ETUoS / DUoS / MDUoS); topology → flags; Match formula
  (`sum` of active loss fractions → `loss_factor_pct`;
  `delivered = matched × (1 − %)`); virtual = 0% loss; worked
  **Atlantis Midrand day** (6% = 2+1+3) and **GEN-1 Acme/Borg** per-carve
  losses; topology galleries (Tx→Dx, Dx→Dx, Tx→Munix, same/cross munix,
  virtual) with mermaid + comparison table; screen checklist. Honest
  “not full NERSA chain yet” note retained.

## 1.8.16 — 2026-08-06 · Settlements list page (nav sync)

- **V6 §3.6 / §12.1** — Settlements entry is a LiveView list
  (`/org/contracts/:ppa_id/settlements`), not a modal; path is Org →
  Contracts → Settlements → period → detail.

## 1.8.15 — 2026-08-06 · Provenance on screen: nav path (§3.6)

- **V6 §3.6** — names the **Settlement detail** screen, documents the real
  path (Org → Contracts → Settlements → period →
  `/org/contracts/:ppa_id/settlements/:period_id`), and what to read on
  Energy balance / Audit for Example A (full meter) vs Example B (carve).
  Cross-links §12.1 / §12.2 for the full UI walk.

## 1.8.14 — 2026-08-06 · Resolve: two examples (§3)

- **V6 §3** — expanded “where numbers come from” around both running casts
  (same as §2 / §12.2): **Example A** Atlantis Midrand day sealed METERED
  Resolve (554k / 39k; Allocate skipped) plus preserved nomination→meter
  re-run; **Example B** GEN-1 Acme/Borg Resolve then Allocate
  (84k → 56k + 28k PRO_RATA) and Match inputs per carve. Side-by-side
  Match-input table; provenance and dispute questions retied to both
  paths. Cross-links §2 and §12.2 both ways.

## 1.8.13 — 2026-08-06 · Pipeline: two examples (§2)

- **V6 §2** — restructured around two parallel pipeline walks (same cast as
  §12.2): **Example A** Atlantis Midrand day one-to-one (Allocate skipped;
  Resolve → Match → Price → Adjust → Ledger with sealed 9 Jul numbers);
  **Example B** GEN-1 Acme/Borg peak carve (84k → 56k + 28k PRO_RATA;
  Allocate between Resolve and Match; Match/delivered per carve). Side-by-
  side comparison (§2.3); one-interval micro-walk retained as §2.4.
  Cross-links both ways with §12.2; §1 / §3 / §5 / §13 point at the named
  examples.

## 1.8.12 — 2026-08-06 · Settlement UI: one-to-one vs Allocate (§12.2)

- **V6 §12.2** — two concrete evidence→cash walks on the same detail page:
  **Example A** Atlantis Midrand day one-to-one (Allocate skipped; sealed
  Resolve → Match → Price → Ledger numbers from §2 / §2.1); **Example B**
  shared GEN-1 peak carve (Acme 56k + Borg 28k = 84k) with Match per carve
  and delivered after 6% loss. Pipeline spines, allocation figure, and
  comparison table; §12.3 cross-links Example A.

## 1.8.11 — 2026-08-06 · Five-stage pipeline + Resolve (§2 / §2.1)

- **V6 §2** — comprehensive lay introduction to Resolve → Match → Price →
  Adjust → Ledger; dual-row spine and lifecycle-rail showing where
  **Allocate** sits (between Resolve and Match, not a sixth stage);
  named running example **Atlantis Midrand day** (IPP2 → OffTaker C ·
  `PPPA-202607-138209764` · 9 Jul 2026) with sealed quantities.
- **V6 §2.1** — expanded Resolve: resolution rail, worked Atlantis Midrand
  day numbers, data-flow figures, when Allocate would insert, bridges to
  §3 / §5 / §13. Stages §2.2–§2.5 retied to the same example; §2.6 keeps
  the one-interval micro-walk.
- Cross-refs in §1 preview, §3, and §13 point at the named example.

## 1.8.10 — 2026-08-06 · Remove V6 §1.3 Physical vs virtual

- **V6 §1** — dropped the short Physical vs virtual subsection (already
  covered in the §1 intro and V0/V5); renumbered “What you will be able to
  explain” from §1.4 → §1.3.

## 1.8.9 — 2026-08-06 · Remove redundant V6 §1.5

- **V6 §1** — dropped §1.5 “A first conservation check”; the worked demo
  and conservation proofs already live in §1.2.

## 1.8.8 — 2026-08-06 · Generator Site settlement-frequency lock

- **V6 §1.1 / V5 §4** — first AGREED contract on a Generator Site locks
  Settlement Frequency for all later physical and virtual deals sourcing from
  that plant (proposal / negotiate / accept enforcement).

## 1.8.7 — 2026-08-06 · Periods, intervals & shared-period allocation (§1.1)

- **V6 §1.1** — expanded in plain language: Settlement Frequency vs period
  vs interval (three nested clocks); one period row per contract with
  shared plants still carved together; correct vs broken allocation
  figures; FAQ that all claimants on a Generator Site meter must settle
  in the same closed window (same frequency) or conservation fails.

## 1.8.6 — 2026-08-06 · Settlement introduction (§1)

- **V6 §1** — expanded pre-§1.1 introduction in plain language: what
  settlement is; how Generator Sites, Off-taker Sites and Trader Pools are
  settled; one-to-one vs many-to-one (shared plant) vs many-to-many (multi-
  source buyer / trader book) with entity-map, pricing-flow and allocation
  figures; routine outputs and pipeline preview.

## 1.8.5 — 2026-08-06 · Matching, conservation, spill & shortfall (§1.2)

- **V6 §1.2** — expanded in plain language: matched / spill / shortfall;
  why each matters; conservation identities; worked demo day on
  `PPPA-202607-138209764` (9 Jul 2026) with allocation and pricing-flow
  figures. Glossary matched / spill / shortfall point here.

## 1.8.4 — 2026-08-05 · How a virtual PPA makes money (§9)

- **V5 §9** — expanded in plain language: who pays whom, matching, the
  strike/WER/CfD formula, and a full both-sides worked day on
  `VPPA-202607-138349269` (3 Jul 2026) with pricing-flow / entity-map
  figures and ledger proof (aligned with V6 §14).

## 1.8.3 — 2026-08-05 · Worked physical & virtual deals (§7 / §8)

- **V5 §7 / §8** — rewritten as plain-language, data-driven walkthroughs:
  propose from Off-taker Site, Generator Site, and Trader Pool; real-time
  negotiate (suggest / change / confirm); decline; re-open; suspend → revive;
  sign. Entity-map and lifecycle-rail figures; demo numbers retained.

## 1.8.2 — 2026-08-05 · Sign-window suspension & revival (§5.1)

- **V5 §5.1** — the 10-day sign window is enforced: unsigned AGREED deals become
  **SUSPENDED**; Negotiations offers Request / Accept revival (fresh AGREED
  window). Glossary sign-window entry updated.

## 1.8.1 — 2026-08-05 · AGREED terms freeze in plain language (§5.1)

- **V5 §5.1** — expanded: how Done reaches AGREED (physical and virtual),
  what freezes, the 10-day sign window, what you can / cannot do, Re-open
  consequences, and a short worked example — in simpler lay terms.

## 1.8.0 — 2026-08-05 · Merge V5 terms into §4; renumber §5–§9

- **V5** — removed standalone §5 “The terms, family by family” (it repeated the
  wizard field guides). Unique settlement-consequence material, trader terms
  (proposal-only), and advisor cross-links now live under **§4.7**. Former
  chapters **§6–§10** renumbered to **§5–§9** (Agreement → Contracts → Worked
  physical → Worked virtual → How a virtual PPA makes money). All in-manual
  links, glossary refs, and COVERAGE rows updated.

## 1.7.9 — 2026-08-05 · Virtual wizard field guide (§4.5)

- **V5 §4.5** — expanded into a step-by-step field guide for the Virtual PPA
  Negotiation wizard: every UI step (Parties & Sites through Review & Submit),
  ownership (Buyer / Seller / Joint / Derived), lay explanations, and examples.
  Covers conditions precedent, strike FLAT/TOU, settlement volume basis,
  generator obligations, VWP/settlement, RECs & carbon, legal terms, read-only
  WER orientation, and the review summary; notes recipient-seller Suggest/Why
  on tariff step.

## 1.7.8 — 2026-08-04 · Physical wizard CUOSA when missing (§4.4)

- **V5 §4.4** — CUOSA Reference matches Grid Status: derived when present on the
  generator site, or seller-editable (saved on the GeneratorSite) when missing;
  trader-only sellers stay derived (`—`).

## 1.7.7 — 2026-08-04 · SIGNED contracts leave Negotiations

- **V5 §4.1 / §6.4** — SIGNED and ACTIVE deals are Contracts-only; Negotiations
  keeps NEGOTIATING, AGREED, and DECLINED.

## 1.7.6 — 2026-08-04 · Physical PPA wizard field guide (§4.4)

- **V5 §4.4** — expanded into a step-by-step field guide for the Physical PPA
  Negotiation wizard: every UI step (Parties & Sites through Wheeling Charges),
  ownership (Buyer / Seller / Joint / Derived), lay explanations, and examples.
  Documents Grid Status as derived when present on the generator site, or
  seller-editable (saved on the GeneratorSite) when missing; notes read-only
  curtailment defaults and contract-type step pruning.

## 1.7.5 — 2026-08-04 · ACTIVE contracts leave Negotiations

- **V5 §4.1** — ACTIVE deals are Contracts-only; Negotiations keeps SIGNED until
  activation, then the row moves to the Contracts register.

## 1.7.4 — 2026-08-04 · Negotiation status & action gates (§4.1)

- **V5 §4.1** — expanded: happy-path and exits/re-open lifecycle rails; status
  meanings; proposal-vs-negotiation callout; full action-gates table (Done /
  Sign / Re-open / Decline / Activate); list actions table retained and aligned.

## 1.7.3 — 2026-08-04 · Proposal lifecycle & action gates (§3.1)

- **V5 §3.1** — expanded: happy-path / PENDING-branch / return-path lifecycle
  rails; status meanings table; initiator vs counterparty visibility (including
  sent WITHDRAWN and DECLINED on both sides); full action-gates table (who /
  from → to / effect); note on non-status edits and instrument switch.
- **V5 §3.3** — list visibility aligned with §3.1 (sent withdrawals and live
  decline/withdraw refresh).

## 1.7.2 — 2026-08-04 · Trader sell studio vs IPP seller (§3.4f)

- **V5 §3.4a** — IPP seller compose points traders to §3.4f; lifecycle callout
  names Sales and Simulations → Sell paths.
- **V5 §3.4f** — expanded: shared spine with §3.4a, comparison table (Instrument /
  Q&A / virtual absent, stage renumbering, net-position evidence, five trader
  seller gates, second pass, Review preview honesty), dedicated Trader terms
  stage fields.

## 1.7.1 — 2026-08-04 · Trader buy studio vs offtaker buyer (§3.4e)

- **V5 §3.4** — offtaker buyer compose points traders to §3.4e; lifecycle callout
  names both Procurement and Simulations → Buy paths.
- **V5 §3.4e** — expanded: shared spine with §3.4, comparison table (Instrument /
  virtual absent, stage renumbering, net-position evidence, trader terms gates,
  Review preview), dedicated Trader terms stage fields.

## 1.7.0 — 2026-08-03 · Trader promote programme exit (MT5)

- **V3 §8.6** — trader-to-trader candidacy shows the V2-open refusal banner and
  **Build Proposal** flash (*not confirmable until VWA registration is modelled*);
  no silent empty Proposals list. Physical sell/buy studio paths unchanged.
- **V5 §3.4e / §3.4f** — bridges note trader-to-trader stays refused until decisions V2.
- **Track exit** — two-direction E2E (`trader_protocol_e2e_test.exs`); studio unlock
  for `TRADER_TRADER` skipped while V2 remains open.

## 1.6.0 — 2026-08-03 · Trader Sell Proposal Studio (MT3)

- **V5 §3.4f — Trader Sell Proposal Studio.** Selling traders compose an
  `OFFTAKER_TRADER` DRAFT on a full page: net-position evidence, price card,
  warranty / spill / green, dedicated **Trader seller terms**, private limits,
  and readiness-gated **Send to buyer**.
- **V3 §8.6** — Sell → OffTaker **Build Proposal** lands in the Trader Sell
  compose studio (not a shell).
- **COVERAGE** — sell studio route mapped to V5 §3.4f.

## 1.5.0 — 2026-08-03 · Trader Buy Proposal Studio (MT4)

- **V5 §3.4e — trader buy compose.** Buying traders compose a `TRADER_IPP` DRAFT
  on a full-page studio: net-position evidence, contract-type prune rules,
  dedicated **trader buyer terms** (margin / back-to-back), private limits, and
  readiness-gated **Send to seller**.
- **V3 §8.6** Buy → IPP promote now bridges to the compose studio (not a shell).
- **COVERAGE** buy studio route points at V5 §3.4e.

## 1.4.1 — 2026-08-03 · Trader Simulations Build Proposal (MT2)

- **V3 §8.6 — trader seat matches Procurement/Sales.** Simulations **Build Proposal**
  runs `promote_with_brief` asynchronously, attaches a private negotiating brief, and
  navigates to the trader sell/buy studio routes under
  `…/strategy/simulations/proposals/:id/{sell|buy}` — not the org proposals list.
- **`TRADER_TRADER` stays refused on the workbench** with a plain-language instrument
  unavailability flash; no fake studio redirect.
- **COVERAGE** rows for the two trader studio shells (compose bodies land in MT3/MT4).

## 1.4.0 — 2026-08-03 · Standing data (MS3)

- **V7 §3.7 — "the market asks what your plant can actually do."** Registering a Trading Unit
  is not the end of it. Before the market can schedule a plant it wants about **thirty facts
  about what that plant can physically do** (§7.2): how fast it loads and de-loads, how long it
  must stay on once started and off once stopped, what a start costs in Rand from hot, from warm
  and from cold. Not what the plant *is* — what it *can do*, minute by minute. For solar and
  wind these are near enough all zero; for anything with a turbine they are real numbers that
  live in a plant engineer's head or in commissioning documents, and **they are not in any
  database**. That is a gap in the industry's records, not in this platform, and closing it is
  the longest-lead item in getting a plant to market.
- **Three different people have to answer, and one of them you cannot hurry.** The new standing-
  data screen groups what is missing by **who can answer it**: your plant engineer (ramp rates,
  run limits, start costs), the **System Operator** (the four certified reserve capacities —
  certified, not declared), and your finance team (the settlement account). A plant cannot trade
  until all three have answered. "Eighteen fields missing" is not a work list; *eleven questions
  for your engineer, four for the System Operator, one for finance* is three phone calls.
- **V7 §3.8 — why zeros are dangerous, stated as plainly as we can.** *"Minimum run time: 0
  hours" is correct for a solar farm and catastrophic for a coal plant.* On a coal plant it tells
  the market the unit may be switched on and off every hour; the market will believe it, schedule
  it that way, and the plant will fail to follow a schedule it could never have followed — and
  **you** pay the imbalance, not the market. Nothing about the number distinguishes the two
  cases, so every field now records **where its value came from**: engineering data, measured,
  assumed, or **not supplied**. A zero recorded as engineering data registers; the same zero with
  nobody standing behind it does not.
- **Assumptions are allowed, and they are visible.** Refusing to record an assumption does not
  remove it — it gets typed in as though it were engineering data and then nobody knows. So
  *assumed* is a valid answer that lets a plant register, and the Market Operator's console lists
  every unit carrying one, separately from the units that are fully evidenced. If a schedule is
  ever disputed, the assumed field is where the argument will be.
- **Bulk entry, and the rule that keeps it honest.** Thirty attributes across a fleet is not a
  form-by-form job, so there is a spreadsheet round trip: download what is registered, fill in the
  blanks, upload it back. It **will not assign a provenance the file did not state** — a value with
  no provenance beside it is not applied, and you are told which ones were skipped. A spreadsheet
  is exactly where thirty plausible zeros get typed in at once.
- **V7 §3.7 — which of three capacity numbers is "the" capacity.** A plant record holds installed
  panel capacity, inverter capacity and export capacity; §7.2(e) wants exactly one — the most the
  plant can **send out** continuously. Export capacity is closest and is not automatically right,
  because it is sometimes set by a grid-connection agreement rather than by the plant's rating. The
  platform shows all three, says what each one is not, and records **which was chosen and why** —
  because the market requires the top of your price ladder to equal that figure exactly, so a wrong
  number invalidates every submission you ever make, silently.
- **Reserve capacities are certified, not declared.** The four §7.2(q)–(t) capabilities carry a
  System Operator reference and an effective date, and until the SO certifies, the capacity is
  **0.000** and every availability indicator must be `U`. A certification is revocable, forward
  only — and revoking one **invalidates submissions that were already accepted**, which nothing
  about those submissions would otherwise show. Synchronous Condenser Operation is the odd one
  out: measured in MVAr, and the certification is what makes energy consumed in that mode
  chargeable to the System Operator rather than to the unit.
- **V3 §10.6 — a battery's degradation cost reaches the market as a price, not a field.** The
  registry asks a storage unit four things and **nothing about degradation**: no cost per
  discharged kWh, no maximum cycles per day, no minimum spread. Those stay in strategy, driving
  dispatch exactly as before, and are excluded from the registration payload. The cost travels
  instead inside the offer — deeper rungs carry more degradation than shallow ones, which is what
  the physics says. Price it wrongly and nothing looks wrong: the battery just looks unlucky.
- **V2 §3.6 / §4.6** — the site chapters now say what the market asks that these screens do not.
  For a generator: which of its three capacity figures the market means, and why a zero standing in
  for an unknown is the most expensive entry available. For an off-taker: that the market asks what
  each slice of consumption is *worth*, that declaring the whole of it must-serve is a real and
  usually correct choice, and that being wrong in that direction only forgoes revenue while being
  wrong the other way means being shed and unable to comply.
- **MO console** — a *Standing-data review* panel: how many units are fully evidenced, how many are
  complete only because somebody guessed, how many cannot be registered at all, and the System
  Operator's certification queue.
- **Participant API** — `GET`/`PATCH` standing data, the two profile endpoints and the certification
  endpoints. `PATCH` honours the same 08:00 D−1 cutoff as a registry modification, because changing
  what a plant can do changes what the market may schedule it to do. An incomplete registration
  returns **422 naming every missing field, its clause and who supplies it**.
- **Glossary** — Declared Available Capacity, Declared Consumption, certified reserve capacity,
  Synchronous Condenser Operation, minimum run time, minimum down time, loading ramp rate,
  cavitation zone, mincharge.

## 1.3.0 — 2026-08-02 · The market registry (MS2)

- **V7 §3 substantially rewritten.** *Registration and compliance* had covered
  only half of registration — who you are. It now covers the other half: what
  you registered. New sections on **a Trading Unit is not your book** (§3.3),
  **a Point of Delivery and the rule that every meter has two owners** (§3.4),
  **the counterparty inbox** (§3.5) and **Balancing Groups** (§3.6). The
  existing material on the party, its books and the 10 MW nudge is unchanged
  and renumbered to §3.7–§3.10.
- **The rule that lands hardest, said once and plainly.** Every meter has two
  owners in the market — one selling through it and one buying through it — and
  if the second one is missing, the energy through that meter cannot be settled,
  and not only for you. The platform derives the counterparty from your signed
  PPAs, so most points need nothing entered; where no contract names anyone, the
  point is shown **empty** and listed as an exception. **Nothing is invented to
  fill the gap** — a plausible-looking counterparty would settle real energy
  against a party that never agreed to take it.
- **Three pairing states, listed separately, because they need different
  actions.** *Paired* is settleable. *Awaiting counterparty* is answered by
  chasing a party. *No counterparty* is answered by a contract. One combined
  "pending" list would send half the reader to the wrong remedy.
- **V7 §3.5 — the counterparty inbox.** When another party names you at a
  metering point you get it in an inbox: confirm it and the pairing goes live
  for both of you, or dispute it with a reason. Silence is not the safe third
  option — an unanswered declaration leaves the point unsettleable on both
  sides, and a wrong pairing that goes live settles your neighbour's energy
  against your account.
- **V7 §3.6 — Balancing Groups, with the catch stated where the benefit is.**
  Several Trading Units can be balanced together so a unit that over-delivers
  offsets one that under-delivers. You have to ask; the System Operator can
  suspend it for a congested zone, in exactly the hours your positions are
  largest. The suspension is **directional** — against the members pushing in
  the direction of the constraint, not a blanket — which is what makes a group
  worth having rather than worth distrusting.
- **V7 §3.3 — where the Trading Unit count comes from, and when it is a lower
  bound.** The registry answers "how many Trading Units do I need?" per pool:
  one per zone its members sit in. When the network model cannot place a member
  it says **at least N**, names the site, gives the nearest zone and says what
  would fix it — a published boundary from the System Operator. It does not
  guess, because registering a site in the nearest zone would put it in the
  wrong balancing group.
- **V2 §3.5 / §4.5 / §5.6** — the site and pool chapters now say what the market
  registry adds to what those screens show: a pool becomes one Trading Unit per
  zone; a site's meter carries a counterparty; a meter with no counterparty
  cannot be settled even though the pool looks complete. The generator chapter
  also notes that a **virtual** PPA supplies no counterparty — it delivers no
  energy, so it creates no pairing, while the plant behind it is still injecting
  real electricity that still needs one.
- **MO console** — a *Registry board*: every Trading Unit in force for the next
  Trading Day with zone, class and MCR; the two exception classes in separate
  lists; and the pairing-invariant status **for tomorrow**, recomputed on load.
  Tomorrow rather than today because an effective-dated row goes bad without
  anyone writing to it, and a break found on the day it bites is past the 08:00
  cut-off for fixing it.
- **Participant API** — the registry slice: Trading Unit and Point of Delivery
  registration and modification, Balancing Groups, and the counterparty inbox.
  Registration returns **warnings** as well as errors, so a participant learns
  at registration that a later submission will be rejected rather than at 09:59
  on a gate day. A cross-party read returns **404, never 403** — a 403 confirms
  the resource exists.
- **Cross-references realigned.** MS1's renumbering of V7 §2–§11 to §3–§12
  updated every link *target* but left the visible `§N` labels one chapter
  behind, in 21 files and the glossary. All 97 are now correct.
- **Glossary** — Trading Unit, Point of Delivery (rewritten from a forward
  reference), counterparty BRP, Balancing Group, reciprocity, electrical node.

## 1.2.0 — 2026-08-02 · Network zones (MS1)

- **V7 §2 is a new chapter** on network zones, placed straight after the SAWEM
  primer because the zone is what reshapes a portfolio. In plain terms: the grid
  is divided into areas; everything inside one market registration has to sit in
  one area; so a solar farm in the Northern Cape and a factory in Gauteng cannot
  be in the same trading bundle. Then the consequence a trader actually feels —
  **one commercial portfolio can become three separate market registrations, and
  they are balanced separately unless you group them.**
- **V7 §2.3 — the map is provisional, said plainly.** The System Operator has not
  published its zone model, so the map in use is our estimate (`PROV-2026-07`).
  It does not overlap, it covers roughly **a fifth of the country**, and it
  carries no corridor limits. If your site is not covered we say **Unassigned**
  and name the nearest area rather than guessing — registering it in the nearest
  area would put it in the wrong balancing group. Every unplaced location goes on
  one list for the System Operator, and nothing about today's trading changes.
- **V7 chapters renumbered.** The new chapter is §2, so *Registration and
  compliance* through *Worked delivery day* moved from §2–§11 to §3–§12. Every
  cross-reference in the manual set was updated with them; the link checker is
  green over all 18 pages.
- **V2 §3.4 / §4.4 / §5.5** — the site directories now carry a **Zone** column and
  the trader-pool directory a **Trading Units** column. Notes explain the
  provisional marker, what an unassigned zone blocks, and why the pool figure
  reads *at least N* when a member is unplaced.
- **MO console** — a *Network zones* panel: the eight areas with their character,
  core nodes and market implication; a provisional banner; coverage statistics;
  and the list of sites the map cannot place, exportable as CSV for the System
  Operator.
- **Public API** — `GET /api/v1/registry/network-zones`, `/{code}`, `/gaps` and
  `POST /allocate`, all reachable without a token because the market rules make
  the zone map a published document. A participant can check a coordinate before
  buying a site. Every response carries `model_version` and `provisional`.
- **Glossary** — network zone, Point of Delivery, constrained scheduling model,
  provisional zone model.

## 1.1.0 — 2026-08-02 · SAWEM market foundations (MS0)

- **The price cap was wrong and is corrected.** The prototype seeded the
  Market Price Cap at **R 32,000/MWh**; the Market Code sets it at
  **R 5 396.40** (Annexure 2, §9.7.1). This changes behaviour for anyone who
  ran the prototype. It is not merely a wrong ceiling: five mechanisms in the
  Code fire **only** when a price exceeds the cap — the additional energy
  payment and four above-cap clawbacks — so a cap six times too high meant
  none of them ever fired, silently, in every hour where a price approached
  it. Corrected in the parameter register, in the prototype MO's own
  validation defaults, in the demo seed and in every test fixture; the
  migration rewrites existing rows; a repository-wide search now asserts that
  no seed, fixture, factory or default returns 32 000 anywhere. The derivation
  is recorded alongside the value, so each NERSA tariff determination triggers
  a review rather than a silent drift.
- **V7 §8** — the prototype rule set is replaced by the real one: all
  twenty-four Market Code parameters, grouped as the Code groups them, each
  explained by what it *does to you*. The intraday gate is **five fixed
  auctions** (18:00 D−1, then 00:00 / 06:00 / 12:00 / 18:00 on D), not a
  rolling hour — so the last chance to correct a 19:00 position is 18:00.
  The eight defect switches are named, with which setting is live.
- **V1 §1.3** — a new section on the market clock: why every timestamp is
  `+02:00` and never `Z`, why a Trading Day is always exactly 24 hours, and
  how to read `SD+1WD` and `BP+5WD`. Business days exclude gazetted public
  holidays, and the holiday list is published data rather than built in.
- **MO console** — the *Market rules* panel publishes all twenty-four
  parameters with their clause and effective date, shows the live setting for
  each of the eight switches, and flags a determination being carried forward
  past its own stated period. Publishing a version is now a two-stage,
  confirmed act with a change review — never an inline save.
- **Glossary** — Trading Period, Trading Day, Settlement Day, Billing Period,
  Market Price Cap, Metering Accuracy Band, cost increment, elbow point,
  Mingen, MCR, Emergency Level 1.

## 1.0.197 — 2026-08-01 · Sales Simulated Impact levels (Unsold / HHI)

- **V4 §5 Sales** — Simulated Impact **Unsold** shows residual site unsold %
  after the pretend deal; **Revenue HHI** shows before → after index beside Δ.

## 1.0.196 — 2026-07-31 · Cross-instrument decisions closed (MX4 Step 6)

- **Decisions** — `DECISIONS-X-TODO.md` is the home for X1–X8 (spec §12 is a
  pointer only). V9 §7 settled list and open items 7.14–7.17 point at it.
- **No chapter re-teach** — decisions file only; V5 story from 1.0.195 stands.

## 1.0.195 — 2026-07-31 · Cross-instrument manual reconciliation (MX4 Step 5)

- **V5 §1.1 / §3.4c / §3.5b / §3.5e** — one instrument story: availability →
  compose Instrument → Gaps / Decide counter; bridges only, no re-teaching.
- **V5 §9** — worked virtual walks a Physical counter once (illustrative),
  then the demo Accept happy path.
- **Glossary** — cross-instrument counter; superseded covers proposals;
  volume-basis link fixed on virtual Gaps.
- **V9 §7** — open X items 7.14–7.17; X3 / X4 / X6 marked settled.
- **COVERAGE** — MX4 Step 5 header (55 live · 21 LiveComponents);
  `SwitchInstrumentDraft`; CounterWithInstrument renewal inherit.

## 1.0.194 — 2026-07-31 · One home for Counter (MX3 Step 5)

- **V5 §3.5c / §3.5e / §3.6** — **Counter with…** only on review *Decide*;
  list modal keeps lineage read-back (no Counter footer).
- **V5 §8 / §9** — worked examples pass through stage 0 Instrument; virtual
  four exits on Decide.
- **COVERAGE** — modal Counter removed; Decide is the sole home (21 stateful
  LiveComponents unchanged).

## 1.0.193 — 2026-07-31 · Instrument provenance & honesty (MX3 Step 4)

- **Glossary** — volume basis · materiality threshold (linked from §3.4c).
- **V5 §3.4c / §1.1** — volume basis and materiality in plain terms; bridge
  from availability to compose Instrument.
- **V5 §3.5a** — suggestion provenance includes *carried from the other
  instrument* (still a suggestion until Accept).
- **COVERAGE** — honesty rules on instrument money + estimate labelling.

## 1.0.192 — 2026-07-31 · Fourth exit on review Decide (MX3 Step 3)

- **V5 §3.5c** — four exits: Counter in the other instrument on *Decide*
  when available and material (absent when immaterial; disabled with reason
  otherwise).
- **V5 §3.5a / §3.5e / §3.6** — Decide-stage counter (both catalogues); shared
  gate with the list modal; disclosure before compose.
- **COVERAGE** — Decide fourth exit + `counter_affordance/3` shared helper.

## 1.0.191 — 2026-07-31 · Instrument comparison on review Gaps (MX3 Step 2)

- **V5 §3.5a / §3.5b** — Gaps stage header line when the other instrument is
  available and material (volume basis in the line; silence otherwise).
- **V5 §1.1** — detail availability note points at review Gaps (interim
  “once virtual pricing lands” removed).
- **COVERAGE** — Gaps instrument header + detail-note replacement.

## 1.0.190 — 2026-07-31 · Instrument stage at compose (MX3 Step 1)

- **V5 §3.4 / §3.4a / §3.4b** — stage 0 Instrument prepended to all three
  compose stage tables (existing stage numbers unchanged).
- **V5 §3.4c** — choosing between physical and virtual: own verdicts with
  volume basis, labelled counterparty estimate, non-Rand differences, when
  the stage opens first, draft switch rules (cap never carried).
- **COVERAGE** — `InstrumentStageComponent` Matrix 2 row; stateful
  LiveComponents 20 → 21.

## 1.0.189 — 2026-07-31 · Cross-instrument comparison engine (MX2)

- **COVERAGE** — `InstrumentComparison` module rows (verdicts, bridge, brief
  evidence, `:wrong_instrument` finding); header re-derived (`b737d37`).
  No V5 chapter — comparison UI lands with MX3.

## 1.0.188 — 2026-07-31 · Cross-instrument counter (MX1)

- **V5 §3.5e** — answering in the other instrument: counter from a Pending
  proposal you received when the other instrument is available; stated reason;
  original becomes SUPERSEDED and stays linked; depth and return limits;
  price cap not carried across.
- **V5 §3.1** — lifecycle rail notes `PENDING → counter → SUPERSEDED`.
- **V5 §1 / §1.1** — bridge from availability to the counter affordance;
  same-instrument still has no price counter-offer loop.
- **COVERAGE** — `CounterWithInstrument`, lineage banner, detail footer buttons.

## 1.0.187 — 2026-07-31 · Instrument availability (MX0)

- **V5 §1.1** — when each instrument is available: physical needs a wheeling
  path; virtual needs Eskom + VWA readiness; trader cases stay “can’t confirm”
  rather than a hard no; proposal detail may note the other instrument without
  Rand or a recommendation.
- **V3 §8.6 / §13.2** — Build Proposal derives physical vs virtual from the
  simulated target pool and **refuses** (does not convert) when the instrument
  is unavailable for the pair; Grid backstop stays unpromotable.
- **COVERAGE** — `InstrumentAvailability`, promote gate, detail-note surfaces;
  header re-derived (`b737d37`).

## 1.0.186 — 2026-07-31 · Virtual programme reconciliation (MV5 Step 4)

- **V5 §4.3** — virtual wizard chips: `virtual_ppa_id` stamp, buyer GENERATED
  low-match interrupt beside the physical penalty-cap warning.
- **Glossary** — settlement volume basis · conditions precedent · strike ladder;
  CfD / strike / WER / matched fraction already defined, now linked from V5.
- **One home** — CfD mechanic and strike ladder stay in V5; V3/V4 keep bridges only.
- **COVERAGE** — MV5 accept gating, brief stamp, wizard chips, gap volume basis;
  header re-derived (`fab1d71`).
- **V9 · V5 todos** — Spec §17 V1/V6 recorded settled; open V2/V3/V4/V8 mirrored
  as 7.9–7.12.

## 1.0.185 — 2026-07-31 · Virtual review studio (MV4 Step 4)

- **V5 §3.5a** — virtual review studio: five stages (gap after offer); stage 1
  shows strike ladder, matched evidence, expiry, and both parties' CP as
  schedule risk; provenance on suggestions; autosave stays on the review draft.
- **V5 §9** — worked virtual example extends through seller review and the
  three exits before accept → wizard.
- **COVERAGE** — `ProposalReviewStudioLive` / stages cover virtual review (MV4).

## 1.0.184 — 2026-07-31 · Virtual compose studio dispatch (MV3)

- **V5 §3.4b** — four-stage virtual proposal studio (evidence → strike →
  obligations → dispatch): settlement volume basis, strike ladder vs private
  floors, counterparty preview, readiness, expiry, send, inverted-band drop.
- **V5 §3.4.1** — virtual readiness is separate from physical; low matched
  fraction is acknowledgable.
- **V5 §9** — worked virtual example walks promote → studio → send with
  illustrative numbers.
- **COVERAGE** — `ProposalStudioVirtualComponent`, `VirtualBuyerReadiness`,
  `VirtualSellerReadiness`; LiveComponent count 20.

## 1.0.183 — 2026-07-31 · Virtual advisor recommendations (MV2)

- **V5 §9.3** — what the system recommends for a virtual deal: strike cap and
  matched-volume basis, flat vs TOU strike ladder, yield-guarantee trade-off
  under generated settlement, and CP prefill / critical-path start date.
- **V4 §5.4.1** — bridge: virtual deals use the strike ladder (V5), not the
  physical price card.

## 1.0.182 — 2026-07-31 · How a virtual PPA makes money (MV1 Step 4)

- **V5 §10** — new chapter: the three virtual cash flows (pay Eskom, WER
  credit, CfD vs strike) and matched fraction in plain language.
- **V3 §13.2** — Virtual Supply sims show matching volumes, not a displaced-
  purchase saving; money is modelled on the proposal.
- **Glossary** — matched fraction; Contract for difference / WER credit
  aliases; strike price and WER cross-links to §10.

## 1.0.181 — 2026-07-31 · Virtual settlement volume basis + storage (MV0)

- **V5 §5** — `settlement_volume_basis` in plain terms: generated vs matched
  volume, and who carries the cost of a mismatch (no silent default).
- **COVERAGE** — `VirtualSettlementBasis`, `settlement_volume_basis`,
  `VirtualStrikeLadder`, brief `virtual_ppa` link, `RequestedJointTerms.vwp_vendor`.

## 1.0.180 — 2026-07-31 · WER credit rates vary by tariff category (MV0 Step 3)

- **V6 §4.2** — Gen-Wheeling / WER credit rates are per buyer Eskom tariff
  category and TOU (Megaflex highest; Nightsave has no peak), not one rate for
  every buyer.

## 1.0.179 — 2026-07-30 · Decisions consolidation (M14 Step 4)

- **V5 §3.5d** — re-propose inherits the renewal budget (does not reset).
- **V9 · V5 todos** — D12 / D16 marked shipped-leaning; confirm with
  commercial/product.
- DECISIONS-TODO consolidated (D1/D7/D8/D11/D12/D16 ✅; D3–D6/D9/D10/D13 🟡
  interims; D2/D14/D15 🔴).

## 1.0.178 — 2026-07-30 · Negotiation programme reconciliation (M14)

- **COVERAGE** — header re-derived (`a1fe2c6`): 55 live routes, 5 controller
  routes, 19 stateful LiveComponents, 7 non-cron workers, 4 mix tasks; added
  `TermSuggestionComponent`, `GeneratorSiteSearchComponent`,
  `GenerateAgreement`, sample CSV route, Accept gating, `wb.setup.roll_forward`.
- **One home** — V3/V4 Build Proposal bridges only; no remaining
  "Promote to Proposal" in `src/`; compose/review taught in V5 §3.
- **Glossary** — target · price card · review draft · decline finding ·
  re-propose (plus existing negotiating brief / asks / walk-away / gap
  analysis / dealbreaker).
- **V9 · V5 todos** — user-visible DECISIONS-TODO items D2, D3, D10, D12,
  D13, D15, D16 filed with links back to the decisions worklist.

## 1.0.177 — 2026-07-30 · Your targets in the negotiation wizard

- **V5 §4.3** — owner-only target / walk-away chips from the stamped brief;
  Reject pre-fills from target; Approve past walk-away asks first; sellers
  warned when penalty cap exceeds modelled margin; stale advice badged.
- **V5 §3** — accept stamps both briefs onto the PPA and bridges to §4.3.
- **V5 §6.1** — Done gate cross-ref updated; chips apply only while NEGOTIATING.
- **COVERAGE** — wizard brief chips / walk-away confirm mapped to §4.3.

## 1.0.176 — 2026-07-30 · Declining well, and trying again

- **V5 §3.5d** — structured decline findings (share/hold; infeasible always
  shared); re-propose clones both slices into a fresh draft with a
  `SUPERSEDED` link; compose studios show a findings checklist and restrict
  impossible contract-type options.
- **V5 §3.1** — lifecycle rail notes `DECLINED`/`EXPIRED` → re-propose →
  `DRAFT`.
- **V5 §1** — no counter-offer at proposal stage; decline-and-re-propose is
  how disagreement is handled.
- **COVERAGE** — `decline_proposal` findings + `repropose` + studio checklist.

## 1.0.175 — 2026-07-30 · Review studio: decide and the three exits

- **V5 §3.5a / §3.5c** — review studio stages 1–6 in reading order; reject
  outright (no draft), accept after panel-beating (merge + PPA), reject after
  panel-beating; digest guard and near-expiry on stage 6.
- **V5 §4** — wizard hand-off: both parties' captured terms arrive with the PPA.
- **V5 §8** — worked physical spans propose → review studio → accept → negotiate.
- **COVERAGE** — review routes map to §3.5a–c (decide / exits).

## 1.0.174 — 2026-07-30 · Is this offer good enough?

- **V5 §3.5b** — gap analysis: per-term verdicts vs your brief, annual Rand on
  price gaps, dealbreakers acknowledgeable vs infeasibilities that block
  (including below-LCOE).
- **Glossary** — gap analysis · dealbreaker.

## 1.0.173 — 2026-07-30 · Reviewing a proposal you received

- **V5 §3.5a** — receiver working notes are private until accept or explicit
  share; expiry discards them (with a last-20% warning); decline keeps them;
  renew starts fresh.
- **V5 §3.2 / §5** — near-expiry warning and bridge to §3.5a.
- **COVERAGE** — `ReviewDraft` resource + `expire_stale` discard note.

## 1.0.172 — 2026-07-30 · Seller proposal studio

- **V5 §3.4a** — compose home is the seller proposal studio (price card per
  shape, warranty/spill/asks/limits, stage-9 buyer-eye preview + readiness +
  Send, second pass when the buyer chooses a shape).
- **V4 §5** — Build Proposal bridges to V5 §3.4a (studio), not the list
  `?draft=` handoff; price-card mechanics stay in V4.
- **V5 §8** — worked physical adds the seller-originated studio path
  (card → send → second pass).
- **COVERAGE** — IPP `…/sales/proposals/:id` → `IppProposalStudioLive`; live
  route count 53.

## 1.0.171 — 2026-07-30 · Buyer proposal studio

- **V5 §3.4** — compose home is the buyer proposal studio (stages 1–8,
  suggestions Accept/Adjust/Why, public asks vs private limits, stage-8
  preview + readiness + Send). Modal kept as §3.4.2 for review.
- **V3 §13.2** — Build Proposal bridges to V5 §3 (studio), not the list
  `?draft=` handoff.
- **V5 §8** — worked physical adds the buyer-originated studio path with
  real numbers (cap suggestion, walk-away absent from preview, expiry).

## 1.0.170 — 2026-07-30 · Before you can send

- **V5 §3.4.1** — dispatch readiness gate: what must be filled in, hard limits
  you cannot cross (including below-LCOE), and warnings you may acknowledge
  (knowingly-thin vs below-LCOE called out explicitly).
- V9 · V5 todos — Eskom/VWA send blockers deliberately left advisory.

## 1.0.169 — 2026-07-30 · Build Proposal (private draft)

- Workbench button renamed **Build Proposal** (was *Promote to Proposal*):
  starts a private draft with suggestions; sends nothing.
- **V5 §3.1** — `DRAFT` is invisible to the other side until you send.
- Homes: V3 §13.2 (off-taker), V4 §5 (sales); V3 §8.6 and the demo walkthrough
  bridge to those seats.

## 1.0.168 — 2026-07-30 · Seller proposal recommendations

- V4 §5.4.1 — price card, LCOE floor, warranty envelope, and seeded Sales
  Simulate defaults (knee + price-card ask, never raw LCOE).
- V5 §5 terms — bridge to the seller advisor section.

## 1.0.167 — 2026-07-30 · Buyer proposal recommendations

- **V3 · Off-taker screens** — new §13.2.1 explains what the system
  recommends and why (shape alternatives, cap = break-even × 0.90, seeded
  Simulate MW/price). Worked example: retail 128 → form price 115.2.
- **V5 · Terms** — bridge only: buyer terms can arrive with a suggested
  value; mechanics stay in V3 §13.2.1.

## 1.0.166 — 2026-07-30 · Price break-even sweeps

- **V3 · Simulations** — new §8.5 explains finding the price where the deal
  stops working: the system re-runs the same what-if at several prices and
  reads the break-even (worked example ≈ 55 c/kWh). Promote renumbered to §8.6.
- **V4 · Sales** — §5.6.1 is the seller mirror (margin floor), bridging to V3
  §8.5 rather than re-teaching.

## 1.0.165 — 2026-07-30 · Private negotiating brief

- **V5 · Proposals** — new §3.5 explains your private negotiating brief:
  targets and walk-aways stay yours alone; the other side sees only your
  stated asks. Glossary adds **negotiating brief**, **asks**, **walk-away**.
  (Public joint asks and seller price card land in storage; studios write
  them later.)

## 1.0.164 — 2026-07-30 · Proposal expiry window & accept digest

- **V5 · Proposals** — sender chooses how long an offer stands (3–90 days,
  default 14) on send / renew / reactivate; deadline promoted in the modal
  header. Accept is bound to a digest of the originator's terms so a mid-review
  edit blocks acceptance until re-read (*you can't be signed up to a price you
  never saw*). See §3.2.

## 1.0.163 — 2026-07-29 · Generator-site proposal preferences

- **V2 · Generator sites** — the final setup step now records the seller's
  excess-generation preference, Eskom buy-back status, REC registry, and
  wheeling-forecast status. These editable plant facts form the opening
  position for physical-PPA proposals.

## 1.0.162 — 2026-07-29 · Off-taker proposal safeguards

- **V2 · Off-taker sites** — the commercial-preferences step now records the
  wheeling security-deposit status (**Paid / Pending / Waived**) and a
  delivery-shortfall remedy preference (**Money back / Replacement energy /
  Smaller contract**). Both facts are editable site data and form the starting
  position for a physical-PPA proposal.

## 1.0.161 — 2026-07-28 · Compact sticky page header

- Sticky title chrome: logo sits beside **← Manual home** on one brand row;
  smaller title/subtitle type; tighter vertical padding so the sticky bar
  occupies less viewport. `--manual-header-h` / ResizeObserver unchanged.

## 1.0.160 — 2026-07-28 · V4 TOC restructure (§3A→§4, Sales absorbs TOU/Firm)

- **V4 · IPP** — renumber TOC to §1–§12: **§4 HAF** (was §3A); **§5 Sales**
  absorbs former **§5 TOU** and **§6 Firm** as **§5.7 / §5.8**; hierarchy
  **§6**, forecast **§7**, allocations **§8**, dashboard **§9**, guard
  **§10**, running **§11**, reference **§12**. Frozen aliases retained
  (`#3a-haf`, `#4-sales`, `#5-tou-pricing`, `#6-firm-viability`,
  `#7-dashboard`, `#8-hierarchy`, `#9-allocations`, `#10-forecast`,
  `#11-guard`, …). Cross-volume V1/V3/V7/V8 bridges, glossary, COVERAGE,
  retrofit map updated. Rebuild `v4-ipp.html` (+ linked volumes / hub).
