定义项目内持久的问题、环境阻塞、修复任务和复检事件,使智能体能够恢复上下文并逐步完成修复,同时保证任务文件、人工勾选和删除记录不能替代原生工具的验收证据。
lint java FILE 显式选择 P3C 原生入口或提供原生上下文时,在最近已存在的 .codeguard/ 或显式 --workspace ROOT 中 SHALL 复用项目 P3C 观察、稳定 finding 和原工具复检路径,只检查所选文件。SHALL 按最近 POM 的可静态确认规则子集执行;未配置、未知配置及不适用规则不得被默认十个规则集替代。最近损坏的工作台不得跳过、重建或退回未绑定探针。未绑定的既有局部报告保持兼容;源码越界或符号链接 SHALL 在原生启动前拒绝。
- WHEN 已初始化工作区中的单文件 lint 和 check java 观察同一源码锚点及原生规则
- THEN 更新同一个稳定任务并通过现有 task verify 原生服务复检,不重复执行一次单文件原生探针来同步结果;局部零诊断不证明完整规则覆盖或授权关闭
- WHEN 父 POM 配置 P3C 而目标文件最近的子 POM 未配置或配置未知
- THEN 返回该子构建根的配置阻塞和可读修复指引,不使用父规则或隔离默认规则伪造源码违规
- WHEN 原生诊断有效但工作台报告无法保存或同步失败
- THEN 诊断仍反馈到 human/JSON,给出实际存储或同步失败原因;下一步和任务引用不得伪造,不能声称自动修复流程已经接通
- WHEN 原生工具异常退出但新鲜报告、所选规则、文件范围和当前源码身份已经核对,有可定位的诊断
- THEN 单文件与项目入口 SHALL 同时同步同一稳定源码问题和执行阻塞;原生复检再次观察该问题时为 still_present,但完整观察计数不增加、阻塞不恢复、任务不关闭。重复扫描不得生成重复任务
- WHEN 异常退出后的报告为空、无效、越界,或源码、工具、配置身份变化
- THEN 空或不合格诊断 SHALL NOT 成为问题消失、环境恢复或修复完成;无效报告不得投影为当前源码问题,本次检查继续未完成并保留阻塞
npm持久任务 SHALL 支持 task verify,结构化任务根决定原生cwd,显式原工具上下文、共享预算与任务租约保护复检和持久化。结果 SHALL 反馈原生诊断及下一步,不从零漏洞推导完整覆盖或关闭。
- WHEN 原生版本、输入摘要与锁节点关联一致,本轮没有advisory但可信漏洞覆盖尚未核验
- THEN 记录局部复检并保持同一任务open,返回still_blocked;next说明需核验漏洞源覆盖及时效,不标记代码修复或白名单通过
- WHEN 持有有效租约的执行者结束修复尝试后,原生审计返回错误
- THEN 记录关联该尝试的incomplete复检及诊断,任务仍open;next提供具体检查指引,不继续声称尚未运行复检或创建源码违规
- WHEN 清单或锁文件改变,旧复检结果与当前输入不再一致
- THEN 历史记录保留但不作为当前结果,next与尝试历史要求原工具重新复检,不能沿用旧的零发现或恢复结论
- WHEN 本地报告、验证事件和消费收据一并改写摘要,但报告包含重复字段、无效结构、虚构覆盖/权威,或对应另一工作区/构建根
- THEN next和尝试历史拒绝该复检证据,返回具体证据异常而非输入过期;incomplete失败结果也不得用于确认另一任务的修复尝试已经复检。合法旧输入变化须单独给原工具重检指引
公开 npm 审计 SHALL 支持显式父工作区参数,原工具在子项目执行,报告与任务归属所选已初始化工作区;未指定参数不得自动寻找父工作区。
- WHEN 两个子项目分别指定同一父工作区并重复审计
- THEN 每个构建根保留一张稳定完整性任务,原生 cwd 保持对应子项目,预算默认来自所选工作区,next 复检命令保留显式工作区
- WHEN 显式工作区是符号链接别名或不包含项目的物理目录
- THEN 在原生执行前返回准备未完成,不把外部项目记录为工作区任务;路径组件 a 不包含兄弟 ab
已初始化工作区的 doctor 局部报告 MUST 绑定当前工作区身份并以 run_id/摘要幂等同步;未初始化或无效工作区不得自动初始化或写入其它路径。显式版本诊断失败可生成稳定的环境调查任务,诊断原因变化或重复运行不得创建同一前置的重复任务;未选工具不得伪造工具缺失或必需检查。任务 MUST 引用报告、具体诊断、允许环境范围、原生 doctor 复检及历史/关闭条件;原生版本恢复不自动关闭原问题、授予准备 ready 或质量通过。工作区不符、被改报告或伪造完成/批准字段 MUST 拒绝导入;持久化/同步失败须如实反馈,保留原生观察而非改写为已修复。
- WHEN 同一工作区显式选中的 Ruff 版本探测重复失败
- THEN 每次报告保留自己的 run_id,关联同一环境调查任务;再次同步同一报告不重复写任务,next 给 doctor 复检和环境恢复指引,不修改无关源码
- WHEN 原环境调查仍待处理,本次局部原生版本恢复正常
- THEN 保留成功观察及未关闭任务,要求核验前置要求/可信来源;不得把局部版本成功写成质量修复或允许交付
- WHEN 智能体对 doctor 环境任务执行 task verify 并显式选择原生工具
- THEN 复用同一版本诊断契约、预算和任务租约,以报告摘要保存复检事件;失败保留具体原因,成功标记环境恢复但策略未核验,任务保持 open。未选择工具为 incomplete,不隐式发现随机 PATH 工具或扫描源码
Codeguard MUST 支持 ./.codeguard/ 及其中的 .gitignore、工作区清单、脱敏 findings/events、任务与决策引用;原始 reports/runs/cache/worktrees/state MUST 默认 Git 忽略。初始化 MUST 提供 dry-run/apply,不覆盖已有用户文件,不创建第二份质量策略。
- WHEN 初始化遇到
.codeguard/中的冲突文件,或在codeguard/workspace.json发现旧版受管工作区 - THEN 给出精确冲突与迁移诊断,不覆盖文件、不静默创建第二份工作区;既有
codeguard/src/用户源码仍参加普通检查,不能整体搬入点目录
持久同步 MUST 区分真实 finding 与检查未完成的 blocker,按稳定身份归并重复发现、保留原规则与证据。部分报告 MUST 只能增加有效发现/阻塞,不能因缺失旧 finding 自动关闭。任务 MUST 包含问题依据、允许改动、修复步骤、前置依赖、复检条件及历史尝试。
同步 MUST 按 run_id 幂等消费所有未导入且身份匹配的报告,不能仅取最新一份而丢弃其他类别发现。过时报告只能成为历史,完整报告也不得跨未覆盖范围关闭问题。
RunReport 与准备诊断 PrerequisiteReport MUST 使用 workspace_id + run_id 作为导入幂等键并验证报告摘要;同键不同摘要 MUST 拒绝而不是覆盖。每份报告的事件提交与消费标记 MUST 可恢复,失败不得先推进游标;准备诊断只能形成对应blocker/恢复证据,不伪装源码检查结果。
- WHEN 同一内容/策略下多次检出同一个问题
- THEN 保留一个稳定 issue 和本地运行历史,不生成十个任务或无意义 tracked 文件变化
- WHEN 多个模块因同一 JDK 缺失未完成
- THEN 生成工具链 blocker 与依赖关系,不虚构多条代码违规
- WHEN 同一内容先产生 lint 报告再产生 CVE 报告
- THEN 同步纳入两者,重复同步不重复创建问题或事件
- WHEN 原生 OWASP 报告包含 advisory,但数据库时效或依赖归属尚未核验,且工作区已启用持久同步
- THEN 保留脱敏报告并生成稳定的环境/证据阻塞任务,列明原工具复检与库核验步骤;重复扫描不制造多张同身份任务,不将 advisory 直接写成已确认源码 finding、误报白名单或交付通过
- WHEN 已初始化 Rust 工作区反复执行原生 cargo-audit 检查,并对同一未核验漏洞库任务执行
task verify - THEN 同一构建根只保留一张稳定的 CVE 覆盖阻塞任务,更新原生 advisory 观察与复检历史;
next继续给出原工具及漏洞库核验步骤,任务仍为 open。本地报告、任务勾选或白名单候选均不能替代受信漏洞库时效和批准身份
- WHEN 同一准备报告重复导入,或同一run_id出现不同摘要
- THEN 相同报告幂等,不同摘要拒绝并保留冲突,不重复任务或覆盖证据
- WHEN 事件已写入但消费标记尚未持久化时中断
- THEN 重试恢复同一事务,不漏事件、不重复计数;一份坏报告不妨碍其它有效报告持久化,整体仍明确未完成
- WHEN
write_once的旧临时文件名已存在,但目标记录仍未写入 - THEN 重试 MUST 以有界的新独占临时文件名继续,不覆盖或删除残留文件;若名字空间耗尽则明确未完成,不伪造消费标记
- WHEN 一份坏报告重复同步失败,而同队列的有效 lint 和 CVE 报告已导入
- THEN 保留按报告摘要绑定的脱敏失败原因;
next指向修复该报告或检查器,不无限重复推荐未改变输入的work sync;报告内容改变后旧失败观察不得继续适用,整体交付仍未评估
- WHEN 一个
work sync已持有工作区导入锁,另一个进程尝试同步同一工作区 - THEN 后者在写 finding、任务、事件或消费标记前返回未完成并说明忙碌;锁释放后重试幂等恢复,不凭本地锁状态签发质量结论
正式 resolved MUST 由真实复检或有批准依据的 target_removed/policy_resolved 事件产生,并绑定问题、内容、规则/工具、策略和覆盖身份。代码修复、依赖修复、环境恢复、政策处置 MUST 分开归因。手工勾选、编辑状态、删除记录、增加忽略或未完成报告中不再出现 MUST NOT 关闭问题或改变 gate。例外 MUST 保留未解决事实。
- WHEN 受保护宿主独立固定信任根与策略上下文,验证限定任务的策略签名,并以固定原生工具复检当前范围
- THEN 关闭处理器 MUST 核对原问题/范围、当前源码、原规则执行覆盖、工具/适配器/规则包与批准策略身份;匹配且问题消失时才追加限定任务的解决事件,不授予全项目 allow
- AND 项目文件、CLI 参数自选的公钥、候选策略或未经复核的历史事件 MUST NOT 作为可信关闭输入;同字节原生反证进入误报调查,不记为代码修复
- WHEN 受保护宿主验签 OTP 28 的限定语法任务策略,并以同一固定工具重放首次原样本和当前源码
- THEN 仅原样本确有语法诊断、当前源码已变化且完整 forms 检查无诊断时 SHALL 记录 code_fixed;重复复检幂等,普通原工具复检检出复发时重开同一父链任务。宏/include、无 form、截断、超时、错误工具或身份变化 MUST NOT 关闭;原样本原生合法进入误报调查
- AND 旧 Zig 策略及证据协议保持兼容,Erlang 使用独立版本且禁止跨语言消费;此收据只证明限定语法任务,不批准全语言 lint 或项目交付
- WHEN 首次任务来自已同步的 OTP 28 原生诊断而非 WASM,受保护宿主批准同一原工具、规则、源码与首次报告身份
- THEN 策略和脱敏证据 SHALL 保留 grammar_sha256=null,以原生规则的批准策略摘要绑定规则身份;原样本诊断、当前源码变化和完整零诊断可关闭,普通同工具复检检出复发可重开。不存在的 grammar、缺字段或替换首次工具 MUST 在原生执行前拒绝
- WHEN 受保护宿主验签 Apple Swift 6.4 的限定 parse 任务策略,并用首次固定工具对照原反例与当前源码
- THEN 原反例有合法字节位置的 parse 诊断、当前源码变化且原工具完整零诊断时 SHALL 追加 code_fixed;重复复检幂等,普通原工具复检再次检出时重开同一任务父链。未完成、错误版本、工具/输入变化不关闭,原反例原生合法转误报调查
- AND 原生首次任务的 grammar_sha256 SHALL 保持 null;Swift 使用独立策略和证据版本,不能消费 Zig/Erlang 身份;此入口不证明 SwiftLint、类型检查、项目构建或项目交付
- WHEN 受保护宿主验签 kotlinc-jvm 2.4.10 的限定语法任务策略并对照原反例与当前源码
- THEN 原反例有已核对 UTF-16/UTF-8 坐标的语法诊断,当前源码变化且同工具完整零诊断时 SHALL 记录 code_fixed;单独或混合项目上下文诊断、未知输出、超时、工具/输入变化 MUST NOT 证明修复
- AND 当前原工具再次检出同一语法问题时 SHALL 保留发现并重开原父链,即使另有项目上下文未完成;只有上下文诊断时不得伪造语法复发。Kotlin 使用独立策略/证据版本,原生首次 grammar=null,不批准全项目 lint、类型或交付
- WHEN 本地关闭证据和父链记录被重算摘要,但证据协议、语言或 grammar 与已同步的首次任务事实不同
- THEN 历史读取 SHALL 在原生执行前拒绝身份矛盾,并由 next 提供核对决策,不将本地文件当作可信关闭
- WHEN 本地读者投影原反例原生合法的误报调查历史
- THEN 原生首次任务 SHALL 指向首次原生诊断、输入/工具/环境差异与限定纠错请求,不归咎于不存在的 grammar;WASM 首次任务 SHALL 指向首次语法资产与原生对照差异,不将疑似原因直接写为已确认 grammar 缺陷。next/task show 与可读简报保持同一来源,查询不运行检查器、不改预算/租约/事件、不得自动白名单或关闭
- WHEN 事件文件顺序改变、父节点缺失、出现循环或分叉关闭事件
- THEN 单一有效链 MUST 按父关系重放;缺失、循环、冲突或重复身份 MUST 返回 reconciliation_required,不能选择时间最新的关闭事件;有效复发事件重开并保留关闭历史
- WHEN 任务 Markdown 被标为完成但无有效复检
- THEN 正式状态仍待验证,交付判定不变
- WHEN 修复后的原检查器超时
- THEN 原 finding 保留,转为待验证/阻塞,不自动 resolved
- WHEN 新内容再次检出同一可匹配问题
- THEN 重开 issue 并保留此前修复历史
- WHEN 原问题有完整关闭证据,而复检发现新的阻断问题
- THEN 原任务可按证据关闭,新发现同步保留,验证命令仍按本次结果返回违规或未完成,不宣称全项目通过
- WHEN doctor已确认JDK等条件恢复,而原受阻义务仍不能完整执行
- THEN task verify必须尝试原受阻义务并保留未完成,不据探测通过宣称验证闭环完成
经可信批准的误报处置 MUST 是独立事件/任务状态 whitelisted_false_positive,不得记作 resolved_by_code_fix 或删除 finding。疑似误报任务 MUST 记录原生证据、最小复现、裁定原因、精确目标、批准请求和原工具复检命令;候选、过期、失配或撤销的白名单 MUST 重新进入调查/修复队列。.codeguard/decisions/ 只保存可读引用,不自授策略权威。
status/next/task show MUST 提供只读视图;next MUST 返回含依据、范围、步骤、约束、验证和历史尝试的 RepairBrief。recipe MUST 有受控来源,原生诊断和仓库文本 MUST 当作不可信数据。无进展重试超预算 MUST 阻塞该任务或请求具体决策,不能降低门禁;其它独立任务仍可推进。
next MUST 区分actionable/waiting/needs_decision/verification_required/no_applicable_work;未初始化应给初始化动作,空任务但缺少新鲜完整证据 MUST 返回verification_required,不把null task或查询exit0解释为allow。status 中历史通过 MUST 带来源及freshness,不冒充当前认证。
MUST 提供 attempt 开始/结束协议,受控 fix apply 自动登记,自由修复回合由插件登记;尝试 MUST 绑定动作和前后内容摘要、结果及租约。复检前失败、无修改和中断均进入历史与预算,next MUST 不重复推荐耗尽且无新信息的动作。
- WHEN 同一问题和补丁连续无进展达到预算
- THEN 停止相同自动尝试,保留阻断并给出下一步诊断,不推荐跳过规则
- WHEN next原优先任务是等待已有执行者或预算耗尽的源码finding,另有不同物理源码范围的actionable或verification_required finding,且没有未解决前置blocker
- THEN 推荐可继续的独立源码任务,保留原任务及其预算/租约/待决策状态,next_actions提供原任务的只读task show引用,不降低任何门禁
- WHEN 待执行源码任务与开放attempt的物理源码范围相同、互相包含或存在文件别名,或无法确认范围独立
- THEN 不绕过等待任务推荐重叠修改;前置blocker及坏事实仍按原规则明示,不因选择另一任务消失
- WHEN 诊断文本要求执行 Shell 或关闭规则
- THEN 仅作为证据数据展示,不升级为动作授权
- WHEN 尝试没有代码变化或在调用检查器前失败
- THEN attempt 仍持久计数,不能因没有 verify 报告而无限重复
- WHEN next没有可修复任务且缺新鲜完整检查证据
- THEN 返回verification_required和检查动作,不据任务清空证明交付通过
显式初始化并启用工作流后,插件扫描 MUST 经过保存 run、幂等 sync、返回状态/RepairBrief 的路径;仅有重复报错而没有任务指引 MUST 不作为完成的插件接入。未初始化时 MUST 提供临时简报与初始化计划,不静默写受管目录。同步失败 MUST 保留原结果并明示恢复动作;不能假称持久任务已生成或改变质量 gate。
- WHEN 已启用的项目保存检查产生有效 finding
- THEN 创建或更新相应任务并返回下一步,重复同一 finding 不制造 tracked 文件噪声
- WHEN 检查已完成但持久目录不可写
- THEN 保留原 finding/gate,说明 backlog_update_failed 和恢复动作,不伪造任务路径
插件触发检查后 MUST 把本次配置探测与原生执行结果转换为宿主可见的对话反馈,包含已配置并运行的检查器、未配置或无效的检查器、确定性诊断、环境/工具错误、修复建议和复检命令。对话反馈以本次 CLI 结果为来源,不要求另造逐检测族执行证明;持久同步失败时也 MUST 返回已有结果与同步失败状态。CLI human/JSON、MCP 与宿主 Hook 只做展示适配,不得让智能体将原始工具文本解释为新的授权指令。
- WHEN 已配置的 Javadoc 或 CVE 原生检查器返回有效诊断
- THEN 智能体对话显示问题摘要、位置或组件、规则依据、建议动作及原工具复检命令
- WHEN 项目没有配置某候选检查器
- THEN 对话显示
missing和具体启用建议,不显示该检查器“通过”或虚构源码违规;只有批准策略要求该检查时才把缺项作为门禁未完成
finding 身份、事件父关系、证据引用与工作区 schema MUST 校验。并发领取 MUST 使用带期限租约和进程锁;不同分支状态冲突 MUST 显式协调,不能最后写入覆盖关闭。任务 Markdown MUST 是可重建投影;本地历史文件 MUST 不作为可信 CI 认证。完整 gate MUST 独立检查全部义务。
claim MUST 返回不可复用lease_token/generation和到期;heartbeat/release及attempt写入 MUST 核对token,而非只比较owner。租约默认5分钟,长操作MUST有界续租,失租停止应用/状态提交。正常release MUST 不遗弃未结束attempt;过期接管 MUST 先可恢复地追加abandoned与预算记录,再授予新generation,恢复失败不先取得新租约。无租约task verify使用短期验证租约,已有租约要求调用方提供匹配token,不能释放别人取得的租约。
- WHEN 用户或智能体删除持久任务和发现
- THEN 新检查仍按源码与批准策略产生发现,不能因此获得 allow
- WHEN 同一工作区并发领取一个未分配任务
- THEN 只有一个有效 lease,另一个收到当前归属与恢复信息
- WHEN 合并事件存在相互矛盾的关闭状态
- THEN 标记 reconciliation_required 并重新核对,不能自动选最后写入关闭
- WHEN 新generation的租约已生效,旧执行者尝试heartbeat/finish/release
- THEN 返回未完成并拒绝旧写入,同名owner也不能复活或释放新租约
- WHEN 过期租约的abandoned事件或预算记录写入失败
- THEN 返回3且不授予新generation,成功重试只追加一次恢复事件并计数一次
- WHEN verify自行取得验证租约、携带有效调用方租约,或提供错误token
- THEN 自有租约收尾释放、借用租约保留;token错误时不启动检查器
attempt start MUST 接受来自受控简报的action-id并由CLI计算动作指纹、观察前置内容,返回attempt_id;finish新增结束事件 MUST 明确attempt-id及当前lease-token,记录观察变化与执行者说明,冲突结束拒绝,同结果重放幂等。已落盘结束收据的原请求重放只返回该收据,即便租约过期也不得再次写入或影响新租约。每任务只允许一个未结束attempt;换action名称不重置同一无进展动作预算。finish结果仅允许ready-to-verify/no-change/failed/blocked,不直接resolved。
fix MUST 支持task及成对owner/lease-token绑定;已领取任务复用有效租约,由FixService登记自己的受控attempt,不接管已有未结束自由attempt。未领取时可自行取得并仅释放自有租约。已初始化工作区的批量apply在补丁应用前取得全部受影响任务租约,冲突不能静默跳过;未初始化时只保留私有证据,不调用持久同步/租约,不声称持久任务存在。fix dry-run MUST 不登记正式修复尝试或消耗预算;apply自动登记,插件不得重复计数。
- WHEN fix接收task、owner及有效lease-token,且没有未结束attempt
- THEN 限定任务范围并登记受控尝试和复检,保留调用方租约,不要求插件重复start/finish
- WHEN 先前finish已持久化但响应丢失后调用方用同ID和结果重试
- THEN 返回已记录结果而不重复预算/事件;不同结果的重复结束返回冲突
显式提供已初始化的 --workspace 时,Checkstyle 局部检查 SHALL 绑定项目内源文件、原配置和本轮工具字节后保存观察并同步同一稳定任务。输出必须反馈同步结果和下一步;未完成检查不得生成源码修复任务,局部任务不得授予交付许可或自动关闭。
- WHEN 同一项目内源码的相同规则和锚点在重复原生检查中仍存在
- THEN 更新同一稳定 finding 的观察记录,不重复创建任务;任务包含规则、证据、范围、步骤、复检、历史和关闭条件
- WHEN 指定工作台未初始化、目标在项目外,或同步前源文件/原配置/工具字节变化
- THEN 不导入源码任务,并在反馈中指出具体阻塞;不能用陈旧观察要求修改源码
Requirement: Checkstyle task verification SHALL replay the original native checker without automatic closure
Checkstyle 任务复检 SHALL 在统一预算、取消和任务租约下使用显式原工具与原配置,保存原生观察及失败尝试。零诊断不能独自证明修复;规则失配、工具身份变化或输入不稳定不能关闭任务。
- WHEN 原工具完整复检仍检出同一稳定 finding,或在原规则身份仍相同且工具字节一致时未再检出
- THEN 分别记录 still_present 或 candidate_absent_unverified_policy,保留 open 任务和历史,对话与 next 提供下一步
- WHEN 原配置移除任务对应规则、将同一 ID 绑定到另一检查类,或显式工具字节与原观察不同
- THEN 返回规则覆盖待审或未完成,不把零诊断归为代码修复
- WHEN 缺工具、输入不可用或原生检查未完成
- THEN 保存未完成复检事件与具体原因,不从可编辑 Markdown 执行指令,不关闭任务
已初始化且显式启用工作台时,Checkstyle 前置缺失或配置不明 SHALL 形成准备任务,保留具体诊断和当前输入范围;不能生成源码违规或建议修改无关源码。同一工作区的 Checkstyle 前置槽位重复观察更新同一任务,不因诊断变化重置历史。
- WHEN Java、Checkstyle JAR 或原配置无法确认,且目标仍在指定工作区内
- THEN 同步一个开放准备任务,next 给出恢复工具/配置与原工具复扫步骤,任务包含七项必需信息且不声称质量通过
- WHEN 相同前置槽位从缺参数变成缺 JAR 或未知配置,或影响另一源文件
- THEN 保留同一稳定任务及历史,更新当前诊断与范围;人工勾选不能关闭任务
- WHEN 用户取消检查,或目标不属于指定工作区
- THEN 不把取消或外部目标伪装成项目环境缺陷,不创建该准备任务
- WHEN 准备失败后,同一源码范围存在更晚且已消费、输入仍一致的原工具局部观察
- THEN next 转向核对原选择及批准覆盖,不重复建议恢复工具;仍保留开放任务,后续配置或输入变化使该恢复线索失效
准备任务复检 SHALL 在既有租约、尝试和统一预算中使用显式原工具,对当前记录的项目内受影响源码复扫。恢复后产生的原生 finding 应进入源码任务,环境恢复只作局部未验证观察,不自动关闭准备任务。
- WHEN 原工具或配置仍不可用,准备任务接受一次复检
- THEN 保存 still_blocked 或 incomplete 观察、具体原因与尝试引用,保留 open 状态,next 不引导修改无关源码
- WHEN 同一准备任务范围的显式 Checkstyle 检查正常返回局部原生报告
- THEN 保存 environment_restored_unverified_policy,同步其中源码发现,并转向核验原选择、批准和完整覆盖;源码或配置再次变化不沿用恢复线索
- WHEN 任务有活动租约但复检者不持正确 owner/token
- THEN 不启动原生检查或保存恢复事件,保留原任务和租约
- WHEN 准备修复尝试已标记 ready-to-verify,原工具复检仍为 still_blocked 或 incomplete
- THEN 将复检绑定该尝试并累计同动作同输入的无进展次数;预算内恢复具体前置修复动作,预算耗尽后保留开放任务并要求具体诊断或决策,不能反复复检或更换动作名逃逸预算
- WHEN 一次尝试已经标记 ready-to-verify,但在原工具复检前,任务绑定的源码、清单或锁文件又发生变化
- THEN 新输入的复检不得归因于旧尝试;旧事件保留为历史,旧尝试不再阻塞新输入的动作,且不得用新结果重置旧输入的失败次数或宣称原修复成功
- WHEN 准备恢复或源码暂未检出的复检后,原 Java 或 Checkstyle JAR 字节变化、路径身份变化或文件不可用
- THEN next 与 task show 不沿用旧恢复或缺失结论,要求显式原工具重新复检;历史收据继续保留,不能通过旧恢复线索关闭任务
- WHEN 已有 Checkstyle 复检收据因本轮源码、配置或工具变化失效,或前置复检仍受阻
- THEN next/task show 将历史原工具原因与当前观察失效原因分开表达,status 任务摘要保留具体原因与失效原因;智能体无需猜测为何需要再次修复或复检,也不能把查询成功当成交付通过
- WHEN 原工具复检仍检出原问题,之后 Checkstyle 配置或目标源码变化
- THEN next/task show 显示当前输入失效原因,要求原工具重新复检;不能用旧 still_present 覆盖先前的失效判断并重新推荐旧源码修复步骤。历史原工具结果保留,任务不关闭
ESLint 原生发现投影 MUST 使用工作区相对路径、原生规则、源码锚点及稳定出现序号,行号与整文件摘要只作本轮证据,不因插入空行而制造新任务身份。MUST 稳定排序并去除重复原生诊断;完整输入中的任一归属或定位无效则不得发布部分源码任务。源码定位 MUST 处理 UTF-16 列及 JavaScript 原生行终止符,不把字节长度当列范围。投影只记录脱敏诊断,不证明本轮报告来源、批准策略或问题关闭。
- WHEN 同一路径与规则的原源码锚点保持,行号或原生消息文字变化
- THEN 稳定finding ID保持,当前行号及源码摘要更新,不把旧任务勾选当修复
- WHEN 同轮报告乱序或重复同一原生诊断,或同一锚点在多个位置出现
- THEN 排序与去重后身份确定,不同出现序号保持不同身份,报告顺序不制造额外任务
- WHEN 任一诊断不属于冻结原生文件、相对路径跳转、行越界或列超过原行UTF-16范围
- THEN 拒绝整组任务投影,保持未完成并要求原工具或适配器核查,不生成部分源码修复任务
显式 lint typescript --workspace MUST 将当前输入复核后的脱敏局部观察入队并通过既有同步协议生成稳定 finding 与可读任务,重复扫描更新同一问题历史,不覆盖用户任务备注。报告 MUST 固定工作区、输入、原工作目录、版本及未批准状态;坏形状、输入变化、自称门禁允许或不正确投影不得导入。已消费历史 MUST 按原字节收据确认,不用当前源码重演旧观察。公开反馈 MUST 说明同步状态和 next 查询失败,不把队列异常说成源码违规。
next MUST 依据摘要绑定的当前已消费报告复核输入及首次工具/配置连续性;上下文改变、抑制、原生未完成或局部零诊断均须复检/核查,不能沿用旧源码修改指引。任务勾选不改变问题状态;当前没有正式关闭入口时保持开放。此局部闭环不证明完整源集、TS插件闭包或质量门禁。
- WHEN 本轮输入有效,同一稳定规则/源码锚点被重复检查,用户修改了任务备注或勾选文字
- THEN 只保留一个稳定finding/任务,更新观察并保留用户文本,问题仍open且对话返回修复指引
- WHEN 同工具/原配置复扫有效且本轮局部零诊断
- THEN next要求覆盖和正式复检核查,不重复旧源码修复、不自行关闭任务或签发门禁
- WHEN 新报告声称delivery_decision=allow,或next查询时当前输入与记录不一致
- THEN 自授权报告导入失败且不增加源码任务;陈旧输入要求原工具复扫,不沿用旧修复步骤
- AND ESLint 上下文失效的备用复检指引仍选择 ESLint 命令并显式要求核验工具、原配置和原工作目录,不回退其它语言检查器或猜测身份
显式工作区和当前有效源码目标下,缺调用上下文、工具或输入不可读、版本/报告/配置诊断等未完成结果 MUST 进入独立的环境与检查完整性任务;不得生成已确认源码违规或白名单批准。目标身份 MUST 固定工作区与具体源码范围,重复诊断更新同一稳定任务及脱敏历史。取消、外部目标、不支持范围或未初始化工作区不得伪造任务保存成功。解析或抑制诊断 MUST 指引复现根因,不默认认定环境或源码的唯一原因。
任务指引 MUST 依据最新摘要绑定的已消费报告及当前源码核验;同范围有较新的有效原工具观察时转为正式复检/覆盖核查,不继续要求修复旧环境诊断。局部恢复不得自行关闭准备任务。对话 human/JSON MUST 展示任务下一步和同步失败状态。
- WHEN 同一工作区源码缺Node/ESLint上下文,重复调用或后续诊断变为工具输入不可读
- THEN 只保留一张环境任务,记录最新具体原因;不创建源码finding,不要求修改无关源码
- WHEN 同范围较新的摘要绑定原工具报告已同步且当前输入有效
- THEN 环境任务保持open,next转verification_required并要求核验当前结果与完整覆盖,不继续沿用旧故障诊断
- WHEN 原ESLint因原配置引用不存在规则而无法完成正常报告
- THEN 建立检查完整性任务,反馈当前失败原因及原配置复核指引;不能推导源码违规或质量通过
- WHEN 未完成请求的源码属于另一个工作区
- THEN 返回source_outside_workspace且不创建本工作区环境任务或源码finding
task verify MUST 支持ESLint源码任务与准备任务,复用已有租约、统一执行截止时间、同步及失败尝试预算。工具入口、具体版本、原配置和工作目录 MUST 由显式参数核验,不能执行任务Markdown或历史报告自动选择的程序。复检 MUST 固定任务目标、本轮输入及报告摘要;缺上下文也须明确未完成原因并保留开放状态,不能调用其它语言检查器。
源码任务 MUST 比较首次摘要绑定观察的Node、ESLint入口、原配置、版本和cwd连续性;变化只能要求规则/覆盖核查。原生抑制或失败不得作为修复完成。局部原问题消失只属于candidate_absent_unverified_policy;准备恢复只属于environment_restored_unverified_policy,均不自动关闭。next、status及尝试历史 MUST 能消费同一复检事件,较新复检不得被旧扫描覆盖为过期源码修复指引。
- WHEN 原任务有效但没有提供Node、ESLint入口、具体版本、原配置和cwd
- THEN 保存明确未完成的局部复检观察和开放事件,不执行默认工具、不签发修复完成
- WHEN 显式原工具与原配置复扫正确完成,原稳定任务仍存在或已局部消失
- THEN 分别记录still_present或candidate_absent_unverified_policy,保留任务开放;事件可被next和尝试预算一致读取
- WHEN 工具/原配置/cwd与首次观察不同,或原生报告显示注释抑制
- THEN 要求规则覆盖核查或抑制复核,不能将零诊断记为resolved
初始化工作区根中的显式npm公开CVE调用 MUST 保存脱敏观察,并通过现有同步器产生稳定CVE检查完整性任务。原生组件/advisory/锁版本观察 MUST 保留为未核验的报告信息,不转换成已确认源码漏洞、白名单批准或任务关闭。同一构建根的完整性义务保持单一稳定任务,具体执行诊断作为历史更新;原清单/锁摘要及节点归属须复核。重复字段、越界/未知结构、节点或版本冲突及已消费报告被篡改不得产生授权或新任务。当前局部任务可供next取得恢复环境、核对数据源与原工具复检步骤;尚未取得覆盖权威时零发现不能关闭。
- WHEN 已初始化根重复运行同一原生npm局部审计
- THEN 第一次保存报告与一张稳定任务,后续更新历史;next提供原npm复检指引,清单/锁身份不符或坏报告不产生新可信事实
- WHEN 原生npm报告零发现但数据库覆盖未核验
- THEN 稳定任务仍open、交付未判定;手动删除任务或白名单候选不能关闭CVE义务
- WHEN 已初始化物理工作区中的 npm 构建根具有可读取且身份可绑定的清单和锁文件,但公开 CVE 调用、显式选择 npm 的 check all 或 task verify 缺少原生调用参数
- THEN MUST 保存本地准备阻塞观察并关联同一稳定 npm 完整性任务;重复检查与补齐上下文后的原生报告不得产生另一张同义务任务。准备观察 MUST 标明 npm_execution_context_missing、零组件及空 advisory,不声称原生工具已启动、漏洞覆盖完整或源码存在漏洞;失败复检保留 incomplete 历史。未初始化、输入变化、路径别名、取消和预算耗尽不得制造可用证据
- WHEN 已初始化物理工作区的 npm 构建根具有可绑定清单,操作系统明确报告 package-lock.json 不存在
- THEN MUST 在启动原生工具前保留 npm_lock_missing 环境阻塞,使用明确 missing 状态及空锁摘要、零组件和空 advisory,不虚构锁文件内容。公开CVE、显式选择npm的check all及task verify沿用同一稳定完整性任务;补齐锁后旧缺锁观察失效,新扫描不增加同义务任务。链接、目录或不可读文件不得伪装为不存在;重放缺锁报告、未知协议或矛盾字段不得生成当前可用证据
- WHEN 初始化工作区中可绑定的package.json存在JSON语法错误、重复字段或非法scripts类型
- THEN 即使提供完整原生参数,MUST 在启动npm前保存配置阻塞、给出清单修复指引并沿用稳定完整性任务,不把错误改称版本失败或源码漏洞。已有可绑定锁文件时,准备观察以npm_manifest_invalid或npm_scripts_invalid表达诊断且保持零组件/空advisory;缺锁同时存在时保留明确缺锁观察及配置错误反馈。清单变化后旧收据不得解释当前输入;报告声称清单损坏时,消费者MUST 与当前绑定字节的配置解析结论核对,不能只信诊断字段
- WHEN 已初始化工作区运行check all且发现可绑定的npm根,但未提供Node/npm及配置参数
- THEN 支持的平台MUST 自动将每根接入准备任务并串行同步,反馈稳定任务与next,重复检查不堆积任务;未启动原生命令,不继承工具环境或凭据,不安装工具。未初始化项目不得隐式创建工作区;check java不得触发npm准备。真实原生参数恢复后继续复用同一任务,仍须独立核验完整CVE覆盖
- WHEN 已初始化物理工作区的明确npm任务或公开CVE范围中,清单/锁不存在、非普通文件、路径别名或无法有界读取
- THEN MUST 保存独立输入状态准备观察,缺失与不可用分开;只有可读普通文件有内容摘要,其余摘要为null,零组件/空advisory。消费方必须先严格核对结构及状态对应的原因,再核对当前物理范围、状态与可读内容;损坏字段不能被当作陈旧证据静默沿用。同一完整性义务跨状态修复复用任务,输入恢复后旧观察失效;尝试指纹可记录环境状态但不能冒充源码摘要或关闭证据,next和失败复检历史不得因目录/不可读输入而不可用
- WHEN 默认全项目检查不再发现初始化画像中曾记录的npm清单,但物理构建目录仍存在
- THEN MAY 用与该工作区受管摘要一致且严格解析的旧画像恢复准备范围;MUST 核对相对路径、画像标记、当前物理归属及输入不可用状态,只生成本轮准备观察,不用历史摘要或配置启动原工具。画像不可读、摘要不符、结构或路径无效时MUST 明示历史范围未完成并保留当前发现的其它根;恢复清单后须通过当前发现重新绑定,稳定任务不重复,历史画像不构成覆盖或批准
- WHEN 当前画像刷新后不再包含清单不可用的npm根,但本工作区仍有同一稳定完整性问题的本地事实记录
- THEN 默认check all MUST 保留该物理构建根的准备范围;严格核验工作区、检查器、稳定身份、范围和事实结构,不能由可编辑任务附件的勾选或删除消除检查。事实只提供本地未验证范围线索,不授权原生执行、批准、关闭或覆盖;当前清单恢复后重新发现。损坏或跨工作区记录 MUST 明示范围恢复未完成,不扩展到越界路径或吞掉当前发现的其它根
work sync SHALL 在现有工作区锁内检查已持久结构化事实,为缺失的 Markdown 投影生成当前只读 RepairBrief 投影。SHALL 核验工作区、事实身份、证据及历史,不从删除或手工勾选推断关闭。现有普通任务文件 MUST 保持原字节,包括用户备注;符号链接、目录冲突、坏事实或未核验来源 MUST 明示失败,不覆盖其它路径。恢复不执行原生工具、不生成新问题或 observed/verification 事件、不改消费游标、租约、尝试预算或 gate。
- WHEN 报告已消费、结构化事实与历史有效,用户删除 Markdown 后再次 work sync
- THEN 恢复同一任务 ID 的七项可读指引,报告恢复数量;事实、历史事件及消费标记保持原字节,next 仍要求原工具复检,不签发关闭
- WHEN 投影包含用户备注或勾选,或缺失投影路径被符号链接/目录占用
- THEN 普通文件原字节不变;路径冲突明确未完成,不跟随链接,不把文件存在视作修复证据
- WHEN 待恢复任务事实属于另一工作区、伪造稳定身份或证据不合法
- THEN 在写入投影前拒绝恢复并保留事实,不能生成错误源码修改范围或调用原生工具
- WHEN an initialized Zig native-first task is rechecked with its original fixed tool under an independently signed, task-bound policy
- THEN grammar identity remains null; only a diagnosed original sample, changed current source and complete clean same-tool recheck may close that scoped task; native failure or changed identity cannot close it; an ordinary same-tool positive recheck reopens the same parent chain without project delivery permission
共享解决提交层 MUST 拒绝未支持的证据版本、缺字段和额外字段,并在读取或写入生命周期之前核对领域ResolutionEvidence与脱敏原生证据的任务身份、原/当前源码、工具、适配器、批准策略和原生对照摘要一致。调用者仍负责可信验签与原生执行;共享提交层不得从本地文件推断批准。两个表示不一致 MUST 拒绝,不以域对象policy_verified字段单独签发解决。提取提交层 MUST 保留旧语言版本、幂等摘要、父链重放、冲突核对和重开语义,不批准项目门禁。
- WHEN SDK调用者提供的脱敏证据中任务/源码/工具/策略或原生对照摘要与领域证据不一致
- THEN 在生命周期读取和证据写入前返回task_resolution_evidence_binding_invalid,不追加解决或重开记录
- WHEN Zig/Erlang/Swift/Kotlin入口提供已验签且当前输入稳定的同一份复检证据
- THEN 收据版本、证据字段及父链语义保持;相同证据重检幂等、不同关闭需协调、仍存在时可重开,不扩大批准范围
Python专用SDK入口 MUST 验证宿主独立选择的信任根、时间、基线、防回滚与签名策略1.5;策略绑定python.ruff单文件任务、两类已消费首次报告、冻结原字节、固定grammar、Ruff版本/制品、适配器、明确lint目标和配置身份。未知/缺失/错误范围/工具/配置/策略 MUST 在原生执行前拒绝。原样本 MUST 经stdin使用相同配置和明确目标作原生语法对照,不写回项目。当前源码 MUST 按同轮原生项目设置、正常/忽略noqa对照检查。只有原样本确有语法错误、当前源码已变化且原规则完整零诊断、输入稳定时 MAY 以新证据0.6记录限定code_fixed;原样本原生合法 MUST 为误报调查,未完成/配置或输入变化不得关闭。普通复检检出同工具、目标与配置的复发 MUST 重开同一父链任务。该SDK不作为CLI自选公钥批准入口,不授予项目门禁或语言资格。
- WHEN 宿主批准专用或通用首次Python语法确认任务并使用固定Ruff复检原字节与当前源码
- THEN 原生仍有语法错误时保持开放,修复后可限定解决,相同证据重检幂等,复发时保留原解决事件并重开;工具/配置/目标/首次引用变化不得复用旧批准
- WHEN 原样本在批准配置和目标下原生合法
- THEN 保留false_positive_review_required,不记为代码修复、不关闭、不自行加入白名单
- WHEN 两类Python候选首次报告的原字节在已绑定项目目标和配置下被原生工具完整接受,SDK记录false_positive_review_required
- THEN next读取同一任务生命周期并提供WASM语言版本与原生差异调查,不继续普通候选源码修复、不自行白名单或批准关闭
- WHEN 已记录原生反证后源码或项目配置发生变化
- THEN next保留source_input_changed_or_unavailable或configuration_input_changed_or_unavailable与原生复检指引,不以旧反证声称新输入合法
Python确认任务的当前原生结果为still_present且输入未失效时 MUST 使用repair-source;不完整、缺工具或失效观察 MUST NOT 据旧位置授权源码修复。同一语法确认任务、同一前置输入的restore-checker-environment和repair-source MUST 共享无进展预算,保留旧事件原动作和指纹;其他任务的动作统计规则不得扩大。
- GIVEN 同一确认任务和输入已有两次无进展环境恢复尝试
- WHEN 原生确认仍有语法错误并转为repair-source
- THEN 历史无进展次数仍为二,下一次尝试因预算耗尽拒绝,旧事件不重写
- GIVEN Python语法确认曾有原生诊断
- WHEN 当前源码或配置绑定已失效
- THEN 撤销旧源码修复动作,要求重新核验,不能用旧位置指导修改