instar 1.3.1090 → 1.3.1091

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.
@@ -11839,7 +11839,7 @@ except: pass
11839
11839
  if [ -f "\$DISPATCH_FILE" ]; then
11840
11840
  echo ""
11841
11841
  echo "--- CONTEXT DISPATCH (when X arises, read Y) ---"
11842
- cat "\$DISPATCH_FILE" | head -20
11842
+ cat "\$DISPATCH_FILE"
11843
11843
  echo "--- END CONTEXT DISPATCH ---"
11844
11844
  fi
11845
11845
  else
@@ -12716,7 +12716,7 @@ except: pass
12716
12716
  if [ -f "\$DISPATCH_FILE" ]; then
12717
12717
  echo ""
12718
12718
  echo "--- CONTEXT DISPATCH (when X arises, read Y) ---"
12719
- cat "\$DISPATCH_FILE" | head -20
12719
+ cat "\$DISPATCH_FILE"
12720
12720
  echo "--- END CONTEXT DISPATCH ---"
12721
12721
  fi
12722
12722
  else
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "generatedFrom": "source-tree",
4
- "registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
5
- "packageVersion": "1.3.1090",
4
+ "registrySha256": "7874d3c188714b80d0f49d7e22bcd795422452be9b1ca74a71765fd7bc85180f",
5
+ "packageVersion": "1.3.1091",
6
6
  "guards": [
7
7
  {
8
8
  "ref": "docs/canonical-migration-contracts.json",
@@ -1,5 +1,5 @@
1
1
  {
2
- "sha256": "e7db3308f2c1fb5f363816e7e52ebc01b56db58b74625d21ff1eb0fc9924d955",
3
- "registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
4
- "packageVersion": "1.3.1090"
2
+ "sha256": "c87e9f077b874fb4b67d82a000d2f7637efd37d5b5ea5b676a23c8cf29e19a25",
3
+ "registrySha256": "7874d3c188714b80d0f49d7e22bcd795422452be9b1ca74a71765fd7bc85180f",
4
+ "packageVersion": "1.3.1091"
5
5
  }
@@ -502,7 +502,7 @@ The Root says *enforce behavior in structure, not willpower.* This family is **w
502
502
 
503
503
  ### Conservative Outbound: Act, Don't Notify
504
504
 
505
- > **PROPOSAL awaiting operator ratification.** Drafted 2026-07-04 by Echo as part of the Telegram conservatism pass. This standard is NOT yet constitutional; it is written here in the operator's constitution voice for the operator to ratify (or amend/reject). Until ratified, it is a documented intention, not an enforced standard. The structural code fixes it describes (the closed `origin:'system'` bypass) already shipped; this entry names the *disposition* the operator has repeatedly asked for and that the two standards above only partially cover.
505
+ > **RATIFIED 2026-07-31 by the operator** (Telegram topic 29723: *"yes, please ratify it"*). Drafted 2026-07-04 by Echo as part of the Telegram conservatism pass, written in the operator's constitution voice and held as a non-binding proposal until this ratification. It is now constitutional and binding on ALL of Instar. The structural code fixes it describes (the closed `origin:'system'` bypass) already shipped; this entry names the *disposition* the operator has repeatedly asked for and that the two standards above only partially cover.
506
506
 
507
507
  **Rule.** The DEFAULT disposition for any candidate outbound message is that the agent should ACT ON it — not that the user should be notified of it. Notifying the user is the exception, and it must clear a bar: the message genuinely requires the human (a decision only they can make, an approval the agent lacks, an anomaly they must know about, or a direct answer to something they asked). Everything else — status, progress, "I noticed X", housekeeping, self-health, "I'm about to", "I finished" — is the agent's own work to carry, not a ping to send. When the agent DOES notify, it obeys the two standards above by construction: bounded volume (**Bounded Notification Surface**) and single destination (**Notices Route to the Alerts Topic, Never a New One** — an ownerless notice goes to the ONE alerts topic; it never creates its own). **This applies to ALL aspects of INSTAR** — every sentinel, monitor, job, beacon, gate, and future feature, not a per-feature courtesy.
508
508
 
@@ -512,7 +512,7 @@ The Root says *enforce behavior in structure, not willpower.* This family is **w
512
512
 
513
513
  **Traces to the goal.** The user's attention is the scarcest resource the agent touches, and an agent that narrates its own work back to the person it serves has inverted the relationship — it has made the human its monitor. *Structure beats Willpower*: "remember to be conservative" is willpower (and it has visibly failed to stick); the durable answer is silent-by-default emitters + the un-dodgeable topic ceiling + this disposition as the reviewed default every new feature is measured against.
514
514
 
515
- **Applied through (proposed).** The closed `origin:'system'` bypass in `TelegramAdapter.createForumTopic` (only `origin:'user'` or a declared `bounded:true` create-once topic is exempt) + the critical-item flood bound in `createAttentionItem`, both shipped in this pass and pinned by `tests/integration/notification-flood-burst-invariant.test.ts`; the two volume/routing standards above (which this one sits atop); and — the enforcement to build once ratified (tracked `<!-- tracked: CMT-1901 -->`) — a `/spec-converge` disposition reviewer that asks Question 1 ("could the agent just DO this?") of any new user-facing emitter, plus a lint that flags a new proactive `sendToTopic`/`createAttentionItem` emitter that ships enabled-by-default without a stated human-needs-it justification.
515
+ **Applied through.** The closed `origin:'system'` bypass in `TelegramAdapter.createForumTopic` (only `origin:'user'` or a declared `bounded:true` create-once topic is exempt) + the critical-item flood bound in `createAttentionItem`, both shipped in this pass and pinned by `tests/integration/notification-flood-burst-invariant.test.ts`; the two volume/routing standards above (which this one sits atop); and — the enforcement now unlocked by ratification (tracked `<!-- tracked: CMT-1901 -->`) — a `/spec-converge` disposition reviewer that asks Question 1 ("could the agent just DO this?") of any new user-facing emitter, plus a lint that flags a new proactive `sendToTopic`/`createAttentionItem` emitter that ships enabled-by-default without a stated human-needs-it justification.
516
516
 
517
517
  ---
518
518
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "sha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
2
+ "sha256": "7874d3c188714b80d0f49d7e22bcd795422452be9b1ca74a71765fd7bc85180f",
3
3
  "articleCount": 82,
4
4
  "generatedFrom": "docs/STANDARDS-REGISTRY.md",
5
- "packageVersion": "1.3.1090"
5
+ "packageVersion": "1.3.1091"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.1090",
3
+ "version": "1.3.1091",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-07-31T22:14:55.484Z",
5
- "instarVersion": "1.3.1090",
4
+ "generatedAt": "2026-07-31T22:57:11.504Z",
5
+ "instarVersion": "1.3.1091",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
14
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
23
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
32
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
41
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
50
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
59
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
68
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
77
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
86
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
95
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
104
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
113
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
122
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
131
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
140
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
149
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
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": "cfff27275374c5198704b21fd2251651ad5b30e57c14d3de04ea7c9ddbb6b975",
1565
+ "contentHash": "c8967c571858aa01c06455a68e9e12368e7ec38e2730177540c6208a77310fc2",
1566
1566
  "since": "2025-01-01"
1567
1567
  },
1568
1568
  "subsystem:scheduler": {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "generatedFrom": "source-tree",
4
- "registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
5
- "packageVersion": "1.3.1090",
4
+ "registrySha256": "7874d3c188714b80d0f49d7e22bcd795422452be9b1ca74a71765fd7bc85180f",
5
+ "packageVersion": "1.3.1091",
6
6
  "guards": [
7
7
  {
8
8
  "ref": "docs/canonical-migration-contracts.json",
@@ -1,5 +1,5 @@
1
1
  {
2
- "sha256": "e7db3308f2c1fb5f363816e7e52ebc01b56db58b74625d21ff1eb0fc9924d955",
3
- "registrySha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
4
- "packageVersion": "1.3.1090"
2
+ "sha256": "c87e9f077b874fb4b67d82a000d2f7637efd37d5b5ea5b676a23c8cf29e19a25",
3
+ "registrySha256": "7874d3c188714b80d0f49d7e22bcd795422452be9b1ca74a71765fd7bc85180f",
4
+ "packageVersion": "1.3.1091"
5
5
  }
@@ -502,7 +502,7 @@ The Root says *enforce behavior in structure, not willpower.* This family is **w
502
502
 
503
503
  ### Conservative Outbound: Act, Don't Notify
504
504
 
505
- > **PROPOSAL awaiting operator ratification.** Drafted 2026-07-04 by Echo as part of the Telegram conservatism pass. This standard is NOT yet constitutional; it is written here in the operator's constitution voice for the operator to ratify (or amend/reject). Until ratified, it is a documented intention, not an enforced standard. The structural code fixes it describes (the closed `origin:'system'` bypass) already shipped; this entry names the *disposition* the operator has repeatedly asked for and that the two standards above only partially cover.
505
+ > **RATIFIED 2026-07-31 by the operator** (Telegram topic 29723: *"yes, please ratify it"*). Drafted 2026-07-04 by Echo as part of the Telegram conservatism pass, written in the operator's constitution voice and held as a non-binding proposal until this ratification. It is now constitutional and binding on ALL of Instar. The structural code fixes it describes (the closed `origin:'system'` bypass) already shipped; this entry names the *disposition* the operator has repeatedly asked for and that the two standards above only partially cover.
506
506
 
507
507
  **Rule.** The DEFAULT disposition for any candidate outbound message is that the agent should ACT ON it — not that the user should be notified of it. Notifying the user is the exception, and it must clear a bar: the message genuinely requires the human (a decision only they can make, an approval the agent lacks, an anomaly they must know about, or a direct answer to something they asked). Everything else — status, progress, "I noticed X", housekeeping, self-health, "I'm about to", "I finished" — is the agent's own work to carry, not a ping to send. When the agent DOES notify, it obeys the two standards above by construction: bounded volume (**Bounded Notification Surface**) and single destination (**Notices Route to the Alerts Topic, Never a New One** — an ownerless notice goes to the ONE alerts topic; it never creates its own). **This applies to ALL aspects of INSTAR** — every sentinel, monitor, job, beacon, gate, and future feature, not a per-feature courtesy.
508
508
 
@@ -512,7 +512,7 @@ The Root says *enforce behavior in structure, not willpower.* This family is **w
512
512
 
513
513
  **Traces to the goal.** The user's attention is the scarcest resource the agent touches, and an agent that narrates its own work back to the person it serves has inverted the relationship — it has made the human its monitor. *Structure beats Willpower*: "remember to be conservative" is willpower (and it has visibly failed to stick); the durable answer is silent-by-default emitters + the un-dodgeable topic ceiling + this disposition as the reviewed default every new feature is measured against.
514
514
 
515
- **Applied through (proposed).** The closed `origin:'system'` bypass in `TelegramAdapter.createForumTopic` (only `origin:'user'` or a declared `bounded:true` create-once topic is exempt) + the critical-item flood bound in `createAttentionItem`, both shipped in this pass and pinned by `tests/integration/notification-flood-burst-invariant.test.ts`; the two volume/routing standards above (which this one sits atop); and — the enforcement to build once ratified (tracked `<!-- tracked: CMT-1901 -->`) — a `/spec-converge` disposition reviewer that asks Question 1 ("could the agent just DO this?") of any new user-facing emitter, plus a lint that flags a new proactive `sendToTopic`/`createAttentionItem` emitter that ships enabled-by-default without a stated human-needs-it justification.
515
+ **Applied through.** The closed `origin:'system'` bypass in `TelegramAdapter.createForumTopic` (only `origin:'user'` or a declared `bounded:true` create-once topic is exempt) + the critical-item flood bound in `createAttentionItem`, both shipped in this pass and pinned by `tests/integration/notification-flood-burst-invariant.test.ts`; the two volume/routing standards above (which this one sits atop); and — the enforcement now unlocked by ratification (tracked `<!-- tracked: CMT-1901 -->`) — a `/spec-converge` disposition reviewer that asks Question 1 ("could the agent just DO this?") of any new user-facing emitter, plus a lint that flags a new proactive `sendToTopic`/`createAttentionItem` emitter that ships enabled-by-default without a stated human-needs-it justification.
516
516
 
517
517
  ---
518
518
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "sha256": "f8a50d91b77caeaeef502ad348a966480db2d4026c42cee2d94d5e0c19438afd",
2
+ "sha256": "7874d3c188714b80d0f49d7e22bcd795422452be9b1ca74a71765fd7bc85180f",
3
3
  "articleCount": 82,
4
4
  "generatedFrom": "docs/STANDARDS-REGISTRY.md",
5
- "packageVersion": "1.3.1090"
5
+ "packageVersion": "1.3.1091"
6
6
  }
@@ -0,0 +1,26 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ Fresh sessions and compaction recovery now receive the complete generated
9
+ context dispatch table, including the Tier 0 and Tier 1 sections appended at
10
+ its end. The deliberate short identity excerpt remains unchanged.
11
+
12
+ ## What to Tell Your User
13
+
14
+ - **Complete session guidance**: "Fresh sessions and resumed sessions now see every generated context-routing section."
15
+
16
+ ## Summary of New Capabilities
17
+
18
+ | Capability | How to Use |
19
+ |---|---|
20
+ | Receive the full dispatch table at session boundaries | Automatic on fresh session start and compaction recovery |
21
+
22
+ ## Evidence
23
+
24
+ Focused tests inspect both deployed hook generators and verify that neither
25
+ applies the former twenty-line cap. The context hierarchy suite, full build,
26
+ and repository lint also pass.
@@ -0,0 +1,21 @@
1
+ # Side-effect review — complete context dispatch delivery
2
+
3
+ ## Changed boundary
4
+
5
+ `ContextHierarchy` writes an unbounded generated `DISPATCH.md`. The two
6
+ deployed consumers in `PostUpdateMigrator` now preserve that producer contract
7
+ by emitting the complete file on fresh-session and compaction-recovery paths.
8
+
9
+ ## Expected effects
10
+
11
+ - Session-start hook output grows by the currently omitted tail of the dispatch
12
+ file (22 lines on the reporting installation).
13
+ - Tier 0 and Tier 1 guidance is visible at the point where agents need it.
14
+ - Future generator additions remain visible without coordinating a line cap.
15
+
16
+ ## Explicit non-effects
17
+
18
+ - No context files are loaded eagerly because of this change; the dispatch file
19
+ is routing guidance, not the referenced file contents.
20
+ - The intentional `AGENT.md` excerpt bounds are unchanged.
21
+ - No persisted data or config migration is required.