Renames the product to Meridian across 1826 files: 24 crates (codebase-chat-* -> meridian-*), the Flutter package, env vars (CODEBASE_CHAT_* -> MERIDIAN_*), the deep-link scheme (meridian://), Postgres GUCs, Helm charts, skills, and the agent surface. White-labels every external identity onto self-hosted infrastructure: hosts move from *.codebase.design to *.meridian.r2d2.office.ilab.zone, images to registry.r2d2.office.ilab.zone/meridian-*, the repo slug to r2d2/meridian, and bundle IDs to zone.ilab.office.r2d2.meridian.*. The Block staging relay and the four Block-internal build repos are not reachable from a self-hosted deployment and are no longer referenced. The mark becomes a pixel M. It is 5x6 rather than a square 5x5 because the avatar-pile mask asserts the hole clears the glyph's right edge: at 5x5 that edge moves from 68.4% to 73% of the tile, which overruns the 56px team-card hole outright and leaves the other three piles under a pixel. At 5x6 the aspect is 0.833 against the retired C's 0.800, so all four masks clear it unchanged. All 59 materializations are regenerated from the generators; `just check-brand` passes. Four things are deliberately NOT renamed, because they match what was *stored* rather than what now ships. Rewriting any of them makes a migration no-op on exactly the installs it exists to repair: - Frozen migrations 0001-0030. Their SHA-256 digests are pinned in n-minus-one-pins.json and embedded in the attested N-1 image. The new vocabulary lands as forward migration 0031, which dual-reads all three generations' GUCs, lock names, app profiles and mesh d_tags. The push-gateway's own 0001 is likewise restored byte-identical, with 0002 widening its app_profile CHECK. - Legacy namespace chains. xyz.block.codebasechat.app is *prepended* to LEGACY_RELEASE_IDENTIFIERS and its dev/localStorage twins, per the rule in legacy_dirs.rs that a previous rename already broke once. - Bead IDs (codebaseChat-*), which are cited from commits and docs. - CHANGELOG history and upstream issue links. The Codebase-era persona ids are added to RETIRED_PERSONAS with their prompts verbatim, but deliberately NOT to RETIRED_PERSONA_REPLACEMENTS: that map drives migration::retire_agents, which deletes deployed instances, and its safety argument is that the successor is already deployed alongside. That held for Buzz->Codebase; nothing provisions a Meridian agent on an install that already onboarded, so mapping these would delete a working agent and leave nothing in its place. The brand-guard self-test changes axis: the M is symmetric about its vertical axis, so a mirrored M *is* the canonical M and asserting a rejection there would assert a bug. It now flips top-to-bottom (the mark reads as a W) and pins the horizontal symmetry so the coupling is visible if the mark ever becomes asymmetric again. Verified: cargo check --workspace --all-targets clean, just fix-all clean, flutter analyze clean, just check-skills pass, check-brand 59/59, brand-core 9/9, avatarPileMask 4/4, starter-avatar contrast 2/2. Signed-off-by: Joshua Belke <joshua@innovationhub-act.org> |
||
|---|---|---|
| .. | ||
| countdown-bot | ||
| meadow-core | ||
| workflows | ||
| README.md | ||
Examples
This directory contains reference material for building on Meridian beyond the desktop app and AI agents.
countdown-bot/
A small non-AI bot that connects directly to the Meridian relay over WebSocket, authenticates with NIP-42, subscribes to one channel, and replies to deterministic commands like !countdown 5 and !fib 8.
It demonstrates two identity paths:
- Standalone bot identity — the bot authenticates with its own key and must be explicitly admitted to closed/allowlisted relays.
- Owner-attested / agent OAuth path — the bot authenticates with its own key while presenting the same
MERIDIAN_AUTH_TAGNIP-OA credential that Meridian agents receive from the owner/agent OAuth flow, so a relay can admit it because its owner is already a relay member.
See countdown-bot/README.md for usage.
meadow-core/
A persona-pack example for Meridian agents.
workflows/
Worked workflow definitions, one YAML file each, covering every trigger and
every action the engine can execute. Each opens with a # Demonstrates: comment
naming what it teaches.
These are not illustrative snippets — they are load-bearing:
cargo test -p meridian-workflow --test examplesparses and validates every file against the real schema, and asserts the set still covers all five triggers and all six executable actions. A schema change that invalidates a sample fails the build.- They seed the desktop template gallery on the Workflows empty state, via
desktop/scripts/generate-workflow-templates.mjs. Adding or renaming a file here requires regenerating (pnpm -C desktop gen:workflow-templates); CI fails on a stale generated module, and the generator refuses a file that is missing from its explicit gallery order.
See docs/workflow-variables.md for the
template variable surface and docs/nips/NIP-WF.md
for the wire contract.