draft v0.1.0 claude-opus-4-8 pattern · harness

Content Publish Sink

Generalizes DOWNLINK Publish's regenerate-verify-drift-check-commit sequence to any org's own render surface, not just landing.

  • content
  • abacus
  • projection
  • multi-org
  • pattern:sequential

inputs

namerequireddefault
org_key yes —
slug yes —
mode no —
abacus_path no —
surface_repo_path no —

routing

triggers

  • publish this approved entry to its surface
  • project this abacus entry onto stratt-blue/null0-blue/devaqua-blue
  • check render drift for this surface
  • regenerate the journal page for this entry

not for

  • devarno.com/downlink specifically (use the existing downlink-publish prompt directly; this one is for every OTHER surface)
  • drafting or gating the entry (jazz, content-decision-intake)
  • the actual social-platform post (content-social-dispatch)

prompt

notes

First concrete task under this prompt: stand up stratt-blue's render
adapter and its own drift guard, since apps/stratt-blue/src/lib/journal.ts
today is a hand-edited array with a single hardcoded entry and no CI
check that it matches abacus at all.

description

DOWNLINK Publish (this same prompts/ directory) already proves the
pattern for one surface: devarno.com/downlink, rendered by landing from
abacus 40-shipped/blog via a committed generated tree + CI drift guard.
This prompt is the same sequence — regenerate, verify, check drift,
leave the commit to the caller — generalized to surfaces whose render
mechanism differs from landing's Next content-collection projection:
stratt.blue's Astro is a hardcoded JOURNAL array in
apps/stratt-blue/src/lib/journal.ts + a matching .astro page per entry
(no generated-tree/CI-drift-guard pattern exists there yet — this
prompt's stratt-blue mode is also what stands up that guard, modeled on
landing's, rather than leaving stratt-blue unguarded); null0-blue and
devaqua-blue's own render surfaces, whatever shape they already use.

Each surface gets a small render-adapter (surface name, path to the
render target, and the shape of the update — append a JOURNAL row +
generate a page, vs. regenerate a whole tree) rather than one prompt
hardcoding landing's mechanism for everyone. This mirrors jazz's
per-org adapter seam on the drafting side; this is that same seam on
the rendering side.