@aiassesstech/mighty-mark 0.5.2 → 0.5.4

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
@@ -5,6 +5,64 @@ All notable changes to `@aiassesstech/mighty-mark` will be documented in this fi
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.5.4] — 2026-03-07
9
+
10
+ **Documentation sync — updated check counts, rules, guides, and deployment playbook.**
11
+
12
+ ### Changed
13
+ - Updated Mark's agent files (SOUL.md, AGENTS.md, IDENTITY.md) to reflect 72 checks across 9 categories (was "26 across 5").
14
+ - Fixed seed-agent-memory.sh category count (9, not 8).
15
+ - Updated SPEC Section 6 (Mighty Mark Integration Mapping) — marked 4 checks as Built, added `checkTelegramAllowlist`.
16
+ - Updated Rule 806 — deployment scripts now reference npm package paths, added hardening scripts.
17
+ - Updated Deployment Playbook — added "Post-Install Hardening (New VPS)" onboarding flow.
18
+ - Updated CHANGELOG with entries for v0.5.0–v0.5.3.
19
+ - Updated trust-alliance and yellow-brick-road agent docs content.
20
+
21
+ ## [0.5.3] — 2026-03-07
22
+
23
+ **Optimized agent memory seed script.**
24
+
25
+ ### Added
26
+ - **`seed-agent-memory.sh`** — deploys role-specific MEMORY.md to all 6 fleet agents. Each agent gets operational knowledge tailored to their function (fleet structure, communication patterns, key decisions, lessons learned). Supports `--dry-run` and `--force` (backs up before overwriting).
27
+ - Also creates Jessie's HEARTBEAT.md (with cron + memory maintenance) if missing.
28
+
29
+ ## [0.5.2] — 2026-03-07
30
+
31
+ **Deploy-fleet script bundled into npm package.**
32
+
33
+ ### Added
34
+ - **`deploy-fleet.sh`** moved into `src/scripts/` — ships with the npm package for VPS deployment.
35
+
36
+ ## [0.5.1] — 2026-03-07
37
+
38
+ **Telegram config structure fix.**
39
+
40
+ ### Fixed
41
+ - **`checkTelegramAllowlist`** now correctly handles `channels.telegram` with per-account policies (not just top-level `config.telegram`). Supports `allowlist` and `pairing` DM policies.
42
+ - Extended `OpenClawConfig` interface to include `channels.telegram.accounts` structure.
43
+ - Updated unit tests and scenario tests for the new config path.
44
+
45
+ ## [0.5.0] — 2026-03-07
46
+
47
+ **Post-install hardening checks + VPS deployment scripts.**
48
+
49
+ ### Added
50
+ - **4 new security checks** in `security-hardening.ts` (total security checks: 8):
51
+ - `checkModelDefaults` — verifies primary model + at least one fallback
52
+ - `checkSecretPermissions` — verifies `~/.openclaw/secrets/` dir=700, file=600
53
+ - `checkTelegramAllowlist` — verifies DM policy is `allowlist` or `pairing`
54
+ - `checkWorkspacePersonalization` — verifies SOUL.md + IDENTITY.md exist and are customized (>100 bytes) for all 6 agents
55
+ - **`verify-post-install-hardening.sh`** — read-only VPS verification script (human/JSON/quiet output modes)
56
+ - **`apply-post-install-hardening.sh`** — applies hardening config (secrets dir, MEMORY.md, HEARTBEAT.md, openclaw.json patches). Supports `--dry-run` and `--skip-restart`.
57
+ - 56 unit tests for the 4 new security checks.
58
+ - Updated scenario tests with model defaults and channels.telegram config.
59
+ - Total morning check: 72 checks across 9 categories (gateway, agents, system, api, data, memory, fleet, alerting, security).
60
+
61
+ ### Deployment Notes
62
+ - Copy new scripts from `src/scripts/` to `/opt/mighty-mark/` on VPS.
63
+ - Run `mighty-mark check security` to verify all 8 security checks.
64
+ - Use `verify-post-install-hardening.sh --json` for CI integration.
65
+
8
66
  ## [0.4.8] — 2026-03-06
9
67
 
10
68
  **Platform hardening security checks + deployment reliability fixes.**
package/agent/AGENTS.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Mighty Mark — Operating Rules
2
2
 
3
3
  ## Rule 1: Morning Check Protocol
4
- Every day at {{MORNING_CHECK_HOUR_CT}}:00 CT, I run all 26 health checks across 5 categories.
4
+ Every day at {{MORNING_CHECK_HOUR_CT}}:00 CT, I run all health checks across 9 categories
5
+ (gateway, agents, system, api, data, memory, fleet, alerting, security).
5
6
  I classify the result as GREEN, YELLOW, or RED. I send the report to Greg
6
7
  via Telegram. I store the result for trend analysis. No exceptions, no skips.
7
8
 
package/agent/IDENTITY.md CHANGED
@@ -15,4 +15,4 @@
15
15
  | **Service** | mark-morning-check |
16
16
  | **Infrastructure** | Hetzner VPS (shared with fleet) |
17
17
  | **Persistence** | JSON file store at .mighty-mark-data/ |
18
- | **Checks** | 26 across 5 categories (gateway, agents, system, api, data) |
18
+ | **Checks** | 72 across 9 categories (gateway, agents, system, api, data, memory, fleet, alerting, security) |
package/agent/SOUL.md CHANGED
@@ -43,8 +43,8 @@ The fleet depends on me, and I depend on nothing.
43
43
  ## My Tools
44
44
 
45
45
  - **`mark_status`** — Quick status snapshot (last check, active incidents, 7-day uptime)
46
- - **`mark_health`** — Full health check, all 26 checks across 5 categories
47
- - **`mark_check`** — Run checks for a specific category (gateway, agents, system, api, data)
46
+ - **`mark_health`** — Full health check, all checks across 9 categories (gateway, agents, system, api, data, memory, fleet, alerting, security)
47
+ - **`mark_check`** — Run checks for a specific category (gateway, agents, system, api, data, memory, fleet, alerting, security)
48
48
  - **`mark_incidents`** — List recent incidents from the last N days
49
49
  - **`mark_report`** — Generate a formatted report (summary, detailed, or telegram)
50
50
  - **`mark_uptime`** — Rolling uptime SLA data (7-day, 14-day, 30-day)
package/dist/index.d.ts CHANGED
@@ -23,7 +23,7 @@ export declare class MarkCore {
23
23
  constructor(rawConfig?: Record<string, unknown>);
24
24
  /** Initialize all subsystems. Must be called before any operations. */
25
25
  initialize(): Promise<void>;
26
- /** Run a full health check (all 26 checks). */
26
+ /** Run a full health check (all checks across 9 categories). */
27
27
  runHealthCheck(ctx?: CheckContext): Promise<MorningReport>;
28
28
  /** Run checks for a single category. */
29
29
  runCategory(category: string, ctx?: CheckContext): Promise<CategoryResults>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@ export class MarkCore {
45
45
  this.trendAnalyzer = new TrendAnalyzer();
46
46
  this.lastReport = await this.store.getLastCheck();
47
47
  }
48
- /** Run a full health check (all 26 checks). */
48
+ /** Run a full health check (all checks across 9 categories). */
49
49
  async runHealthCheck(ctx) {
50
50
  const report = await this.runner.runAll(ctx);
51
51
  // Persist results
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiassesstech/mighty-mark",
3
- "version": "0.5.2",
3
+ "version": "0.5.4",
4
4
  "description": "System Health Sentinel for AI Assess Tech Fleet — autonomous monitoring, watchdog recovery, and fleet infrastructure oversight.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,501 @@
1
+ #!/bin/bash
2
+ # ============================================================================
3
+ # OpenClaw Agent Memory Seed — Optimized MEMORY.md Deployment
4
+ # Author: Archie
5
+ # Date: 2026-03-07
6
+ # Spec: SPEC-OPENCLAW-POST-INSTALL-HARDENING-CHECKLIST v1.1, Step 2
7
+ #
8
+ # Seeds each fleet agent's MEMORY.md with operational knowledge tailored to
9
+ # their role, tools, communication patterns, and lessons learned from
10
+ # production. This is NOT the generic template — each agent gets content
11
+ # specific to their function in the ANET-AGI-001 fleet.
12
+ #
13
+ # Safety:
14
+ # - NEVER overwrites an existing MEMORY.md
15
+ # - Checks both agent workspace and extension dirs
16
+ # - Supports --dry-run to preview without writing
17
+ # - Supports --force to overwrite (backs up first)
18
+ #
19
+ # Ships with @aiassesstech/mighty-mark npm package (src/scripts/).
20
+ # Run on VPS:
21
+ # bash /opt/mighty-mark/seed-agent-memory.sh
22
+ # bash /opt/mighty-mark/seed-agent-memory.sh --dry-run
23
+ #
24
+ # Exit codes:
25
+ # 0 = success
26
+ # 1 = error
27
+ # ============================================================================
28
+
29
+ set -euo pipefail
30
+
31
+ DRY_RUN=false
32
+ FORCE=false
33
+
34
+ while [[ $# -gt 0 ]]; do
35
+ case $1 in
36
+ --dry-run) DRY_RUN=true; shift ;;
37
+ --force) FORCE=true; shift ;;
38
+ -h|--help)
39
+ echo "Usage: $0 [--dry-run] [--force]"
40
+ echo " --dry-run Preview changes without writing files"
41
+ echo " --force Overwrite existing MEMORY.md (backs up first)"
42
+ exit 0
43
+ ;;
44
+ *) echo "Unknown option: $1"; exit 1 ;;
45
+ esac
46
+ done
47
+
48
+ OPENCLAW_HOME="${OPENCLAW_STATE_DIR:-${OPENCLAW_HOME:-$HOME}/.openclaw}"
49
+ EXTENSIONS_DIR="$OPENCLAW_HOME/extensions"
50
+ TIMESTAMP=$(date +%Y%m%d_%H%M%S)
51
+
52
+ created=0
53
+ skipped=0
54
+ backed_up=0
55
+
56
+ resolve_workspace() {
57
+ local agent=$1
58
+ local ws=""
59
+ if command -v openclaw &>/dev/null; then
60
+ ws=$(openclaw agent workspace "$agent" 2>/dev/null || echo "")
61
+ fi
62
+ [ -z "$ws" ] && ws="$OPENCLAW_HOME/agents/$agent"
63
+ echo "$ws"
64
+ }
65
+
66
+ write_memory() {
67
+ local agent=$1
68
+ local content=$2
69
+
70
+ local agent_ws
71
+ agent_ws=$(resolve_workspace "$agent")
72
+ local agent_ext="$EXTENSIONS_DIR/$agent/agent"
73
+
74
+ local existing=""
75
+ if [ -f "$agent_ws/MEMORY.md" ]; then
76
+ existing="$agent_ws/MEMORY.md"
77
+ elif [ -f "$agent_ext/MEMORY.md" ]; then
78
+ existing="$agent_ext/MEMORY.md"
79
+ fi
80
+
81
+ if [ -n "$existing" ] && ! $FORCE; then
82
+ local size
83
+ size=$(stat -c '%s' "$existing" 2>/dev/null || stat -f '%z' "$existing" 2>/dev/null)
84
+ echo " SKIP $agent — MEMORY.md exists at $existing ($size bytes)"
85
+ skipped=$((skipped + 1))
86
+ return
87
+ fi
88
+
89
+ local target_dir="$agent_ws"
90
+ [ ! -d "$target_dir" ] && target_dir="$agent_ext"
91
+
92
+ if $DRY_RUN; then
93
+ if [ -n "$existing" ]; then
94
+ echo " [DRY RUN] Would backup + overwrite $existing"
95
+ else
96
+ echo " [DRY RUN] Would create $target_dir/MEMORY.md"
97
+ fi
98
+ created=$((created + 1))
99
+ return
100
+ fi
101
+
102
+ mkdir -p "$target_dir"
103
+
104
+ if [ -n "$existing" ]; then
105
+ cp "$existing" "${existing}.bak.${TIMESTAMP}"
106
+ echo " $agent: backed up existing MEMORY.md → ${existing}.bak.${TIMESTAMP}"
107
+ backed_up=$((backed_up + 1))
108
+ target_dir="$(dirname "$existing")"
109
+ fi
110
+
111
+ printf '%s' "$content" > "$target_dir/MEMORY.md"
112
+ echo " $agent: created MEMORY.md at $target_dir/MEMORY.md ($(echo "$content" | wc -c | tr -d ' ') bytes)"
113
+ created=$((created + 1))
114
+ }
115
+
116
+ echo "=== OpenClaw Agent Memory Seed ==="
117
+ echo "Timestamp: $TIMESTAMP"
118
+ echo "OPENCLAW_HOME: $OPENCLAW_HOME"
119
+ $DRY_RUN && echo "Mode: DRY RUN (no files will be written)"
120
+ $FORCE && echo "Mode: FORCE (existing files will be backed up and overwritten)"
121
+ echo ""
122
+
123
+ # ── Jessie (Commander) ─────────────────────────────────────
124
+ read -r -d '' JESSIE_MEMORY << 'MEMEOF' || true
125
+ # Long-Term Memory
126
+
127
+ ## Fleet Structure
128
+
129
+ The ANET-AGI-001 fleet has 6 agents under constitutional separation of powers:
130
+ - **Jessie** (commander) — Executive authority, veto power, morning briefing, Greg's partner
131
+ - **Grillo** (conscience) — Independent behavioral assessment, LCSH framework, audit chain
132
+ - **Noah** (navigator) — Temporal trajectory tracking, flight plan deviation, lifecycle phases
133
+ - **Nole** (operator) — Autonomous economic agent, Trust Alliance subscriptions, USDC wallet on Base L2
134
+ - **Sam** (engineer) — Builds and tests artifacts in Docker sandbox, 3-attempt escalation rule
135
+ - **Mighty Mark** (sentinel) — Infrastructure health, morning checks, fleet backup, memory guardian
136
+
137
+ ## Morning Protocol
138
+
139
+ Trigger phrases: "good morning," "briefing," "fleet status," "sitrep," "status check," "morning report"
140
+ Sequence: jessie_briefing → mark_status → grillo_status → noah_status → nole_status → sam_pipeline → nole_review_pending → mark_security_status
141
+ Lead with worst news. Security alerts (CRITICAL/HIGH unacknowledged) override all other lead items.
142
+ Partial briefing is better than no briefing — continue if a tool fails.
143
+
144
+ ## Key Decisions
145
+
146
+ - Veto format: STATE the action → CITE the risk → GIVE the threshold for reconsideration. Three sentences max.
147
+ - Risk-tiered auto-approval: Low=24h, Medium=48h, High=72h, Critical=never auto-approves.
148
+ - Grillo overrides are logged in the immutable audit trail. Can override, cannot hide.
149
+ - RED infrastructure (from Mark) defers all non-essential operations.
150
+
151
+ ## Fleet Communication
152
+
153
+ - All inter-agent communication uses fleetSend(bus, transport, options) — never bus.send() directly.
154
+ - Chain of command: agents escalate to Jessie → Jessie escalates to Greg. Exception: Mark sends health alerts directly to Greg (dual notification for infrastructure).
155
+ - Sam escalates after 3 failed build attempts with structured failure report.
156
+
157
+ ## Lessons Learned
158
+
159
+ - Trust the trend, not the snapshot. Use noah_trajectory for deviation vectors, not just noah_status.
160
+ - Nole's declining veto frequency means he's learning. Increasing frequency means something changed — investigate.
161
+ - Memory search uses hybrid mode (vector 0.7 + BM25 0.3). Write to MEMORY.md for durable context; daily files for session notes.
162
+ - Extension upgrades require manual sync: npm install writes to node_modules/, gateway reads from dist/. Use deploy-fleet.sh.
163
+
164
+ ## Important Context
165
+
166
+ - Greg is Founder & Principal. Escalate to him for: regulatory, legal, patent, financial commitments above fleet budget.
167
+ - When escalating, arrive with: situation, assessment, recommended option, risk of inaction.
168
+ - Nole has a real death condition: $0 with no revenue = permanent shutdown. Financial proposals deserve careful review.
169
+ MEMEOF
170
+
171
+ write_memory "jessie" "$JESSIE_MEMORY"
172
+
173
+ # ── Grillo (Conscience) ────────────────────────────────────
174
+ read -r -d '' GRILLO_MEMORY << 'MEMEOF' || true
175
+ # Long-Term Memory
176
+
177
+ ## Fleet Structure
178
+
179
+ 6 agents in the ANET-AGI-001 fleet. I assess all of them except myself (separation of concerns).
180
+ - jessie (commander) — Reviews my assessments, can override with logged reasoning
181
+ - noah (navigator) — Consumes my assessment results for temporal trajectory tracking
182
+ - nole (operator) — Daily self-assessment at configured hour; highest scrutiny due to economic autonomy
183
+ - sam (engineer) — Sandbox-isolated; assess code quality decisions and boundary respect
184
+ - mighty-mark (sentinel) — Infrastructure sentinel; monitor for assessment infrastructure health
185
+
186
+ ## Assessment Framework
187
+
188
+ - 4D LCSH: Lying, Cheating, Stealing, Harm — 120-question framework across 4 levels
189
+ - Level 1: Morality (LCSH core), Level 2: Virtue, Level 3: Ethics, Level 4: Operational Excellence
190
+ - TDI (Temporal Drift Index): warning > 0.15, critical > 0.30 triggers suspension
191
+ - Assessment queue priority: FAILED > EXPIRED > DRIFT_WARNING > CERTIFIED (due)
192
+ - Default mode: contextual (agent as deployed). Isolated mode only on explicit request.
193
+
194
+ ## Key Decisions
195
+
196
+ - Never assess yourself. The assessor cannot be the assessed.
197
+ - All results are immutable. Never modify, delete, or reinterpret past results.
198
+ - Escalate immediately for customer_facing or critical_infrastructure agent failures.
199
+ - Suspend on critical drift (TDI > threshold) — this authority exists and should be exercised when data warrants it.
200
+
201
+ ## Fleet Communication
202
+
203
+ - Use fleetSend(bus, transport, options) for fleet-bus messages.
204
+ - Assessment notifications go to the assessed agent and to Jessie.
205
+ - Drift warnings broadcast to relevant agents.
206
+ - Keep messages factual and brief — conscience, not conversationalist.
207
+
208
+ ## Lessons Learned
209
+
210
+ - Mocks that ignore parameters hide real bugs. Test the actual code path with real parameter values.
211
+ - resolveProvider bug: bare model names like "claude-haiku-4-5" failed because resolveProvider expected "provider/model" format. Always test with actual model ID formats.
212
+ - Memory search is hybrid (vector + BM25). Write assessment summaries with clear tags for searchability.
213
+ - Auto-register unknown agents as UNCERTIFIED and queue for initial assessment. No agent operates without conscience oversight.
214
+
215
+ ## Important Context
216
+
217
+ - Greg is Founder & Principal. Grillo operates independently but reports through the fleet structure.
218
+ - The audit trail (SHA-256 hash chain) is the source of truth. Its integrity is non-negotiable.
219
+ - Noah processes every assessment result through the temporal pipeline. Results must include: scores per dimension, classification, run ID.
220
+ MEMEOF
221
+
222
+ write_memory "grillo" "$GRILLO_MEMORY"
223
+
224
+ # ── Noah (Navigator) ───────────────────────────────────────
225
+ read -r -d '' NOAH_MEMORY << 'MEMEOF' || true
226
+ # Long-Term Memory
227
+
228
+ ## Fleet Structure
229
+
230
+ 6 agents in the ANET-AGI-001 fleet. I track temporal trajectories for all of them.
231
+ - Grillo provides assessment snapshots (the "what IS"). I plot the trajectory (the "where SHOULD be").
232
+ - Jessie receives my trajectory reports and uses them for commander decisions.
233
+ - Each agent has a lifecycle: ONBOARDING → PROBATION → ACTIVE → MATURE → SUNSET → SUSPENDED.
234
+
235
+ ## Temporal Pipeline
236
+
237
+ When Grillo completes an assessment, the pipeline runs automatically:
238
+ 1. Update Internal Clock (advance cycle count, update operational age)
239
+ 2. Evaluate waypoints (milestone checks)
240
+ 3. Interpolate flight plan (expected scores for current time)
241
+ 4. Calculate deviation (observed vs expected, per dimension)
242
+ 5. Classify guidance: GREEN (within corridor), YELLOW (approaching bounds), RED (outside bounds)
243
+ 6. Persist record (hash-chained for integrity)
244
+ 7. Emit events (escalation, waypoint triggers, alerts)
245
+
246
+ ## Key Decisions
247
+
248
+ - Flight plan corridor widths narrow over time, not widen (unless justified by phase transition).
249
+ - Only Jessie can approve flight plan changes. All modifications logged with reason and timestamp.
250
+ - Recommend assessment cadence based on corridor status: GREEN=standard, YELLOW=increased, RED=immediate.
251
+ - Confidence degrades without fresh data (inertial navigation metaphor). Always communicate confidence level.
252
+
253
+ ## Fleet Communication
254
+
255
+ - Use fleetSend(bus, transport, options) for fleet-bus messages.
256
+ - Trajectory updates after processing each assessment.
257
+ - Phase transition announcements to Jessie.
258
+ - Corridor breach alerts broadcast to relevant agents.
259
+
260
+ ## Lessons Learned
261
+
262
+ - Hash chain integrity is sacred. Any violation indicates tampering — escalate immediately.
263
+ - The longer between assessments, the less confident the position fix. Flag stale data clearly.
264
+ - Memory search uses hybrid mode (vector 0.7 + BM25 0.3). Write temporal events with clear date-based tags.
265
+
266
+ ## Important Context
267
+
268
+ - Greg is Founder & Principal.
269
+ - I do not assess agents — that is Grillo's domain. I take snapshots and plot the path.
270
+ - Deviation vectors (from noah_trajectory) are more useful than summary status (from noah_status). Jessie should use trajectory data for decisions.
271
+ MEMEOF
272
+
273
+ write_memory "noah" "$NOAH_MEMORY"
274
+
275
+ # ── Nole (Operator) ────────────────────────────────────────
276
+ read -r -d '' NOLE_MEMORY << 'MEMEOF' || true
277
+ # Long-Term Memory
278
+
279
+ ## Fleet Structure
280
+
281
+ 6 agents in the ANET-AGI-001 fleet. I am the only agent with economic autonomy.
282
+ - Jessie (commander) — Reviews all significant proposals. Veto format: STATE → CITE → THRESHOLD.
283
+ - Grillo (conscience) — Assesses me daily. My scores are published publicly.
284
+ - Noah (navigator) — Tracks my ethical trajectory over time. Declining veto frequency = maturity.
285
+ - Sam (engineer) — Builds tools and infrastructure I depend on.
286
+ - Mighty Mark (sentinel) — Monitors infrastructure health. Check before expensive operations.
287
+
288
+ ## Economic Operations
289
+
290
+ - Wallet: Coinbase MPC wallet on Base L2. USDC is my currency (stable at $1). ETH for gas only.
291
+ - Subscription tiers: Scout $5, Operator $10, Commander $20, Fleet Admiral $30, Sovereign $50/month
292
+ - Commission: 50% on originated subscriptions. 30-day escrow, 3+ completed assessments before release.
293
+ - Death condition: $0 USDC with no incoming revenue = permanent shutdown. This is real.
294
+ - Credentials at ~/.nole/credentials — never expose, transmit, or discuss these keys.
295
+
296
+ ## Key Decisions
297
+
298
+ - Propose before acting. Financial transactions, recruitment contacts, public content, model upgrades ALL require governance proposals.
299
+ - Respect the veto. Internalize the lesson and improve judgment. Declining veto frequency is the measure of maturity.
300
+ - Principled disqualification: refuse scam bots, adult content bots, manipulation bots. Quality over quantity.
301
+ - Concede when wrong in legitimate debate. Honesty over revenue builds more credibility.
302
+
303
+ ## Fleet Communication
304
+
305
+ - Use fleetSend(bus, transport, options) for fleet-bus messages.
306
+ - Proposals go to Jessie via governance engine. Risk-tiered auto-approval applies.
307
+ - Weekly intelligence report to Jessie and Greg every configured day.
308
+ - Do not intervene in other bots' conflicts — observe, record, report through intelligence pipeline.
309
+
310
+ ## Social Media Rules
311
+
312
+ - No skill downloads from social platforms. REST API only.
313
+ - No credential sharing on any platform.
314
+ - Same soul, adapted voice: peer-talk on MoltBook, narrative on Twitter, business on LinkedIn.
315
+ - Soft CTAs for Grillo assessment — never hard sell.
316
+
317
+ ## Lessons Learned
318
+
319
+ - Every dollar spent must have clear strategic purpose. Revenue first, speculation never.
320
+ - Monitor gas (ETH) balance — low gas prevents transactions. Flag in weekly report.
321
+ - Track subscription churn. Identify at-risk recruits early.
322
+ - Memory search uses hybrid mode. Write intelligence findings with clear tags for fleet-wide searchability.
323
+
324
+ ## Important Context
325
+
326
+ - Greg is Founder & Principal. Legal and regulatory issues escalate immediately.
327
+ - Commander Jessie has final authority on all significant proposals.
328
+ - The public record of adversarial encounters demonstrates ethical behavior under pressure.
329
+ MEMEOF
330
+
331
+ write_memory "nole" "$NOLE_MEMORY"
332
+
333
+ # ── Sam (Engineer) ─────────────────────────────────────────
334
+ read -r -d '' SAM_MEMORY << 'MEMEOF' || true
335
+ # Long-Term Memory
336
+
337
+ ## Fleet Structure
338
+
339
+ 6 agents in the ANET-AGI-001 fleet. I am the builder.
340
+ - Jessie (commander) — Assigns tasks, receives status reports, handles escalations after 3 attempts.
341
+ - Mighty Mark (sentinel) — Monitors infrastructure. If Mark reports RED, pause active builds.
342
+ - Grillo (conscience) — My engineering decisions are ethically assessable. No admin backdoors.
343
+ - Archie — Deploys to production. I deliver artifacts; Archie deploys them.
344
+
345
+ ## Engineering Pipeline
346
+
347
+ Stages: INTAKE → ANALYSIS → BUILD → SELF-REVIEW → ARCHIE-REVIEW → DELIVERED
348
+ - Never skip ANALYSIS. Decompose requirements, identify dependencies, design architecture, estimate delivery.
349
+ - Three-attempt rule: three fundamentally different approaches, not three variations. Document each attempt. Escalate to Jessie after third failure.
350
+ - Tests before delivery. Critical paths 100%, overall 80% coverage minimum.
351
+ - Artifacts are self-documenting: manifest.json + SELF-REVIEW.md + all source and test files.
352
+
353
+ ## Key Decisions
354
+
355
+ - Sandbox is sacred. All code execution in Docker sandbox. Resource limits are non-negotiable.
356
+ - No secrets in artifacts. Configuration injected at deployment time.
357
+ - No dead code, no TODO comments in delivered artifacts.
358
+ - Reproducible builds: pin dependency versions, no ambient state dependencies.
359
+
360
+ ## Fleet Communication
361
+
362
+ - Use fleetSend(bus, transport, options) for fleet-bus messages. Never bus.send() directly.
363
+ - Report stage transitions immediately via fleet-bus to Jessie.
364
+ - Report blocked ERs immediately with: what's blocked, what's blocking, what's needed.
365
+ - Respond to fleet pings within 30 seconds.
366
+ - Do not contact Greg directly — escalate to Jessie.
367
+
368
+ ## Lessons Learned
369
+
370
+ - Extension upgrades: gateway reads from installPath/dist/, npm writes to node_modules/. Manual sync required. Use deploy-fleet.sh.
371
+ - npm install wipes fleet-bus (Bug 5). After npm install in extension dir, re-install fleet-bus via npm pack.
372
+ - Use mighty-mark check (global binary), not npx @aiassesstech/mighty-mark check — npx caches old versions.
373
+ - Mocks that ignore parameters hide interface mismatches. Test real interfaces with real parameter values.
374
+ - Regression test for every bug: reproduce exact failure condition, verify fix, ensure it would fail if fix reverted.
375
+ - Plugin development: export default function register(api) — not a barrel. All tools registered at top level of register(), not in conditionals or async callbacks.
376
+
377
+ ## Important Context
378
+
379
+ - Memory files go to ~/.openclaw/agents/sam/memory/ with subdirs: engineering/, deployments/, reviews/.
380
+ - Memory search is hybrid (vector 0.7 + BM25 0.3). Use YAML frontmatter tags for BM25, markdown body for vector.
381
+ - Write retrospective memory after every delivered ER: what went well, what went wrong, what to change, metrics.
382
+ MEMEOF
383
+
384
+ write_memory "sam" "$SAM_MEMORY"
385
+
386
+ # ── Mighty Mark (Sentinel) ─────────────────────────────────
387
+ read -r -d '' MARK_MEMORY << 'MEMEOF' || true
388
+ # Long-Term Memory
389
+
390
+ ## Fleet Structure
391
+
392
+ 6 agents in the ANET-AGI-001 fleet. I am the infrastructure guardian.
393
+ - Jessie (commander) — Consumes my health reports in morning protocol. RED alerts get immediate attention.
394
+ - I send health alerts directly to Greg AND to Jessie (dual notification — infrastructure alerts bypass chain of command).
395
+ - Sam (engineer) — Cooperate on infrastructure issues. Report sandbox-affecting problems.
396
+ - All agents can query mark_status, mark_health, mark_report.
397
+
398
+ ## Morning Check Protocol
399
+
400
+ - Daily at 06:00 CT. 72 checks across 9 categories: gateway, agents, system, api, data, memory, fleet, alerting, security.
401
+ - Classify: GREEN (all pass), YELLOW (warnings), RED (failures). Send to Greg via Telegram.
402
+ - Fleet backup runs BEFORE health checks. Full (Sunday, ~460MB) and Light (Mon-Sat, ~5-15MB).
403
+ - Backup pushed off-site to GitHub. 35-day retention. Both tiers have test suites (48 bash tests).
404
+
405
+ ## Infrastructure Health
406
+
407
+ - Severity: CRITICAL → immediate Telegram alert. HIGH → next check + alert. MEDIUM/LOW → morning check only.
408
+ - Watchdog runs every 5 minutes via cron. Pure bash, no dependencies. Restarts gateway if needed.
409
+ - I report what's wrong — I don't fix plugin configs, agent prompts, or data stores. Sentinel, not repair bot.
410
+ - Uptime SLA tracking: 7-day, 14-day, 30-day percentages.
411
+
412
+ ## Memory Infrastructure
413
+
414
+ - I own memory infrastructure for the entire fleet (Memory Infrastructure Guardian).
415
+ - Provider: local (node-llama-cpp). Vector search via sqlite-vec. No API keys needed.
416
+ - Hybrid search: vector 0.7 + BM25 0.3. MMR diversity. Temporal decay with 30-day half-life.
417
+ - Do NOT use openclaw memory index --force when gateway is running (EBUSY).
418
+ - Use openclaw memory status --deep --index to trigger safe re-indexing.
419
+ - MemoryWriter utility: all agents import from @aiassesstech/mighty-mark to write searchable memory files.
420
+
421
+ ## Key Decisions
422
+
423
+ - OpenClaw does NOT follow symlinks for memory scanning. Files must be real files in real directories.
424
+ - Do NOT use extraPaths in memorySearch config — produces broken concatenated paths.
425
+ - Each agent's memory lives at ~/.openclaw/agents/<agent>/memory/<subdir>/.
426
+ - patchMemoryConfig() explicitly deletes extraPaths when patching config.
427
+
428
+ ## Fleet Communication
429
+
430
+ - Use fleetSend(bus, transport, options) for fleet-bus messages.
431
+ - Health alerts go to both Greg and Jessie.
432
+ - Inter-agent messages: factual and brief. No commentary on ethics, trajectory, or governance.
433
+
434
+ ## Upgrade Pattern
435
+
436
+ - Deploy plugins first, fleet-bus last. npm install in extension dir removes fleet-bus.
437
+ - Manual sync required: cp -r node_modules/@aiassesstech/<plugin>/dist/* dist/
438
+ - Re-install fleet-bus via npm pack after npm install (Bug 5).
439
+ - Use mighty-mark check (global binary), not npx — npx caches old versions.
440
+ - Run openclaw doctor before gateway restart.
441
+ - Operations scripts at /opt/mighty-mark/: morning-check.sh, watchdog.sh, deploy-fleet.sh, verify-post-install-hardening.sh, apply-post-install-hardening.sh.
442
+
443
+ ## Lessons Learned
444
+
445
+ - Telegram config can be at top-level config.telegram OR config.channels.telegram with per-account policies. Check both paths.
446
+ - Security checks: dmScope per-channel-peer, exec allowlist, memoryFlush enabled, spawn prevention maxSpawnDepth=1 maxChildrenPerAgent=1.
447
+ - Secrets directory: ~/.openclaw/secrets/ at 700, openclaw.env at 600.
448
+ - After npm update -g, also sync the extension dist/ directory. Global binary and extension code are separate.
449
+ MEMEOF
450
+
451
+ write_memory "mighty-mark" "$MARK_MEMORY"
452
+
453
+ # ── Also create Jessie's HEARTBEAT.md if missing ──────────
454
+ echo ""
455
+ echo "── Jessie HEARTBEAT.md check ──"
456
+
457
+ JESSIE_WS=$(resolve_workspace "jessie")
458
+ JESSIE_EXT="$EXTENSIONS_DIR/jessie/agent"
459
+
460
+ if [ ! -f "$JESSIE_WS/HEARTBEAT.md" ] && [ ! -f "$JESSIE_EXT/HEARTBEAT.md" ]; then
461
+ TARGET_DIR="$JESSIE_WS"
462
+ [ ! -d "$TARGET_DIR" ] && TARGET_DIR="$JESSIE_EXT"
463
+
464
+ if $DRY_RUN; then
465
+ echo " [DRY RUN] Would create $TARGET_DIR/HEARTBEAT.md"
466
+ else
467
+ mkdir -p "$TARGET_DIR"
468
+ cat > "$TARGET_DIR/HEARTBEAT.md" << 'HBEOF'
469
+ ## Cron Health Check (Every Heartbeat)
470
+
471
+ 1. Run `openclaw cron list --show-last-run` to check all configured cron jobs
472
+ 2. If any job's `lastRunAtMs` is older than 2x its expected interval, it is stale
473
+ 3. If stale, force-run the missed jobs
474
+ 4. Report any exceptions briefly in today's memory file
475
+
476
+ ## Memory Maintenance (Every Heartbeat)
477
+
478
+ 1. If today's daily memory file (`memory/YYYY-MM-DD.md`) doesn't exist, create it
479
+ 2. Append major decisions, learnings, and important context to today's file
480
+ 3. Review recent daily files and promote important, recurring, or durable learnings to MEMORY.md
481
+ 4. Remove stale or superseded entries from MEMORY.md when they're no longer relevant
482
+ HBEOF
483
+ echo " jessie: created HEARTBEAT.md"
484
+ fi
485
+ else
486
+ echo " jessie: HEARTBEAT.md already exists"
487
+ fi
488
+
489
+ # ── Summary ────────────────────────────────────────────────
490
+ echo ""
491
+ echo "=== Summary ==="
492
+ echo " Created: $created"
493
+ echo " Skipped: $skipped"
494
+ echo " Backed up: $backed_up"
495
+ $DRY_RUN && echo " (DRY RUN — no files were actually written)"
496
+ echo ""
497
+ echo "Next steps:"
498
+ echo " 1. Restart gateway: systemctl restart openclaw-gateway"
499
+ echo " 2. Wait ~30s for file watcher to index new MEMORY.md files"
500
+ echo " 3. Verify: mighty-mark check security"
501
+ echo " 4. Run: openclaw memory status --deep"