Files
awoooi/docs/evaluations/package_supply_chain_inventory_2026-06-04.json
Your Name cfb866d055
Some checks failed
Ansible Lint / lint (push) Successful in 35s
CD Pipeline / tests (push) Failing after 13s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped
Code Review / ai-code-review (push) Failing after 11s
feat(governance): add agent market automation surfaces
2026-06-04 21:50:55 +08:00

309 lines
15 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": "package_supply_chain_inventory_v1",
"generated_at": "2026-06-04T21:06:22+08:00",
"program_status": {
"overall_completion_percent": 100,
"current_priority": "P1",
"current_task_id": "P1-206",
"next_task_id": "P1-103",
"read_only_mode": true
},
"source_refs": [
"apps/api/pyproject.toml",
"apps/api/requirements.txt",
"apps/sensor/requirements.txt",
"packages/lewooogo-data/pyproject.toml",
"packages/lewooogo-brain/pyproject.toml",
"scripts/aider_watch_client/pyproject.toml",
"package.json",
"apps/web/package.json",
"pnpm-lock.yaml",
"apps/api/Dockerfile",
"apps/web/Dockerfile"
],
"rollups": {
"total_surfaces": 10,
"by_ecosystem": {
"python": 6,
"javascript": 2,
"docker": 2
},
"by_status": {
"ready": 5,
"action_required": 5,
"planned_next": 0
},
"python_manifest_count": 6,
"javascript_manifest_count": 2,
"docker_surface_count": 2,
"action_required_surface_ids": [
"apps_api_pyproject",
"apps_api_requirements",
"apps_web_package_json",
"apps_api_dockerfile",
"apps_web_dockerfile"
],
"planned_next_surface_ids": []
},
"surfaces": [
{
"surface_id": "apps_api_pyproject",
"display_name": "API pyproject",
"ecosystem": "python",
"status": "action_required",
"risk_level": "high",
"manifest_ref": "apps/api/pyproject.toml",
"lockfile_ref": "none",
"direct_dependency_count": 25,
"optional_dependency_group_count": 1,
"pinning_policy": "range_minimums_onlyclaude-agent-sdk、langfuse 等仍需依賴批准與版本漂移治理。",
"runtime_ref": "apps/api/Dockerfile uses python:3.11-slim + uv 0.6.9",
"gate_status": "read_only_allowed",
"evidence_refs": ["apps/api/pyproject.toml", "apps/api/Dockerfile"],
"next_action": "P1-204 定義 Python dependency drift / CVE / license 嚴重度;不得自動升級。"
},
{
"surface_id": "apps_api_requirements",
"display_name": "API legacy requirements",
"ecosystem": "python",
"status": "action_required",
"risk_level": "high",
"manifest_ref": "apps/api/requirements.txt",
"lockfile_ref": "none",
"direct_dependency_count": 24,
"optional_dependency_group_count": 0,
"pinning_policy": "range_minimums_only與 pyproject 存在 manifest drift。",
"runtime_ref": "not used by current Dockerfile dependency layer",
"gate_status": "read_only_allowed",
"evidence_refs": ["apps/api/requirements.txt", "apps/api/pyproject.toml", "apps/api/Dockerfile"],
"next_action": "P1-204 決定 requirements 是否保留、生成或廢止;需人工 review不直接刪。"
},
{
"surface_id": "apps_sensor_requirements",
"display_name": "Sensor requirements",
"ecosystem": "python",
"status": "ready",
"risk_level": "medium",
"manifest_ref": "apps/sensor/requirements.txt",
"lockfile_ref": "none",
"direct_dependency_count": 1,
"optional_dependency_group_count": 0,
"pinning_policy": "range_minimums_only",
"runtime_ref": "sensor runtime, Redis client only",
"gate_status": "read_only_allowed",
"evidence_refs": ["apps/sensor/requirements.txt"],
"next_action": "P1-204 納入 Python risk policy。"
},
{
"surface_id": "lewooogo_data_pyproject",
"display_name": "leWOOOgo Data pyproject",
"ecosystem": "python",
"status": "ready",
"risk_level": "medium",
"manifest_ref": "packages/lewooogo-data/pyproject.toml",
"lockfile_ref": "none",
"direct_dependency_count": 4,
"optional_dependency_group_count": 2,
"pinning_policy": "range_minimums_onlypg extra 才包含 asyncpg。",
"runtime_ref": "installed as local package in apps/api/Dockerfile",
"gate_status": "read_only_allowed",
"evidence_refs": ["packages/lewooogo-data/pyproject.toml", "apps/api/Dockerfile"],
"next_action": "P1-204 納入 local package dependency policy。"
},
{
"surface_id": "lewooogo_brain_pyproject",
"display_name": "leWOOOgo Brain pyproject",
"ecosystem": "python",
"status": "ready",
"risk_level": "medium",
"manifest_ref": "packages/lewooogo-brain/pyproject.toml",
"lockfile_ref": "none",
"direct_dependency_count": 3,
"optional_dependency_group_count": 1,
"pinning_policy": "range_minimums_only",
"runtime_ref": "installed as local package in apps/api/Dockerfile",
"gate_status": "read_only_allowed",
"evidence_refs": ["packages/lewooogo-brain/pyproject.toml", "apps/api/Dockerfile"],
"next_action": "P1-204 納入 local package dependency policy。"
},
{
"surface_id": "aider_watch_client_pyproject",
"display_name": "aider-watch client pyproject",
"ecosystem": "python",
"status": "ready",
"risk_level": "low",
"manifest_ref": "scripts/aider_watch_client/pyproject.toml",
"lockfile_ref": "none",
"direct_dependency_count": 3,
"optional_dependency_group_count": 1,
"pinning_policy": "range_minimums_only",
"runtime_ref": "local Mac client script package",
"gate_status": "read_only_allowed",
"evidence_refs": ["scripts/aider_watch_client/pyproject.toml"],
"next_action": "P1-204 納入工具端 dependency policy。"
},
{
"surface_id": "root_package_json",
"display_name": "Root pnpm workspace",
"ecosystem": "javascript",
"status": "ready",
"risk_level": "medium",
"manifest_ref": "package.json",
"lockfile_ref": "pnpm-lock.yaml",
"direct_dependency_count": 5,
"optional_dependency_group_count": 0,
"pinning_policy": "pnpm lockfile presentP1-202 已確認 root importer 與 lockfile specifier 同步。",
"runtime_ref": "pnpm@9.0.0 workspace",
"gate_status": "read_only_allowed",
"evidence_refs": ["package.json", "pnpm-lock.yaml", "docs/evaluations/javascript_package_inventory_2026-06-04.json"],
"next_action": "P1-204 定義 toolchain 與 caret range drift policy不得寫 lockfile。"
},
{
"surface_id": "apps_web_package_json",
"display_name": "Web package",
"ecosystem": "javascript",
"status": "action_required",
"risk_level": "high",
"manifest_ref": "apps/web/package.json",
"lockfile_ref": "pnpm-lock.yaml",
"direct_dependency_count": 33,
"optional_dependency_group_count": 0,
"pinning_policy": "pnpm lockfile presentNext pinned 14.1.028 條 caret range 已由 P1-204 定義漂移政策P1-205 已建立定期只讀檢查設計。",
"runtime_ref": "apps/web/Dockerfile uses node:20-alpine + pnpm 9.0.0",
"gate_status": "lockfile_write_blocked",
"evidence_refs": ["apps/web/package.json", "apps/web/Dockerfile", "pnpm-lock.yaml", "docs/evaluations/javascript_package_inventory_2026-06-04.json"],
"next_action": "P1-206 產生 Next / React / Sentry / Playwright 等高影響套件升級批准包模板。"
},
{
"surface_id": "apps_api_dockerfile",
"display_name": "API Docker supply-chain surface",
"ecosystem": "docker",
"status": "action_required",
"risk_level": "high",
"manifest_ref": "apps/api/Dockerfile",
"lockfile_ref": "none",
"direct_dependency_count": 3,
"optional_dependency_group_count": 0,
"pinning_policy": "python:3.11-slim 與 uv 0.6.9 tag-pinned 但未 digest-pinnedkubectl v1.29.0 缺 checksum policy。",
"runtime_ref": "python:3.11-slim + ghcr.io/astral-sh/uv:0.6.9 + kubectl v1.29.0",
"gate_status": "image_rebuild_blocked",
"evidence_refs": ["apps/api/Dockerfile", "docs/evaluations/docker_build_surface_inventory_2026-06-04.json"],
"next_action": "P1-206 產生 base image digest pin、kubectl checksum、apt source 與 rebuild approval package。"
},
{
"surface_id": "apps_web_dockerfile",
"display_name": "Web Docker supply-chain surface",
"ecosystem": "docker",
"status": "action_required",
"risk_level": "medium",
"manifest_ref": "apps/web/Dockerfile",
"lockfile_ref": "pnpm-lock.yaml",
"direct_dependency_count": 2,
"optional_dependency_group_count": 0,
"pinning_policy": "node:20-alpine tag-pinned 但未 digest-pinnedpnpm 9.0.0 pinned仍需 corepack / registry provenance policy。",
"runtime_ref": "node:20-alpine + pnpm 9.0.0",
"gate_status": "image_rebuild_blocked",
"evidence_refs": ["apps/web/Dockerfile", "pnpm-lock.yaml", "docs/evaluations/docker_build_surface_inventory_2026-06-04.json"],
"next_action": "P1-206 node base image digest pinpnpm/corepack provenanceWeb runtime healthcheck rebuild approval package"
}
],
"drift_findings": [
{
"finding_id": "api_python_manifest_drift",
"severity": "high",
"status": "action_required",
"summary": "apps/api/pyproject.toml apps/api/requirements.txt Dockerfile 使 pyproject + uvrequirements ",
"evidence_refs": ["apps/api/pyproject.toml", "apps/api/requirements.txt", "apps/api/Dockerfile"],
"next_action": "P1-206 requirements "
},
{
"finding_id": "python_no_lockfile",
"severity": "medium",
"status": "action_required",
"summary": "Python surfaces range constraints uv.lock / poetry.lock / Pipfile.lockbuild ",
"evidence_refs": ["apps/api/pyproject.toml", "packages/lewooogo-data/pyproject.toml", "packages/lewooogo-brain/pyproject.toml"],
"next_action": "P1-206 lockfile / constraints file "
},
{
"finding_id": "external_cve_lookup_not_run",
"severity": "medium",
"status": "planned_next",
"summary": " CVE / license database repo ",
"evidence_refs": ["docs/ai/AI_AGENT_AUTOMATION_WORKLIST_2026-06-04.md"],
"next_action": "P1-206 CVE / license / registry freshness "
},
{
"finding_id": "javascript_manifest_lockfile_in_sync",
"severity": "low",
"status": "accepted",
"summary": "P1-202 6 JavaScript workspace importer manifest specifier pnpm-lock.yaml importer specifier missingmismatchextra 0",
"evidence_refs": ["docs/evaluations/javascript_package_inventory_2026-06-04.json", "pnpm-lock.yaml"],
"next_action": "P1-205 registry / audit cadence "
},
{
"finding_id": "apps_web_caret_range_exposure",
"severity": "medium",
"status": "action_required",
"summary": "@awoooi/web 33 direct dependencies 28 使 caret rangelockfile ",
"evidence_refs": ["apps/web/package.json", "pnpm-lock.yaml", "docs/evaluations/javascript_package_inventory_2026-06-04.json"],
"next_action": "P1-206 Next / React / Sentry / Playwright / visualization dependencies "
},
{
"finding_id": "docker_base_images_not_digest_pinned",
"severity": "high",
"status": "action_required",
"summary": "P1-203 API / Web Dockerfile 使 tag-pinned external images使 digest pinpython:3.11-slimnode:20-alpineghcr.io/astral-sh/uv:0.6.9 P1-204 digest / rebuild policy",
"evidence_refs": ["docs/evaluations/docker_build_surface_inventory_2026-06-04.json", "apps/api/Dockerfile", "apps/web/Dockerfile"],
"next_action": "P1-206 digest pin cadencerollback registry approval package"
},
{
"finding_id": "docker_build_time_network_fetches_present",
"severity": "medium",
"status": "action_required",
"summary": "P1-203 API build apt-get / curlWeb build corepack prepare / pnpm install build registry freshness",
"evidence_refs": ["docs/evaluations/docker_build_surface_inventory_2026-06-04.json"],
"next_action": "P1-206 image rebuild "
},
{
"finding_id": "dependency_risk_policy_defined",
"severity": "low",
"status": "accepted",
"summary": "P1-204 CVE / license / drift 12 8 action_required3 planned_next1 accepted CVE / license",
"evidence_refs": ["docs/evaluations/dependency_risk_policy_2026-06-04.json", "GET /api/v1/agents/dependency-risk-policy"],
"next_action": "P1-205 lockfile build image"
},
{
"finding_id": "dependency_drift_check_plan_defined",
"severity": "low",
"status": "accepted",
"summary": "P1-205 5 cadence items5 repo-only local checks10 ",
"evidence_refs": ["docs/evaluations/dependency_drift_check_plan_2026-06-04.json", "GET /api/v1/agents/dependency-drift-check-plan"],
"next_action": "P1-206 digest pinpublish boundary "
},
{
"finding_id": "dependency_upgrade_approval_package_template_defined",
"severity": "low",
"status": "accepted",
"summary": "P1-206 digest pinpublish boundary 8 OpenClaw HITL",
"evidence_refs": ["docs/evaluations/dependency_upgrade_approval_package_template_2026-06-04.json", "GET /api/v1/agents/dependency-upgrade-approval-package-template"],
"next_action": "WS5 100% P1-103 "
}
],
"operation_boundaries": {
"read_only_api_allowed": true,
"dependency_installation_allowed": false,
"package_upgrade_allowed": false,
"lockfile_write_allowed": false,
"external_cve_lookup_allowed": false,
"image_rebuild_allowed": false,
"production_routing_allowed": false
},
"approval_boundaries": {
"sdk_installation_allowed": false,
"paid_api_call_allowed": false,
"shadow_or_canary_allowed": false,
"production_routing_allowed": false,
"destructive_operation_allowed": false
}
}