The three example package locks conflicted: both sides had regenerated
them. Neither side's digests were still correct, since the merged tree
combines their source refactor with the license field added to every
manifest, so the locks were rebuilt from the merged bytes rather than
resolved by picking a side.
Every workspace manifest omitted a license field, so a scanner reading
the published repository would resolve all 90 of them as unknown. Both
Python services went further and declared plain Apache-2.0, which is
looser than the LICENSE they actually ship under.
Package bytes feed the example package locks, so adding the field
invalidated all three; refreshed them. Only closureDigest and artifacts
move — same 31 selected packages, nothing added or removed.
Also record what the READMEs never said: ffmpeg is a real prerequisite
for a Build and had zero mentions, and the media Lambda layer is a GPL
FFmpeg build. That build is deliberate — libx264 is GPL-only and the
encode path requires it — and it stays lawful only because the operator
builds and deploys it into their own account. Publishing a prebuilt
layer would break that, so the boundary is now written down.
The specification pages are gone from both languages, along with their
sidebar groups and every link into them from the READMEs and six package
READMEs. Nothing in the repository references /guide/spec.
The 16 normative specs sat in spec/, outside the VitePress srcDir, while the
published Develop guide listed them in a repository tree — pointing site
readers at documents they could not open. They now live under
docs/guide/spec/ in both languages, wired into the Develop sidebar, and
spec/ is gone so the two copies cannot drift.
The move is near-verbatim. Every contract id in all 16 documents was checked
against packages/*/src and all of them exist; the only package name with no
implementation is one the text already marks "provisionally". Four claims
did not survive that check and were corrected: two uses of the retired
Realization vocabulary in caption-program, the spatial-layout line saying
Ranking consumes Frames and Points when it takes exactly one frame and never
imports the Point type, and a ranking-track author example whose fonts:Stack
omitted the required style attribute and could not have compiled.
script-surface was written in Chinese despite sitting in the English tree.
It is now English on the English site and Chinese on the Chinese one.
The README was carrying the quickstart's job: a file table, a pipeline
diagram, a full build command sequence. It is an introduction again — where
the name comes from, why the work is a graph, what the source looks like,
the shortest thing you can run, and where to go for the rest. Both READMEs
gain CI, license and star badges; the licence badge names this project's
licence rather than the MIT of the template it came from, and the workflow
badge points at the one workflow that exists.
Rename the author frontend around Markup, replace PromptKit with graph-native Text templates, and keep video typography in its own package. Wire ordinary Text through explicit graph edges into model and visible consumers, refresh examples, locks, tests, and architecture documentation.