helix verify reason codes (helixspec, v1)
This page defines the stable reason.code contract for:
helix verify <bundle_dir_or_manifest.json> --json-out <path>- Output schema:
helix.verify_result.v1(seesrc/helix/schema/helix_verify_result_v1.schema.json)
verdict is always one of PASS, FAIL, INCOMPLETE. CI gates must fail closed on FAIL or INCOMPLETE.
Codes (grouped)
General
VERIFY_FAILED: unexpected verifier failure; should be treated as a bug (fail closed).
Path normalization (bundle-internal paths)
PATH_EMPTY: empty path string.PATH_CONTROL_CHARS: path contains control characters.PATH_ABSOLUTE: absolute path (e.g./x,\\x).PATH_WINDOWS_DRIVE: Windows drive/UNC prefix.PATH_NOT_NORMALIZED: empty path segment (e.g.a//b).PATH_TRAVERSAL: dot segments (e.g.../x,./x).PATH_COMPONENT_NOT_DIR: a non-directory appears in a required directory path component.LIMIT_PATH_LENGTH: path exceeds byte/char limit (INCOMPLETE).LIMIT_PATH_DEPTH: path exceeds depth limit (INCOMPLETE).
Manifest parsing + integrity
MANIFEST_NOT_FOUND: manifest path missing.MANIFEST_NOT_REGULAR: manifest exists but is not a regular file.MANIFEST_STAT_FAILED: manifest stat failed.LIMIT_MANIFEST_SIZE: manifest exceeds size limit (INCOMPLETE).MANIFEST_PARSE_FAILED: manifest JSON parse failed.MANIFEST_SCHEMA_MISMATCH: wrong/unknown manifest schema ID.MANIFEST_FILES_INVALID:filesfield missing/invalid type.MANIFEST_ENTRY_INVALID: afiles[]entry is missing required fields or has invalid types.MANIFEST_ENTRY_SHA_INVALID:sha256value is not 64 hex chars.MANIFEST_IDENTITY_MISMATCH: manifest identity hash mismatch.MANIFEST_MISSING_POLICY_HASH: missing requiredpolicy_hash.MANIFEST_MISSING_SEMANTIC_HASH: missing requiredsemantic_hash.MANIFEST_MISSING_DETERMINISM_CLASS: missing requireddeterminism_class.MANIFEST_MISSING_IR_PATH: missing requiredir.path.DUPLICATE_PATH: duplicate normalized path infiles[].CASEFOLD_COLLISION: two paths collide under Unicode case-folding.UNICODE_NORMALIZATION_COLLISION: two distinct raw paths normalize to the same NFC path.LIMIT_FILE_COUNT: file count exceeds limit (INCOMPLETE).
Filesystem entry safety
FILE_MISSING: manifest entry path missing on disk.DIR_NOT_FOUND: manifest entry expected a directory but wasn’t one.FILE_NOT_REGULAR: manifest entry expected a regular file but wasn’t one.SYMLINK_FORBIDDEN: symlinks are forbidden anywhere in verified bundles.HARDLINK_FORBIDDEN: hardlinks are forbidden (INCOMPLETE).FIFO_FORBIDDEN: FIFOs are forbidden.SOCKET_FORBIDDEN: Unix domain sockets are forbidden.DEVICE_NODE_FORBIDDEN: device nodes are forbidden.REPARSE_POINT_FORBIDDEN: Windows reparse points are forbidden.
Hashing / byte-limit enforcement
SHA256_MISMATCH: file sha256 mismatch vs manifest.FILE_STAT_FAILED: file stat failed during verification.FILE_OPEN_FAILED: file open failed during verification.FILE_READ_FAILED: file bytes could not be read when required.FILE_MUTATED_DURING_VERIFY: file changed during verification (INCOMPLETE).LIMIT_TOTAL_BYTES: total hashed bytes exceeded limit (INCOMPLETE).LIMIT_JSON_BYTES: JSON artifact exceeded byte limit (INCOMPLETE).SHA256SUMS_LINE_INVALID:SHA256SUMS.txtline is malformed.
IR requirements
IR_NOT_LISTED:ir.pathmust be present infiles[].IR_MISSING_BYTES: IR bytes missing from verified file set.IR_PARSE_FAILED: IR JSON parse failed.IR_SHA_MISMATCH: IR sha256 mismatch vs manifest.
Policy / semantics binding
POLICY_HASH_MISMATCH: policy hash mismatch.SEMANTIC_HASH_MISMATCH: semantics hash mismatch.DETERMINISM_CLASS_MISMATCH: determinism class mismatch between manifest and policy.
Artifact header + trust enforcement
MISSING_ARTIFACT_HEADER: JSON artifact missing requiredheader.ARTIFACT_HEADER_MISSING_FIELD: required header field missing.ARTIFACT_HEADER_POLICY_HASH_MISMATCH: headerpolicyHashmismatch vs manifest.ARTIFACT_HEADER_SEMANTIC_HASH_MISMATCH: headersemanticHashmismatch vs manifest.ARTIFACT_HEADER_DETERMINISM_CLASS_MISMATCH: headerdeterminismClassmismatch vs manifest.ARTIFACT_HEADER_TRUST_INVALID: headertrustnot in allowed trust labels.ARTIFACT_HEADER_CREATED_UTC_INVALID: headercreatedUtcinvalid.ARTIFACT_HEADER_BACKEND_MISMATCH: header backend fingerprint mismatch vs manifest fingerprint.BACKEND_FINGERPRINT_INCOMPLETE: backend fingerprint incomplete when completeness is required (INCOMPLETE).PLUGIN_INFLUENCE_FORBIDDEN: plugin-derived content present but policy forbids it.TRUST_PROPAGATION_VIOLATION: artifact claims a higher trust label than its contents justify.
Session snapshot header enforcement (*.helix*)
SNAPSHOT_HEADER_MISSING: snapshot missing required header.SNAPSHOT_HEADER_MISSING_FIELD: snapshot header missing required field(s).SNAPSHOT_POLICY_HASH_MISMATCH: snapshot headerpolicyHashmismatch.SNAPSHOT_SEMANTIC_HASH_MISMATCH: snapshot headersemanticHashmismatch.SNAPSHOT_DETERMINISM_CLASS_MISMATCH: snapshot headerdeterminismClassmismatch.
Lint badge + preflight linkage
PREFLIGHT_NOT_OBJECT: preflight report JSON is not an object.PREFLIGHT_SCHEMA_UPGRADE_FAILED: preflight report schema upgrade failed.PREFLIGHT_POLICY_HASH_MISMATCH: preflight report policy hash mismatch vs manifest.PREFLIGHT_HEADER_POLICY_HASH_MISMATCH: preflight report header policy hash mismatch.PREFLIGHT_POLICY_ID_MISMATCH: preflight report policy ID mismatch vs manifest.PREFLIGHT_ARTIFACT_SCHEMA_MISMATCH: preflight report artifact schema mismatch.PREFLIGHT_ARTIFACT_POLICY_HASH_MISMATCH: preflight report artifact policy hash mismatch.PREFLIGHT_ARTIFACT_POLICY_ID_MISMATCH: preflight report artifact policy ID mismatch.PREFLIGHT_ARTIFACT_VERDICT_MISMATCH: preflight report verdict mismatch.LINT_BADGE_NOT_OBJECT: lint badge JSON is not an object.LINT_BADGE_SCHEMA_MISMATCH: lint badge schema mismatch.LINT_BADGE_POLICY_HASH_MISMATCH: lint badge policy hash mismatch vs manifest.LINT_BADGE_POLICY_ID_MISMATCH: lint badge policy ID mismatch vs manifest.LINT_BADGE_ARTIFACT_SCHEMA_MISMATCH: lint badge artifact schema mismatch.LINT_BADGE_ARTIFACT_POLICY_HASH_MISMATCH: lint badge artifact policy hash mismatch.LINT_BADGE_ARTIFACT_POLICY_ID_MISMATCH: lint badge artifact policy ID mismatch.LINT_BADGE_MISSING_PREFLIGHT_REPORT: lint badge requires a preflight report.LINT_BADGE_REPORT_PATH_MISMATCH: lint badge report path mismatch.LINT_BADGE_REPORT_HASH_MISMATCH: lint badge report hash mismatch.LINT_BADGE_ERROR_COUNT_MISMATCH: lint badge error count mismatch.LINT_BADGE_WARNING_COUNT_MISMATCH: lint badge warning count mismatch.LINT_BADGE_STATUS_MISMATCH: lint badge status mismatch.LINT_BADGE_CODES_NOT_LIST: lint badgecodesfield is not a list.LINT_BADGE_CODES_MISMATCH: lint badgecodesmismatch vs report.
D2 distribution checks
These failures are INCOMPLETE unless explicitly noted.
D2_POLICY_MISSING_DISTRIBUTION_CHECKS: policy missing distribution checks block.D2_POLICY_METRICS_INVALID: policy metrics list missing/invalid.D2_EXPECTED_DISTRIBUTION_MISSING: expected distribution artifact missing.D2_RESULTS_MISSING: results artifact missing.D2_EXPECTED_DISTRIBUTION_METRICS_INVALID: expected distribution metrics missing/invalid.D2_RESULTS_OUTCOMES_MISSING: outcomes missing/unavailable for comparison.D2_REPLAY_SAMPLER_PATH_INVALID: replay sampler import path invalid.D2_REPLAY_SAMPLER_IMPORT_FAILED: replay sampler import failed.D2_REPLAY_REQUIRED_NO_SAMPLER: deterministic replay required but unavailable.D2_EXPECTED_METRIC_MISSING: expected distribution missing a required metric.D2_METRIC_MISMATCH: metric mismatch vs expected distribution (FAIL).
Divergence proof bundle verification
DIVERGENCE_REPORT_MISSING: divergence report artifact missing.DIVERGENCE_REPORT_SCHEMA_INVALID: divergence report schema missing/invalid.DIVERGENCE_REPORT_HASH_MISMATCH: divergence report hash mismatch.DIVERGENCE_MANIFEST_REPORT_MISMATCH: manifest/report inconsistency.SUB_BUNDLE_PATH_MISSING: divergence bundle missing embeddedrun_aorrun_b(INCOMPLETE).SUB_BUNDLE_MANIFEST_SHA_MISSING: pinned sub-bundle manifest digest missing.SUB_BUNDLE_MANIFEST_SHA_MISMATCH: pinned sub-bundle manifest digest mismatch.RUN_GRAPH_MISSING: embedded run manifest missingrun_graph.json.DIVERGENCE_RUN_GRAPH_HASH_MISMATCH: run graph hash mismatch vs divergence report.
Receipts vs run graph consistency
RECEIPTS_RUN_GRAPH_PATH_MISMATCH: receiptsrun_graph_pathmismatch.RECEIPTS_RUN_GRAPH_SHA256_MISMATCH: receipts sha mismatch forrun_graph.json.RECEIPTS_RUN_GRAPH_HASH_MISMATCH: receipts internal hash mismatch forrun_graph.json.
Numeric comparison (policy tolerances)
NUMERIC_COMPARISON_FAILED: numeric comparison failed under policy tolerance rules.