genichin
4520fbbfbd
ci(release): enforce changed-scope Ruff gate
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-09-13 15:41:35 +09:00
genichin
1010d257ad
chore(release): prepare v0.3.1
2026-09-13 15:32:27 +09:00
genichin
5b443f718e
chore(release): prepare v0.3.0
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-09-13 15:03:06 +09:00
genichin
a4e4951ed6
Merge pull request #35 from fourblocks2020/feat/issue-34-corporate-actions
...
feat(portfolio): record stock consolidation ledger events
2026-09-13 14:43:39 +09:00
genichin
54e4fe4213
fix: sync image migration inventory to 0031
2026-09-13 14:27:03 +09:00
genichin
fa824dfd36
fix corporate action runtime blockers
2026-09-13 14:22:41 +09:00
genichin
925c6b4fa4
fix corporate action replay and trade filtering
2026-09-13 14:17:32 +09:00
genichin
cb19c35d23
fix corporate action replay invariants
2026-09-13 14:12:04 +09:00
genichin
14c118f503
fix corporate action ledger replay invariants
2026-09-13 14:04:30 +09:00
genichin
48735bbb4a
fix(portfolio): align corporate action schema definitions
2026-09-13 13:55:49 +09:00
genichin
a4664f5991
feat(portfolio): expose corporate actions in unified ledger
2026-09-13 13:52:50 +09:00
genichin
77468631b1
feat(portfolio): expose corporate action and replay consolidation
2026-09-13 13:47:46 +09:00
genichin
7a45bec3cb
feat(portfolio): add atomic corporate action persistence
2026-09-13 13:43:21 +09:00
genichin
dc755889b3
feat(portfolio): add stock consolidation domain and schema
2026-09-13 13:40:08 +09:00
genichin
dfcafade94
docs(requirements): group REQ-001 documents by requirement
2026-09-10 11:22:43 +09:00
genichin
caaf7ce68c
fix(release): align image smoke with migration 0030
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-09-10 00:51:27 +09:00
genichin
044688b485
Merge pull request #33 from fourblocks2020/copilot/feat-ledger-user-input-cash-dividend
...
feat(ledger): add manual DIVIDEND entries with UTC date, duplicate confirmation, and reversal support
2026-09-10 00:38:10 +09:00
genichin
78e347703e
docs(requirements): approve manual cash dividend contract
2026-09-09 20:19:39 +09:00
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
f48a7c5cd7
docs(proofline): capture portfolio ledger discovery
2026-08-20 12:36:24 +09:00
genichin
ac742b1150
feat(portfolios): add unified ledger history API
2026-08-20 12:01:28 +09:00
genichin
fe22be0b66
docs: record ProofLine specification for issue 28
2026-08-19 17:42:22 +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
ec912fcde8
docs(proofline): align strategy nickname criteria
2026-08-16 16:50:20 +09:00
genichin
75e55fde9c
feat(api): expose strategy nick on portfolio items
2026-08-16 13:13:39 +09:00
genichin
ee1af6ef49
fix(api): reject explicit null strategy nick
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-08-16 00:03:25 +09:00
genichin
fe2dd3d15e
test(postgres): use runtime migration command
2026-08-15 23:51:17 +09:00
genichin
c292df0a4b
chore(release): harden nick contract for v0.1.2
2026-08-15 23:46:57 +09:00
genichin
e6a90800ec
feat(strategy): expose configurable nick contract
2026-08-15 23:38:18 +09:00
genichin
acfaab7fd4
ci(container): verify published immutable image
2026-08-15 15:40:25 +09:00
genichin
d64079f583
test(cli): assert missing owner side effect
Publish verified PortfolioHub image / verify (push) Canceled after 0s
Publish verified PortfolioHub image / publish (push) Canceled after 0s
2026-08-15 15:31:00 +09:00
genichin
63ff4881b0
test(cli): stabilize required option assertion
2026-08-15 15:29:33 +09:00
genichin
6e10f71374
chore(lint): stabilize release import classification
2026-08-15 15:17:13 +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
f7b33784ab
Remove stage-pilot vendor files
2026-08-15 14:13:43 +09:00
genichin
19b63a336e
docs(proofline): approve line 0004 requirements
2026-08-15 13:59:21 +09:00
genichin
2abd67da97
docs(proofline): record line 0004 QC remediation
2026-08-15 13:21:04 +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
bb3bb5d3f0
docs(proofline): confirm line 0004 discovery
2026-08-15 12:15:39 +09:00
genichin
2a1a637fb9
Remove CLAUDE.md
2026-08-15 11:30:03 +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
5fc389dea8
docs(proofline): capture issue 25 approved specification
2026-08-13 16:36:51 +09:00
genichin
92df8e0c5a
docs(proofline): record issue 23 specification
2026-08-13 14:47:14 +09:00
genichin
8dcdbdc9e0
chore(governance): initialize ProofLine project
2026-08-13 13:40:17 +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
35e85981af
Merge pull request #24 from fourblocks2020/feat/23-ledger-investment-aggregates
...
feat: 포트폴리오 목록에 ledger 투자금 집계 추가
2026-08-13 13:30:15 +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
914b3dc6e6
Merge pull request #21 from fourblocks2020/feat/dcy-012-portfolio-ledger-alembic-migration
...
feat(migrations): add BAT-025 ledger metadata Alembic migration
2026-07-15 20:26:35 +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
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
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
genichin
522a10f26e
Merge pull request #20 from fourblocks2020/feat/req-055-portfolios-strategy-market-meta
...
bat-023: /v1/portfolios 전략·시장 메타 노출 (REQ-055)
2026-07-04 11:37:19 +09:00
genichin and Claude Fable 5
7dba160c0f
test(bat-023): add REQ-055 AC-1~10 tests for strategy+market meta fields
...
10 test cases covering:
- AC-1: bound portfolio returns strategy_name/params
- AC-2: unbound → null/{}
- AC-3: dangling FK → keeps active_strategy_id, null strategy fields
- AC-4: invalid JSON config → strategy_params={} + WARNING log (caplog)
- AC-5/6: markets with values / empty
- AC-7: existing 16-field regression
- AC-8: token-branch invariant (service token)
- AC-9: strategy_params exact key-value match
- AC-10: mixed list individual accuracy
583 passed total (0 failures, 18 new tests).
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 and Claude Fable 5
8a07742049
feat(req-055): expose strategy & market meta fields in PortfolioItem response (additive)
...
Adds 4 additive fields to GET /v1/portfolios (and single-portfolio) response:
- active_strategy_id (str|null): portfolios.active_strategy_id raw value
- strategy_name (str|null): strategy_sets.name via LEFT JOIN
- strategy_params (dict): strategy_sets.config JSON parsed; {} on missing/invalid
- markets (list[str]): assets.markets; [] on missing/empty
_SELECT_PORTFOLIO extended with LEFT JOIN strategy_sets; _row_to_portfolio
parses new columns (row[19-21]) with JSON error isolation (WARNING log, no 500).
_portfolio_to_item maps all 4 new fields. Existing 16 fields unchanged.
N+1 prevented: single SQL JOIN for both list and single-item paths.
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 and Claude 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
genichin and Claude 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
genichin and Claude 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
genichin and Claude 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
genichin and Claude 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
genichin and Claude Opus 4.8
2dcbafb7a8
fix(dcy-011/bat-022): GET /v1/admin/daemons 목록 엔드포인트 추가 — UI 계약 누락(405) 해소 (라이브 통합테스트 결함)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 18:20:13 +09:00
genichin and Claude 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
genichin
1b78c1823b
Merge pull request #19 from fourblocks2020/feat/dcy-011-daemon-crud-self-service-credential-api
...
dcy-011: 데몬 CRUD + 사용자 self-service 인증정보 관리 API — BAT-022 (REQ-052/053/054)
2026-06-28 14:54:14 +09:00
genichin and Claude Sonnet 4.6
83e6ddead4
fix(bat-022): owner 재할당 credential 무효화 원자화 — leak 방지 (QC Major)
...
update_daemon_owner()에서 owner UPDATE + credential DELETE를 단일
conn.transaction() 블록으로 묶어 원자성 보장. 실패 시 두 연산 모두
롤백되므로 "새 owner + 이전 credential 잔류" leak 상태(dcy-011 OQ-3)
가 불가능해짐. 실행 순서도 DELETE-first(안전 순서)로 고정.
단위 테스트 3종 추가:
- DELETE-before-UPDATE 실행 순서 검증
- UPDATE 실패 시 rollback(commit 미호출) 검증
- 단일 transaction() 블록 안에서 두 연산 실행 검증
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 14:31:00 +09:00
genichin and Claude 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
genichin and Claude 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
genichin and Claude 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
genichin and Claude 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
genichin and Claude 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
7164f9e350
Merge pull request #18 from fourblocks2020/feat/bat-021-req047-step2-finalize
...
BAT-021: REQ-047 Step2 마무리 — daemon-scoped PK 동반수정 + 실DB 검증 + 런북
2026-06-28 10:32:40 +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
genichin and Claude 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
genichin
d4acfd4a12
Merge pull request #17 from fourblocks2020/feat/dcy-010-daemon-scoped-broker-credential
...
dcy-010: daemon-scoped 브로커(KIS) 인증정보 — BAT-020 (REQ-046~051)
2026-06-28 07:43:30 +09:00
genichin and Claude Sonnet 4.6
f030621f6b
docs(bat-020): verification, implementation, index 문서 추가
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 00:45:46 +09:00
genichin and Claude Sonnet 4.6
51b7cbee35
feat(bat-020): daemon-scoped 브로커 인증정보 (REQ-046~051)
...
- REQ-046: BrokerCredential.daemon_id 필드 추가, repository 시그니처 갱신
- REQ-047: alembic revision Step1(daemon_id NULL 컬럼 추가), Step2(PK 전환, dev/test DB 한정)
- REQ-048: backfill-daemon-id CLI subcommand (--dry-run/--force/--broker 지원)
- REQ-049: GET /v1/user_info daemon-scoped 단일 broker 전달 (brokers→broker, daemon_id 없으면 403)
- REQ-050: credential set/list/remove --daemon-id 옵션 추가 (daemon_slug 해석)
- REQ-051: 보안 격리 - service-token 전용, web 토큰 차단, 로그 app_secret 비노출, graceful degrade
비가역 결재 게이트: REQ-047 Step2(PK 전환)는 사장님 결재 후 실DB 적용 예정(이 batch는 revision 코드만)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 00:45:46 +09:00
genichin and Claude Opus 4.8
fc99f507a5
docs(dcy-010): draft-req + confirm-req — REQ-046~051 Approved (daemon-scoped broker credential provisioning)
...
Adds SRS specification documents for daemon-scoped broker credential management:
- REQ-046: Broker credential daemon_id field
- REQ-047: Migration PKv1→PKv2 with daemon_id
- REQ-048: Backfill existing broker credentials with daemon_id
- REQ-049: User info endpoint including daemon-scoped credentials
- REQ-050: Credential CLI --daemon-id option
- REQ-051: Security isolation per daemon boundary
Updates dcy-010 discovery document with generated REQ references and register.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 00:22:02 +09:00
genichin and Claude Opus 4.8
b0dfc42966
docs(dcy-010): confirm-discovery — daemon-scoped 브로커 인증정보 provisioning (PK (daemon_id,broker)·/v1/user_info 확장·1데몬1계좌)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-28 00:06:48 +09:00
genichin and Claude Opus 4.8
233cbc3df6
fix(portfolio): name 검증에 한글+공백 허용 (minor-change, CHG-20260627-03)
...
_PORTFOLIO_NAME_RE + CLI _NAME_RE를 ^[a-zA-Z0-9가-힣 ._:-]{1,100}$로 완화. name은 (owner,name) 조회 키일 뿐 wire 식별자 아님. 475 passed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-27 12:03:33 +09:00
genichin and Claude Opus 4.8
853a9bdab8
docs(dcy-009): confirm-req-implemented — REQ-044/045 Implemented, bat-019 confirmed
...
머지 PR #16(7f15c6b ) 반영. 사용자 read 엔드포인트 delivery 완료. REQ-045 env토큰 처리 200+empty로 문서 동기화(change-req).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2026-06-27 10:46:35 +09:00