The publish workflow's one real step is go run . publish, which resolves the declared plugins, builds docs/manifest.json, and reports the bytes it wrote. Then the job ends. The checkout runs with persist-credentials: false and its own comment says why - no step pushes - so nothing the run builds ever reaches main:/docs, which is what Pages serves at flowfin.dev. The run has been green on every dispatch while the freshness watch reddened twice on the exact version the run had just built and discarded: requests 0.2.0.0-stable, resolved, written, never placed. A publish that cannot place is a validator wearing publish's name, and the green run beside the red watch is precisely the quiet disagreement this hub's checks exist to refuse.
#153 places today's manifest by hand through a pull request. What lands here is the mechanism: the publish run compares what it built against what main:/docs carries, and on a difference opens or updates a pull request with the new manifest - one standing branch, force-pushed, so repeated runs converge on one open pull request instead of a pile. The ruleset stays exactly as strict as it is; the run merges nothing itself. Done-when: a dispatch of publish, on a tree whose catalogue is behind a declared release, ends with a pull request open against main carrying the difference, and a dispatch on a current tree ends with no pull request and says so.
Estimated-Cost: 120
The publish workflow's one real step is
go run . publish, which resolves the declared plugins, buildsdocs/manifest.json, and reports the bytes it wrote. Then the job ends. The checkout runs withpersist-credentials: falseand its own comment says why - no step pushes - so nothing the run builds ever reachesmain:/docs, which is what Pages serves at flowfin.dev. The run has been green on every dispatch while the freshness watch reddened twice on the exact version the run had just built and discarded: requests 0.2.0.0-stable, resolved, written, never placed. A publish that cannot place is a validator wearing publish's name, and the green run beside the red watch is precisely the quiet disagreement this hub's checks exist to refuse.#153 places today's manifest by hand through a pull request. What lands here is the mechanism: the publish run compares what it built against what
main:/docscarries, and on a difference opens or updates a pull request with the new manifest - one standing branch, force-pushed, so repeated runs converge on one open pull request instead of a pile. The ruleset stays exactly as strict as it is; the run merges nothing itself. Done-when: a dispatch of publish, on a tree whose catalogue is behind a declared release, ends with a pull request open against main carrying the difference, and a dispatch on a current tree ends with no pull request and says so.Estimated-Cost: 120