Proof Portal

Project overview

Omarchy

omarchy75 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.

PR #13968
Evidence package#13968ff77cd023db8Synthetic merge tree

omarchy #13968

https://github.com/omacom/omarchy

Delivered by an unverified producer — not accepted as assurance.
← Review-by-exception view
  1. AcceptingFix menu JSONC parsing: commas in strings, array roots, inline comments (linked #13250, #13492, #13493). The spec change codifies it: 23 requirements (4 added, 19 modified).
  2. Affects4 files · 30 requirements in 1 area (23 changed in the spec, 7 via the changed files) · mapping is file-level, so this is an upper bound · 2 changed files trace to no requirement.
  3. Works?Not shown yet: 0 of 30 behavioral claims observed; every changed branch ran in a test.
  4. Unresolved5 introduced · 16 blockers not shown to pre-date this change · 3 behaviors need a test · 2 missing evidence · 2 pre-existing (failed at base too).
  5. DecisionChange author: investigate the 21 blockers not shown to pre-date this change — evaluated at 0e2dd89 (head ff77cd0, base 4f1a819).

What am I accepting?

Intended change

“Fix menu JSONC parsing: commas in strings, array roots, inline comments”Declared by the change request· reason:#13250#13492#13493

The author's description (excerpt)
Fixes #13250, fixes #13492, fixes #13493.

Approved intent (spec changes)

Behavior that must be preserved

7 requirements are in reach (7 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?

30 requirements · 1 area

Changed code

  • ModifiedstripJsonc()modifiedparseMenuJsonc()modified
  • Modified
  • Modified
  • Modified
2 changed files trace to no requirement — read directly

Customer promises reached30

6 requirements changed by the spec itself — listed under What am I accepting? ↑

Code changed (file-level — an upper bound) 24

20 more

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 30 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

No test outcome recorded for any of the 30 requirements this change must keep holding — 0 of 30 claims observed (4 relevant tests, no per-test result).

The 30 claims, as a table
RequirementClaimObservedTestsDisclosures
SW-REQ-260922-2JZTChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-2JZTtest_outcome_unobserved:SW-REQ-260922-2JZT
2 non-passing records
  • test:test/shell.d/menu-guards-test.sh
  • test:test/shell.d/menu-guards-test.sh:1:prelude
SW-REQ-260922-3T3FChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-3T3Ftest_outcome_unobserved:SW-REQ-260922-3T3F
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-46HYChanged as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-46HY
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-74BZChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-74BZtest_outcome_unobserved:SW-REQ-260922-74BZ
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-7NPEChanged as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-7NPE
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-CYB9Changed as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-CYB9
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-DQ9PChanged as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-DQ9P
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-E4J2Changed as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-E4J2
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
Show all 30 claims
SW-REQ-260922-EFNRChanged as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-EFNR
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-JRW1Changed as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-JRW1test_outcome_unobserved:SW-REQ-260922-JRW1
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-MQ37Changed as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-MQ37test_outcome_unobserved:SW-REQ-260922-MQ37
2 non-passing records
  • test:test/shell.d/menu-guards-test.sh
  • test:test/shell.d/menu-guards-test.sh:1:prelude
SW-REQ-260922-N3RMStill holdsNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-N3RMtest_outcome_unobserved:SW-REQ-260922-N3RM
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-PRNVChanged as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-PRNV
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-RGCVChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-RGCVtest_outcome_unobserved:SW-REQ-260922-RGCV
2 non-passing records
  • test:test/shell.d/menu-guards-test.sh
  • test:test/shell.d/menu-guards-test.sh:1:prelude
SW-REQ-260922-SJ7PChanged as intendedNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-SJ7P
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-TKDPStill holdsNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-TKDP
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-W17GChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-W17Gtest_outcome_unobserved:SW-REQ-260922-W17G
2 non-passing records
  • test:test/shell.d/menu-guards-test.sh
  • test:test/shell.d/menu-guards-test.sh:1:prelude
SW-REQ-260922-XW52Still holdsNot observed0✓ 0✗ 0∅ 2?
test_outcome_unobserved:SW-REQ-260922-XW52
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260922-Y58BChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-Y58Btest_outcome_unobserved:SW-REQ-260922-Y58B
2 non-passing records
  • test:test/shell.d/menu-guards-test.sh
  • test:test/shell.d/menu-guards-test.sh:1:prelude
SW-REQ-260922-Z680Changed as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260922-Z680test_outcome_unobserved:SW-REQ-260922-Z680
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260927-66FWnew in this changeChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260927-66FWtest_outcome_unobserved:SW-REQ-260927-66FW
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260928-8VJQChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260928-8VJQtest_outcome_unobserved:SW-REQ-260928-8VJQ
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260928-BMFEnew in this changeChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260928-BMFEtest_outcome_unobserved:SW-REQ-260928-BMFE
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-260928-C8W1new in this changeChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-260928-C8W1test_outcome_unobserved:SW-REQ-260928-C8W1
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SW-REQ-261001-BNZGnew in this changeChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SW-REQ-261001-BNZGtest_outcome_unobserved:SW-REQ-261001-BNZG
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SYS-REQ-260922-0M8AStill holdsNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SYS-REQ-260922-0M8Atest_outcome_unobserved:SYS-REQ-260922-0M8A
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SYS-REQ-260922-PPDWChanged as intendedNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SYS-REQ-260922-PPDWtest_outcome_unobserved:SYS-REQ-260922-PPDW
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SYS-REQ-260922-R8DQStill holdsNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SYS-REQ-260922-R8DQtest_outcome_unobserved:SYS-REQ-260922-R8DQ
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SYS-REQ-260922-V7W6Still holdsNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SYS-REQ-260922-V7W6test_outcome_unobserved:SYS-REQ-260922-V7W6
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1
SYS-REQ-260927-WC89Still holdsNot observed0✓ 0✗ 0∅ 2?
missing_obligation:SYS-REQ-260927-WC89test_outcome_unobserved:SYS-REQ-260927-WC89
2 non-passing records
  • test:test/shell.d/menu-test.sh
  • test:test/shell.d/menu-test.sh:1:menu-test.sh:1

Changed-code coverage

17 of 17 changed decision lines reached by tests · 34 of 34 decisions fully exercised the untested spots and the tests that would cover them ↓

What remains unresolved?

57 open disclosures — each listed once, introduced first

Failures not shown to pre-date this change21

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-2JZT has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-3T3F has required obligations with no covering evidence — missing: boundary, error_handling.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-74BZ has required obligations with no covering evidence — missing: boundary.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-JRW1 has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-MQ37 has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-N3RM has required obligations with no covering evidence — missing: error_handling.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-RGCV has required obligations with no covering evidence — missing: error_handling, external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-W17G has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-Y58B has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-Z680 has required obligations with no covering evidence — missing: atomicity.

  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-260927-66FW has required obligations with no covering evidence — missing: malformed_input.

    SW-REQ-260927-66FWnew in this change
  • highUnresolved findingdrives the next decision

    SW-REQ-260928-8VJQ has required obligations with no covering evidence — missing: path_pair_agreement.

  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-260928-BMFE has required obligations with no covering evidence — missing: malformed_input.

    SW-REQ-260928-BMFEnew in this change
  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-260928-C8W1 has required obligations with no covering evidence — missing: malformed_input.

    SW-REQ-260928-C8W1new in this change
  • highUnresolved finding · introduced by this changeMeasureddrives the next decision

    SW-REQ-261001-BNZG has required obligations with no covering evidence — missing: malformed_input, totality.

    SW-REQ-261001-BNZGnew in this change
  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-0M8A has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-PPDW has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-R8DQ has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-V7W6 has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260927-WC89 has required obligations with no covering evidence — missing: error_handling.

  • mediumUnresolved finding · introduced (not applicable at base)Measureddrives the next decision

    Required check known_issue_sibling_disposition failed at the evaluated revision (it passed at the baseline: introduced).

Missing evidence6

  • highMissing evidence

    2 changed code files trace to no requirement: that behaviour has no stated intent and no claim to check.

  • mediumMissing evidence

    Per-test results could not be read (test results weren't collected for this evaluation), so none of the 59 obligation cells in scope has an observed outcome.

    testResults

3 behaviors need a test

  • Unverified hazard — needs a testQuestion: if upstream merges ff77cd02 WITHOUT b2dae8db, does a menu file with a BOM or a Unicode space before a // comment stop loading?

    Test that would settle it: Run the BNZG whitespace witnesses against the upstream PR head ff77cd02

    How to write it

    Shows whether the public PR, as it stands, regresses Unicode whitespace before a // comment. It should go green once b2dae8db (or an equivalent) is in the upstream PR.

  • Unverified hazard — needs a testQuestion: does the scanner behave the same under Qt's QV4 engine as under node?

    Test that would settle it: QML-side witness: parse the default menu and a BOM/NBSP extension in Quickshell

    How to write it

    Moves the BNZG and performance facts from node to the engine the shell runs, e.g. from menu-compositor-test.sh or a qml test harness.

  • Unverified hazard — needs a testQuestion: do user extensions that were silently ignored before now load and override shipped entries?

    Test that would settle it: Upgrade witness: an inline-commented user extension that overrides a shipped id

    How to write it

    Pins the newly effective override so the release note can say that previously ignored extensions now load.

The tests verifying 30 requirements have no observed outcome at the evaluated revision (60 test records). Claims → Why should I believe it works? ↑

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.

2 pre-existing — failed at base toonot introduced by this change, still unresolved
  • mediumUnresolved findingpre-existing (failed at base)

    Required check obligation_decomposition_complete failed at the evaluated revision (it also failed at the baseline).

  • mediumUnresolved findingpre-existing (failed at base)

    Required check obligation_evidence_complete failed at the evaluated revision (it also failed at the baseline).

What decision is mine?

Next decision

Investigationbecause blocking findings are open

Investigate the 21 blocking findings not shown to pre-date this change: fix, or establish they are not caused by it. 2 other blocking findings pre-date it (held at the base too).

Required authority

Change author — under the approved policy at 4f1a8197f7

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

Evaluated revision

Evaluated
0e2dd894093aSynthetic merge
PR head
ff77cd023db8
Base
4f1a8197f7b5quattro-proof
Policy
sha256:b8d5c5cead…

Compared against base audit run-1f6c602fcf40 at 4f1a8197f7b5 — failed checks are split into pre-existing vs introduced.

An immutable record of this revision — freshness is judged on the PR page.

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
Every disclosure, by consequence23 block · 32 prevent ready · 0 need judgement · 2 for information

23 block · 32 prevent ready · 0 need judgement · 2 for information

Blocks readiness23· 2 pre-existing

Introduced by this PR(21)

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-2JZT has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-3T3F has required obligations with no covering evidence — missing: boundary, error_handling.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-74BZ has required obligations with no covering evidence — missing: boundary.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-JRW1 has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-MQ37 has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-N3RM has required obligations with no covering evidence — missing: error_handling.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-RGCV has required obligations with no covering evidence — missing: error_handling, external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-W17G has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-Y58B has required obligations with no covering evidence — missing: external_call_timeout_bounded.

  • highUnresolved findingdrives the next decision

    SW-REQ-260922-Z680 has required obligations with no covering evidence — missing: atomicity.

Show all 21 (11 more)
  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-260927-66FW has required obligations with no covering evidence — missing: malformed_input.

    SW-REQ-260927-66FWnew in this change
  • highUnresolved findingdrives the next decision

    SW-REQ-260928-8VJQ has required obligations with no covering evidence — missing: path_pair_agreement.

  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-260928-BMFE has required obligations with no covering evidence — missing: malformed_input.

    SW-REQ-260928-BMFEnew in this change
  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-260928-C8W1 has required obligations with no covering evidence — missing: malformed_input.

    SW-REQ-260928-C8W1new in this change
  • highUnresolved finding · introduced by this changedrives the next decision

    SW-REQ-261001-BNZG has required obligations with no covering evidence — missing: malformed_input, totality.

    SW-REQ-261001-BNZGnew in this change
  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-0M8A has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-PPDW has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-R8DQ has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260922-V7W6 has required obligations with no covering evidence — missing: nominal.

  • highUnresolved findingdrives the next decision

    SYS-REQ-260927-WC89 has required obligations with no covering evidence — missing: error_handling.

  • mediumUnresolved finding · introduced (not applicable at base)drives the next decision

    Required check known_issue_sibling_disposition failed at the evaluated revision (it passed at the baseline: introduced).

Pre-existing — failed at base too(2)
  • mediumUnresolved findingpre-existing (failed at base)

    Required check obligation_decomposition_complete failed at the evaluated revision (it also failed at the baseline).

  • mediumUnresolved findingpre-existing (failed at base)

    Required check obligation_evidence_complete failed at the evaluated revision (it also failed at the baseline).

Prevents a ready verdict32
  • highMissing evidence

    2 changed code files trace to no requirement: that behaviour has no stated intent and no claim to check.

  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-2JZT (The rewrite touches only the plain $(reader) form, mapping it to the captured slot. command -v reader, VAR=x reader, and…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-guards-test.shtest:test/shell.d/menu-guards-test.sh:1:prelude
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-3T3F (Unparseable input (after stripping), non-object JSON, and non-object entries yield an empty or skipped item set; no exce…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-46HY (An entry with action is an action, with target a link, otherwise a menu. An undeclared parent derives from the dotted id…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-74BZ (A route matching no id and no alias resolves to the literal input. A misspelling still attempts to open that id without…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-7NPE (A user entry overrides the default per key while keeping the row's original order slot. The model injects a root item wi…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-CYB9 (Absent an exact id, a route equal to a declared alias resolves to the id of the item declaring the alias. Alias comparis…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-DQ9P (A row matches only when every query term appears in its name text (label, leaf id, aliases) or as a whole word in its de…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-E4J2 (The parser strips // comments and trailing commas outside string literals before JSON parsing, so the authored JSONC par…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-EFNR (swapProviderRows drops exactly the rows carrying the re-run provider's providerMenu and appends the new batch, leaving s…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
Show all 32 (22 more)
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-JRW1 (Applied guard results drive the view. A row hides when its when: is false. A static submenu or link hides when no descen…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-MQ37 (The generated guard script holds exactly one if-line per declared when, checked, or disabled, each echoing <id>:<w|c|d>:…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-guards-test.shtest:test/shell.d/menu-guards-test.sh:1:prelude
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-N3RM (When a route resolves to an action item with a non-empty action, the action runs directly and no menu opens.) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-PRNV (An exact id match wins over every alias. App rows are never routable, so an installed app's keywords cannot shadow a men…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-RGCV (The prelude's omarchy-pkg-present/missing shadows agree with pacman -Q everywhere. This covers provides resolution, vers…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-guards-test.shtest:test/shell.d/menu-guards-test.sh:1:prelude
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-SJ7P (Scores tier exact label, whole-word app name, label prefix, label substring, name text, then description. Menus and link…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-TKDP (Search lists current-menu matches before deeper (drilldown) matches, with a divider section exactly when both groups are…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-W17G (A value command shared by several guards (e.g. omarchy-default-browser across seven rows) runs once per batch, captured…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-guards-test.shtest:test/shell.d/menu-guards-test.sh:1:prelude
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-XW52 (When a route resolves to a link item, the menu opens at the link's target.) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-Y58B (When no item declares a guard, the guard script is empty and no guard process runs.) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-guards-test.shtest:test/shell.d/menu-guards-test.sh:1:prelude
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260922-Z680 (mergeAppRows and swapProviderRows return fresh maps that drop orphan ids and the replaced batch. They list a duplicated…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260927-66FW (The JSONC stripper looks ahead from each comma outside every string literal. The look-ahead skips whitespace and each //…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260928-8VJQ (A menu action may exactly match the bare-summon grammar: omarchy-shell shell summon <id>, plus an optional single-quoted…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260928-BMFE (A top-level JSON array is not an object map of menu entries. The parser returns an empty item set for it, as it does for…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-260928-C8W1 (When the JSONC stripper meets a // comment opener outside every string literal, it drops the comment wherever the opener…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SW-REQ-261001-BNZG (The JSONC stripper takes any text as input. Outside string literals, each character that JS \s matches is whitespace. Th…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SYS-REQ-260922-0M8A (Dynamic rows (apps, provider enumerations) replace their source's previous batch atomically: orphans dropped, duplicates…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SYS-REQ-260922-PPDW (The default JSONC and the user extension merge into one ordered item tree: per-key user overrides, stable order, inferre…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SYS-REQ-260922-R8DQ (A route string (exact id, declared alias, or normalized spelling) opens the item it denotes; unknown strings fall throug…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SYS-REQ-260922-V7W6 (A filter query narrows to visible, selectable rows whose name or description matches every term, ranked by match quality…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    2 of 2 tests verifying SYS-REQ-260927-WC89 (The menu Lock row invokes the lock component's CLI entry point omarchy-system-lock with no arguments. The callee engages…) have no observed outcome at the evaluated revision.

    test:test/shell.d/menu-test.shtest:test/shell.d/menu-test.sh:1:menu-test.sh:1
  • mediumMissing evidence

    Per-test results could not be read (test results weren't collected for this evaluation), so none of the 59 obligation cells in scope has an observed outcome.

    testResults
For information2

Routine evidence:173 checks passed · 26 advisory · 1 not applicable · 0 verifying tests passed · 0 claims observed passing

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

What the PR does. omacom/omarchy#13968 (buger) replaces stripJsonc's two regex passes with one string-aware scanner and makes parseMenuJsonc return no rows for an array root. Fixes #13250 (comma in a string eaten), #13492 (array root -> rows "0","1") and #13493 (inline // empties the file); docs/menu.md states the rules. The evaluated tree 0e2dd894 is AHEAD of the PR head ff77cd02: it also contains the pending, not-yet-public follow-up b2dae8db, which reads any JS \s character outside strings (BOM, Unicode spaces, VT, FF) as a space. The rest of the mirror is dogfood proof work. This is an advisory, audit-only review of an upstream PR we observe: it is not an approval.

Risk rationale: Small, well-covered parser change with differential evidence for all three fixes. But the public PR head lacks the Unicode-whitespace fix the package evaluates, so the package does not show the head's behaviour. No test outcome is observed, and 21 blocking findings still need investigation. Not low risk.

Read the full review (4 more paragraphs)

Is the fix verified? The changed code is fully covered (17/17 decision lines, 34/34 decisions), and reviewer node differentials match each issue. No test outcome is observed (test_results_not_joined), so no obligation cell counts as covered. Engine readiness: blocked (introduced); 4 introduced missing_obligation blockers on 66FW/BMFE/C8W1/BNZG. Policy is unchanged against the baseline (the menu budget raise landed on quattro-proof 4f1a8197 first). Next decision: investigation of 21 blocking findings not shown to pre-date the change, by the change_author under the approved policy @ 4f1a8197.

Questions for a human. (1) At ff77cd02 WITHOUT b2dae8db, a BOM / NBSP / VT before a // comment yields 0 rows where baseline yields 1: the public PR still carries that regression. (2) Do QV4 (Quickshell) and node agree on /\s/ and on cost? (3) Previously ignored user extensions now load and override defaults.

Traceability. stripJsonc/parseMenuJsonc are traced at function level (E4J2, 3T3F, 66FW, C8W1, BNZG, BMFE); 24 more requirements are touched only through menu-test.sh's file-level trace. No spec-gap candidates. 2 unmapped files are test code.

Not caused by this PR. obligation_* gates fail identically at baseline. known_issue_sibling_disposition is introduced via the KI ledger (3 open parsing siblings). Unavailable: change effects (JS), per-test outcomes.

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.

13 context notes (info — not a finding)
  • AI · confirmed#13250: a comma is dropped only when the next token is } or ] (SW-REQ-260927-66FW)

    Upstream change. stripJsonc's second regex pass ,(\s*[}\]]) did not know about strings, so , ] inside a label or action lost its comma. The new scanner copies string contents verbatim (MenuModel.js:13-19) and, outside strings, looks ahead from each comma past whitespace and // comments (MenuModel.js:26-38). It keeps the comma unless the next other character is } or ]. Reviewer differential (node, outside the package): {"b":{"label":"x, ]y","action":"mv f{.bak,}"}} gives label 'x ]y' / action 'mv f{.bak}' at baseline 4f1a8197 and 'x, ]y' / 'mv f{.bak,}' at the evaluated tree. SW-REQ-260927-66FW is re-applied dogfood proof work that states this rule.

  • AI · confirmed#13493: a // comment outside strings is dropped wherever it starts on the line (SW-REQ-260928-C8W1)

    Upstream change. The baseline removed only whole-line comments (^\s*\/\/ with the m flag), so an inline tail reached JSON.parse and the whole file gave 0 rows. The scanner drops from the opener up to, not including, the line feed (MenuModel.js:23-25), so the tokens on each side stay apart. Reviewer differential: {"a":{"label":"A"}} // note gives 0 rows at baseline and 1 at the evaluated tree. A CRLF file with inline comments and trailing commas also parses (the \r is read as a space). An opener inside a string (https://x.y//z) is still copied as data.

  • AI · confirmed#13492: an array root yields no rows (SW-REQ-260928-BMFE)

    Upstream change. typeof [] === "object", so the baseline let an array root through and for..in turned its indices into entries "0", "1". parseMenuJsonc now adds Array.isArray(parsed) to the non-object root check (MenuModel.js:100). Reviewer differential: [{"label":"x"},{"label":"y"}] gives ids 0,1 at baseline and [] at the evaluated tree.

  • AI · confirmedSW-REQ-260922-E4J2 (JSONC stripping) is reworded to the single-pass scanner

    E4J2's description and rationale change (dogfood proof work). It now says comments and trailing commas are stripped outside string literals before JSON.parse, so the authored JSONC parses. That matches stripJsonc as read (MenuModel.js:2-48). It is traced at function level to stripJsonc and parseMenuJsonc.

  • AI · confirmedSW-REQ-260922-3T3F (unparseable / non-object input gives an empty set) gains the array-root case in its rationale

    Only the rationale changes. An array root now joins null, numbers and strings as a non-object root (MenuModel.js:100). The parse-failure path (MenuModel.js:92-96) is unchanged: a file that still fails to parse (e.g. a /* */ block comment) contributes no entries.

  • AI opinion — unverified24 further requirements are touched only through the whole-file trace of menu-test.sh (and re-review stamps)

    test/shell.d/menu-test.sh is traced at file level to 25 requirements (weak_mapping), so every requirement it verifies is listed as changed, though the product change touches only stripJsonc/parseMenuJsonc. Their YAML diffs on this mirror are trace re-review stamps (93549d23) and a PPDW wording change; the code they govern (merge, routing, guards, search) is not modified. Read against the code, none of their behaviour changes. Opinion: splitting menu-test.sh's file-level Verifies header into per-block markers would stop every JSONC test edit from touching ~25 requirements.

  • AI opinion — unverifiedThe purpose branches are covered: 17/17 changed decision lines and 34/34 changed decisions, but no test outcome is observed

    review.diffCoverage (mcdc:aggregate+bash+js, measured) reports 0 uncovered lines and 0 uncovered outcomes in the changed code, which includes the string branch, the comment eater, the comma look-ahead, the \s branch and the array-root check. Coverage says those branches EXECUTE under the menu tests. It does not say an assertion passed: testResults is not_configured, so every obligation cell is unobserved or not_linked (test_results_not_joined). No test is recorded as passing or failing. Reviewer re-runs outside the package (node differential, see the other findings) agree with the stated behaviour.

  • AI · confirmedobligation_decomposition_complete and obligation_evidence_complete fail identically at baseline (inherited)

    Both are failed_behavior with delta unchanged against baseline run-1f6c602f (deferred obligations + accepted KI-debt). The package marks both disclosures preExisting.

  • AI opinion — unverified16 further missing_obligation reasons sit on requirements touched only at file level

    Not marked pre-existing in the package (preExisting unset). SW-REQ-260922-2JZT, SW-REQ-260922-3T3F, SW-REQ-260922-74BZ, SW-REQ-260922-JRW1, SW-REQ-260922-MQ37, SW-REQ-260922-N3RM, SW-REQ-260922-RGCV, SW-REQ-260922-W17G, SW-REQ-260922-Y58B, SW-REQ-260922-Z680, SW-REQ-260928-8VJQ, SYS-REQ-260922-0M8A, SYS-REQ-260922-PPDW, SYS-REQ-260922-R8DQ, SYS-REQ-260922-V7W6, SYS-REQ-260927-WC89. Context, not attribution: none of them governs stripJsonc/parseMenuJsonc. Each is listed because menu-test.sh is traced to it at file level, and the obligation gates that count them are unchanged from baseline. A human should confirm this against the baseline. The disclosures stay as the engine states them.

  • AI · confirmedUnmapped changed file menumodel-replay.test.mjs: verification code that carries a Verifies header

    The node:test replay of menu-test.sh's MenuModel.js assertions (adds the 66FW/BMFE/C8W1/BNZG witnesses, MC/DC rows and the Unicode differential). Line 1 carries // Verifies: for 24 requirements including the four JSONC ones, yet the package records mapping none for it. Position intended: its intent is verification of those requirements. A human may want to check why the engine does not count the .mjs Verifies header as a trace. The unmapped_code disclosure stands.

  • AI · confirmedUnmapped changed file report-reproducers.test.mjs: the three JSONC report tests flipped from expected failure to fixed

    The #13250/#13492/#13493 reporter-script tests now expect exit 0 and the ok: line (report-reproducers.test.mjs:36-59). Their Reproduces: markers stay, so they guard against the defects returning. Test code bound to KIs, not product behaviour. The unmapped_code disclosure stands.

  • AI opinion — unverifiedChange-effects analysis is unavailable for JS; function-level facts are bounded

    review.effects is absent (effects_unavailable), so the package has no new callees, gained effects, callers or new mutable state for stripJsonc/parseMenuJsonc. Read by hand: the new code adds only locals (input, out, inString, i, next), no module state, and no calls beyond String, RegExp.test and Array.isArray. The callers are Menu.qml's wrappers (Menu.qml:245, 260). review.scope reports no spec-gap candidates and coherence single.

  • AI opinion — unverifiedMirror composition: upstream product change vs dogfood proof work

    f4b88351 = upstream PR ff77cd02 (MenuModel.js, docs/menu.md, its menu-test.sh hunk) + pending efa5170b, which was amended to b2dae8db in c3647ca0 (VT and FF added to the whitespace tests). The rest is proof work: 66FW/BMFE/C8W1 re-applied and reworded, new SW-REQ-261001-BNZG, DEFECT-260927-CMMA/-4NG9/-7AX9, REVIEW-21/72/73/261001-ENZ2, three KIs set to fixed, the report-reproducer flip, witnesses/differentials trace re-reviews and review-citation re-location. The menu variable budget (proof.yaml max_variables 128->130) is NOT in this change: it landed on the baseline first (quattro-proof 4f1a8197), so the mirror changes no policy. The shipped default menu parses to the same 344 rows at baseline and at the evaluated tree (reviewer-checked).

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 21findings, with the engine's verification
  • Infoengine-confirmed#13250: a comma is dropped only when the next token is } or ] (SW-REQ-260927-66FW)
  • Infoengine-confirmed#13493: a // comment outside strings is dropped wherever it starts on the line (SW-REQ-260928-C8W1)
  • Infoengine-confirmed#13492: an array root yields no rows (SW-REQ-260928-BMFE)
  • Mediumengine-confirmedUnicode whitespace outside strings becomes a plain space: this is the PENDING follow-up b2dae8db, not part of the public PR head ff77cd02 (SW-REQ-261001-BNZG)→ where it's shown
  • Infoengine-confirmedSW-REQ-260922-E4J2 (JSONC stripping) is reworded to the single-pass scanner
  • Infoengine-confirmedSW-REQ-260922-3T3F (unparseable / non-object input gives an empty set) gains the array-root case in its rationale
  • Infocommentary (no claim)24 further requirements are touched only through the whole-file trace of menu-test.sh (and re-review stamps)
  • Infocommentary (no claim)The purpose branches are covered: 17/17 changed decision lines and 34/34 changed decisions, but no test outcome is observed
  • Mediumneeds a testQuestion: if upstream merges ff77cd02 WITHOUT b2dae8db, does a menu file with a BOM or a Unicode space before a // comment stop loading?→ where it's shown
  • Lowneeds a testQuestion: does the scanner behave the same under Qt's QV4 engine as under node?→ where it's shown
  • Lowneeds a testQuestion: do user extensions that were silently ignored before now load and override shipped entries?→ where it's shown
  • Mediumengine-confirmedknown_issue_sibling_disposition fails only on the evaluated tree: the three fixed JSONC KIs leave 3 open parsing siblings without a disposition→ where it's shown
  • Infoengine-confirmedobligation_decomposition_complete and obligation_evidence_complete fail identically at baseline (inherited)
  • Mediumcommentary (no claim)Readiness is blocked (introduced): 4 missing_obligation reasons are new with this change→ where it's shown
  • Infocommentary (no claim)16 further missing_obligation reasons sit on requirements touched only at file level
  • Mediumcommentary (no claim)No obligation cell has an observed outcome: test results are not joined (project configuration)→ where it's shown
  • Infoengine-confirmedUnmapped changed file menumodel-replay.test.mjs: verification code that carries a Verifies header→ spec question
  • Infoengine-confirmedUnmapped changed file report-reproducers.test.mjs: the three JSONC report tests flipped from expected failure to fixed→ spec question
  • Infocommentary (no claim)Change-effects analysis is unavailable for JS; function-level facts are bounded
  • Infocommentary (no claim)Mirror composition: upstream product change vs dogfood proof work
  • Lowcommentary (no claim)Opinion: block comments remain unsupported; the PR documents it rather than fixing it
Why the engine rates this risk level2 rules fired
  • 1 gate(s) newly failing vs the baseline run (introduced by this change): known_issue_sibling_disposition.
  • 2 changed code file(s) map to no requirement: test/node/menumodel-replay.test.mjs, test/node/report-reproducers.test.mjs.
Relevant tests4
Audit checks1 attributable to this PR · 218 project-wide

Changed with this PR (vs the baseline run)

  • Warningknown_issue_sibling_dispositionfailed_behaviorNewly failing

    raw status warn · severity warning

    4 known issue(s) need sibling disposition (3 open/reviewed siblings; 0 undispositioned isomorphic sites)

Cited by this review (project-wide checks)

  • Warningobligation_decomposition_completefailed_behaviorSame as baseline

    raw status warn · severity warning

    47 obligation(s) on 37 requirement(s) covered by satisfying children, 5 deferred (tracked), 9 accepted KI-debt (tripwire-backed, auto-expiring) — deferred obligations are tracked debt, not a pass

  • Warningobligation_evidence_completefailed_behaviorSame as baseline

    raw status warn · severity warning

    69 covered, 6 deferred (tracked), 9 accepted KI-debt (tripwire-backed, auto-expiring) — deferred obligations are tracked debt, not a pass

218 project-wide audit checks (173 passed · 3 with findings · 15 skipped or not run · 27 not applicable) — the rest are unchanged against the baseline run. Open Audit checks

All 218 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_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

  • Skippedslow_tests_cleanskippedSame as baseline

    raw status skip · severity error

  • Skippedsolver_latency_cleanskippedSame as baseline

    raw status skip · severity warning

  • 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_delegation_resolvespassedSame as baseline

    raw status pass · severity error

  • Passobligation_enforcement_backedpassedSame 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

  • Passsoftware_formalization_completepassedSame 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_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 accepted

Evaluated as this PR applied onto the audit baseline 4f1a8197 (commit 0e2dd894), not the PR's own branch — findings reflect the PR's change on the audited code. Freshness still tracks the PR head it represents, ff77cd02.

Repository
https://github.com/omacom/omarchy
Pull request
#13968
Evaluated tree
Synthetic mergesynthetic_merge
PR head commit
ff77cd023db8f47b75f2917131063268581bd824
Evaluated commit
0e2dd894093affa4a4cdea2cd7aab175ca3bb702
Audit baseline
4f1a8197f7b5f7eec2795c645a5a4853a194bbda
Spec revision
3c3e148c9f5d081920b811f97b23cc7fe4f216e6
Policy revision
4f1a8197f7b5f7eec2795c645a5a4853a194bbda
Package digest
sha256:8ea75a1e1f0a32f05f33bb194bf14be281ac1faf8b557e473fd3a894c2b28772
Schema version
reqproof.evidence-package.v1
Canonicalization
v1
Engine version
0.1.0-dev
Assembler version
0.1.0-dev+gd1dfe3c7494a
Package identity
epkg-99d25ad132136978f6ee1af02a3c38d24a57ae2d748682423d670b0f89192299
Assembled
Oct 1, 2026 · 2 weeks ago
Canonical digest
sha256:8ea75a1e1f0a32f05f33bb194bf14be281ac1faf8b557e473fd3a894c2b28772