Commit Graph
139 Commits
Author SHA1 Message Date
genichin 5d6a0ad013 feat(portfolios): allow unassigned strategy creation 2026-08-22 21:21:24 +09:00
genichin 6e17a53b17 chore(release): prepare portfolio-hub v0.2.0
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-08-21 17:13:34 +09:00
genichin 5eb8c04266 fix: aggregate investment totals across ledger sources 2026-08-19 17:34:13 +09:00
genichin 02bfa60299 chore(release): prepare portfolio-hub v0.1.3
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-08-16 16:57:26 +09:00
genichin c292df0a4b chore(release): harden nick contract for v0.1.2 2026-08-15 23:46:57 +09:00
genichin 9c8baac70b feat(container): harden v0.1.1 publication 2026-08-15 15:14:36 +09:00
genichin fd080496b3 feat(release): add verified image publication pipeline 2026-08-15 14:52:01 +09:00
genichin e90519ad39 fix(daemons): block owner transfer while assigned 2026-08-15 13:20:02 +09:00
genichin e2102b6f2b feat(portfolios): persist and validate daemon assignment on create/update
POST /v1/portfolios now forwards a non-null managed_by_daemon_id into
create persistence, and both create and PATCH apply the same daemon
validation contract (UUID format -> 422, missing/foreign -> 404,
inactive -> 409, admin target-owner basis). Daemon validation locks the
daemon row FOR SHARE inside the portfolio write transaction so
validation and write form one atomic decision boundary.

Adds domain errors, repository protocol/signature updates, API/PostgreSQL
tests (POST->GET persistence, no partial state on failure, assignment vs
deactivation race), and contract/data-model documentation.
2026-08-15 12:56:53 +09:00
genichin 6e02d92282 Add ProofLine criteria documentation and Strategy Catalog v1 implementation
- Add acceptance criteria documentation (AC-0013 through AC-0023)
- Add Line-0003 discovery documentation
- Implement Strategy Catalog v1 with new database migration
- Update portfolio API endpoints and schemas
- Refactor strategy and portfolio services
- Add strategy management CLI commands
- Update domain models with strategy catalog support
- Add comprehensive tests for v1 strategies
- Update design documentation (data model, interfaces, runtime flows)
2026-08-15 11:18:31 +09:00
genichin be3305a09b chore(docs): remove retired delivery artifacts
Remove retired StagePilot commands, templates, lifecycle records, and historical delivery documents, and record the current uv dependency lock.
2026-08-13 13:36:43 +09:00
genichin 93840800fa feat(portfolios): expose ledger investment aggregates
Add reversal-aware grouped manual-ledger aggregates to portfolio list responses and align the single-portfolio return summary with the same semantics.\n\nRefs #23
2026-08-13 13:23:31 +09:00
genichin 34792bdb5c docs(release): draft M5 manual ledger rollout 2026-07-15 21:23:15 +09:00
genichin aac08eb524 docs(batch): record PR #21 QC pass and lead confirmation 2026-07-15 20:25:46 +09:00
genichin bd51330a9a docs(batch): reconcile PR #21 QC provenance 2026-07-15 20:10:53 +09:00
Hermes Agent 5f8097947c docs(batch): confirm BAT-025 verification 2026-07-15 17:58:18 +09:00
Hermes Agent 2f82251e57 docs(batch): correct BAT-025 QC provenance 2026-07-15 17:58:18 +09:00
Hermes Agent d48279f7ab fix(migrations): harden BAT-025 PostgreSQL verification 2026-07-15 17:58:18 +09:00
genichin 1909caa22c feat: BAT-025 add portfolio ledger manual metadata migration 2026-07-15 17:58:18 +09:00
genichin 600375beca docs(stagepilot): confirm BAT-025 migration planning and design 2026-07-15 11:02:08 +09:00
Hermes Agent 7b9c23a377 docs(req): approve ledger metadata migration requirement
Confirm REQ-057 for BAT-025 while preserving REQ-056/BAT-024 implementation status. Operational DB execution remains separately approved.
2026-07-15 10:50:25 +09:00
genichin f5636c1ade docs(stagepilot): confirm manual ledger batch verification 2026-07-14 19:54:20 +09:00
genichin b3447f699e feat(api): add owner-scoped manual ledger endpoint 2026-07-14 19:49:03 +09:00
genichin 762cf11376 docs(batch): start manual ledger API delivery 2026-07-14 18:52:34 +09:00
genichin 0c00f851e7 docs(req): approve manual ledger API requirement 2026-07-14 18:51:30 +09:00
genichin 43a23dbd98 docs(discovery): sync manual ledger project title 2026-07-14 16:46:15 +09:00
genichin e750b52c8d docs(req): draft manual ledger API requirement 2026-07-14 16:41:12 +09:00
genichin f9dce75d9e docs(discovery): confirm manual ledger API discovery 2026-07-14 16:36:43 +09:00
genichin ecc269ad49 docs(discovery): include total value and profit metric 2026-07-14 16:19:46 +09:00
genichin ced81171ff docs(discovery): distinguish profit withdrawal semantics 2026-07-14 16:15:09 +09:00
genichin d0c23b6add docs(discovery): require daemon-managed manual confirmation 2026-07-14 16:04:47 +09:00
genichin 9356e4da3e docs(discovery): reject insufficient manual ledger writes 2026-07-14 15:58:10 +09:00
genichin 29bf6de22a docs(discovery): require reversal target ledger id 2026-07-14 15:33:03 +09:00
genichin 932991c538 docs(discovery): decide manual ledger endpoint split 2026-07-14 15:26:43 +09:00
genichin 175570d4a4 docs(discovery): start manual ledger API discovery 2026-07-14 14:04:11 +09:00
genichin 6b695b83b8 REQ-055 Implemented (confirm-req-implemented) — bat-023 머지 522a10f, QC PASS-WITH-NOTES(AC 10/10). 잔여: dangling FK 실DB 확인(배포후) 2026-07-04 11:39:04 +09:00
genichinandClaude Fable 5 b2261c4428 docs(bat-023): add batch planning/design/verification documents for REQ-055
BAT-023 batch documents — GET /v1/portfolios strategy+market meta additive
fields. Includes planning, design, verification, and batch index entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-07-04 11:05:51 +09:00
genichin 4e1aa83011 REQ-055 Approved (confirm-req, 팀장) — /v1/portfolios에 active_strategy_id/strategy_name/strategy_params/markets additive 노출. tvr e2e 배관 ① 2026-07-04 10:54:34 +09:00
genichinandClaude Opus 4.8 9dcd00f7a5 docs(rel-003): released 마감 — M3 배포 완료(9d98d47, Step2 적용)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-30 17:03:21 +09:00
genichinandClaude Opus 4.8 7ba618eb30 docs(runbook): Step2 마이그레이션 배포 순서 정정 — 체크아웃 갱신 선행
운영팀 지적: prod=REL-002(bd34450)라 마이그레이션 파일·backfill CLI 부재.
0단계 '체크아웃 갱신(origin/main, 디스크, 재시작X)'를 마이그레이션 앞에 추가,
서비스 재시작은 Step2 후로 분리. freeze 9fe6f3b→9d98d47, 실패모드/게이트 보강.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-30 12:58:01 +09:00
genichinandClaude Opus 4.8 9d98d47e2d docs(rel-003): M3 daemon-scoped 크레덴셜 릴리즈 문서 + Step2 ops 런북
REL-003(dcy-010/011 + WAC #15 동반) draft + Step2 마이그레이션 핸드오프(프리체크·롤백·go/no-go).
내일 ops 윈도우용. 미푸시(사장님 결재 시 release와 함께 push).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 23:02:35 +09:00
genichinandClaude Opus 4.8 9fe6f3b511 docs(req-053): GET /v1/admin/daemons 목록 엔드포인트 핫픽스 거버넌스 백필
핫픽스 2dcbafb(목록 조회 405 갭 해소)를 REQ-053에 change-req로 기록.
스코프 갭(GET-list AC 누락) 정정 + AC-13/14 추가, 라이브 통합검증 근거 기재.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 19:16:20 +09:00
genichinandClaude Opus 4.8 0fbd33b08b docs(dcy-011): confirm-req-implemented — REQ-052/053/054 Implemented (BAT-022 PR#19, Major #3 owner재할당 원자화), bat-022 release-candidate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 14:58:31 +09:00
genichinandClaude Sonnet 4.6 64cc382604 docs(bat-022): implementation, verification, index 문서 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 14:18:37 +09:00
genichinandClaude Sonnet 4.6 d24058d863 feat(bat-022): daemon CRUD admin API + self-service credential management (REQ-052/053/054)
- POST/PATCH/deactivate/activate /v1/admin/daemons — admin-only daemon CRUD (REQ-053)
- GET/PUT/DELETE /v1/daemons/{daemon_id}/credential — user-owned scoped credential management (REQ-052)
- Owner re-assignment auto-invalidates BrokerCredential via update_daemon_owner() (REQ-053 AC-4)
- Deactivation auto-revokes service tokens via revoke_tokens_by_daemon_id() (REQ-022 reuse, REQ-053 AC-6)
- DELETE /v1/admin/daemons/{id} → 405 (hard delete not provided, REQ-053 AC-8)
- All responses exclude app_key/app_secret; Fernet encryption at rest (REQ-054)
- Service-token → 403 on credential endpoints (REQ-052 AC-10)
- Admin ownership scope enforced: admin cannot write other user's credential (REQ-052 AC-9)
- REQ-051 regression: 4 service-token guard tests pass (REQ-054 AC-7)
- 44 new tests, 565 total passed (521 baseline + 44 new), 0 failures

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 14:18:37 +09:00
genichinandClaude Opus 4.8 80d0511d7f docs(dcy-011): draft-req + confirm-req — REQ-052/053/054 Approved
Add three approved requirements documents for dcy-011:
- REQ-052: User-owned credential management API (Interface)
- REQ-053: Admin daemon CRUD API (Interface)
- REQ-054: Credential management security with write-only constraint (Non-Functional)

Update discovery document to reference generated requirements and update index with new REQ IDs and Change Log.

Scope: Self-service credential management + admin daemon CRUD + security-isolated API for portfolio-hub.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 13:55:45 +09:00
genichinandClaude Opus 4.8 a1bde2cf67 docs(dcy-011): confirm-discovery — 데몬 admin CRUD + 사용자 self-service 인증정보 관리 API (소유스코프·쓰기전용·secret 미반환)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 13:44:31 +09:00
genichinandClaude Opus 4.8 29cd86f0e4 docs(dcy-010): confirm-req-implemented — REQ-047 Implemented (BAT-021 PR#18 실DB검증), bat-021 release-candidate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 10:36:02 +09:00
genichin 3e1b571906 feat(bat-021): REQ-047 Step2 동반 코드 수정 + 실 DB 통합검증 + 런북
- ensure_schema() broker_credentials: daemon_id NOT NULL, PK=(daemon_id,broker)로 갱신
- _row_to_broker_credential: Step2 컬럼 순서(daemon_id 선두)로 갱신
- upsert_broker_credential: ON CONFLICT (daemon_id,broker)로 수정, fallback try/except 제거
- list_broker_credentials: fallback 제거, SELECT 컬럼 순서 갱신
- test_bat020_broker_credential_domain.py: AC-3/AC-4 행 순서를 Step2 포맷으로 갱신
- tests/test_bat021_step2_ensure_schema_and_upsert.py: 12개 신규 테스트
- docs/runbooks/bat-021-req047-step2-migration-runbook.md: 운영 적용 런북
- docs/batches/bat-021: batch 문서(index/planning/design/implementation/verification)

실 PostgreSQL 통합검증(AC-1~7 전건 PASS):
  Step1 upgrade → backfill → Step2 upgrade → downgrade 시나리오 포함
  NULL 사전검증(upgrade 거부) 및 downgrade 안전장치(중복 시 RuntimeError) 확인

521 passed, 0 failed (기존 509 + 신규 12)
2026-06-28 10:19:27 +09:00
genichinandClaude Opus 4.8 7e3b34287f docs(dcy-010): confirm-req-implemented — REQ-046/048/049/050/051 Implemented, REQ-047 Approved 유지(Step2 결재대기), BAT-020 release-candidate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 07:49:17 +09:00