feat(core): add bitemporal Employment absence truth - #113
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (11)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughEmployment absence truth를 위한 이중 시간축 사실, 스냅샷 빌더, 공개 패키지 계약, 문서, 계약 테스트, 런타임 무결성 테스트를 추가했습니다. 스냅샷은 유효일과 지식 시점에서 부재 상태를 결정하고, 사유와 Person 식별자를 정규 출력에서 제외합니다. ChangesEmployment absence truth
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: ⚪ Minimal · up to The PR adds reason-free bitemporal Employment absence truth, with all listed current-head checks passing and no unresolved correctness or security issue identified; no actionable merge-blocking risk remains beyond required independent approval and enforceable branch protection. Sequence Diagram(s)sequenceDiagram
participant Caller
participant SnapshotBuilder
participant EmploymentFacts
participant AbsenceFacts
participant Snapshot
Caller->>SnapshotBuilder: 유효일과 지식 시점으로 snapshot 요청
SnapshotBuilder->>EmploymentFacts: 동일 테넌트의 visible Employment 해석
EmploymentFacts-->>SnapshotBuilder: active 또는 leave Employment 반환
SnapshotBuilder->>AbsenceFacts: visible absence version 해석
AbsenceFacts-->>SnapshotBuilder: confirmed absence 또는 없음 반환
SnapshotBuilder->>Snapshot: reason-free snapshot 생성
Snapshot-->>Caller: canonical evidence와 digest 반환
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 68.66% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 67 functions across 7 files. (4 skipped: 4 unsupported.)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Buyer-visible gap
develop@9e3e4847510e1e612b48474ba42b177b8ed824dfhas bitemporal Employment and Assignment truth but no reason-free authoritative operational fact that answers whether one Employment is absent at a specific business date and system-knowledge cutoff. This Orgmetra-only slice adds that core truth without persisting medical/family/statutory/free-form leave reasons, changing Assignment, or writing any dedicated-writer dependency.Test-first contract and repairs
The branch adds
EmploymentAbsenceVersion,EmploymentAbsenceError, andbuild_employment_absence_snapshot(...)with regressions covering exact runtime primitives, tenant/Employment/Person binding, status vocabulary, visible-version uniqueness, one confirmed absence at a coordinate,active|leaveEmployment coverage, correction-not-rewrite cancellation, caller-defined UUID/date/timezone behavior, exact boolean snapshot state, deterministic evidence, and omission of Person/reason values. Root runtime-integrity repair19ad4fe1a820a7b317958c331442169848af3150plus current traceability head3da7ad076f977a3ccd9e130a58786c9d26763a16fail closed before forged scope/temporal values can influence comparison or canonicalization.Shared
DateInterval/RecordedIntervalhardening remains separately owned by PR #69; #113 does not copy that adjacent owner repair or inherit its checks.Architecture / privacy boundary
ADR 0113 records the reason-free bitemporal core decision. This fact records that an Employment is absent, not why. Medical, family, statutory, disciplinary, benefit, free-form reason, compensation, rating, and model-output data remain outside the HRIS-kernel evidence. The snapshot is descriptive operational truth only and grants no high-impact employment-decision authority.
Exact-current-head evidence
Current exact head:
3da7ad076f977a3ccd9e130a58786c9d26763a16Live base:
develop@9e3e4847510e1e612b48474ba42b177b8ed824dfGitHub live state is open · Draft · mergeable. Exact-current-head hosted runs remain terminal GREEN:
32782228751327822287543278222875332782228758327822287713278222879932782228776Submitted review state is COMMENTED only. The three inline defect findings are resolved after the forged-tenant UUID, non-boolean snapshot state, and corresponding regressions were repaired. There is no qualifying independent non-author
APPROVEorCHANGES_REQUESTED.The technically GREEN head is nevertheless live-Draft. Prior event history and adjacent PRs show a separate same-repository lifecycle writer repeatedly changing GREEN PRs between Ready and Draft, so this loop does not race that writer by flipping lifecycle state.
Scope / stack / merge governance
Write scope is Orgmetra only. PR #47 remains a separate owner for non-authorizing pre-mutation leave-review evidence. Child #114 remains a Draft dependency-first persistence lane and its focused GREEN does not transfer here.
Keep the current lifecycle state until the authoritative PR-lifecycle writer advances it. Fresh effective organization ruleset 18156473 —
CWL Central required workflowsis active on~DEFAULT_BRANCH, but its current live policy is weaker than Orgmetra's acquisition-grade acceptance: it requires 1 approving review, dismisses stale reviews on push, does not require last-push approval, requires review-thread resolution and central required workflows, blocks deletion/non-fast-forward updates, and permitsOrganizationAdminbypass_mode=always/ current-user always-bypass.Issue #89 owns that commercial-control gap plus lifecycle-writer collision evidence. Orgmetra acceptance remains at least 2 qualifying independent non-author approvals, approval after the last push, every applicable exact-head local/central gate terminal GREEN, resolved conversations, and no routine administrator bypass. Do not self-approve, race another writer, weaken/simulate protection, use routine admin bypass, or transfer predecessor/descendant evidence.