From c62fc45fe0bb5bef01dc0c7d0226acfa310d9b30 Mon Sep 17 00:00:00 2001 From: "@permadeath.com" Date: Wed, 19 Aug 2026 16:32:56 -0400 Subject: [PATCH] docs(observability): check off capture, rendering and the latch timeline The posterior and threat-map items stay open: they render beliefs that do not exist yet, which is what this epic depends on. Status moves off blocked, since the half that only needed the rationale is done. --- plan/README.md | 2 +- plan/observability.md | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/plan/README.md b/plan/README.md index 732a069..0964f9c 100644 --- a/plan/README.md +++ b/plan/README.md @@ -78,7 +78,7 @@ for a reason: it fits `M`, and `M` does not exist until `features` and | [capability](capability.md) | Forces and doctrines map to each other | blocked | strategies | | [difficulty](difficulty.md) | Fallible, never absurd | blocked | beliefs, doctrine | | [training](training.md) | Weights fitted from recorded play | blocked | features, harness | -| [observability](observability.md) | Read back what the bot believed and chose | blocked | beliefs | +| [observability](observability.md) | Read back what the bot believed and chose | open | beliefs | ## Continuous diff --git a/plan/observability.md b/plan/observability.md index b6f2b3d..7b592a3 100644 --- a/plan/observability.md +++ b/plan/observability.md @@ -1,7 +1,7 @@ --- id: observability title: Read back what the bot believed and chose -status: blocked +status: open dependsOn: [beliefs] exitCriterion: > A finished match can be stepped through turn by turn, showing what the bot @@ -16,10 +16,27 @@ and every proposal it rejected. Nothing reads it. "The lance chose badly" and "no unit offered anything better" look identical in a record that keeps only the winner. +`SdsClient` now appends every decision - the question, the answer, what the host +did with it, and the rationale - to `-.decisions.jsonl` in the +run directory. `sds view` renders one as a self-contained HTML page. + +- [x] Capture the rationale somewhere a tool can read it, rather than only in + the container's stdout mixed with MegaMek's output - [ ] Render a match turn by turn as HTML: threat map, rounds-remaining posterior, opponent doctrine posterior, per-target damage distributions, proposals kept and dropped + - [x] proposals kept and dropped, with each one's value under the stance the + force was actually holding, so a bad call is visibly different from a + bad menu + - [x] the force's stance as a bar, its dominant intent, and how many rounds + it has held + - [ ] threat map, rounds-remaining posterior, opponent doctrine posterior, + per-target damage distributions - none of these exist yet; they arrive + with `beliefs`, which is what this epic depends on - [ ] Publish it as an artifact so a tab can be left open while playing -- [ ] Highlight latch transitions - "round 7, honour broken against Jade Falcon" + - [x] `--watch` regenerates the file and the page reloads itself, which is + the offline half of this. A `file://` page cannot fetch its own + siblings, so polling a data file was not available +- [x] Highlight latch transitions - "round 7, honour broken against Jade Falcon" is the story beat -- [ ] Per-phase `answered`/`defaulted`/`illegal` already exist; surface them here +- [x] Per-phase `answered`/`defaulted`/`illegal` already exist; surface them here -- 2.51.2