Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
Format follows [Keep a Changelog](https://keepachangelog.com/). This project
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.17.1] - 2026-07-22

### Fixed

- Deck technical review fixes: the architecture diagram's runtime layer reads "ROS-backed or native · persistent execution" with "nodes · controllers · rules · intents · arbitration" (ROS 2 is not itself a fixed-rate loop; the 50 Hz design rate moved to the stack slide's Reachy-specific spoken aside); the control-plane box renamed "Robot interface" (CLI · JSON feed · intent spool) so the dotted agent-runtime paths no longer contradict the stable-bridge story; the diagram caption reads "operational command and state paths" instead of "direct, synchronous calls"; slide 2 softened to "These approaches can coexist…" with bottom line "What matters is a stable boundary."; the close Reachy command is `behavior engine run`; the source note reads "separates the optional agent from the symbolic runtime."

## [0.17.0] - 2026-07-22

### Changed
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "org"
version = "0.17.0"
version = "0.17.1"
description = "The AgentCulture org site — source of the web presence published to AgentCulture.org. Replaces the deleted landing-page repo. Not distributed on PyPI: the CLI stays repo-local; the deliverable is the published site."
readme = "README.md"
license = "Apache-2.0"
Expand Down
63 changes: 36 additions & 27 deletions site-astro/src/components/CliRuntimeStackDiagram.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
// cli-runtime-reframe deck (org#21). Five layers, top to bottom:
//
// Agent harness (optional) ─┐
// Human · shell script · CI ─┴─> Robot CLI — control plane
// Human · shell script · CI ─┴─> Robot interface — control plane
// (CLI · JSON feed · intent spool)
// │ (direct, one-shot ops)
// ▼ ╲
// Behavior runtime ╲
Expand All @@ -14,8 +15,13 @@
// ↕
// Physical robot
//
// Every box and arrow label is taken verbatim from org#21's proposed
// mermaid diagram and terminology table:
// Box and arrow labels originate from org#21's proposed mermaid diagram and
// terminology table, amended by the deck-technical-fixes review: the
// control-plane box is "Robot interface" (the CLI is one executable surface
// of the stable contract beside the JSON feed and intent spool, so the
// dotted agent<->runtime paths no longer contradict "the CLI is the stable
// bridge"), and the runtime layer reads "ROS-backed or native · persistent
// execution" (ROS 2 is not itself a fixed-rate behavior loop):
//
// AGENT --> CLI ; HUMAN --> CLI
// CLI -->|"lifecycle · configuration · direct operations"| RUNTIME
Expand All @@ -31,8 +37,10 @@
// visual emphasis: they are the stable center of the story. "reachy-mini-
// daemon" is named only on the device layer, never on the runtime — the
// behavior runtime and the lower-level device daemon are never conflated.
// Any tick-rate label reads "50 Hz design rate", never a measured claim
// (reachy-mini-cli CHANGELOG v0.42.0 records 23 Hz achieved so far).
// The diagram carries no tick-rate label — the 50 Hz figure lives in the
// stack slide's spoken track as a Reachy-specific aside, qualified as a
// design rate, never a measured claim (reachy-mini-cli CHANGELOG v0.42.0
// records 23 Hz achieved so far).
//
// Pure inline SVG, no script, no external asset. Theming rides the same
// CSS custom properties as MindNervousSystemBodyDiagram.astro / ReachyDiagram
Expand All @@ -59,20 +67,21 @@
Five layers, drawn top to bottom. At the top, two replaceable entry points feed the
same control plane: an optional agent harness — Claude Code, Codex, Colleague, a
custom agent, or none, drawn with a dashed border — and a human, shell script, or CI
system. Both connect straight down into the robot CLI, the control plane, which
inspects, configures, intervenes, and reports start, stop, and status through JSON
contracts; the CLI and the layer below it, the behavior runtime, carry the strongest
visual weight in this diagram. The CLI sends lifecycle, configuration, and direct
operations down into the behavior runtime, implemented in ROS 2 or a native runtime — a continuous fixed-rate loop — 50 Hz is a
design rate, not a measured one — that runs senses, rules, intents, and arbitration.
The CLI also has a direct, required path straight down to the device layer, for
one-shot device operations that bypass the runtime entirely. The behavior runtime
sends validated, arbitrated actions down to the device daemon or hardware adapter,
which exchanges state and actuation with the physical robot at the bottom — Reachy
Mini, SO-ARM101, or a future body, drawn replaceable like the agent above it. Two
dotted paths connect the agent and the runtime directly, bypassing the CLI: the
runtime emits a runtime event feed up to the agent, and the agent submits named
intents back down to the runtime through attach and spool.
system. Both connect straight down into the robot interface, the control plane, whose
surfaces are the CLI, the JSON feed, and the intent spool; the CLI inspects,
configures, intervenes, and reports through JSON contracts. The interface and the
layer below it, the behavior runtime, carry the strongest visual weight in this
diagram. The CLI sends lifecycle, configuration, and direct operations down into the
behavior runtime — ROS-backed or native, persistent execution that runs nodes,
controllers, rules, intents, and arbitration. The CLI also has a direct, required
path straight down to the device layer, for one-shot device operations that bypass
the runtime entirely. The behavior runtime sends validated, arbitrated actions down
to the device daemon or hardware adapter, which exchanges state and actuation with
the physical robot at the bottom — Reachy Mini, SO-ARM101, or a future body, drawn
replaceable like the agent above it. Two dotted paths connect the agent and the
runtime directly — the interface's non-CLI surfaces: the runtime emits its event
feed up to the agent, and the agent submits named intents back down to the runtime
through attach and spool.
</desc>

<defs>
Expand Down Expand Up @@ -125,12 +134,12 @@
<g aria-hidden="true">
<rect x="120" y="220" width="960" height="160" rx="24" class="layer-box emphasis"></rect>
<text x="600" y="254" text-anchor="middle" class="kicker kicker-strong">CONTROL PLANE</text>
<text x="600" y="296" text-anchor="middle" class="layer-title layer-title-lg">Robot CLI</text>
<text x="600" y="296" text-anchor="middle" class="layer-title layer-title-lg">Robot interface</text>
<text x="600" y="326" text-anchor="middle" class="layer-sub layer-sub-lg">
inspect · configure · intervene
CLI · JSON feed · intent spool
</text>
<text x="600" y="350" text-anchor="middle" class="layer-sub layer-sub-lg">
start / stop / status · JSON contracts
inspect · configure · intervene · JSON contracts
</text>
Comment thread
qodo-code-review[bot] marked this conversation as resolved.
</g>

Expand Down Expand Up @@ -163,10 +172,10 @@
<text x="600" y="506" text-anchor="middle" class="kicker kicker-strong">PERSISTENT EMBODIMENT</text>
<text x="600" y="550" text-anchor="middle" class="layer-title layer-title-lg">Behavior runtime</text>
<text x="600" y="582" text-anchor="middle" class="layer-sub layer-sub-lg">
ROS 2 or native · continuous fixed-rate loop — 50 Hz design rate
ROS-backed or native · persistent execution
</text>
<text x="600" y="604" text-anchor="middle" class="layer-sub layer-sub-lg">
senses · rules · intents · arbitration
nodes · controllers · rules · intents · arbitration
</text>
<text x="600" y="626" text-anchor="middle" class="layer-note">
stays alive with no agent attached
Expand Down Expand Up @@ -247,9 +256,9 @@
</div>

<figcaption class="diagram-caption">
Solid lines are direct, synchronous calls; the CLI's direct line to the device layer is a
required one-shot path that bypasses the runtime. Dotted lines are the optional runtime
event feed and named-intent path an attached agent can use instead.
Solid lines show operational command and state paths; the CLI's direct line to the device
layer is a required one-shot path that bypasses the runtime. Dotted lines are the optional
runtime event feed and named-intent path an attached agent can use instead.
</figcaption>
</figure>

Expand Down
4 changes: 2 additions & 2 deletions site-astro/src/data/mind-nervous-system-body-slides.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ test("slide 2 (paths) carries the three intelligence-path columns verbatim", ()
slide.columns.map((column) => column.label),
["Coded behavior", "Learned policy", "Agent tools"],
);
assert.equal(slide.bottomLine, "What's missing is a stable boundary.");
assert.equal(slide.bottomLine, "What matters is a stable boundary.");
});

test("slide 3 (stack) embeds the architecture diagram", () => {
Expand Down Expand Up @@ -179,7 +179,7 @@ test("slide 6 (close) is last, carries both robots and the verbatim thesis", ()
status: "working system",
traits: "Rules · behavior runtime · device daemon",
claim: "The complete native-runtime pattern.",
command: "reachy-mini-cli behavior engine start",
command: "reachy-mini-cli behavior engine run",
});
assert.deepEqual(arm, {
robot: "so101",
Expand Down
13 changes: 7 additions & 6 deletions site-astro/src/data/mind-nervous-system-body-slides.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
// (plan task t3), not a dataset field.
// 2. paths · paths · beat 2 — three ways intelligence reaches a
// robot today (coded behavior, learned policy, agent tools) via
// `columns`; none of them draws a stable boundary.
// `columns`; they can coexist — the architectural question is the
// stable boundary between deciding and executing.
// 3. stack · stack · beat 3 — carries `diagram: true` so the
// renderer embeds the five-layer architecture component beside the
// copy; the agent stays above the CLI line, execution stays below it.
Expand Down Expand Up @@ -187,13 +188,13 @@ export const mindNervousSystemBodySlides = [
eyebrow: "three paths, one gap",
headline: "Intelligence reaches robots in different ways",
spokenLine:
"Some robots run fixed, hand-coded behavior; others run a learned policy trained end to end; a growing set let an agent call tools directly against the hardware. Each path works, but none of them draws a clean line between what the agent decides and what the robot's software is responsible for executing.",
"Some robots run fixed, hand-coded behavior; others run a learned policy trained end to end; a growing set let an agent call tools directly against the hardware. These approaches can coexist. The architectural question is whether the robot exposes a stable boundary between what intelligence decides and what robot software executes.",
columns: [
{ label: "Coded behavior" },
{ label: "Learned policy" },
{ label: "Agent tools" },
],
bottomLine: "What's missing is a stable boundary.",
bottomLine: "What matters is a stable boundary.",
},
{
id: "stack",
Expand All @@ -203,7 +204,7 @@ export const mindNervousSystemBodySlides = [
eyebrow: "the architecture",
headline: "Keep execution below the model",
spokenLine:
"The stack has five layers: an optional agent, a stable CLI, a deterministic behavior runtime, a device daemon, and the hardware itself. Reasoning stays above the CLI line; execution stays below it, in the runtime and daemon, so the model can be interchangeable without ever owning the motors.",
"The stack has five layers: an optional agent, a stable CLI, a deterministic behavior runtime — on Reachy Mini, a fixed-rate loop at a 50 Hz design rate — a device daemon, and the hardware itself. Reasoning stays above the CLI line; execution stays below it, in the runtime and daemon, so the model can be interchangeable without ever owning the motors.",
bottomLine: "The agent never owns the motors.",
},
{
Expand Down Expand Up @@ -249,7 +250,7 @@ export const mindNervousSystemBodySlides = [
status: "working system",
traits: "Rules · behavior runtime · device daemon",
claim: "The complete native-runtime pattern.",
command: "reachy-mini-cli behavior engine start",
command: "reachy-mini-cli behavior engine run",
Comment thread
qodo-code-review[bot] marked this conversation as resolved.
},
{
robot: "so101",
Expand Down Expand Up @@ -292,7 +293,7 @@ export const deckSources = {
repositoryUrl: "https://github.com/agentculture/arm101-cli",
},
],
note: "reachy-mini-cli v0.42.0 retired the AI-first flow — the robot's presence is the symbolic runtime.",
note: "reachy-mini-cli v0.42.0 separates the optional agent from the symbolic runtime.",
} as const satisfies {
projects: readonly DeckSourceProject[];
note: string;
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading