Documentation menu

Release candidate: v0.2.0. These docs cover v0.2.0 scope and limits.

Veil v0.2.0

Release candidate documentation. v0.2.0 includes the capability introspection, runtime/governance hardening, and documentation refresh merged into develop. v0.1.3 remains the latest published package until v0.2.0 is published. See installation to build and install the candidate locally. This page describes the candidate scope; it is not a publication announcement.

Changes from v0.1.3

Release scope is based on main at 0b591f38b6146179cfea9d66f5bf50a1773520d7 and develop at e4df5be69105e8d2fcb76bd6b9c8e249beec3064. Contextual authorization and the public inbound MCP adapter already exist on main; they are not new v0.2.0 APIs.

Compatibility and migration

The package root remains the supported consumer entry point. No internal registry, provider implementation, store, or validator is newly exported. The package version is 0.2.0; ExecutionPlan format remains version: '1.0'.

Reasoning proposes; Veil governs execution

Software, humans, and planners produce a declarative ExecutionPlan. OperatorRuntime validates the plan, resolves registered capabilities and earlier results, validates resolved inputs, authorizes each step, and records execution outcomes. Capabilities define work; providers interact with infrastructure. No particular model or reasoning system is required.

Governed-execution hardening

These boundaries do not make inputs deeply immutable. Nested input and reference contents remain shared. Authorization and invocation share resolved input, with no revalidation between them; deep value stability from authorization to capability invocation is not guaranteed. Structural capture does not cover stored-job replay. See trust boundaries.

Deterministic capability introspection

runtime.listCapabilities() returns inventory in registration order. runtime.describeCapability(name, version?) performs exact, case-sensitive lookup; a supplied version must match exactly. An unknown name or version mismatch returns undefined. This is registered-name lookup, not semantic discovery.

The public CapabilityDescriptor contains name, version, description, risk and inputSchema. Returned descriptors, schema records and field records are fresh, detached and mutable, not frozen. The schema describes Veil’s limited field contract, not full JSON Schema. Inventory is process-global, not private to a runtime or filtered for a caller. Duplicate names remain rejected even when versions differ.

Three questions stay separate:

  1. Introspection: What execution capabilities are registered?
  2. External application or reasoning: Which capability is relevant?
  3. Authorization: May this caller execute it with this input?

Introspection invokes no authorizer, capability or provider. Registration implies neither permission nor provider readiness. Veil adds no semantic search, ranking, embeddings or LLM-driven capability selection. Execution still passes through a normal ExecutionPlan and runtime governance.

See the OperatorRuntime reference for the API example and capability API for the descriptor contract. These examples require the v0.2.0 candidate; do not use them with the published v0.1.3 package.

What remains application-owned

Relevance selection, human approval UI, provider credentials, and external side effects remain application responsibilities. Governed execution is not a sandbox or a promise of deterministic external results. Plans remain sequential; this work adds no DAGs, parallel execution, retries, cancellation, rollback or idempotency enforcement.

Governance tooling limits

The quality harness complements the functional/package checks; it does not prove complete authorization coverage. Its existing legacy exceptions are direct capability dispatch in GET /api/linkedin/status and direct internal job execution in POST /api/jobs/:id/execute. The latter performs per-step authorization but bypasses OperatorRuntime and plan admission. Those paths are not included in the public npm package. Their migration is deferred; v0.2.0 must not be described as eliminating every repository execution bypass. The maintainer accepted the reviewed governance baseline and verification-control findings for this release. That acceptance does not resolve these exceptions, expand checker coverage, or turn the fixed-base comparison against 0b591f3 into a pass.