Skip to content

feat(opencode): upgrade plugin to full hook-guard port (search + read + strict) - #3660

Open
hybridindie wants to merge 1 commit into
Graphify-Labs:v8from
hybridindie:feat/opencode-hook-guard-port
Open

hybridindie wants to merge 1 commit into
Graphify-Labs:v8from
hybridindie:feat/opencode-hook-guard-port

feat(opencode): upgrade plugin to full hook-guard port (search + read…

4d9211b
Select commit
Loading
Failed to load commit list.
Graphify Labs / Graphify Formal Verification completed Sep 18, 2026 in 0s

Behavior change detected in 1 function(s)

Compared 26b02b5e3430e4ab85dd7e72c7b98836d8e65c48 (base) against 4d9211b5ae31bfcfb9d2b4ef7c9c9c091d42fb49 (head).

Covered 3/12 changed functions (9 abstained, 0 never run)

equivalent (proved) distinguished may-equivalent (sampled) unsupported error
0 1 2 9 0
  • graphify/build\.py · build_from_json: unsupported — no capturable inputs from the test suite; property tier: not verifiable: all 6 sampled inputs raised on both versions — the function never executed, so 'no divergence' would be vacuous (mostly NameError — names the real obstacle, not a sa…
  • graphify/build\.py · prefix_graph_for_global: unsupported — no capturable inputs from the test suite; property tier: not verifiable: all 200 sampled inputs raised on both versions — the function never executed, so 'no divergence' would be vacuous
  • graphify/cli\.py · dispatch_command: unsupported — no capturable inputs from the test suite; property tier: not verifiable: all 23 sampled inputs raised on both versions — the function never executed, so 'no divergence' would be vacuous (mostly SystemExit — names the real obstacle, not a…
  • graphify/extractors/elixir\.py · extract_elixir: unsupported — no capturable inputs from the test suite; property tier: parameter `path` is annotated `Path` — outside the synthesizable primitive/collection set
  • graphify/extractors/markdown\.py · extract_markdown: unsupported — no capturable inputs from the test suite; property tier: parameter `path` is annotated `Path` — outside the synthesizable primitive/collection set
  • graphify/extractors/rust\.py · extract_rust: unsupported — no capturable inputs from the test suite; property tier: parameter `path` is annotated `Path` — outside the synthesizable primitive/collection set
  • graphify/markdown\_resolution\.py · _match_cited_file: distinguished (reproduced) — a concrete input makes the two versions disagree at runtime · input \{"cited":"'\./'","doc\_file":"'\.mdx'","source\_files":"\{1, 2, 3\}"\}None vs raises AttributeError
  • graphify/ruby\_resolution\.py · resolve_ruby_member_calls: unsupported — no capturable inputs from the test suite; property tier: non-vacuity: domain too small (only 1 distinct inputs exercised, need 3) — 'no divergence' would be near-vacuous
  • graphify/watch\.py · _rebuild_code: unsupported — no capturable inputs from the test suite; property tier: parameter `watch_path` is annotated `Path` — outside the synthesizable primitive/collection set
  • graphify/watch\.py · _reconcile_markdown_links: unsupported — no capturable inputs from the test suite; property tier: parameter `project_root` is annotated `Path` — outside the synthesizable primitive/collection set

Backend availability notices:

  • 4 changed test function(s) excluded from verification (a test is the oracle, not the subject)

Formal verification is advisory: equivalent is a proof over a bounded sound subset; may_equivalent is sampled, not proven; unsupported and error are honest abstentions.