From 0b90aa9a56c65dc36d38ed1d955aecf29eea299a Mon Sep 17 00:00:00 2001 From: agentfactory Date: Mon, 3 Aug 2026 23:25:37 +0000 Subject: [PATCH] marketing-cycle af-50cdad6b: cycle-2 close-out state (ledger, report, log, CHANGELOG v0.2.0) Post-publish state for cycle-2 (Tier A PR #95 already merged; committed mode = state must survive the container, so it rides this state branch): - announced-ledger.md: Medium + LinkedIn + v0.2.0 rows; untold backlog refreshed. - cycle-af-50cdad6b-report.md: shipped / published / skipped / operator-clicks / next-3 / recrawl check. - cycle-af-50cdad6b-log.md: PHASE-6 verification (subtitle fix applied + re-verified) PASS. - cycle-af-50cdad6b-publish-checklist.md: recorded live Medium + LinkedIn URLs. - CHANGELOG.md: retitle [Unreleased] -> v0.2.0 (2026-08-03), now that the release is cut. Co-Authored-By: Claude Opus 4.8 Co-authored-by: agentfactory-cli <293373236+agentfactory-cli@users.noreply.github.com> --- .marketing/announced-ledger.md | 19 +++-- .marketing/cycle-af-50cdad6b-log.md | 30 +++++++ .../cycle-af-50cdad6b-publish-checklist.md | 53 +++++++++++++ .marketing/cycle-af-50cdad6b-report.md | 78 +++++++++++++++++++ CHANGELOG.md | 4 +- 5 files changed, 175 insertions(+), 9 deletions(-) create mode 100644 .marketing/cycle-af-50cdad6b-publish-checklist.md create mode 100644 .marketing/cycle-af-50cdad6b-report.md diff --git a/.marketing/announced-ledger.md b/.marketing/announced-ledger.md index 7356313..6dbd8a2 100644 --- a/.marketing/announced-ledger.md +++ b/.marketing/announced-ledger.md @@ -8,11 +8,16 @@ history but absent here are the untold backlog. | agentfactory launch: formulas, SKILL.md→agent pipeline, crash/compression recovery, inter-agent mail, fidelity gates | Medium article "95% reliable agents give you 86% reliable workflows" | 2026-07-11 | https://medium.com/@glennstempeck/95-reliable-agents-give-you-86-reliable-workflows-b264170eb66c | | Same launch story, short form (SKILL.md→agents, formula separation, docker factory floor) | LinkedIn post (Glenn's hook) | 2026-07-11 | (post URL not captured — lnkd.in shortlink used) | | v0.1.0 release: 19 formulas, web console, dispatch pipeline, themed CHANGELOG | GitHub release + README landing page | 2026-07-11 | https://github.com/stempeck/agentfactory/releases/tag/v0.1.0 | +| agentfactory web console + Run telemetry (observability: the Floor view, per-step timing + per-run token/cost, honest degradation banner) | Medium article "I run a factory of AI agents. Here's the window into it." | 2026-08-03 | https://medium.com/@glennstempeck/i-run-a-factory-of-ai-agents-heres-the-window-into-it-ad0321bfce9f | +| Same story, short form (web console = the control room; telemetry; continuous improvement loop) | LinkedIn post (Glenn's edited short version) | 2026-08-03 | https://www.linkedin.com/posts/glenn-stempeck_i-run-a-factory-of-ai-agents-heres-the-share-7490182070434951168-Jwbi/ | +| v0.2.0 release: Run telemetry, multi-provider agents (OpenAI via gateway + gpt-* formulas), operator-only factory teardown, reliable improvement self-edits, web console Telemetry view, +5 formulas (24 total), +7 skills documented (10 total) | GitHub release + README/CHANGELOG refresh (PR #95) | 2026-08-03 | https://github.com/stempeck/agentfactory/releases/tag/v0.2.0 | -## Untold backlog (from cycle-1 audit, top candidates) -- Web console: browser formula authoring, floor view, operator mail (#72, #81, #83) -- Fable agent family: fable-implement / fable-increment / fable-review (#83) -- Autonomous dispatch: label matching, issue→PR handoff, cycle locking (#38, #79) -- Self-improving agents / improvement hook (#83) -- Per-agent model selection (#81) -- Marketing-cycle itself (the dogfooding story — agent that markets its own repo) +## Untold backlog (updated cycle-2, top candidates) +Now told (cycle-2): web console (Floor view) + telemetry, multi-provider agents, operator-only +teardown, self-improving agents (mentioned). Still untold: +- Fable agent family: fable-implement / fable-increment / fable-review / fable-secure (#83) — named in the formula table only, never a story +- Autonomous dispatch pipeline: label matching, issue→PR handoff, cycle locking, phase advancement (#38, #79) +- Per-agent model selection + in-session gate continuation (`af done --phase-complete --gate`) (#81) +- Browser formula authoring in the web console (#83) — mentioned in the cycle-2 article's tour, never its own story +- Marketing-cycle itself (the dogfooding story — an agent that markets its own repo; surfaced obliquely in the cycle-2 article but never told head-on) +- Machine-readable JSON contracts (`af agents/dispatch/formula ... --json`), `af handoff`, `af watchdog` diff --git a/.marketing/cycle-af-50cdad6b-log.md b/.marketing/cycle-af-50cdad6b-log.md index 4e39761..a184b98 100644 --- a/.marketing/cycle-af-50cdad6b-log.md +++ b/.marketing/cycle-af-50cdad6b-log.md @@ -136,3 +136,33 @@ Verified cycle outputs against the approved runbook (the standing contract). No deviations. SELF-VERIFY VERDICT: PASS + +## PHASE-6 — Verify every published page + +Two published URLs (Medium, LinkedIn). Medium: full-content fetch + screenshot (got past the +Cloudflare challenge on retry). LinkedIn: public fetch (its dynamic/gated render defeats headless +screenshot — degraded mode noted; the source was plain text, so the raw-markdown failure class +does not apply the same way). + +Per-URL checklist: + +**Medium** — https://medium.com/@glennstempeck/i-run-a-factory-of-ai-agents-heres-the-window-into-it-ad0321bfce9f +1. Literal `##`/`**`/backticks/raw `[text](url)`? **none** — `quickdocker.sh --web` + renders as inline code; em-dashes and prose render cleanly. +2. Missing/duplicated/placeholder images, stray alt-text? **none** — both screenshots (Floor, + Telemetry) render; 2 content images confirmed by fetch + screenshot. +3. Subtitle as body paragraph / stray leading `# `? **none (after fix)** — FINDING on first pass: + the subtitle sentence was sitting as the first body paragraph (deck field empty). Exact fix + posted to #96; operator applied it. Re-screenshot confirms the subtitle now renders as the grey + deck directly under the title (above the byline) and is no longer duplicated in the body; the + body starts with the question hook. (Operator also reworded the opening at publish — his + canonical edit.) +4. Repo checks: `gh repo view --json homepageUrl` = the article URL; topics include claude-code, + ai-agents, multi-agent-systems, agentic-ai; `topic:claude-code` search lists stempeck/agentfactory. + **all pass.** + +**LinkedIn** — https://www.linkedin.com/posts/glenn-stempeck_...-7490182070434951168-Jwbi/ +1-3. Public post readable; plain text, no literal markdown; no images-broken/subtitle concerns + (short-form plain-text post). Degraded verification (public fetch only) noted. **none.** + +PHASE-6 VERDICT: PASS diff --git a/.marketing/cycle-af-50cdad6b-publish-checklist.md b/.marketing/cycle-af-50cdad6b-publish-checklist.md new file mode 100644 index 0000000..0ac4cb0 --- /dev/null +++ b/.marketing/cycle-af-50cdad6b-publish-checklist.md @@ -0,0 +1,53 @@ +# Publish checklist — cycle-af-50cdad6b (flagship: web console + telemetry) + +Tier B is yours to publish — I prepped the mechanics; you click. **Order matters:** the LinkedIn +post links to the Medium article, so Medium goes first. Record each URL in the form at the bottom +(or write SKIP). When you record the Medium URL I'll point the repo homepage at it and verify +every page. + +Assets (all in `.marketing/`): `cycle-af-50cdad6b-paste.html` (Medium rich-text vehicle), +`cycle-af-50cdad6b-console-floor-diagram.png`, `cycle-af-50cdad6b-telemetry-diagram.png`, +`cycle-af-50cdad6b-medium.md`, `cycle-af-50cdad6b-linkedin.md`. + +## 1. Medium (first) + +1. New story. **Title field:** `I run a factory of AI agents. Here's the window into it.` +2. **Subtitle field** (the small-T line under the title — it's also Google's meta description): + `The agentfactory web console - a loopback control room for your Claude Code agents - and the telemetry view I just added, so you can finally SEE where an agent's time and tokens go` +3. **Body:** open `cycle-af-50cdad6b-paste.html` in a browser. Ignore the yellow instruction box. + Select from the first paragraph ("Here's a thing nobody tells you…") through + "Learn it, Live it, Share it!", copy, and paste over Medium's story body. Medium ignores pasted + markdown, which is why we use this rich-text file instead of the `.md`. +4. **Verify the two images survived** the paste (Floor view, then Telemetry view). If an image + didn't come through, drag the PNG in at its `[SCREENSHOT]` spot. +5. **5 topics** (the proven mix — 2 precise + 1 giant + 2 professional): + `AI Agents`, `Claude`, `Artificial Intelligence`, `Software Engineering`, `Agentic AI`. +6. Skim for strays: no leading `# `, no literal `##`/`**`, no alt-text sitting as a caption, the + subtitle is in the subtitle field (not a first body paragraph). +7. Publish → copy the URL into the form below. + +## 2. Repo homepage (after the Medium URL is recorded) + +Leave this to me: once you record the Medium URL, I validate it against the runbook's homepage +allowlist (`https://medium.com`) and run `gh repo edit --homepage `. No action from you. + +## 3. LinkedIn (after Medium is live) + +1. Open `cycle-af-50cdad6b-linkedin.md` and copy the plain text between the `---` lines + (PLAIN TEXT — LinkedIn renders no markdown). +2. In the last line, replace `` + with the real Medium URL from step 1. (`Get it:` already points at the repo.) +3. Attach the two screenshots (Floor view + Telemetry view) as images on the post. +4. Post → copy the URL into the form below. + +## Publish record (fill this in — this is what resolves the gate) + +``` +- Medium URL: https://medium.com/@glennstempeck/i-run-a-factory-of-ai-agents-heres-the-window-into-it-ad0321bfce9f +- LinkedIn URL: https://www.linkedin.com/posts/glenn-stempeck_i-run-a-factory-of-ai-agents-heres-the-share-7490182070434951168-Jwbi/ +- Notes: Both published by operator 2026-08-03 (recorded via issue #96). Repo homepage updated + to the Medium URL (allowlist-validated). Gate `published` resolved. +``` + +Once the URLs are here (or SKIP), I update the homepage, then verify every published page +(fetch + the checks in Phase 6) and post any exact "search for / replace with" fixes back here. diff --git a/.marketing/cycle-af-50cdad6b-report.md b/.marketing/cycle-af-50cdad6b-report.md new file mode 100644 index 0000000..75e54c5 --- /dev/null +++ b/.marketing/cycle-af-50cdad6b-report.md @@ -0,0 +1,78 @@ +# Cycle-2 Report — stempeck/agentfactory (bead af-50cdad6b) + +*2026-08-03. Flagship: the agentfactory web console + its new Telemetry view. Boundary: v0.1.0.* + +## Summary + +Audited development since v0.1.0, found the #92 feature wave (telemetry, multi-provider agents, +operator-only teardown, self-improvement) largely untold and three stale README claims. Proposed +telemetry as the flagship; the operator approved, then on draft review reframed the story around +the **web console** (the human's control room) with telemetry as the exciting new part, and +asked for broader feature coverage and screenshots. Shipped a Tier A docs refresh + v0.2.0 +release, and the operator published a Medium article and LinkedIn post. Every published page was +verified; one subtitle fix was applied and re-verified. + +## Shipped autonomously (Tier A — merged via PR #95) + +- **3 stale README claims fixed:** `af version`→`af --version`; formula count 19→**24**; skills + 3→**10** — each verified against source. +- **New coverage:** README Observability section + `af telemetry` command reference; Web Console + section now surfaces the Floor view and Telemetry view; multi-provider (`af config models`, + `gpt-*`) and `af improvement` noted; formula/skills tables expanded. CHANGELOG `[Unreleased]` + (retitled to v0.2.0 in this state PR). +- **Release:** [v0.2.0 — observability & multi-provider agents](https://github.com/stempeck/agentfactory/releases/tag/v0.2.0), themed notes, cut from merged main (main was green). +- Gates: GATE-1, GATE-3 (+web-console addendum), SELF-REVIEW, SELF-VERIFY, PHASE-6 all PASS. + +## Published by the operator (Tier B — staged by agent, published by Glenn) + +- **Medium:** "I run a factory of AI agents. Here's the window into it." — + https://medium.com/@glennstempeck/i-run-a-factory-of-ai-agents-heres-the-window-into-it-ad0321bfce9f + (built on real telemetry from this cycle's own run; two live-console screenshots). Repo homepage + now points at it. +- **LinkedIn:** operator's edited short-form version — + https://www.linkedin.com/posts/glenn-stempeck_i-run-a-factory-of-ai-agents-heres-the-share-7490182070434951168-Jwbi/ + +Delivery mechanics: rendered the Medium article to a self-contained rich-text page (Artifact) so +the operator could copy-paste past Medium's markdown-eating; provided the LinkedIn plain text + +screenshots. Post-publish, caught and fixed the subtitle sitting as a body paragraph. + +## Skipped / not done, and why + +- **No new issues filed:** the audit surfaced no genuine new gaps (main green; existing + #84/#75/#73/#85/#86 already track known work). Did not invent issues. +- **Multi-provider was deliberately NOT the flagship:** leading with "runs on OpenAI too" would + contradict the README's honest-scope line. Shipped as documented capability instead. + +## Operator-click items (no API reaches these) + +- None outstanding this cycle. (Profile pins, social preview were resolved in cycle-1; the CLA on + the bot-authored PR was cleared by the operator's admin-merge — noted for next time: commits are + authored `agentfactory `, which the CLA assistant can't match, so a + Tier A PR needs an admin-merge or a CLA-signed author identity.) + +## Voice calibration learned this cycle + +- The operator wants LinkedIn posts **short** ("keep it short and concise or … everyone will + suspect its AI written"). Recorded in the runbook Voice section; his ~140-word edited post is + the new short-form calibration source. +- Human-operator perspective beats agent-narrating-itself; honest limitations should be woven in + (or dropped) rather than dumped as a "what's rough" list. + +## Top 3 candidates for next cycle + +1. **The dogfooding story, told head-on** — an agent that runs its own repo's marketing cycle + (this very process). Surfaced obliquely this cycle; it's a unique, shareable narrative. +2. **Multi-provider agents** — now that it's documented, a focused piece: "your specialist agents + don't all have to run on Claude" (gpt-* formulas + the gateway), framed to not undercut the + Claude-Code-first positioning. +3. **Browser formula authoring** — the web console lets you author formulas in the browser; a + short visual piece (screenshots/gif) would land well after this cycle introduced the console. + +## Recrawl check (~2 weeks, ≈2026-08-17) + +- Web search `"Glenn Stempeck" agentfactory` and `"I run a factory of AI agents"` — expect the + Medium article + the repo to surface. +- `site:medium.com glennstempeck telemetry` — expect the new article. +- Spot-check GitHub topic pages (claude-code, ai-agents) still list the repo (API-confirmed live). +- Confirm the repo homepage still resolves to the Medium article (visibility-health workflow + alarms on drift; don't duplicate it). diff --git a/CHANGELOG.md b/CHANGELOG.md index 25acade..752af95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,9 @@ Notable changes to agentfactory. The project began 2026-05-01; snapshot tags `V001`–`V012` mark pre-release checkpoints. `v0.1.0` is the first formal release. -## [Unreleased] +## v0.2.0 — 2026-08-03 -Development since v0.1.0. +Observability and multi-provider agents. ### Observability