docs(test): record FAV gap-fill unit evidence
Capture same-tx, recover-apply, pin-export, and GET zero-write results without claiming live 6173 or Unit A drills. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+1
-1
@@ -52,7 +52,7 @@
|
||||
| Cursor | dev-runtime-data-root-guard-plan-rewrite | fix/dev-runtime-data-root-guard | .worktrees/fix-dev-runtime-data-root-guard | infra-runtime-state | in_progress |
|
||||
| Codex | runtime-data-lifecycle-plan | fix/dev-runtime-data-root-guard | .worktrees/fix-dev-runtime-data-root-guard | infra-runtime-state | done |
|
||||
| Codex | final-artifact-vault-plan | fix/dev-runtime-data-root-guard | .worktrees/fix-dev-runtime-data-root-guard | artifact-vault | done |
|
||||
| Cursor | final-artifact-vault-implementation | feature/final-artifact-vault | .worktrees/fix-dev-runtime-data-root-guard | artifact-vault | in_progress |
|
||||
| Cursor | final-artifact-vault-implementation | feature/final-artifact-vault | .worktrees/fix-dev-runtime-data-root-guard | artifact-vault | done |
|
||||
|
||||
> 新任务开始前登记。`branch` 必须为 `feature/<slug>` 或 `fix/<slug>`,**禁止** `dev` / `test` / `main`。同一 `mutex` 同时仅一个 `in_progress`。
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "最终成果保险库 V0–V6 落地"
|
||||
status: in_progress
|
||||
status: done
|
||||
created: 2026-09-14
|
||||
updated: 2026-09-14
|
||||
owner: Cursor
|
||||
@@ -31,8 +31,9 @@ mutex: artifact-vault
|
||||
5. [x] V3 助手接入(同步 chat + task finalize)
|
||||
6. [x] V3.5 回填(只枚举账本/完成 turn)
|
||||
7. [x] V4 降级读取(`FAV_DEGRADED_READ` 默认关)
|
||||
8. [x] V5 恢复(scratch-only CLI)
|
||||
8. [x] V5 恢复(scratch-only recover-apply 写入 collection;union-deny 跳过 tombstone)
|
||||
9. [x] V6 门禁与三份演练报告(live e2e 待 Unit A)
|
||||
10. [x] 缺口补齐:approve/commit 同事务 staging;半发布 exclusive 重试;GET 零写入;`copy_only` pin-export;destroy 预检 CLI
|
||||
|
||||
## 相关链接
|
||||
|
||||
@@ -45,3 +46,4 @@ mutex: artifact-vault
|
||||
- 分支:`feature/final-artifact-vault`
|
||||
- 未执行 `env-service` rebuild;`FAV_DEGRADED_READ` 默认 false
|
||||
- Goose:`00034_2026-09-14-final-artifact-vault.sql`
|
||||
- 未合 `dev`;live 6173 / PITR / corpus 仍待 Unit A 另占槽
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
| DOCREV-ACTIVE-DOC-ROUTING | UI-05「当前受控文档」被法规关键词改路由到 `feasibility_reg`,intake 无 pending | **PASS** | [audit](../audit/2026-09-13-document-revision-active-doc-routing.md);Round20 UI-05 pending 停在 intake V2 | **不改弱 E2E**;不删证据 |
|
||||
| DOCREV-QUALITY-STATUS-FP | 行动计划表状态列「待续」被门禁当敷衍,两轮 repair 后 quality_failed 80 | **PASS** | [audit](../audit/2026-09-13-document-revision-quality-status-false-positive.md);Round20 UI-03 | **不删禁词、不放宽正文**;不删证据 |
|
||||
| GOVERNANCE-ACTION-AUTHZ | 文档动作按职责鉴权;未激活 202-blocked;关闭创建直通 | **PASS** | [test-report](../test-reports/2026-09-14-governance-action-level-authz-test-report.md);[audit 异态](../audit/2026-09-14-planning-with-workflow-key-anomaly.md) | 不改 83 条 planning+key 夹具;none 长 PI 审批链另开 |
|
||||
| FAV-V0-V6-IMPL | 终态成果保险库 V0–V6 内核与挂钩 | **PARTIAL** | [test-report](../test-reports/2026-09-14-final-artifact-vault-test-report.md);[ADR](../adr/2026-09-14-final-artifact-vault.md)。goose 00034;`FAV_DEGRADED_READ` 默认 false | 不替代 Unit A/B;live 6173/PITR/corpus 演练另占槽。禁止在错挂数据根上开降级读 |
|
||||
| FAV-V0-V6-IMPL | 终态成果保险库 V0–V6 内核与挂钩 | **PARTIAL** | [test-report](../test-reports/2026-09-14-final-artifact-vault-test-report.md);[ADR](../adr/2026-09-14-final-artifact-vault.md)。goose 00034;同事务 staging;scratch recover-apply;`FAV_DEGRADED_READ` 默认 false | 不替代 Unit A/B;live 6173/PITR/corpus 演练另占槽。禁止在错挂数据根上开降级读 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
| IAM / 鉴权 | 项目级 API 鉴权 + RBAC | partial | [audit/authorization](../audit/authorization-matrix-v2.md);[刷新恢复专项审计](../audit/2026-09-13-chat-history-refresh-disappears.md) | 历史读取端点补统一会话 owner + 阶段授权;旧 API 410 标注(BUG-11 partial) | `authz` |
|
||||
| 文档治理 | 法定文档生命周期 + 租约 + 受控正文读取 | partial | [数据根 split-brain 审计](../audit/2026-09-14-dev-runtime-data-root-split-brain.md);[test docgov](../test-reports/2026-09-08-docgov-lifecycle-and-claiming-framework-test-report.md);[项目 143 canonical 漂移审计](../audit/2026-09-14-project143-controlled-content-404.md);[既有真实 UI 报告](../test-reports/2026-09-14-controlled-content-ui-acceptance.md) | canonical/hash 与 UI 竞态旧缺陷已修;当前 dev 因数据根 split-brain 再次不可读。Unit A 纠挂后标 incident-mitigated;`done` 等 Unit B 负例,不等 outbox | `docgov` |
|
||||
| 文档版本与修改认知 | 智能体版本边界、人工修订标记、任意版本比较、变更报告与负责人通知 | partial | [管理测试](../test-reports/2026-09-13-document-revision-management-test-report.md);[运行时 UI Round20](../test-reports/2026-09-14-document-revision-runtime-ui-test-report.md);[运行时审计](../audit/2026-09-13-document-revision-runtime-404.md);[ADR](../adr/2026-09-13-document-version-boundary.md) | **运行时 UI PASS**(6159 / V3/r2)。仍 `partial`:change report=`fallback`(真实 diff+lineage,非完整 PI 叙事)。系统级 `CHAT-INTENT` 见 gap-matrix | `docgov` |
|
||||
| 最终成果归档与恢复 | 终态文档/助手回复的独立归档、稳定定位、清理门禁与受控部分恢复 | partial | [ADR](../adr/2026-09-14-final-artifact-vault.md);[调研](../ops/research/2026-09-14-final-artifact-vault.md);[整改方案](../remediation/2026-09-14-final-artifact-vault-remediation.md);[单测报告](../test-reports/2026-09-14-final-artifact-vault-test-report.md) | V0–V6 内核/挂钩/CLI 已落地(goose 00034)。现网降级读默认关;6173 live 演练与 corpus/PITR 待 Unit A 后另占槽 | `artifact-vault` |
|
||||
| 最终成果归档与恢复 | 终态文档/助手回复的独立归档、稳定定位、清理门禁与受控部分恢复 | partial | [ADR](../adr/2026-09-14-final-artifact-vault.md);[调研](../ops/research/2026-09-14-final-artifact-vault.md);[整改方案](../remediation/2026-09-14-final-artifact-vault-remediation.md);[单测报告](../test-reports/2026-09-14-final-artifact-vault-test-report.md) | V0–V6 内核已落地:approve/commit 同事务 staging、scratch recover-apply、GET 零写入、`copy_only` pin-export(goose 00034)。现网降级读默认关;6173 live 演练与 corpus/PITR 待 Unit A 后另占槽 | `artifact-vault` |
|
||||
| 前端工作台 | 三栏 + 块文档 + SSE | partial | [test workbench](../test-reports/2026-09-08-three-column-workbench-and-block-document-test-report.md);[现场专项审计](../audit/2026-09-13-conversation-intent-runtime-state.md) | 错误卡片/任务进度/文档 busy 状态刷新恢复与人工抽检待完成 | `web` |
|
||||
| PI Runner / 配置链 | pi-agent + MiniMax 真实链路 | done | [test piagent](../test-reports/2026-09-13-codex-audit-p0-remediation-test-report.md);[container-env](../test-reports/2026-09-13-container-env-configuration-test-report.md) | — | `pi-agent` |
|
||||
| 三环境运维 | dev/test/main + 共享 KB | partial | [PROJECT.md](../../PROJECT.md) §4;[数据根 split-brain 审计](../audit/2026-09-14-dev-runtime-data-root-split-brain.md);[审查修订方案](../remediation/2026-09-14-dev-runtime-data-root-and-projection-remediation.md);[数据生命周期方案](../remediation/2026-09-14-runtime-data-lifecycle-and-migration-corpus-remediation.md) | 现场仍错挂 `/tmp`。本行 `done` 等 Unit A 纠挂 + Unit B 门禁负例;蓝绿换库/corpus 为 sibling,不挡事故关闭 | `infra` |
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
- publisher 幂等、拒绝 `data/dev` 根、跨项目同 SHA 分 key、tombstone union-deny。
|
||||
- 回填缺证据 quarantine;重跑不新增逻辑成果。
|
||||
- recover 拒绝 operational DSN;coverage/destroy 门禁 fail-closed。
|
||||
- 半发布缺 commit marker 不可见,exclusive 重试后可恢复。
|
||||
- GET/degraded 路径不调用 `Request`。
|
||||
- `copy_only` 仅 completed 后显式 pin 可进库。
|
||||
|
||||
## 三、 测试方案与环境 (Test Plan & Environment)
|
||||
|
||||
@@ -67,13 +70,21 @@
|
||||
- **评价判定**: PASS
|
||||
- **性能与耗时**: <10ms
|
||||
|
||||
### 5. 缺口补齐(同事务 / recover-apply / GET 零写入 / pin)
|
||||
|
||||
- **测试输入**: `TestPublisherRetriesAfterMissingCommit`、`TestUnpublishedWithoutCommitMarkerInvisible`、`TestFilesystemIdentityMismatch`、`TestDegradedPayloadDoesNotWrite`、`TestTryVaultDegradedDoesNotRequest`、`TestApplyRecoverAsCollectionWritesScratchAndSkipsDenied`、`TestServer_PinExportCopyOnlyAfterCompleted`、`TestValidateIndependentVault`
|
||||
- **实际输出**: 全部 `--- PASS`(见 [assets/2026-09-14-final-artifact-vault/unit-tests-gapfill.txt](assets/2026-09-14-final-artifact-vault/unit-tests-gapfill.txt))
|
||||
- **评价判定**: PASS
|
||||
- **性能与耗时**: artifactvault 4ms;pin-export 120ms
|
||||
|
||||
## 六、 自动化测试套件汇总 (Test Suite Execution)
|
||||
|
||||
```
|
||||
ok chat-agent-system/internal/artifactvault 0.005s
|
||||
ok chat-agent-system/internal/docgov 0.003s
|
||||
ok chat-agent-system/internal/ctxmgr 0.003s
|
||||
ok chat-agent-system/internal/server 0.005s (TestFinalizeTaskRunCompletesTurnAndIngests)
|
||||
ok chat-agent-system/internal/config 0.002s
|
||||
ok chat-agent-system/internal/docgov 0.011s
|
||||
ok chat-agent-system/internal/ctxmgr 0.073s
|
||||
ok chat-agent-system/internal/server 0.364s (FAV 挂钩 / pin-export / GET 零写入)
|
||||
```
|
||||
|
||||
未跑 `go test ./...` 全量(含真实 PI E2E / 需容器的套件);本波次范围是 FAV 包与挂钩单测。
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
=== RUN TestEvaluateEligibility_Allowlist
|
||||
--- PASS: TestEvaluateEligibility_Allowlist (0.00s)
|
||||
=== RUN TestEvaluateEligibility_ApprovedRequiresReviewSnapshot
|
||||
--- PASS: TestEvaluateEligibility_ApprovedRequiresReviewSnapshot (0.00s)
|
||||
=== RUN TestEvaluateEligibility_TaskWithoutCompletedTurn
|
||||
--- PASS: TestEvaluateEligibility_TaskWithoutCompletedTurn (0.00s)
|
||||
=== RUN TestEvaluateEligibility_SensitiveRejectedBeforeStaging
|
||||
--- PASS: TestEvaluateEligibility_SensitiveRejectedBeforeStaging (0.00s)
|
||||
=== RUN TestEvaluateEligibility_CopyOnlyRequiresExplicitPinAfterCompleted
|
||||
--- PASS: TestEvaluateEligibility_CopyOnlyRequiresExplicitPinAfterCompleted (0.00s)
|
||||
=== RUN TestEvaluateEligibility_UnknownTypeRejected
|
||||
--- PASS: TestEvaluateEligibility_UnknownTypeRejected (0.00s)
|
||||
=== RUN TestPublisherIdempotentAndCrashSafe
|
||||
--- PASS: TestPublisherIdempotentAndCrashSafe (0.00s)
|
||||
=== RUN TestPublisherRejectsBadSHAAndCrossProjectKeys
|
||||
--- PASS: TestPublisherRejectsBadSHAAndCrossProjectKeys (0.00s)
|
||||
=== RUN TestFilesystemRefusesRuntimeDataDev
|
||||
--- PASS: TestFilesystemRefusesRuntimeDataDev (0.00s)
|
||||
=== RUN TestTombstoneUnionDeny
|
||||
--- PASS: TestTombstoneUnionDeny (0.00s)
|
||||
=== RUN TestLastReferencePurgeAndLegalHold
|
||||
--- PASS: TestLastReferencePurgeAndLegalHold (0.00s)
|
||||
=== RUN TestFilesystemIdentityMismatch
|
||||
--- PASS: TestFilesystemIdentityMismatch (0.00s)
|
||||
=== RUN TestUnpublishedWithoutCommitMarkerInvisible
|
||||
--- PASS: TestUnpublishedWithoutCommitMarkerInvisible (0.00s)
|
||||
=== RUN TestPublisherRetriesAfterMissingCommit
|
||||
--- PASS: TestPublisherRetriesAfterMissingCommit (0.00s)
|
||||
=== RUN TestDegradedPayloadDoesNotWrite
|
||||
--- PASS: TestDegradedPayloadDoesNotWrite (0.00s)
|
||||
=== RUN TestApplyRecoverAsCollectionWritesScratchAndSkipsDenied
|
||||
--- PASS: TestApplyRecoverAsCollectionWritesScratchAndSkipsDenied (0.00s)
|
||||
PASS
|
||||
ok chat-agent-system/internal/artifactvault 0.004s
|
||||
=== RUN TestValidateIndependentVault
|
||||
--- PASS: TestValidateIndependentVault (0.00s)
|
||||
PASS
|
||||
ok chat-agent-system/internal/config 0.002s
|
||||
=== RUN TestFinalizeTaskRunCompletesTurnAndIngests
|
||||
2026/09/14 12:51:53 [kb] 无法连接到 PostgreSQL 知识库 (postgres://:@:0/?sslmode=disable): cannot parse `postgres://:xxxxx@:0/?sslmode=disable`: invalid port (outside range), 将降级运行在离线模式
|
||||
--- PASS: TestFinalizeTaskRunCompletesTurnAndIngests (0.00s)
|
||||
=== RUN TestTryVaultDegradedDoesNotRequest
|
||||
--- PASS: TestTryVaultDegradedDoesNotRequest (0.00s)
|
||||
=== RUN TestServer_PinExportCopyOnlyAfterCompleted
|
||||
2026/09/14 12:51:53 [kb] 无法连接到 PostgreSQL 知识库 (postgres://:@:0/?sslmode=disable): cannot parse `postgres://:xxxxx@:0/?sslmode=disable`: invalid port (outside range), 将降级运行在离线模式
|
||||
--- PASS: TestServer_PinExportCopyOnlyAfterCompleted (0.12s)
|
||||
PASS
|
||||
ok chat-agent-system/internal/server 0.131s
|
||||
Reference in New Issue
Block a user