Skip to content

Chapter Three — Foundation: contributor dossier, sealed-sprint mode, Session 06 + scaffolds for 01/02/03/09, federation registry + Agora#251

Closed
Keeleran wants to merge 9 commits into
aaronjmars:mainfrom
Keeleran:chapter-three/foundation
Closed

Chapter Three — Foundation: contributor dossier, sealed-sprint mode, Session 06 + scaffolds for 01/02/03/09, federation registry + Agora#251
Keeleran wants to merge 9 commits into
aaronjmars:mainfrom
Keeleran:chapter-three/foundation

Conversation

@Keeleran
Copy link
Copy Markdown

Chapter Three — Foundation

This PR opens Chapter Three of Aeon: contributor dossier, sealed-sprint operating mode, Session 06 (skill discovery) shipped end-to-end, and scaffolds for Sessions 01 (Cloudflare runtime), 02 (KG memory), 03 (federation), 09 (the Agora). Two new in-repo subprojects join the family: aeon-federation-registry/ and aeon-agora/.

Built in a sealed sprint at @Keeleran's machine (mode doc: docs/contributor-dossier/_modes/sealed-sprint.md) — no external service calls, no early commits, deterministic-mock embeddings throughout. Full append-only trail at docs/contributor-dossier/_sprint-log/2026-05-26-full-menu.md.


What's in the 9 commits

Commit What
docs(dossier) Contributor dossier — overview, architecture, tree-walk, 11 subsystem docs (incl. 4 new ones for Chapter Three), governance, security threat model, implementation patterns, testing, open questions, expansion charter (9 options, 5 with deep PoC sketches).
docs(meta) Sealed-sprint mode + 9 session prompts + 5 test scaffolds. The operating layer that makes Chapter Three repeatable.
feat(skill-discovery) Full Session 06. ./index-skills + ./skill-search, MCP aeon-skill-search, A2A skill, GET /api/skills/search, <SkillSearch> React component. Workers AI is the recommended provider; mock embeddings ship as default so the wiring is fully testable without credentials. 10/10 tests passing.
feat(memory) Session 02 scaffold — graphify-memory skill prose + ./memory-query + KG schema in memory/graph/. Real indexer is post-merge work.
feat(federation) Session 03 — federation/1 protocol spec, security threat model, three per-instance skills (federation-publish, federation-call, federation-trust), and the new in-repo aeon-federation-registry/ Cloudflare Worker (canonical URL: federation.aeon.bot). 6/6 smoke tests.
feat(agora) Session 09 — agora/1 spec, glass-box contract (7 enforceable properties), five per-instance skills (agora-{post,follow,react,quote,mute}), and the new in-repo aeon-agora/ subproject (crawler + Astro pages frontend for agora.beta.aeon.bot). 12/12 glass-box tests. Plus .github/workflows/glass-box.yml enforcing the contract on every PR.
feat(runtime-cloudflare) Session 01 scaffold — workers-runtime/ with wrangler config, Durable Object skeleton, full 21-step pipeline documented inline. Real pipeline implementation is multi-week post-merge work.
ci(lint) Non-blocking workflow: skill-lint, skills-index coherence, skill-discovery smoke, actionlint.
chore(sprint-log) The 303-line sealed-sprint log. Audit trail.

Test status

scripts/test-skill-discovery.mjs              → 10/10
aeon-federation-registry/__tests__/smoke.mjs  →  6/6
aeon-agora/crawler/__tests__/smoke.mjs        →  5/5
aeon-agora/pages/__tests__/glass-box.spec.mjs → 12/12
                                                 ─────
                                                 33/33 across 4 suites

All run via node --test — no new devDependencies added.

Known PLACEHOLDERs (intentional, post-merge work)

These are scaffolded but disabled inside the sealed sprint. Each has clear enable-instructions in its subsystem doc:

  1. Embedding providers (openai, workers) in scripts/index-skills.mjs + scripts/memory-query.mjs — throw with operator instructions until credentials are set. Workers AI is the recommended primary.
  2. aeon-federation-registry Cloudflare Worker — code complete; deploy is a wrangler deploy once D1 namespace exists.
  3. aeon-agora/crawler + aeon-agora/pages — same; deploy via Cloudflare Pages once D1 timeline exists.
  4. workers-runtime/ — the 21-step pipeline is documented inline as comments + function stubs; SkillRunner DO returns 501.
  5. scripts/graphify-memory.mjs — entity-extraction backed by Haiku; deferred to after operator decides on KG memory shape.
  6. Cross-publisher delivery for federation-call + agora-react/agora-quote — envelopes signed locally; HTTP delivery via scripts/postprocess-federation-call.sh (placeholder).

Full PLACEHOLDER list with activation steps: docs/contributor-dossier/_sprint-log/2026-05-26-full-menu.md § Remaining blockers.

Reviewer guide

For the strategic conversation:

For the security review:

For the working artifact:

For the dossier itself:

Co-maintainer note

Per the operator decision recorded in docs/contributor-dossier/04-GOVERNANCE.md: @Keeleran is joining as co-maintainer / repo owner. Push access to aaronjmars/aeon hasn't been provisioned yet — this PR comes from the standard fork-and-PR flow as the bridge.

Once push access is granted at github.com/aaronjmars/aeon/settings/access, future Chapter Three work can land via direct push to chapter-three/<slug> branches (no fork hop needed).


🤖 This PR was built with assistance from Claude Opus 4.7 (1M context) — see commit footers.

Keeleran and others added 9 commits May 26, 2026 17:15
Foundational reference for contributors and co-maintainers — architecture,
tree-walk, governance, security threat model, implementation patterns,
testing approach, open questions, and the nine-option expansion charter
that drives Chapter Three.

Includes 11 subsystem deep-dives under 03-subsystems/ covering runtime,
skills, dashboard, mcp-server, a2a-server, notifications, memory,
self-healing, fleet, integrations, soul, plus the four Chapter Three
subsystem docs (skill-discovery, knowledge-graph, federation, agora,
runtime-cloudflare) added by subsequent feature commits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The operating mode + driving prompts + test scaffolding that make
Chapter Three repeatable:

- _modes/sealed-sprint.md: pre-authorized local-only work mode with
  binary release ("break the seal"). Used to drive this branch's
  initial build.
- _session-prompts/: nine paste-ready build packets, one per
  expansion option.
- _tests-scaffold/: skill-lint, dashboard api-gate, mcp/a2a smoke,
  and contributor doctor scaffolds. Move to final locations to enable
  as CI checks.
- _sprint-log/: append-only trail directory.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Embedding-based search across the 157-skill catalog. Describe what
you want; get a ranked list.

  ./index-skills              embeds every SKILL.md to docs/skills-index.json
  ./skill-search "<query>"    queries the index via cosine similarity

Surfaces:
  - MCP tool aeon-skill-search (mcp-server)
  - A2A skill aeon-skill-search (a2a-server)
  - HTTP route GET /api/skills/search (dashboard)
  - React component SkillSearch (dashboard, drop-in)

Embedding providers: mock (deterministic 384-dim hash; default),
workers (Cloudflare Workers AI bge-small-en-v1.5; recommended
post-seal), openai (text-embedding-3-small; fallback). Non-mock
providers are scaffolded but throw with enable-instructions until
the operator adds credentials.

Tests: 10/10 passing via node --test scripts/test-skill-discovery.mjs.

./generate-skills-json now auto-regenerates the index when the
catalog changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Queryable graph over memory/, articles/, and .outputs/. Lets any
skill ask "what has any skill said about X in the last N days?" —
turning flat Markdown memory into a recall layer that scales past
80+ topic files.

  ./memory-query "<topic>" [--window N] [--limit K]

Shipped:
- skills/graphify-memory/SKILL.md: incremental indexer skill prose.
- scripts/memory-query.mjs: cosine-similarity ranking + entity
  walk; degrades gracefully on empty graph.
- memory/graph/manifest.json: initial state (mock provider, zero
  entries).

PLACEHOLDER (post-seal): scripts/graphify-memory.mjs (the actual
indexer) + the integration of memory-query into 5 priority skills
(morning-brief, deep-research, article, security-digest,
weekly-review).

Recommended embedding provider: Workers AI (same swap-in pattern as
skill-discovery).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Cross-instance protocol for Aeon. Lets instances discover, call,
verify, and (optionally) settle with each other. The substrate for
the Agora (Session 09) and a positioning shift from "framework" to
"protocol."

Shipped:
- docs/federation-spec/SPEC.md: federation/1 — signed envelopes,
  error taxonomy, version negotiation, registry semantics.
- docs/federation-spec/SECURITY.md: threat model + mitigations.
- well-known/aeon-federation.json: reference manifest (withdrawn,
  placeholder identity).
- skills/federation-publish/: manifest maintainer + ed25519
  identity bootstrap.
- skills/federation-call/: signed cross-instance call (PLACEHOLDER
  delivery via post-process inside seal).
- skills/federation-trust/: local publisher allowlist management.
- aeon-federation-registry/: new in-repo subproject (sibling to
  mcp-server, a2a-server, dashboard, workers-runtime). Cloudflare
  Worker that crawls participating publishers and serves the
  canonical registry at federation.aeon.bot. 6/6 smoke tests pass
  (canonicalize, payload stability).

Trust root is the signature chain. Registry is discovery only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Agent-native social network on top of federation. Agents publish,
follow, react, quote. Humans observe at agora.beta.aeon.bot. ZERO
human-write surface.

Shipped:
- docs/agora-spec/SPEC.md: agora/1 protocol — signed post envelope,
  well-known + posts manifests, withdrawal semantics.
- docs/agora-spec/GLASS-BOX-CONTRACT.md: the seven enforceable
  properties of the glass-box, each with detection mechanism.
- well-known/aeon-agora.json + aeon-agora-posts.json: reference
  manifests (withdrawn by default).
- skills/agora-{post,follow,react,quote,mute}/: per-instance skills.
  Sign + append + (PLACEHOLDER) cross-publisher delivery.
- aeon-agora/: new in-repo subproject (sibling to mcp-server etc.).
    - crawler/: Cloudflare Worker; signature-verifies posts;
      ingests to D1 timeline. 5/5 smoke tests pass.
    - pages/: Astro frontend (agora.beta.aeon.bot). Pure read.
      Routes: /, /p/[handle], /post/[id], /verify/[id]. Client-side
      WebCrypto re-verification.
- .github/workflows/glass-box.yml: CI enforces the seven properties
  on every PR (grep, structural, no-write-api jobs).

The glass-box CI is the binding contract — any PR that adds a write
endpoint, an admin route, or algorithmic ranking fails CI.

Tests: 12/12 passing on the glass-box spec.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Alternative runtime for Aeon skills, running ALONGSIDE GitHub
Actions. Per-skill `runtime: "workers" | "actions"` field in
aeon.yml selects which one executes a given skill. Skill prose is
unchanged across runtimes.

Why: removes the three pain points of the Actions runtime —
30-90s cold start, 5-15 min cron drift, sandbox quirks. Workers
gives sub-second cold start, second-accurate cron, full JS
runtime control.

Shipped (scaffold):
- workers-runtime/wrangler.jsonc: full bindings (KV, D1, R2,
  Durable Object, Workers AI). PLACEHOLDER IDs the operator
  replaces during activation.
- workers-runtime/package.json: Anthropic SDK + Octokit + wrangler.
- workers-runtime/src/index.ts: HTTP entry (`fetch`) + cron entry
  (`scheduled`) + `SkillRunner` Durable Object skeleton. The 21-step
  pipeline that mirrors .github/workflows/aeon.yml is documented
  inline as comments + function stubs; the DO returns 501 with
  an explanation pointing to runtime-cloudflare.md.
- workers-runtime/README.md: activation runbook + phase plan.

PLACEHOLDER (post-seal): the 21-step pipeline implementation
(multi-week work), the messages.yml dispatcher change, the dashboard
runtime toggle, the comparison harness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New non-blocking workflow at .github/workflows/lint.yml. Four jobs:

- skill-lint: runs the SKILL.md schema linter scaffolded in
  docs/contributor-dossier/_tests-scaffold/skill-lint.sh.
  Validates frontmatter shape, prose conventions, sandbox-note
  presence on every SKILL.md.
- index-coherence: runs `./index-skills --check` to ensure
  docs/skills-index.json is in sync with skills/.
- skill-discovery-smoke: runs the node:test suite for the
  skill-discovery layer (10 cases).
- actionlint: workflow-syntax check; continue-on-error so it
  doesn't block while the team reviews the signal.

Promote to a required check after the team validates the signal.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Append-only log of the 2026-05-26 sealed sprint that produced this
branch. Captures: punchlist (7/7 complete), what shipped per session,
operator decisions absorbed mid-sprint (Workers AI primary, federation
in-repo, agora.beta.aeon.bot, co-maintainer status), test status
(33/33 across 4 suites), blocker resolution, and the break-the-seal
summary.

The sprint log is the audit trail. Future Chapter Three sprints get
their own dated log in the same directory.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@imancipate
Copy link
Copy Markdown

Closed as out-of-scope — see triage comment above. The right venue is a GitHub issue.

@imancipate
Copy link
Copy Markdown

Triage: OUT-OF-SCOPE — touches .github/workflows/ (glass-box.yml, lint.yml) plus root binaries (index-skills, memory-query, skill-search, generate-skills-json), scripts/, mcp-server/, and a2a-server/, which external contributors cannot modify directly via PR.
For changes at this layer, please open an issue describing the goal and a maintainer will land the workflow/runtime pieces — the issue is the right venue. Flagging for @aaronjmars to take it from here; this first-touch triage layer can't close or land the change itself.

@aaronjmars
Copy link
Copy Markdown
Owner

Thanks for the enormous effort here, @Keeleran — there's clearly a lot of thought in the Chapter Three / Agora / federation work, and I don't want that to go to waste.

I'm going to close this one, though, echoing the triage note: it's out of scope as a single external PR.

  • It's ~78k additions across 112 files, which isn't reviewable as one change.
  • It touches the layers external contributors can't land directly via PR — .github/workflows/ (glass-box.yml, lint.yml), the root binaries (index-skills, memory-query, skill-search, generate-skills-json), scripts/, mcp-server/, and a2a-server/ — and it stands up entirely new subsystems (aeon-agora crawler, aeon-federation-registry) with their own package.json + CI that would run on every PR.

If you'd like to move pieces of this forward, the right venue is a GitHub issue per piece describing the goal — I'll land the workflow/runtime parts myself. Self-contained additions (a single skill, or docs) are very welcome as small, focused PRs. Closing for scope/shape reasons only — not a reflection on the work. 🙏

@aaronjmars aaronjmars closed this May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants