Run artifact

workspace/targets/jq/blueprint/FEATURE-Process-Contract.md

FEATURE: jq Process Contract

FieldValue
Version20260822 V1
DescriptionDefines jq compilation, runtime failure, success, partial-output, and diagnostic process behavior.
Depends OnFEATURE-Executable-Entry-Point.md
Providescompile exit 3, runtime exit 5, success exit 0, stderr diagnostics
Consumes./jq -c program execution

Compile and Runtime Outcomes

ConditionExit
Program compiles and finishes0
Program is rejected during compilation3
Program compiles and raises during evaluation5

A compile failure must not be reported as a runtime failure. A runtime failure may occur after values have already been emitted; those values remain observable on stdout. Diagnostics go to stderr and are not part of the value stream.

Programmatic Acceptance

=== AC exec-002-compile-runtime ===
Intent: The executable distinguishes compile failures, runtime failures, and successful completion.
Suite: scoped
Requires: executable=python3; scope=test

import subprocess

compile_result = subprocess.run( ["./jq", "-c", "{",], input="null\n", capture_output=True, text=True, ) runtime_result = subprocess.run( ["./jq", "-c", "error"], input="null\n", capture_output=True, text=True, ) success_result = subprocess.run( ["./jq", "-c", "."], input="null\n", capture_output=True, text=True, ) assert compile_result.returncode == 3 assert runtime_result.returncode == 5 assert success_result.returncode == 0 assert compile_result.stderr != "" assert runtime_result.stderr != "" === END AC exec-002-compile-runtime ===

=== AC exec-002-statuses ===
Intent: The executable exposes distinct compile, runtime, and successful completion statuses.

import subprocess

compile_result = subprocess.run( ["./jq", "-c", "{",], input="null\n", capture_output=True, text=True, ) runtime_result = subprocess.run( ["./jq", "-c", "error"], input="null\n", capture_output=True, text=True, ) success_result = subprocess.run( ["./jq", "-c", "."], input="null\n", capture_output=True, text=True, ) assert compile_result.returncode == 3 assert runtime_result.returncode == 5 assert success_result.returncode == 0 === END AC exec-002-statuses ===

=== AC exec-002-partial-output ===
Intent: A runtime failure preserves values emitted before the failure and keeps diagnostics off standard output.

import subprocess

result = subprocess.run( ["./jq", "-c", "1, error"], input="null\n", capture_output=True, text=True, ) print(result.stdout) print(result.stderr, file=import("sys").stderr) assert result.returncode == 5 assert result.stdout.splitlines() == ["1"] assert result.stderr != "" === END AC exec-002-partial-output ===

User Acceptance

Guardrails