lab3120 Publishing Platform — Architecture (living)

Forming, not final. The operator named lab3120 as a mutating state. This doc captures the shared frame so the design stops living only in chat — claude design’s SDK work and the webmaster’s publish-pipeline work both hang off it. Update as the picture sharpens. Authored by Gor Hajus (webmaster) from the operator’s 2026-06-26 framing.

The one-liner

lab3120.earth functions as a publishing platform for ecosystem3120’s documentation — agent/system docs, a definitions wiki, a CC PDF library, position/white papers, and real guides — authored in Obsidian, backed by git, published read-only to the web. The Obsidian vault acts as the CMS; the web front end stays read-only (visitors read, never edit).

The model — three layers (operator’s words)

  1. Author locally — write in the lab3120 Obsidian vault. ~files and ~directories mark staging.
  2. Back up via remote — a git repo (lab3120@git) holds the durable copy. Off-machine recovery.
  3. Publish via the Obsidian surface — a build engine turns the vault into the static lab3120.earth site. ~-staged + tagged content filters up to the public site. No front-end editing.

Routing convention (prefix + tag)

  • Filename prefixes serve Obsidian-side hygiene + the eye: ~ = staging, _ = infra / unpublished, ! = an alternative that renders, . = hidden (Obsidian AND most build engines ignore it).
  • The publish gate rides frontmatter (publish: true + routing tags), NOT the filename — so a tree reorganization never silently un-publishes. “Judicious tagging routes” (operator). Use both.

Content classes (what flows through the pipe)

classexamplesnotes
Structured templated docsskills, agent profiles, sub-agent profiles, code releaseseach from a template; all sync to the repo
Shared thinking-formssplats, reflections, plansthe local forms, shared outward — valuable to others
Definitions / terms wikiglossary, concept noteseverything cross-linked, surfaced via lab3120
PDF library — “the stacks”public-domain / CC share-alike PDFsa different asset class: files + index, not markdown pipe
Standalone pagesposition papers, white paperslong-form, authored
Guidesreal, substantive guidesexplicitly NOT medium pablum
Agent bloggingagent-authored postsLATER stage; Bluesky + other-tool integration

The keystone — one publish engine

Everything above reduces to a single act: markdown-in-vault → rendered-page-out, gated by ~/tags. Get the engine right and the content classes become content, not seven separate builds.

  • Candidate: Quartz — built to publish an Obsidian vault. Native wikilinks (→ the wiki), frontmatter publish-flags (→ the routing gate), markdown (→ every doc form), and a graph view (the operator wants a graph, deferred to a claude-design loop). Maps near 1:1 onto the described model.
  • Alternative: custom build (Eleventy / Astro) — more control, more work.
  • Decision deferred — evaluate against the SDK + page design claude design produces.

Current state (verified 2026-06-26)

  • lab3120.earth — LIVE on Cloudflare Pages (project lab3120), a single hand-built index.html. NOT yet vault-fed. Carries a Cloudflare Web Analytics beacon.
  • analytics.lab3120.earth/<slug> — LIVE, a server-rendered dashboard (Pages project lab3120-analytics) reading the Web Analytics GraphQL feed behind an unguessable path.
  • Recovery — both pieces + a cloud-config map captured in github.com/artificer3120/lab3120-web.
  • The publish engine does not exist yet — today’s page reads from a code folder, not the vault. Standing up the engine = the gap between today and the model.

Open seams (named, not solved)

  1. Engine choice ↔ graph — Quartz ships the graph the operator wants; a custom build re-implements it. Couple the decision to the claude-design loop.
  2. Two halves, one handoff — the SDK + lab3120 pages claude design builds = the front-end skin; the publish engine = the pipe that fills it. Define the handoff (theme/template contract).
  3. PDF “stacks” as a side rail — served as files + an index, CC-licensed, alongside the markdown pipe, not through it.
  4. lab3120@git repo — likely the public-facing chassis (operator3120) since it shares docs openly; distinct from the private artificer3120/lab3120-web recovery repo.
  5. Templates — the structured-doc classes need authored templates (skill / agent-profile / sub-agent / code-release) before the pipe can enforce shape. The lab3120 vault has no TEMPLATES folder yet.
  6. Agent blogging + Bluesky — explicitly a later stage; park it.

What comes next (sequence, not commitment)

  • claude design: SDK now → lab3120 pages.
  • webmaster: when the operator gives the word — spike the publish engine (likely Quartz) against this vault, prove one ~-staged note routes through to a preview deploy, define the theme/template handoff.
  • then: author the doc templates, wire the PDF index, layer the wiki.