feat(core): add bitemporal position reporting hierarchy - #94
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true✨ Finishing Touches📝 Generate docstrings
🧪 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 |
|
@opencode-agent Please review the current unchanged head against protected |
|
Lifecycle correction: protected |
Preserve the complete position-reporting feature delta while adopting protected develop@eb9757f8649aaad026a9865508d9aad50c1a7a4f using GitHub's conflict-free merge tree. Update the dedicated traceability page so protected-parent authority and the remaining persistence/mutation gap are code-current. No force-push, gate weakening, foreign-owner source copy, or release claim.
…tively Preserve the complete governed reporting-change review delta while adopting protected develop@eb9757f8649aaad026a9865508d9aad50c1a7a4f using GitHub's conflict-free exact merge tree. Keep #94 as an active read-only hierarchy dependency claim only; do not import mutable sibling source. No force-push, gate weakening, foreign-owner source copy, or release claim.
Buyer-visible gap
Orgmetra separates Job, Position and Assignment and models organization-unit hierarchy, but protected truth still has no authoritative Position-to-Position solid-line reporting fact. A commercial HRIS therefore cannot reconstruct which seat reports to which managerial seat at one business date and system-knowledge cutoff without incorrectly deriving supervision from Person/Assignment or Organization parentage.
This Orgmetra-only slice defines a tenant-scoped, bitemporal reporting contract. Managerial hierarchy is Position-to-Position, not Person-to-Person; Assignment remains an independent multiple-membership fact.
RED → root-cause implementation retained
36f8f7d0605688c95ddebdc6d6f513eb81d4e144defined deterministic subordinate→manager evidence, tenant isolation, effective/system-time visibility, one visible solid-line manager per subordinate, staffable endpoint seats, cycle/self-report rejection, trust-bearing runtime-type hardening and redacted routine representation before productionposition_reportingexisted.32616830004/ job97138821309checked out that exact RED SHA and failed withModuleNotFoundError: No module named 'orgmetra_hris_kernel.position_reporting'.f75ef9a7d785229d2e8a11fe3a5257ce40a5e0c8addedPositionReportingRelationship,PositionReportingSnapshotand bitemporal reconstruction over authoritativePositionVersionevidence only.fb78cbb9f85fd1c7765b98afbcd609829dba543dand repair3f67182bb3065f2fc8fd974bfdd75a390d8a8fdcexpose the governed types/function from the package root and__all__.Protected-parent adoption
Current exact head:
e950286e0ed867eb7b20061b0495360b57503487Protected base:
develop@eb9757f8649aaad026a9865508d9aad50c1a7a4fLive state: open · Draft · mergeable.
e950286e...is an ordinary non-force two-parent adoption of prior feature head2ff1262b976029e447dc736e6472eebbac30a7f5and protecteddevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f. Protected #161 repository-workflow consolidation is preserved rather than resurrected or overwritten. Historical checks against the older parent remain causal evidence only.Current exact-head acceptance
Current-head hosted results are now terminal:
34005387510: SUCCESS.34005387493: SUCCESS.34005387374: SUCCESS.34005387422: FAILURE, but not from a source/SARIF finding. Both Python and Actions compatibility jobs successfully requested the exact-head CodeQL dispatch and then failed only atRelease runner or enforce current-head CodeQL verdict; this is the same central verdict-production/authorization owner boundary already affecting other Orgmetra lanes.Do not convert that central handoff failure into leaf churn, a synthetic verdict, a no-op retrigger, or a weakened security gate. Formal reviews remain COMMENTED-only; no qualifying
APPROVEDreview exists, so the PR remains Draft.Governed behavior
A visible solid-line reporting edge must reference exactly one same-tenant
activeoropenPositionVersionat the requested business/system coordinate for both subordinate and manager. One subordinate can have only one visible solid-line manager; self-reporting and cycles fail closed. Caller-defined relationship/PositionVersion/date/datetime subclasses cannot control trust-bearing identity or temporal comparisons, and caller-owned timezone behavior is resolved once and detached into a built-in UTC instant. Routine representations redact position-correlation UUIDs.The snapshot is descriptive organizational evidence only. It does not identify the worker occupying either seat, infer a manager from Assignment, reinterpret Organization parentage as supervisory authority, authorize an employment decision, or claim authoritative reporting-line mutation.
Remaining buyer gap and merge governance
Persistence/mutation remains a bounded follow-up: normalized tenant-qualified persistence, immutable audit/outbox evidence, bitemporal write/correction semantics, purpose-bound authorization and database-level integrity. Accessible organization-chart UI remains separate and requires Product Design/Figma/Storybook/accessibility evidence when it enters scope.
Keep this PR Draft until the central CodeQL owner produces a valid exact-head verdict, every other required central workflow is terminal passing, required conversations are resolved, and the live one-approval policy is satisfied. Do not self-approve, use routine administrator bypass, weaken gates, transfer predecessor evidence, force-push/destructively rebase, or copy mutable foreign-owner source.