feat: add governed selection outcome monitoring plan - #42
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 (8)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough
Changes선택 결과 모니터링
Estimated code review effort: 4 (복잡) | ~45분 Merge Risk: 🟡 Moderate · up to This PR adds aggregate-only monitoring evidence with deterministic integrity checks and human-controlled employment decisions, but it should not merge until all required current-head reviews, validations, and independent approval pass; integrating hosts must also enforce tenant ownership, actor separation, purpose authorization, and durable audit to prevent evidence from being attributed to the wrong tenant or unauthorized purpose. Sequence Diagram(s)sequenceDiagram
participant Caller
participant build_selection_outcome_monitoring_plan
participant SelectionOutcomeMonitoringPlan
Caller->>build_selection_outcome_monitoring_plan: 계획 입력 전달
build_selection_outcome_monitoring_plan->>SelectionOutcomeMonitoringPlan: 입력 검증 및 계획 생성
SelectionOutcomeMonitoringPlan-->>Caller: HMAC 봉인된 계획 반환
Caller->>SelectionOutcomeMonitoringPlan: canonical_json() 호출
SelectionOutcomeMonitoringPlan-->>Caller: 검증된 canonical JSON 반환
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 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 independently review exact current head |
|
@opencode-agent Please independently review exact current head |
|
@opencode-agent Re-review the unchanged exact current head after the central review-dispatch/scheduler repairs now integrated on |
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
.github/workflows/selection-monitoring-quality.yml— GitHub Actions review jobdocs/adr/0016-governed-selection-outcome-monitoring-plan.md— operator or user guidancedocs/doctoring/selection-outcome-monitoring-references.md— operator or user guidancedocs/traceability/selection-outcome-monitoring.md— operator or user guidancepackages/selection-monitoring/CHANGELOG.md— repository behaviorpackages/selection-monitoring/README.md— repository behaviorpackages/selection-monitoring/pyproject.toml— repository behaviorpackages/selection-monitoring/src/orgmetra_selection_monitoring/__init__.py— Python module behaviorpackages/selection-monitoring/src/orgmetra_selection_monitoring/plan.py— Python module behaviorpackages/selection-monitoring/tests/test_actor_separation.py— regression suitepackages/selection-monitoring/tests/test_evidence_version.py— regression suitepackages/selection-monitoring/tests/test_fixed_governance_runtime_integrity.py— regression suitepackages/selection-monitoring/tests/test_issuance_integrity.py— regression suitepackages/selection-monitoring/tests/test_plan.py— regression suitepackages/selection-monitoring/tests/test_privacy.py— regression suitepackages/selection-monitoring/tests/test_quality_workflow_trigger.py— regression suitepackages/selection-monitoring/tests/test_reference_privacy.py— regression suitepackages/selection-monitoring/tests/test_string_runtime_evidence_integrity.py— regression suitepackages/selection-monitoring/tests/test_temporal_evidence_integrity.py— regression suite
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: selection-monitoring-quality.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: selection-monitoring-quality.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Docs: 0016-governed-selection-outcome-monitoring-plan.md (3 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: 0016-governed-selection-outcome-monitoring-plan.md (3 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Repository file: README.md"]
S4 --> I4["repository behavior"]
I4 --> R4["Review risk: Repository file: README.md"]
R4 --> V4["required checks"]
Evidence --> S5["Repository file: pyproject.toml"]
S5 --> I5["repository behavior"]
I5 --> R5["Review risk: Repository file: pyproject.toml"]
R5 --> V5["required checks"]
Evidence --> S6["Python: __init__.py (2 files)"]
S6 --> I6["Python module behavior"]
I6 --> R6["Review risk: Python: __init__.py (2 files)"]
R6 --> V6["pytest plus coverage"]
Evidence --> S7["Test: test_actor_separation.py (10 files)"]
S7 --> I7["regression suite"]
I7 --> R7["Review risk: Test: test_actor_separation.py (10 files)"]
R7 --> V7["targeted test run"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
fb03c0837b38424412fa774576a8ded0f9847896 - Workflow run: 33371635973
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Workflow: selection-monitoring-quality.yml"]
S1 --> I1["GitHub Actions review job"]
I1 --> R1["Review risk: Workflow: selection-monitoring-quality.yml"]
R1 --> V1["actionlint plus required checks"]
Evidence --> S2["Docs: 0016-governed-selection-outcome-monitoring-plan.md (3 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: 0016-governed-selection-outcome-monitoring-plan.md (3 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Repository file: README.md"]
S4 --> I4["repository behavior"]
I4 --> R4["Review risk: Repository file: README.md"]
R4 --> V4["required checks"]
Evidence --> S5["Repository file: pyproject.toml"]
S5 --> I5["repository behavior"]
I5 --> R5["Review risk: Repository file: pyproject.toml"]
R5 --> V5["required checks"]
Evidence --> S6["Python: __init__.py (2 files)"]
S6 --> I6["Python module behavior"]
I6 --> R6["Review risk: Python: __init__.py (2 files)"]
R6 --> V6["pytest plus coverage"]
Evidence --> S7["Test: test_actor_separation.py (10 files)"]
S7 --> I7["regression suite"]
I7 --> R7["Review risk: Test: test_actor_separation.py (10 files)"]
R7 --> V7["targeted test run"]
OpenCode Review Overview
Coverage evidence did not pass, so approval is blocked. The formal pull-request review is the source-backed diff review, not this status comment. |
|
@opencode-agent review Re-run the substantive review on exact current head |
|
Current-head control-evidence correction for The PR body’s statement that no authenticated exact-head OpenCode review exists is stale. A post- The first current OpenCode boundary is central coverage double-instrumentation, not missing dispatch and not uncovered Orgmetra code. In The exact RED/GREEN acceptance canary has been routed through the existing central owner path |
|
Scheduled review-feedback autofix for this PR head.
|
|
Scheduled review-feedback autofix for this PR head.
|
|
Scheduled review-feedback autofix for this PR head.
|
|
Scheduled review-feedback autofix for this PR head.
|
Adopt protected develop without resurrecting the retired package-local workflow. Preserve selection-monitoring 100% statement/branch coverage through a hash-locked Foundation-owned contract and add executable non-resurrection/ownership regression. Signed-off-by: Seongho Bae <me@seonghobae.me>
Replace the selection-monitoring-specific dispatcher edit with a stable Foundation-owned discovery convention so later package artifact contracts can be added without competing edits to the shared dependency-hygiene script. Keep the retired leaf workflow deleted, preserve hash-locked 100% coverage, compile before tests, and clean the isolated venv on exit. Signed-off-by: Seongho Bae <me@seonghobae.me>
|
Canonical prerequisite #258 now has an active protected-parent implementation in Draft PR #259 at exact head |
Buyer-visible outcome
Adds a governed, aggregate-only selection-outcome monitoring plan for post-hire criterion evidence while keeping high-impact employment decisions human-controlled. The packet binds tenant and Job scope, exact population/outcome snapshot evidence, monitoring window, protected-attribute/small-sample/statistical-plan provenance, accountable actor/reviewer/purpose/reason, evidence version, and opaque governed references into deterministic canonical evidence. LLM/model output is not an employment decision authority.
Current authority — 2026-09-07
Exact head is
ec35dc87d6be4f44a2c7b44311fa8c89bb080fb3on current protecteddevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f. The precedingb357adee...was already an ordinary two-parent, non-force adoption of the valid feature head plus protected #161; this successor is a normal fast-forward commit on that adopted history.The retired
.github/workflows/selection-monitoring-quality.ymlstays deleted. Canonical.github/workflows/foundation-ci.ymlremains byte-for-byte identical to protected #161 (Git blob6b475d6f2022a3ccb791d6355e50542e237e57c0), so its existing manifest entry remains valid and no Foundation-manifest churn is required.Shared-dispatcher repair
The first reconciliation head made
tests/test_foundation_ci_dependency_hygiene.shknow Selection Monitoring by name. That solved the immediate leaf-workflow resurrection, but it would force every later package reconciliation to edit the same shared dispatcher and create avoidable sibling-PR conflicts. The current head replaces that package-specific hook with a stable discovery contract: Foundation-owned dependency hygiene discoverstests/test_foundation_ci_*_artifact.shand executes each delegated artifact contract. Selection Monitoring now ownstests/test_foundation_ci_selection_monitoring_artifact.sh; adding another package proof no longer requires another edit to the shared Foundation workflow or another package-specific variable in the dispatcher.The delegated contract keeps the retired leaf absent, creates an isolated virtual environment, installs the existing hash-locked reviewed Foundation test toolchain, compiles the package and its tests, runs the package pytest configuration with its existing
--cov-fail-under=100and--cov-branchthresholds, and removes the temporary environment on exit.test_quality_workflow_trigger.pynow fails if the retired leaf reappears, the discovery convention disappears, or the Selection Monitoring artifact contract is detached. TRACEABILITY describes the same owner path. Product runtime/scientific semantics are unchanged.Canonical Foundation dependency
Structured Interview reconciliation exposed a broader Foundation contract that this product branch must not silently become the owner of. PR #40 declares Python
>=3.12and has executable 3.12/3.13/3.14 compatibility evidence; its protected-parent synthetic merge resurrects a retired leaf to preserve that contract. Deleting that leaf without a canonical replacement would weaken supported-runtime acceptance.Issue #258 / Draft PR #259 is the canonical repository-level solution: package-neutral compatibility under Foundation, exact
ubuntu-24.04, actual-interpreter-patch PEP 440 selection, malformed metadata/layout fail-closed behavior, reviewed hash-locked tooling, complete dependency-file provenance binding, one Foundation job with sequential compatibility execution, no package-name switchboard, retired-leaf non-resurrection, and deterministic manifest resealing.The generic dispatcher on this branch is valid feature-branch evidence but is not protected shared-kernel truth. Do not copy this mutable source into sibling product branches. Required owner order is #258/#259 normal protected integration first, then #42 non-force adoption of that protected Foundation truth while preserving the complete Selection Monitoring delta and helper semantics.
Exact-head acceptance
Fresh terminal evidence on unchanged
ec35dc87...is now:34039596182— SUCCESS.34039596135— SUCCESS.34039596128— FAILURE only at the central Dependency Review support boundary. Exact-head checkout succeeds; Scorecard, OSV and Trivy complete successfully. Dependency-review job101509102356fails atCheck dependency review support, so the authoritative Dependency Review action is skipped. This does not establish a Selection Monitoring source vulnerability.34039596118— FAILURE only at the central verdict handoff. Language detection succeeds; Python job101509421619and Actions job101509421633both successfully request current-head CodeQL scan dispatch, then fail only atRelease runner or enforce current-head CodeQL verdict. No source/SARIF defect is established by that wrapper failure.Historical package GREEN and predecessor results remain causal evidence only. Fresh review enumeration remains COMMENTED-only; no qualifying independent
APPROVEDreview exists. Every currently returned inline review thread is resolved. No leaf fallback, synthetic security/CodeQL verdict, or no-op retrigger is introduced for central-owner failures.Live protection / next transition
Ruleset
18156473remains the merge authority. Keep this PR Draft. #258/#259 must become protected Foundation truth before this branch's shared-dispatcher delta can be treated as canonical owner behavior. After that integration, non-force adopt protected truth and reacquire exact-head evidence. If a real RED appears, repair its causal owner.Do not restore package-local CI, transfer predecessor checks, copy mutable sibling Foundation source, self-approve, fabricate reviewer/verdict evidence, force-push/destructively rebase, weaken a gate, or Close the valid monitoring delta.