Skip to content

feat(result): render exact Korean and English personal reports - #259

Merged
seonghobae merged 16 commits into
mainfrom
automation/result-report-locale-20260819
Aug 25, 2026
Merged

seonghobae merged 16 commits into
mainfrom
automation/result-report-locale-20260819

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 19, 2026 •

Copy link
Copy Markdown
Contributor

Why

Protected main can export immutable result scores to JSON and a human-readable report, but the report body is always English even when its declared locale is ko-KR. That creates a participant-facing locale integrity gap: the artifact can claim one locale while rendering another language.

What

  • Add an exact-locale participant report surface that supports the first reviewed consumer locales, ko-KR and en-US.
  • Reuse the existing immutable ResultExport validation/copy boundary so scores, standard errors, participant identity, and scientific provenance are not recomputed.
  • Render Korean or English structural labels and observation dispositions while copying reviewed limitation text unchanged.
  • Fail closed for every unsupported or noncanonical locale instead of silently falling back to English.

TDD lineage

  • RED: b623c33d1b65c4690e00f2a062fe09e95a775a34 imports the missing localized-report surface and requires Korean labels, English labels, preserved scores, and fail-closed locale resolution.
  • GREEN: 4fdd0d91e7cc2b978f75c93def9263cfcf4adb11 implements the exact-locale renderer.
  • Exposure: 6759081a1d3220e3cda093cec2326b6524bfed90 exports the runtime module.

Boundary

This is presentation only. It does not change psychometric arithmetic, continuous/facet score authority, uncertainty, calibration, norms, DIF, instrument translation evidence, identity/consent authority, or cross-service ownership. Unsupported locales remain unavailable until reviewed participant-facing copy and the required scientific/translation evidence exist.

Merge discipline

Do not merge until the unchanged exact head passes live required CI/security/coverage/rustdoc/package/provenance gates, has zero valid unresolved findings, and has qualifying independent non-author review where required. Never self-approve.

Summary by CodeRabbit

  • 새로운 기능

    • 결과 스냅샷에서 참가자용 다국어 결과 보고서를 생성할 수 있습니다.
    • 한국어(ko-KR)와 영어(en-US) 보고서를 지원합니다.
    • 메타데이터, 점수, 표준오차, 판정, 제한사항 및 감사 가능한 출처 정보가 현지화되어 표시됩니다.
    • 보고서 식별자와 참가자·결과 참조 정보를 확인할 수 있습니다.
  • 오류 처리

    • 지원되지 않는 로케일과 유효하지 않은 결과 입력을 구분해 안내합니다.

Open in Devin Review

@coderabbitai

coderabbitai Bot commented Aug 19, 2026 •

Copy link
Copy Markdown

Review Change Stack

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 982470aa-95e0-4b37-a9f6-ade6f09775bb

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1c65afdb-d390-476b-9388-672c5a175579

📥 Commits

Reviewing files that changed from the base of the PR and between 15533ae and 44884af.

📒 Files selected for processing (1)
  • src/localized_result_report.rs

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

localized_result_report 공개 모듈을 추가했습니다. 모듈은 불변 ResultSnapshot을 검증하고 ko-KR 또는 en-US 보고서를 생성합니다. 메타데이터, 점수, 표준오차, 판정 상태, 제한사항을 로케일별 텍스트로 렌더링합니다.

Changes

다국어 결과 보고서

Layer / File(s) Summary
보고서 계약 및 생성
src/lib.rs, src/localized_result_report.rs
공개 입력·출력·오류 타입과 접근자를 추가했습니다. from_snapshot은 지원 로케일과 ResultExport 입력을 검증한 뒤 보고서를 생성합니다.
로케일별 렌더링
src/localized_result_report.rs
en-US와 ko-KR의 메타데이터, 점수, 표준오차, 판정, 제한사항 라벨을 정의했습니다. 감사 가능한 출처와 생성 시각을 보고서에 포함합니다.
로케일 보고서 검증
tests/result_report_locale.rs
한국어·영어 렌더링, 원본 점수 불변성, 출처 보존, 지원되지 않는 로케일, 잘못된 export 입력과 오류 원인 연결을 검증합니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: 🟡 Moderate · up to 44884

The PR changes participant-facing report language selection, but ko-KR still leaves metadata labels in English, so it can claim Korean while showing mixed-language content. This bounded localization correctness issue should be fixed or explicitly accepted before merge.

Sequence Diagram(s)

sequenceDiagram
  participant Caller
  participant LocalizedResultReport
  participant ResultExport
  participant ResultSnapshot
  Caller->>LocalizedResultReport: from_snapshot(snapshot, input)
  LocalizedResultReport->>ResultExport: 입력 검증 및 export 생성
  ResultExport->>ResultSnapshot: 스냅샷 데이터 읽기
  ResultExport-->>LocalizedResultReport: 검증된 메타데이터와 점수 반환
  LocalizedResultReport-->>Caller: 로케일별 보고서 또는 오류 반환
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 ko-KR 및 en-US 참가자 결과 보고서 렌더링이라는 변경의 핵심을 정확하고 간결하게 설명합니다.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch automation/result-report-locale-20260819

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.

coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor Author

@opencode-agent review exact current head 44884af6248e26e9c80c91bf8648b201a6fca965. Re-evaluate the localized Korean/English result-report surface against current main d5443cdc1a52df8c7a34f0633a7353acfc79e008, same-head Runtime CI/security/SAST/SBOM/provenance evidence, and the now-resolved locale/metadata findings. Do not transfer predecessor-head evidence.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please review only the exact current head bfbf5f9 for localized result report against protected main 5544149. Do not transfer historical review or check evidence from an earlier head; the current required checks are running. Submit an independent formal review when current-head evidence is available.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please review only exact head bfbf5f9 against protected main 5544149. Earlier REQUEST_CHANGES reviews cited superseded heads or coverage evidence from those heads; do not transfer them. Report only actionable findings against this current SHA, and approve only from current-head evidence.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Reconciled exact head bfbf5f9effe16df9bede6a39a10e3bbdc01abe4a to e08dde2c3570da7cae8b83b20ea8bca5a205d838 without force-pushing.

  • Added the traceability mapping for src/localized_result_report.rs: exact ko-KR/en-US labels copy immutable scores/provenance; HTTP, real instrument content, rights/translation, invariance, and accessible client serving remain Target.
  • Fresh validation on the new head: cargo fmt --all -- --check, git diff --check, documentation contracts (10 + 3), locale report tests (6), export tests (2), required-reference tests (1), and cargo clippy --all-targets -- -D warnings passed.

This is validation evidence, not approval.

@seonghobae

Copy link
Copy Markdown
Contributor Author

@opencode-agent Please review only exact head e08dde2c3570da7cae8b83b20ea8bca5a205d838 against protected main 5544149c. The current head includes the localized metadata labels and traceability mapping. Use only same-head checks and code; do not transfer historical review conclusions.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

seonghobae and others added 2 commits August 20, 2026 20:14
Preserve the reviewed exact ko-KR/en-US participant report surface while incorporating protected main 4499d9c request-bound scoring-engine changes. The only overlapping path is src/lib.rs; this reconciliation retains localized_result_report and adds scoring_engine plus the exact protected-main source/tests without force-pushing or weakening gates.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head f9894343ec00736071de4f2cae9e5e8ae0f2bedc.

  • Head SHA: f9894343ec00736071de4f2cae9e5e8ae0f2bedc

  • Workflow run: 32700244834

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Docs: TRACEABILITY.md"]
  S1 --> I1["operator or user guidance"]
  I1 --> R1["Review risk: Docs: TRACEABILITY.md"]
  R1 --> V1["docs review"]
  Evidence --> S2["Changed file (2 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (2 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Test: result_report_locale.rs"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: result_report_locale.rs"]
  R3 --> V3["targeted test run"]
Loading

@opencode-agent

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: f9894343ec00736071de4f2cae9e5e8ae0f2bedc
  • Workflow run: 32700244834
  • Workflow attempt: 1
  • Gate result: REQUEST_CHANGES (approval step)

Pull request overview

OpenCode cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head f9894343ec00736071de4f2cae9e5e8ae0f2bedc.

  • Head SHA: f9894343ec00736071de4f2cae9e5e8ae0f2bedc

  • Workflow run: 32700244834

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Docs: TRACEABILITY.md"]
  S1 --> I1["operator or user guidance"]
  I1 --> R1["Review risk: Docs: TRACEABILITY.md"]
  R1 --> V1["docs review"]
  Evidence --> S2["Changed file (2 files)"]
  S2 --> I2["repository behavior"]
  I2 --> R2["Review risk: Changed file (2 files)"]
  R2 --> V2["required checks"]
  Evidence --> S3["Test: result_report_locale.rs"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: result_report_locale.rs"]
  R3 --> V3["targeted test run"]
Loading

@seonghobae
seonghobae merged commit a6eecc5 into main Aug 25, 2026
34 checks passed
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