From fa3cd642a32177b323408a56cac477c60a268a0f Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 05:11:00 +0000 Subject: [PATCH 1/2] docs: document forge verify --deep four-state status and completion-gate test evidence --- mintlify/cli/quality.mdx | 13 ++++++++ mintlify/concepts/cross-session-memory.mdx | 8 ++++- mintlify/concepts/verification-gates.mdx | 36 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/mintlify/cli/quality.mdx b/mintlify/cli/quality.mdx index 2671274..297539e 100644 --- a/mintlify/cli/quality.mdx +++ b/mintlify/cli/quality.mdx @@ -15,6 +15,19 @@ forge verify forge verify --deep # multi-lens consensus (v0.19+) ``` +`forge verify --deep` reports a four-state `status` instead of a plain pass/fail: + +| Status | Meaning | +| ---------------- | ------------------------------------------------------------------------------------ | +| `PASS` | Every lens agreed **and** the core `forge verify` tests status is also `PASS`. | +| `FAIL` | At least one lens reported a real failure. | +| `INCOMPLETE` | A lens could not finish (timeout, crash, missing dependency) — treat as not proven. | +| `NOT_CONFIGURED` | No lenses are wired up for this repo — nothing was actually checked. | + +Only `PASS` counts as verified. `--deep` deliberately refuses to promote a consensus to +`PASS` when the underlying `forge verify` tests status is anything other than `PASS`, so +a green deep run always implies a green base run. + ## `forge scan` Skill-gate — vet a skill or MCP server for injection / RCE / exfil before install. diff --git a/mintlify/concepts/cross-session-memory.mdx b/mintlify/concepts/cross-session-memory.mdx index 1c636e6..6880999 100644 --- a/mintlify/concepts/cross-session-memory.mdx +++ b/mintlify/concepts/cross-session-memory.mdx @@ -47,10 +47,16 @@ on the agent. allows (fail-open). `FORGE_STOPGATE=0` disables it. +For sessions that changed code, the gate also requires **test evidence** — either a test +file in the session's diff or a fresh passing `forge verify` against the current +changes. A `forge handoff` snapshot alone no longer clears the code-change branch of the +gate. + The repair checklist points at the tools that finish the work: ```bash -forge docs sync # sweep the diff for stale doc mentions +forge verify # record the test evidence for code changes +forge docs sync # sweep the diff for stale doc mentions forge handoff "" --next "" # write the bounded session snapshot forge decide "" # record a choice so no session re-decides it ``` diff --git a/mintlify/concepts/verification-gates.mdx b/mintlify/concepts/verification-gates.mdx index 9475e48..797e20e 100644 --- a/mintlify/concepts/verification-gates.mdx +++ b/mintlify/concepts/verification-gates.mdx @@ -29,6 +29,20 @@ forge verify --deep # multi-lens consensus — several independent checks independent verification lenses, not just one. +`forge verify --deep` reports a four-state `status`, not a binary pass/fail: + +- `PASS` — every lens agreed **and** the core `forge verify` tests status is also + `PASS`. Only this state counts as verified. +- `FAIL` — at least one lens reported a real failure. +- `INCOMPLETE` — a lens could not finish (timeout, crash, missing dependency). Nothing + was disproven, but nothing was proven either. +- `NOT_CONFIGURED` — no lenses are wired up for this repo, so `--deep` had nothing to + check. + +The `PASS`-implies-base-`PASS` rule is deliberate: a green deep consensus can never +outrun a red base run, so `INCOMPLETE` or `NOT_CONFIGURED` on the base test lens +downgrades the deep result to match. + ## The hallucinated-symbol flag — `forge atlas has` `forge atlas has ` is the hallucination check: if the model calls a symbol that @@ -84,6 +98,28 @@ forge harden # gitleaks pre-commit + sandbox settings commit time so partial or unverified work is caught before it lands. +## Completion gate — test evidence required + +The Stop-path completion gate (see +[Cross-session memory](/concepts/cross-session-memory)) no longer accepts an agent +handoff as proof that code changes are done. For any session that touched source code, +the gate requires **real test evidence**: + +- a test file changed in the session's diff, **or** +- a fresh passing `forge verify` recorded against the current changes. + +A `forge handoff` snapshot on its own does not satisfy the gate — it records intent, not +verification. If neither piece of evidence is present, the gate blocks once with a +repair checklist: + +```bash +forge verify # produce the test evidence +forge handoff "" --next "" # then snapshot the session +``` + +Doc-only, config-only, and other non-code sessions are unaffected — the test-evidence +requirement fires only when the session's diff actually changes code. + ## UI checks — `forge uicheck` Deterministic UI checks, no LLM and no screenshots for the first three lenses: From 97cace40b02afb71a41fc0c5f7864f0571604190 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 05:15:23 +0000 Subject: [PATCH 2/2] docs: translate verify --deep and completion-gate updates into ar, cn, hi, zh-CN, zh-Hans --- mintlify/ar/cli/quality.mdx | 13 +++++++ mintlify/ar/concepts/cross-session-memory.mdx | 7 +++- mintlify/ar/concepts/verification-gates.mdx | 34 ++++++++++++++++++ mintlify/cn/cli/quality.mdx | 13 +++++++ mintlify/cn/concepts/cross-session-memory.mdx | 7 +++- mintlify/cn/concepts/verification-gates.mdx | 33 +++++++++++++++++ mintlify/hi/cli/quality.mdx | 13 +++++++ mintlify/hi/concepts/cross-session-memory.mdx | 7 +++- mintlify/hi/concepts/verification-gates.mdx | 36 +++++++++++++++++++ mintlify/zh-CN/cli/quality.mdx | 11 ++++++ .../zh-CN/concepts/cross-session-memory.mdx | 5 ++- .../zh-CN/concepts/verification-gates.mdx | 25 +++++++++++++ mintlify/zh-Hans/cli/quality.mdx | 11 ++++++ .../zh-Hans/concepts/cross-session-memory.mdx | 5 ++- .../zh-Hans/concepts/verification-gates.mdx | 25 +++++++++++++ 15 files changed, 240 insertions(+), 5 deletions(-) diff --git a/mintlify/ar/cli/quality.mdx b/mintlify/ar/cli/quality.mdx index cf41f46..f041658 100644 --- a/mintlify/ar/cli/quality.mdx +++ b/mintlify/ar/cli/quality.mdx @@ -15,6 +15,19 @@ forge verify forge verify --deep # multi-lens consensus (v0.19+) ``` +يُبلِّغ `forge verify --deep` عن `status` رباعي الحالات بدلًا من نجاح/إخفاق ثنائي: + +| الحالة | المعنى | +| ---------------- | ------------------------------------------------------------------------------------- | +| `PASS` | اتفقت جميع العدسات **و** حالة اختبارات `forge verify` الأساسية هي أيضًا `PASS`. | +| `FAIL` | أبلغت عدسة واحدة على الأقل عن إخفاق حقيقي. | +| `INCOMPLETE` | لم تتمكن عدسة من الإنهاء (مهلة، أو تعطل، أو تبعية مفقودة) — تُعامَل كأنها غير مُثبَتة. | +| `NOT_CONFIGURED` | لا توجد عدسات موصولة بهذا المستودع — لم يُفحَص شيء فعليًا. | + +`PASS` وحدها تُعتبر تحققًا. يرفض `--deep` عمدًا ترقية الإجماع إلى `PASS` عندما تكون حالة +اختبارات `forge verify` الأساسية أي شيء غير `PASS`، بحيث يستلزم اجتياز الفحص العميق +اجتياز الفحص الأساسي دائمًا. + ## `forge scan` بوّابة المهارات — فحص مهارة أو خادم MCP بحثًا عن الحقن / RCE / التسريب قبل التثبيت. diff --git a/mintlify/ar/concepts/cross-session-memory.mdx b/mintlify/ar/concepts/cross-session-memory.mdx index 981e9d9..9907217 100644 --- a/mintlify/ar/concepts/cross-session-memory.mdx +++ b/mintlify/ar/concepts/cross-session-memory.mdx @@ -46,10 +46,15 @@ description: "تثبيت الجلسة، وبوّابة الإكمال، ولقط `FORGE_STOPGATE=0` يوقفه. +بالنسبة للجلسات التي غيّرت الشيفرة، تشترط البوّابة أيضًا **دليلًا اختباريًا** — إما ملف +اختبار في فرق الجلسة، أو تشغيلًا طازجًا ناجحًا لـ `forge verify` مقابل التغييرات +الحالية. لم تعُد لقطة `forge handoff` وحدها كافية لتجاوز فرع تغيير الشيفرة من البوّابة. + قائمة الإصلاح تُشير إلى الأدوات التي تُنهي العمل: ```bash -forge docs sync # sweep the diff for stale doc mentions +forge verify # record the test evidence for code changes +forge docs sync # sweep the diff for stale doc mentions forge handoff "" --next "" # write the bounded session snapshot forge decide "" # record a choice so no session re-decides it ``` diff --git a/mintlify/ar/concepts/verification-gates.mdx b/mintlify/ar/concepts/verification-gates.mdx index b5149ac..0ebd988 100644 --- a/mintlify/ar/concepts/verification-gates.mdx +++ b/mintlify/ar/concepts/verification-gates.mdx @@ -28,6 +28,19 @@ forge verify --deep # multi-lens consensus — several independent checks تحقق مستقلة، لا عدسة واحدة فقط. +يُبلِّغ `forge verify --deep` عن `status` رباعي الحالات، لا نجاح/إخفاق ثنائيًا: + +- `PASS` — اتفقت جميع العدسات **و** حالة اختبارات `forge verify` الأساسية هي أيضًا + `PASS`. هذه الحالة وحدها تُعدّ تحققًا. +- `FAIL` — أبلغت عدسة واحدة على الأقل عن إخفاق حقيقي. +- `INCOMPLETE` — لم تتمكن عدسة من الإنهاء (مهلة، أو تعطل، أو تبعية مفقودة). لم يُدحَض + شيء، لكن لم يُثبَت شيء كذلك. +- `NOT_CONFIGURED` — لا توجد عدسات موصولة بهذا المستودع، فلم يجد `--deep` ما يفحصه. + +قاعدة أن `PASS` تستلزم `PASS` في الفحص الأساسي مقصودة: لا يمكن لإجماع عميق أخضر أن +يتجاوز تشغيلًا أساسيًا أحمر، لذا فإن `INCOMPLETE` أو `NOT_CONFIGURED` على عدسة الاختبار +الأساسية يُخفّض نتيجة الفحص العميق لتطابقها. + ## عَلَم الرمز المُهلوَس — `forge atlas has` `forge atlas has ` هو فحص الهلوسة: إذا استدعى النموذج رمزًا ليس في الرسم البياني @@ -83,6 +96,27 @@ forge harden # gitleaks pre-commit + sandbox settings وقت الالتزام حتى يُصطاد العمل الجزئي أو غير المُتحقَق منه قبل أن يهبط. +## بوابة الإكمال — الدليل الاختباري مطلوب + +لم تعُد بوابة إكمال مسار Stop (راجع +[الذاكرة عبر الجلسات](/concepts/cross-session-memory)) تقبل تسليم الوكيل دليلًا على +اكتمال تغييرات الشيفرة. بالنسبة لأي جلسة لمست شيفرة المصدر، تشترط البوابة **دليلًا +اختباريًا حقيقيًا**: + +- ملف اختبار مُعدَّل في فرق الجلسة، **أو** +- تشغيل ناجح طازج لـ `forge verify` مُسجَّل مقابل التغييرات الحالية. + +لا تكفي لقطة `forge handoff` وحدها لاجتياز البوابة — فهي تُسجّل النية، لا التحقق. إن +غاب كِلا الدليلَين، تحجب البوابة مرة واحدة مع قائمة إصلاح: + +```bash +forge verify # produce the test evidence +forge handoff "" --next "" # then snapshot the session +``` + +الجلسات التي لا تمس الشيفرة — كالتغييرات على التوثيق فقط، أو الإعدادات فقط، وغيرها — +لا تتأثر؛ فمطلب الدليل الاختباري يُطلَق فقط حين يُغيّر فرق الجلسة الشيفرة فعلًا. + ## فحوصات واجهة المستخدم — `forge uicheck` فحوصات UI حتمية، دون LLM ودون لقطات شاشة لأول ثلاث عدسات: diff --git a/mintlify/cn/cli/quality.mdx b/mintlify/cn/cli/quality.mdx index b8e830c..6ec718d 100644 --- a/mintlify/cn/cli/quality.mdx +++ b/mintlify/cn/cli/quality.mdx @@ -15,6 +15,19 @@ forge verify forge verify --deep # multi-lens consensus (v0.19+) ``` +`forge verify --deep` 汇报的是一个四态的 `status`,而不是简单的 pass/fail: + +| 状态 | 含义 | +| ---------------- | ------------------------------------------------------------------------------------- | +| `PASS` | 每一个视角都一致通过,**并且**核心 `forge verify` 的测试状态也是 `PASS`。 | +| `FAIL` | 至少有一个视角报出了真实的失败。 | +| `INCOMPLETE` | 某个视角没能跑完(超时、崩溃、依赖缺失)—— 视为未被证明。 | +| `NOT_CONFIGURED` | 这个仓库没有接通任何视角 —— 实际上什么都没检查。 | + +只有 `PASS` 才算已验证。`--deep` 有意拒绝在底层 `forge verify` 的测试状态不是 `PASS` +时把共识提升为 `PASS`,所以一次绿色的 deep 运行永远意味着一次绿色的 +base 运行。 + ## `forge scan` 技能门 —— 在安装前审核一个 skill 或 MCP 服务器是否有注入 / RCE / 数据外泄风险。 diff --git a/mintlify/cn/concepts/cross-session-memory.mdx b/mintlify/cn/concepts/cross-session-memory.mdx index c89f125..de99063 100644 --- a/mintlify/cn/concepts/cross-session-memory.mdx +++ b/mintlify/cn/concepts/cross-session-memory.mdx @@ -45,10 +45,15 @@ Stop 路径上唯一有资格作出回应的 guard 是 `completion-gate.sh` 也都放行(fail-open)。`FORGE_STOPGATE=0` 可以关掉它。 +对于动了代码的会话,这个门还要求提供**测试证据** —— 要么会话 diff 里有一个 +测试文件,要么针对当前变更有一次新鲜通过的 `forge verify`。仅凭一份 +`forge handoff` 快照,已经不足以清掉这个门的代码变更这一支。 + 修复清单指向那些能收尾工作的工具: ```bash -forge docs sync # sweep the diff for stale doc mentions +forge verify # record the test evidence for code changes +forge docs sync # sweep the diff for stale doc mentions forge handoff "" --next "" # write the bounded session snapshot forge decide "" # record a choice so no session re-decides it ``` diff --git a/mintlify/cn/concepts/verification-gates.mdx b/mintlify/cn/concepts/verification-gates.mdx index a466a7f..146fa07 100644 --- a/mintlify/cn/concepts/verification-gates.mdx +++ b/mintlify/cn/concepts/verification-gates.mdx @@ -29,6 +29,19 @@ forge verify --deep # multi-lens consensus — several independent checks 独立的验证视角,而不只是一个。 +`forge verify --deep` 汇报的是一个四态的 `status`,不是二元的 pass/fail: + +- `PASS` —— 每一个视角都一致通过,**并且**核心 `forge verify` 的测试状态也是 + `PASS`。只有这个状态才算已验证。 +- `FAIL` —— 至少有一个视角报出了真实的失败。 +- `INCOMPLETE` —— 某个视角没能跑完(超时、崩溃、依赖缺失)。什么都没被证伪, + 但也什么都没被证明。 +- `NOT_CONFIGURED` —— 这个仓库没有接通任何视角,所以 `--deep` 无东西可查。 + +`PASS` 蕴含 base 也是 `PASS` 这条规则是有意为之:一次绿色的 deep 共识永远 +不能跑赢一次红色的 base 运行,所以 base 测试视角上的 `INCOMPLETE` 或 +`NOT_CONFIGURED` 会把 deep 的结果同步降级。 + ## 幻觉符号标记 —— `forge atlas has` `forge atlas has ` 是幻觉检查:如果模型调用了一个不在代码图里的 @@ -84,6 +97,26 @@ forge harden # gitleaks pre-commit + sandbox settings 让部分完成或未验证的工作在落地之前就被拦住。 +## 完成门 —— 必须有测试证据 + +Stop 路径上的完成门(见 +[跨会话记忆](/concepts/cross-session-memory))不再接受一份代理 handoff 作为 +代码变更已完成的证明。对任何动了源码的会话,这个门都要求**真实的测试证据**: + +- 会话 diff 里改动过一个测试文件,**或者** +- 针对当前变更有一次新鲜通过的 `forge verify` 记录在案。 + +单独一份 `forge handoff` 快照并不能满足这个门 —— 它记录的是意图,而不是 +验证。如果两种证据都没有,这个门会**阻塞一次**,并附上一份修复清单: + +```bash +forge verify # produce the test evidence +forge handoff "" --next "" # then snapshot the session +``` + +只改文档、只改配置以及其他非代码的会话不受影响 —— 只有当会话的 diff 真的 +动了代码时,测试证据的要求才会触发。 + ## UI 检查 —— `forge uicheck` 确定性的 UI 检查,前三个视角不需要 LLM 也不需要截图: diff --git a/mintlify/hi/cli/quality.mdx b/mintlify/hi/cli/quality.mdx index b98b1d8..824e68f 100644 --- a/mintlify/hi/cli/quality.mdx +++ b/mintlify/hi/cli/quality.mdx @@ -15,6 +15,19 @@ forge verify forge verify --deep # multi-lens consensus (v0.19+) ``` +`forge verify --deep` सामान्य pass/fail के बजाय एक चार-अवस्था वाला `status` रिपोर्ट करता है: + +| Status | अर्थ | +| ---------------- | ------------------------------------------------------------------------------------ | +| `PASS` | हर lens सहमत हुआ **और** core `forge verify` tests status भी `PASS` है। | +| `FAIL` | कम-से-कम एक lens ने वास्तविक failure रिपोर्ट किया। | +| `INCOMPLETE` | कोई lens पूरा नहीं हो सका (timeout, crash, missing dependency) — इसे unproven मानें। | +| `NOT_CONFIGURED` | इस repo के लिए कोई lenses wired नहीं हैं — असल में कुछ भी check नहीं हुआ। | + +केवल `PASS` को verified माना जाता है। `--deep` जानबूझकर consensus को `PASS` पर promote +करने से मना कर देता है जब अंतर्निहित `forge verify` tests status `PASS` के अलावा कुछ भी हो, इसलिए +एक हरा deep run हमेशा एक हरे base run का संकेत देता है। + ## `forge scan` Skill-गेट — इंस्टॉल से पहले किसी skill या MCP सर्वर की injection / RCE / exfil के लिए जाँच करें। diff --git a/mintlify/hi/concepts/cross-session-memory.mdx b/mintlify/hi/concepts/cross-session-memory.mdx index a5ebbf1..c4446fa 100644 --- a/mintlify/hi/concepts/cross-session-memory.mdx +++ b/mintlify/hi/concepts/cross-session-memory.mdx @@ -47,10 +47,15 @@ description: "सेशन एंकरिंग, कम्प्लीशन हर आंतरिक त्रुटि allow करती है (fail-open)। `FORGE_STOPGATE=0` इसे अक्षम करता है। +जिन सेशनों में code बदला है, उनके लिए gate **test evidence** भी माँगता है — या तो सेशन के +diff में एक test file, या मौजूदा बदलावों के विरुद्ध एक ताज़ा passing `forge verify`। +अकेला `forge handoff` snapshot अब code-change branch of the gate को clear नहीं करता। + Repair checklist उन टूल्स की ओर इशारा करता है जो काम पूरा करते हैं: ```bash -forge docs sync # sweep the diff for stale doc mentions +forge verify # record the test evidence for code changes +forge docs sync # sweep the diff for stale doc mentions forge handoff "" --next "" # write the bounded session snapshot forge decide "" # record a choice so no session re-decides it ``` diff --git a/mintlify/hi/concepts/verification-gates.mdx b/mintlify/hi/concepts/verification-gates.mdx index bfc786b..ff7dfaf 100644 --- a/mintlify/hi/concepts/verification-gates.mdx +++ b/mintlify/hi/concepts/verification-gates.mdx @@ -29,6 +29,20 @@ forge verify --deep # multi-lens consensus — several independent checks verification lenses से गुज़रना पड़ता है, केवल एक से नहीं। +`forge verify --deep` एक binary pass/fail के बजाय एक चार-अवस्था वाला `status` रिपोर्ट करता है: + +- `PASS` — हर lens सहमत हुआ **और** core `forge verify` tests status भी `PASS` है। केवल + यही state verified मानी जाती है। +- `FAIL` — कम-से-कम एक lens ने वास्तविक failure रिपोर्ट किया। +- `INCOMPLETE` — कोई lens पूरा नहीं हो सका (timeout, crash, missing dependency)। कुछ भी + disprove नहीं हुआ, पर कुछ prove भी नहीं हुआ। +- `NOT_CONFIGURED` — इस repo के लिए कोई lenses wired नहीं हैं, इसलिए `--deep` के पास + check करने को कुछ नहीं था। + +`PASS`-implies-base-`PASS` नियम जानबूझकर है: एक हरा deep consensus कभी भी एक लाल base run +से आगे नहीं निकल सकता, इसलिए base test lens पर `INCOMPLETE` या `NOT_CONFIGURED` deep +result को उसी के अनुरूप downgrade कर देता है। + ## Hallucinated-symbol flag — `forge atlas has` `forge atlas has ` hallucination check है: यदि मॉडल किसी ऐसे symbol को call @@ -86,6 +100,28 @@ forge harden # gitleaks pre-commit + sandbox settings floor चलाता है ताकि आंशिक या unverified काम land होने से पहले पकड़ा जाए। +## Completion gate — test evidence अनिवार्य + +Stop-path completion gate (देखें +[क्रॉस-सेशन मेमोरी](/concepts/cross-session-memory)) अब एजेंट के handoff को इस बात के +प्रमाण के रूप में स्वीकार नहीं करता कि code changes पूरे हो चुके हैं। किसी भी ऐसे सेशन के लिए +जिसने source code को छुआ है, gate **वास्तविक test evidence** माँगता है: + +- सेशन के diff में बदली गई एक test file, **या** +- मौजूदा बदलावों के विरुद्ध रिकॉर्ड किया गया एक ताज़ा passing `forge verify`। + +अकेला `forge handoff` snapshot gate को संतुष्ट नहीं करता — यह intent रिकॉर्ड करता है, +verification नहीं। यदि दोनों में से कोई भी प्रमाण मौजूद नहीं है, तो gate एक बार एक repair +checklist के साथ ब्लॉक करता है: + +```bash +forge verify # produce the test evidence +forge handoff "" --next "" # then snapshot the session +``` + +Doc-only, config-only, और अन्य non-code सेशन प्रभावित नहीं होते — test-evidence अनिवार्यता +केवल तभी लागू होती है जब सेशन का diff वास्तव में code बदलता है। + ## UI checks — `forge uicheck` Deterministic UI checks, पहले तीन lenses के लिए कोई LLM नहीं और कोई screenshots नहीं: diff --git a/mintlify/zh-CN/cli/quality.mdx b/mintlify/zh-CN/cli/quality.mdx index c7c6277..0f28f32 100644 --- a/mintlify/zh-CN/cli/quality.mdx +++ b/mintlify/zh-CN/cli/quality.mdx @@ -14,6 +14,17 @@ forge verify forge verify --deep # multi-lens consensus (v0.19+) ``` +`forge verify --deep` 报告的是四态 `status`,而不是简单的通过 / 失败: + +| Status | 含义 | +| ---------------- | ------------------------------------------------------------------------------------ | +| `PASS` | 所有镜头都一致通过,**并且**核心 `forge verify` 的测试状态也是 `PASS`。 | +| `FAIL` | 至少有一个镜头报告了真实失败。 | +| `INCOMPLETE` | 有镜头未能完成(超时、崩溃、依赖缺失)—— 视为未被证明。 | +| `NOT_CONFIGURED` | 该仓库没有接入任何镜头 —— 实际上什么也没被检查。 | + +只有 `PASS` 才算已验证。`--deep` 有意拒绝在底层 `forge verify` 测试状态不是 `PASS` 时把共识提升为 `PASS`,因此一次绿色的 deep 运行始终意味着底层运行也是绿色的。 + ## `forge scan` skill 门 —— 在安装前审查某个 skill 或 MCP 服务器是否存在注入 / RCE / 泄露风险。 diff --git a/mintlify/zh-CN/concepts/cross-session-memory.mdx b/mintlify/zh-CN/concepts/cross-session-memory.mdx index 3e89795..f2e89f4 100644 --- a/mintlify/zh-CN/concepts/cross-session-memory.mdx +++ b/mintlify/zh-CN/concepts/cross-session-memory.mdx @@ -36,10 +36,13 @@ Stop 路径上唯一被允许回答的 guard 是 `completion-gate.sh` (`src/gate 如果代码动了但没有对应的文档或状态产物跟进,该门会**阻断一次**,阻断原因就是修复清单。其他情况一律放行,内部错误也一律放行(失败开放)。`FORGE_STOPGATE=0` 可禁用它。 +对于改动了代码的会话,该门还要求**测试证据** —— 要么会话 diff 中有一份测试文件,要么针对当前变更有一次新鲜且通过的 `forge verify`。仅凭一份 `forge handoff` 快照,已不再能通过代码变更那一支门。 + 修复清单指向能收尾这项工作的工具: ```bash -forge docs sync # sweep the diff for stale doc mentions +forge verify # record the test evidence for code changes +forge docs sync # sweep the diff for stale doc mentions forge handoff "" --next "" # write the bounded session snapshot forge decide "" # record a choice so no session re-decides it ``` diff --git a/mintlify/zh-CN/concepts/verification-gates.mdx b/mintlify/zh-CN/concepts/verification-gates.mdx index 332b91b..abafcfd 100644 --- a/mintlify/zh-CN/concepts/verification-gates.mdx +++ b/mintlify/zh-CN/concepts/verification-gates.mdx @@ -22,6 +22,15 @@ forge verify --deep # multi-lens consensus — several independent checks `--deep` (v0.19+) 升级为多镜头共识:该变更必须通过多个独立的验证镜头,而不只是一个。 +`forge verify --deep` 报告的是四态 `status`,而不是二元的通过 / 失败: + +- `PASS` —— 所有镜头都一致通过,**并且**核心 `forge verify` 的测试状态也是 `PASS`。只有这个状态才算已验证。 +- `FAIL` —— 至少有一个镜头报告了真实失败。 +- `INCOMPLETE` —— 有镜头未能完成(超时、崩溃、依赖缺失)。没有推翻任何东西,但也没有证明任何东西。 +- `NOT_CONFIGURED` —— 该仓库没有接入任何镜头,所以 `--deep` 没有可以检查的东西。 + +`PASS` 蕴含底层 `PASS` 的规则是有意为之:一次绿色的 deep 共识永远无法跑赢红色的底层运行,因此底层测试镜头上的 `INCOMPLETE` 或 `NOT_CONFIGURED` 会把 deep 结果降级为同样的状态。 + ## 幻觉符号标记 —— `forge atlas has` `forge atlas has ` 是幻觉检查:如果模型调用了一个不在代码图中的符号,这道门会标记它。 @@ -69,6 +78,22 @@ forge harden # gitleaks pre-commit + sandbox settings `forge precommit` (v0.19+) 是一道提交级门 —— 在 commit 时运行验证底线,以便在部分或未验证的工作落库之前捕获它们。 +## 完成门 —— 需要测试证据 + +Stop 路径上的完成门(见 [跨会话记忆](/concepts/cross-session-memory))不再接受一份 agent handoff 作为代码变更已完成的证明。任何触碰了源码的会话,该门都要求**真实的测试证据**: + +- 会话 diff 中改动了一份测试文件,**或** +- 针对当前变更有一次新鲜且通过的 `forge verify` 记录。 + +仅凭一份 `forge handoff` 快照不满足该门 —— 它记录的是意图,不是验证。如果两种证据都不存在,该门会**阻断一次**,阻断原因就是修复清单: + +```bash +forge verify # produce the test evidence +forge handoff "" --next "" # then snapshot the session +``` + +只涉及文档、只涉及配置以及其他非代码类会话不受影响 —— 测试证据的要求只在会话 diff 实际改动了代码时才会触发。 + ## UI 检查 —— `forge uicheck` 确定性 UI 检查,前三个镜头不用 LLM 也不用截图: diff --git a/mintlify/zh-Hans/cli/quality.mdx b/mintlify/zh-Hans/cli/quality.mdx index 59766bb..0988a1b 100644 --- a/mintlify/zh-Hans/cli/quality.mdx +++ b/mintlify/zh-Hans/cli/quality.mdx @@ -14,6 +14,17 @@ forge verify forge verify --deep # 多视角共识(v0.19+) ``` +`forge verify --deep` 报告的是四态 `status`,而不是简单的通过/失败: + +| Status | 含义 | +| ---------------- | --------------------------------------------------------------------------------- | +| `PASS` | 每个视角都一致通过,**并且**核心 `forge verify` 的测试状态也是 `PASS`。 | +| `FAIL` | 至少有一个视角报告了真实的失败。 | +| `INCOMPLETE` | 某个视角未能完成(超时、崩溃、缺依赖)——视为未被证明。 | +| `NOT_CONFIGURED` | 本仓库没有接入任何视角——实际上什么都没检查。 | + +只有 `PASS` 才算“已验证”。当底层 `forge verify` 的测试状态不是 `PASS` 时,`--deep` 会有意拒绝把共识提升为 `PASS`,因此一次绿色的 deep 运行必然意味着一次绿色的基础运行。 + ## `forge scan` 技能关卡——在安装前审查一个 skill 或 MCP 服务器是否存在注入 / RCE / 数据外泄风险。 diff --git a/mintlify/zh-Hans/concepts/cross-session-memory.mdx b/mintlify/zh-Hans/concepts/cross-session-memory.mdx index 2eb0e0a..7b6a789 100644 --- a/mintlify/zh-Hans/concepts/cross-session-memory.mdx +++ b/mintlify/zh-Hans/concepts/cross-session-memory.mdx @@ -37,10 +37,13 @@ Stop 路径上唯一有权作答的 guard 是 `completion-gate.sh` 如果代码动了、却没有跟进文档或状态产物,该关卡会**拦下一次**,并以修复清单作为原因。其他情况一律放行,所有内部错误也放行(fail-open)。`FORGE_STOPGATE=0` 可关闭它。 +对于改动了代码的会话,该关卡还要求提供**测试证据**——要么在会话 diff 中包含一个测试文件,要么针对当前改动重新跑一次通过的 `forge verify`。仅有一次 `forge handoff` 快照,已经不足以清掉关卡中“代码变更”这一分支。 + 修复清单指向能把工作收尾的工具: ```bash -forge docs sync # 扫过 diff,找出过期的文档提法 +forge verify # 为代码变更记录测试证据 +forge docs sync # 扫过 diff,找出过期的文档提法 forge handoff "" --next "" # 写下有边界的会话快照 forge decide "" # 记录一次选择,让下一次会话不再重新决定 ``` diff --git a/mintlify/zh-Hans/concepts/verification-gates.mdx b/mintlify/zh-Hans/concepts/verification-gates.mdx index 5187793..efa8aff 100644 --- a/mintlify/zh-Hans/concepts/verification-gates.mdx +++ b/mintlify/zh-Hans/concepts/verification-gates.mdx @@ -22,6 +22,15 @@ forge verify --deep # 多视角共识——多个独立检查必须一致 `--deep`(v0.19+)升级为多视角共识:变更必须通过多个独立的验证视角,而不只是一个。 +`forge verify --deep` 报告的是四态 `status`,不是二元的通过/失败: + +- `PASS` —— 每个视角都一致通过,**并且**核心 `forge verify` 的测试状态也是 `PASS`。只有这个状态才算“已验证”。 +- `FAIL` —— 至少有一个视角报告了真实的失败。 +- `INCOMPLETE` —— 某个视角未能完成(超时、崩溃、缺依赖)。既没有被证伪,也没有被证明。 +- `NOT_CONFIGURED` —— 本仓库没有接入任何视角,`--deep` 无从检查。 + +`PASS` 蕴含基础 `PASS` 的规则是有意为之:一次绿色的 deep 共识永远不能跑在红色的基础运行前面,因此基础测试视角上的 `INCOMPLETE` 或 `NOT_CONFIGURED` 会把 deep 的结果降级到相应状态。 + ## 幻觉符号标记 —— `forge atlas has` `forge atlas has ` 是幻觉检查:如果模型调用了不在代码图里的符号,该关卡会把它标出来。 @@ -69,6 +78,22 @@ forge harden # gitleaks pre-commit + 沙箱设置 `forge precommit`(v0.19+)是一道 commit 级别的关卡——它在 commit 时运行验证下限,让部分或未验证的工作在落地前被拦下。 +## 完成关卡 —— 需要测试证据 + +Stop 路径上的完成关卡(见 [跨会话记忆](/concepts/cross-session-memory))不再把代理的 handoff 当作代码变更已完成的证据。对于任何触及源码的会话,该关卡要求**真实的测试证据**: + +- 在会话 diff 中改动了一个测试文件,**或者** +- 针对当前改动重新跑了一次通过的 `forge verify`。 + +单凭一次 `forge handoff` 快照无法满足该关卡——它记录的是意图,不是验证。如果两种证据都没有,关卡会以修复清单**拦下一次**: + +```bash +forge verify # 生成测试证据 +forge handoff "" --next "" # 然后再对会话拍快照 +``` + +只涉及文档、只涉及配置以及其他非代码会话不受影响——测试证据要求只在会话 diff 真正改动了代码时才会触发。 + ## UI 检查 —— `forge uicheck` 确定性 UI 检查,前三个视角不使用 LLM 也不使用截图: