# 发布记录

本文档记录 `@vocmarket/tihao-sop` 的重要变更、验证情况和仍需注意的边界。命令名、字段名、包名保留英文，因为它们是实际运行契约。

## 1.0.7

Status: published to npm. `@vocmarket/tihao-sop@1.0.7` is `latest`, with registry verification and fresh `@latest` workspace install smoke passed.

Positioning:
- Aligns the database `skills` table source record and npm management docs with the two real install targets:
  - project/workspace skill install: `npx --yes @vocmarket/tihao-sop@latest workspace --smoke`
  - user/global Claude Code skill install: `npm install -g @vocmarket/tihao-sop && tihao-sourcing install --smoke`
- Keeps the installed Claude Code skill name as `tihao`.
- Keeps npm package name, CLI command, plugin name, and MCP server name compatible: `@vocmarket/tihao-sop`, `tihao-sourcing`, and `tihao-sourcing`.
- Keeps the legacy `.claude/skills/tihao-creator-sourcing` cleanup behavior from 1.0.6.

Validation:
- `node --check install.js` and `node --check mcp/src/server.js` passed.
- `npm run smoke:package`, `npm run skill:refs:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed.
- `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed.
- `npm publish --access public --registry https://registry.npmjs.org/` succeeded and returned `+ @vocmarket/tihao-sop@1.0.7`.
- `npm view @vocmarket/tihao-sop@1.0.7 version --registry https://registry.npmjs.org/` returned `1.0.7`.
- `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` returned `latest=1.0.7`.
- Fresh `npm exec --yes --package @vocmarket/tihao-sop@latest -- tihao-sourcing workspace --smoke` passed, wrote `.claude/skills/tihao/SKILL.md`, and removed legacy `.claude/skills/tihao-creator-sourcing`.

## 1.0.6

Status: published to npm. `@vocmarket/tihao-sop@1.0.6` published the installed Claude Code skill rename from `tihao-creator-sourcing` to `tihao`.

Positioning:
- Workspace and global installs now write `.claude/skills/tihao/SKILL.md`.
- The installer removes the legacy `.claude/skills/tihao-creator-sourcing` directory under the same target `.claude/skills` root to avoid duplicate skill entries.
- npm package name, CLI command, plugin name, and MCP server name stay compatible: `@vocmarket/tihao-sop`, `tihao-sourcing`, and `tihao-sourcing`.
- Added `docs/skill-database-record.json` as the database `skills` table source record for `skillName=tihao`.

Validation:
- `node --check install.js` passed.
- `npm run smoke:package`, `npm run skill:refs:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed.
- `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed.
- `npm publish --access public --registry https://registry.npmjs.org/` succeeded and returned `+ @vocmarket/tihao-sop@1.0.6`.
- `npm view @vocmarket/tihao-sop@1.0.6 version --registry https://registry.npmjs.org/` returned `1.0.6`.
- `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` returned `latest=1.0.6`.
- Fresh `npm exec --yes --package @vocmarket/tihao-sop@latest -- tihao-sourcing workspace --smoke` passed, wrote `.claude/skills/tihao/SKILL.md`, and removed legacy `.claude/skills/tihao-creator-sourcing`.

## 1.0.5

Status: published to npm. `@vocmarket/tihao-sop@1.0.5` is `latest`, with registry verification and fresh `npx @latest workspace --smoke` passed. This release absorbs the two new 提号经验 transcripts and extends the live brief-to-list workflow without changing the small-live default.

Positioning:
- 1.0.5 adds multi-input Brief parsing for product introductions, product context, customer chat records, and conversation snippets.
- Broad briefs such as 精致生活/时尚穿搭 now refine into executable subtypes from product/chat/reference context, including 港风、成熟风、通勤穿搭、女装/男装; 美妆护肤 is split into 护肤、妆教、测评、产品合集、日常妆容.
- Homepage evidence now tracks visual positives/risks plus 近30天无更新、百赞以下、重复评论/数据真实性 risks; these affect strong recommendation eligibility, risk notes, manual review fields, and CSV review labels.
- The experience transcript index now covers 13 rules across 4 transcripts while preserving the `not_business_proof` boundary.

Validation:
- Syntax passed: `node --check` for brief parser, experience rules, homepage evidence, ranker, MCP server, and experience transcript index.
- `npm run smoke:briefs`, `npm run hard-rules:smoke`, `npm run experience-transcript:index:smoke`, `npm run smoke:package`, `npm run mcp:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed.
- Local real transcript index passed with `transcriptCount=4`, `coveredRuleCount=13`, `canCloseProofGap=false`.
- `npm publish --access public --registry https://registry.npmjs.org/`, `npm view @vocmarket/tihao-sop@1.0.5 version`, `npm view @vocmarket/tihao-sop dist-tags.latest version`, and fresh `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` passed.

## 1.0.4

Status: published to npm. `@vocmarket/tihao-sop@1.0.4` is `latest`, with registry verification and fresh `npx @latest workspace --smoke` passed.

Positioning:
- 1.0.4 fixes natural-language Brief generalization beyond the original fixture-heavy skincare/mom-baby cases.
- The parser now handles healthy snack, home cleaning, B2B SaaS, and local food/catering briefs with better category, keyword, platform target, fan range, budget, city, style, and exclusion extraction.
- Fan range parsing no longer reads same-line budget ranges as fan ranges, e.g. `粉丝 5000-20万，预算 800-5000`.
- Live recall keywords are cleaned so platform words like `小红书/抖音` and dirty fragments like `个健身` do not become the first search keyword.

Validation:
- `node --check mcp/src/features/tihao-sourcing/brief-parser.js` passed.
- `npm run smoke:briefs`, `npm run smoke:package`, `npm run mcp:smoke`, `npm run package:contents:smoke`, and `npm run acceptance` passed.
- `npm publish --dry-run --access public --registry https://registry.npmjs.org/` passed.
- `npm publish --access public --registry https://registry.npmjs.org/`, registry verification, and fresh `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` passed.

## 1.0.3

Status: published to npm. `@vocmarket/tihao-sop@1.0.3` is `latest`, with registry verification and fresh `npx @latest workspace --smoke` passed.

Positioning:
- 1.0.3 fixes the brief-to-blogger-list default mode: normal user briefs and requests like "用 live 小规模检索出博主名单", "真实跑", "真实数据", "调用接口", or "小规模检索" resolve to live mode.
- First live runs stay intentionally small when limits are omitted: `keywordLimit=1` and `pagesPerKeyword=1`.
- Sample mode is now weaker by design and should be used only when the user explicitly asks for `sample`, demo/no-cost mode, no real data, or "先跑通 SOP".
- Missing live credentials, token, balance, or recharge state must return a friendly token/open/recharge message instead of silently falling back to sample data.

Validation:
- Syntax passed: `node --check mcp/src/features/tihao-sourcing/sourcing-workflow.js`, `node --check mcp/src/server.js`, `node --check scripts/smoke-package.js`.
- Business smoke passed: `npm run smoke:package`, `npm run mcp:smoke`, `npm run package:contents:smoke`, `npm run acceptance`.
- Release smoke passed: `npm publish --dry-run --access public --registry https://registry.npmjs.org/`, `npm publish --access public --registry https://registry.npmjs.org/`, `npm view @vocmarket/tihao-sop@1.0.3 version`, `npm view @vocmarket/tihao-sop dist-tags.latest version`, and fresh `npx --yes @vocmarket/tihao-sop@latest workspace --smoke`.

## 1.0.2

状态：已发布到 npm；`@vocmarket/tihao-sop@1.0.2` 已成为 `latest`，并通过 registry 查询和 fresh `npx` 工作区安装 smoke。

版本定位：

- 1.0.2 是 1.0.1 的收尾加固版：把 `real-gap-material-audit` 从独立审计推进到 `round:refresh` 主链路，并同步写入 latest form、handoff、evidence index 和 round deposition 守卫。
- 该版本证明“三个真实缺口在项目里都有材料且已接入审计链路”，不证明业务效果已经达标；仍不得宣称提号率提升、客户效果达标或人工补号量下降。
- 当前真实业务证明仍以审计输出为准：`gapCount=3`、`materialFoundCount=3`、`openGapCount=3`、`canCloseProofGap=false`。

主要变化：

- `npm run round:refresh -- --output-root outputs --strict` 现在包含 29 个步骤，并在 `local-seed-to-intake-worklist` 后执行 `real-gap-material-audit`。
- `latest-form:index` 和 `handoff:summary` 已传播 `realGapMaterialAudit`，接手方不用再单独猜三缺口材料审计产物位置。
- `evidence:index` 将 `real-gap-material-audit` 固定归类为 `not_business_proof`，防止把材料存在误升格为业务证明。
- `round-deposition` 新增三缺口材料审计守卫，校验 standalone、latest-form 和 handoff 三处都保留 `canCloseProofGap=false` 边界。

验证情况：

- `npm run real-gap:materials:smoke` 通过。
- `npm run evidence:index:smoke` 通过，当前 fixture `total=44`、`not_business_proof=19`、`real_evidence=6`。
- `npm run task:handoff-index:smoke` 通过。
- `npm run round:refresh:smoke` 通过，29 步全部 `pass`，`round-deposition.passCount=142`、`failCount=0`。
- `npm run round:refresh -- --output-root outputs --strict` 通过，真实输出已刷新。
- `npm run package:contents:smoke`、`npm run acceptance` 和 `npm publish --dry-run --access public --registry https://registry.npmjs.org/` 通过。
- `npm publish --access public --registry https://registry.npmjs.org/` 成功，npm 返回 `+ @vocmarket/tihao-sop@1.0.2`。
- `npm view @vocmarket/tihao-sop@1.0.2 version --registry https://registry.npmjs.org/` 返回 `1.0.2`。
- `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` 返回 `latest=1.0.2`。
- `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 在 fresh workspace 通过。

## 1.0.1

状态：已发布到 npm；`@vocmarket/tihao-sop@1.0.1` 已成为 `latest`，并通过 registry 查询和 fresh `npx` 工作区安装 smoke。

版本定位：

- 1.0.1 不是改业务结论，而是把“项目里确实有资料”做成可复跑审计：`real-gap:materials` 会同时读取 DHA PoC 原始资料、候选视频资源、提号经验逐字稿、`proof-gap:closure` 和 video A/B preflight。
- 该版本用于关闭“没找到资料/没接资料”的误会；不关闭业务证明缺口，不宣称提号率提升、客户效果达标或人工补号量下降。
- 当前真实业务证明仍以审计输出为准：`real-gap-material-audit.openGapCount=3`、`materialFoundCount=3`、`canCloseProofGap=false`。

主要变化：

- 新增 `npm run real-gap:materials`，输出 `outputs/real-gap-material-audit-latest/real-gap-material-audit-summary.json`、Markdown 和 CSV。
- 新增 `real-gap:materials:smoke` 并纳入 `npm run acceptance`，确保三个缺口都能找到项目材料，但 `canCloseNow=false` 不被误改。
- 审计明确三个缺口的当前证据：
  - `historical-dataset`：DHA Brief/PoC/TikHub 工作簿已找到，`historyDraftRows=12`，逐字稿记录了 DHA 已提报但客户未反馈/未选新号；仍缺至少 5 个真实历史 Brief、客户决策、拒绝原因和历史人工补号量。
  - `video-ab-live-proof`：`videoResourceReady=true`、`realCandidateRows=1`、`realReferenceRows=1`、候选视频 note 线索 15 条；仍缺 `acceptance:video-ab` 的 live `proofContext` 和 runtime/company/provider。
  - `manual-review-and-customer-effect`：`manualReviewDraftRows=12`，逐字稿覆盖客户选中率目标和人工复核逻辑；仍缺真实人工复核标签、客户选中/拒绝、反馈原因、本轮人工补号量，并且必须绑定通过的 history audit。
- 审计报告把候选名单、逐字稿经验、视频资源 readiness 和旧 failure artifacts 的边界写清楚：它们是补证入口和失败证据，不是业务效果证明。

验证情况：

- `npm run real-gap:materials:smoke` 通过。
- `npm run real-gap:materials` 通过，当前输出 `gapCount=3`、`materialFoundCount=3`、`openGapCount=3`、`canCloseProofGap=false`。
- `npm run acceptance` 通过，包内容 smoke 显示 `version=1.0.1`、`entryCount=178`、`package size=607.4 kB`。
- `npm publish --dry-run --access public --registry https://registry.npmjs.org/` 通过，确认 tarball 为 `@vocmarket/tihao-sop@1.0.1`。
- `npm publish --access public --registry https://registry.npmjs.org/` 成功，npm 返回 `+ @vocmarket/tihao-sop@1.0.1`。
- `npm view @vocmarket/tihao-sop@1.0.1 version --registry https://registry.npmjs.org/` 返回 `1.0.1`。
- `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` 返回 `latest=1.0.1`、`version=1.0.1`。
- `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 在 fresh temp workspace 通过，安装 `.claude/plugins/tihao-sourcing` 和 `.claude/skills/tihao-creator-sourcing` 后输出 `tihao smoke ok`。

## 1.0.0

状态：已发布到 npm；`@vocmarket/tihao-sop@1.0.0` 已成为 `latest`，并通过 registry 查询和 `npx` 工作区安装 smoke。

版本定位：

- `@vocmarket/tihao-sop` 的客户可安装 1.0 技能包版本，面向 Claude Code 工作区安装、Brief 到商务可复核名单、sample/live 小规模运行、偏好记忆、真实 provider runbook 和补证闭环交接。
- 1.0 可以声明“技能包交付链路可安装、可验收、可继续补真实材料”，不能声明“提号率已提升、客户效果已达标、人工补号量已下降”。
- 当前真实业务证明仍以 `proof-gap:closure` 和 `optimization:completion` 为准：`businessOpenCount/openCount=3`、`closedCount=2`、`readyForClaim=false`。

主要变化：

- 为每个参考链接生成结构化 `referenceStyleFingerprints`，覆盖视频/图文/账号类型、人设、内容结构、语气、视觉元素、卖点承接、商业强度、合规风险和证据可用性。
- 增加真实性保护：模型返回的风格结论不能冒充 ASR 或帧图证据；缺少视频证据时明确标注“待补口播证据”或“待补帧图证据”。
- live 召回关键词从 Brief 和参考风格信号中扩展，覆盖品类、人设、场景、内容形态和节点词；同时记录平台、关键词、页码、API 路径、HTTP 状态、返回数量和规范化数量。
- 重构排序字段，输出 `briefFitScore`、`referenceStyleFitScore`、`dataQualityScore`、`budgetFitScore`、`riskPenalty`、命中条件、缺失条件和人工复核字段。
- 强推荐必须同时通过 Brief 和参考风格门槛；超预算、硬排除或高风险账号会被降级或剔除。
- Markdown 和 CSV 输出面向商务验收增强，包含 `Brief 解析摘要`、`参考视频风格指纹`、`候选召回记录`、`多模态证据卡`、`商务可用名单`、`剔除/降级原因`、`下一轮校准问题`。
- PM 验收和 smoke 测试升级，强制检查高标准字段、真实性 gate 和 token 泄露扫描。
- 增加真实 VOC social 参考视频补证指引：使用 `https://server.fmode.cn/api/voc-social` 获取小红书视频详情，再把真实视频、封面、字幕或帧图资源传给豆包；不能拿 Parse sessionToken 直接调用公开 TikHub。
- 增加 `npm run acceptance:video-ab`，用于同一 Brief 和参考视频的 live A/B 验收。
- 证据卡现在会影响候选参考风格命中点、分数和重排，不再只是报告里的被动展示。
- 增加防跑偏的参考感知召回：允许生成 `DHA 专业科普` 这类和 Brief 绑定的召回词；禁止婚礼、宴会、布景、满月宴、仪式感等跑偏场景词污染召回。
- JSON、Markdown、CSV 增加 `evidenceScoreBoost`，让商务能看到验证过的视频/证据分析对候选的贡献。
- 增加成本可控的证据分析目标选择：先预排序，再默认分析前 6 个候选。
- 增加 A/B 效率指标：证据卡数量、每张证据卡带来的强推荐提升、总分提升、参考风格分提升。
- 增加 `resultFirstMode`，用于本轮不优先考虑成本、只优先追求结果质量的场景。
- 增加 `evidenceRiskPenalty`，让混类或合规风险账号即使命中基础母婴信号也能被压低。
- CSV 写入增加 UTF-8 BOM，方便 Excel 直接打开中文不乱码。
- 增加软件端固定表头、跨策略去重和连续排名验收。
- 增加 `live:preflight`，在真实 live/video 长跑前检查 sessionToken、company、provider 和豆包模型配置。
- 增加 overnight 策略矩阵：`reference-account`、`homepage-evidence`、`video-enhanced`、`result-first`、`result-first-risk`、`result-first-broad`。
- 增加严格 provider 门禁：`TIHAO_GATE_REQUIRE_REFERENCE_PROVIDER` 和 `TIHAO_GATE_REQUIRE_HOMEPAGE_PROVIDER`。
- 增加 `review:metrics`，统计商务可用率、负样本率、负样本归因覆盖率、客户选中率、重复键和每个 brief 内排名连续性。
- 增加 `history:audit`，验收真实历史 Brief、人工最终名单、客户选中/拒绝记录和拒绝原因是否足够做长期优化。
- 增加反馈导入二轮闭环和 `teamRuleSuggestions`，同类反馈累计 3 次后建议升级为团队规则。
- 打通本地资料到正式补证入口的桥梁：`local-seed-to-intake-worklist` 现在生成 `history-intake-draft.csv`、`manual-review-draft.csv`、`video-resource-worklist.csv` 和 `candidate-seed-worklist.csv`，并在 `proofGapMaterialBridge` 中标记三个仍 open 缺口的资料来源和不能关闭原因。
- `proof-gap:closure` 现在读取最新 `local-seed-to-intake-worklist-summary.json`，把 `historical-dataset`、`video-ab-live-proof`、`manual-review-and-customer-effect` 的 `materialBridge` 写入 open 行，避免继续误判为“项目没有资料”。
- 三个真实缺口已从“找不到资料”推进为“资料已接入但还不能构成业务证明”：历史草稿 12 行仍缺 5 个以上真实历史 Brief 与客户决策；视频资源线索仍缺 live `acceptance:video-ab` proofContext；人工复核草稿 12 行仍缺真实标注、客户选择、归因和本轮人工补号量。

验证情况：

- `npm run acceptance` 通过。
- `npm publish --dry-run --access public` 通过，确认 tarball 为 `@vocmarket/tihao-sop@1.0.0`，共 176 个文件，package size 约 598.5 kB。
- `npm publish --access public --registry https://registry.npmjs.org/` 成功，npm 返回 `+ @vocmarket/tihao-sop@1.0.0`。
- `npm view @vocmarket/tihao-sop@1.0.0 version --registry https://registry.npmjs.org/` 返回 `1.0.0`。
- `npm view @vocmarket/tihao-sop dist-tags.latest version --registry https://registry.npmjs.org/` 返回 `latest=1.0.0`、`version=1.0.0`。
- `npx --yes @vocmarket/tihao-sop@latest workspace --smoke` 通过，fresh workspace 安装写入 `.claude/plugins/tihao-sourcing`、`.claude/skills/tihao-creator-sourcing` 并跑通 `tihao smoke ok`。
- `npm run acceptance:providers:mock` 通过。
- `npm run review:metrics:smoke` 通过。
- `npm run history:audit:smoke` 通过。
- 本地 fresh tarball 安装和 `npx tihao-sourcing workspace --smoke` 通过。
- 真实 `voc-e-commerce` live 验收使用有效运行时 sessionToken/company，返回 20 个候选和 10 条客户可用名单。
- 真实 live + 豆包组合测试使用模型 `doubao-seed-2-0-pro`，返回 97 个 live 候选、10 条客户可用名单、31 个强推荐、2 个参考指纹、1 个视频指纹、5 条召回记录，并生成 Markdown/JSON/CSV。
- 真实 VOC social 视频详情测试返回视频 URL、封面、作者/标题、字幕资源和可用参考指纹；泄露扫描通过。
- 手动 live A/B 在证据重排后通过：B 组加载 1 个真实参考资源和 10 张豆包证据卡；top 10 证据命中候选增加 6 个，平均参考风格分增加 1.0，平均总分增加 0.2。
- 加入防跑偏召回和证据加分后，手动 live A/B 提升更明显：B 组使用 `DHA 专业科普` 替代基线 `母婴`，加载 1 个真实参考资源和 10 张豆包证据卡，强推荐增加 3 个，top 10 证据命中候选增加 7 个，平均参考风格分增加 8.2，平均总分增加 7.4。
- 成本可控的 top 6 证据分析仍通过：只使用 6 张豆包证据卡，强推荐增加 4 个，top 10 证据命中候选增加 6 个，平均总分增加 3.1。
- result-first live A/B 通过：增强召回跑 8 次 live 请求，关键词包含 `DHA 专业科普`、`DHA 节点合集`、`DHA 清单推荐`、`DHA 理性科普`；豆包返回 20 张证据卡；强推荐从 5 个提升到 10 个；top 10 证据命中候选从 0 个提升到 10 个；平均参考风格分增加 2.1，平均总分增加 5.5。
- 输出泄露扫描未发现运行时 sessionToken、模型 token 或 `Authorization` 字符串。

已知边界：

- 首次组合 live 运行出现过一次短暂 `live_network_error`，重试后通过。后续 runbook 保留 retry/backoff，并建议对单关键词失败做软失败处理。
- 未经过真实 provider gate 的能力只能称为合同验证或 mock 验证，不能宣称真实 TikHub、ffmpeg、讯飞 ASR 或豆包视觉已完成上线。
- 没有真实历史客户选择数据前，不能宣称客户选中率达到 30%/50%，只能使用 `review:metrics` 统计已标注样本。
- npm 发布状态必须以 `npm publish` 成功和 registry 验证为准；仅 `npm pack` 或 dry-run 通过时只能称为本地包已重建。

## 0.1.16

状态：本地待发布版本；包含最新交接文档、递归证明产物发现说明和 proof-gap 失败条件沉淀。发布前必须通过 `npm run acceptance`、`npm run package:contents:smoke` 和 npm publish 权限校验。

主要变化：

- `docs/tihao-handoff-index.md` 和 `docs/tihao-experience-implementation-log.md` 已同步最新 proof-gap 边界：`round-deposition.passCount=137`、`optimization-completion.missingProofRequirementCount=113`、`proof-gap-closure.businessOpenCount/openCount=3`。
- 交接文档新增 closure/completion 递归证明产物发现记录：旧 `optimization-pipeline-latest` 内嵌的 `history-audit/historical-dataset-audit.json` 与 `customer-effect-audit/customer-effect-summary.json` 会被读取为失败证据，不能被误判为“文件缺失”或“可完成证明”。
- 明确三个真实缺口仍未关闭：真实历史 Brief 数据集、真实视频 A/B live proof、商务复核和客户效果证明。
- 明确当前没有业务效果宣称资格：`optimization-completion.readyForClaim=false` 时，不得宣称提号率提升、客户效果达标或人工补号量下降。

为什么三个真实缺口还没有完成：

- 历史 Brief 缺口不是代码没跑，而是当前真实材料只有 `briefCount=1`，缺 5 条以上真实 Brief、人工最终名单、客户选中/拒绝、拒绝原因和历史人工补号量基线。用 seed、示例、模板或本地 PoC 候选补数会造成错误业务宣称。
- 视频 A/B 缺口不是视频资源表完全缺失，真实候选视频资源已单项 closed；当前卡在 live proof：缺真实运行凭证/company/VOC social provider/video analysis provider 上下文，本地只会生成 `video-hit-rate-preflight-summary.json`，不能生成 `proofContext.generatedBy=acceptance:video-ab` 的 live 证明。
- 客户效果缺口必须由 `customer-effect:audit` 证明，当前缺客户最终选择、参考链路客户选择、本轮人工补号量，并且绑定的历史审计仍未通过客户效果证明门槛。

验证：

- `npm.cmd run task:handoff-index:smoke`
- `npm.cmd run hygiene:smoke`
- `npm.cmd run round:refresh:smoke`
- `npm.cmd run package:contents:smoke`
- `npm.cmd run install:smoke`
- `npm.cmd run smoke:package`
- `npm.cmd run acceptance`
- `npm.cmd pack --dry-run --json`

## 0.1.15

状态：VOCMarket npm scope 迁移版本。

主要变化：

- 客户侧 npm 包名从 `@gangvy/tihao-sop` 改为 `@vocmarket/tihao-sop`。
- CLI 命令仍为 `tihao-sourcing`，Claude Code plugin/skill 标识保持不变。
- 安装文档和包 manifest 使用 `npx --yes @vocmarket/tihao-sop@latest workspace --smoke`。
- 保留 `0.1.13` 的真实豆包 OpenAI 兼容服务适配。

验证：

- `npm run acceptance`
- `npm run acceptance:providers:mock`
- 发布后 fresh npm 安装 smoke：`npx --yes @vocmarket/tihao-sop@latest workspace --smoke`

备注：

- `@vocmarket/tihao-sop@0.1.14` registry `PUT 200` 且 dist-tag 显示 latest，但 public `npm view`/`npx` 返回 404，因此未作为客户可安装版本。

## 0.1.13

状态：真实豆包 OpenAI 兼容服务适配版本。

主要变化：

- 增加豆包/视频分析 provider 的 OpenAI 兼容 chat completions 请求模式。
- `doubaoVisionBaseUrl: "https://api.fmode.cn"` 默认请求 `/v1/chat/completions`，默认模型为 `doubao-seed-2-0-pro`。
- 非 chat provider URL 继续沿用内部 evidence-card provider 合同。
- 增加 OpenAI 兼容请求体和 `choices[0].message.content` 证据卡解析的 mock 覆盖。

验证：

- 真实请求 `https://api.fmode.cn/v1/chat/completions` 返回 HTTP 200，模型为 `doubao-seed-2-0-pro-260215`。
- 真实 Tihao sample run 使用豆包服务返回 3 张 `doubao_vision_verified` 证据卡，并写出 Markdown/JSON/CSV。
- 输出扫描未发现 API token 或 Authorization header 泄露。
- `npm run acceptance:providers:mock`
- `npm run mcp:smoke`

备注：

- 该版本验证了豆包模型能基于候选/Brief 信号生成证据卡。若未提供真实帧图或 ASR，证据卡会正确标注缺少视频帧/口播证据。

## 0.1.12

状态：已发布，豆包 provider 验证加固版本。

主要变化：

- 加强豆包 provider 合同验收：当返回 OpenAI 风格 evidenceCards 时，报告必须包含 `## 多模态证据卡` 和 `doubao_vision_verified`。
- 产品验收扫描忽略本地 `.npm-cache-*`，避免 npm registry cache 被误判为源码泄露。

验证：

- 本地 HTTP mock 调用豆包 provider，覆盖模型、Authorization 和 evidenceCards 解析。
- `npm run acceptance:providers:mock`
- `npm run acceptance`

备注：

- 该版本是合同/mock 验证，不等于真实外部豆包服务已跑通。

## 0.1.11

状态：已发布，豆包视频分析 provider 合同版本。

主要变化：

- 增加可选豆包/视频分析输入：`doubaoVisionBaseUrl`、`doubaoVisionPath`、`doubaoVisionModel`、`doubaoVisionToken`、`videoAnalysisBaseUrl`、`videoAnalysisPath`、`videoAnalysisModel`、`videoAnalysisToken`。
- 默认模型为 `doubao-seed-2-0-pro`。
- 请求复用 evidence-card 合同，并包含 `providerType`、`model`、`requestedCapabilities`、Brief 标准和候选博主。
- provider 响应解析支持标准 `evidenceCards` 和 OpenAI 风格 `choices[0].message.content` JSON。
- 安全扫描阻止 `sk-...` 形式 token 写入包文件。
- skill 文档和 runbook 明确 URL/token 只能由用户运行时填写，不能硬编码。

验证：

- `npm run acceptance:providers:mock`
- `npm run acceptance:pm`
- `npm run acceptance`

## 0.1.10

状态：已发布，provider 失败状态加固版本。

主要变化：

- `referenceEvidenceStatus` 增加结构化 provider 状态字段：`providerRequested`、`providerStatus`、`providerHttpStatus`、`providerWarning`。
- `evidenceStatus` 增加同样的状态字段。
- reference provider 区分 `not_requested`、`missing_base_url`、`network_error`、`unauthorized_or_quota`、`http_error`、`empty_result`、`parse_error`、`ok`。
- evidence provider 区分 `not_requested`、`network_error`、`unauthorized_or_quota`、`http_error`、`empty_result`、`parse_error`、`ok`。
- mock 验收加入 reference 403 和 empty evidence response，确保提号流程不中断且 warning 可审计。

验证：

- `npm run acceptance:providers:mock`
- `npm run acceptance:pm`
- `npm run acceptance`

## 0.1.9

状态：已发布，provider 合同加固版本。

主要变化：

- TikHub 兼容参考补证和多模态 evidence provider 请求增加 `contractVersion: "tihao-provider-v1"`。
- reference provider 请求带上品牌、品类、平台、关键词和参考信号。
- 多模态 evidence provider 请求带上文本、ASR、视觉、帧图证据和风险复核能力。
- 支持通过运行时 token 为 evidence provider 鉴权。
- `acceptance:providers:mock` 会验证入站请求体、候选身份、参考锚点和可选 Authorization。

验证：

- `npm run acceptance:providers:mock`
- `npm run acceptance:pm`
- `npm run acceptance`

## 0.1.8 及更早版本摘要

已发布版本主要完成：

- 校准闭环报告：把下一轮问题、复核建议和结构化 next actions 固化在客户可用输出中。
- CLI 反馈和剔除项报告：支持保存商务反馈，报告中说明剔除/降级原因。
- 提号规则与记忆循环加固：更明确地区分首轮假设、硬排除规则和偏好记忆。
- 文档和 PM gate 加固：把真实 provider runbook、roadmap、README 链接和“未跑真实 gate 不得宣称 live 完成”的措辞纳入验收。
- 参考证据路线：增加 `referenceEnrichmentBaseUrl` / `tikhubToken` provider 接口、`evidenceCards` / `evidenceCardsPath`、`multimodalEvidenceBaseUrl` 和对应验收。
- workspace 安装：支持将 Claude Code plugin、skill 和 `.mcp.json` 写入客户工作区。
- 首个 npm 发布版本曾使用 `@gangvy/tihao-sop`，后续迁移到 `@vocmarket/tihao-sop`。

长期边界：

- 没有真实 provider gate 前，只能称为接口合同或 mock 验证。
- 没有客户有效 token/company 前，不能宣称客户账号 live 提号已通过。
- 没有真实帧图/ASR/视频资源前，不能把模型风格总结写成已验证的视频证据。

## 常用验证命令

```powershell
npm run acceptance
npm run acceptance:providers:mock
npm run acceptance:pm
npm run live:acceptance
npm run acceptance:video-ab
```

`live:acceptance` 需要运行时提供：

```powershell
$env:TIHAO_SESSION_TOKEN="<Parse sessionToken>"
$env:TIHAO_COMPANY="<Company objectId>"
```

`acceptance:video-ab` 还需要运行时提供视频分析 URL、模型和 token。所有 token 都不能写入文件。
