Skip to content

Commit e790ea4

Browse files
committed
design: the ecosystem migration waits, and the reason is a silent regression
Republishing the three packages with the new table before their consumers move would stop provisioning on every older engine, silently: an older mcpp parses [xlings.workspace] and provisions nothing from it. That is worse than the advisory it would silence. This cycle verifies the three packages on the new engine instead; the republish waits for a floor that makes the older engine refuse rather than degrade.
1 parent a669f37 commit e790ea4

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

.agents/docs/2026-09-03-xlings-workspace-as-the-one-table.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,20 @@ not theirs to edit, and refusing it punishes the wrong person.
192192
1. The merged reader ships. `[xlings] deps` in the **root** manifest is a hard
193193
error naming the line to write; in a **dependency's** manifest it is
194194
honoured and reported once, naming the package.
195-
2. The three packages are republished with `[xlings.workspace]` and an mcpp
196-
floor.
195+
2. The three packages are republished with `[xlings.workspace]`**not in
196+
this cycle, and the reason is a silent regression rather than caution.** An
197+
older mcpp parses `[xlings.workspace]` perfectly well and provisions nothing
198+
from it, so a package that migrated before its consumers moved would stop
199+
installing its emulator on every older engine, with no message anywhere.
200+
That is worse than the advisory it would silence. The migration is safe once
201+
the index's `latest` mcpp provisions from the table, and a floor in the
202+
package makes the older engine refuse instead of degrade.
197203
3. An index sweep confirms no other published manifest declares it. When the
198204
advisory has been silent across a release, the dependency path refuses too.
199205

206+
What this cycle does instead is verify: the three packages build on the new
207+
engine, produce the advisory, and provision exactly as before.
208+
200209
**A limit of the advisory, stated rather than implied.** It rides
201210
`schemaWarnings`, which `prepare` prints for the ROOT manifest and escalates
202211
under `--strict`. A dependency's schema warnings are attached and not printed
@@ -519,7 +528,7 @@ T1 manifest ──┬── T2 provisioning scope ──┐
519528
| T4 | `xpm.<platform>.deps` in the emitted descriptor | `src/pm/publisher.cppm` | T1 |
520529
| T5 | `docs/05` §2.13, `docs/17`, both `docs/zh/` twins | docs | T1-T4 |
521530
| T6 | Unit tests and one e2e | `tests/` | T1-T4 |
522-
| T7 | The three packages republish | `mcpplibs/{aarch64-virt-rt,riscv-virt-rt,std-freestanding}` | T8 |
531+
| T7 | The three packages are verified on the new engine; the republish waits for the floor (§2.4) | `mcpplibs/{aarch64-virt-rt,riscv-virt-rt,std-freestanding}` | T8 |
523532
| T8 | Version, CI, self-review, merge, release, sandbox | — | T5, T6 |
524533
525534
### 16.1 What each axis demands of the implementation

0 commit comments

Comments
 (0)