feat(schedule): establish four-level work-item hierarchy domain - #515
feat(schedule): establish four-level work-item hierarchy domain#515seonghobae wants to merge 17 commits into
Conversation
📝 WalkthroughWalkthroughPhase → Activity → Task → Duty 4단계 계층의 검증기와 투영 함수를 추가했습니다. 레거시 3단계 ID와 입력 순서를 보존합니다. 오류 검증, 순환 탐지, 규모 테스트, 문서 및 커버리지 계약을 추가했습니다. ChangesWork-item 계층 도메인
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: 🟡 Moderate · up to The hierarchy projection can silently overwrite caller-provided Sequence Diagram(s)sequenceDiagram
participant 호출자
participant validateWorkItemHierarchy
participant projectWorkItemHierarchy
호출자->>validateWorkItemHierarchy: Work-item 레코드 배열 전달
validateWorkItemHierarchy-->>projectWorkItemHierarchy: 검증 결과와 오류 코드 반환
projectWorkItemHierarchy-->>호출자: 정규화된 계층 객체 또는 예외 반환
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ 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 |
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
@opencode-agent review Please submit a formal review for exact current head |
Reconcile the hierarchy-domain root onto current protected develop, preserving #545 NVIDIA NIM/OpenCode configuration and released-note regressions while retaining the work-item hierarchy unit/coverage registrations.
Rebuild the schedule-outcome child on the exact current #515 hierarchy head, preserving the parent OpenCode/NIM and release-note protections while retaining only the bounded outcome-domain source, tests, coverage registration, and documentation delta.
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path.
Findings
1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch
- Problem: GitHub reports mergeStateStatus
DIRTYfor this pull request. - Root cause: Branch
feat/work-item-hierarchy-domain-287cannot be merged cleanly intodevelop; the changed-file flow below shows which review/runtime path is blocked by the conflict. - Fix: Merge or rebase the latest
developintofeat/work-item-hierarchy-domain-287, resolve conflict markers in the PR branch, rerun the focused checks, and push the same branch. - Repair commands:
gh pr checkout 515 --repo ContextualWisdomLab/scopeweave
git fetch origin develop
git merge --no-ff origin/develop # or: git rebase origin/develop
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:feat/work-item-hierarchy-domain-287
# rebase path only: git push --force-with-lease origin HEAD:feat/work-item-hierarchy-domain-287- Regression test: Keep OpenCode approval gated on mergeability so model-output failures cannot approve a conflicted PR.
Merge Conflict Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (3 files)"]
S1 --> I1["repository behavior"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["required checks"]
Evidence --> S2["Docs: work-item-hierarchy.md"]
S2 --> I2["operator or user guidance"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
- Result: REQUEST_CHANGES
- Reason: mergeStateStatus is
DIRTY; mergeable isCONFLICTING. - Head SHA:
2f082ebaead953788b968c3d01b792c501fdc538 - Workflow run: 32188796983
- Workflow attempt: 1
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (3 files)"]
S1 --> I1["repository behavior"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["required checks"]
Evidence --> S2["Docs: work-item-hierarchy.md"]
S2 --> I2["operator or user guidance"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode reviewed the current-head mergeability evidence and changed-file flow before approval, then found merge conflicts on the affected path. Findings1. HIGH Merge Conflict Guidance - Resolve the PR branch against the latest base branch
gh pr checkout 515 --repo ContextualWisdomLab/scopeweave
git fetch origin develop
git merge --no-ff origin/develop # or: git rebase origin/develop
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:feat/work-item-hierarchy-domain-287
# rebase path only: git push --force-with-lease origin HEAD:feat/work-item-hierarchy-domain-287
Merge Conflict Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (3 files)"]
S1 --> I1["repository behavior"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["required checks"]
Evidence --> S2["Docs: work-item-hierarchy.md"]
S2 --> I2["operator or user guidance"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (3 files)"]
S1 --> I1["repository behavior"]
I1 --> Conflict["Merge conflict blocks this path"]
Conflict --> V1["required checks"]
Evidence --> S2["Docs: work-item-hierarchy.md"]
S2 --> I2["operator or user guidance"]
I2 --> Conflict["Merge conflict blocks this path"]
Conflict --> V2["docs review"]
Evidence --> S3["Test (2 files)"]
S3 --> I3["regression suite"]
I3 --> Conflict["Merge conflict blocks this path"]
Conflict --> V3["targeted test run"]
Merge Conflict Guidance
gh pr checkout 515 --repo ContextualWisdomLab/scopeweave
git fetch origin develop
git merge --no-ff origin/develop # or: git rebase origin/develop
git status --short
# resolve files, then git add <resolved-files>
# merge path: git commit
# rebase path: git rebase --continue
git push origin HEAD:feat/work-item-hierarchy-domain-287
# rebase path only: git push --force-with-lease origin HEAD:feat/work-item-hierarchy-domain-287 |
Restore the current #515 hierarchy/orchestrator tree while retaining only the bounded schedule-outcome delta. Preserve tenant-bound orchestrator attribution source/tests/docs and combine package/changelog registrations without transferring stale parent content.
|
Caution Review failedAn error occurred during the review process. Please try again later. 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 |
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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 |
Dismissed as predecessor-head evidence only. This review is anchored to 2f082ebaead953788b968c3d01b792c501fdc538, where GitHub reported the branch conflicting with develop. The live PR is now 36c11dd0bf907569184d7d73172b675d21bd0ff1 against protected develop@2c328875e00e86537df3e965170be80532571cad, is currently mergeable, and the current-head repository workflow generation completed its product checks. This dismissal is not an approval and does not satisfy the current independent-review/last-push requirement; neutral/non-exact/stale evidence remains non-authorizing.
|
@opencode-agent review Review-only request for exact current head |
Buyer outcome
Refs #287. This bounded root slice establishes the executable, framework-neutral Phase → Activity → Task → Duty hierarchy boundary needed before ScopeWeave can safely expose a fourth planning level. It preserves legacy three-level plans and customer-supplied fields without synthesizing customer work.
Exact current scope
develop@2c328875e00e86537df3e965170be80532571cad;36c11dd0bf907569184d7d73172b675d21bd0ff1;e57b5a991fd244583094dd3994c97d1cfd94631e;feat/schedule-outcome-domain-287@73ce4227d761c79a9fcad39b0455fec4b35b6274, whose PR base resolves to this exact parent head;The branch previously absorbed protected-base movement non-destructively and preserves the bounded hierarchy delta plus protected behavior. Any future base/head movement invalidates revision-sensitive evidence until refetched.
TDD and data-integrity evidence
29ef935f9356c59b88eda2d1c648acb78848781bintroduced the focused test whileserver/work_item_hierarchy.mjswas absent, producingERR_MODULE_NOT_FOUNDbefore implementation.bcc5f70200dc3d2a45fcb6acf0dd427485a93c32added the initial validator/projection;8299740f9417dcfaa9a9642f73936ab4e02a3f5cwired it into canonical unit and c8 coverage;ba26b89260ba8ac5142fc7c2ea76c0bb4f475036added the initial evidence record.kindandsourceIndexcould overwrite customer fields. Regression commit458cc39ba0a7a6f66bf35ea8d0533c6c4554fddbchanged the contract first.8f4981060d3c35776657d2fb90c12e7594daaa7bfixed the causal defect by returning immutable wrappers{ record, kind, sourceIndex }, keeping customer fields in the immutable nestedrecordwhile preserving parent normalization and level derivation.da31ed0cce6970d54544af6391d3bbbd968565a7directly asserts immutability;f9cdca28d1e2c276b61019a98453a82de1420c20corrected migration-like wording to projection.CHANGES_REQUESTEDreview targets predecessor head2f082ebaead953788b968c3d01b792c501fdc538, where the branch was conflicting; that causal condition has been repaired, the review is dismissed/stale, and it is not approval evidence for the current head.findCycleIdscorrectly excludes tail nodes leading into a cycle. That thread is now resolved and does not establish approval.Behavior contract
Current exact-head evidence
For exact contributor head
36c11dd0bf907569184d7d73172b675d21bd0ff1, the associated pull-request workflow generation is terminal GitHub-success at the run level:32508691240;32508691555;32508691488;32508691332;32508691249; and32508691843.These statuses are associated evidence, not sufficient authorization by themselves. ScopeWeave #523 owns repository-native exact-contributor Server Tests/coverage checkout integrity, while
ContextualWisdomLab/.github#1222owns organization-reusable SAST/Security exact-head checkout integrity. Until those control repairs are protected-shipped and downstream canaries prove the actual tested/scanned checkout identity, synthetic/predecessor/status-only evidence remains non-authorizing.Standards and integration boundary
docs/doctoring/work-item-hierarchy.mdrecords active-PR versus shipped truth, repair chronology, rollback/integration boundaries, and APA 7 references. ISO 21511:2018 is treated as the current published WBS standard; ISO/DIS 21511 Edition 2 is research context rather than final normative authority. PMI's 2019 WBS practice standard supports life-cycle-neutral decomposition. ScopeWeave's exact four labels are a product decision, not an ISO or PMI mandate.This PR does not close #287. Later bounded integration must wire the domain into editor validation and labels, import/export, persistence/API contracts, analytics traversal, browser E2E, migration and rollback acceptance. Schema ownership remains separate from #433/#500.
Merge gate
Do not merge or enable auto-merge until the unchanged current head remains reconciled to freshly resolved protected
develop, repository-native and centrally owned exact-head evidence controls are protected-shipped and regenerated, every applicable CI/browser/owned statement-branch-function-line coverage/docstring/CodeQL/SAST/security/dependency/supply-chain/package/provenance/required-workflow gate is substantively terminal-passing, valid unresolved current-head defects are zero, and the live pull-request rule is satisfied by one qualifying independent current-head approval under active ruleset18156473. That ruleset does not require latest-push approval. Do not self-approve or transfer predecessor/model evidence.Refs #287