Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Phase 16] S7 — CLI and wizard boundary: policy declared must be policy enforced

未关闭
#893 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
12/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
活跃
技术栈
huggingface, python
领域
cli

调研方向

This is an umbrella roadmap issue, not a single fix. Start with the --offline dispatch path in _dispatch.py, the run_chat / load_model call sites, and the wizard, using the planned section in docs/roadmap/phase-16-trust-surface-hardening.md (lines 481-516). Done means the five exit criteria pass, each in its own subprocess or sentinel test.

由索引模型根据 Issue 内容生成。

描述

phase: 16 source: roadmap

Roadmap · Phase 16, step S7 · size XL · 8 unit(s) · planned in docs/roadmap/phase-16-trust-surface-hardening.md:481-516

Summary

All eight units are the CLI boundary declaring something it does not enforce or cannot deliver. --offline is applied in _dispatch.py after the subcommand is dispatched, so the global flag is inert for every subcommand — export, deploy, ingest, audit, safety-eval, cache-*, quickstart's parent process — while the CLI reference promises it disables all Hub network calls; doctor is the only exception, because it declares its own flag.

Units

Unit Tracked by (October 2026 review)
C33-CLI-ERROR-ENVELOPE (= CLI-05 + CLI-11) #79 · #365 · #376 · #420 · #547 · #567 · #643 · #652 · #661 · #664 · #674 · #677 · #713 · #832
F-W20260729-CLI-04 #100 · #109 · #542 · #571 · #635
F-W20260729-CLI-02 #113 · #571 · #635
F-W20260729-CLI-17 #113 · #542 · #567 · #595 · #604 · #643 · #738
F-W20260729-CLI-18 #113 · #542 · #595 · #604 · #643 · #654 · #738
F-W20260729-CLI-09 #113 · #561 · #563 · #600 · #644 · #650 · #651 · #668 · #691 · #692 · #693 · #694 · #695
F-W20260729-CLI-12 #113 · #600 · #643 · #668 · #691 · #692 · #693 · #694 · #695
F-W20260729-CLI-13 #113 · #600 · #668 · #691 · #692 · #693 · #694 · #695

Decisions this step executes

  • C-11 — the [export] extra: the external converter becomes an explicit, validated prerequisite.

Plan

  • Commit 1, the central seam: apply the offline policy before dispatch and thread offline into run_chat / load_model; add one canonical failure renderer for UnicodeDecodeError, OSError and the no-train modes.
  • Commit 2, capability honesty: [export] stops proving capability with import llama_cpp and probes for a real converter (doctor uses the same false proxy and is corrected with it; the FileNotFoundError message names the actual install step); share quantization / temperature validation between the parser and the REPL; add the cache-models local-path branch.
  • Commit 3, the wizard: three-state keep / replace / disable per collector, WizardOutcome.valid, and path resolution inside the try block.

Exit criteria

  • Every no-train mode emits exactly one JSON object on stdout plus the documented exit code, with no log text on stdout.
  • An invalid-UTF-8 config, a read-only cache and an unwritable export parent each produce one {"success": false, …} object, in separate subprocess tests.
  • forgelm --offline chat HUB_ID reaches no network function under sentinels, and local_files_only=True reaches both from_pretrained calls.
  • An invalid generated config leaves the file, preserves the state snapshot, prints no "start later" message and exits 1.
  • Explicit-disable answers leave fields absent while bare Enter preserves them, asserted in both directions.

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.md passes 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_history justification 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
平均合并
4 小时 3 分钟
30 天内合并 PR
3

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

HodeTech/ForgeLM 的其他 Issue

查看 HodeTech/ForgeLM 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。