instar 1.3.1083 → 1.3.1084
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/dist/core/PostUpdateMigrator.js +2 -2
- package/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/upgrades/1.3.1084.md +26 -0
- package/upgrades/side-effects/compaction-recovery-path-reachability.md +197 -0
|
@@ -11392,8 +11392,8 @@ echo ""
|
|
|
11392
11392
|
|
|
11393
11393
|
# On compaction, delegate to the dedicated recovery hook
|
|
11394
11394
|
if [ "\$EVENT" = "compact" ]; then
|
|
11395
|
-
if [ -x "$INSTAR_DIR/hooks/compaction-recovery.sh" ]; then
|
|
11396
|
-
exec bash "$INSTAR_DIR/hooks/compaction-recovery.sh"
|
|
11395
|
+
if [ -x "$INSTAR_DIR/hooks/instar/compaction-recovery.sh" ]; then
|
|
11396
|
+
exec bash "$INSTAR_DIR/hooks/instar/compaction-recovery.sh"
|
|
11397
11397
|
fi
|
|
11398
11398
|
fi
|
|
11399
11399
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1084",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/canonical-migration-contracts.json",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "b84709592eab7a1daf94a9f7b8be48d74f444d82b67a49e64bd7cfec93a0f973",
|
|
3
3
|
"registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1084"
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-31T13:28:38.423Z",
|
|
5
|
+
"instarVersion": "1.3.1084",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"domain": "identity",
|
|
12
12
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
13
13
|
"installedPath": ".instar/hooks/instar/session-start.sh",
|
|
14
|
-
"contentHash": "
|
|
14
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
15
15
|
"since": "2025-01-01"
|
|
16
16
|
},
|
|
17
17
|
"hook:dangerous-command-guard": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"domain": "safety",
|
|
21
21
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
22
22
|
"installedPath": ".instar/hooks/instar/dangerous-command-guard.sh",
|
|
23
|
-
"contentHash": "
|
|
23
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
24
24
|
"since": "2025-01-01"
|
|
25
25
|
},
|
|
26
26
|
"hook:grounding-before-messaging": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"domain": "safety",
|
|
30
30
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
31
31
|
"installedPath": ".instar/hooks/instar/grounding-before-messaging.sh",
|
|
32
|
-
"contentHash": "
|
|
32
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
33
33
|
"since": "2025-01-01"
|
|
34
34
|
},
|
|
35
35
|
"hook:compaction-recovery": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"domain": "identity",
|
|
39
39
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
40
40
|
"installedPath": ".instar/hooks/instar/compaction-recovery.sh",
|
|
41
|
-
"contentHash": "
|
|
41
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
42
42
|
"since": "2025-01-01"
|
|
43
43
|
},
|
|
44
44
|
"hook:external-operation-gate": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"domain": "safety",
|
|
48
48
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
49
49
|
"installedPath": ".instar/hooks/instar/external-operation-gate.js",
|
|
50
|
-
"contentHash": "
|
|
50
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
51
51
|
"since": "2025-01-01"
|
|
52
52
|
},
|
|
53
53
|
"hook:deferral-detector": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"domain": "safety",
|
|
57
57
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
58
58
|
"installedPath": ".instar/hooks/instar/deferral-detector.js",
|
|
59
|
-
"contentHash": "
|
|
59
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
60
60
|
"since": "2025-01-01"
|
|
61
61
|
},
|
|
62
62
|
"hook:self-stop-guard": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"domain": "coherence",
|
|
66
66
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
67
67
|
"installedPath": ".instar/hooks/instar/self-stop-guard.js",
|
|
68
|
-
"contentHash": "
|
|
68
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
69
69
|
"since": "2025-01-01"
|
|
70
70
|
},
|
|
71
71
|
"hook:post-action-reflection": {
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"domain": "evolution",
|
|
75
75
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
76
76
|
"installedPath": ".instar/hooks/instar/post-action-reflection.js",
|
|
77
|
-
"contentHash": "
|
|
77
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
78
78
|
"since": "2025-01-01"
|
|
79
79
|
},
|
|
80
80
|
"hook:external-communication-guard": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"domain": "safety",
|
|
84
84
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
85
85
|
"installedPath": ".instar/hooks/instar/external-communication-guard.js",
|
|
86
|
-
"contentHash": "
|
|
86
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
87
87
|
"since": "2025-01-01"
|
|
88
88
|
},
|
|
89
89
|
"hook:scope-coherence-collector": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"domain": "coherence",
|
|
93
93
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
94
94
|
"installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
|
|
95
|
-
"contentHash": "
|
|
95
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
96
96
|
"since": "2025-01-01"
|
|
97
97
|
},
|
|
98
98
|
"hook:scope-coherence-checkpoint": {
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"domain": "coherence",
|
|
102
102
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
103
103
|
"installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
|
|
104
|
-
"contentHash": "
|
|
104
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
105
105
|
"since": "2025-01-01"
|
|
106
106
|
},
|
|
107
107
|
"hook:free-text-guard": {
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"domain": "safety",
|
|
111
111
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
112
112
|
"installedPath": ".instar/hooks/instar/free-text-guard.sh",
|
|
113
|
-
"contentHash": "
|
|
113
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
114
114
|
"since": "2025-01-01"
|
|
115
115
|
},
|
|
116
116
|
"hook:claim-intercept": {
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"domain": "coherence",
|
|
120
120
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
121
121
|
"installedPath": ".instar/hooks/instar/claim-intercept.js",
|
|
122
|
-
"contentHash": "
|
|
122
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
123
123
|
"since": "2025-01-01"
|
|
124
124
|
},
|
|
125
125
|
"hook:claim-intercept-response": {
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"domain": "coherence",
|
|
129
129
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
130
130
|
"installedPath": ".instar/hooks/instar/claim-intercept-response.js",
|
|
131
|
-
"contentHash": "
|
|
131
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
132
132
|
"since": "2025-01-01"
|
|
133
133
|
},
|
|
134
134
|
"hook:stop-gate-router": {
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"domain": "safety",
|
|
138
138
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
139
139
|
"installedPath": ".instar/hooks/instar/stop-gate-router.js",
|
|
140
|
-
"contentHash": "
|
|
140
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
141
141
|
"since": "2025-01-01"
|
|
142
142
|
},
|
|
143
143
|
"hook:auto-approve-permissions": {
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"domain": "safety",
|
|
147
147
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
148
148
|
"installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
|
|
149
|
-
"contentHash": "
|
|
149
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
150
150
|
"since": "2025-01-01"
|
|
151
151
|
},
|
|
152
152
|
"job:health-check": {
|
|
@@ -1562,7 +1562,7 @@
|
|
|
1562
1562
|
"type": "subsystem",
|
|
1563
1563
|
"domain": "updates",
|
|
1564
1564
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
1565
|
-
"contentHash": "
|
|
1565
|
+
"contentHash": "4e7e883b4c2b36e783a90403115757a3dabffbd4eeabaed9b0a6ec46ccd53875",
|
|
1566
1566
|
"since": "2025-01-01"
|
|
1567
1567
|
},
|
|
1568
1568
|
"subsystem:scheduler": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1084",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/canonical-migration-contracts.json",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "b84709592eab7a1daf94a9f7b8be48d74f444d82b67a49e64bd7cfec93a0f973",
|
|
3
3
|
"registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1084"
|
|
5
5
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
The generated session-start hook now checks and executes compaction recovery at
|
|
9
|
+
the same canonical built-in-hook path used by the update migrator. A regression
|
|
10
|
+
test runs the hook migration and proves both generated references resolve to the
|
|
11
|
+
executable recovery file that was actually installed.
|
|
12
|
+
|
|
13
|
+
## What to Tell Your User
|
|
14
|
+
|
|
15
|
+
After an update, your agent can once again restore its identity and conversation context when a long session is compacted.
|
|
16
|
+
|
|
17
|
+
## Summary of New Capabilities
|
|
18
|
+
|
|
19
|
+
No new capability was added; this restores the existing post-compaction recovery path.
|
|
20
|
+
|
|
21
|
+
## Evidence
|
|
22
|
+
|
|
23
|
+
- `tests/unit/PostUpdateMigrator-loadAssess.test.ts`: 7 tests pass, including the
|
|
24
|
+
new installed-path consistency regression.
|
|
25
|
+
- The regression failed on the previous source with the exact observed mismatch
|
|
26
|
+
before passing after both session-start references were corrected.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Side-Effects Review — compaction recovery path reachability
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `compaction-recovery-path-reachability`
|
|
4
|
+
**Date:** `2026-07-31`
|
|
5
|
+
**Author:** `Instar Agent (instar-codey)`
|
|
6
|
+
**Second-pass reviewer:** `Codex subagent 1798_second_pass — concurred`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
`PostUpdateMigrator` already installs both built-in hooks under
|
|
11
|
+
`.instar/hooks/instar/`, but the generated session-start hook checked and
|
|
12
|
+
executed compaction recovery at the obsolete flat path
|
|
13
|
+
`.instar/hooks/compaction-recovery.sh`. The compact branch therefore skipped
|
|
14
|
+
identity and conversation recovery even after a successful migration. This
|
|
15
|
+
change aligns the session-start executable check and `exec` with the canonical
|
|
16
|
+
installer path and adds a migration-level regression that reads the generated
|
|
17
|
+
hook, extracts both references, and proves they resolve to the executable file
|
|
18
|
+
the same migration wrote. It also registers the broader generated-artifact
|
|
19
|
+
path-contract defect class and tracks its class-level lint as ACT-245.
|
|
20
|
+
|
|
21
|
+
## Decision-point inventory
|
|
22
|
+
|
|
23
|
+
- `getSessionStartHook()` compact-event branch — **modified** — its existing
|
|
24
|
+
deterministic executable-presence check now names the canonical built-in-hook
|
|
25
|
+
directory. The branch's allow/skip semantics are unchanged.
|
|
26
|
+
- `migrateHooks()` built-in installation location — **passed through** — remains
|
|
27
|
+
the authoritative writer at `hooks/instar/compaction-recovery.sh`.
|
|
28
|
+
- Compaction recovery content and all recovery judgments — **passed through** —
|
|
29
|
+
no detection, retry, restart, or recovery policy changes.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 1. Over-block
|
|
34
|
+
|
|
35
|
+
The change rejects no user input and adds no new refusal. A manually maintained
|
|
36
|
+
legacy recovery hook that exists only at `.instar/hooks/compaction-recovery.sh`
|
|
37
|
+
is no longer considered by the generated session-start hook, but that flat path
|
|
38
|
+
was already non-authoritative: every current migration writes and overwrites the
|
|
39
|
+
built-in hook under `.instar/hooks/instar/`. Custom hooks belong under
|
|
40
|
+
`.instar/hooks/custom/`, so preserving the stale flat lookup would reintroduce
|
|
41
|
+
layout ambiguity rather than legitimate compatibility.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. Under-block
|
|
46
|
+
|
|
47
|
+
The regression closes this exact producer/consumer path mismatch for compaction
|
|
48
|
+
recovery. It does not yet scan every generated hook-to-helper reference in the
|
|
49
|
+
repository; that broader class guard is tracked as ACT-245, due 2026-09-14. A
|
|
50
|
+
file may still be absent after external deletion or an interrupted migration;
|
|
51
|
+
the existing executable check intentionally skips in that condition rather than
|
|
52
|
+
making session startup fail.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 3. Level-of-abstraction fit
|
|
57
|
+
|
|
58
|
+
The fix sits at the generated caller that contained the wrong literal, while
|
|
59
|
+
the regression spans the actual migration boundary. Testing only the template
|
|
60
|
+
string would prove spelling but not installation reachability; testing only the
|
|
61
|
+
installed file would miss whether both the check and `exec` use the same path.
|
|
62
|
+
The migration-level test is therefore the smallest layer that proves the
|
|
63
|
+
end-to-end contract without introducing a second path resolver into shell.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 4. Signal vs authority compliance
|
|
68
|
+
|
|
69
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
70
|
+
|
|
71
|
+
- [ ] No — this change produces a signal consumed by an existing smart gate.
|
|
72
|
+
- [x] No — this change has no new block/allow surface.
|
|
73
|
+
- [ ] Yes — but the logic is a smart gate with full conversational context.
|
|
74
|
+
- [ ] Yes, with brittle logic.
|
|
75
|
+
|
|
76
|
+
The pre-existing `-x` check is a deterministic filesystem invariant, not a
|
|
77
|
+
judgment over ambiguous evidence. This change corrects the invariant's operand;
|
|
78
|
+
it does not promote a detector into authority or alter the fail-soft startup
|
|
79
|
+
policy when the helper is truly missing.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 4b. Judgment-point check
|
|
84
|
+
|
|
85
|
+
No new static heuristic or competing-signals decision point is added. “Does the
|
|
86
|
+
canonical executable installed by this migrator exist?” is an enumerable
|
|
87
|
+
structural invariant.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 5. Interactions
|
|
92
|
+
|
|
93
|
+
- **Shadowing:** on compact events, the dedicated recovery script still replaces
|
|
94
|
+
the session-start process before ordinary startup output. The corrected path
|
|
95
|
+
makes the already-designed branch reachable.
|
|
96
|
+
- **Double-fire:** there remains exactly one compact delegate and one `exec`; the
|
|
97
|
+
path correction cannot invoke both legacy and canonical copies.
|
|
98
|
+
- **Races:** migration writes both files synchronously before returning. The test
|
|
99
|
+
exercises the completed migration state; no shared mutable runtime state is
|
|
100
|
+
introduced.
|
|
101
|
+
- **Feedback loops:** none. The helper runs once per compact lifecycle event and
|
|
102
|
+
this change adds no trigger, retry, or re-entry edge.
|
|
103
|
+
- **Adjacent migration behavior:** built-in hooks remain always-overwrite, so an
|
|
104
|
+
existing installation receives both corrected session-start content and the
|
|
105
|
+
canonical recovery helper on its next update.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 6. External surfaces
|
|
110
|
+
|
|
111
|
+
Existing agents regain the intended post-compaction identity and conversation
|
|
112
|
+
context after update. There is no HTTP/API/schema change, no new message, no
|
|
113
|
+
database or ledger write, and no dependency on Telegram, Slack, GitHub, or
|
|
114
|
+
Cloudflare. The only timing dependency is the existing compact lifecycle event.
|
|
115
|
+
No operator-facing action is added.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 6b. Operator-surface quality
|
|
120
|
+
|
|
121
|
+
No operator surface — not applicable.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 7. Multi-machine posture
|
|
126
|
+
|
|
127
|
+
**machine-local BY DESIGN** — session hooks and compaction events belong to the
|
|
128
|
+
specific process and checkout on each machine. The source fix replicates through
|
|
129
|
+
the normal software update path, after which each machine's migrator installs its
|
|
130
|
+
own canonical hook pair. The change emits no user-facing notice, holds no durable
|
|
131
|
+
state, strands nothing on topic transfer, and generates no URL.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 8. Rollback cost
|
|
136
|
+
|
|
137
|
+
Pure generated-hook source change plus test and governance artifacts. A hot-fix
|
|
138
|
+
can revert the two corrected literals; no data migration or agent-state repair is
|
|
139
|
+
required. Reverting would restore the silent post-compaction context loss on
|
|
140
|
+
agents after their next migration, which is why rollback is safe mechanically
|
|
141
|
+
but undesirable behaviorally.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Conclusion
|
|
146
|
+
|
|
147
|
+
The implementation is narrow and complete for #1798: both authoritative source
|
|
148
|
+
references now match the authoritative writer, and a fail-first integration
|
|
149
|
+
regression proves the contract at migration output. Because compaction is a
|
|
150
|
+
session-lifecycle surface, an independent second-pass review checked the
|
|
151
|
+
migration, compact-event execution, authority posture, and release claim and
|
|
152
|
+
concurred. The broader defect-class guard is honestly tracked as ACT-245 rather
|
|
153
|
+
than overstating this one regression as repository-wide closure.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Second-pass review
|
|
158
|
+
|
|
159
|
+
**Reviewer:** Codex subagent `1798_second_pass`
|
|
160
|
+
**Independent read of the artifact:** concur
|
|
161
|
+
|
|
162
|
+
The reviewer independently verified that both generated references match the
|
|
163
|
+
canonical writer, ran the focused 7-test suite, and executed a compact event
|
|
164
|
+
against migrated hooks to prove recovery replaces ordinary session-start flow.
|
|
165
|
+
They found no added authority, persistent-state mutation, security-boundary
|
|
166
|
+
change, or migration hazard, and agreed that the unconfirmed novel class is
|
|
167
|
+
honestly recorded as a gap under ACT-245.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Evidence pointers
|
|
172
|
+
|
|
173
|
+
- `tests/unit/PostUpdateMigrator-loadAssess.test.ts` — fail-first result captured:
|
|
174
|
+
expected `hooks/instar/compaction-recovery.sh`, received
|
|
175
|
+
`hooks/compaction-recovery.sh`; then 7/7 tests passed after the source fix.
|
|
176
|
+
- `src/core/PostUpdateMigrator.ts#getSessionStartHook` — both the executable check
|
|
177
|
+
and `exec` now use the installed built-in-hook path.
|
|
178
|
+
- `src/core/PostUpdateMigrator.ts#migrateHooks` — authoritative writer remains
|
|
179
|
+
`hooks/instar/compaction-recovery.sh`.
|
|
180
|
+
- Independent compact-event execution reached the installed recovery hook and
|
|
181
|
+
replaced ordinary session-start flow.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Class-Closure Declaration (display-only mirror)
|
|
186
|
+
|
|
187
|
+
- **`defectClass`** — `generated-artifact-path-contract-drift`, a novel class:
|
|
188
|
+
independently generated producer and consumer artifacts can each be locally
|
|
189
|
+
valid while naming different canonical paths for the same dependency. Its
|
|
190
|
+
nearest existing class is `prompt-parser-contract-drift`; both are contract
|
|
191
|
+
drift, but that class is restricted to prompt-output schemas rather than
|
|
192
|
+
generated filesystem reachability.
|
|
193
|
+
- **`closure`** — `gap`. The class enters unconfirmed, so this instance test
|
|
194
|
+
cannot honestly claim class-wide closure.
|
|
195
|
+
- **`guardEvidence`** — not applicable for gap closure.
|
|
196
|
+
- **`gap`** — ACT-245, “Add generated-artifact path-contract lint,” due
|
|
197
|
+
2026-09-14. The regression in this change still guards the exact #1798 pair.
|