avorelo 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +56 -0
- package/bin/avorelo +9 -0
- package/package.json +135 -0
- package/scripts/README.md +40 -0
- package/scripts/cco-dashboard.js +252 -0
- package/scripts/cco-status.js +430 -0
- package/scripts/lib/activation/account-state.js +37 -0
- package/scripts/lib/activation/activation-runner.js +546 -0
- package/scripts/lib/activation/activation-self-healing.js +480 -0
- package/scripts/lib/activation/activation-state.js +83 -0
- package/scripts/lib/activation/activation-summary.js +191 -0
- package/scripts/lib/activation/adapters/claude-code.js +77 -0
- package/scripts/lib/activation/adapters/codex-cli.js +52 -0
- package/scripts/lib/activation/adapters/cursor.js +37 -0
- package/scripts/lib/activation/adapters/github-agent.js +39 -0
- package/scripts/lib/activation/adapters/terminal.js +42 -0
- package/scripts/lib/activation/adapters/vscode.js +39 -0
- package/scripts/lib/activation/adapters/windsurf.js +37 -0
- package/scripts/lib/activation/ai-surface-detector.js +151 -0
- package/scripts/lib/activation/connect-account.js +145 -0
- package/scripts/lib/activation/detect-environment.js +75 -0
- package/scripts/lib/activation/detect-hosts.js +62 -0
- package/scripts/lib/activation/format-activation-output.js +109 -0
- package/scripts/lib/activation/next-action.js +43 -0
- package/scripts/lib/activation/repair-engine.js +219 -0
- package/scripts/lib/activation-distribution-readiness.js +507 -0
- package/scripts/lib/adapter-conformance.js +176 -0
- package/scripts/lib/adapter-readiness.js +417 -0
- package/scripts/lib/adapter-safety-boundaries.js +335 -0
- package/scripts/lib/adapter-technical-readiness-gate.js +205 -0
- package/scripts/lib/agent-access-governance.js +455 -0
- package/scripts/lib/agent-enforcement.js +765 -0
- package/scripts/lib/agent-policy-profile.js +210 -0
- package/scripts/lib/agent-security/action-evaluator.js +507 -0
- package/scripts/lib/agent-security/adapter-registry.js +98 -0
- package/scripts/lib/agent-security/auto-policy.js +139 -0
- package/scripts/lib/agent-security/bounded-scan.js +93 -0
- package/scripts/lib/agent-security/enforcement-adapter.js +174 -0
- package/scripts/lib/agent-security/enforcement-engine.js +1129 -0
- package/scripts/lib/agent-security/file-write-adapter.js +183 -0
- package/scripts/lib/agent-security/file-write-rules.js +178 -0
- package/scripts/lib/agent-security/index.js +3342 -0
- package/scripts/lib/agent-security/instruction-risk.js +181 -0
- package/scripts/lib/agent-security/mcp-action-adapter.js +185 -0
- package/scripts/lib/agent-security/mcp-action-rules.js +184 -0
- package/scripts/lib/agent-security/package-action-adapter.js +175 -0
- package/scripts/lib/agent-security/package-action-rules.js +233 -0
- package/scripts/lib/agent-security/performance.js +148 -0
- package/scripts/lib/agent-security/permission-minimizer.js +403 -0
- package/scripts/lib/agent-security/scan-cache.js +74 -0
- package/scripts/lib/agent-security/source-trust.js +146 -0
- package/scripts/lib/ai-install-prompt.js +288 -0
- package/scripts/lib/ai-workspace-hygiene.js +1499 -0
- package/scripts/lib/alpha-activation.js +520 -0
- package/scripts/lib/alpha-feedback.js +263 -0
- package/scripts/lib/alpha-readiness-gate.js +332 -0
- package/scripts/lib/anti-gaming.js +169 -0
- package/scripts/lib/artifact-health.js +431 -0
- package/scripts/lib/attribution.js +180 -0
- package/scripts/lib/audit.js +289 -0
- package/scripts/lib/avorelo-skill-registry.js +810 -0
- package/scripts/lib/batch-jobs.js +71 -0
- package/scripts/lib/brain-pack.js +578 -0
- package/scripts/lib/brand-boundary.js +424 -0
- package/scripts/lib/brand.js +74 -0
- package/scripts/lib/browser-capability.js +1048 -0
- package/scripts/lib/browser-proof-preflight.js +321 -0
- package/scripts/lib/cache-readiness.js +187 -0
- package/scripts/lib/canonical-reentry.js +162 -0
- package/scripts/lib/capability-packs.js +314 -0
- package/scripts/lib/capability-recommender.js +512 -0
- package/scripts/lib/capability-registry.js +1059 -0
- package/scripts/lib/carry-forward-surfacing.js +194 -0
- package/scripts/lib/ccusage-adapter.js +188 -0
- package/scripts/lib/company-loop.js +1149 -0
- package/scripts/lib/config.js +637 -0
- package/scripts/lib/context-acquisition-plan.js +287 -0
- package/scripts/lib/context-budget-guard.js +170 -0
- package/scripts/lib/context-budget-scanner.js +257 -0
- package/scripts/lib/context-optimizer.js +715 -0
- package/scripts/lib/context-reduction-plan.js +178 -0
- package/scripts/lib/context-safety.js +88 -0
- package/scripts/lib/context-savings-engine.js +158 -0
- package/scripts/lib/cost-evidence.js +254 -0
- package/scripts/lib/cross-host-install-plan.js +308 -0
- package/scripts/lib/cross-host-install-readiness.js +237 -0
- package/scripts/lib/cross-host-value-flow.js +268 -0
- package/scripts/lib/dashboard.js +900 -0
- package/scripts/lib/design-partner-feedback.js +346 -0
- package/scripts/lib/entitlements.js +100 -0
- package/scripts/lib/execution-packet.js +559 -0
- package/scripts/lib/experimentation-events.js +547 -0
- package/scripts/lib/external-capability-compliance.js +107 -0
- package/scripts/lib/external-user-simulation.js +166 -0
- package/scripts/lib/failure-recovery-readiness.js +81 -0
- package/scripts/lib/failure-recovery.js +419 -0
- package/scripts/lib/feedback-intelligence.js +537 -0
- package/scripts/lib/feedback-signals.js +205 -0
- package/scripts/lib/file-integrity.js +68 -0
- package/scripts/lib/fsx.js +127 -0
- package/scripts/lib/full-readiness-gate.js +451 -0
- package/scripts/lib/guidance-builder.js +174 -0
- package/scripts/lib/hook-apply.js +1019 -0
- package/scripts/lib/hook-baseline.js +310 -0
- package/scripts/lib/hook-config-preview.js +275 -0
- package/scripts/lib/hook-contracts.js +290 -0
- package/scripts/lib/hook-safety-boundary-readiness.js +80 -0
- package/scripts/lib/host-capability-matrix.js +351 -0
- package/scripts/lib/host-support-context.js +254 -0
- package/scripts/lib/http-hook-action.js +538 -0
- package/scripts/lib/install-ai-readiness.js +84 -0
- package/scripts/lib/install-intake-risk.js +1037 -0
- package/scripts/lib/install-journey-intelligence.js +329 -0
- package/scripts/lib/intervention-guidance.js +57 -0
- package/scripts/lib/known-limitations.js +115 -0
- package/scripts/lib/l8-path-truth.js +146 -0
- package/scripts/lib/launch-hardening-gate.js +436 -0
- package/scripts/lib/launch-readiness.js +628 -0
- package/scripts/lib/learning-memory.js +686 -0
- package/scripts/lib/lifecycle-hooks.js +802 -0
- package/scripts/lib/local-package-smoke.js +423 -0
- package/scripts/lib/local-pricing.js +299 -0
- package/scripts/lib/mcp-enforcement.js +311 -0
- package/scripts/lib/mcp-least-privilege-policy.js +303 -0
- package/scripts/lib/mcp-tool-inventory.js +388 -0
- package/scripts/lib/mcp-tool-risk.js +0 -0
- package/scripts/lib/memory.js +335 -0
- package/scripts/lib/metrics.js +699 -0
- package/scripts/lib/micro-proof.js +133 -0
- package/scripts/lib/next-run-context.js +436 -0
- package/scripts/lib/operating-value.js +1648 -0
- package/scripts/lib/optimization-v3.js +122 -0
- package/scripts/lib/orchestration/adapters/_shared.js +49 -0
- package/scripts/lib/orchestration/adapters/aider.js +18 -0
- package/scripts/lib/orchestration/adapters/claude-code.js +35 -0
- package/scripts/lib/orchestration/adapters/codex.js +35 -0
- package/scripts/lib/orchestration/adapters/gemini-cli.js +18 -0
- package/scripts/lib/orchestration/adapters/git.js +25 -0
- package/scripts/lib/orchestration/adapters/index.js +31 -0
- package/scripts/lib/orchestration/adapters/lm-studio.js +18 -0
- package/scripts/lib/orchestration/adapters/ollama.js +18 -0
- package/scripts/lib/orchestration/adapters/opencode.js +18 -0
- package/scripts/lib/orchestration/adapters/openrouter.js +18 -0
- package/scripts/lib/orchestration/adapters/test-runner.js +25 -0
- package/scripts/lib/orchestration/cli.js +438 -0
- package/scripts/lib/orchestration/execution-manager.js +279 -0
- package/scripts/lib/orchestration/handoff.js +314 -0
- package/scripts/lib/orchestration/index.js +456 -0
- package/scripts/lib/orchestration/inventory.js +47 -0
- package/scripts/lib/orchestration/model-discovery.js +498 -0
- package/scripts/lib/orchestration/model-profiler.js +170 -0
- package/scripts/lib/orchestration/model-profiles.js +252 -0
- package/scripts/lib/orchestration/model-refresh-policy.js +72 -0
- package/scripts/lib/orchestration/proof-writer.js +349 -0
- package/scripts/lib/orchestration/provider-discovery/aider.js +49 -0
- package/scripts/lib/orchestration/provider-discovery/claude-code.js +56 -0
- package/scripts/lib/orchestration/provider-discovery/codex.js +49 -0
- package/scripts/lib/orchestration/provider-discovery/common.js +186 -0
- package/scripts/lib/orchestration/provider-discovery/gemini.js +106 -0
- package/scripts/lib/orchestration/provider-discovery/lm-studio.js +118 -0
- package/scripts/lib/orchestration/provider-discovery/models-dev.js +12 -0
- package/scripts/lib/orchestration/provider-discovery/ollama.js +100 -0
- package/scripts/lib/orchestration/provider-discovery/opencode.js +47 -0
- package/scripts/lib/orchestration/provider-discovery/openrouter.js +44 -0
- package/scripts/lib/orchestration/risk-classifier.js +130 -0
- package/scripts/lib/orchestration/routing-policy.js +486 -0
- package/scripts/lib/orchestration/settings.js +112 -0
- package/scripts/lib/orchestration/state.js +165 -0
- package/scripts/lib/orchestration/verification-manager.js +138 -0
- package/scripts/lib/output-profiles.js +146 -0
- package/scripts/lib/package-content-audit.js +368 -0
- package/scripts/lib/package-runtime.js +278 -0
- package/scripts/lib/plan-surface.js +53 -0
- package/scripts/lib/plans.js +2318 -0
- package/scripts/lib/policy-provider.js +27 -0
- package/scripts/lib/prelaunch-activation-readiness.js +409 -0
- package/scripts/lib/prelaunch-evidence-store.js +816 -0
- package/scripts/lib/prelaunch-intelligence.js +869 -0
- package/scripts/lib/pricing-experiment.js +118 -0
- package/scripts/lib/pro-moment-events.js +77 -0
- package/scripts/lib/pro-moment-state.js +227 -0
- package/scripts/lib/pro-moments.js +1216 -0
- package/scripts/lib/product-learning-events.js +629 -0
- package/scripts/lib/project-profile.js +555 -0
- package/scripts/lib/prompt-compiler.js +280 -0
- package/scripts/lib/prompt-lint.js +32 -0
- package/scripts/lib/prompt-suggestions.js +52 -0
- package/scripts/lib/proof-canonical.js +398 -0
- package/scripts/lib/proof-drilldown.js +383 -0
- package/scripts/lib/proof-events.js +342 -0
- package/scripts/lib/proof-history.js +243 -0
- package/scripts/lib/proof-metrics.js +296 -0
- package/scripts/lib/proof-outcome-evidence.js +134 -0
- package/scripts/lib/proof-receipt.js +335 -0
- package/scripts/lib/proof-record.js +461 -0
- package/scripts/lib/public-activation-distribution-gate.js +258 -0
- package/scripts/lib/public-cli.js +3891 -0
- package/scripts/lib/public-distribution-truth.js +211 -0
- package/scripts/lib/public-install-claim-checker.js +294 -0
- package/scripts/lib/publish-provenance-readiness.js +283 -0
- package/scripts/lib/readiness-delta.js +218 -0
- package/scripts/lib/readiness-evidence-closure.js +196 -0
- package/scripts/lib/reentry-memory-capture.js +241 -0
- package/scripts/lib/reentry-memory-retrieval.js +302 -0
- package/scripts/lib/reentry-memory-status.js +146 -0
- package/scripts/lib/reentry-memory-store.js +178 -0
- package/scripts/lib/reentry-state.js +66 -0
- package/scripts/lib/release-candidate-bundle.js +166 -0
- package/scripts/lib/remediation.js +81 -0
- package/scripts/lib/repo-map.js +391 -0
- package/scripts/lib/run-improvements-lifecycle.js +330 -0
- package/scripts/lib/run-improvements.js +789 -0
- package/scripts/lib/runtime-decision-policy.js +387 -0
- package/scripts/lib/safe-path-engine.js +705 -0
- package/scripts/lib/safe-run-controller.js +887 -0
- package/scripts/lib/score.js +262 -0
- package/scripts/lib/seamless-enforcement.js +329 -0
- package/scripts/lib/seamless-outcome.js +689 -0
- package/scripts/lib/seamless-reality-gate.js +5043 -0
- package/scripts/lib/security-risk-classifier.js +511 -0
- package/scripts/lib/security-scan.js +384 -0
- package/scripts/lib/session-context-optimizer.js +1211 -0
- package/scripts/lib/session-timing.js +315 -0
- package/scripts/lib/skill-hygiene.js +805 -0
- package/scripts/lib/skill-packs.js +161 -0
- package/scripts/lib/skills-operating-layer.js +580 -0
- package/scripts/lib/smart-work-routing.js +768 -0
- package/scripts/lib/source-catalog.js +700 -0
- package/scripts/lib/status-value-summary.js +32 -0
- package/scripts/lib/support-bundle.js +578 -0
- package/scripts/lib/task-continuation.js +440 -0
- package/scripts/lib/test-helpers.js +15 -0
- package/scripts/lib/tier.js +38 -0
- package/scripts/lib/token-context-quality-gate.js +370 -0
- package/scripts/lib/token-cost-capture.js +187 -0
- package/scripts/lib/token-cost-intelligence.js +358 -0
- package/scripts/lib/token-efficiency-evidence.js +213 -0
- package/scripts/lib/token-evidence.js +699 -0
- package/scripts/lib/tokenish.js +17 -0
- package/scripts/lib/tool-output-sandbox.js +304 -0
- package/scripts/lib/trust-audit.js +136 -0
- package/scripts/lib/unified-events.js +396 -0
- package/scripts/lib/upgrade-interruption-recovery.js +407 -0
- package/scripts/lib/usage-ledger.js +201 -0
- package/scripts/lib/value-ledger.js +130 -0
- package/scripts/lib/value-proof-calibration.js +531 -0
- package/scripts/lib/visual-qa.js +231 -0
- package/scripts/lib/voice-alpha.js +29 -0
- package/scripts/lib/work-aware-orchestration.js +976 -0
- package/scripts/lib/work-control-receipts.js +577 -0
- package/scripts/lib/work-ledger.js +1123 -0
- package/scripts/lib/work-panel-preview.js +352 -0
- package/scripts/lib/workflow-discipline.js +280 -0
- package/scripts/lib/workflow-signals.js +419 -0
- package/scripts/lib/workspace-map.js +281 -0
- package/scripts/lib/workspace-registry.js +1367 -0
- package/scripts/lib/workspace-resolver.js +480 -0
|
@@ -0,0 +1,1059 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const { CAPABILITIES } = require("./plans");
|
|
4
|
+
|
|
5
|
+
const VALID_FAMILY_IDS = new Set([
|
|
6
|
+
"activation_readiness",
|
|
7
|
+
"status_dashboard",
|
|
8
|
+
"prompt_workflow_help",
|
|
9
|
+
"context_token_cost_optimization",
|
|
10
|
+
"model_worker_routing",
|
|
11
|
+
"execution_work_control",
|
|
12
|
+
"agent_security",
|
|
13
|
+
"agent_access_governance",
|
|
14
|
+
"install_intake_risk",
|
|
15
|
+
"safe_path_engine",
|
|
16
|
+
"workspace_map",
|
|
17
|
+
"skills_skill_packs",
|
|
18
|
+
"source_intake",
|
|
19
|
+
"thin_adapters",
|
|
20
|
+
"product_learning",
|
|
21
|
+
"proof_evidence",
|
|
22
|
+
"pricing_entitlements",
|
|
23
|
+
"website_onboarding",
|
|
24
|
+
"frontend_visual_qa",
|
|
25
|
+
"ai_workspace_hygiene",
|
|
26
|
+
"execution_packet",
|
|
27
|
+
"lifecycle_hooks",
|
|
28
|
+
"token_efficiency_hardening",
|
|
29
|
+
"launch_hardening",
|
|
30
|
+
"failure_recovery_hardening",
|
|
31
|
+
"artifact_health_monitoring",
|
|
32
|
+
// PR #145 — MCP Least-Privilege Tool Governance v1
|
|
33
|
+
"mcp_tool_governance",
|
|
34
|
+
// PR #146 — One-Prompt AI Install + Pre-Launch Activation Readiness v1
|
|
35
|
+
"ai_install_onboarding",
|
|
36
|
+
"prelaunch_activation_readiness",
|
|
37
|
+
// PR #147 — Pre-Launch Intelligence Layer v1
|
|
38
|
+
"prelaunch_intelligence",
|
|
39
|
+
// PR #148 — Full Readiness / Release Candidate Gate v1
|
|
40
|
+
"full_readiness_gate",
|
|
41
|
+
// PR #149 — Activation Distribution Readiness v1
|
|
42
|
+
"activation_distribution_readiness",
|
|
43
|
+
// PR #160 — Design Partner Feedback + Readiness Delta v1
|
|
44
|
+
"design_partner_feedback",
|
|
45
|
+
"readiness_delta",
|
|
46
|
+
// PR #161 — Public Activation Distribution Truth v1
|
|
47
|
+
"public_distribution",
|
|
48
|
+
// PR #162 — Plugin / Adapter Technical Readiness v1
|
|
49
|
+
"adapter_technical_readiness",
|
|
50
|
+
// PR #163 — Cross-Host Install Plan + Browser-Proof Preflight v1
|
|
51
|
+
"cross_host_adapter_readiness",
|
|
52
|
+
]);
|
|
53
|
+
|
|
54
|
+
const VALID_PRODUCT_STATUSES = new Set([
|
|
55
|
+
"shipped",
|
|
56
|
+
"partial",
|
|
57
|
+
"foundation",
|
|
58
|
+
"docs_only",
|
|
59
|
+
"gap",
|
|
60
|
+
]);
|
|
61
|
+
|
|
62
|
+
const VALID_STRENGTHS = new Set(["strong", "partial", "weak", "missing"]);
|
|
63
|
+
const VALID_SURFACE_TYPES = new Set(["policy", "detection", "warning", "evidence", "docs_only", "block", "approval"]);
|
|
64
|
+
|
|
65
|
+
const FAMILY_OVERRIDES = Object.freeze({
|
|
66
|
+
local_activation: "activation_readiness",
|
|
67
|
+
ai_coding_readiness: "activation_readiness",
|
|
68
|
+
dynamic_skill_pack_selection: "skills_skill_packs",
|
|
69
|
+
reference_source_intake_basic: "source_intake",
|
|
70
|
+
skill_md_parser_basic: "skills_skill_packs",
|
|
71
|
+
skill_pattern_extraction_basic: "skills_skill_packs",
|
|
72
|
+
skill_trust_scan_basic: "source_intake",
|
|
73
|
+
capability_binding_basic: "skills_skill_packs",
|
|
74
|
+
source_backed_skill_router_basic: "skills_skill_packs",
|
|
75
|
+
thin_adapter_guidance_sync_basic: "thin_adapters",
|
|
76
|
+
install_intake_risk_basic: "install_intake_risk",
|
|
77
|
+
mcp_intake_visibility_basic: "install_intake_risk",
|
|
78
|
+
package_intake_visibility_basic: "install_intake_risk",
|
|
79
|
+
extension_intake_visibility_basic: "install_intake_risk",
|
|
80
|
+
connector_intake_visibility_basic: "install_intake_risk",
|
|
81
|
+
skill_source_intake_risk_basic: "install_intake_risk",
|
|
82
|
+
intake_safe_next_action_basic: "install_intake_risk",
|
|
83
|
+
intake_receipt_basic: "install_intake_risk",
|
|
84
|
+
workspace_map_basic: "workspace_map",
|
|
85
|
+
approval_required_decisions: "agent_access_governance",
|
|
86
|
+
least_privilege_profile: "agent_access_governance",
|
|
87
|
+
zero_standing_permissions_posture: "agent_access_governance",
|
|
88
|
+
scoped_jit_style_access: "agent_access_governance",
|
|
89
|
+
zero_standing_permissions_policy: "agent_access_governance",
|
|
90
|
+
safe_path_recommendation_basic: "safe_path_engine",
|
|
91
|
+
least_privilege_scope_reduction_basic: "safe_path_engine",
|
|
92
|
+
jit_temporary_scope_fields_basic: "safe_path_engine",
|
|
93
|
+
approval_boundary_safe_path_basic: "safe_path_engine",
|
|
94
|
+
safe_path_receipt_basic: "safe_path_engine",
|
|
95
|
+
skill_route_context_safety_basic: "safe_path_engine",
|
|
96
|
+
// Seamless Activation + Self-Healing Setup v1
|
|
97
|
+
seamless_activation_basic: "activation_readiness",
|
|
98
|
+
self_healing_setup_basic: "activation_readiness",
|
|
99
|
+
activation_repair_loop_basic: "activation_readiness",
|
|
100
|
+
activation_model_routing_detection_basic: "activation_readiness",
|
|
101
|
+
activation_dashboard_ready_basic: "activation_readiness",
|
|
102
|
+
activation_agent_repair_plan_basic: "activation_readiness",
|
|
103
|
+
// Skill Hygiene & Routing Guard v1
|
|
104
|
+
skill_hygiene_basic: "skills_skill_packs",
|
|
105
|
+
skill_duplicate_activation_guard_basic: "skills_skill_packs",
|
|
106
|
+
skill_shadow_contribution_basic: "skills_skill_packs",
|
|
107
|
+
skill_conflict_guard_basic: "skills_skill_packs",
|
|
108
|
+
skill_context_hygiene_basic: "context_token_cost_optimization",
|
|
109
|
+
skill_security_hygiene_basic: "agent_security",
|
|
110
|
+
skill_route_hygiene_basic: "skills_skill_packs",
|
|
111
|
+
skill_intake_check_basic: "source_intake",
|
|
112
|
+
// Prompt / Context / Token Optimization Foundation v1
|
|
113
|
+
prompt_context_pack_basic: "context_token_cost_optimization",
|
|
114
|
+
stage_context_budget_basic: "context_token_cost_optimization",
|
|
115
|
+
token_budget_estimation_basic: "context_token_cost_optimization",
|
|
116
|
+
context_compaction_basic: "context_token_cost_optimization",
|
|
117
|
+
local_worker_context_boundary_basic: "context_token_cost_optimization",
|
|
118
|
+
handoff_context_pack_basic: "context_token_cost_optimization",
|
|
119
|
+
skill_context_lazy_loading_basic: "context_token_cost_optimization",
|
|
120
|
+
no_secrets_context_boundary_basic: "context_token_cost_optimization",
|
|
121
|
+
context_optimization_receipt_basic: "proof_evidence",
|
|
122
|
+
context_product_learning_basic: "product_learning",
|
|
123
|
+
// Measurement Evidence Foundation v1
|
|
124
|
+
dogfood_reality_gate_basic: "proof_evidence",
|
|
125
|
+
launch_ready_journey_dogfood_basic: "proof_evidence",
|
|
126
|
+
local_pricing_source_basic: "context_token_cost_optimization",
|
|
127
|
+
token_evidence_basic: "context_token_cost_optimization",
|
|
128
|
+
session_timing_evidence_basic: "context_token_cost_optimization",
|
|
129
|
+
cost_evidence_basic: "context_token_cost_optimization",
|
|
130
|
+
measurement_evidence_foundation_basic: "context_token_cost_optimization",
|
|
131
|
+
cost_overclaim_guard_basic: "proof_evidence",
|
|
132
|
+
// Task-Specific Continuation + Value Evidence Hardening v1
|
|
133
|
+
task_specific_continuation_basic: "agent_security",
|
|
134
|
+
task_specific_safe_next_action_basic: "agent_security",
|
|
135
|
+
value_evidence_collection_basic: "proof_evidence",
|
|
136
|
+
evidence_backed_value_summary_basic: "proof_evidence",
|
|
137
|
+
command_value_summary_autowrite_basic: "proof_evidence",
|
|
138
|
+
seamless_continuation_reality_gate_basic: "proof_evidence",
|
|
139
|
+
// AI Workspace Hygiene + Capability Registry v1
|
|
140
|
+
ai_workspace_hygiene_basic: "ai_workspace_hygiene",
|
|
141
|
+
ai_workspace_asset_inventory_basic: "ai_workspace_hygiene",
|
|
142
|
+
capability_registry_metadata_basic: "ai_workspace_hygiene",
|
|
143
|
+
workspace_skill_hygiene_basic: "ai_workspace_hygiene",
|
|
144
|
+
instruction_surface_hygiene_basic: "ai_workspace_hygiene",
|
|
145
|
+
mcp_workspace_visibility_basic: "ai_workspace_hygiene",
|
|
146
|
+
hook_surface_visibility_basic: "ai_workspace_hygiene",
|
|
147
|
+
package_script_hygiene_basic: "ai_workspace_hygiene",
|
|
148
|
+
orchestration_ready_capability_metadata_basic: "ai_workspace_hygiene",
|
|
149
|
+
// Work-Aware Orchestration + Workspace Relevance v1
|
|
150
|
+
work_aware_orchestration_basic: "model_worker_routing",
|
|
151
|
+
stage_based_work_plan_basic: "model_worker_routing",
|
|
152
|
+
stage_based_worker_selection_basic: "model_worker_routing",
|
|
153
|
+
workspace_relevance_context_selection_basic: "context_token_cost_optimization",
|
|
154
|
+
stage_aware_handoff_basic: "proof_evidence",
|
|
155
|
+
orchestration_value_evidence_basic: "proof_evidence",
|
|
156
|
+
// AI-Native Company Loop + Unified Work Ledger v1
|
|
157
|
+
work_ledger_basic: "proof_evidence",
|
|
158
|
+
ai_native_company_loop_basic: "proof_evidence",
|
|
159
|
+
internal_persona_review_basic: "proof_evidence",
|
|
160
|
+
dogfood_friction_clustering_basic: "proof_evidence",
|
|
161
|
+
feedback_signal_schema_basic: "proof_evidence",
|
|
162
|
+
next_pr_recommendation_basic: "proof_evidence",
|
|
163
|
+
cost_cogs_quality_rollup_basic: "proof_evidence",
|
|
164
|
+
// Execution Packet + Project Profile + Work Panel Preview v1
|
|
165
|
+
project_profile_detection_basic: "execution_packet",
|
|
166
|
+
execution_packet_basic: "execution_packet",
|
|
167
|
+
execution_packet_scope_boundaries_basic: "execution_packet",
|
|
168
|
+
agent_prompt_compiler_basic: "execution_packet",
|
|
169
|
+
work_panel_preview_basic: "execution_packet",
|
|
170
|
+
proof_requirements_packet_basic: "proof_evidence",
|
|
171
|
+
diff_before_write_policy_basic: "execution_packet",
|
|
172
|
+
// Seamless Smart Work Routing + Worker Handoff v1
|
|
173
|
+
smart_route_hook_binding_basic: "lifecycle_hooks",
|
|
174
|
+
execution_packet_hook_binding_basic: "lifecycle_hooks",
|
|
175
|
+
safe_run_hook_binding_basic: "lifecycle_hooks",
|
|
176
|
+
// Hook Baseline + Lifecycle Automation Preview v1
|
|
177
|
+
hook_baseline_registry_basic: "lifecycle_hooks",
|
|
178
|
+
adapter_readiness_basic: "lifecycle_hooks",
|
|
179
|
+
hook_config_preview_basic: "lifecycle_hooks",
|
|
180
|
+
lifecycle_hook_handler_basic: "lifecycle_hooks",
|
|
181
|
+
pre_tool_use_guard_mapping_basic: "lifecycle_hooks",
|
|
182
|
+
post_tool_use_ledger_mapping_basic: "lifecycle_hooks",
|
|
183
|
+
stop_proof_gate_mapping_basic: "lifecycle_hooks",
|
|
184
|
+
session_end_summary_handoff_mapping_basic: "lifecycle_hooks",
|
|
185
|
+
// PR #141 — Explicit Hook Apply + Lifecycle Live v1
|
|
186
|
+
explicit_hook_apply_basic: "lifecycle_hooks",
|
|
187
|
+
hook_apply_dry_run_basic: "lifecycle_hooks",
|
|
188
|
+
hook_config_backup_basic: "lifecycle_hooks",
|
|
189
|
+
hook_apply_validation_basic: "lifecycle_hooks",
|
|
190
|
+
hook_rollback_basic: "lifecycle_hooks",
|
|
191
|
+
hook_uninstall_basic: "lifecycle_hooks",
|
|
192
|
+
hook_doctor_basic: "lifecycle_hooks",
|
|
193
|
+
hook_recursion_guard_basic: "lifecycle_hooks",
|
|
194
|
+
lifecycle_live_smoke_basic: "lifecycle_hooks",
|
|
195
|
+
e2e_value_dogfood_gate_basic: "proof_evidence",
|
|
196
|
+
// PR #142 — Activation Alpha Readiness + First Value v1
|
|
197
|
+
alpha_activation_basic: "activation_readiness",
|
|
198
|
+
first_value_path_basic: "activation_readiness",
|
|
199
|
+
alpha_readiness_gate_basic: "activation_readiness",
|
|
200
|
+
local_feedback_capture_basic: "proof_evidence",
|
|
201
|
+
support_bundle_basic: "proof_evidence",
|
|
202
|
+
activation_company_loop_integration_basic: "proof_evidence",
|
|
203
|
+
e2e_value_dogfood_gate_basic_pr142: "proof_evidence",
|
|
204
|
+
// PR #143 — Token Efficiency + Context Quality Hardening v1
|
|
205
|
+
tool_output_sandbox_basic: "token_efficiency_hardening",
|
|
206
|
+
tool_output_budget_basic: "token_efficiency_hardening",
|
|
207
|
+
repo_map_basic: "token_efficiency_hardening",
|
|
208
|
+
symbol_map_basic: "token_efficiency_hardening",
|
|
209
|
+
context_acquisition_plan_basic: "token_efficiency_hardening",
|
|
210
|
+
token_count_tree_basic: "token_efficiency_hardening",
|
|
211
|
+
token_efficiency_evidence_basic: "token_efficiency_hardening",
|
|
212
|
+
context_quality_gate_basic: "token_efficiency_hardening",
|
|
213
|
+
cache_readiness_checker_basic: "token_efficiency_hardening",
|
|
214
|
+
compact_output_policy_basic: "token_efficiency_hardening",
|
|
215
|
+
// PR #144 — Launch Hardening + Failure Recovery v1
|
|
216
|
+
launch_hardening_gate_basic: "launch_hardening",
|
|
217
|
+
failure_recovery_taxonomy_basic: "failure_recovery_hardening",
|
|
218
|
+
doctor_recovery_basic: "failure_recovery_hardening",
|
|
219
|
+
artifact_health_basic: "artifact_health_monitoring",
|
|
220
|
+
artifact_cleanup_basic: "artifact_health_monitoring",
|
|
221
|
+
support_bundle_hardening_basic: "proof_evidence",
|
|
222
|
+
cross_platform_sanity_basic: "launch_hardening",
|
|
223
|
+
non_interactive_ci_mode_basic: "launch_hardening",
|
|
224
|
+
e2e_launch_hardening_dogfood_basic: "proof_evidence",
|
|
225
|
+
// PR #145 — MCP Least-Privilege Tool Governance v1
|
|
226
|
+
mcp_tool_inventory_basic: "mcp_tool_governance",
|
|
227
|
+
mcp_tool_risk_classification_basic: "mcp_tool_governance",
|
|
228
|
+
mcp_least_privilege_policy_basic: "mcp_tool_governance",
|
|
229
|
+
mcp_config_preview_basic: "mcp_tool_governance",
|
|
230
|
+
mcp_pre_tool_use_enforcement_basic: "mcp_tool_governance",
|
|
231
|
+
mcp_metadata_safety_scan_basic: "mcp_tool_governance",
|
|
232
|
+
mcp_support_bundle_redaction_basic: "proof_evidence",
|
|
233
|
+
e2e_mcp_risk_dogfood_basic: "proof_evidence",
|
|
234
|
+
// PR #146 — One-Prompt AI Install + Pre-Launch Activation Readiness v1
|
|
235
|
+
ai_install_prompt_basic: "ai_install_onboarding",
|
|
236
|
+
one_prompt_install_basic: "ai_install_onboarding",
|
|
237
|
+
ai_install_safety_boundaries_basic: "ai_install_onboarding",
|
|
238
|
+
ai_install_support_bundle_integration_basic: "ai_install_onboarding",
|
|
239
|
+
prelaunch_activation_readiness_basic: "prelaunch_activation_readiness",
|
|
240
|
+
first_value_journey_basic: "prelaunch_activation_readiness",
|
|
241
|
+
e2e_ai_install_dogfood_basic: "proof_evidence",
|
|
242
|
+
// PR #147 — Pre-Launch Intelligence Layer v1
|
|
243
|
+
prelaunch_intelligence_basic: "prelaunch_intelligence",
|
|
244
|
+
feedback_intelligence_basic: "prelaunch_intelligence",
|
|
245
|
+
friction_clustering_basic: "prelaunch_intelligence",
|
|
246
|
+
token_cost_intelligence_basic: "prelaunch_intelligence",
|
|
247
|
+
install_journey_intelligence_basic: "prelaunch_intelligence",
|
|
248
|
+
company_loop_prelaunch_signal_integration_basic: "prelaunch_intelligence",
|
|
249
|
+
support_bundle_prompt_readiness_summary_basic: "prelaunch_intelligence",
|
|
250
|
+
e2e_prelaunch_intelligence_dogfood_basic: "proof_evidence",
|
|
251
|
+
// PR #148 — Full Readiness / Release Candidate Gate v1
|
|
252
|
+
full_readiness_gate_basic: "full_readiness_gate",
|
|
253
|
+
readiness_evidence_closure_basic: "full_readiness_gate",
|
|
254
|
+
known_limitations_register_basic: "full_readiness_gate",
|
|
255
|
+
external_user_simulation_basic: "full_readiness_gate",
|
|
256
|
+
release_candidate_bundle_basic: "full_readiness_gate",
|
|
257
|
+
company_loop_readiness_recommendation_basic: "full_readiness_gate",
|
|
258
|
+
e2e_full_readiness_dogfood_basic: "proof_evidence",
|
|
259
|
+
// PR #149 — Activation Distribution Readiness v1
|
|
260
|
+
activation_distribution_readiness_basic: "activation_distribution_readiness",
|
|
261
|
+
activation_distribution_install_check_basic: "activation_distribution_readiness",
|
|
262
|
+
activation_distribution_recovery_check_basic: "activation_distribution_readiness",
|
|
263
|
+
activation_distribution_first_value_check_basic: "activation_distribution_readiness",
|
|
264
|
+
activation_distribution_no_public_launch_check_basic: "activation_distribution_readiness",
|
|
265
|
+
// PR #160 — Design Partner Feedback + Readiness Delta v1
|
|
266
|
+
design_partner_feedback_session_basic: "design_partner_feedback",
|
|
267
|
+
design_partner_feedback_import_basic: "design_partner_feedback",
|
|
268
|
+
design_partner_feedback_summary_basic: "design_partner_feedback",
|
|
269
|
+
design_partner_feedback_pack_basic: "design_partner_feedback",
|
|
270
|
+
design_partner_no_public_launch_check_basic: "design_partner_feedback",
|
|
271
|
+
readiness_delta_basic: "readiness_delta",
|
|
272
|
+
readiness_delta_score_movement_basic: "readiness_delta",
|
|
273
|
+
// PR #161 — Public Activation Distribution Truth v1
|
|
274
|
+
public_distribution_truth_basic: "public_distribution",
|
|
275
|
+
package_content_audit_basic: "public_distribution",
|
|
276
|
+
local_package_smoke_basic: "public_distribution",
|
|
277
|
+
public_install_claim_check_basic: "public_distribution",
|
|
278
|
+
publish_provenance_readiness_basic: "public_distribution",
|
|
279
|
+
public_activation_distribution_gate_basic: "public_distribution",
|
|
280
|
+
package_bin_truth_basic: "public_distribution",
|
|
281
|
+
pack_content_safety_basic: "public_distribution",
|
|
282
|
+
e2e_public_distribution_dogfood_basic: "proof_evidence",
|
|
283
|
+
// PR #162 — Plugin / Adapter Technical Readiness v1
|
|
284
|
+
host_capability_matrix_basic: "adapter_technical_readiness",
|
|
285
|
+
cross_host_install_readiness_basic: "adapter_technical_readiness",
|
|
286
|
+
cross_host_value_flow_basic: "adapter_technical_readiness",
|
|
287
|
+
adapter_safety_boundaries_basic: "adapter_technical_readiness",
|
|
288
|
+
host_support_context_basic: "adapter_technical_readiness",
|
|
289
|
+
browser_proof_preflight_basic: "adapter_technical_readiness",
|
|
290
|
+
adapter_readiness_technical_gate_basic: "adapter_technical_readiness",
|
|
291
|
+
e2e_adapter_technical_readiness_dogfood_basic: "proof_evidence",
|
|
292
|
+
// PR #163 — Cross-Host Install Plan + Browser-Proof Preflight v1
|
|
293
|
+
cross_host_install_plan_basic: "cross_host_adapter_readiness",
|
|
294
|
+
cross_host_adapter_readiness_surface_basic: "cross_host_adapter_readiness",
|
|
295
|
+
no_works_everywhere_claim_basic: "cross_host_adapter_readiness",
|
|
296
|
+
hooks_approval_cross_host_basic: "cross_host_adapter_readiness",
|
|
297
|
+
mcp_governance_cross_host_basic: "cross_host_adapter_readiness",
|
|
298
|
+
browser_automation_not_required_basic: "cross_host_adapter_readiness",
|
|
299
|
+
cross_host_host_support_context_basic: "cross_host_adapter_readiness",
|
|
300
|
+
e2e_cross_host_adapter_dogfood_basic: "proof_evidence",
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
const EVIDENCE_HINTS = Object.freeze({
|
|
304
|
+
activation_readiness: ".claude/cco/state/",
|
|
305
|
+
prompt_workflow_help: ".claude/cco/state/",
|
|
306
|
+
context_token_cost_optimization: ".claude/cco/state/",
|
|
307
|
+
frontend_visual_qa: ".claude/cco/reports/",
|
|
308
|
+
agent_security: ".claude/cco/security/",
|
|
309
|
+
agent_access_governance: ".claude/cco/security/",
|
|
310
|
+
install_intake_risk: ".claude/cco/security/install-intake/",
|
|
311
|
+
workspace_map: ".claude/cco/state/workspace-map.json",
|
|
312
|
+
skills_skill_packs: "skills/avorelo/",
|
|
313
|
+
proof_evidence: ".claude/cco/receipts/",
|
|
314
|
+
ai_workspace_hygiene: ".claude/cco/orchestration/ai-workspace-hygiene/",
|
|
315
|
+
work_ledger: ".claude/cco/orchestration/work-ledger/",
|
|
316
|
+
company_loop: ".claude/cco/orchestration/company-loop/",
|
|
317
|
+
execution_packet: ".claude/cco/orchestration/execution-packet/",
|
|
318
|
+
lifecycle_hooks: ".claude/cco/orchestration/hook-baseline/",
|
|
319
|
+
token_efficiency_hardening: ".claude/cco/orchestration/token-efficiency/",
|
|
320
|
+
mcp_tool_governance: ".claude/cco/orchestration/mcp-tool-governance/",
|
|
321
|
+
ai_install_onboarding: ".claude/cco/orchestration/ai-install/",
|
|
322
|
+
prelaunch_activation_readiness: ".claude/cco/orchestration/prelaunch-readiness/",
|
|
323
|
+
prelaunch_intelligence: ".claude/cco/orchestration/prelaunch-intelligence/",
|
|
324
|
+
full_readiness_gate: ".claude/cco/orchestration/full-readiness/",
|
|
325
|
+
activation_distribution_readiness: ".claude/cco/orchestration/activation-distribution/",
|
|
326
|
+
design_partner_feedback: ".claude/cco/feedback/design-partner/",
|
|
327
|
+
readiness_delta: ".claude/cco/orchestration/readiness-delta/",
|
|
328
|
+
public_distribution: ".claude/cco/orchestration/public-distribution/",
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
const STATUS_VISIBLE_IDS = new Set([
|
|
332
|
+
"local_activation",
|
|
333
|
+
"ai_coding_readiness",
|
|
334
|
+
"context_cost_basic",
|
|
335
|
+
"session_handoff_basic",
|
|
336
|
+
"workspace_map_basic",
|
|
337
|
+
"reference_source_intake_basic",
|
|
338
|
+
"skill_md_parser_basic",
|
|
339
|
+
"skill_pattern_extraction_basic",
|
|
340
|
+
"skill_trust_scan_basic",
|
|
341
|
+
"capability_binding_basic",
|
|
342
|
+
"source_backed_skill_router_basic",
|
|
343
|
+
"thin_adapter_guidance_sync_basic",
|
|
344
|
+
"visual_qa_weekly",
|
|
345
|
+
"browser_capability_basic",
|
|
346
|
+
"skills_security_basic",
|
|
347
|
+
"instruction_risk_basic",
|
|
348
|
+
"prompt_injection_basic",
|
|
349
|
+
"source_trust_basic",
|
|
350
|
+
"tool_risk_basic",
|
|
351
|
+
"mcp_tool_risk_basic",
|
|
352
|
+
"sensitive_file_guard",
|
|
353
|
+
"secret_exposure_guard",
|
|
354
|
+
"destructive_command_guard",
|
|
355
|
+
"scoped_action_guard_basic",
|
|
356
|
+
"approval_required_decisions",
|
|
357
|
+
"safe_path_recommendation_basic",
|
|
358
|
+
"least_privilege_scope_reduction_basic",
|
|
359
|
+
"jit_temporary_scope_fields_basic",
|
|
360
|
+
"approval_boundary_safe_path_basic",
|
|
361
|
+
"safe_path_receipt_basic",
|
|
362
|
+
"skills_security_dogfood_basic",
|
|
363
|
+
"skill_route_context_safety_basic",
|
|
364
|
+
"install_intake_risk_basic",
|
|
365
|
+
"mcp_intake_visibility_basic",
|
|
366
|
+
"package_intake_visibility_basic",
|
|
367
|
+
"extension_intake_visibility_basic",
|
|
368
|
+
"connector_intake_visibility_basic",
|
|
369
|
+
"skill_source_intake_risk_basic",
|
|
370
|
+
"intake_safe_next_action_basic",
|
|
371
|
+
"intake_receipt_basic",
|
|
372
|
+
"enforcement_evidence",
|
|
373
|
+
"evidence_latest",
|
|
374
|
+
"ai_workspace_hygiene_basic",
|
|
375
|
+
"mcp_workspace_visibility_basic",
|
|
376
|
+
"instruction_surface_hygiene_basic",
|
|
377
|
+
]);
|
|
378
|
+
|
|
379
|
+
const DASHBOARD_VISIBLE_IDS = new Set(STATUS_VISIBLE_IDS);
|
|
380
|
+
|
|
381
|
+
const PRODUCT_STATUS_OVERRIDES = Object.freeze({
|
|
382
|
+
workspace_map_basic: "foundation",
|
|
383
|
+
reentry_memory_full: "partial",
|
|
384
|
+
visual_qa_advanced: "partial",
|
|
385
|
+
browser_governance_advanced: "partial",
|
|
386
|
+
browser_domain_boundary_readiness: "partial",
|
|
387
|
+
skills_security_advanced: "partial",
|
|
388
|
+
instruction_risk_advanced: "partial",
|
|
389
|
+
prompt_injection_advanced: "partial",
|
|
390
|
+
source_trust_advanced: "partial",
|
|
391
|
+
intent_mismatch_advanced: "partial",
|
|
392
|
+
tool_risk_advanced: "partial",
|
|
393
|
+
mcp_tool_risk_advanced: "partial",
|
|
394
|
+
scoped_action_guard_advanced: "partial",
|
|
395
|
+
scoped_jit_style_access: "partial",
|
|
396
|
+
least_privilege_profile: "partial",
|
|
397
|
+
zero_standing_permissions_posture: "partial",
|
|
398
|
+
approval_required_decisions: "partial",
|
|
399
|
+
safe_path_recommendation_basic: "foundation",
|
|
400
|
+
least_privilege_scope_reduction_basic: "foundation",
|
|
401
|
+
jit_temporary_scope_fields_basic: "partial",
|
|
402
|
+
approval_boundary_safe_path_basic: "foundation",
|
|
403
|
+
safe_path_receipt_basic: "foundation",
|
|
404
|
+
skills_security_dogfood_basic: "foundation",
|
|
405
|
+
skill_route_context_safety_basic: "foundation",
|
|
406
|
+
install_intake_risk_basic: "foundation",
|
|
407
|
+
mcp_intake_visibility_basic: "foundation",
|
|
408
|
+
package_intake_visibility_basic: "foundation",
|
|
409
|
+
extension_intake_visibility_basic: "foundation",
|
|
410
|
+
connector_intake_visibility_basic: "foundation",
|
|
411
|
+
skill_source_intake_risk_basic: "foundation",
|
|
412
|
+
intake_safe_next_action_basic: "foundation",
|
|
413
|
+
intake_receipt_basic: "foundation",
|
|
414
|
+
// AI Workspace Hygiene + Capability Registry v1
|
|
415
|
+
ai_workspace_hygiene_basic: "foundation",
|
|
416
|
+
ai_workspace_asset_inventory_basic: "foundation",
|
|
417
|
+
capability_registry_metadata_basic: "foundation",
|
|
418
|
+
workspace_skill_hygiene_basic: "foundation",
|
|
419
|
+
instruction_surface_hygiene_basic: "foundation",
|
|
420
|
+
mcp_workspace_visibility_basic: "foundation",
|
|
421
|
+
hook_surface_visibility_basic: "foundation",
|
|
422
|
+
package_script_hygiene_basic: "foundation",
|
|
423
|
+
orchestration_ready_capability_metadata_basic: "foundation",
|
|
424
|
+
// Execution Packet + Project Profile + Work Panel Preview v1
|
|
425
|
+
project_profile_detection_basic: "foundation",
|
|
426
|
+
execution_packet_basic: "foundation",
|
|
427
|
+
execution_packet_scope_boundaries_basic: "foundation",
|
|
428
|
+
agent_prompt_compiler_basic: "foundation",
|
|
429
|
+
work_panel_preview_basic: "foundation",
|
|
430
|
+
proof_requirements_packet_basic: "foundation",
|
|
431
|
+
diff_before_write_policy_basic: "foundation",
|
|
432
|
+
// Hook Baseline + Lifecycle Automation Preview v1
|
|
433
|
+
hook_baseline_registry_basic: "foundation",
|
|
434
|
+
adapter_readiness_basic: "foundation",
|
|
435
|
+
hook_config_preview_basic: "foundation",
|
|
436
|
+
lifecycle_hook_handler_basic: "foundation",
|
|
437
|
+
smart_route_hook_binding_basic: "foundation",
|
|
438
|
+
execution_packet_hook_binding_basic: "foundation",
|
|
439
|
+
safe_run_hook_binding_basic: "foundation",
|
|
440
|
+
pre_tool_use_guard_mapping_basic: "foundation",
|
|
441
|
+
post_tool_use_ledger_mapping_basic: "foundation",
|
|
442
|
+
stop_proof_gate_mapping_basic: "foundation",
|
|
443
|
+
session_end_summary_handoff_mapping_basic: "foundation",
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
const BASE_FAMILY_METADATA = Object.freeze([
|
|
447
|
+
{
|
|
448
|
+
id: "activation_readiness",
|
|
449
|
+
name: "Activation / Readiness",
|
|
450
|
+
strength: "strong",
|
|
451
|
+
productStatus: "shipped",
|
|
452
|
+
mainFiles: ["scripts/lib/activation/*", "scripts/wuz-activate.js", "scripts/wuz-doctor.js"],
|
|
453
|
+
statusSurface: "status/dashboard/doctor",
|
|
454
|
+
evidence: ".claude/cco/state/activation.json, .claude/cco/state/readiness.json",
|
|
455
|
+
tests: "wuz-activation, wuz-doctor, activation summary",
|
|
456
|
+
notes: "Core first-value loop is already real and should not be rebuilt.",
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
id: "status_dashboard",
|
|
460
|
+
name: "Status / Dashboard",
|
|
461
|
+
strength: "strong",
|
|
462
|
+
productStatus: "shipped",
|
|
463
|
+
mainFiles: ["status CLI surface", "dashboard CLI surface", "scripts/lib/dashboard.js"],
|
|
464
|
+
statusSurface: "status/dashboard",
|
|
465
|
+
evidence: "proof and current-state summaries",
|
|
466
|
+
tests: "status/dashboard tests",
|
|
467
|
+
notes: "User-facing truth surface; keep bounded and honest.",
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
id: "prompt_workflow_help",
|
|
471
|
+
name: "Prompt / Workflow Help",
|
|
472
|
+
strength: "strong",
|
|
473
|
+
productStatus: "shipped",
|
|
474
|
+
mainFiles: ["scripts/lib/prompt-compiler.js", "scripts/lib/workflow-discipline.js"],
|
|
475
|
+
statusSurface: "prompt, status, dashboard",
|
|
476
|
+
evidence: ".claude/cco/state/context-budget.json and prompt outputs",
|
|
477
|
+
tests: "prompt compiler and workflow discipline tests",
|
|
478
|
+
notes: "Prompt compiler is real product behavior, not docs-only guidance.",
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
id: "context_token_cost_optimization",
|
|
482
|
+
name: "Context / Token / Cost Optimization",
|
|
483
|
+
strength: "strong",
|
|
484
|
+
productStatus: "shipped",
|
|
485
|
+
mainFiles: ["scripts/lib/context-*", "scripts/lib/value-ledger.js", "scripts/lib/dashboard.js"],
|
|
486
|
+
statusSurface: "status/dashboard",
|
|
487
|
+
evidence: ".claude/cco/state/, value ledger, proof metrics",
|
|
488
|
+
tests: "context budget, context safety, value ledger, reentry tests",
|
|
489
|
+
notes: "One of the strongest existing product loops.",
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
id: "model_worker_routing",
|
|
493
|
+
name: "Model / Worker Routing",
|
|
494
|
+
strength: "strong",
|
|
495
|
+
productStatus: "shipped",
|
|
496
|
+
mainFiles: ["scripts/lib/orchestration/*"],
|
|
497
|
+
statusSurface: "route/run/models/orchestration/proof",
|
|
498
|
+
evidence: ".claude/cco/orchestration/current-proof.json",
|
|
499
|
+
tests: "orchestration CLI/core/model discovery",
|
|
500
|
+
notes: "Already merged through recent orchestration and model-discovery PRs.",
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
id: "execution_work_control",
|
|
504
|
+
name: "Execution / Work Control",
|
|
505
|
+
strength: "partial",
|
|
506
|
+
productStatus: "partial",
|
|
507
|
+
mainFiles: ["scripts/lib/orchestration/*", "scripts/lib/dashboard.js"],
|
|
508
|
+
statusSurface: "run/proof/status",
|
|
509
|
+
evidence: ".claude/cco/orchestration/, receipts",
|
|
510
|
+
tests: "orchestration and proof tests",
|
|
511
|
+
notes: "Fragments exist, but a unified work-item/routine/receipt model is still later work.",
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
id: "agent_security",
|
|
515
|
+
name: "Agent Security",
|
|
516
|
+
strength: "strong",
|
|
517
|
+
productStatus: "shipped",
|
|
518
|
+
mainFiles: ["scripts/lib/agent-enforcement.js", "scripts/lib/agent-security/*"],
|
|
519
|
+
statusSurface: "guard/status/dashboard/proof",
|
|
520
|
+
evidence: ".claude/cco/security/",
|
|
521
|
+
tests: "agent-security, guard, trust-audit, browser-capability",
|
|
522
|
+
notes: "Keep as the current trust boundary; do not split out a new governance engine in this PR.",
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
id: "agent_access_governance",
|
|
526
|
+
name: "Agent Access Governance",
|
|
527
|
+
strength: "partial",
|
|
528
|
+
productStatus: "foundation",
|
|
529
|
+
mainFiles: ["scripts/lib/agent-access-governance.js", "scripts/lib/agent-enforcement.js", "scripts/lib/agent-security/*"],
|
|
530
|
+
statusSurface: "guard/status/dashboard/proof",
|
|
531
|
+
evidence: ".claude/cco/security/agent-access-governance/, local governance receipts",
|
|
532
|
+
tests: "agent-access-governance, guard, status/dashboard, product-learning",
|
|
533
|
+
notes: "Foundation slice only: deterministic subject/scope/approval-boundary/receipt modeling. Safe Path and intake breadth remain later work.",
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
id: "install_intake_risk",
|
|
537
|
+
name: "Install / Intake Risk",
|
|
538
|
+
strength: "partial",
|
|
539
|
+
productStatus: "foundation",
|
|
540
|
+
mainFiles: ["scripts/lib/install-intake-risk.js", "scripts/cco-skill-intake.js", "scripts/lib/agent-security/*"],
|
|
541
|
+
statusSurface: "intake/status/dashboard/proof",
|
|
542
|
+
evidence: ".claude/cco/security/install-intake/, .claude/cco/security/skill-intake-*.json",
|
|
543
|
+
tests: "install-intake-risk, guard, status/dashboard, validator tests",
|
|
544
|
+
notes: "Foundation slice only: deterministic local intake visibility for packages, MCP, extensions, guidance, skills, and connectors. No registry lookups, malware claims, or universal install enforcement.",
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
id: "safe_path_engine",
|
|
548
|
+
name: "Safe Path Engine",
|
|
549
|
+
strength: "partial",
|
|
550
|
+
productStatus: "foundation",
|
|
551
|
+
mainFiles: ["scripts/lib/safe-path-engine.js", "scripts/lib/agent-enforcement.js", "scripts/lib/orchestration/*"],
|
|
552
|
+
statusSurface: "guard/status/dashboard/proof",
|
|
553
|
+
evidence: ".claude/cco/security/safe-path/, enforcement decisions, proof receipts",
|
|
554
|
+
tests: "safe-path, guard, orchestration, status/dashboard tests",
|
|
555
|
+
notes: "Foundation slice only: deterministic local reduced-scope recommendations, approval boundaries, and JIT-style fields where supported. No universal enforcement or automatic remediation claims.",
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
id: "workspace_map",
|
|
559
|
+
name: "Workspace Map",
|
|
560
|
+
strength: "partial",
|
|
561
|
+
productStatus: "foundation",
|
|
562
|
+
mainFiles: ["scripts/lib/workspace-map.js", "scripts/lib/public-cli.js"],
|
|
563
|
+
statusSurface: "workspace-map command, status/dashboard summary",
|
|
564
|
+
evidence: ".claude/cco/state/workspace-map.json",
|
|
565
|
+
tests: "workspace-map tests",
|
|
566
|
+
notes: "Useful foundation. Keep exposure honest as compact navigation support, not product identity.",
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
id: "skills_skill_packs",
|
|
570
|
+
name: "Skills / Skill Packs",
|
|
571
|
+
strength: "partial",
|
|
572
|
+
productStatus: "foundation",
|
|
573
|
+
mainFiles: ["scripts/avorelo-skills.js", "scripts/lib/avorelo-skill-registry.js", "skills/avorelo/*", "vendor/skillpacks/*"],
|
|
574
|
+
statusSurface: "skills CLI, status/dashboard/proof summary",
|
|
575
|
+
evidence: ".avorelo/skills/registry.json, .claude/cco/skills/latest-route.json",
|
|
576
|
+
tests: "avorelo-skills tests",
|
|
577
|
+
notes: "Keep source-backed and local-first. This is not a marketplace and should never dump full skill bodies into context or adapters.",
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
id: "source_intake",
|
|
581
|
+
name: "Source Intake",
|
|
582
|
+
strength: "partial",
|
|
583
|
+
productStatus: "foundation",
|
|
584
|
+
mainFiles: ["scripts/lib/source-catalog.js", "docs/references/*", "vendor/skillpacks/*/SOURCE.json"],
|
|
585
|
+
statusSurface: "skills CLI, status/dashboard/proof summary",
|
|
586
|
+
evidence: "docs/references/references.json, .claude/cco/skills/latest-source-adoption.json",
|
|
587
|
+
tests: "source-catalog tests",
|
|
588
|
+
notes: "Owns source/reference metadata and reviewed/deferred/blocked adoption truth, not runtime execution.",
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
id: "thin_adapters",
|
|
592
|
+
name: "Thin Adapters",
|
|
593
|
+
strength: "partial",
|
|
594
|
+
productStatus: "foundation",
|
|
595
|
+
mainFiles: ["scripts/avorelo-sync-adapters.js"],
|
|
596
|
+
statusSurface: "generator plus status/proof summary",
|
|
597
|
+
evidence: ".avorelo/generated/ (generated locally), .claude/cco/skills/latest-adapter-sync.json",
|
|
598
|
+
tests: "operating-layer validation and adapter guidance tests",
|
|
599
|
+
notes: "Thin, public-safe adapter guidance only. Core logic must stay in shared modules.",
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
id: "product_learning",
|
|
603
|
+
name: "Product Learning / AI-Native Loop",
|
|
604
|
+
strength: "partial",
|
|
605
|
+
productStatus: "foundation",
|
|
606
|
+
mainFiles: ["scripts/lib/product-learning-events.js"],
|
|
607
|
+
statusSurface: "status/dashboard summary only",
|
|
608
|
+
evidence: ".claude/cco/events/product-learning.jsonl",
|
|
609
|
+
tests: "product-learning-events tests",
|
|
610
|
+
notes: "Local, redacted event logging exists; the full product loop is still later.",
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
id: "proof_evidence",
|
|
614
|
+
name: "Proof / Evidence",
|
|
615
|
+
strength: "strong",
|
|
616
|
+
productStatus: "shipped",
|
|
617
|
+
mainFiles: ["scripts/lib/orchestration/proof-writer.js", "scripts/lib/dashboard.js"],
|
|
618
|
+
statusSurface: "proof/status/dashboard",
|
|
619
|
+
evidence: ".claude/cco/receipts/, orchestration proof",
|
|
620
|
+
tests: "proof tests",
|
|
621
|
+
notes: "Real today, but unified receipts across all families are later work.",
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
id: "pricing_entitlements",
|
|
625
|
+
name: "Pricing / Entitlements",
|
|
626
|
+
strength: "strong",
|
|
627
|
+
productStatus: "shipped",
|
|
628
|
+
mainFiles: ["scripts/lib/plans.js", "scripts/lib/entitlements.js", "docs/Pricing-Capability-Mapping.md"],
|
|
629
|
+
statusSurface: "status/dashboard/website/docs",
|
|
630
|
+
evidence: "plan surface and pricing mapping doc",
|
|
631
|
+
tests: "avorelo-plans and plan-surface tests",
|
|
632
|
+
notes: "Free/Pro is real. Teams remains deferred and non-selectable.",
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
id: "website_onboarding",
|
|
636
|
+
name: "Website / Onboarding",
|
|
637
|
+
strength: "strong",
|
|
638
|
+
productStatus: "shipped",
|
|
639
|
+
mainFiles: ["apps/public-web/src/index.html", "docs/INSTALL.md", "docs/avorelo-local-usage.md"],
|
|
640
|
+
statusSurface: "public website/docs",
|
|
641
|
+
evidence: "public-web source-of-record and activation docs",
|
|
642
|
+
tests: "public web and website readiness tests",
|
|
643
|
+
notes: "Must follow product truth and avoid category drift.",
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
id: "frontend_visual_qa",
|
|
647
|
+
name: "Frontend / Visual QA",
|
|
648
|
+
strength: "strong",
|
|
649
|
+
productStatus: "shipped",
|
|
650
|
+
mainFiles: ["scripts/lib/visual-qa.js", "scripts/lib/browser-capability.js"],
|
|
651
|
+
statusSurface: "visual-qa/status/dashboard",
|
|
652
|
+
evidence: ".claude/cco/reports/visual-qa-latest.json",
|
|
653
|
+
tests: "visual-qa and browser-capability tests",
|
|
654
|
+
notes: "Supporting capability family only; not the product center.",
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
id: "ai_workspace_hygiene",
|
|
658
|
+
name: "AI Workspace Hygiene",
|
|
659
|
+
strength: "partial",
|
|
660
|
+
productStatus: "foundation",
|
|
661
|
+
mainFiles: ["scripts/lib/ai-workspace-hygiene.js"],
|
|
662
|
+
statusSurface: "workspace-hygiene command, status/dashboard/proof compact summary",
|
|
663
|
+
evidence: ".claude/cco/orchestration/ai-workspace-hygiene/latest-report.json",
|
|
664
|
+
tests: "ai-workspace-hygiene tests",
|
|
665
|
+
notes: "Foundation slice: deterministic local scan of AI workspace assets, hygiene findings, and orchestration-ready capability metadata. Does not clone OpenHands, install hooks, patch MCP configs, or auto-modify user files in v1. Prepares data for future orchestration, Hook Baseline Pack, MCP cleanup, and plugin readiness.",
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
id: "execution_packet",
|
|
669
|
+
name: "Execution Packet / Project Profile",
|
|
670
|
+
strength: "partial",
|
|
671
|
+
productStatus: "foundation",
|
|
672
|
+
mainFiles: ["scripts/lib/execution-packet.js", "scripts/lib/project-profile.js", "scripts/lib/work-panel-preview.js"],
|
|
673
|
+
statusSurface: "project-profile, execution-packet, work-panel commands, status/dashboard/proof compact summary",
|
|
674
|
+
evidence: ".claude/cco/orchestration/execution-packet/latest-packet.json, .claude/cco/orchestration/project-profile/latest-profile.json",
|
|
675
|
+
tests: "execution-packet, project-profile, work-panel-preview tests",
|
|
676
|
+
notes: "Foundation slice: deterministic project profile detection, scoped execution packet compiler, agent prompt compiler, and local work panel preview. No CSS editor, no browser injection, no Visual QA Bridge full implementation, no deploy automation. Blocked scope always overrides allowed scope. Proof-first workflow.",
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
id: "lifecycle_hooks",
|
|
680
|
+
name: "Lifecycle Hook Baseline + Automation Preview",
|
|
681
|
+
strength: "partial",
|
|
682
|
+
productStatus: "foundation",
|
|
683
|
+
mainFiles: ["scripts/lib/hook-baseline.js", "scripts/lib/lifecycle-hooks.js", "scripts/lib/adapter-readiness.js", "scripts/lib/hook-config-preview.js"],
|
|
684
|
+
statusSurface: "hooks, adapter-readiness, lifecycle-hook commands, status/dashboard/proof compact summary",
|
|
685
|
+
evidence: ".claude/cco/orchestration/hook-baseline/latest-baseline.json, .claude/cco/orchestration/adapter-readiness/latest-readiness.json, .claude/cco/orchestration/hook-baseline/latest-preview.json",
|
|
686
|
+
tests: "hook-baseline, lifecycle-hooks, adapter-readiness, hook-config-preview tests",
|
|
687
|
+
notes: "Preview/readiness slice only. Lifecycle handlers exist but are NOT auto-installed. No user config is modified. No global hook install. No full Claude plugin. No full OpenHands adapter. No ACP/A2A implementation. Hook apply requires explicit user approval in a future PR. Intended to make Avorelo seamless, not noisier.",
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
id: "launch_hardening",
|
|
691
|
+
name: "Launch Hardening",
|
|
692
|
+
label: "Launch Hardening",
|
|
693
|
+
description: "Gate checks and hardening for alpha launch readiness.",
|
|
694
|
+
productStatus: "foundation",
|
|
695
|
+
strength: "partial",
|
|
696
|
+
mainFiles: ["scripts/lib/launch-hardening-gate.js"],
|
|
697
|
+
statusSurface: "launch-hardening command, status/dashboard compact summary",
|
|
698
|
+
evidence: ".claude/cco/orchestration/launch-hardening/latest-gate.json",
|
|
699
|
+
tests: "launch-hardening gate checks",
|
|
700
|
+
notes: "Foundation slice: deterministic gate checks for alpha launch readiness. Checks activation, hooks, token gate, support bundle, proof, artifact health, and CI mode. Does not make launch-ready claims.",
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
id: "failure_recovery_hardening",
|
|
704
|
+
name: "Failure Recovery",
|
|
705
|
+
label: "Failure Recovery",
|
|
706
|
+
description: "Taxonomy, classification, and safe recovery actions for all failure modes.",
|
|
707
|
+
productStatus: "foundation",
|
|
708
|
+
strength: "partial",
|
|
709
|
+
mainFiles: ["scripts/lib/failure-recovery.js"],
|
|
710
|
+
statusSurface: "failure recovery receipt, doctor command",
|
|
711
|
+
evidence: ".claude/cco/orchestration/failure-recovery/latest-recovery.json",
|
|
712
|
+
tests: "failure recovery taxonomy checks",
|
|
713
|
+
notes: "Foundation slice: classifies every failure mode with a safe next action, severity, and recoverability flag. No raw logs, prompts, code, or secrets in receipts.",
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
id: "artifact_health_monitoring",
|
|
717
|
+
name: "Artifact Health",
|
|
718
|
+
label: "Artifact Health",
|
|
719
|
+
description: "Scan, classify, and clean local orchestration artifacts safely.",
|
|
720
|
+
productStatus: "foundation",
|
|
721
|
+
strength: "partial",
|
|
722
|
+
mainFiles: ["scripts/lib/artifact-health.js"],
|
|
723
|
+
statusSurface: "artifacts command, status/dashboard compact summary",
|
|
724
|
+
evidence: ".claude/cco/orchestration/artifact-health/latest-health.json",
|
|
725
|
+
tests: "artifact health scan checks",
|
|
726
|
+
notes: "Foundation slice: scans .claude/cco artifacts for invalid JSON, stale receipts, oversized files. Plans and applies safe cleanup. Never deletes latest-*.json or outside .claude/cco.",
|
|
727
|
+
},
|
|
728
|
+
// PR #145 — MCP Least-Privilege Tool Governance v1
|
|
729
|
+
{
|
|
730
|
+
id: "mcp_tool_governance",
|
|
731
|
+
name: "MCP Tool Governance",
|
|
732
|
+
label: "MCP Tool Governance",
|
|
733
|
+
description: "Local static MCP tool inventory, risk classification, least-privilege policy, and PreToolUse enforcement.",
|
|
734
|
+
productStatus: "foundation",
|
|
735
|
+
strength: "partial",
|
|
736
|
+
mainFiles: [
|
|
737
|
+
"scripts/lib/mcp-tool-inventory.js",
|
|
738
|
+
"scripts/lib/mcp-tool-risk.js",
|
|
739
|
+
"scripts/lib/mcp-least-privilege-policy.js",
|
|
740
|
+
"scripts/lib/mcp-enforcement.js",
|
|
741
|
+
],
|
|
742
|
+
statusSurface: "mcp CLI (inventory, risk, policy, preview, doctor), PreToolUse hook, ledger, support-bundle",
|
|
743
|
+
evidence: ".claude/cco/orchestration/mcp-tool-governance/",
|
|
744
|
+
tests: "mcp-tool-inventory, mcp-tool-risk, mcp-least-privilege-policy, mcp-enforcement tests",
|
|
745
|
+
notes: "Foundation slice: static local governance only. No MCP server execution. No full MCP client/server. No external scanner. Preview only — config not modified. Unknown tools not auto-allowed. Every block has safeNextAction.",
|
|
746
|
+
},
|
|
747
|
+
// PR #146 — One-Prompt AI Install + Pre-Launch Activation Readiness v1
|
|
748
|
+
{
|
|
749
|
+
id: "ai_install_onboarding",
|
|
750
|
+
name: "AI Install Onboarding",
|
|
751
|
+
label: "AI Install Onboarding",
|
|
752
|
+
description: "One-prompt AI install experience. User copies a single prompt into Claude Code, Codex, Cursor, or VS Code. AI guides activation, readiness, hooks, MCP governance, and first-value summary.",
|
|
753
|
+
productStatus: "foundation",
|
|
754
|
+
strength: "partial",
|
|
755
|
+
mainFiles: [
|
|
756
|
+
"scripts/lib/ai-install-prompt.js",
|
|
757
|
+
],
|
|
758
|
+
statusSurface: "install-ai CLI (--prompt, --json, --dry-run), ai-install-prompt receipt",
|
|
759
|
+
evidence: ".claude/cco/orchestration/ai-install/latest-prompt.json",
|
|
760
|
+
tests: "ai-install-prompt tests",
|
|
761
|
+
notes: "Inspired by PostHog install-with-AI pattern. Hook apply still requires explicit --yes approval. MCP config not auto-modified. Global config not modified. No public website or pricing here.",
|
|
762
|
+
},
|
|
763
|
+
{
|
|
764
|
+
id: "prelaunch_activation_readiness",
|
|
765
|
+
name: "Pre-Launch Activation Readiness",
|
|
766
|
+
label: "Pre-Launch Activation Readiness",
|
|
767
|
+
description: "Gate that checks all required surfaces for the one-prompt AI install flow: activation, safe-run, hooks, MCP governance, token/context, launch hardening, support bundle, failure recovery.",
|
|
768
|
+
productStatus: "foundation",
|
|
769
|
+
strength: "partial",
|
|
770
|
+
mainFiles: [
|
|
771
|
+
"scripts/lib/prelaunch-activation-readiness.js",
|
|
772
|
+
],
|
|
773
|
+
statusSurface: "prelaunch-readiness CLI, first-value-check CLI, prelaunch readiness receipt",
|
|
774
|
+
evidence: ".claude/cco/orchestration/prelaunch-readiness/latest-activation-readiness.json",
|
|
775
|
+
tests: "prelaunch-activation-readiness tests",
|
|
776
|
+
notes: "Not a public launch claim. Pre-launch activation readiness only.",
|
|
777
|
+
},
|
|
778
|
+
// PR #147 — Pre-Launch Intelligence Layer v1
|
|
779
|
+
{
|
|
780
|
+
id: "prelaunch_intelligence",
|
|
781
|
+
name: "Pre-Launch Intelligence Layer",
|
|
782
|
+
label: "Pre-Launch Intelligence",
|
|
783
|
+
description: "Local-first intelligence layer that aggregates install, activation, feedback, token/cost, MCP, hardening, support signals into actionable pre-launch insight. Not a release candidate gate.",
|
|
784
|
+
productStatus: "foundation",
|
|
785
|
+
strength: "partial",
|
|
786
|
+
mainFiles: [
|
|
787
|
+
"scripts/lib/prelaunch-intelligence.js",
|
|
788
|
+
"scripts/lib/feedback-intelligence.js",
|
|
789
|
+
"scripts/lib/token-cost-intelligence.js",
|
|
790
|
+
"scripts/lib/prelaunch-evidence-store.js",
|
|
791
|
+
"scripts/lib/proof-outcome-evidence.js",
|
|
792
|
+
"scripts/lib/install-journey-intelligence.js",
|
|
793
|
+
],
|
|
794
|
+
statusSurface: "prelaunch-intelligence CLI, feedback insights CLI, token-cost CLI, token-cost capture/summary/validate/import CLI, proof outcome/readiness CLI, install-journey CLI",
|
|
795
|
+
evidence: ".claude/cco/orchestration/prelaunch-intelligence/, .claude/cco/evidence/feedback/, .claude/cco/evidence/token-cost/, .claude/cco/orchestration/seamless-outcome/latest-proof-outcome-evidence.json",
|
|
796
|
+
tests: "prelaunch-intelligence, prelaunch-evidence-store, token-cost-intelligence, token-cost-capture, proof-outcome-evidence tests",
|
|
797
|
+
notes: "Local-only. Not a public launch claim. Not a release candidate gate. Measured/estimated/heuristic/missing stay separate. Feedback clustered, not raw-exposed. Token-cost capture, feedback evidence import, proof outcome evidence, and readiness evidence closure remain redacted and local-first.",
|
|
798
|
+
},
|
|
799
|
+
]);
|
|
800
|
+
const FAMILY_METADATA_MAP = new Map(BASE_FAMILY_METADATA.map((family) => [family.id, family]));
|
|
801
|
+
|
|
802
|
+
function familyFromBucket(capability) {
|
|
803
|
+
if (FAMILY_OVERRIDES[capability.id]) return FAMILY_OVERRIDES[capability.id];
|
|
804
|
+
if (capability.bucket === "better_ai_coding_tasks") return "prompt_workflow_help";
|
|
805
|
+
if (capability.bucket === "automatic_context_cost_optimization") return "context_token_cost_optimization";
|
|
806
|
+
if (capability.bucket === "visual_qa_with_screenshots") return "frontend_visual_qa";
|
|
807
|
+
if (capability.bucket === "seamless_agent_security") return "agent_security";
|
|
808
|
+
if (capability.bucket === "evidence_and_history") return "proof_evidence";
|
|
809
|
+
return "execution_work_control";
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
function productStatusForCapability(capability) {
|
|
813
|
+
if (PRODUCT_STATUS_OVERRIDES[capability.id]) return PRODUCT_STATUS_OVERRIDES[capability.id];
|
|
814
|
+
if (capability.implementationStatus === "partial") return "partial";
|
|
815
|
+
if (capability.surfaceType === "docs_only") return "docs_only";
|
|
816
|
+
return "shipped";
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
function buildCapabilityEntry(capability) {
|
|
820
|
+
const familyId = familyFromBucket(capability);
|
|
821
|
+
const familyMetadata = FAMILY_METADATA_MAP.get(familyId);
|
|
822
|
+
return Object.freeze({
|
|
823
|
+
id: capability.id,
|
|
824
|
+
name: capability.label,
|
|
825
|
+
familyId,
|
|
826
|
+
familyName: familyMetadata?.name || familyId,
|
|
827
|
+
bucket: capability.bucket,
|
|
828
|
+
shortDescription: capability.description,
|
|
829
|
+
customerFacingDescription: capability.customerFacingDescription || capability.description,
|
|
830
|
+
planAvailability: capability.availability || { free: false, pro: false },
|
|
831
|
+
implementationStatus: capability.implementationStatus || "supported",
|
|
832
|
+
productStatus: productStatusForCapability(capability),
|
|
833
|
+
surfaceType: capability.surfaceType || "detection",
|
|
834
|
+
safeForPublicCopy: capability.safeForPublicCopy !== false,
|
|
835
|
+
sourceOfTruth: "scripts/lib/plans.js",
|
|
836
|
+
statusVisibility: STATUS_VISIBLE_IDS.has(capability.id),
|
|
837
|
+
dashboardVisibility: DASHBOARD_VISIBLE_IDS.has(capability.id),
|
|
838
|
+
evidencePathHint: EVIDENCE_HINTS[familyId] || null,
|
|
839
|
+
notes: familyMetadata?.notes || "",
|
|
840
|
+
});
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
const CAPABILITY_REGISTRY = Object.freeze(CAPABILITIES.map(buildCapabilityEntry));
|
|
844
|
+
const REGISTRY_MAP = new Map(CAPABILITY_REGISTRY.map((entry) => [entry.id, entry]));
|
|
845
|
+
|
|
846
|
+
function buildFamilyInventory() {
|
|
847
|
+
const capabilitiesByFamily = new Map(BASE_FAMILY_METADATA.map((family) => [family.id, []]));
|
|
848
|
+
CAPABILITY_REGISTRY.forEach((entry) => {
|
|
849
|
+
if (!capabilitiesByFamily.has(entry.familyId)) {
|
|
850
|
+
capabilitiesByFamily.set(entry.familyId, []);
|
|
851
|
+
}
|
|
852
|
+
capabilitiesByFamily.get(entry.familyId).push(entry.id);
|
|
853
|
+
});
|
|
854
|
+
|
|
855
|
+
return Object.freeze(
|
|
856
|
+
BASE_FAMILY_METADATA.map((family) => Object.freeze({
|
|
857
|
+
...family,
|
|
858
|
+
capabilityIds: Object.freeze((capabilitiesByFamily.get(family.id) || []).slice().sort()),
|
|
859
|
+
}))
|
|
860
|
+
);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
const CAPABILITY_FAMILIES = buildFamilyInventory();
|
|
864
|
+
const FAMILY_MAP = new Map(CAPABILITY_FAMILIES.map((family) => [family.id, family]));
|
|
865
|
+
|
|
866
|
+
const REQUIRED_CAPABILITY_FIELDS = [
|
|
867
|
+
"id",
|
|
868
|
+
"name",
|
|
869
|
+
"familyId",
|
|
870
|
+
"shortDescription",
|
|
871
|
+
"planAvailability",
|
|
872
|
+
"implementationStatus",
|
|
873
|
+
"productStatus",
|
|
874
|
+
"surfaceType",
|
|
875
|
+
"sourceOfTruth",
|
|
876
|
+
"statusVisibility",
|
|
877
|
+
"dashboardVisibility",
|
|
878
|
+
];
|
|
879
|
+
|
|
880
|
+
const REQUIRED_FAMILY_FIELDS = [
|
|
881
|
+
"id",
|
|
882
|
+
"name",
|
|
883
|
+
"strength",
|
|
884
|
+
"productStatus",
|
|
885
|
+
"mainFiles",
|
|
886
|
+
"capabilityIds",
|
|
887
|
+
"statusSurface",
|
|
888
|
+
"evidence",
|
|
889
|
+
"tests",
|
|
890
|
+
"notes",
|
|
891
|
+
];
|
|
892
|
+
|
|
893
|
+
function validateCapability(entry) {
|
|
894
|
+
const errors = [];
|
|
895
|
+
for (const field of REQUIRED_CAPABILITY_FIELDS) {
|
|
896
|
+
if (entry[field] === undefined || entry[field] === null) {
|
|
897
|
+
errors.push(`Missing required field: ${field}`);
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
if (!VALID_FAMILY_IDS.has(entry.familyId)) {
|
|
901
|
+
errors.push(`Unknown familyId: ${entry.familyId}`);
|
|
902
|
+
}
|
|
903
|
+
if (!VALID_PRODUCT_STATUSES.has(entry.productStatus)) {
|
|
904
|
+
errors.push(`Invalid productStatus: ${entry.productStatus}`);
|
|
905
|
+
}
|
|
906
|
+
if (!VALID_SURFACE_TYPES.has(entry.surfaceType)) {
|
|
907
|
+
errors.push(`Invalid surfaceType: ${entry.surfaceType}`);
|
|
908
|
+
}
|
|
909
|
+
if (entry.productStatus === "docs_only" && (entry.statusVisibility || entry.dashboardVisibility)) {
|
|
910
|
+
errors.push("docs_only capabilities cannot be shown as shipped in status or dashboard");
|
|
911
|
+
}
|
|
912
|
+
return { valid: errors.length === 0, errors };
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
function validateRegistry() {
|
|
916
|
+
const errors = [];
|
|
917
|
+
const seenIds = new Set();
|
|
918
|
+
const planIds = new Set(CAPABILITIES.map((capability) => capability.id));
|
|
919
|
+
|
|
920
|
+
for (const entry of CAPABILITY_REGISTRY) {
|
|
921
|
+
if (seenIds.has(entry.id)) {
|
|
922
|
+
errors.push(`Duplicate capability ID: ${entry.id}`);
|
|
923
|
+
}
|
|
924
|
+
seenIds.add(entry.id);
|
|
925
|
+
if (!planIds.has(entry.id)) {
|
|
926
|
+
errors.push(`Registry capability is not owned by plans.js: ${entry.id}`);
|
|
927
|
+
}
|
|
928
|
+
const result = validateCapability(entry);
|
|
929
|
+
result.errors.forEach((error) => errors.push(`[${entry.id}] ${error}`));
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
for (const capability of CAPABILITIES) {
|
|
933
|
+
if (!seenIds.has(capability.id)) {
|
|
934
|
+
errors.push(`plans.js capability missing from registry: ${capability.id}`);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
return { valid: errors.length === 0, errors };
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
function validateFamilyInventory() {
|
|
942
|
+
const errors = [];
|
|
943
|
+
const seenIds = new Set();
|
|
944
|
+
const knownCapabilityIds = new Set(CAPABILITIES.map((capability) => capability.id));
|
|
945
|
+
const seenCapabilityAssignments = new Map();
|
|
946
|
+
const expectedByFamily = new Map(CAPABILITY_FAMILIES.map((family) => [family.id, family.capabilityIds.slice().sort()]));
|
|
947
|
+
|
|
948
|
+
for (const family of CAPABILITY_FAMILIES) {
|
|
949
|
+
if (seenIds.has(family.id)) {
|
|
950
|
+
errors.push(`Duplicate family ID: ${family.id}`);
|
|
951
|
+
}
|
|
952
|
+
seenIds.add(family.id);
|
|
953
|
+
for (const field of REQUIRED_FAMILY_FIELDS) {
|
|
954
|
+
if (family[field] === undefined || family[field] === null || family[field] === "") {
|
|
955
|
+
errors.push(`[${family.id}] Missing required field: ${field}`);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
if (!VALID_FAMILY_IDS.has(family.id)) {
|
|
959
|
+
errors.push(`[${family.id}] Unknown family ID`);
|
|
960
|
+
}
|
|
961
|
+
if (!VALID_STRENGTHS.has(family.strength)) {
|
|
962
|
+
errors.push(`[${family.id}] Invalid strength: ${family.strength}`);
|
|
963
|
+
}
|
|
964
|
+
if (!VALID_PRODUCT_STATUSES.has(family.productStatus)) {
|
|
965
|
+
errors.push(`[${family.id}] Invalid productStatus: ${family.productStatus}`);
|
|
966
|
+
}
|
|
967
|
+
if (!Array.isArray(family.capabilityIds)) {
|
|
968
|
+
errors.push(`[${family.id}] capabilityIds must be an array`);
|
|
969
|
+
} else {
|
|
970
|
+
const familyCapabilityIds = family.capabilityIds.slice().sort();
|
|
971
|
+
family.capabilityIds.forEach((capabilityId) => {
|
|
972
|
+
if (!knownCapabilityIds.has(capabilityId)) {
|
|
973
|
+
errors.push(`[${family.id}] Unknown capability ID: ${capabilityId}`);
|
|
974
|
+
}
|
|
975
|
+
if (seenCapabilityAssignments.has(capabilityId)) {
|
|
976
|
+
errors.push(`[${family.id}] Capability appears in more than one family: ${capabilityId} already assigned to ${seenCapabilityAssignments.get(capabilityId)}`);
|
|
977
|
+
} else {
|
|
978
|
+
seenCapabilityAssignments.set(capabilityId, family.id);
|
|
979
|
+
}
|
|
980
|
+
const registryEntry = getCapability(capabilityId);
|
|
981
|
+
if (registryEntry && registryEntry.familyId !== family.id) {
|
|
982
|
+
errors.push(`[${family.id}] Capability ownership drift: ${capabilityId} derives to ${registryEntry.familyId}`);
|
|
983
|
+
}
|
|
984
|
+
});
|
|
985
|
+
const expectedIds = expectedByFamily.get(family.id) || [];
|
|
986
|
+
if (JSON.stringify(familyCapabilityIds) !== JSON.stringify(expectedIds)) {
|
|
987
|
+
errors.push(`[${family.id}] Family capabilityIds drift from derived ownership`);
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
if (family.productStatus === "docs_only" && /status|dashboard/i.test(family.statusSurface)) {
|
|
991
|
+
errors.push(`[${family.id}] docs_only family cannot be marked as status/dashboard surfaced`);
|
|
992
|
+
}
|
|
993
|
+
if (family.productStatus !== "gap" && !family.tests) {
|
|
994
|
+
errors.push(`[${family.id}] Missing tests metadata`);
|
|
995
|
+
}
|
|
996
|
+
if (family.productStatus !== "gap" && !family.evidence) {
|
|
997
|
+
errors.push(`[${family.id}] Missing evidence metadata`);
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
CAPABILITY_REGISTRY.forEach((entry) => {
|
|
1002
|
+
const family = getFamily(entry.familyId);
|
|
1003
|
+
if (!family) {
|
|
1004
|
+
errors.push(`Registry entry ${entry.id} points to missing family ${entry.familyId}`);
|
|
1005
|
+
return;
|
|
1006
|
+
}
|
|
1007
|
+
if (!family.capabilityIds.includes(entry.id)) {
|
|
1008
|
+
errors.push(`Derived family inventory is missing capability ${entry.id} in ${entry.familyId}`);
|
|
1009
|
+
}
|
|
1010
|
+
});
|
|
1011
|
+
|
|
1012
|
+
return { valid: errors.length === 0, errors };
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
function validateTaxonomy() {
|
|
1016
|
+
const errors = [];
|
|
1017
|
+
const registry = validateRegistry();
|
|
1018
|
+
const families = validateFamilyInventory();
|
|
1019
|
+
errors.push(...registry.errors, ...families.errors);
|
|
1020
|
+
return { valid: errors.length === 0, errors };
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
function getCapability(id) {
|
|
1024
|
+
return REGISTRY_MAP.get(String(id || "").trim()) || null;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
function listCapabilities() {
|
|
1028
|
+
return Array.from(CAPABILITY_REGISTRY);
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
function listByFamily(familyId) {
|
|
1032
|
+
return CAPABILITY_REGISTRY.filter((entry) => entry.familyId === familyId);
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
function listFamilies() {
|
|
1036
|
+
return Array.from(CAPABILITY_FAMILIES);
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
function getFamily(familyId) {
|
|
1040
|
+
return FAMILY_MAP.get(String(familyId || "").trim()) || null;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
module.exports = {
|
|
1044
|
+
CAPABILITY_REGISTRY,
|
|
1045
|
+
CAPABILITY_FAMILIES,
|
|
1046
|
+
VALID_FAMILY_IDS,
|
|
1047
|
+
VALID_PRODUCT_STATUSES,
|
|
1048
|
+
VALID_STRENGTHS,
|
|
1049
|
+
VALID_SURFACE_TYPES,
|
|
1050
|
+
validateCapability,
|
|
1051
|
+
validateRegistry,
|
|
1052
|
+
validateFamilyInventory,
|
|
1053
|
+
validateTaxonomy,
|
|
1054
|
+
getCapability,
|
|
1055
|
+
listCapabilities,
|
|
1056
|
+
listByFamily,
|
|
1057
|
+
listFamilies,
|
|
1058
|
+
getFamily,
|
|
1059
|
+
};
|