Your Name
13e51802fe
feat(awooop): Phase 0 全 ADR + Phase 1 control plane schema(含 critic 四項修正)
## Phase 0(文件層,全部 Accepted)
- ADR-106/107:AwoooP 平台架構 + 儲存策略
- ADR-111~118:Bootstrap → RLS 七項核心 ADR
- ADR-119~124:SAGA → Singleton Decomposition 六項 ADR
- ADR-UI-01~04:Operator Console 四個 UI ADR
## Phase 1(DB schema + migration)
- awooop_phase1_control_plane_2026-05-04.sql:7 張新表 + trigger + RLS
- Step 1:三角色(platform_admin/migration BYPASSRLS,awooop_app 受 RLS)
- Step 13:GRANT awooop_app 最小權限(7 條)
- Step 14:RLS fail-closed,移除 __platform__ 後門
- awooop_phase1_batch1_rls_2026-05-04.sql:高流量四表三步式 ADD COLUMN
- awooop_phase1_batch1_backfill.py:SKIP LOCKED 分批回填腳本
- awooop_models.py:7 個 SQLAlchemy 2.x models
## Critic 修正(4 Critical + 3 Major)
- C-1:ADD CONSTRAINT IF NOT EXISTS → DO 塊 + pg_constraint 查詢
- C-2:__mapper_args__ 字串 list → primary_key=True on mapped_column
- C-3:__platform__ RLS 後門 → 全移除,改用 BYPASSRLS role
- C-4:awooop_app role 從未建立 → Step 1 + 7 條 GRANT
- M-1:active_pointer_guard SECURITY DEFINER(FORCE RLS 跨租戶保護)
- M-2:pg_partman create_parent 加冪等防護
- M-3:immutability trigger 新增身份欄位保護(project_id/family/contract_id)
## Task 1.2 修補
- agent_loader.py:硬編碼 Mac 路徑 → AGENTS_DIR 環境變數
- Dockerfile:補 COPY .claude/agents/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 13:37:11 +08:00
..
2026-03-29 15:27:49 +08:00
2026-03-22 18:57:44 +08:00
2026-03-29 01:48:59 +08:00
2026-05-04 13:37:11 +08:00
2026-03-26 16:06:20 +08:00
2026-03-23 23:51:37 +08:00
2026-03-29 21:16:50 +08:00
2026-03-23 23:51:37 +08:00
2026-03-26 16:06:20 +08:00
2026-03-29 15:27:49 +08:00
2026-04-29 10:56:32 +08:00
2026-05-04 11:18:20 +08:00
2026-04-22 01:27:39 +08:00
2026-03-29 15:37:02 +08:00
2026-03-23 23:51:37 +08:00
2026-03-23 23:51:37 +08:00
2026-03-23 23:51:37 +08:00
2026-03-23 23:51:37 +08:00
2026-03-24 09:20:56 +08:00
2026-04-10 11:04:56 +08:00
2026-03-29 15:27:49 +08:00