# Manage workspaces, packages, and source transactions

This recipe changes one project without creating hidden manifests or merging
workspace roots. Commands and source are illustrative end-product syntax.

## Declare a workspace

```one
one 1

semantic acme.workspace
    domain one.project@1
    workspace Acme@1
        project ./parcelhub
        project ./support-triage
```

Each project retains its own `one.one`, lock, roots, plans, artifacts,
authority, and History.

## Propose a package change

```console
one package add acme.commerce@1 --project parcelhub
one inspect source-transaction:sha256:…
```

```text
base source revision:sha256:old…
patch parcelhub/one/contracts.one
lock parcelhub/one.lock revision:sha256:new…
affected roots parcelhub_embedded, parcelhub_orders_desk
```

## Commit only against current bases

```console
one check --project parcelhub
one test --project parcelhub
one source apply source-transaction:sha256:…
```

A stale base rejects instead of silently rebasing. Structured editor views use
the same source transaction and never persist a second semantic model.

## Format without changing unknown bodies

```console
one fmt parcelhub/one/contracts.one
```

The envelope and known semantic regions format canonically. Unknown
implementation-language bodies remain byte-preserved.

See [project and workspace](/one/reference/project) and
[source and meaning](/one/model/source-and-meaning).
