Skip to content

feat(ui): add assignment history read states - #143

Draft
seonghobae wants to merge 8 commits into
feat/hr-workspace-protected-read-statefrom
feat/hr-workspace-assignment-history-state
Draft

feat(ui): add assignment history read states#143
seonghobae wants to merge 8 commits into
feat/hr-workspace-protected-read-statefrom
feat/hr-workspace-assignment-history-state

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Buyer-visible slice

Protected product planning names Employee Profile with bitemporal Assignment history as a P1 HRIS surface. Backend PR #142 owns the purpose-bound Assignment-history read contract; this dependency-first UI lane owns presentation/interaction only. It does not import that unmerged backend package, mutate Assignment truth, introduce cross-service SQL, or create a parallel People API owner.

Design and governed interaction

Fresh Figma Orgmetra Baseline Storybook Inventory node 1:64 was re-read on 2026-08-28. It continues to require default, hover, focus, disabled, loading, validation-error, read-only, and high-risk-confirmation behavior. This slice reuses the existing Orgmetra design/focus tokens and Storybook conventions rather than introducing parallel geometry or a second design system.

The bounded state model is idle / loading / ready(read-only) / empty / denied / stale / scopeBlocked / error.

  • ready explains the bitemporal distinction: effective time is when an Assignment fact applied; system-recorded time is when Orgmetra knew it. The state is read-only, does not authorize Assignment mutation, and does not infer worker status beyond the exact requested known_at snapshot.
  • empty explicitly states that no visible Assignment at one authorized coordinate is not evidence of no Employment or no Assignment evidence outside that coordinate.
  • stale, scopeBlocked, denied, and error fail closed with concrete next actions instead of falling back to cached/partial evidence or broadening requested fields.
  • Generic state evidence carries no Person/Employment/Assignment/Job/Position/Organization identifiers, worker contact data, compensation/rating/assessment/candidate values, credentials/tokens, prompts, or model output.
  • Exact state parsing uses own-key membership and rejects prototype-inherited names such as constructor, toString, and __proto__.

Current WCAG 2.2 and WAI-ARIA 1.2 primary references and active-PR/protected-main distinctions are recorded under docs/doctoring and docs/traceability.

Test-first sequence

Contract-first head 838bea43b6264d2cc1148c5acacea3a64319c76a introduced the regression and dedicated exact-coverage workflow before the production state model existed. Its hosted run 33146871285 was cancelled after the branch advanced under concurrency, so it is not claimed as terminal RED evidence.

Production, Storybook, CSS, doctoring, and traceability were then implemented on the same canonical branch without weakening the contract.

Exact-current-head evidence

Recorded base: #130 feat/hr-workspace-protected-read-state@68896baa692ecf6fec8f21cfe5d981440be6071c.
Current #130 head is c92749c (PR #130 remains open and unmerged). Current exact child head: b7fdd493809545a7fd562fb6464b09c853739149.
GitHub reports this PR open · Draft · mergeable.

Assignment history state contract run 33198343313, job 98941173734, is terminal GREEN on exact child head b7fdd493809545a7fd562fb6464b09c853739149; GitHub's job metadata binds that run/job to head_sha=b7fdd493809545a7fd562fb6464b09c853739149. The run passed all 6 focused interaction/privacy/fail-closed regressions with exact 100% line/branch/function coverage and a clean checkout.

  • exact run/job head SHA: b7fdd493809545a7fd562fb6464b09c853739149;
  • used Node 24.19.0;
  • passed all 6 focused interaction/privacy/fail-closed regressions;
  • measured apps/hr-workspace/assignment-history-state.js and the owned total at 100.00% line / 100.00% branch / 100.00% function coverage; and
  • proved a clean checkout.

Fresh submitted reviews and inline review threads are both empty. This GREEN is stack-local focused evidence only; no #130 or #142 check/review transfers and it is not protected-main integration evidence.

Dependency / merge governance

Keep Draft and process #53#130 dependency-first. After those parents actually integrate, retarget/revalidate this child against fresh develop, reconcile then-current Employee Profile and #142 backend truth, and rerun every applicable browser/accessibility/Foundation/Recovery/SAST/Security plus central required workflow on one resulting exact head.

Do not self-approve, use routine administrator bypass, race another lifecycle writer, treat read-only Assignment history as mutation or employment-decision authority, transfer predecessor/parent evidence, or mutate a dedicated-writer dependency.

@coderabbitai

coderabbitai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant