Smoke test required

...

← All documentation

Documentation

Changelog

**Status:** active · last entry 2026-05-03

source: CHANGELOG.md

All notable changes to Endenza are documented here. The format follows Keep a Changelog and the project adheres to Semantic Versioning.


2026-05-03 — Endenza rebrand + canvas-comes-alive session

A marathon warp session spanning rebrand, living-things, performance, asset bundling, terminal polish, docs overhaul, and 14 test-pollution fixes. The platform moved from craft 6.5/fit 6.0 to craft 7.7/fit 6.9.

Added

  • Living-things runtime — canvas schema v6 adds an optional behavior field to components. The LivingThingsSimulator drives idle, wander, and patrol behaviors with deterministic seeding, reduced-motion respect, and IntersectionObserver pause when off-screen. Wire-in to studio renderRoom (e0316a4).
  • Real Mana Seed sprites — 35 Mana Seed Character Base sprites bundled into bin/dashgen/static/packs/ (body, hair, armor, tools, ambient) replacing placeholder procedural art (c884602).
  • Performance budgets — three new budgets added to bin/perf_audit.py and wired into the test suite: canvas-walk fps, character-creator first-paint, terminal hydrate latency (1016840, 15b929e).
  • Terminal layout customization — resize, reorder, and collapse for terminal tree bands; compact footer toolbar; compose pinned to bottom; skeleton bootstrap (3e17487, 28bce54, 616e034).
  • Per-request CSP nonceunsafe-inline lifted from script-src; nonce injected per request; test coverage added (a803830).
  • Warp protocol toolchainbin/warp_preflight.sh, bin/warp_salvage.sh, bin/warp_compliance_check.sh, bin/warp_quality_probe.sh, bin/warp_post_merge_verify.sh (0f7e41a). Incremental-commit policy added to MAESTRO Directive 22 (af5b8ba).

Changed

  • Endenza brand throughout (RN-α) — ENSEMBLE_*ENDENZA_* for 20+ localStorage keys (with migration shim), plugins/ensemble/plugins/endenza/, user-visible strings swept across dashboard, terminal, cookie banner, settings, and warp widget (39b3168, 6a987d7, f86f062, 831b29d).
  • Single-logo across themes — brand mark no longer shifts between dark/light modes. Mac app icons regenerated for post-rebrand wordmark.
  • 39 stale docs archived — Phase 1 archival: POLISH_2026-05-0α/BETA, CODE_RATING, A_TIER_PLAN, BIG_HAUL_PLAN, FREEZE_TAG_PLAN, R14_PLAN, SIMPLIFICATION_PLAN, NAVIGATION_IA_PLAN, TERMINAL_PAGE_PLAN, and 28 others moved to docs/archive/ (6db14dc).
  • Docs restructured into purpose folders — Phase 2: docs/getting-started/, docs/architecture/, docs/operations/, docs/design/, docs/decisions/ created; 30+ docs moved via git mv (6bcd7c5).
  • Handler module splitcontrol-panel-server.py decomposed into bin/handlers/ sub-modules (auth, studio, sprite, pack, settings, pair, SSE). Warp α+β.
  • BaseJsonStore extracted — StateStore, ChatStore, UserProfileStore all inherit atomic-write + flock base. Concurrent-write stress tests added. Warp β.

Fixed

  • Auth-key driftDASHBOARD_TOKEN unified; /byok/link confirmed working after auth cascade repair.
  • Persistence — atomic writes with flock hardened; sprite/canvas/chat stores all on BaseJsonStore; dual-shape save for character creator landed.
  • Walk-cycle preview — 64× 64 preview + walk-cycle in character creator (CC slot B); body layer wired.
  • Terminal duplicate header — skip duplicate ENSEMBLE STATUS bar inside terminal tree (e60977c).
  • Terminal viewport — body set to flex-column; main fills viewport; no orphan bars (778343e).
  • 14 test-pollution issuesassertGreaterEqual for schema version assertions; stale ENSEMBLE_* keys swept; three pre-existing failures (test-pollution pattern) remain and are tracked in craft-debt ledger.
  • Perf budget errors — budget tests now gate cleanly; CI-local ruff added to warp_post_merge_verify.sh.
  • Terminal warm pair-CTA — warm Pair-CTA on any /state failure + offline pill demoted (616e034).

Documented


Unreleased

v2.0 contract sweep — 2026-04-26

Eight new operating directives + three-layer autopilot mutex + Tier 1/2/3 hardening + SwiftBar menu bar indicator. No public API breaks; all additions are opt-in or backward-compatible defaults.

Added — eight directives: - Smart handoff protocol — self-monitor context (80% warn → 90% auto-stage → 95% hard-stop with paste-ready resume prompt). Memory: smart_handoff_protocol.md. - Turbo mode — liberal turbo signal phrase; AFK batch coding; auto-engages rapid-fire if off; safety gates still fire. Memory: turbo_mode.md + signal_phrase_detection.md. - Outside-the-box thinking (priority 1) — operating posture for smarter problem-solving. Memory: outside_the_box_thinking.md. - Feedback pipeline — Sunday 6am aggregator + plan-then-approve gate for live products. Memory: feedback_pipeline.md. - Six-state lifecycle — Building → Launch Prep → Warmer ⇄ R&D ⇄ Updates → Hibernating. Replaces evolution_modes. Memory: project_states.md. - State enable/disable — verbal set <slug> to <state> + PWA dashboard pill. - Three-layer autopilot mutex — workshop lock + per-project spawn lock + opt-in resource floor + user-controlled max_concurrent_autopilots cap (default 2). Memory: hardware_constraints.md (renamed from hardware_m1.md). - Rapid-fire toggle — per-chat rapid_fire_enabled; OFF = prose mode. Every AskUserQuestion reserves slot 4 for Disable Rapid Fire Mode escape hatch. Memory: rapid_fire_toggle.md.

Added — Tier 1 hardening: - caffeinate -i wrap on claude -p (no-op on non-macOS). State: caffeinate_during_autopilot (default true). - Battery-state pre-flight via pmset. State: require_ac_power (default false, opt-in). - Disk-space pre-flight (df -g /). State: min_free_disk_gb (default 5). - Log rotation scheduled task (Sunday 5am, 30/60/90-day retention).

Added — Tier 2 hardening: - Network pre-flight (curl ping api.anthropic.com). State: require_network_check (default true). - Claude CLI version pin. State: min_claude_cli_version (default empty). - Memory link consistency checker in self_test.sh.

Added — Tier 3 hardening: - plugins/endenza/bin/resource_watchdog.sh — sidecar samples RAM/CPU during autopilot, kills tree on sustained pressure. State: resource_watchdog_enabled (default false, opt-in). - TROUBLESHOOTING.md §16-23 covering all v2.0 failure modes including state.json corruption recovery.

Added — three-layer mutex implementation: - plugins/endenza/bin/orchestrator_spawn_lock.sh (acquire/release/status/sweep/wrap, 285 lines). - plugins/endenza/bin/test_spawn_lock_race.sh (9-test race suite, all passing). - Companion bin-win/orchestrator_spawn_lock.ps1 Windows port. - state.json schema additions for the mutex layer.

Added — SwiftBar menu bar indicator: - plugins/endenza/integrations/swiftbar/ensemble-autopilot.10s.sh — shows ☕ + active count when firing. - plugins/endenza/integrations/swiftbar/setup.sh — one-shot installer (brew + folder + symlink + relaunch).

Added — turbo session template: - plugins/endenza/templates/turbo_session.txt — paste-ready 60-min autonomous prompt.

Changed — operating contracts: - MAESTRO.md — 18 directives total. Directives 1, 2, 6 rewritten for three-layer mutex + state + lint. Directives 16, 17, 18 added (turbo / outside-box / feedback). Context-awareness subsection. - AGENT.md — 20 sections total. §3 lint-clean rule. §4.5 context awareness. §5 three-layer mutex. §17 six-state lifecycle. §18-20 turbo/outside-box/feedback.

Changed — schema migration: - chats/<slug>.json: evolution_modestate (auto-migrated for 7 chats).

Changed — dashboard: - Six-state pills, color-coded. Slugified CSS class names.

Changed — companion repos: - Lint configs synced to ensemble-config, ensemble-dashboard, website-agent-starter, ensemble-phone, ensemble-desktop.

De-personalization: - Bin scripts use ${HOME}/.claude/orchestrator. Bootstraps use ~/. Mobile docs scrubbed of personal email. Memory file rename hardware_m1.mdhardware_constraints.md.

Onepagers refreshed: top-level README.md, plugin README.md, public/index.html, public/dossier.html, CHEATSHEET.md.


[Pre-v2.0 Unreleased]

Polish + marketplace-readiness work since v1.0.0. No public API breaks.

Added

  • PWA wrapper for the public dashboard — manifest.json, service worker, EB-Garamond–themed icon. Installable to phone home screen with offline read-mode caching.
  • bin/setup-dashboard.sh — first-run productization script. Idempotently creates the user’s own <username>/ensemble-dashboard repo, enables Pages, generates DASHBOARD_TOKEN, registers Dashboard Update routine.
  • bin/control-panel-server.py + launchd plist — Mac-local Python http.server (port 8080, Tailscale-reachable) for interactive control: toggle active / mode / autopilot, fire autopilot, kill switch, embedded claude.ai/code chat iframe.
  • bin/fire-all-eligible.sh — serial-dispatch wrapper that fires <minutes>-min autopilot at every active+eligible project sequentially, respecting the test-bench lock.
  • bin/dashboard-generate.sh — emits styled HTML roster + per-project pages with timelines, plus shared style.css and control.js.
  • Per-project pages with vertical milestone timelines (45 milestones across 7 projects, Maestro-curated).
  • Spectra Nova onboarded as autopilot-eligible — local Mac clone, .NET 8 toolchain verified, 204 tests passing on first run.
  • /active <slug>, /inactive <slug>, /projects slash commands at ~/.claude/commands/.
  • /auto N alias for /autopilot N.
  • /rapid slash command — forces the next response into AskUserQuestion shape.
  • Skill catalog at plugins/endenza/skill_catalog.yaml + onboarding §5.5 — auto-recommend useful skills during Agent setup.

Changed

  • Routine renames to Title Case: Morning Briefing, Evening Planning, Overnight Heavy, Workday Pulse, Dashboard Update, Rotation. AUTOMATION FIRE banners updated.
  • Dashboard timestamps now relative (“3 mins ago” via inline JS) instead of absolute UTC.
  • Dashboard cards show evolution-mode pills (Frozen / Reactive / Maintenance / Evolving).
  • Rapid-fire elevated to STAPLE protocol-level priority alongside autopilot lock and kill-switch cascade.

Fixed

  • Critical autopilot hang (5d489e0) — claude -p --add-dir <dir> "$PROMPT" was eating the prompt as a directory because --add-dir is variadic. Added -- separator before the prompt. Every prior autopilot fire was silently doing nothing.
  • CI Linux switch (f289098) — moved jobs from macos-latest to ubuntu-latest (10× cheaper) — but auto-trigger disabled (d4132f6) until Kevin resolves GitHub Actions billing.
  • Routine prelude path (4 ~/.claude/scheduled-tasks/*/SKILL.md) — fixed broken bin/routine_prelude.sh reference (script lives at plugins/endenza/bin/).
  • Email scrub (cc42158) — kevinmadson3@gmail.comkevinmadson@protonmail.com in 4 doc occurrences across both repos.

1.0.0 — 2026-04-25

The Ensemble’s first durable public-install-ready release. Phase 0 of docs/GRAND_PLAN.md substantively closed.

Mission gaps closed (per docs/decisions/MISSION_ROADMAP.md)

  • Gap 1 — Lock-type semantics (17b6655) holder.json and state.json.lock_intent gain an intent field: "test" | "code" | "any". Test-intent locks contend (one chat owns the test bench at a time). Code-intent sessions skip the lock entirely (parallel coding across many chats). Any-intent (legacy) preserves pre-Gap-1 behavior. The pitch claim “Code in parallel. Test in single file.” is now architecturally true rather than aspirational.
  • Gap 2 — Rotation scheduler (13bd4ac) New bin/rotation_pick.sh + Rotation scheduled task firing 23:30 / 01:30 / 04:30 local. Round-robin distributes overnight autopilot across all active+eligible projects, sorted by least-recently-fired (last_autopilot_fire_at).
  • Gap 3 — Plan→Code→Test→Fix→Wrap loop template (ab39236) New plugins/endenza/templates/autopilot_loop.txt defines the canonical 5-phase autopilot session. autopilot_session.sh wires the template into both default + project-targeted prompts.
  • Gap 4 — Per-project window prefs (b773b26) chats/<slug>.json carries optional preferred_windows + blocked_windows. rotation_pick.sh honors them.

Added

  • Plugin-refactor (38206d6) — 20 commits merged into main. Plugin-shaped layout for marketplace distribution.
  • Phone-triggered autopilot pipeline — Termius + Tailscale → SSH → launchd agent in user’s Aqua session → Keychain access → autopilot_session.sh. Project-targeted via 4th positional arg.
  • /autopilot N slash command — cwd-aware project detection via bin/detect-project.sh.
  • Atomic kill-switch sweepbin/mobile_dispatch.sh kill now sweeps the full process tree (parent bash + GNU timeout wrapper + claude -p grandchild) plus SIGKILL stragglers.
  • bin/notify.sh — multi-channel notifier (macOS osascript + Pushover via .env.local).
  • bin/maestro-context.sh — auto-aggregates lock state, chat roster, autopilot runs, 24-hour commits at first turn.
  • bin/morning-digest.sh — EB-Garamond–styled HTML cross-project briefing.
  • Friend-facing website-agent v2 (917ff66, f067b89) — lifecycle-aware bootstrap with 10 phase gates G0→G9, resume protocol, full GitHub-security weave (2FA + SSH + .gitignore + Dependabot + secret scanning + push protection + CodeQL + HTTPS enforce).
  • Cross-platform parity layer (KiwiMaddog2020/ensemble-config) — bin-mac/bin-win/ matrix, PARITY.md tracks Windows ports.
  • Active/inactive controlchats/<slug>.json::active field + verbal command pattern + slash commands.
  • Evolution mode — 4-mode taxonomy (frozen / reactive / maintenance / active) per project, surfaced at G9.
  • Voice-friendly numbering on every AskUserQuestion label (1. 2. 3. 4.).
  • Flow continuity rule — never offer “pause” / “stop” / “sleep on it” as options; user dictates cadence.

Changed

  • Push rails lifted (8f01f01) — git push to origin on current branch is permitted without per-turn approval. Destructive ops, store submissions, deploys beyond GitHub Pages, public-flips, and billing remain gated.
  • Batched-approval discipline strengthened — bundle units as wide as defensible at the decision point; in-flight execution skips per-step asks; decision points still always fire AskUserQuestion.

Documentation

  • docs/GRAND_PLAN.md v0.3 — three-tier taxonomy (Maestro / Virtuoso / Agent), product ladder (Phase 0 → 1 → 2 → 3).
  • docs/decisions/MISSION_ROADMAP.md — 5-gap audit + sequencing.
  • docs/CONTROL_PANEL_PLAN.md — interactive Ensemble GUI architecture.
  • docs/architecture/AUTOPILOT_DESIGN.md — full pipeline design.
  • docs/design/UX_STREAMLINING.md — 12 prioritized opportunities for “input-disappearing” UX.
  • docs/architecture/OPUS_OPTIMIZATION.md — seven rules for operating Claude Opus 4.7 inside the Ensemble.

Phase 0 exit criteria

  • ✅ Plugin-refactor merged
  • /autopilot N slash command built
  • ✅ Mobile dispatch pilot validated
  • ✅ v1.0.0 tagged
  • ⏳ First external user onboarded (friend with website-agent v2 — package staged, awaiting hand-off)
  • ⏳ Repo public-flip (deferred until Claude skill marketplace publication)

Pre-1.0.0 history

Earlier development (plugin-refactor branch + initial Ensemble bootstrapping) is captured in the git log. Highlights:

  • 2026-04-21 — System named The Ensemble. Atomic mkdir lock primitive proven on APFS. PreToolUse hook with hard-enforcement matcher. Distributed kill-switch with idempotent six-phase cascade.
  • 2026-04-22 — Three-tier taxonomy locked (Maestro / Virtuoso / Agent). Plugin layout drafted.
  • 2026-04-23 — Plugin-refactor merged → main. v0.x development closed.