Skip to content

Commit b82c1eb

Browse files
committed
site: the deploy pin follows the release line across a major
The tag pin was `git tag -l 'v0.*'`. It stopped matching the day 1.0 shipped, and it failed SILENTLY: every step stays green while the deploy keeps pinning to v0.25.0 and publishing 0.25.0 coordinates, snippets, llms mirrors and metamodel reference under a 1.0 announcement. An unfiltered pick is no better — the legacy JVM-only v7.x tags sort above both lines and top out at a tree that has neither examples/showcase nor site-reference. So the filter stops naming a major and tests the property that defines the npm line instead: a release tag is on it exactly when the CLI package that tag carries is versioned AS the tag. v1.0.0 ships cli 1.0.0; v7.20.12 ships cli 0.20.11. Nothing to maintain at the next major, and the pin is echoed into the deploy log so a wrong one is readable rather than inferred. www/assess.md joins the llms mirrors as deploy-time output. It is the same text as the fit-assessment skill minus the skill's frontmatter, it was hand-maintained as a second copy, and it drifted to 519 lines against the skill's 565 while still telling every reader it was grounded against npm 0.15.x / Maven 7.7.x. That page is the acquisition surface — it is what an evaluator's agent fetches before adopting anything. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NTcEKXTQMYt84fAjuw5A2M
1 parent 55f9aae commit b82c1eb

4 files changed

Lines changed: 56 additions & 532 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,28 @@ jobs:
6868
set -euo pipefail
6969
git clone --filter=blob:none https://github.com/metaobjectsdev/metaobjects.git /tmp/mo
7070
cd /tmp/mo
71-
# The repo carries TWO tag lines: v0.x (npm lockstep) and v7.x (JVM). An
72-
# unfiltered `git tag -l 'v*' | sort -V | tail -1` returns v7.20.12 — a Maven-only
73-
# cut — and always will, because 7 sorts above 0. That tree has no
74-
# examples/showcase, so an unfiltered pin would break forever. Filter to the npm
75-
# line. (Never `git fetch --all`: it deletes local release tags.)
76-
TAG=$(git tag -l 'v0.*' | grep -E '^v0\.[0-9]+\.[0-9]+$' | sort -V | tail -1)
77-
test -n "$TAG" || { echo "no v0.x release tag found"; exit 1; }
71+
# Pin to the newest tag on the NPM RELEASE LINE — the line every registry has cut
72+
# together since the 0.20.14 lockstep ruling. Two other lines sit in this repo's
73+
# history and BOTH outrank it under `sort -V`: v7.x, the JVM-only cuts made before
74+
# that ruling (they stop at v7.20.12, a tree with neither examples/showcase nor
75+
# site-reference), and the `-rc.*` prereleases.
76+
#
77+
# The filter is deliberately NOT a hardcoded major. It used to be `v0.*`, which
78+
# stopped matching the day 1.0 shipped — and the failure was SILENT: the deploy
79+
# would have kept pinning to v0.25.0 and publishing 0.25.0 coordinates, snippets,
80+
# llms mirrors and metamodel reference under a 1.0 announcement, with every step
81+
# green. Instead, test the property that actually defines the line: a release tag
82+
# is on the npm line exactly when the CLI package it carries is versioned AS that
83+
# tag. v1.0.0 ships cli 1.0.0; v7.20.12 ships cli 0.20.11. Nothing to maintain at
84+
# the next major. (Never `git fetch --all`: it deletes local release tags.)
85+
TAG=""
86+
for t in $(git tag -l 'v*' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | sort -rV); do
87+
v=$(git show "$t:server/typescript/packages/cli/package.json" 2>/dev/null \
88+
| sed -n 's/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -1) || true
89+
if [ "v$v" = "$t" ]; then TAG="$t"; break; fi
90+
done
91+
test -n "$TAG" || { echo "no npm-line release tag found"; exit 1; }
92+
echo "pinned to metaobjects $TAG"
7893
git checkout --quiet "$TAG"
7994
# The agent-facing mirrors, from the SAME clone — do not clone twice. They are
8095
# maintained in the metaobjects repo and merely SERVED from here; keeping a second
@@ -96,6 +111,24 @@ jobs:
96111
echo "::warning::metaobjects $TAG has no docs/llms mirrors — /llms.txt will 404."
97112
fi
98113
114+
# /assess.md is the SAME text as the fit-assessment skill, minus the skill's YAML
115+
# frontmatter and the maintainer comment above its first heading — so it is copied
116+
# here for exactly the reason the llms mirrors are. It was hand-maintained instead,
117+
# and drifted to 519 lines against the skill's 565, still telling every reader it
118+
# was grounded against npm `0.15.x` / Maven `7.7.x`. That page is the acquisition
119+
# surface: it is what an evaluator's agent fetches before adopting anything.
120+
#
121+
# `sed` from the first top-level heading, rather than matching the title text, so a
122+
# retitle does not silently truncate the page. An empty result means the skill was
123+
# restructured — warn, and leave the page missing rather than publish a blank one.
124+
SKILL=agent-context/skills/metaobjects-fit-assessment/SKILL.md
125+
if [ -f "$SKILL" ] && sed -n '/^# /,$p' "$SKILL" > /tmp/assess.md && [ -s /tmp/assess.md ]; then
126+
cp /tmp/assess.md "$GITHUB_WORKSPACE/www/assess.md"
127+
echo "copied assess.md from metaobjects $TAG ($(wc -l < /tmp/assess.md) lines)"
128+
else
129+
echo "::warning::metaobjects $TAG has no usable fit-assessment skill — /assess.md will 404."
130+
fi
131+
99132
# A release older than the injection program has neither the injector nor the
100133
# payload. Skip rather than fail: the pages still carry their placeholders, and a
101134
# hard failure here would take down the whole deploy — including unrelated prose

.gitignore

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
# project documented by `meta docs`. Neither is authored here.
44
www/reference/
55

6-
# Copied from the metaobjects repo at deploy (docs/llms/*), pinned to the release tag.
7-
# Tracking them here would mean two editable copies of one file.
6+
# Copied from the metaobjects repo at deploy, pinned to the release tag. Tracking them
7+
# here would mean two editable copies of one file — which is how each of these drifted
8+
# before it was untracked. Fix them upstream:
9+
# www/llms.txt, www/llms-full.txt <- docs/llms/*
10+
# www/assess.md <- agent-context/skills/metaobjects-fit-assessment/SKILL.md
811
www/llms.txt
912
www/llms-full.txt
13+
www/assess.md

AGENTS.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,16 @@ This file is the project's committed home for project-intrinsic agent knowledge:
77
- `www/reference/` is generated at deploy time (`.github/workflows/deploy.yml` clones the
88
public reference implementation and runs `meta docs`). Anything committed there is
99
replaced on every deploy.
10-
- `www/llms.txt` and `www/llms-full.txt` are **becoming** generated output, copied in from
11-
the MetaObjects monorepo's `docs/llms/`. As of this writing `deploy.yml` does not copy them
12-
yet — they are still committed files — but treat them as read-only here: once the copy
13-
lands, hand-edits made in this repo are silently overwritten. Fix them upstream instead.
10+
- `www/llms.txt`, `www/llms-full.txt` and `www/assess.md` are copied in from the MetaObjects
11+
monorepo at deploy time, pinned to the release tag — the first two from `docs/llms/`, the
12+
third from `agent-context/skills/metaobjects-fit-assessment/SKILL.md` (its body, from the
13+
first top-level heading). All three are gitignored here, because a second editable copy is
14+
what let each of them drift. Fix them upstream.
15+
- The four version coordinates on the pages are not hand-written either: any element carrying
16+
`data-registry="npm|maven|nuget|pypi|metamodel"` has its text replaced at deploy from the
17+
release tag's `examples/showcase/site-payload.json`. The numbers sitting in the committed
18+
HTML are placeholders. Preview what a deploy would render with
19+
`bun run site:preview --site <this-repo>/www` from the monorepo.
1420

1521
## Content that mirrors the CLI
1622

0 commit comments

Comments
 (0)