chore: version packages#206
Merged
Merged
Conversation
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@design-intelligence/ghost@0.20.0
Minor Changes
#205
0f94bb9Thanks @nahiyankhan! - Addghost.binding/v1(.ghost.bind.yml) and the path road: a repo pathresolves to the surface that owns it (directory-default binding or explicit
declaration), and
ghost gather --path <file>composes that surface's slice.The contract still carries no paths — bindings own all path matching.
#205
0f94bb9Thanks @nahiyankhan! -ghost checksandghost reviewnow route by catalog references and ground from the selected prose packet: grounding is the surface's gathered nodes by provenance (own / ancestor / edge), replacing the typed why/what (principles, contracts, patterns, exemplars) split — the why and what now live in each node's prose.ghost checksgains--as <incarnation>to filter grounding to one output form. Exemplarpath:is dropped from grounding.#205
0f94bb9Thanks @nahiyankhan! - Reduce the fingerprint collection to a flat catalog: remove thechecks,review, andmigratecommands, drop noderelatesedges and traversal, and reducegatherto emitting the menu the agent selects from.#205
0f94bb9Thanks @nahiyankhan! - Remove check surface routing: every check is now offered to the reviewer and the agent judges relevance, so the checksurface:field,selectChecksForSurfaces,RoutedCheck, andCheckRelevanceare gone. Checks bind to the fingerprint through an optionalsource:pointer (node > Heading) thatreviewsurfaces so a finding can cite the prose it enforces.#205
0f94bb9Thanks @nahiyankhan! -ghost init --template compositionscaffolds a composition-steering starter: the default files plus an invariants floor (principle.composition), a worked bound/open/refines pattern node, a glossary whosepatternandprinciplekinds carry the binding-depth convention, and an index that teaches the ladder — patterns when they match, principles as the floor when they don't, narrowing-only between them.#205
0f94bb9Thanks @nahiyankhan! - Adds opt-in wild consumption posture for glossary kinds and gather/pull/pulse observability.#205
0f94bb9Thanks @nahiyankhan! - Recomposegatheron a corridor + hub-and-spoke model and fix a sibling-surfacecontext leak. A surface's slice is now: a spine of full-body nodes from every
file on the corridor (the package root down to the surface's own folder — folders
are walls, so sibling folders never leak in), the edges reachable in one hop
from any spine node's
relates(so a broad rule authored once high in the tree —e.g.
relates: { to: arcade }onfeatures/— reaches every descendant), and aset of spokes: pointer entries (id + description) for the surface's own
descendants and any edge hub's subtree, which the agent pulls on demand. The
CatalogSliceJSON gains aspokesarray; catalog nodes carry their filefolder.Grounding for
checks/reviewremains the full-body spine + edges.#205
0f94bb9Thanks @nahiyankhan! - Add cross-package inheritance viaextends. A package'smanifest.ymlcan declareextends: { <id>: <dir> }, mapping another contract's identity to where it lives. Node refs then reference inherited context by identity, never path —relates: [{ to: brand:core/trust }](the<package-id>:<path>form replaces the earlier npm-style<pkg>#<id>ref grammar). Inherited nodes load read-only and flow into gather and validate like local ones.ghost validateresolves cross-package refs and reports unresolved refs, packages not declared inextends, identity mismatches, and cross-package cycles. This delivers the shared-brand story: one brand contract extended by many products, without copy-paste or merge. One level ofextendsin v1 (no transitive); location is an explicit relative dir (identity-based discovery is a future upgrade that keeps refs unchanged).#205
0f94bb9Thanks @nahiyankhan! - Makedescriptiona first-class node field — the retrieval payload an agent matches a task against, the way a tool is selected by name + description.ghost gatherwith no argument now lists nodes by id + description (the catalog), built from the catalog rather than a separate surface menu. Node frontmatter is now passthrough: free-form descriptive keys (audience,stage, …) are allowed and ride along untouched. The surface composition-edge vocabulary (composes/governed-by) is removed — lateral composition lives on noderelates.#205
0f94bb9Thanks @nahiyankhan! - Collapse the on-disk node model into the directory tree: the layout supplies thecatalog. A node's id is its file path (
marketing/email.md→marketing/email)and its parent is its containing directory; a surface is just a directory, and a
directory's own prose lives in its
index.md(the package-rootindex.mdisthe implicit
corenode). Thesurfaces.ymlspine file and thenodes/directory are removed, along with the node frontmatter
idandunderfields —identity and containment now come from where a file sits, never from frontmatter
or a declared spine. Node frontmatter carries descriptive properties only
(
description,relates,incarnation, plus passthrough keys);relatesandcross-package
extendsrefs are path ids (core/trust,brand:core/trust).ghost initscaffoldsmanifest.yml+ a coreindex.md;ghost migratewrites a directory tree; any
*.mdoutside the reservedchecks/subtree lintsas a node. Moving a node is a rename —
ghost validatereportsrelatesthat nolonger resolve.
#205
0f94bb9Thanks @nahiyankhan! - ExportparseSourceRefandsliceNodeSectionfrom the core entrypoint: the shared parser for a check'ssource:reference grammar (node-id > Heading) and a helper to slice the referenced section out of a node body.#205
0f94bb9Thanks @nahiyankhan! - Bindings can reference an external contract: a.ghost.bind.ymlcontract:nowaccepts an npm package name (
@scope/brand) in addition to.(in-repo),resolved from
node_modules.ghost verifychecks the external contractresolves and that each bound surface exists in it. External fingerprint loading
for grounding remains a follow-up.
#205
0f94bb9Thanks @nahiyankhan! - Remove the facet model — the catalog is now the only fingerprint model. Theintent.yml/inventory.yml/composition.ymlschemas, theGhostFingerprintDocument, the facet→node load-time projection, and the dormant facet slice/grounding are deleted; the loader assembles the package's prose nodes directly into the catalog.ghost lintandghost verifyare replaced by oneghost validateverb (artifact shape pass + catalog pass);ghost emitis removed.ghost scannow reports node/surface contribution instead of facet contribution. Legacy facet packages no longer load directly —ghost validate/load fail with guidance to runghost migrate. Structured exemplar-path and evidence verification is dropped (evidence lives in node prose, per the prose-node model).#205
0f94bb9Thanks @nahiyankhan! - Add fingerprint grounding toghost checks: for each touched surface, emit thewhy (principles and experience contracts) and the what good looks like
(patterns and exemplars with paths), drawn from that surface's slice and
inherited from its ancestors. A flagged check can now cite the design intent it
serves and point at an exemplar. Use
--no-groundingfor relevance only.#205
0f94bb9Thanks @nahiyankhan! - Addghost gather <surface>: compose a surface's context slice (its own placednodes, cascaded ancestors, and one-hop typed-edge contributions) with
provenance, or return the surface menu when no surface is named.
#205
0f94bb9Thanks @nahiyankhan! -ghost gathernow surfaces the glossary's kind purposes as a menu legend, in both markdown and JSON output, so the menu is self-sufficient selection context.#205
0f94bb9Thanks @nahiyankhan! -ghost gathernow composes its context packet from selected fingerprint catalog nodes and emits nodes-by-provenance prose (own / ancestor / edge), and gains--as <incarnation>to filter the packet to one output form (e.g. email, billboard, voice) while always keeping essence (untagged) nodes.#205
0f94bb9Thanks @nahiyankhan! - Return the node menu plus closest-id "did you mean" suggestions whenghost gatheris given an inexact query, instead of a separate ranked-candidatesearch — the agent re-picks by description from the same menu the no-argument
form prints.
gather,checks, andreviewall emit the stableERR_UNKNOWN_SURFACEcode with closest-id suggestions for a node or surfacethat is not in the package.
#205
0f94bb9Thanks @nahiyankhan! - Rename thegatherslice vocabulary to plain language. The JSONslice.spokesfield is now
slice.pointers, and the pointerkind"edge-hub"is now"related"with its origin in afromfield (washub). Docs and the skillbundle drop the spine/corridor/hub-and-spoke metaphors;
edgeprovenance isunchanged.
#205
0f94bb9Thanks @nahiyankhan! - Addghost.check/v1: markdown + frontmatter checks (name,description,severity, optionaltools/turn-limit, plus a Ghostsurface:placement),parsed and linted but never executed by Ghost. Markdown files under a
checks/directory lint as checks. This mirrors the established agent-check format so
Ghost can route and ground checks without owning a check engine.
#205
0f94bb9Thanks @nahiyankhan! - Add local gather/pull event tracing and a pulse report for fingerprint tuning.#205
0f94bb9Thanks @nahiyankhan! - Addgooseas a first-classghost skill install --agentdestination, installing to~/.agents/skills(Goose's canonical global skills directory) and auto-detecting Goose installs.#205
0f94bb9Thanks @nahiyankhan! - Ghost validates material locator liveness and inlines small local materials during pull.#205
0f94bb9Thanks @nahiyankhan! - Addghost migrate: transform a legacy.ghost/package onto the directory-treenode model — derive surface directories from old
topology.scopes, placesingle-scope nodes inside them, and report (never guess) any node it cannot place
unambiguously.
#205
0f94bb9Thanks @nahiyankhan! -ghost initnow scaffolds a node package (manifest.yml+ a coreindex.mdnode) via a template registry (--template <name>,defaultfor now) instead of emittingintent.yml/inventory.yml/composition.yml; the--referenceflag is removed.ghost migratenow performs a one-way conversion of legacy/facet packages into a directory tree of nodes (the facet→node projection becomes the writer) and removes the old facet files. The authoring skill (capture.md,SKILL.md) teaches node authoring with intent/inventory/composition as authoring lenses rather than facet files.#205
0f94bb9Thanks @nahiyankhan! - Remove the path→surface binding (ghost.binding/v1,.ghost.bind.yml) and all nesting (fingerprint stacks, cross-package discovery): one contract per package, surfaces are the only locality.checksandreviewnow take agent-stated--surface <ids>instead of resolving surfaces from a diff;gathertakes only a surface or returns the menu. Removedgather --path,checks --diff,lint --all,verify --all,scan --include-nested,emit --path,init --scope, andinit --monorepo. The agent names the touched surfaces; Ghost no longer infers intent from repo location.#205
0f94bb9Thanks @nahiyankhan! - Addghost pull <id> [<id>…]: emit selected nodes' prose bodies and record selections in the.ghost/.eventsevents tape for fingerprint tuning.#205
0f94bb9Thanks @nahiyankhan! - Addsghost exportto package fingerprints as portable brand artifacts with material locator audits.#205
0f94bb9Thanks @nahiyankhan! - Removecompare,drift,ack,track, anddivergecommands and the directfingerprint.mdmachinery (parser, writer, semantic diff, decisions/dimensions, embeddings, perceptual prior). These rested on a quantified visual-design-system model (fixed dimensions + decision embeddings) that the catalog reframe abandoned; the concepts are parked for a later rethink (see docs/ideas/compare-drift-fleet-rethink.md). The./compareand./driftpackage subpaths and the rootcompare/driftexports are removed.ghost lintnow validates.ghost/packages and node/surface/check artifacts only (directfingerprint.mdis no longer linted); a*.mdnode file lints as aghost.node/v1node.#205
0f94bb9Thanks @nahiyankhan! - Remove cross-packageextendsand inherited nodes. A Ghost package is a singleself-contained contract: its
.ghost/directory tree is the whole fingerprint.The manifest no longer accepts
extends,relatestargets must be local pathids (the
<package>:<path>colon ref is gone), and the catalog drops theorigin/ inherited-node distinction. Useghost --package <dir>to address apackage; there is no shared-brand inheritance in this version.
#205
0f94bb9Thanks @nahiyankhan! - Removes the optional-capability subsystem and its per-capability manifest schema. Checks are now a core capability in a flat.ghost/checks/directory: scaffold withghost checks init(orghost init --with checks), andghost export --no-checksreplaces the old exclusion flag.ghost validateflags packages still using the old nested checks location.#205
0f94bb9Thanks @nahiyankhan! - Remove theincarnationnode field and the--asgather/checks flag. Ghostfingerprints a single-medium product surface; the cross-medium projection axis
(essence vs. incarnation, the portability dial) is dropped rather than shipped
unused. Slices no longer carry an
incarnationfield andResolveCatalogSliceOptionsis removed.
#205
0f94bb9Thanks @nahiyankhan! - Remove the absorbed and dead commands:relay,stack,survey,diff, anddescribe, along with the relay-only context modules and the./relaypackageexport. Their intent now lives in the surface model —
gatherfor context,checksfor diff-routed governance, and bindings for path resolution. The skillbundle teaches the surface workflow.
#205
0f94bb9Thanks @nahiyankhan! - Remove theghost scanandghost signalscommands and the deterministic repo-inventory subsystem; the host agent does its own repo reconnaissance andvalidate/gathercover package inspection.#205
0f94bb9Thanks @nahiyankhan! - Collapse to one check format. Removeghost.validate/v1, thevalidate.ymlfacet, the
ghost checkdeterministic gate, and the./governexport. Ghostnow has a single check format — markdown
ghost.check/v1, routed by surface(
ghost checks) and grounded by the fingerprint.parseUnifiedDiffmoved to aneutral module; the
driftstance ledger is unchanged.#205
0f94bb9Thanks @nahiyankhan! - Standardize the internal collection vocabulary on "catalog" to reflect the flat node set: public exports areGhostCatalog,GhostCatalogNode,buildCatalogMenu,CatalogMenuEntry, andassembleCatalog, and the loaded package exposes acatalogfield.#205
0f94bb9Thanks @nahiyankhan! - Rename the public package from@anarchitecture/ghost-fingerprintto@design-intelligence/ghost. Theghostandghost-fingerprintbins, all subpath exports (/core,/fingerprint,/scan,/cli), and the.ghost/package format are unchanged; only the npm name moves. Release tags and tarballs now use thedesign-intelligence-ghostprefix.#205
0f94bb9Thanks @nahiyankhan! - Rename the npm scope from@decentralized-designto@design-intelligence; the package is now@design-intelligence/ghostand release tarballs/tags use thedesign-intelligence-ghostprefix.#205
0f94bb9Thanks @nahiyankhan! - Rename the published package from@design-intelligence/ghostto@design-intelligence/ghost. Ghost is now a family of packages —ghost-fingerprint(the fingerprint and its CLI),ghost-adherence(thecode-anchored adherence bridge), and
ghost-vessel(the reference body) —and the package name now says which part it is. The
ghostbin, all exportsubpaths (
/fingerprint,/scan,/core,/cli), and the.ghost/on-disk format are unchanged; only the install name moves. Existing installs
keep working from the old name until it is deprecated on npm with a pointer
forward.
#205
0f94bb9Thanks @nahiyankhan! - Collapse the separate adherence package into the fingerprint: nodes carry optionalmaterialslocators, checks become an opt-in capability of the fingerprint package, andghost reviewassembles advisory diff packets from material-backed nodes and checks. The external dispatch to a second binary is removed.#205
0f94bb9Thanks @nahiyankhan! - Retire thechild-wins-by-idfingerprint merge (Leak E): nested.ghost/packages now bind paths to the root contract's surfaces instead of merging their
own facets in. A path resolves to the single root contract, used as-is — a child
package can no longer silently override or disable an inherited rule or check.
The
stack/check/reviewoutputs exposecontractinstead ofmerged,and drop the
provenance.mergefield.#205
0f94bb9Thanks @nahiyankhan! - Rebuildghost reviewon the surface rails: it now resolves the diff's touchedsurfaces (via bindings), selects the markdown checks governing them, and grounds
each in the fingerprint slice — instead of emitting
validate.ymland apath-selection context packet. The advisory-review JSON replaces
fingerprint/context_markdown/checks/stackswithtouched_surfaces,routed_checks, andgrounding.ghost checkremains the deterministic gate.#205
0f94bb9Thanks @nahiyankhan! - Add aghost manifest --format jsoncommand that emits a self-describing manifest of every command and flag, so a host agent can discover the CLI in one call instead of scraping--help. The terminal help, docs-site manifest, and this command all derive from one sharedbuildCliManifest()(also exported from@design-intelligence/ghost/cli).#205
0f94bb9Thanks @nahiyankhan! - Make the steering starter the defaultghost initscaffold, move the old small scaffold to--template minimal, and mark starter steering content as demo guidance to replace.#205
0f94bb9Thanks @nahiyankhan! - Adds steering-ordered pulls, derived concreteness coverage, guard posture review routing, check probes, inspect-pointers for binary materials, and a worked steering starter.#205
0f94bb9Thanks @nahiyankhan! - Adds a steering-ready fingerprint template and skill guidance for authoring, briefing, and auditing agent-readable brand steering.#205
0f94bb9Thanks @nahiyankhan! - Replace topology/applies_to/surface_type/scope coordinates with a surfacecoordinate space and a single surface placement per node. Remove the
ghost.map/v1(map.md) coordinate and routing system; checks now route byapplies_to.paths.#205
0f94bb9Thanks @nahiyankhan! - Add markdown checks (ghost.check/v1) in a package'schecks/directory.ghost checks --surface <ids>grounds the named surfaces and offers everycheck; the host agent judges which apply. A check binds to the prose it enforces
through an optional
source:pointer (a node id with an optional> Heading),not by surface routing. Ghost selects, grounds, and emits checks; it never runs
them.
Patch Changes
#205
0f94bb9Thanks @nahiyankhan! - Reframe fingerprint authoring as elicitation in the skill bundle and docs: remove the repo-scan-first auto-draft mode, rebuild the authoring scenarios around what the human says and shows, and point repo-derived reality at the adherence inventory.#205
0f94bb9Thanks @nahiyankhan! - Add node prose stances and a scored drafting gate to the capture recipe so authoring agents hold draft nodes to anti-slop standards before human curation.#205
0f94bb9Thanks @nahiyankhan! - Remove redundant containment bookkeeping in favor of path-derived ids: parent and ancestor facts are derived from node paths, and the redundant parent/children maps are removed.#205
0f94bb9Thanks @nahiyankhan! - Remove the dormant context-selection machinery (buildContextEntrypoint,buildSelectedContext, and selection-reasons) that was inert since the coordinate removal and orphaned oncereviewmoved onto the surface rails. Internal cleanup; no public surface change.#205
0f94bb9Thanks @nahiyankhan! - Align docs and the skill bundle with the prose-bound check model: checks are nolonger routed by surface, every check is offered and the agent judges which
apply, and a check binds to prose via its optional
source:pointer. Fixthe
ghost scannext-step hint and skill recipes that referenced a nonexistentghost checkcommand.#205
0f94bb9Thanks @nahiyankhan! - Refresh the README and docs site onto the current command set (drop the removedlint/verify/relay/describe/survey/emitcommands).#205
0f94bb9Thanks @nahiyankhan! - Drop two unused runtime dependencies (jiti,tinyglobby) — neither was imported anywhere in source. Ghost now ships three runtime deps (cac,yaml,zod), shrinking the install footprint by ~1.8 MB. Also fix the build to cleartsconfig.tsbuildinfosodist/no longer retains deleted modules from incremental builds (the packed package drops from ~1.9 MB / 777 files to ~397 KB / 248 files).#205
0f94bb9Thanks @nahiyankhan! - Print a one-time stderr notice when the local.ghost/.eventstape is first created, so gather/pull logging is never a surprise.#205
0f94bb9Thanks @nahiyankhan! - Make CLI exit codes consistent so an agent can branch on them: unexpectederrors exit
1, caller mistakes (bad flags, invalid environment, refusedoverwrites) exit
2via a typedUsageError, and a missing package now exits2with aghost inithint instead of leaking a raw filesystem error.#205
0f94bb9Thanks @nahiyankhan! - Lead fingerprint authoring with a concrete first move — capture the one surface whose review feedback keeps repeating — instead of a scenario-classification step.#205
0f94bb9Thanks @nahiyankhan! - Add an inventory-lens authoring reference to the skill bundle.#205
0f94bb9Thanks @nahiyankhan! - Rewrite the package README onto the flat-corpus model: plain-language framing, current CLI commands only, and removal of stale relation-era shapes (relates, surface directories,checks/at the fingerprint root,ghost checks/ghost review/ghost migrate).#205
0f94bb9Thanks @nahiyankhan! - Retire the "three lenses" vocabulary: authoring docs now speak the same steering dimensions the CLI scores (stance, concreteness, patterns), and the inventory recipe becomes references/blocks.md with a neutral block kind in its examples.#205
0f94bb9Thanks @nahiyankhan! - Add a thesis section to the README: agents changed the unit of design work, the work that compounds is architectural, and Ghost is the artifact those decisions live in.#205
0f94bb9Thanks @nahiyankhan! - Clean em dashes out of the shipped skill bundle and package README prose,rewriting them as plain sentences, colons, or parentheticals.
#205
0f94bb9Thanks @nahiyankhan! - Make the glossary the authoritative source of kind semantics in the skill recipes, teach sample and counter-exemplar capture, add ananti-goalstarter kind, and establish theindexnode as the always-pulled carrier of a fingerprint's non-negotiables and silence posture.#205
0f94bb9Thanks @nahiyankhan! - Reorder the skill bundle to lead with the workflow loop and CLI verbs, moving the node-catalog model into a later "How It Works" section.#205
0f94bb9Thanks @nahiyankhan! - Teach the authoring lenses andincarnation/essence distinction from a shown node example instead of negative definitions ("not fields", "essence is untagged").#205
0f94bb9Thanks @nahiyankhan! - Reframe the package README and description around the fingerprint as a portable brand steering packet.#205
0f94bb9Thanks @nahiyankhan! - Updateghost validate --helpto describe what validation actually checks today: manifest shape, node validity, material locators, check references, and glossary kind prefixes.#205
0f94bb9Thanks @nahiyankhan! -ghost validatenow reports a node that fails its own schema instead of silently dropping it from the catalog.