Base packs: agents you inherit
v2.3.0 ships the core base pack: versioned RevOps agents a workspace inherits with extends: core and overrides in YAML — with per-layer provenance and a guard that stops any override from loosening an approval gate.
Every Vocion install so far has re-authored the same RevOps agents from scratch. A revenue
front-door coordinator, a proposal specialist, the pipeline-health operation behind them — each
new workspace started by copy-pasting YAML from the last one and editing it in place. Copies
drift. A prompt fix or a safety tweak lands in one workspace and never reaches the others, and
six months in nobody can say which fork has the good version. This release pair (v2.3.0 on
2026-08-12 and v2.4.0 on 2026-08-17) replaces the copy with inheritance: a versioned base
pack that ships inside vocion-core, which a workspace activates and overrides instead of
re-authoring.
What's new
extends: core@1.0.0inworkspace.yaml. Three verbs, all in the manifest:extendspins the pack,useactivates agents (use: alltakes everything),disablesubtracts a default. Activation is agent-rooted — namingrevenue-directorpulls its operations and object types transitively, so you never hand-list skills.- The pack ships real agents.
revenue-director(the workspace's front door — consults team leads, synthesizes one decision-ready picture) andproposal-writer, plus thepipeline_healthandproposal_briefoperations they declare. Generic skeletons: no customer teams, people, or connectors — your workspace layers those on. - Override, don't fork. Drop a same-slug file marked
extends: coreand mention only what changes: scalars replace the base value, arrays take{ $append: [...] }/{ $remove: [...] }, and every field you don't mention is inherited unchanged. A colliding slug without the marker is a hard error — declare intent or rename. - Provenance. Every loaded definition carries an origin —
core,workspace, ormerged— and the resolved pack pin folds intoworkspace_sha(e.g.<sha>+core@1.0.0), so "exactly what ran" still has one answer even when the workspace files didn't change. - Approval-downgrade guard. A workspace override cannot flip a base operation's
requiresApproval: truetofalse. Caught at load, soworkspace:checkfails too. - Both layers in the drilldown. Agent and operation pages now show the inherited base file
as a read-only tab tagged
corenext to your editable override; a purely inherited default shows the core layer alone (previously that page had nothing to render). - Ghost cards (
v2.4.0). The Agents page renders core agents you haven't activated as greyed, non-clickable "Core · not activated" cards, with an All / Activated / Not activated filter — the catalog of what the pack offers, visible from the dashboard. - Nothing is required. Omit
extendsand your workspace loads byte-for-byte as before.
Why we built it
A base pack is not a seed. The Meridian sample workspace is a one-shot copy into an empty org —
useful for a demo, but from that moment it's a fork. The pack is a compose-at-load layer:
core@1.0.0 stays maintained upstream, and a workspace moves to a new version only by bumping
its own pin. Publishing core@1.1.0 never silently reaches a pinned instance, and the pin in
workspace_sha means two installs on different pack versions are distinguishable in every
audit row.
The approval-downgrade guard deserves its own paragraph, because inheritance creates a failure
mode plain YAML never had. Vocion's safety model is drafts-only: any operation that touches the
outside world — sending mail, writing a CRM record — declares requiresApproval: true and
stops at a human. Once definitions merge across layers, a one-line workspace override could
flip that flag on an inherited operation, and nobody reviewing the workspace diff would see the
base file it was quietly disarming. So the loader refuses the downgrade outright: if the base
declares an approval gate, no override can remove it, and because the pin is explicit, no pack
update can rearrange gates under you without a diff you chose to take. Overrides that keep the
gate merge normally.
Where to find it
- Manifest:
extends/use/disableinworkspace.yaml; validate withnpm run workspace:check. - Dashboard:
/dashboard/agentsfor ghost cards and the activation filter;/dashboard/agents/<slug>for the layered drilldown with thecorebadge. - Docs: the "Base packs — activate + extend" section of
docs/workspace.mdin vocion-core covers the full merge vocabulary and guardrails. - Code:
packages/core/src/libs/workspace/{merge,compose,loader,reader}.tsand the pack itself atpackages/core/templates/base/. - Releases: https://github.com/vocion/vocion-core/releases/tag/v2.3.0 and https://github.com/vocion/vocion-core/releases/tag/v2.4.0