From 666296c7f3f85d8c06f722fb1508d05d9600ceb8 Mon Sep 17 00:00:00 2001 From: Harish Seshadri Date: Sat, 1 Aug 2026 07:38:20 -0700 Subject: [PATCH] docs: give the README a diagram, including the part that is not adopted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This repo had no diagram at all. The README explains the shared-workflow model in prose and then reports adoption in a table three paragraphs later, so the shape of the thing — one copy here, called from there — never lands visually. Adds one mermaid block after the "why it works" paragraph. It draws both branches, because only one of them is flattering: 2 of the 12 bricks (7 reusable workflows + 5 composite actions) have callers, at 6 call-sites across assay, edge-proc, edgeproc-core and privacy-core, all on the publish path. The other 10 have zero, and almamesh, aml-filter and edge-reco still hand-roll their CI. That dotted branch is exactly what the consumer-drift guard exists to measure, so the diagram links to it. Counts verified against the tree, not copied from the prose: 7 workflow files carry `on: workflow_call` (cloudflare-pages-deploy, frontend-gate, python-gate, python-publish, secret-scan, security-audit, ts-publish); ci.yml and consumer-drift.yml are this repo's own and are not callable. 5 composites in .github/actions/. 12 total, matching the README's "the other 4 composites and 6 reusable workflows". Mermaid rather than d2 because a `.d2` source plus a committed `.svg` is a build artifact that drifts (edgeproc-core had 5 `.d2` files and 1 stale `.svg`). Mermaid has no artifact and GitHub renders it natively. Claim touched: none — README only, no workflow, composite or guard changes. Rendered with mermaid-cli 11 before commit; parses. tests/lint-examples.sh and example-fidelity green (172 resolved, 0 missing, 0 unverifiable across 7 repos). Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_0186xrrT9mYfCZTVkk8HN12p --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index b918d90..5b2feb7 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,22 @@ get the change. "composite action." So the shared logic lives here exactly once, and each repo keeps only the one thing that is genuinely its own — its build command. +**Where that stands today.** Written is not the same as adopted, so the picture shows +both: + +```mermaid +flowchart TD + CI["hseshadr/ci — one copy of each CI job
7 reusable workflows + 5 composite actions"] + CI -->|"called at a pinned commit: 2a575cd = ci-v3.0.0"| USED["In use today — 6 call-sites
ts-publish.yml ×3 · setup-python-uv ×3"] + USED --> WHO["assay · edge-proc · edgeproc-core · privacy-core
their release path runs this shared copy"] + CI -.->|"nobody calls these yet"| IDLE["The other 10 bricks — 0 call-sites
almamesh · aml-filter · edge-reco
still hand-roll their own CI"] +``` + +The dotted branch is the point of the [consumer-drift +guard](#consumer-drift-what-is-still-hand-rolled): publishing a shared control does +nothing until something calls it, so this repo measures the gap instead of assuming it +away. The counts below are that measurement. + **Why it exists.** "If we are manually changing things per project per repo, nothing is standardized." One place to bump `actions/checkout`, one place to fix the gitleaks pattern, one place that defines what "run the gate" means. No drift.