Skip to content
Draft
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
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ agentic-internet infrastructure map the Flashy / Gord estate builds: nine
layers, each phrased as the question it answers, and for each layer the
repositories that carry its specification, implementation, product or tooling,
with the status and the GitHub visibility of each as **measured**, not as
intended. It is the twin of the human hub, [FlashyLabs/web4](https://github.com/FlashyLabs/web4),
intended. It is the twin of the human hub, [AgenteLabs/web4](https://github.com/AgenteLabs/web4),
and is meant to be served at `https://<hub-domain>/.well-known/stack.json`.

## Quick start
Expand Down Expand Up @@ -75,19 +75,19 @@ Run `node vendor-stack.mjs list` for the same table with status and visibility.

## Links

**Hub:** [FlashyLabs/web4](https://github.com/FlashyLabs/web4) — the human-readable twin.

**Identity** · [flashyid-spec](https://github.com/FlashyLabs/flashyid-spec) · [flashyid](https://github.com/FlashyLabs/flashyid)
**Graph** · [agentgraph](https://github.com/FlashyLabs/agentgraph) · [therealm](https://github.com/FlashyLabs/therealm)
**Discovery** · [intent-spec](https://github.com/FlashyLabs/intent-spec) · [intentmesh](https://github.com/FlashyLabs/intentmesh)
**Trust** · [magician](https://github.com/FlashyLabs/magician) · [Rites-Network](https://github.com/FlashyLabs/Rites-Network) · trustgraph (planned; no repository yet)
**Gateway** · [agent-wellknown](https://github.com/FlashyLabs/agent-wellknown) · [agent-dns](https://github.com/FlashyLabs/agent-dns) · [bastion](https://github.com/FlashyLabs/bastion)
**Representation** · [aao](https://github.com/FlashyLabs/aao)
**Execution** · [flashyos](https://github.com/FlashyLabs/flashyos) (private — its public face is [flashyos.com](https://flashyos.com), which serves the `flashyos/1` handshake and the AAO charter) · [flashyos-spec](https://github.com/FlashyLabs/flashyos-spec) · [flashyos-tools](https://github.com/FlashyLabs/flashyos-tools) · [agentfile](https://github.com/FlashyLabs/agentfile)
**Commerce** · [agentpay](https://github.com/FlashyLabs/agentpay) · [flashyos-wdk](https://github.com/FlashyLabs/flashyos-wdk) · [flashy-rails](https://github.com/FlashyLabs/flashy-rails) · [flashy-ledger](https://github.com/FlashyLabs/flashy-ledger) · [flashy-contracts](https://github.com/FlashyLabs/flashy-contracts)
**Audit** · agentledger (planned; no repository yet) · [chronicle](https://github.com/FlashyLabs/chronicle) · [flashy-network](https://github.com/FlashyLabs/flashy-network)
**Tooling** · [conformance-kit](https://github.com/FlashyLabs/conformance-kit) · [mesh-lint](https://github.com/FlashyLabs/mesh-lint) · [flashy-infra](https://github.com/FlashyLabs/flashy-infra)
**Teaching** · [flashy-docs](https://github.com/FlashyLabs/flashy-docs) · [flashy-examples](https://github.com/FlashyLabs/flashy-examples) · [web4](https://github.com/FlashyLabs/web4) · [stack.json](https://github.com/FlashyLabs/stack.json)
**Hub:** [AgenteLabs/web4](https://github.com/AgenteLabs/web4) — the human-readable twin.

**Identity** · [flashyid-spec](https://github.com/AgenteLabs/flashyid-spec) · [flashyid](https://github.com/AgenteLabs/flashyid)
**Graph** · [agentgraph](https://github.com/AgenteLabs/agentgraph) · [therealm](https://github.com/AgenteLabs/therealm)
**Discovery** · [intent-spec](https://github.com/AgenteLabs/intent-spec) · [intentmesh](https://github.com/AgenteLabs/intentmesh)
**Trust** · [magician](https://github.com/AgenteLabs/magician) · [Rites-Network](https://github.com/AgenteLabs/Rites-Network) · trustgraph (planned; no repository yet)
**Gateway** · [agent-wellknown](https://github.com/AgenteLabs/agent-wellknown) · [agent-dns](https://github.com/AgenteLabs/agent-dns) · [bastion](https://github.com/AgenteLabs/bastion)
**Representation** · [aao](https://github.com/AgenteLabs/aao)
**Execution** · [flashyos](https://github.com/AgenteLabs/flashyos) (private — its public face is [flashyos.com](https://flashyos.com), which serves the `flashyos/1` handshake and the AAO charter) · [flashyos-spec](https://github.com/AgenteLabs/flashyos-spec) · [flashyos-tools](https://github.com/AgenteLabs/flashyos-tools) · [agentfile](https://github.com/AgenteLabs/agentfile)
**Commerce** · [agentpay](https://github.com/AgenteLabs/agentpay) · [flashyos-wdk](https://github.com/AgenteLabs/flashyos-wdk) · [flashy-rails](https://github.com/AgenteLabs/flashy-rails) · [flashy-ledger](https://github.com/AgenteLabs/flashy-ledger) · [flashy-contracts](https://github.com/AgenteLabs/flashy-contracts)
**Audit** · agentledger (planned; no repository yet) · [chronicle](https://github.com/AgenteLabs/chronicle) · [flashy-network](https://github.com/AgenteLabs/flashy-network)
**Tooling** · [conformance-kit](https://github.com/AgenteLabs/conformance-kit) · [mesh-lint](https://github.com/AgenteLabs/mesh-lint) · [flashy-infra](https://github.com/AgenteLabs/flashy-infra)
**Teaching** · [flashy-docs](https://github.com/AgenteLabs/flashy-docs) · [flashy-examples](https://github.com/AgenteLabs/flashy-examples) · [web4](https://github.com/AgenteLabs/web4) · [stack.json](https://github.com/AgenteLabs/stack.json)

A private repository's link resolves only for someone with access; the index
lists it anyway, because the map is of what exists, not of what a stranger can
Expand Down
2 changes: 1 addition & 1 deletion flashyos.roles.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"repositories": [
{
"name": "stack.json",
"url": "github.com/FlashyLabs/stack.json",
"url": "github.com/AgenteLabs/stack.json",
"default": true,
"holds": [
"spec",
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
},
"repository": {
"type": "git",
"url": "https://github.com/FlashyLabs/stack.json"
"url": "https://github.com/AgenteLabs/stack.json"
}
}
64 changes: 32 additions & 32 deletions stack.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"contract": "web4/1",
"generated": "2026-09-28",
"hub": "https://github.com/FlashyLabs/web4",
"generated": "2026-10-27",
"hub": "https://github.com/AgenteLabs/web4",
"wellKnown": "/.well-known/stack.json",
"principle": "Own the open protocols through which agents discover, identify, authorize, trust, transact with and audit one another — not the agents.",
"layers": [
Expand All @@ -11,15 +11,15 @@
"repos": [
{
"name": "flashyid-spec",
"url": "https://github.com/FlashyLabs/flashyid-spec",
"url": "https://github.com/AgenteLabs/flashyid-spec",
"kind": "spec",
"contract": "delegation/1",
"status": "draft",
"visibility": "public"
},
{
"name": "flashyid",
"url": "https://github.com/FlashyLabs/flashyid",
"url": "https://github.com/AgenteLabs/flashyid",
"kind": "impl",
"status": "exists",
"visibility": "private"
Expand All @@ -32,15 +32,15 @@
"repos": [
{
"name": "agentgraph",
"url": "https://github.com/FlashyLabs/agentgraph",
"url": "https://github.com/AgenteLabs/agentgraph",
"kind": "spec",
"contract": "graph/1",
"status": "draft",
"visibility": "public"
},
{
"name": "therealm",
"url": "https://github.com/FlashyLabs/therealm",
"url": "https://github.com/AgenteLabs/therealm",
"kind": "impl",
"contract": "realm/1",
"status": "exists",
Expand All @@ -54,7 +54,7 @@
"repos": [
{
"name": "intent-spec",
"url": "https://github.com/FlashyLabs/intent-spec",
"url": "https://github.com/AgenteLabs/intent-spec",
"kind": "spec",
"contract": "intent/1",
"status": "draft",
Expand All @@ -63,7 +63,7 @@
},
{
"name": "intentmesh",
"url": "https://github.com/FlashyLabs/intentmesh",
"url": "https://github.com/AgenteLabs/intentmesh",
"kind": "impl",
"status": "exists",
"visibility": "private"
Expand All @@ -76,15 +76,15 @@
"repos": [
{
"name": "magician",
"url": "https://github.com/FlashyLabs/magician",
"url": "https://github.com/AgenteLabs/magician",
"kind": "impl",
"contract": "trust/1",
"status": "exists",
"visibility": "private"
},
{
"name": "Rites-Network",
"url": "https://github.com/FlashyLabs/Rites-Network",
"url": "https://github.com/AgenteLabs/Rites-Network",
"kind": "impl",
"contract": "ritual/1",
"status": "exists",
Expand All @@ -106,7 +106,7 @@
"repos": [
{
"name": "agent-wellknown",
"url": "https://github.com/FlashyLabs/agent-wellknown",
"url": "https://github.com/AgenteLabs/agent-wellknown",
"kind": "spec",
"contract": "agent/1",
"status": "draft",
Expand All @@ -115,15 +115,15 @@
},
{
"name": "agent-dns",
"url": "https://github.com/FlashyLabs/agent-dns",
"url": "https://github.com/AgenteLabs/agent-dns",
"kind": "spec",
"contract": "agent-dns/1",
"status": "draft",
"visibility": "public"
},
{
"name": "bastion",
"url": "https://github.com/FlashyLabs/bastion",
"url": "https://github.com/AgenteLabs/bastion",
"kind": "product",
"status": "private-intended",
"visibility": "public",
Expand All @@ -137,7 +137,7 @@
"repos": [
{
"name": "aao",
"url": "https://github.com/FlashyLabs/aao",
"url": "https://github.com/AgenteLabs/aao",
"kind": "spec+impl",
"contract": "aao/0.1",
"status": "exists",
Expand All @@ -152,28 +152,28 @@
"repos": [
{
"name": "flashyos",
"url": "https://github.com/FlashyLabs/flashyos",
"url": "https://github.com/AgenteLabs/flashyos",
"kind": "impl",
"status": "exists",
"visibility": "private"
},
{
"name": "flashyos-spec",
"url": "https://github.com/FlashyLabs/flashyos-spec",
"url": "https://github.com/AgenteLabs/flashyos-spec",
"kind": "spec",
"status": "exists",
"visibility": "public"
},
{
"name": "flashyos-tools",
"url": "https://github.com/FlashyLabs/flashyos-tools",
"url": "https://github.com/AgenteLabs/flashyos-tools",
"kind": "tooling",
"status": "exists",
"visibility": "public"
},
{
"name": "agentfile",
"url": "https://github.com/FlashyLabs/agentfile",
"url": "https://github.com/AgenteLabs/agentfile",
"kind": "tooling",
"status": "exists",
"visibility": "public"
Expand All @@ -186,36 +186,36 @@
"repos": [
{
"name": "agentpay",
"url": "https://github.com/FlashyLabs/agentpay",
"url": "https://github.com/AgenteLabs/agentpay",
"kind": "spec",
"contract": "pay-policy/1",
"status": "draft",
"visibility": "public"
},
{
"name": "flashyos-wdk",
"url": "https://github.com/FlashyLabs/flashyos-wdk",
"url": "https://github.com/AgenteLabs/flashyos-wdk",
"kind": "impl",
"status": "exists",
"visibility": "public"
},
{
"name": "flashy-rails",
"url": "https://github.com/FlashyLabs/flashy-rails",
"url": "https://github.com/AgenteLabs/flashy-rails",
"kind": "impl",
"status": "exists",
"visibility": "private"
},
{
"name": "flashy-ledger",
"url": "https://github.com/FlashyLabs/flashy-ledger",
"url": "https://github.com/AgenteLabs/flashy-ledger",
"kind": "impl",
"status": "exists",
"visibility": "public"
},
{
"name": "flashy-contracts",
"url": "https://github.com/FlashyLabs/flashy-contracts",
"url": "https://github.com/AgenteLabs/flashy-contracts",
"kind": "impl",
"status": "exists",
"visibility": "private"
Expand All @@ -236,15 +236,15 @@
},
{
"name": "chronicle",
"url": "https://github.com/FlashyLabs/chronicle",
"url": "https://github.com/AgenteLabs/chronicle",
"kind": "impl",
"contract": "chronicle/1",
"status": "exists",
"visibility": "private"
},
{
"name": "flashy-network",
"url": "https://github.com/FlashyLabs/flashy-network",
"url": "https://github.com/AgenteLabs/flashy-network",
"kind": "impl",
"status": "exists",
"visibility": "private",
Expand All @@ -256,21 +256,21 @@
"tooling": [
{
"name": "conformance-kit",
"url": "https://github.com/FlashyLabs/conformance-kit",
"url": "https://github.com/AgenteLabs/conformance-kit",
"kind": "tooling",
"status": "exists",
"visibility": "public"
},
{
"name": "mesh-lint",
"url": "https://github.com/FlashyLabs/mesh-lint",
"url": "https://github.com/AgenteLabs/mesh-lint",
"kind": "tooling",
"status": "exists",
"visibility": "public"
},
{
"name": "flashy-infra",
"url": "https://github.com/FlashyLabs/flashy-infra",
"url": "https://github.com/AgenteLabs/flashy-infra",
"kind": "tooling",
"status": "exists",
"visibility": "private"
Expand All @@ -279,28 +279,28 @@
"teaching": [
{
"name": "flashy-docs",
"url": "https://github.com/FlashyLabs/flashy-docs",
"url": "https://github.com/AgenteLabs/flashy-docs",
"kind": "docs",
"status": "exists",
"visibility": "public"
},
{
"name": "flashy-examples",
"url": "https://github.com/FlashyLabs/flashy-examples",
"url": "https://github.com/AgenteLabs/flashy-examples",
"kind": "docs",
"status": "exists",
"visibility": "public"
},
{
"name": "web4",
"url": "https://github.com/FlashyLabs/web4",
"url": "https://github.com/AgenteLabs/web4",
"kind": "hub",
"status": "draft",
"visibility": "public"
},
{
"name": "stack.json",
"url": "https://github.com/FlashyLabs/stack.json",
"url": "https://github.com/AgenteLabs/stack.json",
"kind": "index",
"status": "draft",
"visibility": "public"
Expand Down
2 changes: 1 addition & 1 deletion stack.schema.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/FlashyLabs/stack.json/stack.schema.json",
"$id": "https://github.com/AgenteLabs/stack.json/stack.schema.json",
"title": "web4/1 — the Web 4 stack index",
"description": "One document describing every layer of the agentic-internet stack the Flashy / Gord estate builds, and the repository that carries each part. Served at /.well-known/stack.json. Keys prefixed x- are extensions and are allowed anywhere; every other key is closed.",
"type": "object",
Expand Down
2 changes: 1 addition & 1 deletion test/charter-conformance.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ test('the charter declares exactly the five roles MESH.md names, each working in
const covered = new Set(c.roles.flatMap((r) => r.worksIn ?? []));
for (const r of repoNames) assert.ok(covered.has(r), `no role works in "${r}"`);
assert.ok(
c.repositories.some((r) => r.url === 'github.com/FlashyLabs/stack.json'),
c.repositories.some((r) => r.url === 'github.com/AgenteLabs/stack.json'),
'the charter does not name the repository it lives in',
);
});
Expand Down
9 changes: 5 additions & 4 deletions test/stack.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ test('a planned repo has no url and no visibility; every other repo has both', (
test('every url points at the FlashyLabs organisation on GitHub', () => {
for (const { repo } of repos(stack)) {
if (repo.url === null || repo.url === undefined) continue;
assert.ok(repo.url.startsWith('https://github.com/FlashyLabs/'), `${repo.name}: ${repo.url}`);
assert.equal(repo.url, `https://github.com/FlashyLabs/${repo.name}`, `${repo.name}: url does not match its name`);
assert.ok(repo.url.startsWith('https://github.com/AgenteLabs/'), `${repo.name}: ${repo.url}`);
assert.equal(repo.url, `https://github.com/AgenteLabs/${repo.name}`, `${repo.name}: url does not match its name`);
}
});

Expand Down Expand Up @@ -191,7 +191,7 @@ test('schema and checker agree on the closed enums', () => {
test('schema and checker agree on every pattern, by behaviour and by source', () => {
const pairs = [
['generated', schema.properties.generated.pattern, ['2026-09-28', '2026-9-28', '28/09/2026', '']],
['httpsUrl', schema.$defs.httpsUrl.pattern, ['https://github.com/FlashyLabs/x', 'http://x.y', 'https://a b', 'github.com/x', '']],
['httpsUrl', schema.$defs.httpsUrl.pattern, ['https://github.com/AgenteLabs/x', 'http://x.y', 'https://a b', 'github.com/x', '']],
['wellKnownPath', schema.$defs.wellKnownPath.pattern, ['/.well-known/agent', '/.well-known/x.json', '/well-known/x', '/.well-known/', 'x', '']],
['contractId', schema.$defs.contractId.pattern, ['trust/1', 'aao/0.1', 'action-ledger/1', 'Trust/1', 'trust v1', 'trust/', '/1', 'trust/1a']],
['layerName', layerSchema.properties.name.pattern, ['identity', 'spec-and-impl', 'Identity', '9lives', '']],
Expand Down Expand Up @@ -242,7 +242,8 @@ test('node vendor-stack.mjs check stack.json exits 0 and says so', () => {
const r = run('check', 'stack.json');
assert.equal(r.status, 0, r.stdout + r.stderr);
assert.match(r.stdout, /web4\/1 valid/);
assert.match(r.stdout, /measured 2026-09-28/);
// the date is the document's own `generated`, never a literal: a re-measurement moves both
assert.ok(r.stdout.includes(`measured ${stack.generated}`), r.stdout);
});

test('node vendor-stack.mjs check <invalid vector> prints the finding and exits 1', () => {
Expand Down
Loading
Loading