instar 1.2.19 → 1.2.21

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.
@@ -0,0 +1,109 @@
1
+ # Side-effects review — Wizard audit bundle (v1.2.20)
2
+
3
+ Per L6. Seven dimensions.
4
+
5
+ ## 1. Over-block / under-block
6
+
7
+ Before: UNDER on 10 distinct items surfaced by the audit. Each
8
+ was a separate UX/security gap with its own failure mode (wrong
9
+ bot name in contacts, missing "agent comes alive" moment, no
10
+ admin rights, no token redaction, etc).
11
+
12
+ After: precisely targeted. Each of the 10 audit items adds a
13
+ scoped step to the Codex prompt or wires a state-machine no-op.
14
+ Every step has explicit non-fatal vs AGENTIC_FAILED semantics:
15
+ core identity steps (agentName as display name, admin promotion)
16
+ fail fast; polish steps (/setdescription, /setabouttext, pin)
17
+ narrate and continue. The verifier-based dispatch is unchanged.
18
+
19
+ ## 2. Level-of-abstraction fit
20
+
21
+ One new exported interface (`TelegramAgenticContext`), one
22
+ function-signature change (`buildTelegramAgenticPrompt(projectDir,
23
+ ctx)`), one new exported helper (`runSendLifelineGreeting`). All
24
+ within the existing `src/commands/setup-wizard/codex-driver.ts`
25
+ module. No new modules, no new abstractions.
26
+
27
+ The 10 audit items map cleanly into existing structural slots:
28
+ - 8 are prompt-content additions (steps 9b/9c/12b/14a-rewrite/
29
+ 14b/15b + the AGENT CONTEXT preamble + CRITICAL CREDENTIAL
30
+ HYGIENE preamble + two-call getUpdates flush in step 12).
31
+ - 1 is the state-machine `send-greeting` action's wiring
32
+ (formerly a no-op).
33
+ - 1 is the action dispatcher passing `answers` into
34
+ `runTelegramAgentic`.
35
+
36
+ ## 3. Signal vs Authority compliance
37
+
38
+ - `TelegramAgenticContext` (agentName / userName / agentRole) is
39
+ a SIGNAL flowing from the conversational phases of the
40
+ state-machine to the Codex prompt. Fully derived from user
41
+ answers.
42
+ - The Bot API's `getMe`, `getChatMember`, and `createForumTopic`
43
+ responses are AUTHORITIES for "did this step take effect."
44
+ The prompt explicitly verifies state from these.
45
+ - `verifyTelegramConfig` reading `.instar/config.json` after
46
+ spawn end remains the AUTHORITY for "did the agentic path
47
+ succeed."
48
+ - Token redaction is a behavioral SIGNAL; the actual leak risk
49
+ AUTHORITY is whether any prose Codex generates contains the
50
+ pattern. Tests assert the prompt contains the rule; a future
51
+ audit could add a stdout-scrub pass for defense-in-depth.
52
+
53
+ ## 4. Interactions with adjacent systems
54
+
55
+ - **State-machine `send-greeting` action**: previously
56
+ `return {};`. Now calls `runSendLifelineGreeting`. No
57
+ state-graph change.
58
+ - **`runTelegramAgentic` signature**: gained `answers` parameter.
59
+ Only caller is the dispatcher in `runAction` — already passes
60
+ `answers` to other actions.
61
+ - **`buildTelegramAgenticPrompt`**: signature changed (added
62
+ optional `ctx`). Existing call site updated. The exported test
63
+ ID-checked the no-context-passed default path.
64
+ - **`writeTelegramConfig`** (used by readline backstop):
65
+ unchanged.
66
+ - **`verifyTelegramConfig`**: unchanged.
67
+ - **TOPIC_STYLE constants in TelegramAdapter.ts**: still hard-
68
+ coded in the prompt (audit's drift item to revisit later;
69
+ out-of-scope for v1.2.20).
70
+ - **Existing test suite**: one test wording update ("intro
71
+ message" → "orienting message"). 11 new tests for v1.2.20
72
+ additions. 81 wizard-related tests total, all green.
73
+
74
+ ## 5. Rollback cost
75
+
76
+ Low-medium. 10 scoped additions inside one file; one new helper;
77
+ one state-machine wiring. `git revert` restores v1.2.19
78
+ behavior. No state migration; no config schema change.
79
+
80
+ ## 6. Backwards compatibility / drift surface
81
+
82
+ Fully backwards-compatible.
83
+
84
+ - Codex-runtime users on existing installs: when they re-run
85
+ setup, get the v1.2.20 prompt with correct display name +
86
+ greeting + topics. Existing config carries forward.
87
+ - Claude-runtime users: zero change.
88
+ - Readline backstop (`runTelegramSetup`): zero change.
89
+ - Tests: all existing tests pass; new tests cover new behavior.
90
+
91
+ Drift surface: hard-coded `TOPIC_STYLE` color codes in the
92
+ prompt (from v1.2.19). Canary tests verify; if a future PR
93
+ changes the constants in TelegramAdapter.ts, the prompt drifts.
94
+ Tracked in spec as "out of scope" — could be tightened to
95
+ import from the source of truth.
96
+
97
+ ## 7. Authorization / Trust posture
98
+
99
+ No change. Codex spawn flags unchanged. Bot API access
100
+ unchanged. The chmod 0600 step strictly tightens the file
101
+ permission posture (good direction, no new privilege).
102
+
103
+ ## Outcome
104
+
105
+ Ship. Closes 10 of the 14 audit-surfaced gaps in one
106
+ consolidated update. Each item independently small; together
107
+ they bring the Codex agentic path to feature parity with the
108
+ Claude wizard's Telegram phase on every dimension Justin
109
+ flagged. 81 wizard tests pass; lint + tsc clean.