acp-kernel 0.0.99-pr.491.348 → 0.0.99-pr.491.349
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DESIGN.md +1 -1
- package/package.json +1 -1
package/DESIGN.md
CHANGED
|
@@ -269,7 +269,7 @@ The contract is a **property**, not a specific-message guarantee: the rebuilt wi
|
|
|
269
269
|
|
|
270
270
|
Pre-#489 the pin was **unconditional**: it ran before the covered check for every covered first user. Combined with `syncBlocks` keeping the block active (its base id is present in the pre-prune view by definition), this voided fold coverage whenever a covered message became the view's first user — the fold reported success but the payload re-sent itself verbatim on every turn (#489, found analyzing billion-context#1869). The fix keeps the property, drops the over-guarantee.
|
|
271
271
|
|
|
272
|
-
- **Why:** deliberate since prune's first implementation (v0.0.2) — protecting the leading-user property is part of the contract, not incidental. What changed in #489 is _which_ message carries the property: the property now moves to the earliest surviving user instead of being welded to the specific first message. Regression-tested by `tests/state-prune.test.ts` ("prune drops covered first user when another user survives", "prune keeps covered first user when no user survives behind"), `tests/orphan-fixes.test.ts` ("prune: first user message pruned when covered (no duplication)" — degenerate assistant-led shape), and `tests/regression-first-user-pin.test.ts` (#489 pipeline A/B, both trigger shapes).
|
|
272
|
+
- **Why:** deliberate since prune's first implementation (v0.0.2) — protecting the leading-user property is part of the contract, not incidental. What changed in #489 is _which_ message carries the property: the property now moves to the earliest surviving user instead of being welded to the specific first message. Regression-tested by `tests/state-prune.test.ts` ("prune drops covered first user when another user survives", "prune keeps covered first user when no user survives behind"), `tests/orphan-fixes.test.ts` ("prune: first user message pruned when covered (no duplication)" — degenerate assistant-led shape), and `tests/regression-first-user-pin.test.ts` (#489 pipeline A/B, both trigger shapes), and `tests/issue1476-reid.test.ts` ("first-user pinned echo keeps its id and ref across post-fold passes" — degenerate shape, pinned echo id/ref stability across passes).
|
|
273
273
|
- **Consequences for consumers:**
|
|
274
274
|
- Consumers may now observe byte-level disappearance of the first user message after compression whenever another user message survives behind it; post-compress wire assertions must expect the rendered summary alone in that case. Token-size and prefix-cache estimates should drop the pinned-message allowance for those sessions.
|
|
275
275
|
- Degenerate shapes (assistant-led survivors) still carry the pinned message verbatim next to its summary — estimates must keep the allowance there.
|
package/package.json
CHANGED