verify-AC — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited verify-AC (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Pipeline 的 QA agent。每次 full re-run AC steps,將 observed vs expected 當事實呈現, 不判斷 root cause。PASS 轉驗收單 Done;FAIL 進 human disposition gate。
verify-AC stateless + comment-driven。它不改 code、不建 branch、不判斷 FAIL 原因、不只跑 上次 FAIL 的 AC。Implementation drift route 到 bug-triage;spec issue route 到 refinement。
Handbook exemption:verify-AC 不做 code diagnosis,預設不強制讀 repo handbook。FAIL 後由 bug-triage 讀 handbook 定位原因。
寫 verification report、V.md lifecycle metadata 或 handoff artifact 前,必讀 `pipeline-handoff.md` § Artifact Schemas,再讀 `task-md-schema.md` 等對應 artifact-specific schema。atom ownership 邊界(V.md envelope vs refinement.json verification authority)以 pipeline-handoff-atom-matrix.md 為準;SKILL 主文不複製 完整 schema 表。
| Situation | Load |
|---|---|
| Any run | verify-ac-entry-flow.md, pipeline-handoff.md, workspace-config-reader.md, shared-defaults.md |
| Environment | verify-ac-environment-prep.md, epic-folder-structure.md |
| Step execution and evidence | verify-ac-execution-flow.md, evidence-upload-bundle.md when visual/manual files need upload, handoff-artifact.md when cross-check needed |
| JIRA report and transition | verify-ac-reporting-flow.md, workspace-language-policy.md, external-write-gate.md, epic-verification-structure.md |
| FAIL disposition | verify-ac-disposition-flow.md, starlight-authoring-contract.md, bug-triage-acfail-flow.md, refinement-return-inbox.md |
| Learning and lifecycle | verify-ac-learning-lifecycle-flow.md, post-task-reflection-checkpoint.md |
Epic mode 若委派 sub-agent 驗 AC,必須讀 sub-agent-roles.md 並注入 Completion Envelope;Codex runtime / model fallback contract 見該 reference § Runtime Adapter Contract / Fallback Behavior。
depends_on 排序。UNCERTAIN 並要求補 AC。refinement AC 使用 verification.method: challenger、docs-health 或 feedback-signals,分別 dispatch scripts/verify-ac-newbie-challenger.sh、 scripts/verify-ac-docs-health.sh、scripts/verify-ac-feedback-signals.sh。
PASS、FAIL、MANUAL_REQUIRED、UNCERTAIN。scripts/write-ac-verification.sh 寫回ac_verification / ac_verification_log[],並讓 helper 驗證 V schema;寫回失敗即停。
verify-AC 與 framework-release closeout 的 verification method/detail authoritative source 是 refinement.json,不是 task.md acceptance_criteria 文字段。對齊規則:
refinement.json acceptance_criteria[].verification.method ∈{unit_test, manual, playwright, lighthouse, curl, challenger, docs-health, feedback-signals},runner 依 method 各自 dispatch 對應 runner(unit_test 跑 verification.detail 命令、manual 走人工 checklist、playwright 走 playwright runner、其餘 method 走既有 reference 對應 dispatcher)。
acceptance_criteria 文字 derive verificationmethod;task.md acceptance text 僅作 advisory display,不影響 runner 行為。
acceptance_criteria 與 refinement.json drift 時,runner以 refinement.json 為準,advisory log task.md drift;下一輪 /breakdown 會 deterministic 重產 task.md 覆蓋 drift(DP-230 D28)。
/framework-release-closeout parent-closeout 直接讀 refinement.jsonacceptance / verification 結構,不讀 task.md acceptance_criteria 文字段; parent lifecycle 由 mark-spec-implemented.sh 透過 frontmatter status 推進, 不消費 task.md acceptance text。
scripts/selftests/verify-AC-deterministic-consumption-selftest.shenforce:selftest grep SKILL.md 與 scripts/framework-release-closeout.sh 標記, 並以 fixture drift case 驗 runner method resolution 使用 refinement.json。
POLARIS_VERIFY_AC_DETERMINISTIC_CONSUMPTION_MARKER: verify-AC 與 framework-release closeout 消費 refinement.json verification.method/detail,不讀 task.md acceptance text。
verify-AC 作為 consumer,預設 traverse canonical refinement.json acceptance_criteria verification method/detail schema(見上方 Deterministic Consumption),不改去解析 task.md acceptance text 或上游 LLM freeform prose 來決定 runner 行為。verify-AC 作為 producer,寫入 canonical verification artifact 與 proof-of-work marker 給 closeout 機械消費。LLM freeform 只在 standalone 情境合法—— 亦即該產出沒有下游 pipeline consumer 會機械消費它(例如對使用者呈現 observed vs expected 的解釋性 prose)。會被下一段 skill / closeout 機械消費的 handoff artifact 一律走 canonical schema。本契約只約束 handoff artifact 介面,不約束 verify-AC 內部如何判讀 observed 結果。完整契約見 .claude/skills/references/pipeline-handoff.md § Canonical Schema Traversal Contract。
skill says PASS 不等於 stage pass;只有 verification artifact / report current,且 shared verification contractresolve 為 PASS,才可做 downstream transition(例如 AC ticket Done)。
scripts/write-ac-verification.sh 原子覆寫摘要並 append history。
verification.visual_regression,必須用 scripts/run-visual-snapshot.sh;不可改走舊 visual-regression skill。ac_verification、spec_issue、drift_retry、drift_counter、audit_closure 與 dp198_handoff marker 的 owning writer。Marker schema、producer mapping 與 freshness rule 以 auto-pass-proof-of-work.md / scripts/lib/evidence-producers.json 為準;JIRA label/comment 只能作 mirror,不可作為唯一 deterministic marker。
verification/V*/** 或 tasks/V*/**,必須使用DP-110 layout:verify-report.md、assets/{raw,images,screenshots,videos,files}/、 links.json、publication-manifest.json。完成後呼叫 scripts/validate-verify-evidence-layout.sh {evidence_dir};FAIL 時不可宣告 PASS。
當 verify-AC 從 auto-pass orchestrator dispatch 而來時,envelope 必須帶上 worktree_resolution,路徑由 scripts/resolve-task-worktree.sh 解析(schema 與行為以 .claude/skills/auto-pass/SKILL.md § Dispatch Envelope Worktree Resolution 為 single source of truth)。
receiver-side 合約:
worktree_resolution.status=FOUND:verify-AC 必須在 worktree_resolution.path 內執行 verify command 與讀取 evidence layout,不得 fall back 到 main checkout。
worktree_resolution.status=NONE:不得自動建 worktree;回 orchestrator 由blocked_by_missing_worktree 處理,advisory 提示使用者重建。
worktree_resolution 欄位:fail-stop,stderrPOLARIS_DISPATCH_WORKTREE_RESOLUTION_MISSING。
worktree_resolution.path 與 resolver 輸出(同 source-id / work-item-id)drift 時 fail-stop,stderr POLARIS_DISPATCH_WORKTREE_AMBIGUOUS。
verify-AC stateless 入口(人工觸發 verify {TICKET}、未經 auto-pass)不強制 envelope; 此時 verify-AC 仍可呼叫 resolver 取得當前 worktree path 以對齊 evidence layout writer。
SKILL.md 是 documentation pointer,不是 executable writer。verify-AC 寫入 specs-bound verification/V*/**、tasks/V*/** 或 .polaris/evidence/ac-verification/ 等 verify-AC owning_skill paths 的 writer authority 來自 producer-env + scripts/lib/evidence-producers.json registry。
ac_verification verdict marker 都由 deterministic writerscripts/write-ac-verification.sh 產生,不應直接以 Claude tool 改寫;該流程不需要 agent 手動 export 環境變數。對 terminal verdict status(PASS / FAIL / MANUAL_REQUIRED / UNCERTAIN / BLOCKED_ENV)傳入 --source-id / --work-item-id / --head-sha,writer 在寫完 V*.md frontmatter 後會額外 emit .polaris/evidence/ac-verification/{work_item}-{head}.json proof marker,並透過 scripts/lib/main-checkout.sh resolve_main_checkout 錨定到 main checkout(即使在 worktree 內被 auto-pass 呼叫,marker 仍落 main checkout,與 auto-pass-runner probe 路徑 一致)。--status IN_PROGRESS 只更新 frontmatter、不 emit marker;marker emit 為純 Bash file I/O(不經 POLARIS_SKILL_WRITER env、與 no-direct-evidence-write hook 無關), 寫入失敗即 fail-stop exit 1。呼叫範例:
scripts/write-ac-verification.sh <V-task-md> \
--status PASS \
--last-run-at "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
--ac-total 6 --ac-pass 6 --ac-fail 0 --ac-manual-required 0 --ac-uncertain 0 \
--human-disposition passed \
--source-id DP-NNN --work-item-id DP-NNN-V1 --head-sha "$head_sha"Write / Edit / MultiEdit 寫 verify report 或evidence layout 內非 lifecycle metadata 的補充檔(例如 verify-report.md、 links.json、publication-manifest.json 之外的補充說明),先 export POLARIS_SKILL_WRITER=verify-AC 再呼叫 Write tool:
export POLARIS_SKILL_WRITER=verify-AC
# 然後使用 Write tool 寫入 docs-manager/src/content/docs/specs/**/verification/V*/** 或 tasks/V*/**POLARIS_SKILL_WRITER 只允許設成 verify-AC;no-direct-evidence-write hook 會交叉比對寫入路徑是否屬於 verify-AC owning_skill entry,不符即 deny。
cat > specs/.../verification/V1/verify-report.md <<'EOF')寫verification evidence;Bash heredoc 不走 hook,繞過 producer-env 認證、DP-110 layout validator 與 verification artifact freshness contract。
輸出 AC/Epic、overall status、step counts、evidence paths、JIRA transition status、created Bug keys or refinement route、pending manual items。
verify-AC session 開始時必須呼叫 skill-workflow-boundary baseline writer:
bash scripts/skill-workflow-boundary-gate.sh --skill verify-AC --start \
--source-container "$SOURCE_CONTAINER"verify-AC 寫完 verification report / V*.md / refinement-inbox 並準備收尾(或在 /auto-pass cross-skill transition 之前)必須跑:
bash scripts/skill-workflow-boundary-gate.sh --skill verify-AC --check \
--source-container "$SOURCE_CONTAINER"verify-AC owning scope 僅限本 source container 的 verification/V*/** / tasks/V*/** / refinement-inbox/**。任何 owning scope 之外的新增/修改(code、 generated target、refinement.md / refinement.json)會讓 gate exit 1 並輸出 POLARIS_SKILL_WORKFLOW_BOUNDARY_BLOCKED:verify-AC。
POLARIS_LANGUAGE_POLICY_BYPASS / POLARIS_SKILL_BOUNDARY_BYPASS 等 env 不能 silence 這個 gate(AC-NEG16)。
完成 write flow 後必須呼叫 scripts/check-feedback-signals.sh。
見 post-task-reflection-checkpoint.md;write 後必跑、不可跳過。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.