From 49ad216f7ca43658343a8938e5dee32c5e20d781 Mon Sep 17 00:00:00 2001 From: 0thernet <894119+0thernet@users.noreply.github.com> Date: Mon, 5 Oct 2026 19:42:52 -0400 Subject: [PATCH] Drop work-in-progress products from the Built on ALGAL hub Clankdar and SlopCamera moved to work-in-progress in the portfolio registry, so the hub stops linking their guides until they ship. The admission, sources, and rendered copy match the two live integrations. --- site/blog-posts.ts | 18 +++--------------- site/blog.test.ts | 6 +++--- site/blog/built-on-algal.md | 6 +++--- site/blog/introducing-algal.md | 2 +- site/blog/programs-that-wait.md | 2 +- site/blog/receipts-fossil-record.md | 2 +- ...elf-evolving-software-selection-boundary.md | 2 +- .../software-that-accumulates-competence.md | 2 +- site/blog/typescript-rust-parity.md | 2 +- 9 files changed, 15 insertions(+), 27 deletions(-) diff --git a/site/blog-posts.ts b/site/blog-posts.ts index 68e35263..af203bb7 100644 --- a/site/blog-posts.ts +++ b/site/blog-posts.ts @@ -209,7 +209,7 @@ export const BLOG_ADMISSIONS: readonly ArticleAdmission[] = [ "href": "/blog/built-on-algal/", "lifecycle": "indexable", "readerJob": "Find which Hraness products run on ALGAL and open the post that shows how each one uses it.", - "nonObviousAnswer": "ALGAL is in use outside its own repo: TextButler gates per-contact reply plans with it, Excalibur (xcb) replays task history through it, Clankdar computes puzzle answers with its pinned evaluator, and SlopCamera bakes character behavior as tool-free organisms.", + "nonObviousAnswer": "ALGAL is in use outside its own repo: TextButler gates per-contact reply plans with it and Excalibur (xcb) replays task history through it.", "originalContribution": "An index of registered relations; each entry is the relation's reviewed sentence and one link.", "hostFit": "The provider hub for ALGAL, on ALGAL's own site.", "nearestUrls": [ @@ -243,20 +243,10 @@ export const BLOG_ADMISSIONS: readonly ArticleAdmission[] = [ "title": "Excalibur (xcb) reflexes", "url": "https://github.com/hraness/xcb/blob/6437bcb844017e74b3e3930ff5c6076ea55c5f06/docs/reflexes.md", "checkedOn": "2026-09-24" - }, - { - "title": "Clankdar evaluator section", - "url": "https://github.com/hraness/clankdar/blob/664d64e4ce4c429ee999f914d054facf6dcbb8d9/README.md", - "checkedOn": "2026-09-24" - }, - { - "title": "SlopCamera behavior bake", - "url": "https://github.com/hraness/slopcamera/blob/7e7027521f134aaaaa8404efebdc5bac24be6252/src/spatial-scene/behavior-bake.ts", - "checkedOn": "2026-09-24" } ], "observations": [ - "The rendered hub contains one entry for each live registered consumer: TextButler, Excalibur (xcb), Clankdar and SlopCamera. ALGAL consuming another product is excluded.", + "The rendered hub contains one entry for each live registered consumer: TextButler and Excalibur (xcb). ALGAL consuming another product is excluded.", "These integrations divide into full runtime embedding, expression-only evaluation and effect-free behavior baking; sharing a dependency does not imply the same execution model." ], "scores": { @@ -282,7 +272,7 @@ export const BLOG_ADMISSIONS: readonly ArticleAdmission[] = [ "The @hraness/design-kit/portfolio subpath regenerating with ALGAL relations", "Any linked 'How uses ALGAL' post going live, moving or being archived", "An ALGAL release or status change in site/copy.ts", - "A rename of ALGAL or of TextButler, Excalibur (xcb), Clankdar or SlopCamera" + "A rename of ALGAL or of TextButler or Excalibur (xcb)" ] }, { @@ -559,6 +549,4 @@ export const PENDING_CROSS_HOST_LINKS: ReadonlySet = new Set([]); export const ALGAL_USES_POSTS: Readonly>> = { "message-like-me": { url: "https://textbutler.app/blog/how-textbutler-uses-algal", live: true }, xcb: { url: "https://xcb.sh/blog/how-xcb-uses-algal", live: true }, - clankdar: { url: "https://clankdar.com/blog/how-clankdar-uses-algal", live: true }, - slopcamera: { url: "https://slopcamera.com/blog/how-slopcamera-uses-algal", live: true }, }; diff --git a/site/blog.test.ts b/site/blog.test.ts index bf90a17d..22a58927 100644 --- a/site/blog.test.ts +++ b/site/blog.test.ts @@ -55,7 +55,7 @@ test("only indexable posts reach the index, feed, sitemap, and llms.txt", () => const feed = blogAtomFeed(posts); const llms = blogLlmsList(posts); const sitemap = blogSitemapEntries(posts); - expect(sitemap).toEqual(["/blog/", ...indexable].map(path => ({ path, lastModified: "2026-10-01" }))); + expect(sitemap).toEqual(["/blog/", ...indexable].map(path => ({ path, lastModified: "2026-10-05" }))); for (const post of posts) { const listed = post.indexable; expect(index.includes(`href="${post.path}"`)).toBe(listed); @@ -66,10 +66,10 @@ test("only indexable posts reach the index, feed, sitemap, and llms.txt", () => test("reading pages hide dates while discovery records accurate revisions", () => { for (const post of posts) { - expect(post.updated).toBe("2026-10-01"); + expect(post.updated).toBe("2026-10-05"); expect(renderPostArticle(post)).not.toContain("Checked "); - expect(JSON.stringify(postJsonLd(post))).toContain('"dateModified":"2026-10-01T00:00:00.000Z"'); + expect(JSON.stringify(postJsonLd(post))).toContain('"dateModified":"2026-10-05T00:00:00.000Z"'); } expect(renderBlogIndex(posts)).not.toContain("