Skip to content

Commit 39da640

Browse files
wshallwshallclaude
andcommitted
docs(webconsole): retire the integer-seam vocabulary #1443 left behind (BACKLOG #1445)
BACKLOG #1220 made ENGINE_UI_SEAM a derived digest. #1443 rewrote the procedure page onto that and named the remaining sites in its closing paragraph, deliberately leaving them out so the rewrite stayed separately reviewable. This takes them. messagefoundry_webconsole/__init__.py carried a comment amputated by the #279 narrowing: e5992c10f wrote a five-line sentence, c01cb8294 deleted four of the lines and left the opener as diff context, ending on the article "the". It is deleted rather than restored -- _ui_seam.py:61-66 already carries the content, and the vN labels are retired as identifiers. The two docstring lines above it are rewritten in the same block, because they carried the same pre-#279 range framing and deleting the fragment alone would have put the contradiction on adjacent lines. The package changelog claimed [Unreleased] supports seam 2 and 3 and kept seam 2 "because the new field has a default" -- the reasoning #279 retired as untested. The banner now points at SUPPORTED_ENGINE_SEAMS rather than quoting a value, and the file header no longer tells the next author to write one into an entry. scripts/webconsole_seam_snapshot.py:13 is taken at line granularity: #1443 fixes that same word in the doc twin and its two hunks do not reach line 13, so a defer would orphan it. The two spans #1443 does rewrite in that file are left alone. docs/adr/0143 is dated, not edited -- docs/adr/README.md makes ADRs append-only, and the checklist row records what was true on 2026-07-21. No contract moved: --digest returns the same value as ENGINE_UI_SEAM and SUPPORTED_ENGINE_SEAMS, before and after. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 685d4f5 commit 39da640

4 files changed

Lines changed: 24 additions & 11 deletions

File tree

‎docs/adr/0143-web-console-on-by-default-disableable-with-loopback-secure-context-browser-hardening.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,15 @@ Posture-A ASVS re-score is owner-gated and handled separately.
173173
- [x] Docs (`CONFIGURATION.md`, `SECURITY.md`, `PHI.md`, `OFF-LOOPBACK-DEPLOYMENT.md`) + `ide/src/securityEditor.ts` flip "off by default" → on by default.
174174
- [ ] Posture-A ASVS re-score (3.3.1/3.3.3 stay Partial on loopback; auto-TLS deferred) — **owner-gated, separate**.
175175

176+
> **Note added 2026-09-04 (BACKLOG #1445). The checklist above is left as written.** Its
177+
> `app.state.loopback` row says the attribute was "curated into the webconsole seam snapshot", and
178+
> that was true on 2026-07-21. BACKLOG #1220 has since retired curation: `scripts/seam_discovery.py`
179+
> derives the surface, and `ENGINE_UI_SEAM` is a digest nobody picks, so the row's "(no
180+
> `ENGINE_UI_SEAM` bump)" names a decision that no longer exists either. Neither this ADR's decision
181+
> nor its analysis is affected. The live procedure is in
182+
> [`docs/WEBCONSOLE-PACKAGE.md`](../WEBCONSOLE-PACKAGE.md); this ADR is append-only history and is
183+
> dated rather than edited (`docs/adr/README.md`).
184+
176185
## Cross-reference (2026-08-04) — the in-place `serve_ui = False` flips feed no exposure predicate (BACKLOG #326)
177186

178187
Both degrade arms decided here — the package-absent soft-degrade and the exposed-bind auto-degrade —

‎messagefoundry_webconsole/__init__.py‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@
2424
#: ``messagefoundry-harness``); its own tag / changelog / PyPI cadence. Starts matched to the engine.
2525
__version__ = "0.2.15"
2626

27-
#: The engine contract versions this console build supports (``api._ui_seam.ENGINE_UI_SEAM``). A pair
28-
#: outside this set is refused at startup — the runtime backstop behind the PEP 508 compat range.
29-
# Seam 9 is the S8a console-dashboard lane (#76/#131/#136, ADR 0065 + ADR 0007 amendments): the
27+
#: The engine seam this console build supports (``api._ui_seam.ENGINE_UI_SEAM``). Any other engine is
28+
#: refused at startup — the runtime backstop behind the PEP 508 compat range.
3029
# The console supports EXACTLY the engine seam it was built against — deliberately a single value,
3130
# not a range (BACKLOG #279, resolved 2026-07-21 in favour of option (b)).
3231
#

‎packaging/messagefoundry-webconsole/CHANGELOG.md‎

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/
77
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
88

99
This package is **separately versioned** from the engine and pins itself to the engine's
10-
`api._ui_seam.ENGINE_UI_SEAM` via `SUPPORTED_ENGINE_SEAMS`; each entry notes the supported engine
11-
seam(s). See [`docs/WEBCONSOLE-PACKAGE.md`](../../docs/WEBCONSOLE-PACKAGE.md) for the seam handshake and
12-
the engine compatibility range.
10+
`api._ui_seam.ENGINE_UI_SEAM` via `SUPPORTED_ENGINE_SEAMS`; each entry records the supported engine
11+
seam. Entries from before BACKLOG #1220 quote the integer that shipped at the time; a current one
12+
points at the constant instead, because nobody picks that value now. See
13+
[`docs/WEBCONSOLE-PACKAGE.md`](../../docs/WEBCONSOLE-PACKAGE.md) for the seam handshake and the
14+
engine compatibility range.
1315

1416
## [Unreleased]
1517

16-
**Supported engine UI seam: `2`, `3`.**
18+
**Supported engine UI seam: the single value in `SUPPORTED_ENGINE_SEAMS` -- read it from
19+
[`messagefoundry_webconsole/__init__.py`](../../messagefoundry_webconsole/__init__.py), not from
20+
this line.**
1721

1822
### Added
1923
- **Engine-wide KPI headline on the status page** (BACKLOG #93). The status page now renders the
@@ -22,9 +26,10 @@ the engine compatibility range.
2226
PHI.
2327

2428
### Changed
25-
- **Engine UI seam bumped to `3`** (`SystemStatus` gained the additive `kpis` field). The console now
26-
`SUPPORTED_ENGINE_SEAMS = {2, 3}`: seam `2` is retained because the new field has a default, so a
27-
seam-`2` engine (whose `/status` omits `kpis`) still renders here with default (zeroed) KPI values.
29+
- **The engine UI seam moved** (`SystemStatus` gained the additive `kpis` field, so the contract
30+
surface changed). `SUPPORTED_ENGINE_SEAMS` holds the one new value, so this console build refuses
31+
any engine but the one it was built against -- including an engine one contract behind, whatever
32+
defaults its DTOs carry (BACKLOG #279).
2833

2934
### Security
3035
- **The message editor now requires `messages:view_raw` alongside `messages:edit`** (BACKLOG #324).

‎scripts/webconsole_seam_snapshot.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
``deps = UiDeps(...)`` site catches builder-signature drift, but NOT a Pydantic DTO field rename
1111
(that breaks render, not import). The engine test ``tests/test_webconsole_seam_snapshot.py``
1212
regenerates this snapshot and diffs it against the golden ``tests/golden/webconsole_seam.snapshot``,
13-
failing CI on any unbumped incompatible change.
13+
failing CI on an incompatible change the seam did not follow.
1414
1515
**The surface is DISCOVERED, not curated** (BACKLOG #1220). It used to be five hand-maintained
1616
tuples, and three of them had drifted: 25 rendered DTOs were unlisted, ``api.security`` was missing

0 commit comments

Comments
 (0)