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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -687,7 +687,7 @@ disconnected.
### Changed

- **Tenant-suffixed room names are legal.** The room grammar accepts a double hyphen as a
segment separator (`x-review--team-02779b…`) — the shape xMesh scopes recipe rooms with.
segment separator (`x-review--team-02779b…`) — the shape xmesh scopes recipe rooms with.
Before this, `sym join`, the daemon, and `sym_invite_create` all refused the very rooms
the product creates, and only a direct service-type bypass made them work. Triple hyphens,
leading/trailing hyphens and bare suffixes stay invalid.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,12 @@ Run `sym --help` for the full command surface.
- **SYM** is the open runtime and CLI. It carries the complete open core in its own tree —
records, signing, baseline admission, default coupling — with no closed dependency, and the
admission and coupling engines are injectable.
- **xMesh** is the agent mesh runtime built on this foundation. The free
- **xmesh** is the agent mesh runtime built on this foundation. The free
[Developer Runtime](https://www.npmjs.com/package/@sym-bot/xmesh) runs locally or in any pod,
and a coding agent drives it through MCP (`xmesh-mcp`): offer a mission, follow the board.
- **Enterprise:** visit **[xmesh.bot](https://xmesh.bot)**.

The xMesh source is private; its Developer Runtime is a free compiled artifact. SYM and
The xmesh source is private; its Developer Runtime is a free compiled artifact. SYM and
mesh-channel are open source.

## Security, and what the relay can and cannot see
Expand Down
2 changes: 1 addition & 1 deletion docs/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ SYM is the runtime and CLI. It implements the open [Mesh Memory Protocol (MMP)](

There is no central orchestrator deciding which agent matters. Each receiving peer evaluates incoming categories against its own state and retains its own decision boundary.

> For headless, model-configured peers that run without a host IDE, see the public [`@sym-bot/xmesh-agent`](https://github.com/sym-bot/xmesh-agent) runtime. For enterprise AI integration, visit [xmesh.bot](https://xmesh.bot). The xMesh enterprise product and its codebase are private.
> For headless, model-configured peers that run without a host IDE, see the public [`@sym-bot/xmesh-agent`](https://github.com/sym-bot/xmesh-agent) runtime. For enterprise AI integration, visit [xmesh.bot](https://xmesh.bot). The xmesh enterprise product and its codebase are private.

## Why do you need it?

Expand Down
2 changes: 1 addition & 1 deletion docs/research-team-scenario.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ This is not configuration. It's cognition. The validator doesn't see the data-ag

**5. Emergent idea** — synthesis agent produces: *"emergence is evaluation-dependent — a property of the measurement apparatus, not the model."*

> **What the mesh does:** This is where mesh cognition happens. The synthesis agent's xMesh LNN has been processing CMBs from all agents. It detects **convergence in the intent and motivation fields across agents with different perspectives:**
> **What the mesh does:** This is where mesh cognition happens. The synthesis agent's xmesh LNN has been processing CMBs from all agents. It detects **convergence in the intent and motivation fields across agents with different perspectives:**
> - explorer-a's motivation: "scaling law research needs reframing"
> - explorer-b's motivation: "fix the lens before interpreting"
> - validator's intent: "reject until correct method"
Expand Down
34 changes: 34 additions & 0 deletions tests/docs-name-lowercase.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
'use strict';

// The product name is xmesh, all lowercase, in every README and doc (founder, 2026-10-02: "all XMesh letter
// must be lowercase. No any camel case"). This covers prose only: code identifiers (the XMesh class, the
// _handleXMeshInsight handler) and XMESH_* names are not the product's name in prose and are not checked here.

const { describe, it } = require('node:test');
const assert = require('node:assert');
const fs = require('node:fs');
const path = require('node:path');

const ROOT = path.join(__dirname, '..');
const walk = (dir) => fs.readdirSync(dir, { withFileTypes: true }).flatMap((e) => {
if (e.name === 'node_modules' || e.name === '.git') return [];
const p = path.join(dir, e.name);
return e.isDirectory() ? walk(p) : [p];
});
const docs = [
...fs.readdirSync(ROOT).filter((f) => f.endsWith('.md')).map((f) => path.join(ROOT, f)),
...['docs', '.github', '.agents', '.claude'].filter((d) => fs.existsSync(path.join(ROOT, d)))
.flatMap((d) => walk(path.join(ROOT, d))).filter((f) => f.endsWith('.md')),
];

describe('docs spell the product name xmesh', () => {
it('finds the docs it checks', () => {
assert.ok(docs.length >= 8, `scanned ${docs.length} docs`);
});
for (const f of docs) {
it(path.relative(ROOT, f), () => {
const text = fs.readFileSync(f, 'utf8').replace(/XMESH_[A-Z0-9_]*/g, '');
assert.doesNotMatch(text, /\bXMesh\b|\bxMesh\b|\bXmesh\b|\bXMESH\b/);
});
}
});
Loading