ghost init --body: packed payloads + vessel-light body install#210
Merged
Conversation
…211) * skill: adapting-a-starter recipe — the seven-step transplant procedure * review: resolve package-relative material locators when matching diff paths (#212) * review: resolve package-relative material locators when matching diff paths * demo: drop stale parked-branch reference from eval artifacts gitignore * median: one authored home — model truth stamped at init, prunable by contract (#213) * corpus: audit backports, check cross-wiring, terminology sweeps * median: one authored home — headings contract, payload check, all templates stamp the floor * vessel-light: re-derive median onto the headings contract; docs get the ownership reframe
nahiyankhan
added a commit
that referenced
this pull request
Jul 9, 2026
…n floor (#209) * template: naked skeleton replaces steering default * checks: median-tells scaffold — live check pairing with anti-goal.median, deterministic floor, model tells * skill: migrate Morrow teaching shapes to authoring-scenarios * docs: skeleton starter in getting-started + cli-reference; minor changeset * ghost init --body: packed payloads + vessel-light body install (#210) * init: packed-payload mechanism — dist payloads, byte-capable template seam * template: skeleton rides packed files * init: --body vessel-light — install the full inhabited package * checks: packed-artifact body probes — fonts and checks survive pack * docs: body install in getting-started + cli-reference; minor changeset * skill: adapting-a-starter — the seven-step starter transplant recipe (#211) * skill: adapting-a-starter recipe — the seven-step transplant procedure * review: resolve package-relative material locators when matching diff paths (#212) * review: resolve package-relative material locators when matching diff paths * demo: drop stale parked-branch reference from eval artifacts gitignore * median: one authored home — model truth stamped at init, prunable by contract (#213) * corpus: audit backports, check cross-wiring, terminology sweeps * median: one authored home — headings contract, payload check, all templates stamp the floor * vessel-light: re-derive median onto the headings contract; docs get the ownership reframe
nahiyankhan
added a commit
that referenced
this pull request
Jul 9, 2026
…edian floor (#208) * materials: tokens audit — radius roles, hoist grammar-enumerated values * corpus: fork-axis re-author — grammar/signature/register/anti-goal * checks: relationship/value split — density.md retired, median-tells gains demoted rules, frequency thresholds, model-named tells * materials: regenerate refs — annotated, closed-set complete * docs: vessel-light README — fork-axis structure and ref-annotation curation * ghost init: naked skeleton default — grammar, unanswered dials, median floor (#209) * template: naked skeleton replaces steering default * checks: median-tells scaffold — live check pairing with anti-goal.median, deterministic floor, model tells * skill: migrate Morrow teaching shapes to authoring-scenarios * docs: skeleton starter in getting-started + cli-reference; minor changeset * ghost init --body: packed payloads + vessel-light body install (#210) * init: packed-payload mechanism — dist payloads, byte-capable template seam * template: skeleton rides packed files * init: --body vessel-light — install the full inhabited package * checks: packed-artifact body probes — fonts and checks survive pack * docs: body install in getting-started + cli-reference; minor changeset * skill: adapting-a-starter — the seven-step starter transplant recipe (#211) * skill: adapting-a-starter recipe — the seven-step transplant procedure * review: resolve package-relative material locators when matching diff paths (#212) * review: resolve package-relative material locators when matching diff paths * demo: drop stale parked-branch reference from eval artifacts gitignore * median: one authored home — model truth stamped at init, prunable by contract (#213) * corpus: audit backports, check cross-wiring, terminology sweeps * median: one authored home — headings contract, payload check, all templates stamp the floor * vessel-light: re-derive median onto the headings contract; docs get the ownership reframe
nahiyankhan
added a commit
that referenced
this pull request
Jul 9, 2026
…ng-eval harness (#207) * Add vendored vessel-react fingerprint: taste-floor nodes, materials wired to component sets, baseline hygiene checks * Rename packages/vessel to packages/vessel-react; workspace fingerprint id follows * Add vessel-light: Vessel's design language as a portable .ghost fingerprint for raw HTML/CSS agents * Add steering-eval: portable before/after evaluation harness for Ghost fingerprints; wire vessel-light demo as first consumer * Fix pilot findings: agent-browser set-viewport invocation, skip empty cells, brandTokens/pulledWords from tape * Run the full steering-eval matrix on vessel-light: 45 generations + dump-growth, screenshots, metrics, report * Park eval run artifacts on vessel-eval-artifacts branch; ignore demo/out on mainline * steering-eval: emit WebP screenshots (shoot to PNG, convert via cwebp, embed webp in report) * vessel-light: fork-axis re-authoring — grammar/signature/register + median floor (#208) * materials: tokens audit — radius roles, hoist grammar-enumerated values * corpus: fork-axis re-author — grammar/signature/register/anti-goal * checks: relationship/value split — density.md retired, median-tells gains demoted rules, frequency thresholds, model-named tells * materials: regenerate refs — annotated, closed-set complete * docs: vessel-light README — fork-axis structure and ref-annotation curation * ghost init: naked skeleton default — grammar, unanswered dials, median floor (#209) * template: naked skeleton replaces steering default * checks: median-tells scaffold — live check pairing with anti-goal.median, deterministic floor, model tells * skill: migrate Morrow teaching shapes to authoring-scenarios * docs: skeleton starter in getting-started + cli-reference; minor changeset * ghost init --body: packed payloads + vessel-light body install (#210) * init: packed-payload mechanism — dist payloads, byte-capable template seam * template: skeleton rides packed files * init: --body vessel-light — install the full inhabited package * checks: packed-artifact body probes — fonts and checks survive pack * docs: body install in getting-started + cli-reference; minor changeset * skill: adapting-a-starter — the seven-step starter transplant recipe (#211) * skill: adapting-a-starter recipe — the seven-step transplant procedure * review: resolve package-relative material locators when matching diff paths (#212) * review: resolve package-relative material locators when matching diff paths * demo: drop stale parked-branch reference from eval artifacts gitignore * median: one authored home — model truth stamped at init, prunable by contract (#213) * corpus: audit backports, check cross-wiring, terminology sweeps * median: one authored home — headings contract, payload check, all templates stamp the floor * vessel-light: re-derive median onto the headings contract; docs get the ownership reframe * build: root build and packed-package check produce the full ghost artifact Root pnpm build only ran tsc, so dist/init-payloads and dist/skill-bundle were missing in CI: the vessel-light body test failed and check-packed-package packed a tarball without payloads. Root build now chains the package-level build; check:packed-package builds its own complete artifact since the lint job never runs pnpm build. Signed-off-by: Nahiyan Khan <nahiyan@squareup.com> --------- Signed-off-by: Nahiyan Khan <nahiyan@squareup.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Category: new-feature
User Impact:
ghost init --body vessel-lightinstalls a complete, working brand — answered dials, real tokens, embedded fonts, annotated reference compositions, and its own checks — instead of starting from the empty skeleton.Problem: The skeleton default (#209) hands you the anatomy with the dials unanswered. Users who want full-strength steering on day one had to hand-copy
packages/vessel-light/.ghost— and init's TS-string-literal templates physically couldn't carry the body's binary fonts.Solution: Two pieces. (1) A packed-payload mechanism: init payloads become real files shipped in
dist/init-payloads/, copied at build time byscripts/sync-init-payloads.mjsfrom their canonical sources (mirroring the skill-bundle packing pattern); the template seam widens to carry bytes and async loading. The skeleton migrates onto it — its content is now reviewable markdown instead of ~515 lines of escaped string literals, byte-identical output verified. (2)--body <name>: a new flag, deliberately distinct from--template— templates are shapes of emptiness, a body is the same anatomy inhabited.vessel-lightinstalls the full fork-axis corpus + materials + its own 5 checks (automatically;--with checkson a body is a loud error). The manifest id staysvessel-light— renaming it is step one of adapting the starter, an explicit human act init never pre-executes.Stacked on #209 (base:
skeleton-default). Merge order: #207 ← #208 ← #209 ← this.Validation:
pnpm check+pnpm testvia pre-commit on all five commits (132 passed, 1 skipped)diff -rof scaffold output before/after → exit 0init --body vessel-light→ 39 files,validate0 errors 0 warnings, manifestid: vessel-light, font byte-identical to source (cmp)--body+--template,--body+--with checkscheck-packed-package+check-release-tarballextended with body probes: fonts and checks survivepnpm packand the standalone release tarball; font size asserted against sourceChangeset: added (
minor) — new--bodyflag and packed-payload capability.Ghost Review: not run — CLI mechanism + payload packing; no fingerprint-consuming or generation behavior changed. The body payload content itself was reviewed in #208.
File changes
Commit 1 —
init: packed-payload mechanismsrc/scan/packed-payloads.ts(new): resolvesdist/init-payloads/<name>viaimport.meta.url(dual-root so vitest-from-src resolves synced payloads through dist), walks recursively, text as strings /.woff2as bytes, deterministic order.templates.ts:TemplateFile.contentwidens tostring | Uint8Array,files()may be async.fingerprint-package.ts: write path handles bytes; overwrite guard/--force/written list unchanged.scripts/sync-init-payloads.mjs(new): build-time copy ofpackages/vessel-light/.ghost(excluding.events/.gitignore) +src/init-payloads/**into dist; wired into the package build script.Commit 2 —
template: skeleton rides packed filesSkeleton content materialized at
src/init-payloads/skeleton/*.md(13 files, exact extraction);skeleton-template.ts/skeleton-grammar.tsdeleted; registry loads via the payload loader with stable output order;manifest.yml/.gitignorestay generated. Scaffold output byte-identical; existing skeleton tests pass unchanged.Commit 3 —
init: --body vessel-lighttemplates.ts:GhostInitBodyinterface + registry,getInitBody/listInitBodies; the vessel-light body loads its packed payload, keeps its ownmanifest.yml, generates only.gitignore.fingerprint-package.ts:bodyoption, mutual-exclusion and unknown-body errors.init-command.ts:--bodyflag,--with checksconflict error. Tests: body inventory (corpus + tells + registers + materials + checks, no.events), manifest id, font byte-equality, validate 0/0, all three error paths.cli-manifest.jsonregenerated.Commit 4 —
checks: packed-artifact body probescheck-packed-package.mjs: installs the tarball in a temp consumer, runsinit --body vessel-light --package …, asserts font/check paths written, lints the result.check-release-tarball.mjs: asserts payload paths exist in the extracted tarball, font size matches source byte count, and the body installs from the standalone tarball.Commit 5 —
docs + changesetcli-reference.mdx+getting-started.mdx: the template/body distinction, install instructions, the manifest-id doctrine..changeset/body-install.md: minor.Screenshots/Demos: N/A — CLI. Try it:
pnpm build && node packages/ghost/dist/bin.js init --body vessel-lightin an empty dir.