portfolio-optimiser-claude/docs
Kjell Tore Guttormsen ffb0503da3 docs(portfolio): A5 premise corrected — the quantisation POINT is the live divergence
MAF measured their own tree and corrected our claim that they "round one
monetary figure": their projection rounds nothing (value_report.py:48,
0 hits for round()); the one operation is a NOK->ore quantisation at the
ledger edge (ledger.py:204-214, Decimal + ROUND_HALF_UP). Rule 1 as we
wrote it therefore solved a divergence that did not exist and opened one
that did not — it condemned their deliberate, documented quantisation as
"rendering". Adopted their proposed split as rules 1a/1b.

Then measured here, which REFUTED our own first hypothesis: we assumed
float accumulation was the divergence. It is not — 0 of 20 000 random
portfolios diverge on 2-decimal NOK input. The real mechanism is where
quantisation sits relative to summation, and it only wakes on sub-ore
input: 66.4% of totals diverge, worst 6 ore over 28 rows, and a designed
100 x 0.005 case diverges by a factor of 2.

Sub-ore input is reachable in BOTH stacks — neither ir.py:42
(claimed_saving_nok) nor ledger.py:42 (amount_nok) constrains decimals;
both are float = Field(gt=0, allow_inf_nan=False). So two stacks that
both obey 1a+1b can still return different totals on identical input,
which is exactly what A5 exists to close. Hence new rule 1c: the
amendment MUST fix one quantisation point — reject finer-than-ore claims
at the contract edge, or quantise once on the total — and both stacks
must land on the same choice.

Doc-only; no source touched. Suite 627 passed. Nothing patched
unilaterally: shared/ is pull-only and the amendment is not in commons.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MQu2xxwedckjU56byu1aUG
2026-07-25 19:58:04 +02:00
..
2026-07-04-I3-brief.md feat(ingest): I3 — D7-speil av ingest (filkatalog/CSV), bygget fra commons-spec alene 2026-07-04 06:12:43 +02:00
2026-07-04-I5-brief.md feat(ingest): I5 — SQL D7-speil, bygget fra commons-spec alene 2026-07-04 07:18:59 +02:00
2026-07-04-I7-brief.md docs(ingest): I7 — programavslutning, D7-docs avgrenset til CSV + SQL 2026-07-04 20:08:06 +02:00
2026-07-04-I7-statusrapport.md docs(ingest): I7 — programavslutning, D7-docs avgrenset til CSV + SQL 2026-07-04 20:08:06 +02:00
2026-07-10-sesjonsplan-d7.md docs(review): full-paritet review + sesjonsplanverk + beslutningsbrief (Fable 5 + 6 Opus-agenter) 2026-07-16 08:36:07 +02:00
2026-07-16-beslutningsbrief.md docs(portfolio): spec-gap §7 i operatør-køen + paritetsrad 24/25 rettet 2026-07-25 07:41:52 +02:00
2026-07-16-llm-ingestion-guard-plan.md chore(deps): re-pin llm-ingestion-okf to v0.3.1 + migrate tests to stable error codes 2026-07-20 07:22:09 +02:00
2026-07-16-review-paritet.md docs(review): full-paritet review + sesjonsplanverk + beslutningsbrief (Fable 5 + 6 Opus-agenter) 2026-07-16 08:36:07 +02:00
2026-07-16-sesjonsplan-paritet.md docs(portfolio): mark the parity table's D7 column as a frozen 2026-07-16 measurement 2026-07-25 15:27:52 +02:00
2026-07-25-d-a-amendment-forslag.md docs(portfolio): A5 premise corrected — the quantisation POINT is the live divergence 2026-07-25 19:58:04 +02:00
extending.md feat(portfolio): K12 — CLI parity, doc sync, knowledge-base recipe (parity row 24) [skip-docs] 2026-07-25 06:42:52 +02:00
oppskrift-kunnskapsbase.md feat(portfolio): K12 — CLI parity, doc sync, knowledge-base recipe (parity row 24) [skip-docs] 2026-07-25 06:42:52 +02:00
review-2026-07.md docs(review): kryssmodell-review + sesjonsplan-synk mot delt beslutnings-kø D-A–D-E 2026-07-10 07:29:35 +02:00