docs: P4b S4.3 landed; the document journal holds the new fields, with two departures recorded

This commit is contained in:
swaits committed 2026-10-27 10:37:31 -06:00
1 parent d19fb464b7
commit 4cad2cfce2
2 files changed
+32 -1

No files matched your search

+31
View File
@@ -198,6 +198,37 @@ seen under load, not ours: `ledger-gui/tests/newer_journal.rs::a_live_viewer_say
can read between the test's two appends; it passed alone and in the
final run, and belongs with the other load-sensitive test noted above.
**2026-10-27: P4b S4.3 landed (`d19fb464`); the document journal now
holds the new fields.** `invoice.created`/`bill.created` carry number,
terms, snapshots, references and each line's account, quantity and unit
price — only when set, so an old-shape document is byte-for-byte the same
(`no_new_fields_journals_byte_for_byte`). S4.1's interim guard is gone;
`documents_v2_waits_for_the_upgrade` proves the write is refused before
consent and accepted after; schema is 16; `FirstNumberLocked` is enforced
at `set_setting`; the issued PDF is filed in the same call as the entry,
`invoice.created`, `receipt.attached` and the link to the invoice
(`issued_pdf_is_filed_with_the_invoice_or_nothing_is`), with the SHA-256
the attachment's `blob_sha`; `preview_invoice`/`preview_bill` journal
nothing; and the old-books fixture `p4_s43_documents` opens to the same
figures. No figure or golden moved; `just check` green; no `just prove`
needed (no new `Ledger` command, only replay support).
Two departures recorded in the As-built. The unit's "a failure anywhere
leaves the journal unchanged" is true of **every refusal** (all are
prevalidated; the PDF's bytes are stored first), but the store has no
transaction over journal appends — `atomically` does not exist — so an
I/O failure between the invoice's lines and the attachment's is not
rolled back; that is a property of every multi-line command, not a new
one, and a journal transaction is a larger change. And the plan's schema
16 named `parties.email` and two terms columns, but the projection has no
parties table; replay and `differs_from` carry those facts, and inventing
a table with no reader was rejected. Books that have not declared
`documents_v2` still issue with the legacy `Invoice {id}.pdf` and no
number (8.3.14 item 5), so an issue works before the go-ahead. **S4.4
owes** the over-the-wire consent entry for a document carrying the new
fields and the tool docs; **S4.5 owes** B-39/B-40, parity, the S4
For-P12 paragraph, the handbook and the two bookspec examples.
The 2026-10-16 audit of the first company's books (62 verified findings,
20 engine defects) and the design discussion that followed produced
+1 -1
View File
@@ -815,7 +815,7 @@ One row per unit of work. A unit is what one engineer takes into one git worktre
| U0a | Split `server.rs` by tool group | landed 2026-10-27 (`45396bdc`) | none | U0b, U0c, S4.1, S4.2, S7.1 (core steps only) | none | 3-4 |
| U0b | The attention engine over `PackageBooks` | landed 2026-10-27 (`26d3a994`) | none | U0a, U0c, S4.1, S4.2 | none | 4-6 |
| U0c | `docs/testing.md` sections for S1-B, S2, S3; `docs/mcp-interface.md` cleanup of stale P4b notes | landed 2026-10-26 (`198aa2a1`) | none | everything | none | 0.5-1 |
| P4b S4 | `documents_v2`: numbers, terms, line accounts, snapshots, preview and confirm, the issued PDF filed, party email and terms, invoicing settings | in progress: S4.1 landed (`13282cf8`), S4.2 landed 2026-10-27 (`bf91c5a7`); S4.3-S4.5 open | S4.1 and S4.2 need nothing; S4.3 needs S4.1, S4.2; S4.4 needs U0a, S4.3; S4.5 needs S4.4 | S5 (after S4.2), S7 (core after S1), P6, P9a, P11a, P13 | `documents_v2` (one upgrade after S7, D-52) | 12-16 |
| P4b S4 | `documents_v2`: numbers, terms, line accounts, snapshots, preview and confirm, the issued PDF filed, party email and terms, invoicing settings | in progress: S4.1, S4.2, S4.3 landed 2026-10-27 (`d19fb464`); S4.4-S4.5 open | S4.1 and S4.2 need nothing; S4.3 needs S4.1, S4.2; S4.4 needs U0a, S4.3; S4.5 needs S4.4 | S5 (after S4.2), S7 (core after S1), P6, P9a, P11a, P13 | `documents_v2` (one upgrade after S7, D-52) | 12-16 |
| P4b S5 | Sent tracking | not started | S1; S4.2 for the defaults (works without it, see the unit) | S4.3 onward, S6 | `documents_v2` | 3-4 |
| P4b S6 | Paying on terms: multi-document payments, discounts, the processor fee, bills due, aging exports | not started | S4.1 (`Terms`), U0a | S5, S7, P6 | `documents_v2` | 8-10 |
| P4b S7 | Bad debts (write-offs) | not started | S1; S4.3 for the same-call evidence attach; U0a | S4.4 onward, S5, S6 | `documents_v2` | 4-6 |