Every repo, every artifact, every routine — and which of them are copies of each other.
Re-audited 25/09/2026, 05:00–06:00 UTC, against live data: gh repo list + the Pages API, curl on every Pages URL, the routine API (list and individual get by id), and the artifact API. Anything not re-checked in that pass is labelled.
Address: ttrng3.github.io/pipeline-wiring/ · source ttrng3/pipeline-wiring · all routines
Corrected 25/09 The 24/09 version of this page said 12 repos, 20 artifacts, 0 touch your Mac, listed a repo called famrec that does not exist, called Signal Desk broken after its repo had been restored, and swapped two preview labels. All of that is fixed below; the full list is in section 7.
All nine pipelines are built in this order. The artifact is the last step, never the source, and never a step that can block the repo write.
An address and a preview, and they are not the same thing. The address is the Pages URL — that is what goes in a document, an email or a message. The Cowork preview is a copy of that same page inside Claude; you open it from claude.ai → Artifacts. Its link is never published here (Ty, 29/09): this repo is public, so no preview link or artifact id appears on this page.
Each row: a routine on a schedule → its repo → its Pages site → the preview named in that routine’s own prompt. All Pages URLs returned HTTP 200 on 25/09. Since 26/09 this page is the ninth: a daily routine reads the other eight (and itself) and writes data/status.json, which fills the live cells below.
| Pipeline | Fires (UTC) | Next | Last heartbeat in repo | Source | Repo | Address | Preview |
|---|---|---|---|---|---|---|---|
| TMDV | Sun 11:00 | 27/09 | 22/09 | Drive trackers + Outlook | ttrng3/Omni-TMDV | ttrng3.github.io/Omni-TMDV/ | preview |
| OMNI Sitecheck | Mon 15:45 | 28/09 | 22/09 | SharePoint — OMNI tree | ttrng3/Omni-sitecheck | ttrng3.github.io/Omni-sitecheck/ | preview |
| ECOPM Sitecheck | Mon 14:00 | 28/09 | 22/09 | SharePoint — ECOPM tree | ttrng3/Ecopm-Sitecheck | ttrng3.github.io/Ecopm-Sitecheck/ | preview |
| ECP × ELA | Sun 14:00 | 27/09 | 23/09 | Drive weekly PDFs | ttrng3/ecp-ela-weekly | ttrng3.github.io/ecp-ela-weekly/ | preview |
| Trade Journal | Tue–Sat 04:00 11:00 Hanoi, since 26/09 | 29/09 | 26/09 | Webull CSVs on Drive | ttrng3/Trade-Journal | ttrng3.github.io/Trade-Journal/ | preview |
| GDSH | Mon 01:00 | 28/09 | 22/09 | Drive budget workbook | ttrng3/gdsh-report | ttrng3.github.io/gdsh-report/ | preview |
| Ops-Dashboard KSNB | 1st & 15th 06:00 | 01/10 | 25/09 | Outlook + Drive 08 Omni Service - OMNI/09 TCKT | ttrng3/Ops-Dashboard | ttrng3.github.io/Ops-Dashboard/ | preview |
| Omni-Audit | 1st 03:00 (monthly system run, Part B) fallback 2nd 01:00 | 01/10 | 25/09 | Drive audit handoff | ttrng3/Omni-Audit | ttrng3.github.io/Omni-Audit/ | preview |
| Pipeline Wiring this page | Daily 16:00 23:00 Hanoi; Sundays only before the daily switch | 27/09 | — | The nine public repos + the nine previews | ttrng3/pipeline-wiring | ttrng3.github.io/pipeline-wiring/ | preview |
“Last heartbeat” is the timestamp in each repo’s data/.last-check; “Next” is computed from each cron. Static values as of 25/09 until data/status.json loads. Every schedule above is the live cron read from the routine API on 25/09, except Pipeline Wiring’s: its daily cron is the routine update made in the same turn as the daily-detection merge (work/260930-daily-detection/). Mirror check repeated 25/09: all eight previews in section 3 have exactly one <html> tag on read-back, so none renders blank.
14 repos in total: the nine above plus these five.
| Repo | Visibility | Pages | What drives it | Last push |
|---|---|---|---|---|
| signal-desk-collector | Private | None | Git source of the Signal Desk briefing (daily 00:10). Restored after the 24/09 deletion | 25/09 |
| passbook | Public | Live | By hand — no routine names it | 25/09 |
| vitals-journal | Private | None | By hand | 23/09 |
| vitals-app | Private | None | By hand | 24/09 |
| japan-travel-2026 | Public | Off (404) | By hand — store only | 07/09 |
Hand-driven repos have no heartbeat, so a stale one looks the same as a healthy one. market-intel-collector is not in the account (deleted 24/09, not restored).
Each is named as its mirror target in the routine prompt that publishes it.
| Preview (artifact title) | Address (circulate this) | Live state |
|---|---|---|
| TMDV Điều hành | ttrng3.github.io/Omni-TMDV/ | see section 1 |
| OMNI Sitecheck Điều hành | ttrng3.github.io/Omni-sitecheck/ | see section 1 |
| ECOPM Sitecheck — Điều hành | ttrng3.github.io/Ecopm-Sitecheck/ | see section 1 |
| Điều Hành Vận Hành ECP × ELA | ttrng3.github.io/ecp-ela-weekly/ | see section 1 |
| Webull Trade Journal | ttrng3.github.io/Trade-Journal/ | see section 1 |
| Thẩm định Giáo dục Sông Hồng | ttrng3.github.io/gdsh-report/ | see section 1 |
| Dashboard Giám sát Ngân sách & Dòng tiền — KSNB | ttrng3.github.io/Ops-Dashboard/ | see section 1 |
| Ecosystem Audit | ttrng3.github.io/Omni-Audit/ | see section 1 |
| Pipeline Wiring (this page) | ttrng3.github.io/pipeline-wiring/ | see section 1 |
Ecosystem Audit is back in this table, 26/09. Its preview was deleted on 25/09 by reading “one surface” as “no artifact”; Ty’s rule is one address, one preview — the Pages URL is the only link, and the Cowork preview exists but its URL is never circulated. Rebuilt from the repo on 26/09 (fragment + data/), both Omni-Audit routines repointed, docs/audit-refresh.md rewritten. Every pipeline row above now has a preview.
For these the artifact is the only copy; open it from claude.ai → Artifacts by its title (links are not published here, Ty 29/09). Deleting one destroys the output rather than de-duplicating it. Dates are the artifact API’s “updated” value on 25/09.
| Artifact | Updated | What writes it |
|---|---|---|
| Signal Desk | 25/09 | Signal Desk routine, daily 00:10. Run logs read 25/09: the 00:11 run failed because the repo was still missing; the 02:06 run, after the restore, succeeded and published the 25/09 briefing with no source errors. There is no briefing for 24/09. The first scheduled run since the restore is 26/09 00:10. |
| Ecosystem Health | 12/09 | Named by title (not id) in the monthly system run: Part A writes Ecosystem Health, Part C writes Second Brain. Next run 01/10 03:00. KB Monthly Update, which used to write Second Brain, is disabled. |
| Second Brain, Applied | 15/09 | |
| Passbook | 24/09 | Renamed from “Vitals Journal”. Preview of the public passbook Pages site. It had fallen a build behind; on 25/09 it was republished from the repo’s frag.html (commit 7ba58c2) and verified byte-identical to it, downloads capability kept. No routine keeps them in sync, so it is republished by hand after each push. |
| Passbook Review | 24/09 | Not duplicates Same title, different documents, both opened 25/09 (tell them apart by opening them): one is the security & council review (“tested, attacked, and put before the council”, ~2,600 words); the other is the product review (~760 words). Consider renaming one. |
| Passbook Review | 24/09 | |
| Passbook Thirty Visitors | 24/09 | One-off document. |
| Omni Next Level | 25/09 | Omni strategy blueprint; record in Claude outputs/Omni Strategy/. One-off, updated by hand. |
| GDSH Turnaround v2 | 24/09 | One-off document. Not the GDSH pipeline mirror (that is “Thẩm định Giáo dục Sông Hồng”). |
| Vitals Build Blueprint | 14/09 | Describe commercial Vitals, closed 23/09. |
| Tư Cách Pháp Lý Vitals | 20/09 | |
| Chuyến Nhật 2026 | 07/09 | Japan trip. The repo’s Pages site is off (404), so these are the only readable copies. |
| Nhật 2026 Bỏ Túi | 07/09 | |
| Mẫu Kế Hoạch Chuyến Đi | 07/09 | |
| Ecosystem Map | 22/09 | One-off documents. No repo, no routine. |
| Portfolio Position | 23/09 |
Every artifact is private until you share it from the page’s Share menu.
One routine carries three coupled parts; one routine is its fallback. Everything else is independent.
The last monthly system run (fired 25/09 02:57 UTC) reports SUCCEEDED.
Found 25/09 Two enabled one-shot routines hold the full remote-devices tool set (device_bash, device_list_dir, device_stage_files, device_commit_files, credential autofill and more):
Both were created from a Cowork project on 05/09. Neither appears in the routine list call (see Caution in section 7); they were found only by fetching their ids one by one. Neither has a file mount.
Added 28/09 The knowledge graph is Mac-bound too, by design, and is not a routine. It is the graphify index over 93 Knowledge Base/ (Markdown only), at graphify-out/ on Drive. A cloud routine cannot run it, because extraction dispatches subagents from a live Claude Code session. Rebuilt by hand with /graphify . --update. Last built 28/09/2026: 2,498 nodes, 4,304 edges, health check clean (0 dangling). Next due about 28/10/2026. Nothing from the graph is published here: its content is internal.
Added 03/10 Trade Journal’s monthly Drive backup is a Mac job, by Ty’s choice, and is not a routine. A launchd job runs daily at 14:00 Mac local time (Hanoi while the Mac is in Vietnam) and acts once a month. It copies the month’s master backup from the GitHub release into Drive 09 Trading/Trade Journal/Backups/, then moves the CSVs already in the journal out of Raw Records/. If the Mac is asleep it catches up on the next wake; if it is switched off for the day, the next daily run picks it up. From the 4th of each month the daily check looks for that month’s master in Backups/; if it is missing, the check files a triage note, which emails Ty. Ty chose it over a Google credential in GitHub (Trade-Journal #13, merge 502ae8e). First real run 01/11/2026. Runbook: Trade-Journal docs/backup.md.
Added 08/10 Trade Journal’s bot collector is a Mac job too. The trading bots run on the Mac and write their day files there, so only the Mac can collect them. A launchd job runs at 10:30 Mac local time (Hanoi while the Mac is in Vietnam), Tue–Sat, and copies the last session’s bot rows (an allowlist of fields; no broker ids) plus 1-minute bars to Drive Raw Records/Bots/ with rclone, which reaches Drive by path because launchd cannot read the Drive mount. The 11:00 Hanoi (04:00 UTC) routine reads that folder, so the collector lands first only while the Mac’s clock is UTC+6:30 or further east. If the Mac is asleep at 10:30 the job runs when it wakes; if that is after the routine, or the Mac is off, that day is compiled without its bot rows and its day page says “bot bundle missing” (Trade-Journal docs/wiki.md, step 1); nothing on this page flags it. Trade-Journal #15 and #16 (5864b32, 1aa87e9).
The ten enabled routines in the list, and TMDV (fetched by id), hold no remote-devices tool and have file_mounts: []. The 24/09 claim that every routine reports bound = false cannot be re-checked: the API response has no bound field.
The flow is now uniform across all seven. Each routine writes its source into GitHub, Pages serves it, and the mirror publishes last. A failed mirror reports and stops — it can never cause an undo, retry or rewrite of the repo.
Every mirror was verified, not assumed. Fragments built with zero doctype/<html>/<head>/<body> tags; data files published first and the page second on the larger payloads, because a page sent alongside a big files payload comes back blank; exactly one <html> tag on read-back.
Five renderers fetch data/ relatively and only fall back to the absolute Pages URL — which CSP blocks inside an artifact. That is why each mirror carries its own data/ copy. GDSH is the exception: build_auto.py bakes the numbers in and it fetches nothing, so there the mirror is the page. Each routine now carries that distinction in writing.
Superseded Audit publisher moved 02:00 → 04:00 Monday. Since then the publisher became Part B of the monthly system run (1st 03:00), and the old publisher is a fallback on the 2nd at 01:00. It used to fire one hour before its own producer, so whenever the 1st fell on a Monday the fresh audit waited a week — 2027-02-01, 2027-03-01, 2027-11-01. Now one hour behind, with the reason written into the prompt so nobody moves it back.
GDSH renamed to “weekly check, monthly period” — the cron was always weekly. Typo fixed: SINH BẮNG CODE → SINH BẰNG CODE.
Three plaintext credential files moved to Drive trash — a github_pat_…, an sk-ant-oat01-…, and a third PAT-shaped file.
Japan Pages switched off — the public URL 404s; the repo is untouched.
Ops-Dashboard restyled to the Ty Artifact Standard — it was the last page on the retired palette. Variable names were kept, because ksnb-render.js builds its SVG charts from them and writes color:var(--red) onto 12.5px table numbers; so every accent is now a text-safe ink (blue 8.2:1, red 6.6:1, amber 6.4:1, green 6.6:1 on white) rather than a bright mark. Chart pairs checked with the CVD validator: blue/red ΔE 24.3, blue/amber 25.9, green/red 7.0 deutan — the last is legal because the bars also encode sign by position around a zero axis and the MoM table repeats every signed figure. Nothing outside the stylesheet changed; the file is otherwise byte-identical.
That restyle fixed a real defect. The old sheet carried a second, dead :root block from the 20/09 reskin that aliased --blue and --green to the same colour. Anywhere both appeared — the info vs good bullet dots, the KPI border tops — they were indistinguishable. They are now two distinct hues.
Ops-Dashboard became the eighth pipeline. The repo was already repo-first with a runbook, heartbeat and freshness check — but no routine had ever been created, so it only moved when run by hand. It now has one. Superseded not Mondays: the live cron is 0 6 1,15 * *, the 1st and 15th.
Its "mounted folder" was never a Mac dependency. The source it calls thư mục Drive cục bộ 09 TCKT is a Google Drive folder the connector reads from the cloud (since 2026-09-25 at 08 Omni Service - OMNI/09 TCKT, same folderId) — the same false constraint Trade Journal had. Both PnL files are readable; the routine now scans Outlook and that folder, because TCKT has started delivering reports there instead of by email.
Three artifacts became one — Starter Story and Learning Matrix are tabs on this page. One duplicate deleted — the old Ecosystem Audit copy, after confirming the repo already held the same run.
09 Trading/Trade Journal/Raw Records/Bots/ at 10:30 Mac local time, Tue–Sat (section 5); the existing Trade Journal routine at 11:00 Hanoi then adds a wiki step after the Webull sync. The wiki step runs on every routine run (Tue–Sat), quiet sessions included, and a wiki failure never blocks or undoes the journal’s own data push (Trade-Journal docs/nightly-sync.md). No new routine and no schedule change.1a9a42e, #15 5864b32, #16 1aa87e9, #17 7092f70. Runbook: Trade-Journal docs/nightly-sync.md, “The wiki step”.502ae8e). Until 03/10 it lived only as a GitHub release. A Mac job now copies it to Backups/ each month and moves synced CSVs out of Raw Records/. October’s copy and the first move were done by hand the same day (recorded in the Trade-Journal PR #13 description). It is a new Mac dependency; see section 5.1ee5b0d, 03/10). The trade log carries a badge per broken rule and a “Rule breaks only” filter; Reports has a Rules card; Settings has an R field that stays in the browser and never reaches the repo. Page behaviour only: the schedule, routine, data and preview id are unchanged, and the preview was rebuilt from the merged page the same day.Raw Records/ around 08:30–10:00 Hanoi; the 08:07 fire found nothing on 25/09 and again on 26/09, and a manual run on 26/09 brought the new fills in. “The page did not update” in this pipeline means: check the CSV’s modified time against the run’s fire time before anything else.tools/collect_status.py against the nine public repos, checks the nine previews with the Artifact tool, commits data/status.json + a heartbeat, and refreshes this preview. The “Next”, “Last heartbeat” and preview cells in section 1 now render from that file; the prose stays hand-written.famrec does not exist in the account. passbook, pipeline-wiring and a restored signal-desk-collector were missing from the count.0 9 1 * *.TH summary sheet of these ~30 MB workbooks. Fixed 25/09 W02 and W03 backfilled from the source workbooks, and W01 rebuilt — commit 8fa5121, preview republished. The parser is now in the repo as tools/parse_sitecheck.py and runbook step 4 no longer claims the connector reads every sheet. A request for a lighter weekly file (no photos) has been drafted for Ty to send, so future weeks do not need a manual download.Every ECOPM detail file built before 25/09 stored each row’s STT (sequence number) in the status field for most rows. The page shows that number as the row’s status pill, so the “Tình trạng” column and its filter are wrong for most historical rows. September W01–W03 are now correct. Fixing the older weeks means re-reading their source workbooks; not done, awaiting your call.
Ty, 25/09: leave them for now. They fire once each, 23/11 and 11/12, and still hold the remote-devices tools. Come back to this before the first one fires.
Its owner was KB Monthly Update, which was folded into Monthly system run (1st, 03:00). The merged prompt kept the republish as Part C step 4 — but the 25/09 test run skipped it, and skipped the Ecosystem Health db-write with it.
The cause is worth knowing, because it will recur elsewhere. The run probed for the Artifact tool with ToolSearch, which searches only deferred tools. An already-attached tool returns “No matching deferred tools found” — so a present tool looks exactly like a missing one. The run read that as unavailable and dropped both artifact steps without flagging it. Artifact and ArtifactData were in its allowed_tools the whole time.
The prompt now states the tools are attached, forbids the ToolSearch probe, marks both steps mandatory, and reports each outcome on its own notification line. This page has no Pages site — the artifact is its only address, so a skipped step shows up nowhere. Next real run: 1 Oct.
Trashing a file does not revoke a credential. On 24/09 two files needed action at the provider:
routine_fire_token.txt — an Anthropic sk-ant-oat01-… session token. Revoke it in your account settings..github-token — 94 bytes, PAT-shaped, created 20/05. Revoke it if it is not one you already revoked.Closed on Ty’s word, 25/09: a new token has been generated. One caution kept on the record: generating a new token does not switch off an old one. If either old token was never revoked or set to expire, it still works until it does.
A past session log shows the routine renamed “⚠ DELETE ME — retired Mac-bound Trade Journal” had a trigger id that the routine API returns not found for on 25/09, so it has been deleted.
On 25/09 the list call returned 20 rows plus a next-page cursor the tool cannot follow. Five routines were missing from it and were found only by fetching ids one by one: TMDV (enabled), the two Japan one-shots (enabled), the retired KSNB weekly (disabled) and a one-off check from 09/09 (disabled). I fetched all 31 ids found in Drive notes, the repos and past session logs: those 5 exist, 26 no longer do. A routine whose id was never written down anywhere could still be missing, but no recorded id is unaccounted for.
Pipeline Wiring · re-audited 25/09/2026, Trade Journal row updated 26/09 · tabs: Wiring · Starter Story · Learning Matrix · repos from the GitHub API, Pages by HTTP status, routines from the routine API (list + get by id), artifacts from the artifact API. Items not re-checked on 25/09 are labelled.