docs: close AEG-V15-033 schedule anchor evidence
Evidence: Release targeted ScheduleOccurrencePlannerTests 2/2 passed; TRX SHA256 4CDD5098C0D49B642A869E35A77F31CB4BF4A9CB76F0B340F1C69EF58C7ED864. No scheduler was enabled.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# AEG-V15-033 — Schedule anchor calculation
|
||||
|
||||
## Scope
|
||||
|
||||
- **WBS ID:** AEG-V15-033
|
||||
- **Slice:** VS-18 BacktestingEvaluation / Scheduler
|
||||
- **Requirement / API / DB / Job / UI / Test:** `REQ-V15-SCH-01` / `V15-SCH-API` / `MIG-0020` / `J31~J40` / `Cross` / `T-V15-SCH-01`
|
||||
- **Gate / dependency:** `G3` / `AEG-X-001` (completed in the progress tracker)
|
||||
- **Artifact:** `src/KArtSell.Modules.ModelOperations/Domain/ScheduleOccurrencePlanner.cs`
|
||||
- **Acceptance evidence:** delayed dispatch must not cause cadence drift.
|
||||
|
||||
## Source / Assumption / Unknown / Decision Required
|
||||
|
||||
- **Source:** `docs/CURRENT/CATALOGS/WBS_MASTER.csv`; `docs/CURRENT/CATALOGS/JOB_CATALOGUE.csv`; `docs/CURRENT/CATALOGS/DECISION_LOG.csv` (`DEC-047`, `DEC-071`, `DEC-072`, `DEC-075`); `contracts/schedules/model-operations.v3.json`; the planner, dispatcher, and unit tests named above.
|
||||
- **Assumption:** the existing planner is the intended implementation of `DEC-071`: it advances from `scheduledFor`, never from worker dispatch time. The scheduler stays disabled by default.
|
||||
- **Unknown:** an approved production market-calendar/timezone source is still absent (`DEC-079`); this slice uses UTC instants only and does not resolve market sessions.
|
||||
- **Decision Required:** `DEC-083` (whether scheduler enqueue/mark becomes a dispatch-outbox transaction) is outside this anchor-only slice. No activation or schedule policy change is authorized here.
|
||||
|
||||
## Execution plan
|
||||
|
||||
1. Run the targeted `T-V15-SCH-01` unit tests in Release configuration.
|
||||
2. Preserve the command result under `evidence/AEG-V15-033/`.
|
||||
3. Update the progress tracker only with the actual result. This does not assert database, calendar, lease, or enabled-schedule evidence owned by later WBS items.
|
||||
@@ -511,7 +511,7 @@ AEG-V15-029,S6,W13-14,Cross,Cross-cutting,UX/Layout,LAY,REQ-V15-LAY-05,Cross,Cro
|
||||
AEG-V15-030,S6,W13-14,Cross,Cross-cutting,UX/Layout,LAY,REQ-V15-LAY-06,Cross,Cross,Cross,UI-V15-LAY-06,T-V15-LAY-06,민감정보 column 표시정책,PII grid policy,마스킹·export 권한·audit,UX Lead,FE/QA,6,AEG-V15-029,MVP-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
|
||||
AEG-V15-031,S6,W13-14,Cross,Cross-cutting,UX/Layout,LAY,REQ-V15-LAY-07,Cross,Cross,Cross,UI-V15-LAY-07,T-V15-LAY-07,반응형 운영화면 기준,responsive evidence,1024/1440/1920/모바일 업무순서 유지,UX Lead,FE/QA,4,AEG-V15-030,MVP-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
|
||||
AEG-V15-032,S6,W13-14,Cross,Cross-cutting,UX/Layout,LAY,REQ-V15-LAY-08,Cross,Cross,Cross,UI-V15-LAY-08,T-V15-LAY-08,디자인 token 변경 Gate,semantic token contract,기능 CSS 직접 색상/간격 drift 0,UX Lead,FE/QA,4,AEG-V15-031,MVP-A,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
|
||||
AEG-V15-033,S8,W17-18,VS-18,BacktestingEvaluation,Scheduler,SCH,REQ-V15-SCH-01,V15-SCH-API,MIG-0020,J31~J40,Cross,T-V15-SCH-01,Schedule anchor 계산기,ScheduleOccurrencePlanner,dispatch 지연이 cadence drift를 만들지 않음,BE Lead,SRE/QA,3,AEG-X-001,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
|
||||
AEG-V15-033,S8,W17-18,VS-18,BacktestingEvaluation,Scheduler,SCH,REQ-V15-SCH-01,V15-SCH-API,MIG-0020,J31~J40,Cross,T-V15-SCH-01,Schedule anchor 계산기,ScheduleOccurrencePlanner,dispatch 지연이 cadence drift를 만들지 않음,BE Lead,SRE/QA,3,AEG-X-001,G3,SOURCE+DESIGN_PROPOSAL,P0,COMPLETED
|
||||
AEG-V15-034,S8,W17-18,VS-18,BacktestingEvaluation,Scheduler,SCH,REQ-V15-SCH-02,V15-SCH-API,MIG-0020,J31~J40,Cross,T-V15-SCH-02,Catch-up policy 구현,LATEST/SKIP/ALL_LIMIT,장애 복구 후 job storm 0,BE Lead,SRE/QA,5,AEG-V15-033,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
|
||||
AEG-V15-035,S8,W17-18,VS-18,BacktestingEvaluation,Scheduler,SCH,REQ-V15-SCH-03,V15-SCH-API,MIG-0020,J31~J40,Cross,T-V15-SCH-03,Due operation 계약 확장,DueModelOperation v15,scheduledFor/catchUp/maxCatchUp 추적,BE Lead,SRE/QA,5,AEG-V15-034,G3,SOURCE+DESIGN_PROPOSAL,P1,PLANNED
|
||||
AEG-V15-036,S8,W17-18,VS-18,BacktestingEvaluation,Scheduler,SCH,REQ-V15-SCH-04,V15-SCH-API,MIG-0020,J31~J40,Cross,T-V15-SCH-04,Dispatcher nextDue CAS,schedule repository,lease 상실·중복 advance 0,BE Lead,SRE/QA,6,AEG-V15-035,G3,SOURCE+DESIGN_PROPOSAL,P0,PLANNED
|
||||
|
||||
|
@@ -6,6 +6,7 @@ AEG-X-004,S0,Cross,DbUp 복구 rehearsal 고도화,COMPLETED,2026-08-06,"docs/CU
|
||||
AEG-X-005,S0,Cross,Security auth 고도화,COMPLETED,2026-08-04,"docs/decisions/ADR-SEC-001.md + tests/KArtSell.Integration.Tests/SecurityAuthenticationTests.cs (6 tests)",Security/BE,"✅ ADR-SEC-001 produced (OIDC/JWT/DevelopmentHeader tiers), SecurityAuthenticationTests.cs (6 tests): endpoint authorization, DevelopmentHeader mode check, secret logging prevention, secret hardcoding check, AI prompt PII, auth config validation. Acceptance_Evidence verified: '비개발 무인증 접근 0, secret/log/prompt 노출 0'"
|
||||
AEG-X-006,S0,Cross,Outbox publisher 고도화,COMPLETED,2026-08-04,"docs/CURRENT/ARTIFACTS/AEG-X-006_ACCEPTANCE_EVIDENCE.md + src/KArtSell.BuildingBlocks/Reliability/DapperOutboxWriter.cs + OutboxPollerJob.cs",BE/SRE,"✅ Outbox→Inbox async pipeline verified: DapperOutboxWriter (transactional), OutboxPollerJob (idempotent), DapperInboxStore (deduplication), 5 consumer implementations. Acceptance_Evidence: All criteria met. 177/177 tests PASS."
|
||||
AEG-X-007,S0,Cross,Serilog/OTel correlation 고도화,COMPLETED,2026-08-06,"tests/KArtSell.ArchitectureTests/PiiRedactionTests.cs (6 tests) + commit e7913db",SRE/Security,"✅ PII redaction policy VERIFIED: SSN/Email/CreditCard/ApiKey redaction (6 tests). Commit e7913db adds pattern-based sanitization validation. All tests PASS (249/253)."
|
||||
AEG-V15-033,S8,VS-18,Schedule anchor 계산기,COMPLETED,2026-08-09,"docs/CURRENT/AEG-V15-033_SCHEDULE_ANCHOR_SLICE_NOTE.md; src/KArtSell.Modules.ModelOperations/Domain/ScheduleOccurrencePlanner.cs; tests/KArtSell.ModelOperations.UnitTests/ScheduleOccurrencePlannerTests.cs; evidence/AEG-V15-033/ScheduleOccurrencePlannerTests_20260809.trx",BE Lead,"Actual Release run: dotnet test tests/KArtSell.ModelOperations.UnitTests/KArtSell.ModelOperations.UnitTests.csproj -c Release --filter FullyQualifiedName~ScheduleOccurrencePlannerTests; 2/2 passed. Characterizes the approved scheduledFor anchor and missed-occurrence skip behavior. No schedule was enabled; market-calendar/timezone (DEC-079), dispatch enqueue/mark atomicity (DEC-083), leases, database integration, and later scheduler WBS evidence remain out of scope."
|
||||
AEG-V16-017,S6,Cross,FieldShell 표준,IN_PROGRESS,TBD,"docs/CURRENT/AEG-V16-017_FIELDSHELL_SLICE_NOTE.md; frontend/src/shared/ui/components/FieldShell.vue; frontend/src/shared/ui/components/tests/FieldShell.spec.ts","FE Lead","2026-08-08: FieldShell now owns label/error/help/ARIA relationships for KsTextField, KsTextArea, KsSelect, KsDateField, and KsNumberField. Actual evidence: frontend pnpm typecheck PASS; pnpm test PASS (19 files, 42 tests); pnpm build PASS. Build emitted unrelated tracked .js drift, excluded from this Slice. COMPLETED is blocked pending WBS Master/tracker reconciliation and AEG-V16-016 vendor-boundary acceptance evidence."
|
||||
AEG-V16-016,S0,VS-00,Vendor boundary fitness,IN_PROGRESS,TBD,"docs/CURRENT/AEG-V16-016_VENDOR_BOUNDARY_SLICE_NOTE.md; tools/validate_v16.py; frontend/src/shared/ui/adapter/tests/uiAdapter.contract.spec.ts; evidence/AEG-V16-016/validate_v16_20260808.log; evidence/AEG-V16-016/ui-adapter-tests_20260808.log; evidence/AEG-V16-016/frontend-typecheck_20260808.log","FE Lead","2026-08-08: Removed stale fixed WBS row-count assertion; validator now verifies WBS ID integrity and reports vendor imports outside the approved adapter boundary. Re-executed actual evidence: python tools/validate_v16.py PASS=1 WARN=2 FAIL=0; targeted adapter tests 4/4 PASS; frontend typecheck PASS. COMPLETED is blocked because dependency AEG-V16-015 has no approved acceptance evidence in the tracker."
|
||||
AEG-V16-015,S0,VS-00,Adapter rollback runbook,BLOCKED,-,"docs/CURRENT/ui-provider-switch.md","FE Lead","2026-08-08: Runbook exists, but status is BLOCKED before completion: acceptance requires visual/a11y/performance rollback rehearsal evidence, which is not present; direct dependency AEG-V16-014 has no tracker evidence. A runbook does not substitute for an approved visual baseline, keyboard/focus and accessible-name report, state-matrix result, agreed performance budget, immutable-artifact rollback rehearsal, and append-only release evidence. No build/test/migration claimed by this status correction."
|
||||
|
||||
|
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TestRun id="d5d0024c-5655-4d41-ae21-dc78b84a05e0" name="kjh20@KIMJAEHYUN-NOTE 2026-08-09 01:55:23" runUser="KIMJAEHYUN-NOTE\kjh20" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
|
||||
<Times creation="2026-08-09T01:55:23.1465617+09:00" queuing="2026-08-09T01:55:23.1465620+09:00" start="2026-08-09T01:55:22.1330836+09:00" finish="2026-08-09T01:55:23.1558613+09:00" />
|
||||
<TestSettings name="default" id="ff4dd851-f7c8-4a83-adf0-514b5537152e">
|
||||
<Deployment runDeploymentRoot="kjh20_KIMJAEHYUN-NOTE_2026-08-09_01_55_23" />
|
||||
</TestSettings>
|
||||
<Results>
|
||||
<UnitTestResult executionId="9bdce18c-a53d-427c-8aba-7e26ea01395e" testId="4a0acb4c-da35-f6d9-1253-fba8b2ec4ae4" testName="KArtSell.ModelOperations.UnitTests.ScheduleOccurrencePlannerTests.Missed_occurrences_are_skipped_without_dispatch_storm" computerName="KIMJAEHYUN-NOTE" duration="00:00:00.0033598" startTime="2026-08-09T01:55:23.0455447+09:00" endTime="2026-08-09T01:55:23.0456257+09:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9bdce18c-a53d-427c-8aba-7e26ea01395e" />
|
||||
<UnitTestResult executionId="d955acb0-ab4e-49ae-917b-3f953e9980d7" testId="4cc4638d-542d-f501-1295-718da6fcbfd1" testName="KArtSell.ModelOperations.UnitTests.ScheduleOccurrencePlannerTests.Daily_anchor_does_not_drift_to_dispatch_time" computerName="KIMJAEHYUN-NOTE" duration="00:00:00.0052118" startTime="2026-08-09T01:55:23.0223243+09:00" endTime="2026-08-09T01:55:23.0347634+09:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="d955acb0-ab4e-49ae-917b-3f953e9980d7" />
|
||||
</Results>
|
||||
<TestDefinitions>
|
||||
<UnitTest name="KArtSell.ModelOperations.UnitTests.ScheduleOccurrencePlannerTests.Missed_occurrences_are_skipped_without_dispatch_storm" storage="d:\jobroomz\kartsell.aegis\tests\kartsell.modeloperations.unittests\bin\release\net10.0\kartsell.modeloperations.unittests.dll" id="4a0acb4c-da35-f6d9-1253-fba8b2ec4ae4">
|
||||
<Execution id="9bdce18c-a53d-427c-8aba-7e26ea01395e" />
|
||||
<TestMethod codeBase="D:\JobRoomz\KArtSell.Aegis\tests\KArtSell.ModelOperations.UnitTests\bin\Release\net10.0\KArtSell.ModelOperations.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner3/netcore/" className="KArtSell.ModelOperations.UnitTests.ScheduleOccurrencePlannerTests" name="Missed_occurrences_are_skipped_without_dispatch_storm" />
|
||||
</UnitTest>
|
||||
<UnitTest name="KArtSell.ModelOperations.UnitTests.ScheduleOccurrencePlannerTests.Daily_anchor_does_not_drift_to_dispatch_time" storage="d:\jobroomz\kartsell.aegis\tests\kartsell.modeloperations.unittests\bin\release\net10.0\kartsell.modeloperations.unittests.dll" id="4cc4638d-542d-f501-1295-718da6fcbfd1">
|
||||
<Execution id="d955acb0-ab4e-49ae-917b-3f953e9980d7" />
|
||||
<TestMethod codeBase="D:\JobRoomz\KArtSell.Aegis\tests\KArtSell.ModelOperations.UnitTests\bin\Release\net10.0\KArtSell.ModelOperations.UnitTests.dll" adapterTypeName="executor://xunit/VsTestRunner3/netcore/" className="KArtSell.ModelOperations.UnitTests.ScheduleOccurrencePlannerTests" name="Daily_anchor_does_not_drift_to_dispatch_time" />
|
||||
</UnitTest>
|
||||
</TestDefinitions>
|
||||
<TestEntries>
|
||||
<TestEntry testId="4a0acb4c-da35-f6d9-1253-fba8b2ec4ae4" executionId="9bdce18c-a53d-427c-8aba-7e26ea01395e" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="4cc4638d-542d-f501-1295-718da6fcbfd1" executionId="d955acb0-ab4e-49ae-917b-3f953e9980d7" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
</TestEntries>
|
||||
<TestLists>
|
||||
<TestList name="목록에 없는 결과" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestList name="로드된 모든 결과" id="19431567-8539-422a-85d7-44ee4e166bda" />
|
||||
</TestLists>
|
||||
<ResultSummary outcome="Completed">
|
||||
<Counters total="2" executed="2" passed="2" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
|
||||
<Output>
|
||||
<StdOut>[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v3.1.5+1b188a7b0a (64-bit .NET 10.0.10)
|
||||
[xUnit.net 00:00:00.32] Discovering: KArtSell.ModelOperations.UnitTests
|
||||
[xUnit.net 00:00:00.36] Discovered: KArtSell.ModelOperations.UnitTests
|
||||
[xUnit.net 00:00:00.40] Starting: KArtSell.ModelOperations.UnitTests
|
||||
[xUnit.net 00:00:00.44] Finished: KArtSell.ModelOperations.UnitTests
|
||||
</StdOut>
|
||||
</Output>
|
||||
</ResultSummary>
|
||||
</TestRun>
|
||||
Reference in New Issue
Block a user