Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Changes
Pull request on omacom/omarchyPR#7564open7/8 · AI reviewedquattro7b49d0bb606dAI: in scope · 99%

Make the keybindings menu's Lua bind scan safe against load-time config reads

by tobi · updated 3 days ago

Pipeline
  1. Detected
  2. Mirrored
  3. Baseline ready
  4. Audited
  5. Covered
  6. Evidence published
  7. AI reviewed
  8. Awaiting assessment

Next: Awaiting assessment. Derived by the engine for upstream head 7b49d0bb606d · refreshed at sync 2026-10-12 01:30 UTC.

Evaluated against proof baseline 1e43373 · baseline since moved to 18528a6 (quattro unchanged at 035ce29)The proof baseline moved since this evaluation (7 commits, proof records only); the evidence still applies.
← Review-by-exception view
  1. AcceptingMake the keybindings menu's Lua bind scan safe against load-time config reads (linked #12052, #12124, #7025). No requirement was added or changed — the intent is declared only in the PR.
  2. Affects3 files · 2 requirements in 1 area (2 via the changed files) · mapping is file-level, so this is an upper bound · 1 changed file is outside the verification scope.
  3. Works?Shown: all 2 behavioral claims observed passing; coverage of 1 changed file was not measured.
  4. Unresolved3 behaviors need a test.
  5. DecisionMaintainer: accept or reject the change — the evidence is ready — evaluated at e1ff55c (head 7b49d0b, base 1e43373).
Evidence current

What am I accepting?

Intended change

“Make the keybindings menu's Lua bind scan safe against load-time config reads”Declared by the change request· reason:#12052#12124#7025

The author's description (excerpt)
## Problem

Approved intent (spec changes)

No requirement is added, modified or deleted by this change — the intent is not codified in the spec.

Behavior that must be preserved

2 requirements are in reach (2 whose traced file changed); none is intended to change — each must keep holding. Listed by area under What could it affect? ↓

What could it affect?

2 requirements · 1 area

Changed code

  • Modifiedbuild_lua_bind_cache()modifiedfile-level trace onlykeybindings_cache_key()modifiedfile-level trace only
  • Modifiedmake_home()addedno requirementcache_has_ssh()deletedscan_has_ssh()addedno requirement
  • Modified
  • Added
1 changed file is outside the verification scope (e.g. reproducers) — listed for transparency.

Areas (components)

2 requirements in 1 component (2 changed); around them: 1 parent requirement, 8 open findings, 1 test, 1 code file.

Open in Map

Customer promises reached2

Important boundaries

No interface contract is recorded as crossed by this change.

Uncertainty in this analysis

one coherent change · code is mapped to requirements by whole file, so “reached” is an upper bound

8 analysis limits · how this was computed

Engine note (spec clusters): All 2 touched requirement(s) are related in the intent graph (satisfies/parent, sibling or shared component).

Scope method: changed units from review.diff (function-granular where a parser exists, else file-granular) traced against the requirements' implemented_by/verified_by targets and local annotations; touched requirements clustered in the intent graph (satisfies/parent incl. siblings under a parent with <= 20 children, shared component, interface contracts); uncodified connections from call-level impact paths (review.changes impactPath); removed-code traces from trace targets and removed diff lines

  • Function-level mapping comes from trace targets path:symbol / line ranges (authored + derived) and function-local annotations; a whole-file trace is file-level (weak) and says nothing about which function a requirement needs.
  • Intent relations: requirement level = satisfies/parent or siblings under a parent with <= 20 children; component level = shared component (incl. traces.components); contract level = an interface requirement naming both components. A missing spec edge can make a real dependency look uncodified, and a broad contract can make an uncodified dependency look related — every candidate is a question for a reviewer, not a verdict on the code or the spec.
  • Removed-code traces: targets naming a removed/renamed/moved function or a deleted file, and requirement ids cited on removed diff lines that the evaluated file no longer cites. remainingTraces counts the requirement's other code targets at the evaluated revision without re-checking that each still resolves.
  • Renamed/moved detection is best effort: a removed and an added function with the same name in different files are "moved"; a different name with >= 80% identical normalized body lines (>= 3 lines) is "renamed"; anything else is removed + added.
  • Scope clusters are seeded only by directly touched requirements (spec changes and code_changed); behavior_affected requirements are what the change reaches and are judged by the uncodified-connection rule instead.
  • Uncodified connections need call-level impact (review.effects — C/C++ only today): this package has none, so NO uncodified connection could be detected. Absence of such candidates proves nothing here.
  • Units are function-granular only where a parser extracts function boundaries (tree-sitter languages, plus C/C++ function-like macros); other changed files are one file-granular unit, and hunks outside any function are attributed to the file only when no function of that file changed.
  • When a changed function is traced only at FILE level, every requirement of its file is a from-side seed: a relation through any of them counts as codified, so a coarse trace can MASK an uncodified connection (and inflate scope clusters — see coarse_trace).

Why should I believe it works?

observed results only — AI opinion never counts as evidence

Behavioral claims → observed results

All 2 claims observed passing.

The 2 claims, as a table
RequirementClaimObservedTestsDisclosures
SW-REQ-260922-0W96Still holdsObserved passing3✓ 0✗ 0∅ 0?
SW-REQ-260922-9DMSStill holdsObserved passing2✓ 0✗ 0∅ 0?

Changed-code coverage

0 of 0 changed decision lines reached by tests the untested spots and the tests that would cover them ↓

Not measured for bin/omarchy-menu-keybindings.

What remains unresolved?

4 open disclosures — each listed once, introduced first

Introduced failures0

None outside the other groups below.

Missing evidence3

3 behaviors need a test

  • Unverified hazard — needs a testQuestion: should a library call on a stub value in a user module still drop every bind loaded after it?

    Test that would settle it: A user module with a type-checked library call does not drop binds loaded after it

    How to write it

    Append to menu-keybindings-lua-scan-test.sh. hyprland.lua requires hypr.monitors, then hypr.bindings. monitors.lua does string.format("%dx%d", m.width, m.height). Assert the bind from bindings.lua is reported. It fails on this merge; a per-module pcall around require passes it.

  • Unverified hazard — needs a testQuestion: an unguarded numeric index on a stub list still ends the scan. Not fixed by this PR; should it be?

    Test that would settle it: An unguarded hl.get_monitors()[1].name in a user module does not drop later binds

    How to write it

    Same fixture as above, with local first = hl.get_monitors()[1]; hl.monitor({ output = first.name }) in monitors.lua. It fails on this merge; the per-module pcall passes it.

  • Unverified hazard — needs a testQuestion: is a 10s wait plus a partial bind list the intended outcome for a config the stub still cannot finish?

    Test that would settle it: A load-time loop the stub never ends: bounded wait, earlier binds kept

    How to write it

    Fixture: a bind, then local w = hl.get_active_window(); while w and w.parent do w = w.parent end. Assert the scan returns within ~10s, no lua process remains, and the earlier bind is reported. This states the intended bound explicitly.

Spec questions and disagreements— the engine raises · an AI may argue · a human decides

The code and the spec agree — no code-vs-spec question was raised for this change.

Limitations

Exceptions and weakened protections

None — the PR leaves the approved policy unchanged; no suppression or waiver is recorded.

Not compared with a baseline run, so nothing is shown as pre-existing.

What decision is mine?

Next decision

Human judgementbecause the evidence is ready for acceptance

Accept the change: the evidence is ready under the approved policy.

Required authority

Maintainer — under the approved policy at 1e43373287

Accepted identities: GitHub login or portal user · enforced by the portal / GitHub

Evaluated revision

Evaluated
e1ff55c9103cSynthetic merge
PR head
7b49d0bb606dcurrent
Base
1e43373287afquattro-proofcurrent
Policy
sha256:19ad4c0c6f…current

Compared against base audit run-f5b0e01eb640 at 1e43373287af — failed checks are split into pre-existing vs introduced.

Current: head, base and approved policy are unchanged.

Producer not verified (evidence is informational, not assurance). Provenance

Acceptance: none recorded in this evidence. Readiness is not acceptance, and the merge state is GitHub's.

Audit trail

the verbatim record — every disclosure, the AI review, risk rules, call routes, tests, audit checks, provenance, history
Every disclosure, by consequence0 block · 0 prevent ready · 0 need judgement · 4 for information

0 block · 0 prevent ready · 0 need judgement · 4 for information

For information4

Routine evidence:178 checks passed · 27 advisory · 1 not applicable · 3 verifying tests passed · 2 claims observed passing

AI review — supporting commentary4 ✓ · 3 need test · 0 refuted · cannot change readiness or the next decision
AI review · claude-code/claude-opus-5.5assessed Medium risk6 days agoderived from the evidence — not a verdict

What the PR does. Upstream #7564 (tobi) fixes the keybindings menu's Lua bind scan, which runs the user's hyprland.lua under a stub hl. The stub now answers nil for numeric keys, so ipairs over stub values ends. Comparisons, arithmetic, .., # and tostring give harmless values instead of raising. The scan runs under timeout 10, and the cache version goes v14 to v15. A new test (menu-keybindings-lua-scan-test.sh) pins it. On the mirror that is commit 454ad3cd. The later commits are our proof work: a two-arm reproducer, KI notes and evidence, trace re-reviews, a Verifies: line on the PR's test, and two obligation tags on existing keycode tests.

Risk rationale: The change is small and targeted. The PR's test fails at the base and passes on the merge, and it fixes every reported trigger: qconsole's comparison and ipairs loops over stub values. But coverage of the changed Lua was not measured. The package's compatible result does not exercise the scan. The one observed obligation cell rests on keycode tests that the change does not touch. Two user-config patterns still drop every later bind: a type-checked library call on a stub value, and an unguarded numeric index. Neither is a regression against base as shipped. This assessment is advisory only.

Read the full review (6 more paragraphs)

Is the fix verified? Coverage of the changed file was not measured (coverage_unmeasured): the changed lines are Lua inside a heredoc. The PR's scan test ran in the audit and passed. 69 results were ingested (69 passed, 0 failed). My runs: the scan test fails at base 1e433732 (the scan spins to the 10s limit) and passes 3/3 on the merge. The KI reproducer's shipped-config arm flips; its user-module arm does not.

Compatibility. The package says compatible (4 sources, 0 findings). But the differential harness covers only the menu QML/JS files, and the removed-behaviour inventory is empty, so none of this exercises the scan.

Readiness. ready under the approved policy, with 4 informational disclosures. The next decision is human_judgement (acceptance), by a maintainer. Nothing in this review is an approval.

Questions for a human. (1) A library call that type-checks its argument (string.format("%d", m.width), math.floor) in a user monitors.lua still ends the scan before hypr.bindings. (2) An unguarded hl.get_monitors()[1].name also ends it, because numeric keys now answer nil. On base as shipped the scan already stopped at qconsole, so for such a user the PR leaves the binds missing; it does not fix them. (3) A config the stub cannot finish now makes the menu wait 10s. A per-module pcall around require settles (1) and (2) in my runs.

Traceability. 0W96 and 9DMS match only at file level. Change effects were not analyzed (effects_unavailable), so the empty spec-gap list proves nothing.

Not caused by this PR. No gate failed: 178 passed, unchanged from the baseline. 13 were skipped by configuration. The reproducer file is out of scope.

AI-generated review opinion derived from the evidence package. It is not a verdict, does not change readiness, and must be confirmed by a human reviewer.

12 context notes (info — not a finding)
  • AI · confirmedThe stub change serves SW-REQ-260922-0W96: binds declared after load-time config reads reach the cache again

    0W96: "Binds Hyprland reports as dispatcher __lua are shown with resolved keys from the source-derived cache and remain dispatchable." The cache is built by build_lua_bind_cache, which runs the user's hyprland.lua under the stub (pcall(dofile, config) at line 296). Before this PR, one throwing read ended the scan, and every bind declared after it was missing. The new stub (lines 199-254) absorbs the shipped trigger, qconsole's mon.scale comparison. The match is file-level only: no function-level trace names build_lua_bind_cache.

  • AI · confirmedSW-REQ-260922-9DMS is touched only through file-level traces; keycode resolution is unchanged

    9DMS covers code:N keysym resolution (xkbcli, the fallback table, GRAVE as ~). The PR does not touch parse_keycodes, the xkbcli lookup or the fallback table. The scan still emits code:N keys in the same field. The cache-key bump to v15 (line 598) only makes existing caches rebuild once. The other changed file matched to 9DMS is keybindings-menu-test.sh: two obligation-tag comments added by our proof work. That test passed in the run.

  • AI opinion — unverifiedThe purpose is exercised by the PR's own test, but coverage of the changed code was not measured

    review.diffCoverage counts 0 changed decisions: bin/omarchy-menu-keybindings is unmeasured, and the changed lines are Lua inside a bash heredoc that the bash coverage does not see (disclosure coverage_unmeasured). The execution evidence is the PR's test. menu-keybindings-lua-scan-test.sh runs the embedded scan over a config that loops over, compares and computes with stub values. It then checks that two binds declared afterwards are reported (lines 47-58). It passed in the audit run. My runs on scratch copies: base 1e433732 fails Lua bind scan exits cleanly ... after the 10s timeout; the merge passes 3/3 in 0.06s. bin/ and this test are byte-identical between e1ff55c9 and the earlier merge 60750dc8, where I ran them.

  • AI opinion — unverifiedRemoved-behaviour inventory (my reading; the engine's inventory is empty)

    What the old stub did, and what the PR says about it. (a) Every key, numeric ones included, returned the stub. Now a numeric key gives nil (line 202). The PR states it: "noop.__index answers nil for numeric keys (so ipairs/numeric loops end)". Its side effect on direct indexing is finding 6. (b) Comparisons, arithmetic and .. on a stub raised and ended the scan. Now they give false, 0 and a string (lines 214-250); PR: "degrade to harmless values instead of raising". (c) tostring(stub) gave table: 0x...; now it gives an empty string (line 251). (d) The scan had no time limit; now it has 10s (line 90). (e) The cache version was v14; now it is v15 (line 598). (a), (b) and (d) are the PR's stated intent. No test pins (c). None of these is recorded with proof change behavior-diff classify-inventory.

  • AI opinion — unverifiedKI-MENU-KEYBINDINGS-SCAN-DOFILE-ABORT stays open: arm A flips with this PR, arm B does not

    My run of pocs/crs-260930-jvx8-c01.sh (a copy that keeps its scratch dir) gives these results. Base 1e433732: arm A fails at qconsole.lua:123 (attempt to compare number with table) and arm B at bad argument #2 to 'format'; both lose the SSH bind. The merge: arm A keeps the bind; arm B still loses it; the control passes. The KI's remediation names a per-require pcall boundary. Our proof commits 2300da6c, 0c2ae27b, aeae174b and c6b255fc record the same effect, plus the numeric-index case, in the KI notes and evidence.

  • AI opinion — unverifiedThe cache version bump makes stale caches rebuild; other open PRs also pick v15 (opinion, outside the package)

    keybindings_cache_key now hashes v15 (line 598), so a cache written by the old scan, with binds missing, is not reused. That is intended: the key covers only the version, the keymap and hyprctl binds, so a scanner fix changes nothing else in it. Several other open upstream PRs that edit this script also move to v15. Whichever merges second needs a fresh number, or it reuses caches written by the first.

  • AI · confirmedpocs/crs-260930-jvx8-c01.sh is our proof-layer reproducer, not part of the upstream PR

    Commits 2e26e5df and 8a396d2b rewrite the KI reproducer. make_home copies the whole shipped hypr config: a partial copy would end a fixed scan on a missing module and read as the defect. scan_has_ssh replaces cache_has_ssh and runs one fresh scan per arm. These are unmapped units, and the file is outside the approved verification scope (changed_files_out_of_scope). They realize the KI's reproducer for 0W96, so no product requirement is missing.

  • AI · confirmedscan_has_ssh, the reproducer's per-arm probe, is unmapped for the same reason

    It clears the three global LUA_BIND_* maps, runs build_lua_bind_cache with HOME pointing at the arm's fixture, and checks for the user's SSH bind. It is proof tooling for the KI, not product code.

  • AI opinion — unverifiedThe observed obligation cell rests on keycode tests that this PR does not change

    testResults: ingested and current; 69 passed, 0 failed, 0 skipped; 1 tagged test, joined. The cells in scope are as follows. 9DMS error_handling is observed_pass. Its witnesses are our two tags in keybindings-menu-test.sh: the resolved-keycode test is nominal (line 171) and the unresolvable-keycode test negative (line 192), commit 258ca2da. They exercise keycode fallback, not the changed scan, so they add no evidence about this PR's code. 0W96 error_handling is suppressed (a recorded degradation-not-corruption suppression in the base data). 9DMS external_call_timeout_bounded is not_linked: it is deferred to KI-MENU-KEYBINDINGS-NO-TIMEOUT (hyprctl and xkbcli calls), and the new timeout 10 bounds only the lua child. No obligation cell is tagged on the PR's scan test.

  • AI opinion — unverifiedOur proof work re-reviewed the traces, linked the PR's test, and moved one review citation

    Commit 24f959e5 re-reviews the implemented_by traces of 0W96 and 9DMS that the diff made suspect, citing the diff. Commit 0375251e adds # Verifies: SW-REQ-260922-0W96 to the PR's new test. That line is ours: the upstream test file has no proof annotation. Commit 258ca2da adds the two 9DMS tags. It also moves REVIEW-75's citation from keybindings-menu-test.sh:223 to :225, the same assertion after the two inserted lines.

  • AI opinion — unverifiedChange effects were not analyzed (effects_unavailable); uncodified connections cannot be detected

    review.effects is absent for this bash/Lua change, so no new call paths, gained effects or callers were computed. The empty spec-gap list proves nothing about uncodified connections (review.scope approximations). From reading: build_lua_bind_cache is called only from output_binding_records_uncached (line 578), on a cache miss. Its new external call is timeout, wrapping lua. These facts come from reading, not from the engine.

  • AI opinion — unverifiedNot caused by this PR: no gate failed; 13 checks skipped by configuration

    Gates against baseline run run-f5b0e01e: 178 passed, 28 not applicable and 13 skipped, all with delta unchanged. The checks_skipped disclosure lists the 13 configured skips, e.g. documentation_coverage and security_surface_covered. They produced no verdict either way.

Supporting commentary only — it cannot change readiness or remove a disclosure. Open hazards it raised (engine: needs a test) are listed under What remains unresolved; everything else it said is here — commentary, never evidence of working. Its code-vs-spec arguments appear as “AI argues: …” on each spec question.

All 16findings, with the engine's verification
  • Infoengine-confirmedThe stub change serves SW-REQ-260922-0W96: binds declared after load-time config reads reach the cache again
  • Infoengine-confirmedSW-REQ-260922-9DMS is touched only through file-level traces; keycode resolution is unchanged
  • Infocommentary (no claim)The purpose is exercised by the PR's own test, but coverage of the changed code was not measured
  • Mediumcommentary (no claim)Opinion (my reading): the package's compatible verdict does not exercise this change→ where it's shown
  • Infocommentary (no claim)Removed-behaviour inventory (my reading; the engine's inventory is empty)
  • Mediumneeds a testQuestion: should a library call on a stub value in a user module still drop every bind loaded after it?→ where it's shown
  • Mediumneeds a testQuestion: an unguarded numeric index on a stub list still ends the scan. Not fixed by this PR; should it be?→ where it's shown
  • Lowneeds a testQuestion: is a 10s wait plus a partial bind list the intended outcome for a config the stub still cannot finish?→ where it's shown
  • Infocommentary (no claim)KI-MENU-KEYBINDINGS-SCAN-DOFILE-ABORT stays open: arm A flips with this PR, arm B does not
  • Infocommentary (no claim)The cache version bump makes stale caches rebuild; other open PRs also pick v15 (opinion, outside the package)
  • Infoengine-confirmedpocs/crs-260930-jvx8-c01.sh is our proof-layer reproducer, not part of the upstream PR→ spec question
  • Infoengine-confirmedscan_has_ssh, the reproducer's per-arm probe, is unmapped for the same reason→ spec question
  • Infocommentary (no claim)The observed obligation cell rests on keycode tests that this PR does not change
  • Infocommentary (no claim)Our proof work re-reviewed the traces, linked the PR's test, and moved one review citation
  • Infocommentary (no claim)Change effects were not analyzed (effects_unavailable); uncodified connections cannot be detected
  • Infocommentary (no claim)Not caused by this PR: no gate failed; 13 checks skipped by configuration
Why the engine rates this risk level2 rules fired
  • 1 changed source file(s) not measured by any fresh coverage artifact: bin/omarchy-menu-keybindings.
  • 5 changed function(s) have no function-level requirement trace: bin/omarchy-menu-keybindings:build_lua_bind_cache (modified), bin/omarchy-menu-keybindings:keybindings_cache_key (modified), pocs/crs-260930-jvx8-c01.sh:make_home (added), pocs/crs-260930-jvx8-c01.sh:cache_has_ssh (deleted), pocs/crs-260930-jvx8-c01.sh:scan_has_ssh (added); 2 requirement(s) match only at file level (possibly affected).
Relevant tests3
Audit checks219 project-wide

219 project-wide audit checks (178 passed · 13 skipped or not run · 28 not applicable) — the rest are unchanged against the baseline run. Open Audit checks

All 219 checks exactly as recorded in this package
  • Not applicableaccepted_risks_reviewednot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableapproved_guarantee_ki_conflictnot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableassumptions_statusnot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Skippedbuild_matrix_completeskippedSame as baseline

    raw status skip · severity warning

  • Not applicablecode_signal_deadline_cast_unreviewednot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableconcern_adjudicatednot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicabledefect_review_currentnot_applicableNot requiredAdvisorySame as baseline

    raw status info · severity warning

  • Not applicabledeployment_tvl_verifiednot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Skippeddescription_grammar_enumeration_completeskippedSame as baseline

    raw status skip · severity warning

  • Skippeddocumentation_coverageskippedSame as baseline

    raw status skip · severity warning

  • Skippeddocumented_claim_verifiedskippedSame as baseline

    raw status skip · severity warning

  • Skippeddual_path_guards_equivalentskippedSame as baseline

    raw status skip · severity warning

  • Not applicablefailing_test_blocks_approvalnot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicablehigh_severity_obligation_without_vectornot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Skippedknown_issue_closure_platform_boundskippedSame as baseline

    raw status skip · severity error

  • Not applicableknown_issue_completenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableknown_issue_platform_coveragenot_applicableNot requiredAdvisorySame as baseline

    raw status skip · severity warning

  • Not applicableknown_issue_recheck_duenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableknown_issue_sibling_dispositionnot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableknown_issue_template_transfernot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Skippedlemma_binding_freshnessskippedSame as baseline

    raw status skip · severity warning

  • Not applicablelemma_branch_coveragenot_applicableNot requiredSame as baseline

    raw status skip · severity warning

  • Skippedno_authored_change_surface_reviewedskippedSame as baseline

    raw status skip · severity warning

  • Not applicablepoc_quality_checkednot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableproblem_report_class_mitigation_evidencenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableproblem_reports_reviewednot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableprocess_checklistnot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableproperty_based_test_coveragenot_applicableNot requiredAdvisorySame as baseline

    raw status warn · severity warning

  • Not applicableresidual_kill_hygienenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Skippedsecurity_surface_coveredskippedSame as baseline

    raw status skip · severity error

  • Skippedsignal_fixtures_validskippedSame as baseline

    raw status skip · severity error

  • Not applicablespec_lint_exemplar_missing_on_newnot_applicableNot requiredAdvisorySame as baseline

    raw status info · severity warning

  • Not applicablespec_lint_hazard_consequencenot_applicableNot requiredAdvisorySame as baseline

    raw status info · severity warning

  • Not applicablespec_lint_ki_banned_markersnot_applicableNot requiredAdvisorySame as baseline

    raw status info · severity warning

  • Skippedspec_lint_mediation_contract_contradictedskippedSame as baseline

    raw status skip · severity warning

  • Skippedspec_lint_na_denies_property_enforced_unevenlyskippedSame as baseline

    raw status skip · severity warning

  • Skippedspec_lint_na_denies_property_the_code_managesskippedSame as baseline

    raw status skip · severity warning

  • Not applicablesurface_coveragenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicableunresearched_p0_vectorsnot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicablevector_campaign_closurenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Not applicablevector_campaign_hygienenot_applicableNot requiredAdvisorySame as baseline

    raw status pass · severity warning

  • Passacceptance_criteria_witnessedpassedSame as baseline

    raw status pass · severity warning

  • Passacceptance_witness_qualitypassedSame as baseline

    raw status pass · severity warning

  • Passambiguity_reviewedpassedSame as baseline

    raw status pass · severity warning

  • Passannotation_validitypassedSame as baseline

    raw status pass · severity error

  • Passapproval_motivation_presentpassedSame as baseline

    raw status pass · severity error

  • Passapprovals_currentpassedSame as baseline

    raw status pass · severity error

  • Passassume_contract_consistencypassedSame as baseline

    raw status pass · severity warning

  • Passauthored_delta_expectedpassedSame as baseline

    raw status pass · severity warning

  • Passbehavioral_implications_verifiedpassedSame as baseline

    raw status pass · severity warning

  • Passbuild_passespassedSame as baseline

    raw status pass · severity error

  • Passcatalog_completenesspassedSame as baseline

    raw status pass · severity error

  • Passcatalog_semantic_bindings_reviewedpassedSame as baseline

    raw status pass · severity warning

  • Passcatalog_version_pinnedpassedSame as baseline

    raw status pass · severity warning

  • Passchange_evidence_completepassedSame as baseline

    raw status pass · severity warning

  • Passchange_record_landspassedSame as baseline

    raw status pass · severity warning

  • Passchanged_requirements_reviewedpassedSame as baseline

    raw status pass · severity error

  • Passcircular_deps_cleanpassedSame as baseline

    raw status pass · severity error

  • Passcode_mcdc_coveragepassedSame as baseline

    raw status pass · severity warning

  • Passcode_mcdc_measurepassedSame as baseline

    raw status pass · severity error

  • Passcode_predicates_modeledpassedSame as baseline

    raw status pass · severity warning

  • Passcode_signal_obligations_reviewedpassedSame as baseline

    raw status pass · severity warning

  • Passcode_signal_suppressions_reviewedpassedSame as baseline

    raw status pass · severity warning

  • Passcode_signal_unbindablepassedSame as baseline

    raw status pass · severity warning

  • Passconsistency_pair_coveragepassedSame as baseline

    raw status pass · severity warning

  • Passcontract_alignment_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passcoverage_metpassedSame as baseline

    raw status pass · severity warning

  • Passcoverage_thresholdpassedSame as baseline

    raw status pass · severity warning

  • Passcross_component_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passcross_level_completepassedSame as baseline

    raw status pass · severity warning

  • Passcross_spec_consistency_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passcvss_severity_consistentpassedSame as baseline

    raw status pass · severity warning

  • Passdata_constraint_z3_coveragepassedSame as baseline

    raw status pass · severity warning

  • Passdata_constraints_completepassedSame as baseline

    raw status pass · severity warning

  • Passdecomposition_reviewedpassedSame as baseline

    raw status pass · severity warning

  • Passdeletion_without_retirementpassedSame as baseline

    raw status pass · severity error

  • Passdescription_delta_reviewedpassedSame as baseline

    raw status pass · severity error

  • Passdifferential_conformancepassedSame as baseline

    raw status pass · severity warning

  • Passdisclosure_safepassedSame as baseline

    raw status pass · severity error

  • Passdocumentation_enforcedpassedSame as baseline

    raw status pass · severity warning

  • Passevidence_diversitypassedSame as baseline

    raw status pass · severity warning

  • Passfixture_staleness_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passflip_fixtures_existpassedSame as baseline

    raw status pass · severity warning

  • Passflip_test_alignmentpassedSame as baseline

    raw status pass · severity warning

  • Passformalization_lemma_verdict_consistencypassedSame as baseline

    raw status pass · severity warning

  • Passfuzz_evidence_carrier_validpassedSame as baseline

    raw status pass · severity warning

  • Passgaps_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passhigh_severity_reproducer_gradepassedSame as baseline

    raw status pass · severity error

  • Passintegration_evidence_witnessedpassedSame as baseline

    raw status pass · severity warning

  • Passinterface_contract_duplicatespassedSame as baseline

    raw status pass · severity warning

  • Passinterface_coveragepassedSame as baseline

    raw status pass · severity warning

  • Passinterface_formalization_completepassedSame as baseline

    raw status pass · severity warning

  • Passinterface_staleness_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_affected_requirements_presentpassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_mirror_anchor_relevantpassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_poc_quality_effectivepassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_reproducer_consistentpassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_reproducer_present_and_resolvespassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_security_remediation_presentpassedSame as baseline

    raw status pass · severity warning

  • Passknown_issue_severity_prose_consistentpassedSame as baseline

    raw status pass · severity warning

  • Passknown_issues_reviewedpassedSame as baseline

    raw status pass · severity warning

  • Passl0_stakeholder_completepassedSame as baseline

    raw status pass · severity error

  • Passl1_system_completepassedSame as baseline

    raw status pass · severity error

  • Passl2_software_completepassedSame as baseline

    raw status pass · severity error

  • Passlevels_connectedpassedSame as baseline

    raw status pass · severity error

  • Passlint_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passmcdc_coveragepassedSame as baseline

    raw status pass · severity warning

  • Passmcdc_ignore_classifiedpassedSame as baseline

    raw status pass · severity warning

  • Passmcdc_known_issue_disposition_stalepassedSame as baseline

    raw status pass · severity error

  • Passmcdc_verifies_witnessespassedSame as baseline

    raw status pass · severity warning

  • Passmcdc_witness_drives_codepassedSame as baseline

    raw status pass · severity warning

  • Passmirror_completepassedSame as baseline

    raw status pass · severity warning

  • Passmirror_stalepassedSame as baseline

    raw status pass · severity warning

  • Passnegative_path_witness_requiredpassedSame as baseline

    raw status pass · severity error

  • Passnonbool_inputs_constrainedpassedSame as baseline

    raw status pass · severity warning

  • Passobligation_baselinepassedSame as baseline

    raw status pass · severity warning

  • Passobligation_completenesspassedSame as baseline

    raw status pass · severity error

  • Passobligation_decomposition_completepassedSame as baseline

    raw status pass · severity warning

  • Passobligation_delegation_resolvespassedSame as baseline

    raw status pass · severity error

  • Passobligation_enforcement_backedpassedSame as baseline

    raw status pass · severity warning

  • Passobligation_evidence_completepassedSame as baseline

    raw status pass · severity warning

  • Passobligation_profile_evidence_completepassedSame as baseline

    raw status pass · severity warning

  • Passobligation_suppression_rationalepassedSame as baseline

    raw status pass · severity warning

  • Passobligation_suppression_reviewerpassedSame as baseline

    raw status pass · severity warning

  • Passobligation_witness_groundedpassedSame as baseline

    raw status pass · severity warning

  • Passorphan_code_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passorphan_tests_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passpartition_evidence_completepassedSame as baseline

    raw status pass · severity warning

  • Passproof_complexity_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passproperty_fixtures_existpassedSame as baseline

    raw status pass · severity warning

  • Passquality_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passretired_cleanuppassedSame as baseline

    raw status pass · severity warning

  • Passrole_prompt_hygienepassedSame as baseline

    raw status pass · severity warning

  • Passrole_references_resolvepassedSame as baseline

    raw status pass · severity warning

  • Passsecurity_relevance_consistentpassedSame as baseline

    raw status pass · severity warning

  • Passslow_tests_cleanpassedSame as baseline

    raw status pass · severity error

  • Passsoftware_formalization_completepassedSame as baseline

    raw status pass · severity warning

  • Passsolver_latency_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passsolver_modeling_opportunitypassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ac_inverse_coveragepassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ac_subset_of_satisfiespassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_acceptance_review_currentpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_annotation_vs_authoredpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_assumption_dispositionpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_audit_ignore_reasonpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_auto_modifier_without_humanpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_circularity_self_citationpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_complementary_flags_uninteractedpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_data_constraint_parseablepassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_decomposition_adds_refinementpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_degenerate_input_obligation_missingpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_evidence_tag_existspassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_formalization_qualitypassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_fretish_bare_responsepassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_fretish_tautologypassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_governance_yaml_data_pathspassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_hallucinated_symbolspassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_hazard_review_currentpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_id_shape_canonicalpassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_inline_impact_review_driftpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_input_domain_obligation_missingpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ki_attacker_coherencepassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ki_history_chronologypassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ki_open_actionabilitypassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ki_prose_shapepassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_ki_stale_status_refspassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_numbering_gaps_has_tombstonepassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_obligation_checklist_emptypassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_obligation_coverage_gappassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_operational_invariant_varpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_parent_field_vs_satisfiespassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_pinned_delimiter_undispositionedpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_plan_of_record_currentpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_prose_ste100passedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_reject_combination_composition_witnessedpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_req_type_vs_descriptionpassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_review_cadence_currentpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_satisfies_target_retiredpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_shared_state_rebuildpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_source_doc_hedgingpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_source_native_yaml_tracepassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_spec_conformance_review_groundedpassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_status_vs_reviewpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_sw_informal_witnessedpassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_threat_surface_presentpassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_trace_review_evidence_currentpassedSame as baseline

    raw status pass · severity error

  • Passspec_lint_unjoined_effect_halvespassedSame as baseline

    raw status pass · severity warning

  • Passspec_lint_yaml_escape_artefactpassedSame as baseline

    raw status pass · severity error

  • Passsrs_generatespassedSame as baseline

    raw status pass · severity error

  • Passsrs_no_uncheckedpassedSame as baseline

    raw status pass · severity error

  • Passstakeholder_acceptance_criteriapassedSame as baseline

    raw status pass · severity warning

  • Passstakeholder_requirements_existpassedSame as baseline

    raw status pass · severity error

  • Passsubmission_validatedpassedSame as baseline

    raw status pass · severity error

  • Passsuspect_cleanpassedSame as baseline

    raw status pass · severity error

  • Passsys_has_software_childpassedSame as baseline

    raw status pass · severity warning

  • Passsystem_formalization_completepassedSame as baseline

    raw status pass · severity error

  • Passsystem_requirements_linkedpassedSame as baseline

    raw status pass · severity error

  • Passtable_completepassedSame as baseline

    raw status pass · severity warning

  • Passtable_consistentpassedSame as baseline

    raw status pass · severity warning

  • Passtable_equivalencepassedSame as baseline

    raw status pass · severity warning

  • Passtest_command_propagates_failurepassedSame as baseline

    raw status pass · severity warning

  • Passtests_passpassedSame as baseline

    raw status pass · severity error

  • Passtrivial_lemmapassedSame as baseline

    raw status pass · severity warning

  • Passtrusted_outputs_from_untrusted_inputspassedSame as baseline

    raw status pass · severity warning

  • Passunder_modeled_requirements_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passvacuity_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passvalidate_passespassedSame as baseline

    raw status pass · severity error

  • Passvariable_driftpassedSame as baseline

    raw status pass · severity warning

  • Passvariable_orphans_cleanpassedSame as baseline

    raw status pass · severity warning

  • Passvariables_declaredpassedSame as baseline

    raw status pass · severity error

  • Passverification_chain_completepassedSame as baseline

    raw status pass · severity warning

  • Passverification_plan_evidencepassedSame as baseline

    raw status pass · severity warning

  • Passverification_scope_completepassedSame as baseline

    raw status pass · severity warning

  • Passverification_state_consistentpassedSame as baseline

    raw status pass · severity warning

  • Passverify_passespassedSame as baseline

    raw status pass · severity error

  • Passwaivers_reviewedpassedSame as baseline

    raw status pass · severity error

  • Passz3_cross_layer_consistencypassedSame as baseline

    raw status pass · severity warning

  • Passz3_properties_verifiedpassedSame as baseline

    raw status pass · severity warning

How this evidence was producedunverified producer · no evidence records attached
Unverified producer — not acceptedPackage permalink

Evaluated as this PR applied onto the audit baseline 1e433732 (commit e1ff55c9), not the PR's own branch — findings reflect the PR's change on the audited code. Freshness still tracks the PR head it represents, 7b49d0bb.

Repository
https://github.com/omacom/omarchy
Pull request
#7564
Evaluated tree
Synthetic mergesynthetic_merge
PR head commit
7b49d0bb606d14a5e71cef6b11d85ab6b5b5f639
Evaluated commit
e1ff55c9103c126b1c83e1e97d0f481c0cd507ef
Audit baseline
1e43373287afbd6dca4674ad463d5b5db7812358
Spec revision
d3d93b6844ebbaee618815cb08dcd0399ede04d1
Policy revision
1e43373287afbd6dca4674ad463d5b5db7812358
Package digest
sha256:e8bc66ec1a37f52223336fd89522c005a94b27c0077e540bb75c45659e3b358f
Schema version
reqproof.evidence-package.v1
Canonicalization
v1
Engine version
0.1.0-dev
Assembler version
0.1.0-dev+geeb5981c
Package identity
epkg-6c34f8de2b52eac61d8534e30635b9977dafa9f523c093f1f2948cb011e1a401
Assembled
Oct 6, 2026 · 6 days ago
Canonical digest
sha256:e8bc66ec1a37f52223336fd89522c005a94b27c0077e540bb75c45659e3b358f
History4 evidence packages for this change — each an immutable record of the commit it evaluated