# Glossary

The repository, package, versioning, and publishing terms used throughout Semifold.

Source: https://semifold.noctisynth.org/docs/concepts/glossary/
Language: en



Use this page when a Semifold term is unfamiliar or when two similar concepts need to be distinguished.

## Repository and packages [#repository-and-packages]

### Monorepo [#monorepo]

A Git repository that contains more than one independently versioned package or project. A **polyglot monorepo** contains packages from multiple language ecosystems.

### Workspace [#workspace]

The set of packages Semifold manages as one dependency graph. Semifold builds this graph from package manifests, built-in ecosystem adapters, repository-local plugins, and explicit `depends-on` relationships.

### Package [#package]

One versioned unit in the workspace. A package has a stable `PackageId`, a manifest name, a version, a path, an ecosystem, and a publishability state.

### PackageId [#packageid]

The stable identifier used as a key under `[packages]` in `.changes/config.toml` and in changesets. It does not have to equal the name published to a registry.

```toml
[packages.web-bindings]
path = "packages/web"
resolver = "nodejs"
```

Here, `web-bindings` is the `PackageId`; the `name` in `package.json` may be different.

### Manifest [#manifest]

The ecosystem-specific file that describes a package. Examples include `Cargo.toml`, `package.json`, `pyproject.toml`, `CMakeLists.txt`, and `vcpkg.json`.

## Ecosystems and extension [#ecosystems-and-extension]

### Ecosystem [#ecosystem]

A package format and its surrounding version and publishing conventions, such as Cargo/crates.io or npm. Semifold identifies each ecosystem with a stable ID such as `rust`, `nodejs`, or `com.example.game`.

### Adapter and resolver [#adapter-and-resolver]

An **adapter** is the implementation boundary that discovers packages, reads their versions and dependencies, and plans manifest edits. The configuration uses the historical name `resolver` to select an ecosystem and to define its publish commands and registry pre-check.

### Plugin [#plugin]

A repository-local, single-file JavaScript implementation of an ecosystem adapter. A plugin can discover and inspect packages and plan version edits. It cannot write files, run commands, access host credentials, publish packages, or create Forge releases.

## Versioning [#versioning]

### Changeset [#changeset]

A small Markdown file under `.changes/` that records which `PackageId` values changed, their requested version bump, their changelog category, and a human-readable summary.

### Bump level [#bump-level]

The requested version increase: `patch`, `minor`, or `major`. Dependency propagation and release-channel rules may increase or add package bumps after the direct changesets are read.

### Changelog tag [#changelog-tag]

A label such as `feat` or `fix` that chooses a changelog section. A tag categorizes a change; it does not select a release channel.

### Release channel [#release-channel]

The publishing state of a package, such as `stable`, `rc`, or `beta`. Named channels affect version encoding and, for Node.js, should be paired with the corresponding npm dist-tag.

### Release plan [#release-plan]

The immutable result displayed by `smif status`: target versions, reasons, dependency propagation, planned file edits, and a fingerprint. `smif version` computes and applies the same release decision from the same repository state.

## Publishing [#publishing]

### Publish plan [#publish-plan]

The ordered work Semifold derives after versions and changelogs have been written. It contains registry checks, prepublish and publish commands, package ordering, and optional Forge work.

### Registry [#registry]

The package service that stores published versions, such as crates.io, npm, or PyPI. Semifold can run an HTTP or command pre-check before executing a package's publish command.

### Forge [#forge]

A source-hosting and release service. Semifold currently integrates with GitHub Releases and release assets independently from registry publishing.

### Dry run [#dry-run]

A preview execution selected with `--dry-run`. File, registry, and Forge mutations are skipped. Read-only registry pre-checks still run, and a configured command runs only when it explicitly has `dry-run = true`.

## Where to continue [#where-to-continue]

* [Understand Semifold](https://semifold.noctisynth.org/docs/introduction/) for the complete product model.
* [Configuration overview](https://semifold.noctisynth.org/docs/configuration/overview/) for how these concepts appear in `.changes/config.toml`.
* [Plugin system](https://semifold.noctisynth.org/docs/plugins/overview/) for custom ecosystem support.

