Skip to content

POWER Application API v2 — 3.7.11 Release

Envelope

Every supported ApplicationService operation returns the JSON-compatible power.application.v2 envelope:

Field Contract
schema_version power.application.v2
operation Canonical use-case name
status ok or explicit unavailable
data Strictly serializable operation DTO
receipt Content-free digest, operation, request/idempotency identifiers, timing
request_id Safe correlation token stable for the operation
actual_capability Executed mode, including degraded read fallback
source_revision Active generation source snapshot or null/empty when unavailable
degraded_reason Machine-readable degradation reason when applicable

RequestContext rejects empty actors, unknown authority values, unsafe request IDs, unsafe idempotency keys, and non-positive deadlines before executing a use case. Deadline expiry cannot return a successful envelope. Receipts never carry note bodies, secrets, absolute paths, stack traces, or model/cache paths.

Source read model

The authoritative source remains Markdown/Git. power sync builds an immutable, rebuildable generation. The same staged SQLite generation contains the FTS data and the source projection tables:

  • source_metadata — path, title, category, tags, size, modification time and content digest;
  • source_links — deterministic resolved links;
  • source_link_ambiguities — unresolved targets with sorted candidates;
  • source_projection_meta — schema, source revision and row counts.

With a verified active generation, source.list, source.stats, and source.graph read metadata and links from the projection and do not parse Markdown. They perform a bounded filesystem metadata freshness check against the projected source set; a missing generation uses an explicit bounded degraded scan and never creates vault identity or cache state. A corrupt active generation fails closed.

Search reads follow the same no-hidden-write rule for vault-owned state: FTS and TF-vector requests use a verified generation when present, or a bounded in-memory fallback when no generation exists. They do not create .power, a cache namespace, or a legacy index during a normal request. The explicit POWER_SEARCH_DB test/developer override retains its compatibility bootstrap behavior and is not a production deployment profile. The bounded fallback is labelled no_active_generation_bounded_scan in result metadata.

source.read resolves both exact paths and stems through the canonical source projection before opening bytes. A readable source must be a current, regular, non-symlink Markdown file in the existing P.A.R.A./ignore scope with valid OKF metadata; filesystem containment alone is not authorization. Unsupported regular files, control directories, absolute paths, traversal, and projection misses use typed not-found/invalid failures without returning file contents, size, digest, or internal control metadata. Multiple stem candidates produce a typed conflict rather than silently selecting the first file. last_indexed_at is the generation completion time, healthy means verified projection coverage/integrity, and total_links counts resolved links only. Ambiguities remain separately visible in graph data.

Graph focus_path and max_depth implement deterministic bounded BFS. A missing focus path is a typed not-found result; max_depth is not an echoed decorative parameter.

Projection-backed aggregate reads validate the current Markdown file inventory against projected size/mtime metadata. A changed or missing source is reported as typed source_projection_stale and fails closed; operators must run power sync rather than receive stale healthy metadata.

Transport support matrix

Operation Direct API CLI MCP stdio Web UI
source.list supported not published not published supported through PowerClient
source.stats supported not published not published supported through PowerClient
source.read supported not published not published (catalog reads only) supported through PowerClient
source.graph supported not published not published supported through PowerClient
retrieve supported supported supported supported through PowerClient
Task/Decision/Proposal/Receipt supported supported adapter paths supported adapter paths supported through PowerClient
INFRA-1 broker action supported through infra_action power infra infra_action not exposed

Unused speculative source CLI/MCP commands are intentionally not frozen in this candidate. New transport operations require explicit capability negotiation.

INFRA-1 action boundary

ApplicationService.infra_action() accepts the strict InfraRequest model and returns the normal power.application.v2 envelope. Its nested result is a closed InfraResponse containing status, operation, target/profile identifiers, task binding, request digest, bounded data payload (InfraResponseData), and either an InfraOperationReceipt or an InfraCapabilityBlockReceipt. The method applies the normal principal, deadline, result-budget, audit-hook, and Task revision checks.

An infra receipt is not a power.task-completion.v1 receipt. A caller must run the separate fixed verify operation and then use the existing governed TaskService completion flow if a task should become terminal. Missing broker, credential, host identity, or network remains blocked; missing approval is auth-required; only missing business/request identifiers are input-required.

Compatibility

The historical unified POWER v3.7.8 baseline remains immutable. The current patch v3.7.11 release is accepted only when its exact commit, wheel, Web image digest, SBOM and release receipts are read back from the publication workflow.