verify-gguf: fail closed by default when no strong layer ran (magic-only verdict) — deferred until the next MAJOR release
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 15/100
Research direction
Read the deferral row at docs/roadmap/risks-and-decisions.md:259 and the exit-code rule in error-handling.md (rule 3) to see why the default stays at exit 0 for now. Do not start until #891 lands C-3 and C-4 and a MAJOR release is scheduled. Done means verify-gguf exits non-zero when no strong layer ran, the opt-out is documented, and the CHANGELOG names F-W20260729-TRUST-04-default.
Written by the indexing model from the issue text.
Description
Deferred work ·
F-W20260729-TRUST-04-default· severity Medium · cost ~1 h · recorded indocs/roadmap/risks-and-decisions.md:259
Summary
Decision C-3 adds an opt-in --require-strong-layer (Phase 16 S5) and keeps a magic-only verdict at exit 0 by default, because flipping the default breaks the jq -e '.valid' recipe the manual recommends, which error-handling.md rule 3 makes a MAJOR change. This issue is the flip itself: a run in which neither the GGUF metadata parse nor a SHA-256 sidecar check happened must not exit 0 by default.
Condition or budget
The next MAJOR release, after Phase 16 S5 (#891) lands C-3 and C-4 — the exporter then writes the sidecar, so the strong layer is present by default and the flip is nearly free.
State today (re-checked 2026-10-09)
No --require-strong-layer flag exists yet, the exporter writes no .gguf.sha256, and a magic-only check still returns valid=True; the package is at 0.11.1rc1.
Related
#83 (magic-only acceptance; lists the non-zero exit only as an alternative) and #84 (the exporter writing the sidecar).
Acceptance criteria
- With no strong layer,
verify-ggufexits non-zero by default; the opt-out is documented and the release notes name the MAJOR change. - The row is removed from the deferral table and the CHANGELOG names its ID (the table's removal contract).
Recorded in docs/roadmap/risks-and-decisions.md (read at f94595f) and re-checked against the code on 2026-10-09. The row leaves that table only when the fix is on main, the CHANGELOG names its ID and any promised guard exists.
- Dominant language
- Python
- Stars
- 9
- Forks
- 1
- Avg merge
- 11h 8m
- Merged PRs (30d)
- 10
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from HodeTech/ForgeLM
-
area: dev-tooling bug severity: low source: roadmap wave: 4
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Site: the theme-locked --code-comment grey (#6a6f80) on the dark code surface is 3.8:1, below WCAG AA, in both themes (F-W1-SITE-06)Possibly taken @vortsghost2025 claimed this 2 days ago. Openarea: site bug good first issue severity: low source: review-2026-09 wave: 4
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Choosing-a-trainer table documents KTO rows as {prompt, response, label}, but the KTO loader requires a completion column (F-W1-DOCS-TRAIN-02)Possibly taken @vortsghost2025 claimed this 1 day ago. Opendocumentation good first issue severity: medium source: review-2026-09 wave: 3
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
documentation good first issue severity: low source: review-2026-09 wave: 4
Difficulty 1/5 1-3 hours Newbie friendliness 80/100
Maintainers usually reply within 1 day
-
documentation severity: medium source: review-2026-09 wave: 3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
All issues in HodeTech/ForgeLM
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
jbacalso24/mimry#291 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 2/5 Under an hour Newbie friendliness 82/100
eli-alvarado/us-watchlist-alerts#14 ·
Maintainers usually reply within 1 day
-
from-review-extraction python severity:nit
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
LearningCircuit/local-deep-research#7462 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
cathrynlavery/diagram-design#441 ·
Maintainers usually reply within 2 days
-
[Cleanup] Include the public header in work_split.cppPossibly taken @blozano-tt claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
tenstorrent/tt-metal#60850 ·
Maintainers usually reply within 1 day