Weekly synthesis: March 16-22, 2026 - Clavitor rebrand, agent expansion, model optimizations
This commit is contained in:
parent
c30087ce99
commit
75f7555fb0
23
AGENTS.md
23
AGENTS.md
|
|
@ -270,10 +270,25 @@ Enter plan mode for ANY non-trivial task:
|
|||
- **Don't build new services for simple UI requests** — When Johan asked for a "delete button" in docsys, a previous session built an entirely new Go service (`docproc`, port 9900) with watcher, processor, and API. The right answer was one HTML element + one API route in the existing app. Scope creep kills trust.
|
||||
- **Applies to:** Any "add X to Y" request. Modify Y, don't create Z.
|
||||
- **Test:** "Does something already exist that I can add this to?"
|
||||
- **New services on forge = Go only** — Johan's stated preference: "I have a very strong preference for GoLang. Python should only be temporary tools." Any new service or long-running process must be Go. One-shot scripts in Python are OK. No Python servers, ever.
|
||||
- System Python (fail2ban, unattended-upgrades): untouchable, don't touch
|
||||
- Legacy Python code (inou/health-poller): tolerated
|
||||
- **Test:** "Is this a service or server?" If yes → Go. Period.
|
||||
- **🚫 Python is Forbidden. Full Stop.**
|
||||
|
||||
No Python. Not for "just a quick script." Not for "temporary" servers. Not for one-liners. Not for previewing HTML. Not ever.
|
||||
|
||||
**The only exceptions (do NOT extend these):**
|
||||
- System Python managed by the OS (fail2ban, unattended-upgrades) — untouchable
|
||||
- Pre-existing legacy Python code (inou/health-poller) — tolerated, never extend it
|
||||
|
||||
**Everything new = Go.** Services, tools, scripts, CLIs. No exceptions.
|
||||
|
||||
**When you think you need to write code for a task:**
|
||||
STOP. Don't write it. Come to Johan with:
|
||||
1. What you're trying to do
|
||||
2. Why no existing tool covers it
|
||||
3. A proposal for a reusable Go tool that solves it properly
|
||||
|
||||
One-shot scripts are a symptom of missing infrastructure. Build the infrastructure once, use it forever.
|
||||
|
||||
**The test:** "Is this Python?" If yes — don't create it. No embarrassment threshold. The answer is always no.
|
||||
|
||||
**Plan includes verification:** Use plan mode for verification steps too, not just building. "How will I prove this works?" is part of the plan.
|
||||
|
||||
|
|
|
|||
67
MEMORY.md
67
MEMORY.md
|
|
@ -1,6 +1,6 @@
|
|||
# MEMORY.md - Long-Term Memory
|
||||
|
||||
*Last updated: 2026-03-08 (weekly synthesis — Sun 00:02 ET)*
|
||||
*Last updated: 2026-03-22 (weekly synthesis — Sun 09:00 ET)*
|
||||
|
||||
---
|
||||
## ⏰ JOHAN'S SCHEDULE (US EASTERN) — MEMORIZE THIS!
|
||||
|
|
@ -1423,6 +1423,71 @@ Signal:noise rule: only speak when you have something to say (Johan's directive)
|
|||
|
||||
---
|
||||
|
||||
## Weekly Synthesis — March 16-22, 2026
|
||||
|
||||
### 🚀 Clavitor Rebrand: vault1984 → Clavitor (Mar 21-22)
|
||||
Major rebrand completed in overnight session:
|
||||
- **New name:** Clavitor (FIPS 140-3 vault, post-quantum with CRYSTALS-Kyber/ML-KEM)
|
||||
- **Positioning:** Credential issuance infrastructure for agents — "the vault agents can query but can't steal from"
|
||||
- **Architecture:** OSS + commercial split (GitHub org + private Zurich repo)
|
||||
- **Domains:** clavitor.ai + clavitor.com (Cloudflare DNS → Zurich), clavitor.jongsma.me (Caddy → forge)
|
||||
- **Binary:** Running as `clavitor` on port 1984, compiles clean with `GOFIPS140=latest`
|
||||
- **Design system:** `/home/johan/dev/clavitor/design-system/` — corporate layer separate from OSS
|
||||
- **Pricing preserved:** $12/year personal, AgentPass/Pro/Business/Enterprise tiers
|
||||
|
||||
### 🤖 Agent Network Expansion
|
||||
**New agents this week:**
|
||||
- **Sarah** (App ID: 1485193293271666768) — Clavitor design agent, tasked with wordmark + token system first
|
||||
- **Luca** (App ID: 1484388393948287108) — Employment lawyer for Tanya at N-able, live Mar 20
|
||||
|
||||
**Still pending tokens:**
|
||||
- **Hugo** (Mar 17) — DJ Rosie PR agent, still waiting for Discord bot token from Johan
|
||||
|
||||
**Model optimizations (Mar 20):**
|
||||
- **iaso:** Switched to `openrouter/stepfun/step-3.5-flash` ($0.10/0.30 per M, AIME 97.3%, 200K ctx)
|
||||
- **george:** Switched to `openrouter/minimax/minimax-m2.7`
|
||||
- All agents now on Fireworks Kimi K2.5 Turbo as primary default (expires Mar 28, then $20/week)
|
||||
|
||||
### 🛠️ Infrastructure Hardening
|
||||
**Signal fully retired (Mar 16):**
|
||||
- Complete removal — binary, service, data, config, script references
|
||||
- notify.sh created as centralized dispatcher (replaces scattered ntfy curl calls)
|
||||
|
||||
**Email pipeline fixed (Mar 17):**
|
||||
- Removed all Kaseya-specific routing rules (Johan no longer there)
|
||||
- Fixed OC webhook — added `agentId: "mail"` so `/hooks/messages` fires correctly
|
||||
- 67-message backlog triaged by subagent
|
||||
|
||||
**OpenRouter integration (Mar 18-20):**
|
||||
- Added as full provider with models array (not just env var)
|
||||
- MiniMax M2.7 available for subagent dispatch
|
||||
|
||||
**George session bloat resolved (Mar 17):**
|
||||
- Session grew to 4.3MB/701 messages → cleared from sessions.json, fresh start
|
||||
|
||||
### ⚡ Working Style: Hard Rules Clarified
|
||||
**From explicit Johan correction (Mar 22):**
|
||||
- **No symlinks. No rsync pipelines. No "clever" file plumbing.** Copy explicitly. Simple, obvious, traceable.
|
||||
- **No Python.** Not for scripts, servers, or previewing. Full stop. Propose reusable Go tools instead.
|
||||
|
||||
### 🌐 DNSSEC for .nl Domains
|
||||
- Enabled on Cloudflare for zavtra.nl, busel.nl, muskepo.nl
|
||||
- OpenProvider API silently failed to save DS records → manual entry required
|
||||
- All three now active at SIDN registry
|
||||
|
||||
### 📊 Git Backlog Pattern
|
||||
- dealspace: 23 unpushed commits (Mar 20)
|
||||
- inou: 14 uncommitted files
|
||||
- Multiple repos carrying uncommitted work — need proactive push
|
||||
|
||||
### 🔄 Blockers Carrying Forward
|
||||
- Hugo bot token (since Mar 17 — 5+ days)
|
||||
- Cloudflare Browser Rendering token invalid (needs new token from dash.cloudflare.com)
|
||||
- GitHub org `clavitor` creation (needs token with admin:org scope)
|
||||
- Kernel 6.8.0-106 pending reboot (carrying since Mar 13)
|
||||
|
||||
---
|
||||
|
||||
## Hardware & Model Decisions (2026-03)
|
||||
|
||||
### Mac Studio M5 — Wait for WWDC June 2026
|
||||
|
|
|
|||
|
|
@ -69,3 +69,55 @@ clavitor/
|
|||
- Expires: March 28 trial (then $20/week opt-in)
|
||||
- All agents switched to this as default model
|
||||
- OpenCode configured at `~/.config/opencode/opencode.json`
|
||||
|
||||
---
|
||||
|
||||
## Clavitor Rebrand — Completion Status (07:23 AM)
|
||||
|
||||
### Fully done
|
||||
- Codebase migrated to `/home/johan/dev/clavitor/`, compiles clean with `GOFIPS140=latest`
|
||||
- `cmd/vault1984/` renamed to `cmd/clavitor/`, all user-facing strings renamed
|
||||
- Running as `clavitor` binary (pid 1390210) on port 1984
|
||||
- Git repo: `git@zurich.inou.com:clavitor.git`, master branch, pushed
|
||||
- `clavitor.jongsma.me` live — Caddy on 192.168.0.2 → forge:1984, DNS in Cloudflare jongsma.me zone
|
||||
- `clavitor.ai` and `clavitor.com` — A records → 82.22.36.202 (Zurich), Caddy serves placeholder page with TLS
|
||||
- **Sarah** agent deployed: App ID `1485193293271666768`, workspace `/home/johan/sarah/`
|
||||
- Added to openclaw.json; gateway restarted
|
||||
- Briefed: inou = extend existing design; Clavitor = hard reset, wordmark + tokens FIRST
|
||||
- Design system dir: `/home/johan/dev/clavitor/design-system/` (corporate layer)
|
||||
- Styleguide at: `https://clavitor.jongsma.me/app/design-system/styleguide.html`
|
||||
|
||||
### Sarah's first deliverable (pending)
|
||||
- Clavitor wordmark concept + token set (colors, type scale, spacing, radius)
|
||||
- No screens until tokens locked
|
||||
- Johan still needs to invite Sarah to Discord: `https://discord.com/oauth2/authorize?client_id=1485193293271666768&scope=bot&permissions=2147568704`
|
||||
|
||||
### Blocked (Johan action needed)
|
||||
- **CF Browser Rendering token**: invalid (401). New token → https://dash.cloudflare.com/profile/api-tokens → Account → Browser Rendering → Edit → update `CF_API_TOKEN` in `/home/johan/.config/cloudflare.env`
|
||||
- **GitHub org `clavitor`**: current token lacks `admin:org` scope → https://github.com/settings/tokens/new
|
||||
|
||||
---
|
||||
|
||||
## No-Python Rule Added to AGENTS.md (07:23 AM)
|
||||
|
||||
Rewrote the "Go only" paragraph with a harder rule:
|
||||
- No Python. Not for scripts, servers, or previewing. Full stop.
|
||||
- Exceptions: system Python (fail2ban etc.), inou/health-poller legacy
|
||||
- When code is needed: propose reusable Go tool to Johan first
|
||||
- inou Python: isolated to `health-poller/` (Renpho integration). Rest of inou = Go + Flutter.
|
||||
|
||||
---
|
||||
|
||||
## Agent Models (all on Kimi K2.5 Turbo as of today)
|
||||
|
||||
All agents in openclaw.json: primary = `fireworks/accounts/fireworks/routers/kimi-k2p5-turbo`, fallback = `anthropic/claude-sonnet-4-6`
|
||||
Fireworks provider: `baseUrl: https://api.fireworks.ai/inference/v1`, `api: openai-completions`
|
||||
OpenCode also configured at `~/.config/opencode/opencode.json`
|
||||
|
||||
---
|
||||
|
||||
## CF Browser Rendering Skill
|
||||
|
||||
Built at `/home/johan/clawd/skills/cf-browser/`
|
||||
- `cf-fetch.sh markdown <url>` / `screenshot` / `scrape`
|
||||
- Blocked: CF_API_TOKEN invalid — Johan needs to create new token (see above)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"last_updated": "2026-03-22T10:00:01.920282Z",
|
||||
"last_updated": "2026-03-22T13:00:01.659422Z",
|
||||
"source": "api",
|
||||
"session_percent": 10,
|
||||
"session_resets": "2026-03-22T10:59:59.864556+00:00",
|
||||
"weekly_percent": 35,
|
||||
"weekly_resets": "2026-03-27T02:59:59.864574+00:00",
|
||||
"sonnet_percent": 48
|
||||
"session_percent": 4,
|
||||
"session_resets": "2026-03-22T16:00:00.582582+00:00",
|
||||
"weekly_percent": 36,
|
||||
"weekly_resets": "2026-03-27T03:00:00.582602+00:00",
|
||||
"sonnet_percent": 49
|
||||
}
|
||||
|
|
@ -8,8 +8,8 @@
|
|||
"claude_usage": 1772624091
|
||||
},
|
||||
"lastBriefing": 1774146987,
|
||||
"lastWeeklyDocker": "2026-03-15T13:10:00+00:00",
|
||||
"lastWeeklyHAOS": "2026-03-15T13:10:00+00:00",
|
||||
"lastWeeklyDocker": "2026-03-22T11:30:01.805Z",
|
||||
"lastWeeklyHAOS": "2026-03-22T11:30:01.805Z",
|
||||
"lastWeeklyMemorySynthesis": "2026-03-15T13:00:00.000Z",
|
||||
"lastDocInbox": "2026-02-25T22:01:42.532628Z",
|
||||
"lastTechScan": 1773936643,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"date": "2026-03-22",
|
||||
"timestamp": "2026-03-22T09:00:00-04:00",
|
||||
"openclaw": {
|
||||
"before": "OpenClaw 2026.3.13 (61d171a)",
|
||||
"latest": "2026.3.13",
|
||||
"updated": false
|
||||
},
|
||||
"claude_code": {
|
||||
"before": "2.1.81",
|
||||
"latest": "2.1.81",
|
||||
"updated": false
|
||||
},
|
||||
"os": {
|
||||
"available": "0\n0",
|
||||
"updated": false,
|
||||
"packages": []
|
||||
},
|
||||
"caddy_pi": {},
|
||||
"gateway_restarted": false
|
||||
}
|
||||
Loading…
Reference in New Issue