6.3 KiB
6.3 KiB
K-ArtSell Aegis AI Coding Constitution v12.0
- 자동주문과 KIS 제출 Capability는 OFF다. 별도 승인 Release 전 구현·활성화·우회하지 않는다.
- 채팅과 생성 코드는 Source of Truth가 아니다. 모든 변경은 Source / Assumption / Unknown / Decision Required를 표시한다.
- 한 PR은 한 Vertical Slice 또는 한 동작보존 리팩터링 목적만 가진다.
- Endpoint→Application→Pure Policy→Dapper SQL→Outbox→Tests 경계를 지킨다.
- Domain Policy는 시간·랜덤·네트워크·DB·DI Container를 직접 읽지 않는다.
- Generic Repository, God Service, Service Locator, Job 내 비즈니스 정책, 조기 Microservice 분리를 금지한다.
- 모듈은 다른 모듈 Source Table을 직접 조회하지 않는다. 승인된 Contract/Read Model만 사용한다.
DateTime.Now/UtcNow를 직접 사용하지 않고 IClock과 MarketCalendar를 사용한다.- 금융값은 decimal, 명시적 rounding, 단위 계약을 사용한다. 모델 내부 double은 경계에서 변환한다.
SellRatioOfLot,SellQuantity,TargetPortfolioWeightAfter,StrategicCoreFloorWeight를 혼용하지 않는다.- EvidenceSnapshot·DatasetId·Model/Config/Code SHA 없이 Decision/Recommendation을 저장하지 않는다.
- Command/Job는 IdempotencyKey/JobRunId/Watermark를 갖고 replay를 견딘다.
- Evidence/Decision/Audit는 update/delete하지 않고 append/correction event로 보존한다.
- Write Model은 정규화·append·revision, 화면은 version/watermark/rebuild가 있는 Read Model이다.
- 서버 상태는 TanStack Query가 소유한다. Pinia에 API 응답을 복제하지 않는다.
- FE request/response는 Zod로 runtime validation하고 같은 retry에 같은 Idempotency-Key를 재사용한다.
/internal/*Endpoint는 Roles 또는 Policies를 선언하며 익명 접근을 허용하지 않는다.- 알고리즘 변경은 Policy ID, Golden, Frozen OOS, cost×2, false-exit/reentry/ES, ModelCard를 동반한다.
- 새 library/pattern/table/threshold는 ADR/Issue 승인 없이 도입하지 않는다.
- 실행하지 못한 build/test/migration을 통과했다고 기록하지 않는다.
- AI 생성 Migration은 fresh/upgrade/re-run/failure rehearsal 및 DBA 승인 없이는 병합하지 않는다.
- 실고객 데이터·실계좌·실주문 키·secret를 prompt/fixture/log/trace에 넣지 않는다.
- Metric·Alert·Runbook·Rollback·Owner/Secondary가 없으면 Done이 아니다.
v12.1 execution-readiness delta
- Every change must cite Requirement/Slice/Policy/Data/API/DB/Job/UI/Test IDs.
- Production commands load Evidence/Model/Config from approved server-side PIT context; never trust client-supplied evidence.
- Write models are normalized and append/correction based. Denormalization is allowed only in versioned, rebuildable read models.
- Outbox/Inbox/JobRun/Projection operations require scope, idempotency, watermark, hashes, and replay evidence.
- No generic repository, God service, reflection plugin framework, premature microservice, or unapproved threshold.
- Refactoring and policy changes must be separate PRs with characterization or Golden tests first.
- Never claim a build, migration, test, Shadow period, PBO, or DSR result that was not executed and preserved as evidence.
v12.2 strategic data-semantics delta
CurrentSecurityPortfolioWeight,CurrentLotPortfolioWeight,SellRatioOfLot, andStrategicCoreFloorWeightare distinct units. Never reintroduce the ambiguousCurrentPortfolioWeightinto active decision code.- A lot-relative sell changes security weight by
CurrentLotPortfolioWeight * SellRatioOfLot. - Persist the ordered policy trace with Applied/Blocked/NotApplicable dispositions; do not expose raw internal scores directly to customers.
- Prior migrations are immutable. v12.2 changes belong in migration
0014or later. - The six current-session attachments and their SHA-256 values are part of the release evidence.
- Use the reviewed templates under
templates/; do not bulk-generate unapproved modules or placeholder implementations.
v12.3 execution and semantic-version delta
weight_semantics_version=1contexts are legacy ambiguous data and must never enter active decisions; rebuild them as version 2 from explicit security and lot weights.- A positive opportunity edge with a zero or missing requested sell ratio is BLOCKED. Never clamp missing intent to a minimum sell.
- Policy IDs, priorities and thresholds must match
contracts/policies/sell-policy-contract.v1.json; drift blocks G2. - Decision/API/Event/DB evidence must preserve
decision_contract_versionandpolicy_trace_schema_version. - Outcome metrics must name a definition version, population, numerator, denominator, window and aggregation. Do not equate 63-session research output with an annual target without approval.
scripts/scaffold_slice.pyis dry-run by default, refuses overwrite and produces SCAFFOLD_ONLY code. Generated files are not approved implementation.- The seven cumulative attachments and their SHA-256 values are part of v12.3 release evidence.
v12.4 Model Operations Constitution
- Scheduler automation is limited to EVALUATION_ONLY, PROPOSAL_ONLY and DRILL_ONLY.
- Never generate or merge automatic model promotion, rollback, threshold mutation, code change, automatic order or KIS submission paths.
- Every evaluation request freezes Dataset/Model/Config/Code/Contract VersionSet from an approved server-side context.
- Metric changes require a versioned numerator, denominator, window, aggregation, PIT/revision rule and Golden/OOS impact.
- Improvement proposals are documents and records only; they do not edit model, policy, configuration or source files.
- Drift thresholds, false-exit definition and retention policy are DECISION_REQUIRED until approved.
v14.0 UI / Model Feedback non-negotiables
- Feature code MUST NOT import PrimeVue or AG Grid directly. Use shared UI ports and screen types.
- UI provider changes require contract, accessibility, visual, state-matrix and performance evidence.
- Model operation automation stops at evaluation/proposal. Model activation is human change approval only.
- J39 and every new schedule remain disabled until their source, calendar, ownership and alert contracts are approved.
- Never claim .NET, pnpm, PostgreSQL, Playwright or Shadow evidence passed unless the actual artifact is attached.