本卡為 FR-170 母案 P1。P0(母卡 CM-3232,17 張全 Done、已合回三 repo 的 feature/FR-139)搭好地基與守衛後,49 支業務檔仍住舊的 core/。P1 把「登入」(identity,8 支)與「跟主系統講話」(sync,17 支)搬進 guidant_agent/,搬前先剪三條纏在一起的線。決策者 2026-10-30 裁:卡先建不放行;發版與線上更新用 P0 版(Agent 9044d95);P0 若要修先合主線、再開本工作坊放行批 12。
為什麼另開母卡
P0 工作坊 28 要結案收工作樹,結案要求母卡底下全部子卡 Done;P1 五張掛在 CM-3232 下會擋結案,所以 P1 獨立一張母卡、之後新開工作坊選它。P0 到 P1 的脈絡在 design.md §5/§5.1 與 handoff/FR-170-STATE.md,不在卡上重複。
P1 做什麼(白話)
三條要先剪的線:①「寫稽核紀錄」工具八處跨模組用卻住在主控台資料夾 → 搬公用區 shared;②「本機管理員」常數九處用 → 搬 shared;③「連主系統那條線」(帶憑證、串流下載)寫在掃描模組裡但心跳、漏洞庫、profile、升級都在用 → 抽成 sync 自己的 adapter,掃描反過來借用。剪完再搬本體:identity 順便接 jedi-password(P0 抽套件的目的,舊雜湊必須仍可登入);sync 搬完 Agent 要原封不動連回 DEV(同 agent_uid、同憑證)。
子卡與批次
批=可同時派的一組。批 12 兩張不撞檔(1-1 改 shared 與三支殼、1-2 改 identity 八支);13→14→15 有先後。P1-3 是最危險的一張(心跳迴圈與下載通道),首腦要真機驗。
- 批 12|CM-3319|FR-170.P1-1 shared 收攏:audit()、LOCAL_ADMIN_SUB、heartbeat_wake 搬 guidant_agent/shared/,舊路徑留殼,白名單刪對應邊(evidence-agent)|https://app.notion.com/p/FR-170-P1-1-shared-audit-LOCAL_ADMIN_SUB-heartbeat_wake-guidant_agent-shared-e-409346da4cd081d99941d4b338f051b1
- 批 12|CM-3320|FR-170.P1-2 identity 模組:8 支搬 guidant_agent/identity/,local_credentials 的 SQL 進 adapters、密碼雜湊改接 jedi-password、三個全域收類別、ModuleSpec 登記(evidence-agent)|https://app.notion.com/p/FR-170-P1-2-identity-8-guidant_agent-identity-local_credentials-SQL-adapters-jedi--409346da4cd081d18f5ef2aee8aabf00
- 批 13|CM-3321|FR-170.P1-3 sync 通道與 observer 掛點:_post/_get_stream/_build_file_downloader 從 task_executor 抽成 sync/adapters/cloud_channel.py;心跳 observer 改走 registry;scan 改用 port(evidence-agent)|https://app.notion.com/p/FR-170-P1-3-sync-observer-_post-_get_stream-_build_file_downloader-task_executor-sync-ad-409346da4cd081d1a452f470855362b4
- 批 14|CM-3322|FR-170.P1-4 sync 模組搬遷:17 支搬 guidant_agent/sync/,outbox SQL 進 adapters、六個全域收類別、identity↔sync 四條邊用 port 解、資料面 8443 進 sync/api(evidence-agent)|https://app.notion.com/p/FR-170-P1-4-sync-17-guidant_agent-sync-outbox-SQL-adapters-identity-sync-por-409346da4cd0813f8d80e87b821f16ef
- 批 15|CM-3323|FR-170.P1-5 console 退聚合+P1 收尾:console 對 identity/sync 的 import 改走 app service;刪確定無人 import 的殼;LEGACY_MODULE_OF 與 ALLOWLIST 對帳;全量+真機(evidence-agent)|https://app.notion.com/p/FR-170-P1-5-console-P1-console-identity-sync-import-app-service-import-LEGACY-409346da4cd08151bad9e8fb9afc4386
放行前的檢查(首腦)
- P0 之後若有修正(發版期間),確認已合進 feature/FR-139 再放行;小弟開工第一步 git log 貼回寫。
- 本機 Agent 用 ~/guidant-agent-local/start-agent.sh(venv evidence-agent-knWYPLiu-py3.13);真機驗收連 DEV BE。
- FR-167 若有 Agent 側卡同時在跑,不與批 13/14 同時(都動 core/enroll.py、core/update_sync.py)。
必讀
compliance-manager-be/docs/features/FR-170-2610-agent-architecture/design.md §2 目標結構、§5.1 P1 拆分、§7 風險
- 拆卡底表
handoff/cards_p1.py;分析依據 handoff/FR-170-LOG.md 第 4 棒
- Agent repo
docs/ARCHITECTURE.md、CLAUDE.md「程式放哪裡」「資安開發規範」、.claude/rules/security/ 六支