Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/plan/dependency-graph.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
7 changes: 4 additions & 3 deletions docs/plan/milestones.md
Original file line number Diff line number Diff line change
@@ -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 |
Expand Down Expand Up @@ -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.
24 changes: 24 additions & 0 deletions docs/plan/post-polish-dependency-graph.md
Original file line number Diff line number Diff line change
@@ -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.
20 changes: 20 additions & 0 deletions docs/plan/post-polish-milestones.md
Original file line number Diff line number Diff line change
@@ -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 |
Comment on lines +3 to +6

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Keep phase numbers separate from GitHub milestone numbers.

This artifact labels 79 and 80 as milestones, while docs/progress/MASTER.md and docs/plan/milestones.md define GitHub milestones 98 and 99 for Phases 79–80. Add explicit Phase and GH milestone columns, or change the identifiers to 98/99.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/plan/post-polish-milestones.md` around lines 3 - 6, Update the milestone
table in post-polish-milestones.md to distinguish phase numbers from GitHub
milestone numbers: add explicit Phase and GH milestone columns, mapping phases
79 and 80 to GitHub milestones 98 and 99 respectively, while preserving the
existing milestone names, criteria, and statuses.


## 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
```
45 changes: 45 additions & 0 deletions docs/plan/post-polish-task-breakdown.md
Original file line number Diff line number Diff line change
@@ -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
9 changes: 5 additions & 4 deletions docs/plan/task-breakdown.md
Original file line number Diff line number Diff line change
@@ -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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Preserve MASTER as the sole live index.

“Live tracking is GITHUB_FULL via MASTER + post-polish plan” makes the plan appear to be a second live tracker. Clarify that MASTER is the sole live index and the post-polish documents are linked plan SSOT artifacts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/plan/task-breakdown.md` at line 10, Update the tracking note in
task-breakdown.md to state that MASTER is the sole live index, while the
post-polish documents are linked plan SSOT artifacts rather than a second live
tracker.

> hard rule: **NO big-bang rewrite**
> reality: Phases 1–7 complete (#424–#451 / PR #446). Do not list #447–#451 as open.

Expand Down
82 changes: 57 additions & 25 deletions docs/progress/MASTER.md
Original file line number Diff line number Diff line change
@@ -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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Align all document timestamps with the actual publication date.

  • docs/progress/MASTER.md#L5-L5: replace the future Last Updated date.
  • docs/plan/milestones.md#L33-L35: replace the future Reality sync date.
  • docs/plan/task-breakdown.md#L8-L8: replace the future last-updated date.
  • docs/roadmap.md#L3-L3: replace the future last-updated date.
📍 Affects 4 files
  • docs/progress/MASTER.md#L5-L5 (this comment)
  • docs/plan/milestones.md#L33-L35
  • docs/plan/task-breakdown.md#L8-L8
  • docs/roadmap.md#L3-L3
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/progress/MASTER.md` at line 5, Replace the future document timestamps
with the actual publication date in docs/progress/MASTER.md lines 5-5,
docs/plan/milestones.md lines 33-35, docs/plan/task-breakdown.md lines 8-8, and
docs/roadmap.md lines 3-3; keep each document’s existing timestamp label and
formatting unchanged.

> **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 |
|:------|:-----|:-------|
Expand All @@ -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 | ✅ |
Expand All @@ -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 |
Comment on lines +73 to +79

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Make the perf/leak evidence boundary explicit in every live summary.

  • docs/progress/MASTER.md#L73-L79: state that behavior/microbenchmark evidence proves neither leak absence nor production capacity.
  • docs/roadmap.md#L46-L47: mirror the same explicit limitation in the roadmap acceptance text.
📍 Affects 2 files
  • docs/progress/MASTER.md#L73-L79 (this comment)
  • docs/roadmap.md#L46-L47
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/progress/MASTER.md` around lines 73 - 79, Make the perf/leak evidence
boundary explicit in both live summaries: update docs/progress/MASTER.md lines
73-79 to state that behavior and microbenchmark evidence proves neither leak
absence nor production capacity, and mirror the same limitation in
docs/roadmap.md lines 46-47 acceptance text. Preserve the existing evidence
classifications and capacity status.


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 |
28 changes: 13 additions & 15 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# AgentHub Roadmap

最后更新:2026-07-20
最后更新:2026-07-21

本文档是 AgentHub 的总进度入口,只记录当前方向、优先级和验收边界。历史 longform roadmap 见 [history.md](history.md)。

Expand All @@ -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 |

Expand All @@ -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 |

## 架构入口

Expand Down
Loading