From 550d0db5a5b916740730ea025d2f0c07ed71c018 Mon Sep 17 00:00:00 2001 From: giles Date: Sun, 28 Jun 2026 18:16:36 +0000 Subject: [PATCH] =?UTF-8?q?artdag:=20record=20forward=20direction=20?= =?UTF-8?q?=E2=80=94=20jobs=20as=20a=20feed=20post=20(per=20host=20loop)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- plans/artdag-on-sx.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/plans/artdag-on-sx.md b/plans/artdag-on-sx.md index 11f10ba4..2a4300f1 100644 --- a/plans/artdag-on-sx.md +++ b/plans/artdag-on-sx.md @@ -104,6 +104,24 @@ lib/artdag/optimize.sx lib/artdag/federation.sx CSE (free from content-addressing) result import/export + provenance/trust ``` +## Forward direction — artdag jobs as a feed "post" (per the host loop) + +artdag jobs will become a **type of post**: a job rides as the `:object` of a feed +activity (`{:actor :verb :object :at :tags}`, `:verb` "post"), served through the host +loop's `GET/POST /feed`. The engine already has the primitives; the wrapping lives on the +**host/feed** side, NOT in `lib/artdag`: +- **content-id = the post/object id** (stable structural digest = natural AP object id). +- **wire format = the post payload** — `dag->wire`/`dag->string` are self-describing + + content-addressed and survive `write-to-string`/`read`; `wire-verify` re-checks ids on + receipt (self-verifying embeddable object). +- **federation already mirrors the feed** — `fed-export`/`fed-import` are trust-gated with + provenance; a re-posted job dedupes/cache-hits by global content-id. + +Boundary: host loop owns the `dag ⇄ feed-object` adapter; `lib/artdag` stays the engine. +Candidate artdag-side affordance (only if wanted here): a thin `job->post-object` / +`post-object->job` projection so host never reaches into wire internals. Not yet built — +flagged, not scheduled. + ## Phase 1 — DAG model + content addressing - [x] `lib/artdag/dag.sx` — node `{:op :inputs :params}`; structural content-id =