| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- {
- "schema_version": "1.1",
- "work_package": "P3-WP00",
- "captured_at": "2026-08-02T13:24:00+08:00",
- "baseline_type": "PHASE3_ENGINEERING_ENTRY",
- "source_control": {
- "branch": "codex/dataops-phase3-enterprise-readiness",
- "captured_local_commit": "487b57d538f619407f0f2be1db7061b055b13400",
- "phase2_baseline_tag": "v0.3.0-phase2",
- "phase2_baseline_commit": "95023e59bfb9f00be4ed61f7a8307fac56fbcee9",
- "merge_base_with_phase2": "95023e59bfb9f00be4ed61f7a8307fac56fbcee9",
- "remote_phase2_tracking_ref": "refs/remotes/origin/codex/dataops-phase2-platformization",
- "remote_phase2_tracking_commit": "95023e59bfb9f00be4ed61f7a8307fac56fbcee9",
- "remote_network_refresh_performed": false,
- "relationship": "captured_local_commit is a direct descendant of phase2_baseline_commit",
- "notes": "远端第二阶段值来自现有本地 remote-tracking ref;按 P3-WP00 不联网约束未执行 fetch 或 ls-remote。",
- "wp00_delivery_commit_resolution": "GIT_COMMIT_CONTAINING_THIS_MANIFEST",
- "wp00_delivery_commit_note": "Git 提交无法在自身内容中保存自身哈希;最终提交号由提交结果和交付报告提供。"
- },
- "api_contract": {
- "path": "docs/architecture/OPENAPI.yaml",
- "operation_count": 395,
- "sha256": "fcb9d0e23640fb75e698519622d99466da372f6fefe3152dd84e9855421e9f3a",
- "git_blob_at_capture": "3133570b704ffcb2464375715f214fd441e145ac",
- "generator": "scripts/generate_openapi.py",
- "generated_output": "/private/tmp/p3-wp00-openapi.yaml",
- "generated_sha256": "fcb9d0e23640fb75e698519622d99466da372f6fefe3152dd84e9855421e9f3a",
- "generated_operation_count": 395,
- "generated_matches_committed": true
- },
- "migration_contract": {
- "source_path": "migrations",
- "versions_path": "migrations/versions",
- "heads": [
- "20260802_460"
- ],
- "heads_status": "AVAILABLE",
- "file_count": 52,
- "git_tree": "68755a0e738f8e7a25a374b755124e75d66037ff"
- },
- "release_copy_contract": {
- "source_app_path": "app",
- "release_app_path": "deployment/app",
- "app_git_tree": "9237562e058c7b911c9e5db1b102aa6963ba46df",
- "deployment_app_git_tree": "9237562e058c7b911c9e5db1b102aa6963ba46df",
- "app_matches": true,
- "source_migrations_path": "migrations",
- "release_migrations_path": "deployment/migrations",
- "migrations_git_tree": "68755a0e738f8e7a25a374b755124e75d66037ff",
- "deployment_migrations_git_tree": "68755a0e738f8e7a25a374b755124e75d66037ff",
- "migrations_match": true,
- "comparison_mode": "recursive byte/path comparison plus Git tree identity"
- },
- "data_snapshot": {
- "scope": "LOCAL_PHASE2_ENGINEERING_STATE",
- "read_only_capture": true,
- "enterprise_uat": false,
- "status": "NOT_AVAILABLE",
- "error_category": "MISSING_DATABASE_CONFIGURATION",
- "error_summary": "alembic current could not start because neither SQLALCHEMY_DATABASE_URI nor DATABASE_URL was configured for migrations.",
- "alembic_current": "NOT_AVAILABLE",
- "public_table_count": "NOT_AVAILABLE",
- "record_counts": "NOT_AVAILABLE",
- "write_attempted": false,
- "prior_phase2_counts_reused": false
- },
- "user_untracked_inventory": {
- "inspection_mode": "PATHS_ONLY_CONTENT_NOT_READ",
- "modified": false,
- "captured_before_wp00_files_were_added": true,
- "paths": [
- "canvas/cowart-selection.json",
- "canvas/cowart-view-state.json",
- "canvas/pages/manifest.json",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_ENTRY_AND_CORE_ARCHITECTURE_20260801-cowart-edit-01.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_ENTRY_AND_CORE_ARCHITECTURE_20260801-cowart.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_ENTRY_AND_FOUNDATION_ARCHITECTURE_20260801-cowart.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-01.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-02.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-03.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-04.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-05.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-06.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-07.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-08.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-09.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-10.png",
- "canvas/pages/page/assets/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801-cowart-edit-11.png",
- "canvas/pages/page/assets/asset-877967025.svg",
- "canvas/pages/page/cowart-canvas.json",
- "docs/architecture/DATAOPS_PLATFORM_ENTRY_AND_CORE_ARCHITECTURE_20260801.png",
- "docs/architecture/DATAOPS_PLATFORM_ENTRY_AND_CORE_ARCHITECTURE_20260801.svg",
- "docs/architecture/DATAOPS_PLATFORM_ENTRY_AND_FOUNDATION_ARCHITECTURE_20260801.md",
- "docs/architecture/DATAOPS_PLATFORM_ENTRY_AND_FOUNDATION_ARCHITECTURE_20260801.png",
- "docs/architecture/DATAOPS_PLATFORM_ENTRY_AND_FOUNDATION_ARCHITECTURE_20260801.svg",
- "docs/architecture/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801.md",
- "docs/architecture/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801.png",
- "docs/architecture/DATAOPS_PLATFORM_SYSTEM_ARCHITECTURE_20260801.svg"
- ]
- },
- "verification_commands": [
- "git rev-parse HEAD v0.3.0-phase2^{commit}",
- "git merge-base HEAD v0.3.0-phase2",
- "git rev-parse refs/remotes/origin/codex/dataops-phase2-platformization",
- "PYTHONPATH=. .venv/bin/python scripts/generate_openapi.py --output /private/tmp/p3-wp00-openapi.yaml",
- "PYTHONPATH=. .venv/bin/alembic heads",
- "PYTHONPATH=. .venv/bin/alembic current",
- "diff -qr app deployment/app",
- "diff -qr migrations deployment/migrations"
- ],
- "verification_results": [
- {
- "id": "P3-EVD-001",
- "command": "PYTHONPATH=. .venv/bin/pytest -q tests/test_phase3_wp00_baseline_contract.py",
- "case_count": 12,
- "result": "PASSED",
- "summary": "12 passed",
- "exit_code": 0,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-002",
- "command": "PYTHONPATH=. .venv/bin/pytest -q tests/test_phase2_wp00_baseline_contract.py",
- "case_count": 7,
- "result": "PASSED",
- "summary": "7 passed",
- "exit_code": 0,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-003",
- "command": "git archive captured_local_commit; run archived scripts/generate_openapi.py against archived app/ and compare archived OPENAPI.yaml",
- "case_count": 395,
- "result": "PASSED",
- "summary": "395 operations; committed and generated SHA-256 matched",
- "exit_code": 0,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-004",
- "command": "git archive captured_local_commit migrations/ and alembic.ini; run archived alembic heads",
- "case_count": 1,
- "result": "PASSED",
- "summary": "20260802_460 (head)",
- "exit_code": 0,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-005",
- "command": "PYTHONPATH=. .venv/bin/alembic current",
- "case_count": 0,
- "result": "NOT_AVAILABLE",
- "summary": "MISSING_DATABASE_CONFIGURATION",
- "exit_code": 1,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-006",
- "command": "diff -qr app deployment/app; diff -qr migrations deployment/migrations",
- "case_count": 2,
- "result": "PASSED",
- "summary": "app parity exit 0; migrations parity exit 0",
- "exit_code": 0,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-007",
- "command": "git rev-parse; git merge-base; local remote-tracking ref",
- "case_count": 3,
- "result": "PASSED_WITH_LIMITATION",
- "summary": "branch capture 487b57d; tag, merge-base and local remote-tracking commit 95023e5; no network refresh",
- "exit_code": 0,
- "enterprise_uat": false
- },
- {
- "id": "P3-EVD-008",
- "command": "git diff --check; git diff --cached --check",
- "case_count": 2,
- "result": "PASSED",
- "summary": "exit 0",
- "exit_code": 0,
- "enterprise_uat": false
- }
- ],
- "limitations": [
- "清单是本地工程基线,不是企业生产状态或企业 UAT 证据。",
- "数据库不可用时不继承或推断第二阶段历史计数。",
- "远端跟踪提交仅代表本地 remote-tracking ref 的当前值,未进行网络刷新。",
- "用户未跟踪文件只记录路径;未读取 canvas/ 或 docs/architecture 下未跟踪内容。"
- ]
- }
|