Skip to content

vessel-light: fork-axis re-authoring — grammar/signature/register + median floor#208

Merged
nahiyankhan merged 6 commits into
vesselfrom
vessel-light-fork-axis
Jul 9, 2026
Merged

vessel-light: fork-axis re-authoring — grammar/signature/register + median floor#208
nahiyankhan merged 6 commits into
vesselfrom
vessel-light-fork-axis

Conversation

@nahiyankhan

Copy link
Copy Markdown
Collaborator

Category: improvement
User Impact: vessel-light's fingerprint is now factored so a rebrand is a values transplant — grammar survives any fork, identity dials are labeled, every literal value lives in one CSS file — and it ships the approved 15-rule median floor with per-rule anchors.
Problem: The old corpus smeared Vessel's identity through every node: an adapter couldn't tell load-bearing structure from Vessel's face, so every node went stale on fork, and the anti-goal content mixed portable model-median rules with Vessel-specific tells.
Solution: Re-author the corpus along the fork axis per notes/default-fingerprint-synthesis.md: kinds become grammar (value-free, closed sets enumerated) / signature (dials that self-declare "Vessel's answer until you replace it") / register (conditions referencing signature ids) / anti-goal (median = the approved 15 reject→replace rules with <!-- rule:median-* --> anchors; tells = signature near-misses). Checks split into fork-stable relationship checks and fork-rewritten value checks; median-tells gains frequency thresholds and model-named tells (Codex, Gemini). Refs regenerated as annotated closed-set demonstrations; tokens.css owns every literal via new --radius-control/--radius-surface roles and hoisted gap/text/control values.

Stacked on #207 (base: vessel). Retarget to main after #207 merges.

Validation:

  • ghost validate --package packages/vessel-light/.ghost: 0 errors, 0 warnings after every commit
  • ghost review on the ref-regeneration diff (acceptance gate): no median, relationship, motion, or conversation flags; the diff removed one pre-existing side-stripe violation and fixed one expanded-tool-output drift
  • pnpm check + pnpm test (143 passed, 1 skipped) via pre-commit on every commit
  • ghost gather: 16 nodes, 14 material-backed, 2 guards; spot-pulls verified

Changeset: not needed — private package (vessel-light), no public-surface change.

Ghost Review: run as the commit-4 acceptance test (above). One matching subtlety found: checks/values.md wasn't offered by the packet despite its referenced nodes' materials being touched — judged manually (passes); flagged for a ghost-core look, tracked outside this PR.

File changes

Commit 1 — materials: tokens audit
tokens.css: adds --radius-control/--radius-surface, retires --radius-pill/--radius-card (D6); hoists --gap-xs…xl, text sizes, --control-height (D3). primitives.css + two refs migrate to the new names. No visual change.

Commit 2 — corpus: fork-axis re-author (atomic)
15 old nodes → 16 new: grammar.{hierarchy,color-roles,surfaces,rhythm,motion,conversation}, signature.{shape,palette,type,temperature}, register.{data-density,editorial,email}, anti-goal.{median,tells}; glossary rewritten to the four kinds; index.md becomes contract + trust tiers + floor/ceiling doctrine; existing check references patched.

Commit 3 — checks: relationship/value split
checks/density.md retired, split into checks/relationships.md (references grammar., survives fork) and checks/values.md (references signature./register.*, rewritten on fork). checks/median-tells.md gains the demoted rules (gradient-text, emoji-as-icons), frequency thresholds (kickers ≥3, em-dashes ≥5, cadence ≥3, advisory), and model-named tells with skip guidance.

Commit 4 — materials: regenerate refs
All six refs gain normative-for/incidental annotation headers. Form demonstrates the complete emphasis ladder (new .button--link primitive — the fifth rung had no CSS home); overlay demonstrates popover + modal tiers; conversation's tool call becomes a real <details> collapse; editorial's pull-quote side-stripe replaced with a leading quote glyph and kicker count reduced to one; table migrates to --gap-*; email hexes annotated with source token names (D4). All seven tones and six text variants now have demonstration homes — no 7th ref needed (D5). demo/ swept for old node ids.

Commit 5 — docs: README touch-up
README gains the fork-axis structure paragraph and ref-annotation curation guidance.

Screenshots/Demos: Refs are static HTML — open packages/vessel-light/.ghost/materials/ref/*.html directly. Reviewer attention requested on: signature.temperature (voice+motion as one dial), the anti-goal.median preamble (kept per discussion), the new .button--link styling, and the two behavior-visible ref fixes.

…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 nahiyankhan marked this pull request as ready for review July 9, 2026 14:16
@nahiyankhan nahiyankhan merged commit 7d298c9 into vessel Jul 9, 2026
1 check passed
@nahiyankhan nahiyankhan deleted the vessel-light-fork-axis branch July 9, 2026 14:16
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant