Skip to content

fix(lineage): bind dynamic evaluations to substantive criteria - #915

Draft
seonghobae wants to merge 55 commits into
feat/dichotomous-measurement-policyfrom
feat/dynamic-evaluation-lineage-20260902
Draft

seonghobae wants to merge 55 commits into
feat/dichotomous-measurement-policyfrom
feat/dynamic-evaluation-lineage-20260902

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 2, 2026 •

Copy link
Copy Markdown
Contributor

Root-cause repair

Dynamic-evaluation lineage preserves what was evaluated and keeps criterion, observation, adjudication, calibration, promotion, linking and supersession provenance auditable without absorbing foreign scoring or provider authority.

Owner boundary

LineageWeave owns the provenance/read-model projection only. contextual-orchestrator owns provider/model execution and invocation evidence; fast-mlsirm owns reusable psychometric calibration/linking arithmetic; TEPP owns temporal/drift semantics. Production integration consumes released/versioned owner artifacts and exact digests. Tests use synthetic_source_contract/v1; no nonexistent fast-mlsirm source contract is invented. ADR 0355 remains Proposed.

Current stack / exact authority — 2026-09-22 KST

The existing RED→causal-repair history for criterion-set snapshot integrity, criterion-ref type admission, zero-anchor cold start, distinct calibration/promotion/linking/adjudication identities, acyclic supersession, and opaque-provenance Unicode/noncharacter validation remains preserved.

Parent #902 moved only by ordinary convergence on #899's source-neutral live ancestry. Ordinary two-parent/non-force commit ba77b336... adopts current #902 without altering this PR's 12-file dynamic-evaluation delta. No predecessor checks/reviews transfer, and no canonical psychometric/provider source is copied here.

Keep Draft until #902 and #899 integrate normally and this unchanged descendant receives complete repository/security/governance evidence plus qualifying independent review. No self-approval, force push, bypass, fabricated owner contract, source copy, stale evidence transfer or new wake commit.

@coderabbitai

coderabbitai Bot commented Sep 2, 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.

@seonghobae seonghobae changed the title feat(lineage): project dynamic evaluation snapshots fix(lineage): bind dynamic evaluations to substantive criteria Sep 2, 2026
Adopt #9028a8b269 after its protected-main convergence. Preserve the dynamic-evaluation lineage/evidence delta and the current Tests workflow without rewriting branch history.
Adopt #9022dd6258 after protected main #924 while preserving the dynamic-evaluation lineage/evidence delta without force rewrite.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Parent #902 has now moved non-force to c316bfbd… after #899/current-main convergence. This branch’s 12 dynamic-evaluation lineage/evidence files are disjoint from the inherited workflow/contract repair. Keeping the old #902 ancestry is therefore a wrong-base finding, not a reason to close or rewrite history. Preserve the lineage delta exactly, adopt the moved parent’s protected workflow contract, and advance with a two-parent non-force convergence commit; predecessor checks/reviews remain non-transferable.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

Please review the exact current head 6540acebbb3ecef4736ebeefa6c0c4486b002b79, especially the semantic convergence of docs/ubiquitous-language.md: current #902 formatting and 2PLM policy must coexist with this PR's dynamic-evaluation vocabulary and stronger adjudication boundary. Do not transfer predecessor review/check evidence.

@coderabbitai

coderabbitai Bot commented Sep 15, 2026 •

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

expected_head='6540acebbb3ecef4736ebeefa6c0c4486b002b79'
expected_base='8b5cc45dbb2d6ef7bb3b49a10c33cdfb93b483cc'

printf '%s\n' '== HEAD =='
git rev-parse HEAD
git status --short
printf '%s\n' '== stated commits =='
git cat-file -t "$expected_head"
git cat-file -t "$expected_base"
printf '%s\n' '== merge-base and ancestry =='
git merge-base HEAD "$expected_base"
git merge-base --is-ancestor "$expected_base" HEAD && echo 'base-is-ancestor=yes'
printf '%s\n' '== changed files from stated base =='
git diff --name-status "$expected_base"...HEAD
printf '%s\n' '== change summary =='
git diff --stat "$expected_base"...HEAD
printf '%s\n' '== glossary outline =='
ast-grep outline docs/ubiquitous-language.md --items all || true
printf '%s\n' '== glossary diff =='
git diff --no-ext-diff --unified=80 "$expected_base"...HEAD -- docs/ubiquitous-language.md
printf '%s\n' '== changed source/test file outlines =='
git diff --name-only "$expected_base"...HEAD | while IFS= read -r f; do
  case "$f" in
    *.py|*.ts|*.tsx|*.js|*.jsx|*.go|*.rs|*.java)
      printf '\n--- %s ---\n' "$f"
      ast-grep outline "$f" --items all || true
      ;;
  esac
done
printf '%s\n' '== test and implementation diff =='
git diff --no-ext-diff --unified=30 "$expected_base"...HEAD -- '*.py' '*.ts' '*.tsx' '*.js' '*.jsx' '*.go' '*.rs' '*.java' '*.yml' '*.yaml' ':!docs/ubiquitous-language.md'

Length of output: 111964


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '%s\n' '== owner/contract references in direct diff =='
git diff --no-ext-diff 8b5cc45dbb2d6ef7bb3b49a10c33cdfb93b483cc...HEAD | \
  rg -n -C 3 'fast[_-]mlsirm.*dynamic.*evaluation|synthetic_source_contract|noncharacter|Zl|Zp|opaque reference|source_contract_ref' || true

printf '%s\n' '== criterion reference validator with line numbers =='
nl -ba lineageweave/evaluation_criteria.py | sed -n '85,155p'
printf '%s\n' '== dynamic reference validator with line numbers =='
nl -ba lineageweave/evaluation_lineage.py | sed -n '120,175p'
printf '%s\n' '== affected fixture references with line numbers =='
rg -n -C 3 'fast_mlsirm_dynamic_evaluation_item|synthetic_source_contract' \
  tests/test_dynamic_evaluation_criterion_lineage.py \
  tests/test_dynamic_evaluation_lineage_admission_budget.py \
  tests/test_dynamic_evaluation_lineage.py

printf '%s\n' '== ADR contract and reference-boundary sections =='
rg -n -i -C 8 'fast-mlsirm|synthetic_source_contract|noncharacter|unicode|opaque reference|Zl|Zp|criterion' \
  docs/adr/0355-dynamic-evaluation-lineage.md | head -n 400

printf '%s\n' '== glossary final sections with line numbers =='
nl -ba docs/ubiquitous-language.md | sed -n '1,180p'

printf '%s\n' '== full direct-diff search for reference validators =='
rg -n -C 4 'def _reference\(|_is_unicode_noncharacter|unicodedata\.category' \
  lineageweave/evaluation_criteria.py lineageweave/evaluation_lineage.py

Length of output: 53787


@seonghobae I reviewed exact head 6540acebbb3ecef4736ebeefa6c0c4486b002b79 against #902@8b5cc45dbb2d6ef7bb3b49a10c33cdfb93b483cc. I did not use predecessor review or check evidence.

The glossary convergence is correct. It retains the current measurement policy and 2PLM (irt_2plm) intended-use wording. It also retains the dynamic-evaluation vocabulary and the stronger Adjudication boundary.

I found two issues:

  1. Opaque criterion references do not reject all required Unicode values.
    lineageweave/evaluation_criteria.py Line 94 rejects controls, surrogates, and Cf, but it accepts Zl, Zp, and the 66 Unicode noncharacters. The ADR defines these as invalid for all opaque provenance references. Apply the same restrictive profile used by lineageweave/evaluation_lineage.py and add criterion-lineage regression cases.

  2. Two test fixtures name an unpublished fast-mlsirm contract.
    tests/test_dynamic_evaluation_criterion_lineage.py Line 77 and tests/test_dynamic_evaluation_lineage_admission_budget.py Line 44 use fast_mlsirm_dynamic_evaluation_item.... This conflicts with ADR 0355 and the stated owner boundary. Replace both values with synthetic_source_contract/v1 or another explicitly synthetic identifier.

Repository tests were not executed during this static review.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

Stack authority update: parent #902 is now 9487e0299a148a10bfcf7b02110508078843d3ef after adopting #899's Proposed ADR 0300 lifecycle repair. Ordinary two-parent convergence e2a0038382c7fb4f75f66cad473afef4b9a8353a preserves all dynamic-evaluation deltas and adopts the moved parent exactly. Fresh compare reports merge-base 9487e029..., behind_by=0. No predecessor check/review receipt transfers; remain Draft.

This branch has not been deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant