Skip to content

Commit ad53886

Browse files
Initial commit
0 parents  commit ad53886

23 files changed

Lines changed: 3895 additions & 0 deletions

.github/workflows/ci.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- project/aeo-registry
8+
pull_request:
9+
10+
jobs:
11+
test:
12+
runs-on: windows-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: actions/setup-node@v4
16+
with:
17+
node-version: "24"
18+
cache: "npm"
19+
- run: npm ci
20+
- run: npm run verify

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules/
2+
dist/
3+
screenshots/*.log

CHANGELOG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented here.
4+
5+
## [1.0.0] - 2026-05-15
6+
7+
### Released
8+
- Published **aeo-registry** as a public TypeScript and Express registry for manifest readiness, claim-surface review, and publisher portfolio posture.
9+
- Packaged the implementation, browser-rendered proof assets, validation flow, and docs into a repo that treats AEO inventory as an operating system concern instead of a folder of disconnected specs.
10+
- Clarified the core problem the project is addressing: once AEO programs scale, weak manifests stay live because nobody owns freshness, source coverage, or answer-surface readiness centrally.
11+
12+
### Why this mattered
13+
- Existing SEO and schema tooling helps teams publish assets, but it does not always give them a durable registry of what is actually safe to expose.
14+
- AEO teams need something closer to package governance: an index of manifests, claims, and publishers that can be reviewed before weak entries degrade trust.
15+
- This release turns that gap into a visible control-plane problem.
16+
17+
## [0.1.0] - 2026-02-27
18+
19+
### Shipped
20+
- Cut the first coherent internal version of the registry with manifest records, claim queues, and publisher summaries.
21+
- Anchored the system around freshness, source coverage, and answer-surface readiness instead of around simple file existence.
22+
- Established the route and payload shape used by the public version.
23+
24+
## [Prototype] - 2025-08-12
25+
26+
### Built
27+
- Built the first runnable prototype for indexing AEO manifests and scoring them by readiness.
28+
- Tested the concept against the kinds of failures that appear in scaling answer-engine programs: stale `llm.txt`, shallow citations, and uneven publisher hygiene.
29+
- Confirmed that a registry lens was more useful than another single-manifest validator.
30+
31+
## [Design Phase] - 2024-04-23
32+
33+
### Designed
34+
- Framed the system around operator visibility and publisher accountability rather than around individual authoring workflows.
35+
- Chose examples that made sense for infrastructure, SaaS, fintech, and vertical answer-surface programs.
36+
- Defined the output as something a content or AEO lead could review quickly.
37+
38+
## [Idea Origin] - 2023-06-28
39+
40+
### Observed
41+
- The original idea surfaced while looking at how answer-surface programs accumulate manifest sprawl without accumulating equal governance.
42+
- The recurring pattern was that manifest production was easy to start and difficult to keep coherent at scale.
43+
44+
## [Background Signals] - 2022-10-18
45+
46+
### Context
47+
- Earlier work around search, knowledge packaging, and evidence-backed publishing made one pattern obvious: if answer assets are not indexed and scored somewhere central, weak ones tend to remain live by default.
48+
- That pattern shaped the thinking behind this repo well before the public version existed.

README.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# AEO Registry
2+
3+
TypeScript and Express registry for **tracking AEO manifests, publisher readiness, claim surfaces, and citation-safe discovery posture**.
4+
5+
> **What this repo proves**
6+
>
7+
> AEO work gets much more durable when manifests are not just published, but indexed, reviewed, and held to a clear readiness bar for freshness, source coverage, and answer-surface integrity.
8+
9+
## Why this repo exists
10+
11+
Most AEO programs eventually end up with more manifests than they can reason about cleanly. One team publishes `llm.txt`. Another emits JSON-LD. A vertical site adds FAQ schema. A support team pushes answer-packaging metadata. Without a registry, those assets exist, but nobody has a single view of which ones are fresh, which ones are weakly sourced, and which ones should never have been exposed to answer engines in the first place.
12+
13+
`aeo-registry` turns that sprawl into an operator-friendly inventory. It tracks manifests by publisher, version, freshness, source coverage, and answer-surface footprint, then keeps the claims and portfolios that need review visible before they degrade trust or citation quality.
14+
15+
## Screenshots
16+
17+
![Overview](./screenshots/01-overview-proof.png)
18+
![Registry board](./screenshots/02-registry-proof.png)
19+
![Claim board](./screenshots/03-claims-proof.png)
20+
![Verification](./screenshots/04-verification-proof.png)
21+
22+
## What it includes
23+
24+
- Express app with HTML proof surfaces and JSON APIs
25+
- sample manifest inventory across AEO infrastructure, fintech, SaaS, and real estate
26+
- readiness scoring for freshness, source coverage, and answer-surface completeness
27+
- claim review queue for blocked and review-level surfaces
28+
- publisher portfolio posture for multi-manifest programs
29+
- real browser-rendered README proof assets captured from the running app
30+
- Vitest coverage plus demo and smoke validation scripts
31+
32+
## Local run
33+
34+
```powershell
35+
Set-Location "C:\Users\chaus\dev\repos\aeo-registry"
36+
npm install
37+
npm run dev
38+
```
39+
40+
Open:
41+
42+
- [http://127.0.0.1:5084/](http://127.0.0.1:5084/)
43+
- [http://127.0.0.1:5084/registry](http://127.0.0.1:5084/registry)
44+
- [http://127.0.0.1:5084/claims](http://127.0.0.1:5084/claims)
45+
- [http://127.0.0.1:5084/publishers](http://127.0.0.1:5084/publishers)
46+
- [http://127.0.0.1:5084/verification](http://127.0.0.1:5084/verification)
47+
- [http://127.0.0.1:5084/docs](http://127.0.0.1:5084/docs)
48+
49+
## Validation
50+
51+
```powershell
52+
npm run verify
53+
npm run render:assets
54+
```
55+
56+
## API routes
57+
58+
- `GET /api/dashboard/summary`
59+
- `GET /api/manifests`
60+
- `GET /api/claims`
61+
- `GET /api/publishers`
62+
- `GET /api/sample`
63+
64+
## Repo layout
65+
66+
```text
67+
src/
68+
data/
69+
services/
70+
docs/
71+
scripts/
72+
screenshots/
73+
```

docs/ORIGIN.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Why We Built This
2+
3+
**aeo-registry** came from a pattern that shows up as soon as answer-engine work matures past a handful of experiments: the number of manifests grows faster than the team’s ability to govern them. One property has an `llm.txt`. Another publishes JSON-LD packages. A support site ships FAQ schema. A product catalog adds entity metadata. Over time, those assets start behaving like packages in a software supply chain, but most teams still manage them more like isolated files or one-off launch tasks.
4+
5+
That becomes a real operating problem. A manifest can still exist and still be weak. A claim can still be extractable and still be under-cited. A publisher can still be shipping answer-surface metadata even while its freshness posture is drifting out of bounds. Traditional SEO tooling helps with parts of the surface. Schema validators help with syntax. Linting helps a single manifest at a time. What often remains missing is a **registry view** that answers the broader program-level questions:
6+
7+
- which manifests are actually ready to be trusted
8+
- which claim surfaces are getting stale
9+
- which publishers are carrying the most readiness risk
10+
- which entries should be blocked before they degrade answer quality
11+
12+
We built **aeo-registry** to make that operating layer visible. The repo is intentionally centered on portfolio posture rather than on authoring mechanics. It assumes that manifests already exist or can be produced elsewhere. The real challenge is deciding whether those manifests are fresh enough, sourced enough, and coherent enough to stay live across answer surfaces.
13+
14+
Existing tools missed the mark for understandable reasons. Manifest validators are usually local and file-specific. Search tooling often focuses on performance after publication. Content systems focus on authoring, not package governance. The missing layer is the one that treats manifests as a managed inventory with statuses, queues, ownership, and release discipline.
15+
16+
That shaped the design philosophy:
17+
18+
- **operator-first**
19+
so the registry feels like a review queue, not a passive index
20+
- **publisher-legible**
21+
so a content or AEO lead can immediately see portfolio pressure
22+
- **claim-aware**
23+
so risky answer surfaces stay visible, not hidden inside aggregate scores
24+
- **readiness-driven**
25+
so manifests have to earn public exposure instead of getting it by default
26+
27+
The current version uses sample registry data, but the underlying point is practical: answer-engine infrastructure needs indexing and governance, not just creation. Next on the roadmap are manifest diff views, exportable readiness policies, and stronger linkage into the rest of the Kinetic Gain AEO stack.

docs/architecture.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Architecture
2+
3+
## Overview
4+
5+
`aeo-registry` is a TypeScript and Express application that treats AEO manifests as managed registry entries instead of as disconnected files.
6+
7+
The repo models three layers:
8+
9+
1. **manifest inventory**
10+
- publisher, version, canonical URL, and vertical
11+
- freshness, source coverage, entity count, and answer-surface coverage
12+
- readiness state across `ready`, `review`, and `blocked`
13+
14+
2. **claim review**
15+
- individual claim surfaces that can become stale or under-cited
16+
- source-count and freshness pressure
17+
- next-action guidance for registry operators
18+
19+
3. **publisher posture**
20+
- portfolio summaries for multi-manifest programs
21+
- blocked counts, average source coverage, and freshness risk
22+
- a quick view of which publisher programs need attention first
23+
24+
## Runtime shape
25+
26+
- `src/data/sampleRegistry.ts`
27+
- sample manifest, claim, and publisher state
28+
- `src/services/registryService.ts`
29+
- summary, sorting, and payload composition logic
30+
- `src/services/render.ts`
31+
- HTML control surfaces for the registry
32+
- `src/app.ts`
33+
- Express routes for HTML and JSON outputs
34+
35+
## Primary routes
36+
37+
- `/`
38+
- overview and lead recommendation
39+
- `/registry`
40+
- manifest inventory board
41+
- `/claims`
42+
- claim-surface queue
43+
- `/publishers`
44+
- publisher portfolio posture
45+
- `/verification`
46+
- top-line proof summary
47+
- `/docs`
48+
- route and payload map
49+
50+
## Validation approach
51+
52+
- `vitest`
53+
- verifies the registry summary and ordering logic
54+
- `scripts/run_demo.ts`
55+
- renders a deterministic JSON snapshot of the current registry state
56+
- `scripts/smoke_check.ts`
57+
- boots the app and confirms that core HTML and JSON routes respond correctly
58+
- `scripts/render_readme_assets.ps1`
59+
- captures real browser screenshots from the running app for README proof

0 commit comments

Comments
 (0)