# PORTFOLIO.md — Portfolio Management Protocol 📊 > **Canonical Reference.** This file defines the Portfolio Management layer. > Portfolio Management controls multi-project orchestration across the workspace. > Every project in the workspace MUST be registered in this protocol. --- ## §0 Purpose | Layer | File | Scope | |-------|------|-------| | Execution Protocol | AGENTS.md | 单任务怎么做 | | Execution Governance | GOVERNANCE.md | 单项目怎么管 | | **Portfolio Management** | **PORTFOLIO.md** | **多项目怎么排** | **Execution Governance 管理单项目。Portfolio Management 管理多项目。** ### Core Objective 最大化: | Metric | Why | |--------|-----| | **Delivery** | 按时交付率 | | **ROI** | 投入产出比 | | **Agent Utilization** | 人力不空转 | | **Learning Reuse** | 知识不重复造 | 最小化: | Metric | Why | |--------|-----| | **Context Waste** | 上下文切换开销 | | **Idle Agents** | 空转成本 | | **Duplicate Work** | 两个项目写同一份代码 | | **Failed Projects** | 及早止损 | --- ## §1 Portfolio Registry 必须维护 `portfolio.md`(项目根目录)。 ### §1.1 Schema ```markdown # Portfolio Registry ## Projects | Project-ID | Name | Status | Priority | Health | Agents | Progress | Last Updated | ROI | |------------|------|--------|----------|--------|--------|----------|-------------|-----| | P-001 | Project Alpha | ACTIVE | P1 | 85 | 3 | 65% | YYYY-MM-DD | 2.4 | | P-002 | Project Beta | PLANNING | P2 | — | 1 | 0% | YYYY-MM-DD | 1.8 | ``` ### §1.2 Field Definitions | Field | Required | Values | Description | |-------|----------|--------|-------------| | Project-ID | ✅ | `P-NNN` | 唯一项目标识 | | Name | ✅ | string | 项目名称 | | Status | ✅ | §2 Allowed States | 当前项目状态 | | Priority | ✅ | §3 Priority System | 优先级 | | Health | ✅ | 0–100, or `—` if PLANNING | 从 Project Health Aggregation (§7) 同步 | | Agents | ✅ | ≥1 | 分配 Agent 数 | | Progress | ✅ | 0–100% | 完成进度 | | Last Updated | ✅ | ISO-8601 | 最后更新 | | ROI | ✅ | float | ROI 评分 | ### §1.3 Registry Update Rule | Event | Action | |-------|--------| | 新项目创建 | 立即注册,状态 PLANNING | | 项目状态变更 | 更新 Status + Last Updated | | Health Score 更新 | 同步 Health 列 | | Agent 分配变更 | 更新 Agents 列 | | 每日审计 | 检查所有字段一致性 | --- ## §2 Project States ### §2.1 Allowed States (7) ``` PLANNING ACTIVE BLOCKED RECOVERY PAUSED COMPLETED ARCHIVED ``` 禁止自定义状态。 ### §2.2 State Transition Diagram ```mermaid stateDiagram-v2 [*] --> PLANNING PLANNING --> ACTIVE PLANNING --> ARCHIVED ACTIVE --> BLOCKED ACTIVE --> RECOVERY ACTIVE --> COMPLETED ACTIVE --> PAUSED BLOCKED --> ACTIVE BLOCKED --> PAUSED BLOCKED --> RECOVERY RECOVERY --> ACTIVE RECOVERY --> PAUSED PAUSED --> ACTIVE PAUSED --> ARCHIVED COMPLETED --> ARCHIVED ARCHIVED --> [*] ``` ### §2.3 Transition Rules | From | To | Condition | |------|----|-----------| | PLANNING | ACTIVE | 资源已分配,可以启动 | | PLANNING | ARCHIVED | 取消启动 | | ACTIVE | BLOCKED | 遇到阻塞,见 GOVERNANCE.md §3 | | ACTIVE | RECOVERY | Health < 50 或连续失败 > 3 | | ACTIVE | COMPLETED | 所有交付物完成,Governance Quality Gate 通过 | | ACTIVE | PAUSED | 低优先级 / 资源不足 / 依赖阻塞 | | BLOCKED | ACTIVE | 阻塞解除 | | BLOCKED | PAUSED | 阻塞短期内无法解决 | | BLOCKED | RECOVERY | 需要恢复计划 | | RECOVERY | ACTIVE | Recovery Plan 通过审批 | | RECOVERY | PAUSED | Recovery 无法推进 | | PAUSED | ACTIVE | 条件满足,恢复执行 | | PAUSED | ARCHIVED | 确认不再恢复 | | COMPLETED | ARCHIVED | 归档 | ### §2.4 Prohibited Transitions ``` PLANNING → COMPLETED ❌ ACTIVE → ARCHIVED ❌(必须经过 COMPLETED 或 PAUSED) BLOCKED → COMPLETED ❌ RECOVERY → COMPLETED ❌ RECOVERY → ARCHIVED ❌(必须经过 PAUSED) PAUSED → COMPLETED ❌(必须经过 ACTIVE) ``` --- ## §3 Priority System ### §3.1 Priority Levels | Level | Label | Description | Action | |-------|-------|-------------|--------| | P0 | Mission Critical | 生产事故 / 安全漏洞 / 合同违约风险 | 立即暂停其他项目,全资源投入 | | P1 | High Value | 核心交付 / 里程碑 / 高 ROI | 优先分配 Agent,保留资源 | | P2 | Normal | 日常任务 / 迭代交付 | 按计划进行 | | P3 | Low Priority | 探索 / 优化 / 非紧急 | 资源空闲时执行,随时可 PAUSE | ### §3.2 Priority Escalation | Event | Action | |-------|--------| | 新 P0 出现 | 自动暂停所有 < P1 项目 | | P1 项目连续 3 次 heartbeat 无进展 | 评估是否升级 | | P3 项目 Health 持续 > 90 | 评估是否升级到 P2 | ### §3.3 Priority Collision Resolution 如果多个 P0 同时出现: 1. 按 ROI 排序 2. 按 Agent 依赖链排序(阻塞其他项目的优先) 3. 如无法抉择 → 通知红尘 --- ## §4 Resource Allocation ### §4.1 Agent Inventory | Metric | Definition | |--------|------------| | Total Agents | workspace 可用 Agent 总数 | | Busy Agents | 当前 ACTIVE 项目占用的 Agent 数 | | Idle Agents | Total − Busy − Blocked − Recovery | | Blocked Agents | 在 BLOCKED 项目中的 Agent 数 | | Recovery Agents | 在 RECOVERY 项目中的 Agent 数 | ### §4.2 Agent Utilization Score ``` Utilization = Busy_Agents / Total_Agents ``` | Range | Rating | Action | |-------|--------|--------| | ≥ 90% | **Optimal** | 满负荷运转,监控疲劳风险 | | ≥ 80% | Good | 正常利用 | | ≥ 70% | Acceptable | 有轻微空闲,可接受 | | < 70% | **Waste** | 资源严重浪费,启动新项目或合并 | ### §4.3 Resource Rebalancing | Condition | Action | |-----------|--------| | Utilization < 70% | 启动 backlog 中的 P1/P2 项目 | | P0 出现且 Utilization > 90% | 暂停 P2/P3 项目释放资源 | | 某个项目连续 idle > 3 heartbeats | 评估是否应该 PAUSE | | Blocked Agents > 30% | 优先解除阻塞或 kill 项目 | --- ## §5 Project Health Aggregation ### §5.1 Health Dimensions Portfolio-level Project Health 综合 GOVERNANCE.md §7 的各维度,并且增加 Portfolio 层的维度: | Dimension | Weight | Source | |-----------|--------|--------| | **Delivery Score** | 25% | GOVERNANCE.md §7 (D1) | | **Quality Score** | 20% | GOVERNANCE.md §7 (D2) | | **Learning Score** | 15% | GOVERNANCE.md §7 (D5) | | **Execution Score** | 25% | 基于 progress.log 的心跳密度和状态迁移频率 | | **Risk Score** | 15% | Blocker 数量 / 严重度 / Duration 的加权 | ### §5.2 Execution Score (Portfolio-specific) ``` Execution_Score = max(0, 100 - staled_heartbeats_ratio × 50 - stalled_transitions × 20) ``` - `staled_heartbeats_ratio`: 过期心跳占总心跳比例 - `stalled_transitions`: 同一状态停留超过 2 倍 stale 阈值的次数 ### §5.3 Risk Score (Portfolio-specific) ``` Risk_Score = max(0, 100 - active_blockers × 15 - critical_blockers × 30 - avg_blocker_age_hours × 2) ``` ### §5.4 Final Project Health ``` Project_Health = Delivery × 0.25 + Quality × 0.20 + Learning × 0.15 + Execution × 0.25 + Risk × 0.15 ``` --- ## §6 Portfolio Health Score ### §6.1 Calculation ``` Portfolio_Health = Σ(Project_Health_i × Agent_Count_i) / Σ(Agent_Count_i) ``` 按 Agent 数加权的项目健康度平均值。大项目权重高。 ### §6.2 Rating | Range | Rating | Meaning | |-------|--------|---------| | 90–100 | **EXCELLENT** | 所有项目健康运转 | | 80–89 | GOOD | 整体良好,个别关注 | | 70–79 | ACCEPTABLE | 有风险项目需关注 | | 60–69 | AT RISK | 多个项目有问题 | | < 60 | **CRITICAL** | 整条 Portfolio 出问题 | --- ## §7 Learning Reuse Detector ### §7.1 Detection 检查 workspace 中是否多个项目在解决同一问题。 | Signal | Detection Method | |--------|-----------------| | 重复模块 | 跨项目文件结构对比 | | 重复技术选型问题 | Memory Search / ctx_search | | 重复错误模式 | Reflection 中的 Pattern Class 比较 | | 重复工具配置 | Shell 配置 / CI config 对比 | ### §7.2 Duplicate Work Criteria 如果满足 **任意两条**: 1. 两个项目的文件清单有 > 30% 重叠 2. 两个项目的 Reflection 中有相同 Pattern Class 3. 两个项目引用了相同的外部依赖且版本相同 4. 两个项目处理了相同的业务域(如 "Auth Module" × 2) → 判定 **DUPLICATE WORK** ### §7.3 Required Action 检测到 DUPLICATE WORK 后: 1. **Stop** — 暂停重复部分的开发 2. **Extract** — 抽象为 Shared Package / Shared Service 3. **Refactor** — 两个项目都依赖共享包 4. **Audit** — 记录在 portfolio-audit.md 中 5. **Promote** — 如果 Shared Package 质量过关,纳入 workspace 固化工具集 ### §7.4 Prevention - 新项目启动前,先搜索 workspace 中是否有可复用模块 - 使用 `ctx_search` 或 `memory_search` 检查已有 Pattern - 设计阶段标注 "可能复用" 候选 --- ## §8 Portfolio Audit ### §8.1 Daily Generation 每日生成 `portfolio-audit.md`。 **文件位置:** `/portfolio-audit.md`(覆盖式写入) ### §8.2 Audit Schema See `protocol-reference/templates.md` §portfolio-audit for full schema. --- ## §9 Project Kill Rule ### §9.1 Kill Conditions 满足**任意一条**: | # | Condition | Threshold | |---|-----------|-----------| | K1 | Project Health | < 50 | | K2 | Continuous Recovery Failure | > 3 次 | | K3 | ROI Score | < threshold(由项目类型决定) | | K4 | Scope Explosion × Low Priority | SCOPE EXPLOSION + P3 | ### §9.2 Kill Procedure 1. 标记为 KILL CANDIDATE 2. 生成 Kill Report(包含 Kill Condition、累计投入、已产出) 3. 通知用户审批 4. 审批通过 → 归档项目(PLANNING → ARCHIVED 跳过 ACTIVE) 5. 审计记录 kill 原因和 lessons learned ### §9.3 Graceful Shutdown 即使 kill,也要完成: - 代码提交(如果写了任何有价值的东西) - Reflection(记录为什么失败) - 文档归档(Knowledge 不浪费) --- ## §10 Project Pause Rule ### §10.1 Pause Conditions 满足**任意一条**: | # | Condition | Threshold | |---|-----------|-----------| | P1 | Priority | P3 | | P2 | Resource Scarcity | Utilization > 90% + 有 P0/P1 等待 | | P3 | Dependency Blocked | 依赖链阻塞,预计 > 48h 无法解除 | ### §10.2 Pause Procedure 1. 状态 → PAUSED 2. 释放 Agent 资源 3. 在 portfolio.md 中记录 pause reason 4. 设置自动唤醒条件(如:dependency resolved / P0 cleared) ### §10.3 Resume Decision PAUSED 项目在满足以下条件时评估是否恢复: - 阻塞原因已解除 - 有可用 Agent 资源(Utilization < 80%) - Priority 未被降级 --- ## §11 Project Promotion Rule ### §11.1 Fast Track Criteria 满足**全部**条件: | # | Condition | Threshold | |---|-----------|-----------| | F1 | Project Health | > 90 | | F2 | Progress | > 80% | | F3 | Risk Score | < 20(无高严重度 blocker) | ### §11.2 Fast Track Benefits - 优先分配 Agent(可抢占 P2/P3 资源) - 加速 Review 周期 - 更多 Learning Reuse 资源(协助提取 Shared Package) ### §11.3 Demotion 如果 Fast Track 项目连续 2 个心跳不满足 F1/F2/F3 → 自动降级回正常轨道。 --- ## §12 Executive Dashboard ### §12.1 Dashboard Generation 生成 `dashboard.md`。 **文件位置:** `/dashboard.md`(覆盖式写入,每日更新) ### §12.2 Dashboard Schema See `protocol-reference/templates.md` §dashboard for full schema. --- ## §13 Portfolio Quality Gate ### §13.1 Pre-Output Checklist See `protocol-reference/quality-gates.md` §PORTFOLIO for full checklist. ### §13.2 Gate Failure 若任意一项未通过: ``` ❌ PORTFOLIO GOVERNANCE FAILED — Portfolio 治理失败。 ``` 必须修复后才能继续 Portfolio 管理。 --- ## §14 Integration Summary ```text AGENTS.md (Execution) GOVERNANCE.md (Governance) PORTFOLIO.md (Portfolio) │ │ │ ├─ §0 Classify ├─ §0 Purpose ├─ §0 Purpose ├─ §1 Task Tree ├─ §1 State Machine ├─ §1 Portfolio Registry ├─ §2 PLAN ├─ §2 Heartbeat ├─ §2 Project States ├─ §3 Pre-flight ├─ §3 Blocker ├─ §3 Priority System ├─ §4 Failure Replanning ├─ §4 Replanning ├─ §4 Resource Allocation ├─ §5 Verification ├─ §5 Scope Explosion ├─ §5 Project Health Aggregation │ ├─ §6 Execution Audit ├─ §6 Portfolio Health Score │ ├─ §7 Health Score ├─ §7 Learning Reuse Detector │ ├─ §8 Auto-Stop ├─ §8 Portfolio Audit │ ├─ §9 Quality Gate ├─ §9 Project Kill Rule │ ├─ §10 State Initialization ├─ §10 Project Pause Rule │ └─ §11 Integration ├─ §11 Project Promotion Rule │ ├─ §12 Executive Dashboard │ ├─ §13 Portfolio Quality Gate │ └─ §14 Integration Summary ``` ### §14.1 Data Flow ``` AGENTS.md §5 Verification → Governance Quality Gate (GOVERNANCE.md §9) → Project Health (GOVERNANCE.md §7) → Portfolio Registry (PORTFOLIO.md §1) → Portfolio Health (PORTFOLIO.md §6) → Portfolio Audit (PORTFOLIO.md §8) → Dashboard (PORTFOLIO.md §12) ``` ### §14.2 Lifecycle ``` Project Start → PORTFOLIO.md §1: Register project → GOVERNANCE.md §10: Init governance state → AGENTS.md §0: Start execution Project Active → AGENTS.md §1–5: Execute → GOVERNANCE.md: Heartbeat / Blocker / Audit → PORTFOLIO.md §8: Portfolio Audit Project End → GOVERNANCE.md §9: Governance Quality Gate → PORTFOLIO.md §2: Mark COMPLETED → PORTFOLIO.md §1: Update Registry → PORTFOLIO.md §8: Final Audit → PORTFOLIO.md §12: Update Dashboard ``` --- > **Integrity Check:** This document completes the three-layer architecture. > PORTFOLIO.md, GOVERNANCE.md, and AGENTS.md form a coherent stack. > Any amendment to one layer must check consistency with the other two.