diff --git a/docs/plan/dependency-graph.md b/docs/plan/dependency-graph.md index 5408b1f6..818ffacc 100644 --- a/docs/plan/dependency-graph.md +++ b/docs/plan/dependency-graph.md @@ -1,7 +1,7 @@ # Task Dependency Graph > **HISTORICAL — cleanup-baseline freeze (closed 2026-07-16 / PR #446).** -> Not live backlog. Live phases: [../progress/MASTER.md](../progress/MASTER.md). +> **Not live backlog.** Live program SSOT: [../progress/MASTER.md](../progress/MASTER.md) (post-polish residual Phases 79–80). > Snapshot also under [../archives/cleanup-baseline/plan/](../archives/cleanup-baseline/plan/). ```mermaid diff --git a/docs/plan/milestones.md b/docs/plan/milestones.md index f2b4d977..66611a0b 100644 --- a/docs/plan/milestones.md +++ b/docs/plan/milestones.md @@ -1,7 +1,8 @@ # Milestones > **HISTORICAL — cleanup-baseline freeze (closed 2026-07-16 / PR #446).** -> Not live backlog. Live phases and open issues: [../progress/MASTER.md](../progress/MASTER.md) (Phase 61 / milestone 82). +> **Not live backlog.** Do not resume these milestones as open work. +> Live program SSOT: [../progress/MASTER.md](../progress/MASTER.md) (post-polish residual Phases 79–80 · GH milestones 98–99). > Snapshot also under [../archives/cleanup-baseline/plan/](../archives/cleanup-baseline/plan/). | # | Milestone | Target Phase | Criteria | Status | @@ -29,7 +30,7 @@ 5. **PR closes Issue**; no freestyle multi-workflow implementation without Issue binding 6. Workflows/subagents are **executors of Issues**, not a second backlog -## Reality sync (2026-07-18) +## Reality sync (2026-07-21) - Cleanup-baseline program Phases 1–7 closed: issues `#424`–`#451` via PR #446 (2026-07-16). -- Live tracker SSOT: `docs/progress/MASTER.md` + Project board (Phase 61 / milestone 82). +- Live tracker SSOT: `docs/progress/MASTER.md` + post-polish plan (Phases 79–80 · issues #1335–#1339). - Do not reopen `#447`–`#451` as open work. diff --git a/docs/plan/post-polish-dependency-graph.md b/docs/plan/post-polish-dependency-graph.md new file mode 100644 index 00000000..75968844 --- /dev/null +++ b/docs/plan/post-polish-dependency-graph.md @@ -0,0 +1,24 @@ +# Dependency Graph — Post-Polish Residual + +```mermaid +flowchart TD + subgraph P79[Phase 79 Docs Authority] + T791[T79.1 plan banners + MASTER] + T792[T79.2 perf gate evidence note] + T791 --> T792 + end + + subgraph P80[Phase 80 Mobile hubClient] + T801[T80.1 inventory] + T802[T80.2 thin re-export] + T803[T80.3 RN boundary note] + T801 --> T802 --> T803 + end + + T791 --> T801 +``` + +## Parallelism + +- B1 (docs) and B2 inventory (T80.1) can start after T79.1 lands; default serial for single-owner velocity. +- No file overlap between B1 and B2. diff --git a/docs/plan/post-polish-milestones.md b/docs/plan/post-polish-milestones.md new file mode 100644 index 00000000..18d38594 --- /dev/null +++ b/docs/plan/post-polish-milestones.md @@ -0,0 +1,20 @@ +# Milestones — Post-Polish Residual Hardening + +| # | Milestone | Criteria | Status | +|---|---|---|---| +| 79 | Docs Authority + Gates Hygiene | plan/* non-live; MASTER sole index; doc SSOT green; perf gate noted | open | +| 80 | Mobile hubClient Strangler | thin re-export; typecheck green; RN Hub-only boundary documented | open | + +## Adaptive control (initial) + +```yaml +adaptive: + drift_score: 0 + strategy: "strangler-mobile-hubclient-docs" + thresholds: + annotate: 1 + replan: 2 + rescope: 3 + total_tasks: 5 + completed_tasks: 0 +``` diff --git a/docs/plan/post-polish-task-breakdown.md b/docs/plan/post-polish-task-breakdown.md new file mode 100644 index 00000000..d6c64c8f --- /dev/null +++ b/docs/plan/post-polish-task-breakdown.md @@ -0,0 +1,45 @@ +# Task Breakdown — Post-Polish Residual Hardening + +> last-updated: 2026-07-20 +> program: post-visual-polish residual (after gate 89) +> tracking: GITHUB_FULL +> hard rule: **NO big-bang rewrite**; Mobile UI deep refactor out of scope +> strategy: Strangler Fig — thin mobile hubClient + docs authority + +## Overview + +| Item | Value | +|---|---| +| Total Phases | 2 | +| Total Tasks | 5 | +| Strategy | Strangler + Spec-Driven | +| Super focus | R (Replaceable), P (Ports), E (Environment-agnostic) | + +## Phase 79: Docs Authority + Gates Hygiene + +| # | Task | Priority | Effort | Depends | Super | Acceptance | +|---|---|---|---|---|---|---| +| T79.1 | Strengthen HISTORICAL banners on cleanup-baseline `docs/plan/*`; MASTER becomes sole live index for post-polish | P0 | S | — | E | plan files explicit non-live; MASTER links post-polish analysis; `verify-doc-ssot.ps1` green | +| T79.2 | Record backend perf gate green + optional workflow_dispatch note in MASTER/roadmap | P1 | S | T79.1 | E | evidence note; no claim of production capacity | + +## Phase 80: Mobile hubClient Strangler + +| # | Task | Priority | Effort | Depends | Super | Acceptance | +|---|---|---|---|---|---|---| +| T80.1 | Inventory mobile-only surface (errors, WS helpers, fixture snapshot) vs shared SSOT methods | P0 | M | T79.1 | P | analysis note in issue/PR; list keep vs re-export | +| T80.2 | Thin mobile hubClient: re-export shared types/methods; keep mobile-only glue (SecureStore refresh, fixture snapshot, legacy WS types) | P0 | L | T80.1 | R,P | file shrinks; no new REST methods on mobile; `pnpm --filter agenthub-mobile-rn typecheck` (+ focused tests if present) | +| T80.3 | RN-safe boundary note: Mobile remains Hub-only; no Local Edge; document in AGENTS or mobile README | P1 | S | T80.2 | E,U | docs + existing verify scripts still pass | + +## Delivery Batches + +| Batch | Tasks | Branch | Rationale | +|---|---|---|---| +| B1 | T79.1 + T79.2 | `feat/p79-docs-authority` | docs-only, independent | +| B2 | T80.1 + T80.2 + T80.3 | `feat/p80-mobile-hubclient-thin` | single mobile API surface PR for reviewability | + +## Out of Scope + +- Live OIDC / secret rotation / packaged Desktop evidence +- Full Mobile UI redesign +- Further Edge handlers split without API change +- Static Visual QA gate chase past 89 diff --git a/docs/plan/task-breakdown.md b/docs/plan/task-breakdown.md index 819b8cb0..2ce0ef28 100644 --- a/docs/plan/task-breakdown.md +++ b/docs/plan/task-breakdown.md @@ -1,12 +1,13 @@ # Task Breakdown — AgentHub Cleanup Baseline > **HISTORICAL — cleanup-baseline freeze (closed 2026-07-16 / PR #446).** -> Not live backlog. Live phases and open issues: [../progress/MASTER.md](../progress/MASTER.md) (Phase 61 / milestone 82). +> **Not live backlog.** Do not resume Phases 1–7 or treat #424–#451 as open work. +> Live program SSOT: [../progress/MASTER.md](../progress/MASTER.md) (post-polish residual Phases 79–80 · issues #1335–#1339). > Snapshot also under [../archives/cleanup-baseline/plan/](../archives/cleanup-baseline/plan/). > -> last-updated: 2026-07-18 -> program: knowledge-first strangler cleanup + lightweight wiki (non-SSOT) -> tracking: GITHUB_FULL (Issues + Milestones + Project board) +> last-updated: 2026-07-21 +> program: knowledge-first strangler cleanup + lightweight wiki (non-SSOT) — **CLOSED** +> tracking: historical only; live tracking is GITHUB_FULL via MASTER + post-polish plan > hard rule: **NO big-bang rewrite** > reality: Phases 1–7 complete (#424–#451 / PR #446). Do not list #447–#451 as open. diff --git a/docs/progress/MASTER.md b/docs/progress/MASTER.md index 57bb3d9d..614dd7c4 100644 --- a/docs/progress/MASTER.md +++ b/docs/progress/MASTER.md @@ -1,20 +1,29 @@ # AgentHub Progress Tracker -> **Task**: continuous product polish (architecture / UIUX / design system / hygiene) -> **Started**: 2026-07-16 -> **Last Updated**: 2026-07-20 +> **Task**: post-polish residual hardening (docs authority + mobile hubClient strangler) +> **Started**: 2026-07-16 (Visual polish); residual program 2026-07-20 +> **Last Updated**: 2026-07-21 > **Mode**: `GITHUB_FULL` > **Repo**: `TokenDanceLab/AgentHub` -## Merged PRs (today, 19 total) -P74 #1295 · P75 #1310 · P76 #1315 · rescore #1317 · -P77 #1319 · P77 #1321 · P77 #1324 · P77 #1325 · -P78 #1326 · P78 #1327 · P78 #1328 · P78 #1329 · -P78 #1330 · P78 #1331 · infra #1332 · infra #1333 · -docs: rescore consolidation + AGENTS.md update + Phase 73/74 close -deps: dependabot serde_with bump #423 +## Live program (sole index) -## Milestones — ALL CLOSED +| Item | Value | +|---|---| +| Program | Post-Polish Residual Hardening | +| Analysis SSOT | [post-polish-project-overview](../analysis/post-polish-project-overview.md) · [module-inventory](../analysis/post-polish-module-inventory.md) · [risk-assessment](../analysis/post-polish-risk-assessment.md) | +| Plan SSOT | [task-breakdown](../plan/post-polish-task-breakdown.md) · [dependency-graph](../plan/post-polish-dependency-graph.md) · [milestones](../plan/post-polish-milestones.md) | +| Strategy | Strangler Fig — thin mobile hubClient + docs authority; **no** big-bang rewrite; **no** static Visual QA chase past 89 | +| Tracking | Issues **#1335–#1339** · GH milestones **98** (Phase 79) · **99** (Phase 80) | + +### Open phases + +| Phase | Name | Milestone | Issues | Status | +|:------|:-----|:----------|:-------|:-------| +| 79 | Docs Authority + Gates Hygiene | 98 | #1335 #1336 | in progress | +| 80 | Mobile hubClient Strangler | 99 | #1337 #1338 #1339 | queued | + +### Closed polish phases (2026-07-20) | Phase | Name | Status | |:------|:-----|:-------| @@ -25,18 +34,16 @@ deps: dependabot serde_with bump #423 | 77 | Agents density + blank browser + terminal dock | closed | | 78 | A11y focus + Glass border/shadows/elevation + CI path-filter | closed | -## References -- [visual-qa-scorecard](../analysis/visual-qa-scorecard.md) — canonical SSOT (final gate 89) -- [visual-qa-score-2026-07-20-rescore-17-final.md](../analysis/visual-qa-score-2026-07-20-rescore-17-final.md) — full PR trace -- [_archive/](../analysis/_archive/) — 16 intermediate rescore files +Historical cleanup-baseline plan under `docs/plan/task-breakdown.md` (and siblings) is **HISTORICAL only** — not live backlog. -## Final Status +## Product tip & Visual QA -**Product tip**: `04a28663` +**Product tip**: see latest `master` (analysis tip at residual start: `4c222e06`) **Gate**: **89**/100 — 🟢🟢🟢 **SHIP** -**Gate history**: 55 → 76 → 79 → 82 → 84 → 85 → 87 → 88 → **89** (+34 in one day) +**Gate history**: 55 → 76 → 79 → 82 → 84 → 85 → 87 → 88 → **89** ### Dimension grid (7/9 maxed) + | Dim | Score | Max | Status | |-----|-------|-----|--------| | Glass | 18 | 18 | ✅ | @@ -49,16 +56,41 @@ deps: dependabot serde_with bump #423 | Type | 9 | 10 | ⏳ zh refinement | | Motion | 9 | 10 | ⏳ interactive eval | -### Infrastructure wins -- Unified CI path-filter (`changes` job via dorny/paths-filter@v3) -- Go-only PR skips frontend CI; CSS-only PR skips Go CI -- Estimated savings: up to 20 CI minutes per PR +References: [visual-qa-scorecard](../analysis/visual-qa-scorecard.md) · [rescore-17-final](../analysis/visual-qa-score-2026-07-20-rescore-17-final.md) · [_archive/](../analysis/_archive/) ### Methodology ceiling -Remaining 3pt (Type/Motion/Empty) require interactive testing, multi-state data, -or multi-component CJK font changes — beyond static 1440×810 screenshot evaluation. + +Remaining 3pt (Type/Motion/Empty) require interactive testing, multi-state data, or multi-component CJK font changes — beyond static 1440×810 screenshot evaluation. **Do not chase gate past 89** under residual program. + +## Infrastructure & gates hygiene + +### CI path-filter + +- Unified `changes` job (`dorny/paths-filter@v3`) in `.github/workflows/checks.yml` +- Go-only PR skips frontend CI; CSS-only PR skips Go CI +- Estimated savings: up to ~20 CI minutes per PR + +### Backend perf / leak gates (T79.2 evidence) + +| Item | State | Note | +|---|---|---| +| `scripts/verify/verify-backend-perf-leak-gates.ps1` | **PASS** (behavior + short microbench) | Not production capacity | +| [backend-performance-gates.md](../reference/backend-performance-gates.md) | Active owner (dated 2026-06-27) | Evidence classes: behavior / microbench / load smoke / pprof | +| Capacity claim | **Not claimed** | Load smoke / pprof still path-specific; no “production capacity proven” language | + +Optional future: wire script as `workflow_dispatch` only — not every PR (see residual risk assessment T5). + +## Explicit out of scope (residual) + +- Live OIDC / secret rotation / packaged Desktop evidence +- Full Mobile UI redesign +- Static Visual QA gate chase past 89 +- Edge handlers further split without concrete API change ## Session Log + | Date | Summary | |:-----|:--------| -| 2026-07-20 | 🟢🟢🟢 **FINAL Ship 89** — 19 commits, 7/9 dims maxed, CI optimized, docs consolidated | +| 2026-07-20 | 🟢🟢🟢 **Ship 89** — polish Phases 73–78 closed; CI path-filter; docs rescore archive | +| 2026-07-20 | SDD Phase 0–1: post-polish analysis trio committed | +| 2026-07-21 | Residual program live: MASTER sole index; Phases 79–80 · #1335–#1339 | diff --git a/docs/roadmap.md b/docs/roadmap.md index 799013a1..05c2a9b2 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,6 +1,6 @@ # AgentHub Roadmap -最后更新:2026-07-20 +最后更新:2026-07-21 本文档是 AgentHub 的总进度入口,只记录当前方向、优先级和验收边界。历史 longform roadmap 见 [history.md](history.md)。 @@ -17,24 +17,23 @@ AgentHub 是 IM 形态的多 Agent 协作工作台。用户面对的是联系人 ## 当前 SPEC -活进度只看 [progress/MASTER.md](progress/MASTER.md)(Phases 73–78 all closed · milestones 94–95 closed · gate 89 Ship)。cleanup-baseline(Phases 0–7)已于 2026-07-16 随 PR [#446](https://github.com/TokenDanceLab/AgentHub/pull/446) 关闭;历史 plan/analysis 快照见 [archives/cleanup-baseline/](archives/cleanup-baseline/) 与 [history.md](history.md)。 +活进度只看 [progress/MASTER.md](progress/MASTER.md)。 -**Baseline closed(绝对日期指针,非 live backlog)**: - -| Program | Closed | Pointer | +| Program | Status | Pointer | |---|---|---| -| Cleanup baseline Phases 1–7 | 2026-07-16 / PR #446 | [progress/MASTER.md](progress/MASTER.md) · [archives/cleanup-baseline/](archives/cleanup-baseline/) | -| Repo Structure Doc Tooling Cleanup | pre-baseline | [history.md](history.md) | +| **Post-Polish Residual Hardening** (Phases 79–80) | **live** | MASTER · [plan/post-polish-task-breakdown.md](plan/post-polish-task-breakdown.md) · issues #1335–#1339 · GH milestones 98–99 | +| Visual polish (Phases 73–78) | closed 2026-07-20 · gate **89 Ship** | [analysis/visual-qa-scorecard.md](analysis/visual-qa-scorecard.md) | +| Cleanup baseline (Phases 0–7) | closed 2026-07-16 / PR [#446](https://github.com/TokenDanceLab/AgentHub/pull/446) | [archives/cleanup-baseline/](archives/cleanup-baseline/) · historical `docs/plan/*` banners | ## 当前优先级 -### P0 +### P0(residual program) | 方向 | 目标 | 验收 | |---|---|---| -| 文档治理 | active docs 只保留规则、当前 spec(若存在)、总路线、架构和契约入口;重复规则面和历史 longform/审计/发布材料/旧入口快照归档 | `scripts/verify/verify-doc-ssot.ps1` | +| Docs authority | cleanup `docs/plan/*` 明确 HISTORICAL;MASTER 为 sole live index;post-polish plan 入库 | `scripts/verify/verify-doc-ssot.ps1` + MASTER 链接 #1335–#1339 | +| Mobile hubClient thin | 再导出 shared SSOT;仅保留 SecureStore/fixture/WS 胶水;禁止 mobile 新增 REST | `pnpm --filter agenthub-mobile-rn typecheck` + focused tests · #1337–#1339 | | 真实 E2E 合同 | `.agents/skills/real-e2e-acceptance/SKILL.md` 是唯一证据等级矩阵 | `scripts/verify/verify-real-e2e-contract.ps1` | -| 远控拓扑前置合同 | P0 remote-control fixture 验证 `Web -> Hub -> Desktop/Edge -> Local Edge -> CLI/SDK adapter` 的离线拓扑形状,不声明真实登录或真实执行 | `scripts/verify/verify-p0-remote-control-fixture.ps1` | | Chat flow 可靠性 | 发送不消失、消息线性排序、自动滚动、卡片合并、markdown/table 渲染 | Desktop/Web Playwright + Visual QA | | Hub/Edge 安全边界 | TokenDance ID 只做身份,AgentHub 权限由 Hub 本地资源检查决定 | 后端 auth/permission tests + security risk register | @@ -44,17 +43,16 @@ AgentHub 是 IM 形态的多 Agent 协作工作台。用户面对的是联系人 |---|---|---| | Web/Mobile client test lanes | Web 保持 Hub-only;Mobile 只澄清 RN-safe shared contract gate,不做 native/UI 深入重构 | Web data-boundary checks + Mobile mock-Hub/Expo Doctor boundary notes | | Desktop packaged boundary | 区分 Vite renderer、Tauri packaged、sidecar、icon、installer/signing | packaged-release gate 或明确 `real_tested=false` | -| Source/test alignment | Shared transcript/data-mode normalizer 和 Desktop/Web 实现一致 | shared unit + app E2E | -| Backend performance/leak | 对 Hub EventBus/outbox/scheduler/Redis TTL、Edge lifecycle/store/adapters 建立路径级检查 | [reference/backend-performance-gates.md](reference/backend-performance-gates.md) + `scripts/verify/verify-backend-perf-leak-gates.ps1` | +| Backend performance/leak | 行为/微基准门禁已绿;不声明生产容量 | [reference/backend-performance-gates.md](reference/backend-performance-gates.md) + `scripts/verify/verify-backend-perf-leak-gates.ps1` **PASS**(非 capacity) | | API contract hygiene | REST 以 `api/openapi.yaml` 为准,WS 以 `api/events.md` 为准 | OpenAPI parse + endpoint tests | ### P2 | 方向 | 目标 | 验收 | |---|---|---| -| Mobile | 暂不做 UI/native 深入重构;只保持现有 required gate 边界清楚 | Expo Web Visual QA + mock-Hub + Expo Doctor,不声明 native/device/real Hub | -| Release hardening | High 风险关闭或 accepted,依赖漏洞和安全头补齐 | release gate + risk register | -| Long-term docs | 活跃文档只保留入口/当前事实/owner 链接;历史 session log、审计和旧入口快照归档 | doc SSOT + 人工 review | +| Mobile UI/native | 暂不做 UI/native 深入重构;只保持 required gate 边界清楚 | Expo Web Visual QA + mock-Hub + Expo Doctor,不声明 native/device/real Hub | +| Visual residual | Type/Motion/Empty 剩余 3pt — 仅在 interactive methodology 下推进 | 不 chase static gate past 89 | +| Release hardening | High 风险关闭或 accepted;deploy/client 证据项显式 defer | release gate + risk register | ## 架构入口