paqad-ai 1.63.1 → 1.63.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # paqad-ai
2
2
 
3
+ ## 1.63.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 462e891: Keep one change in one evidence bundle when the session id rotates mid-change (#404).
8
+
9
+ The active feature is tracked per session, so when the host session id rotated partway
10
+ through a change — an app relaunch, a resumed conversation, a rotated `SE_SESSION` — the
11
+ new session read a fresh control, found nothing active, and minted a second
12
+ `change-<ULID>`. The bundle the change was already recorded in got orphaned, and the
13
+ stages recorded before the rotation had to be re-recorded by hand.
14
+
15
+ A session's control is now reconciled before anything mints: when its active pointer
16
+ names no evidence, it is repointed at the in-flight bundle **for the current branch**.
17
+ This runs on both the write and the read paths, and from the SessionStart hook so a
18
+ rotation is carried over before the agent records anything. It never mints a bundle,
19
+ never adopts when two or more changes are in flight on the branch, and never resumes a
20
+ feature the session paused.
21
+
22
+ The branch is what makes this usable. "In flight" alone means real stage rows and no
23
+ close row, and that set only grows — an abandoned change and a change shipped without a
24
+ passing verdict never get a close row either, so a real repo accumulates them (this one
25
+ held 13). Scoped that way, an "exactly one in flight" rule could never fire. A session id
26
+ rotates within a change and a change is built on one branch, so the branch identifies the
27
+ rotated session's own work, with no clock heuristic and no tunable window. The branch is
28
+ stamped on the bundle's `open` row and falls back to the branch `delivery.json` already
29
+ recorded; a bundle with no knowable branch is never adopted while on one.
30
+
31
+ `closeActiveFeature` also stamps a `close` row on the bundle now. Releasing one session's
32
+ pointer was previously the only record that a change had finished, which no other session
33
+ could see — so adoption would have resurrected it.
34
+
3
35
  ## 1.63.1
4
36
 
5
37
  ### Patch Changes