[Phase 16] S5 — Verification truth: three states, not a success bit
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Start with the planned section at docs/roadmap/phase-16-trust-surface-hardening.md lines 416-447, then read verify_annex_iv_artifact and verify_integrity and how _io_safety._read_capped_json is used. The work adds checks['strong_layer_ran'], an opt-in --require-strong-layer flag, and a .sha256 sidecar written by forgelm export. Done means the five exit criteria hold, including the exit-6 tamper round trip, with a reproducer that fails before the fix.
由索引模型根据 Issue 内容生成。
描述
Roadmap · Phase 16, step S5 · size L · 3 unit(s) · planned in
docs/roadmap/phase-16-trust-surface-hardening.md:416-447
Summary
Three verifiers project a three-valued reality (verified / unverified / invalid) onto a two-valued valid plus an exit code, so "no strong layer ran" shares a success bit with "every strong layer passed". The exporter never writes a .sha256 sidecar for GGUF and gguf is in no dependency group, so a magic-only valid=true is the default outcome for ForgeLM's own artefacts. The writer half (CLI-03): export records its hash under exported_artifacts, a key the verifier never reads — it fails closed, a round-trip-integrity defect rather than a false pass.
Units
| Unit | Tracked by (October 2026 review) |
|---|---|
F-W20260729-TRUST-04 |
#83 · #84 · #85 · #446 · #566 · #573 · #598 · #599 |
F-W20260729-TRUST-05 |
#164 · #328 · #364 · #558 · #658 |
F-W20260729-CLI-03 |
#84 · #86 · #567 · #621 · #652 · #766 |
Decisions this step executes
- C-3 —
verify-ggufmagic-only verdict: opt-in--require-strong-layer; the default flip waits for the next MAJOR (tracked as a deferred issue). - C-4 —
forgelm exportwrites the.sha256sidecar its docs already claim.
Plan
- Add
checks['strong_layer_ran']and the opt-in--require-strong-layerflag. - Make
forgelm exportwrite the GGUF sidecar, so the strong layer is present by default. - Also owned by this step (deferral row
F-W20260729-VERIFY-UNCAPPED-READ): route the two unboundedjson.loadreads inverify_annex_iv_artifactandverify_integritythrough_io_safety._read_capped_json, so a deeply nested payload cannot end inRecursionError.
Exit criteria
- A 4-byte
b"GGUF"file with no parser and no sidecar does not report an unqualified success. - Hash-less Annex IV and pipeline roots do not return exit 0 by default, while any legacy override still reports
verified: false. - An export → tamper → verify round trip exits 6 on a flipped byte.
- The existing 1-vs-6 split is preserved exactly and stays structural (typed fields, never
reasonprose); the per-stageUNVERIFIEDbehaviour is asserted unchanged. - Both verifiers parse operator-supplied JSON through the capped reader.
How to deliver
- One root-cause family, committed on its own; then an Opus review round and a Sonnet review round, each with verified findings fixed and committed before the next step begins.
- A reproducer that is red before the fix and green after; the full gauntlet from
CLAUDE.mdpasses under./.venv/bin/python. - Every English documentation edit ships with its Turkish mirror in the same commit; a new or renamed audit event gets its EN and TR catalog rows in the same PR.
- A step that grows a deferred module carries its
budget_historyjustification in the same diff; a widened guard rolls out non-strict first, then flips. - Commit bodies cite
Absorbs F-W20260729-…; the CHANGELOG[Unreleased]section gets an entry only for a change a user or library consumer can observe (decision C-20).
Planned in docs/roadmap/phase-16-trust-surface-hardening.md (read at f94595f). Unit IDs (F-W20260729-…) come from the 2026-07-29/30 full-project review; the issue numbers next to them are the October 2026 review's records of the same defects.
- 主要语言
- Python
- 星标
- 9
- 派生
- 1
- 平均合并
- 8 小时 50 分钟
- 30 天内合并 PR
- 45
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
HodeTech/ForgeLM 的其他 Issue
-
area: site bug good first issue severity: low wave: 4
难度 2/5 1-3 小时 新手友好度 75/100
HodeTech/ForgeLM#961 · 1 条评论 ·
维护者通常 1 天内回复
-
area: dev-tooling bug severity: low source: roadmap wave: 4
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复
-
Trend-tracking jq recipe prints evaluation_completed=false as 'n/a', because jq's // operator treats false like null (F-W1-DOCS-TRAIN-16)可能已有人在做 @yuefdev 于 3 天前认领。 未关闭documentation good first issue severity: low source: review-2026-09 wave: 4
难度 1/5 1-3 小时 新手友好度 80/100
维护者通常 1 天内回复
-
documentation severity: medium source: review-2026-09 wave: 3
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
documentation good first issue severity: medium source: review-2026-09 wave: 3
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
相似的 Issue
-
Uninstall guide omits the CloudWatch log groups AWS CodeBuild creates for useCodeBuild pipelines未关闭bug documentation
难度 1/5 1-3 小时 新手友好度 88/100
awslabs/visual-asset-management-system#552 ·
维护者通常 1 天内回复
-
netbox status: needs triage type: documentation
难度 1/5 1 小时以内 新手友好度 76/100
netbox-community/netbox#23460 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
awslabs/threat-composer#362 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 72/100
ansys/pyansys-common-mcp#213 ·
维护者通常 3 天内回复