Skip to content

blog: add oh.computer blog with Introducing post and reviewed articles - #188

Merged
0thernet merged 3 commits into
mainfrom
claude/seo-blog-20260924
Sep 25, 2026
Merged

0thernet merged 3 commits into
mainfrom
claude/seo-blog-20260924

Conversation

@0thernet

Copy link
Copy Markdown
Member

Summary

  • Adds /blog (index), /blog/[slug] (3 posts, statically prerendered), per-post OG images, and an Atom feed at /blog/feed.xml, built with design-kit v0.17.0 (MarketingArticle, ArticleByline, ArticleProvenance, ArticleSources, ArticleIndex, assertArticleAdmissions) and web-discovery v0.8.0 (createAtomFeed, articleJsonLd BlogPosting, blogJsonLd, createBlogSitemapPaths).
  • Typed admission records live in site/app/blog/admissions.ts. The review is a disclosed AI editorial review (reviewerType: "ai", humanReview: null). Every post shows the byline "Hraness" and the note "Drafted with AI from the source code and reviewed by Claude Opus 5.5 (claude-opus-5-5) editorial review."
  • Indexable posts: /blog/introducing-oh and /blog/oh-rust-typescript-parity.
  • Quarantined post: /blog/built-on-oh is noindex and stays out of the sitemap, feed, index and llms.txt. Its draft was BLOCKED, the portfolio does not register its relations yet, and the linked consumer posts are not live.
  • public/sitemap.xml is replaced by a generated app/sitemap.ts. Blog entries carry lastmod.
  • The blog is linked from the homepage nav, the spec header, the footer and llms.txt. The canonical hraness-articles block is added to AGENTS.md. STYLE.md already carries the matching rule, so it is unchanged.

For reviewers

  • Identifier policy change: site/tests/source.test.ts removes "sponge" from the prohibited public identifiers. The README already names Sponge publicly as a product that builds on Oh, and the posts link to sponge.computer. Please confirm.
  • Content correction: the Sponge sentence in introducing-oh now uses the fact-checked wording from built-on-oh (working memory in a session-scoped server-side Oh store). The draft's earlier sentence about "research agents / reviewed knowledge" was flagged as an overclaim.
  • relatedFor("oh-computer") returns [] in the v0.17.0 portfolio. The related-products block renders only when relations exist.

Checks

  • site: bun run test 40 pass; bun run lint 0 errors (26 warnings, all in the existing public/theme-bootstrap.js); bun run typecheck clean; bun run build passes, and the postbuild runtime tests pass 2/2, including new built-site blog checks for robots, feed, sitemap, OG image and the 404 for an unknown slug.
  • The spec mirror matches.
  • bun run test:browser fails locally. A clean origin/main worktree fails the same flaky way: a scrollY === 0 timeout in one run, and the "SDK results and limitations" focus-obscured assertion in another. These failures were already present and are not caused by this branch.
  • I left the root bun run check to CI.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
oh-beam-reader-runtime Ready Ready Preview Sep 25, 2026 2:27am UTC
oh-computer Ready Ready Preview Sep 25, 2026 2:27am UTC
oh-vercel-wasm Ready Ready Preview Sep 25, 2026 2:27am UTC

Request Review

0thernet and others added 3 commits September 24, 2026 22:25
Adds /blog with design-kit v0.17.0 article components and web-discovery
v0.8.0 discovery: typed admission records validated in tests, Hraness
byline and provenance note on every post, BlogPosting and Blog JSON-LD,
an Atom feed at /blog/feed.xml, per-post OG images, and a generated
sitemap with lastmod for indexable posts only. built-on-oh is quarantined
(noindex, out of sitemap, feed, index, and llms.txt). Links the blog from
the homepage nav, spec header, footer, and llms.txt, and adds the
canonical hraness-articles block to AGENTS.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Introducing Oh and Built on Oh linked how-sponge-uses-oh and
how-wordcell-uses-oh, which both return 404. The drafts say to link
them only once they are live, and until then to link each product's
home page. The blog link test no longer allows those URLs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The root check runs site/tests/source.test.ts without installing site
dependencies, so importing app/sitemap.ts failed to resolve
@hraness/web-discovery in CI. The source test now reads the sitemap
source, and the generated-sitemap checks for /spec and the llms.txt
blog URLs move to tests/blog.test.tsx.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@0thernet
0thernet force-pushed the claude/seo-blog-20260924 branch from 3a4c528 to 75c8ab1 Compare September 25, 2026 02:25
@0thernet
0thernet merged commit a857e4a into main Sep 25, 2026
18 checks passed
@0thernet
0thernet deleted the claude/seo-blog-20260924 branch September 25, 2026 02:44
0thernet added a commit that referenced this pull request Sep 25, 2026
Applies the canonical Hraness product-messaging record for `oh` (jungle
`a9988b903`, reviewedOn 2026-09-24) to this repository's copy surfaces.

## Surfaces changed

- `site/app/layout.tsx`: `<title>` = `Oh` + tagline ("Oh: Agent memory
that shows its work."), meta/OG/Twitter description = canonical `meta`,
OG image alt to match.
- `site/app/opengraph-image.tsx`: share card is `Oh` (eyebrow) over the
tagline; description = `meta`; alt matches the page title.
- `site/app/page.tsx`: hero eyebrow = category ("Agent memory
framework"), heading = `hero.heading`, summary = `hero.summary`, actions
= `hero.primaryAction`/`hero.secondaryAction` ("Install Oh" / "See the
memory model" → `#model`), hero example line = `short`, JSON-LD
description = `meta`, and the "Who made it?" answer now uses the org's
own public line ("Hraness builds tools for agents and humans.") instead
of the drifted org blurb.
- `site/app/site-footer.tsx`: content footer blurb = `meta` (was "for
researchers and the agents working beside them").
- `site/public/llms.txt`: summary = `meta`; adds the `long` tier as the
introduction.
- `site/app/blog/articles.ts`: `ohSearchSite` title/description and the
`introducing-oh` dek aligned to the canonical lines (the dek is now
`meta`).
- `site/app/blog/content/introducing-oh.tsx`: dropped the sentence
citing "the design every Hraness project shares", which this change
removes from the README.
- `site/app/benchmark-comparison.tsx`: translated internal vocabulary
("passed the specified numerical development gate" → "met the specified
numerical target for this development check"); no claim or number
changed.
- `README.md`: H1 = `# Oh`; first paragraph = `medium`; status line from
the release record (v0.12.0); dropped the overstated "the design every
Hraness project shares" claim flagged in the audit's facts_to_verify.
- `package.json`: description = `meta`; added `agent-memory`, `memory`,
`ai-agents`, `provenance`, `typescript` keywords.
- `src/cli.ts`: help banner reads `oh <version> · Agent memory that
shows its work.`; `src/cli-intro.ts`: TTY tagline = tagline (replaces
"Local memory for your agents.").
- `skills/oh/SKILL.md` + `skills/oh/agents/openai.yaml`:
description/short_description/default_prompt aligned to the canonical
memory positioning.
- `src/support-profile.ts`: value proposition now names Oh as the
open-source memory framework for agents.
- `dist/cli.js`, `dist/support-profile.d.ts`: regenerated through
`scripts/build-cli.ts` and `build:types` (the only affected artifacts;
the full `bun run build` reproduces the rest of `dist/`
byte-identically).
- Copy-pinned tests updated to the canonical lines
(`tests/public-surface.test.ts`, `tests/marketing-surface.test.ts`,
`tests/site-surface.test.ts`, `site/tests/home.test.tsx`,
`site/tests/source.test.ts`).

## Open-PR overlap

PR #188 (seo-blog) merged into main (`a857e4a`) before this branch was
cut, so its blog surfaces are included here: the search-site
title/description and `introducing-oh` dek are brought onto the
canonical lines in this same change. No overlap remains outstanding.

## Superseded authored lines replaced

- "Oh: memory your agents can trace" (title, OG alt, README H1 em-dash
line)
- "Memory your agents can trace" (hero heading, OG title)
- "Local memory for your agents." (CLI TTY intro)
- The two hand-typed "open-source memory framework for agents:
source-backed records, local retrieval, graph proofs…" description
variants (layout, OG image, llms.txt, search site, package.json)
- "Oh is open source for researchers and the agents working beside
them." (content footer)
- "Operate local agentic research records" (skill UI short description)

## Gate

Full `bun run check` steps run locally on this tree:
`check:cost-surfaces`, `rust:build:artifacts`, `typecheck`,
`typecheck:scripts`, `check:effect`, `bun run test` (2572 tests, 0
fail), `bun run build` (reproducible `dist/`), `test:types:node`,
`test:node`, `test:node-projection`, `test:research-package`,
`test:package`. Site: `bun run test` (40 tests, 0 fail), `lint`,
`typecheck`.

Co-authored-by: 0thernet <894119+0thernet@users.noreply.github.com>

This branch was successfully deployed

3 active deployments
Preview – oh-vercel-wasm — 75c8ab17 Deployed Sep 25, 2026 by vercel[bot]
Preview – oh-beam-reader-runtime — 75c8ab17 Deployed Sep 25, 2026 by vercel[bot]
Preview – oh-computer — 75c8ab17 Deployed Sep 25, 2026 by vercel[bot]
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.

1 participant