fix(aefa): 현행 mirt 모델 선택 수식과 종료성 복원#67
Conversation
There was a problem hiding this comment.
Pull request overview
This PR restores correctness and termination behavior in the AEFA workflow by tightening the contract around model-selection criteria (especially AICc vs DIC), fixing candidate/index alignment during skipped fits, and preventing non-terminating item-exclusion loops. It also hardens parallel worker selection on macOS and aligns Shiny/docs with the updated defaults and formula provenance.
Changes:
- Fix test bootstrap defaults merging so positional
datais preserved while named options override defaults. - Make AIC the default criterion; compute AICc via Hurvich–Tsai; accept DIC only when provided (never substitute AIC for DIC), with clearer failure modes.
- Restore termination guarantees (bounded retries, three-item floor, no-progress detection) and keep candidate scores aligned after skipped fits (e.g., Heywood cases).
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/testthat/test-test-bootstrap-contract.R | Adds regression test ensuring positional data survives defaults merging. |
| tests/testthat/test-shiny-app.R | Updates UI criteria expectations to match the new Shiny choices (no DIC). |
| tests/testthat/test-model-selection-criteria.R | New tests for AICc formula, criterion preservation, DIC/CAIC errors, index selection, exclusion validation, and worker selection. |
| tests/testthat/test-aefa-greedy-algorithm.R | Updates assertions/comments to match criteria available from mirt fits (e.g., SABIC vs DIC). |
| tests/testthat/test-aefa-advanced-parameters.R | Replaces “DIC criteria respected” test with “DIC not fabricated” contract check. |
| tests/testthat/helper-test-data.R | Fixes .merge_test_defaults() to keep positional args while merging named defaults. |
| README.Rmd | Updates overview text and adds citations clarifying AICc/DIC provenance and boundaries. |
| README.md | Regenerated README reflecting updated model-selection wording and citations. |
| R/kaefa.R | Implements worker-count selection helper, robust criterion extraction (AIC/AICc/BIC/saBIC/DIC), preserves candidate indices, bounds retries, and ensures item-exclusion termination. |
| R/kaefa-package.r | Updates package-level narrative to reflect likelihood-based defaults and DIC boundary. |
| man/kaefa.Rd | Updates generated/manual Rd text consistent with new criterion policy. |
| man/aefa.Rd | Updates defaults and criterion documentation to match code behavior. |
| inst/shiny-app/README.md | Aligns Shiny documentation with AIC default and DIC availability constraints. |
| inst/shiny-app/app.R | Removes DIC from UI criteria choices and updates default to AIC. |
| docs/papers/README.md | Adds AICc and DIC boundary notes with canonical equations and rationale. |
Files not reviewed (2)
- man/aefa.Rd: Generated file
- man/kaefa.Rd: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
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
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore 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 head30a7e0a4af7c3c6d9b62172bd4462137e24e166d. -
Head SHA:
30a7e0a4af7c3c6d9b62172bd4462137e24e166d -
Workflow run: 29233912659
-
Workflow attempt: 1
Coverage evidence
Coverage Evidence
- Head SHA:
30a7e0a4af7c3c6d9b62172bd4462137e24e166d - Required test evidence: supported repository test suites must pass.
- Required docstring evidence: repository-owned docstring gates must pass when configured; otherwise docstring coverage is advisory.
Implementation completeness scan
$ python3 /home/runner/work/kaefa/kaefa/scripts/ci/implementation_completeness_scan.py --repo-root . --changed-files /tmp/tmp.ejnStWrVOg
# Implementation Completeness Scan
- Checked runtime source files: 0
- Declaration handling: typing.Protocol, abc.ABC, @abstractmethod, and @overload placeholders are treated as contracts, not executable missing implementations.
- Result: PASS
- Reason: no executable placeholder implementations were found in changed runtime source files.
- Result: PASS
R runtime install (r-base and package headers)
$ bash -c sudo\ apt-get\ update\ \&\&\ sudo\ apt-get\ install\ -y\ r-base\ libcurl4-openssl-dev\ libssl-dev\ libxml2-dev
Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [144 B]
Hit:2 http://azure.archive.ubuntu.com/ubuntu noble InRelease
Get:6 https://packages.microsoft.com/repos/azure-cli noble InRelease [3564 B]
Get:7 https://packages.microsoft.com/ubuntu/24.04/prod noble InRelease [3600 B]
Get:3 http://azure.archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:8 https://dl.google.com/linux/chrome-stable/deb stable InRelease [1825 B]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Get:9 https://packages.microsoft.com/repos/azure-cli noble/main amd64 Packages [2314 B]
Get:10 https://packages.microsoft.com/ubuntu/24.04/prod noble/main arm64 Packages [181 kB]
Get:11 https://packages.microsoft.com/ubuntu/24.04/prod noble/main armhf Packages [11.6 kB]
Get:12 https://packages.microsoft.com/ubuntu/24.04/prod noble/main amd64 Packages [214 kB]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [1092 kB]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble-updates/main Translation-en [269 kB]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 Components [181 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1660 kB]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe Translation-en [327 kB]
Get:18 http://azure.archive.ubuntu.com/ubuntu noble-updates/universe amd64 Components [388 kB]
Get:19 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted amd64 Packages [1225 kB]
Get:20 http://azure.archive.ubuntu.com/ubuntu noble-updates/restricted Translation-en [276 kB]
Get:21 http://azure.archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Components [940 B]
Get:22 http://azure.archive.ubuntu.com/ubuntu noble-backports/main amd64 Components [5744 B]
Get:23 http://azure.archive.ubuntu.com/ubuntu noble-backports/universe amd64 Components [10.5 kB]
Get:24 https://dl.google.com/linux/chrome-stable/deb stable/main amd64 Packages [1216 B]
Get:25 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Packages [827 kB]
Get:26 http://azure.archive.ubuntu.com/ubuntu noble-security/main Translation-en [187 kB]
Get:27 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 Components [44.8 kB]
Get:28 http://azure.archive.ubuntu.com/ubuntu noble-security/main amd64 c-n-f Metadata [11.9 kB]
Get:29 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Packages [1174 kB]
Get:30 http://azure.archive.ubuntu.com/ubuntu noble-security/universe Translation-en [231 kB]
Get:31 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 Components [76.3 kB]
Get:32 http://azure.archive.ubuntu.com/ubuntu noble-security/universe amd64 c-n-f Metadata [24.2 kB]
Fetched 8808 kB in 1s (7674 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
libssl-dev is already the newest version (3.0.13-0ubuntu3.11).
libxml2-dev is already the newest version (2.9.14+dfsg-1.3ubuntu3.8).
libxml2-dev set to manually installed.
The following additional packages will be installed:
build-essential bzip2-doc curl libblas-dev libblas3 libbz2-dev
libcurl3t64-gnutls libcurl4t64 libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev
liblapack-dev liblapack3 liblzma-dev libpaper-utils libpaper1 libpng-dev
libpng-tools libreadline-dev r-base-core r-base-dev r-base-html r-cran-boot
r-cran-class r-cran-cluster r-cran-codetools r-cran-foreign
r-cran-kernsmooth r-cran-lattice r-cran-mass r-cran-matrix r-cran-mgcv
r-cran-nlme r-cran-nnet r-cran-rpart r-cran-spatial r-cran-survival
r-doc-html r-recommended
Suggested packages:
liblapack-doc libcurl4-doc libidn-dev libkrb5-dev libldap2-dev librtmp-dev
libssh2-1-dev liblzma-doc readline-doc elpa-ess r-doc-info | r-doc-pdf
r-mathlib texlive-base texlive-latex-base texlive-plain-generic
texlive-fonts-recommended texlive-fonts-extra texlive-extra-utils
texlive-latex-recommended texlive-latex-extra
The following NEW packages will be installed:
build-essential bzip2-doc libblas-dev libblas3 libbz2-dev
libcurl4-openssl-dev libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev
liblapack-dev liblapack3 liblzma-dev libpaper-utils libpaper1 libpng-dev
libpng-tools libreadline-dev r-base r-base-core r-base-dev r-base-html
r-cran-boot r-cran-class r-cran-cluster r-cran-codetools r-cran-foreign
r-cran-kernsmooth r-cran-lattice r-cran-mass r-cran-matrix r-cran-mgcv
r-cran-nlme r-cran-nnet r-cran-rpart r-cran-spatial r-cran-survival
r-doc-html r-recommended
The following packages will be upgraded:
curl libcurl3t64-gnutls libcurl4t64
3 upgraded, 38 newly installed, 0 to remove and 35 not upgraded.
Need to get 59.3 MB of archives.
After this operation, 118 MB of additional disk space will be used.
Get:1 file:/etc/apt/apt-mirrors.txt Mirrorlist [144 B]
Get:2 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 build-essential amd64 12.10ubuntu1 [4928 B]
Get:3 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 bzip2-doc all 1.0.8-5.1build0.1 [499 kB]
Get:4 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 curl amd64 8.5.0-2ubuntu10.11 [226 kB]
Get:5 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcurl4t64 amd64 8.5.0-2ubuntu10.11 [342 kB]
Get:6 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libblas3 amd64 3.12.0-3build1.1 [238 kB]
Get:7 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libblas-dev amd64 3.12.0-3build1.1 [170 kB]
Get:8 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libbz2-dev amd64 1.0.8-5.1build0.1 [33.6 kB]
Get:9 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcurl3t64-gnutls amd64 8.5.0-2ubuntu10.11 [334 kB]
Get:10 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcurl4-openssl-dev amd64 8.5.0-2ubuntu10.11 [446 kB]
Get:11 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libjpeg-turbo8-dev amd64 2.1.5-2ubuntu2 [295 kB]
Get:12 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libjpeg8-dev amd64 8c-2ubuntu11 [1484 B]
Get:13 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libjpeg-dev amd64 8c-2ubuntu11 [1482 B]
Get:14 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liblapack3 amd64 3.12.0-3build1.1 [2646 kB]
Get:15 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liblapack-dev amd64 3.12.0-3build1.1 [5196 kB]
Get:16 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libpaper1 amd64 1.1.29build1 [13.4 kB]
Get:17 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libpaper-utils amd64 1.1.29build1 [8650 B]
Get:18 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpng-dev amd64 1.6.43-5ubuntu0.6 [265 kB]
Get:19 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpng-tools amd64 1.6.43-5ubuntu0.6 [28.5 kB]
Get:20 http://azure.archive.ubuntu.com/ubuntu noble/main amd64 libreadline-dev amd64 8.2-4build1 [167 kB]
Get:21 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-base-core amd64 4.3.3-2build2 [27.1 MB]
Get:22 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-boot all 1.3-30-1 [619 kB]
Get:23 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-cluster amd64 2.1.6-1build1 [553 kB]
Get:24 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-foreign amd64 0.8.86-1build1 [242 kB]
Get:25 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-mass amd64 7.3-60.0.1-1 [1119 kB]
Get:26 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-kernsmooth amd64 2.23-22-1build1 [91.8 kB]
Get:27 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-lattice amd64 0.22-5-1build1 [1341 kB]
Get:28 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-nlme amd64 3.1.164-1build1 [2261 kB]
Get:29 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-matrix amd64 1.6-5-1 [3830 kB]
Get:30 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-mgcv amd64 1.9-1-1 [3252 kB]
Get:31 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-survival amd64 3.5-8-1 [6120 kB]
Get:32 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-rpart amd64 4.1.23-1build1 [661 kB]
Get:33 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-class amd64 7.3-22-2build1 [88.2 kB]
Get:34 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-nnet amd64 7.3-19-2build1 [112 kB]
Get:35 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-spatial amd64 7.3-17-1build1 [132 kB]
Get:36 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-cran-codetools all 0.2-19-1 [90.5 kB]
Get:37 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-recommended all 4.3.3-2build2 [2636 B]
Get:38 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-base all 4.3.3-2build2 [9304 B]
Get:39 http://azure.archive.ubuntu.com/ubuntu noble-updates/main amd64 liblzma-dev amd64 5.6.1+really5.4.5-1ubuntu0.3 [176 kB]
Get:40 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-base-dev all 4.3.3-2build2 [4334 B]
Get:41 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-doc-html all 4.3.3-2build2 [587 kB]
Get:42 http://azure.archive.ubuntu.com/ubuntu noble/universe amd64 r-base-html all 4.3.3-2build2 [58.1 kB]
Preconfiguring packages ...
Fetched 59.3 MB in 2s (26.2 MB/s)
Selecting previously unselected package build-essential.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 202701 files and directories currently installed.)
Preparing to unpack .../00-build-essential_12.10ubuntu1_amd64.deb ...
Unpacking build-essential (12.10ubuntu1) ...
Selecting previously unselected package bzip2-doc.
Preparing to unpack .../01-bzip2-doc_1.0.8-5.1build0.1_all.deb ...
Unpacking bzip2-doc (1.0.8-5.1build0.1) ...
Preparing to unpack .../02-curl_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking curl (8.5.0-2ubuntu10.11) over (8.5.0-2ubuntu10.10) ...
Preparing to unpack .../03-libcurl4t64_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking libcurl4t64:amd64 (8.5.0-2ubuntu10.11) over (8.5.0-2ubuntu10.10) ...
Selecting previously unselected package libblas3:amd64.
Preparing to unpack .../04-libblas3_3.12.0-3build1.1_amd64.deb ...
Unpacking libblas3:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package libblas-dev:amd64.
Preparing to unpack .../05-libblas-dev_3.12.0-3build1.1_amd64.deb ...
Unpacking libblas-dev:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package libbz2-dev:amd64.
Preparing to unpack .../06-libbz2-dev_1.0.8-5.1build0.1_amd64.deb ...
Unpacking libbz2-dev:amd64 (1.0.8-5.1build0.1) ...
Preparing to unpack .../07-libcurl3t64-gnutls_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking libcurl3t64-gnutls:amd64 (8.5.0-2ubuntu10.11) over (8.5.0-2ubuntu10.10) ...
Selecting previously unselected package libcurl4-openssl-dev:amd64.
Preparing to unpack .../08-libcurl4-openssl-dev_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking libcurl4-openssl-dev:amd64 (8.5.0-2ubuntu10.11) ...
Selecting previously unselected package libjpeg-turbo8-dev:amd64.
Preparing to unpack .../09-libjpeg-turbo8-dev_2.1.5-2ubuntu2_amd64.deb ...
... output truncated: showing first 140 and last 180 of 300 lines ...
Preparing to unpack .../02-curl_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking curl (8.5.0-2ubuntu10.11) over (8.5.0-2ubuntu10.10) ...
Preparing to unpack .../03-libcurl4t64_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking libcurl4t64:amd64 (8.5.0-2ubuntu10.11) over (8.5.0-2ubuntu10.10) ...
Selecting previously unselected package libblas3:amd64.
Preparing to unpack .../04-libblas3_3.12.0-3build1.1_amd64.deb ...
Unpacking libblas3:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package libblas-dev:amd64.
Preparing to unpack .../05-libblas-dev_3.12.0-3build1.1_amd64.deb ...
Unpacking libblas-dev:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package libbz2-dev:amd64.
Preparing to unpack .../06-libbz2-dev_1.0.8-5.1build0.1_amd64.deb ...
Unpacking libbz2-dev:amd64 (1.0.8-5.1build0.1) ...
Preparing to unpack .../07-libcurl3t64-gnutls_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking libcurl3t64-gnutls:amd64 (8.5.0-2ubuntu10.11) over (8.5.0-2ubuntu10.10) ...
Selecting previously unselected package libcurl4-openssl-dev:amd64.
Preparing to unpack .../08-libcurl4-openssl-dev_8.5.0-2ubuntu10.11_amd64.deb ...
Unpacking libcurl4-openssl-dev:amd64 (8.5.0-2ubuntu10.11) ...
Selecting previously unselected package libjpeg-turbo8-dev:amd64.
Preparing to unpack .../09-libjpeg-turbo8-dev_2.1.5-2ubuntu2_amd64.deb ...
Unpacking libjpeg-turbo8-dev:amd64 (2.1.5-2ubuntu2) ...
Selecting previously unselected package libjpeg8-dev:amd64.
Preparing to unpack .../10-libjpeg8-dev_8c-2ubuntu11_amd64.deb ...
Unpacking libjpeg8-dev:amd64 (8c-2ubuntu11) ...
Selecting previously unselected package libjpeg-dev:amd64.
Preparing to unpack .../11-libjpeg-dev_8c-2ubuntu11_amd64.deb ...
Unpacking libjpeg-dev:amd64 (8c-2ubuntu11) ...
Selecting previously unselected package liblapack3:amd64.
Preparing to unpack .../12-liblapack3_3.12.0-3build1.1_amd64.deb ...
Unpacking liblapack3:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package liblapack-dev:amd64.
Preparing to unpack .../13-liblapack-dev_3.12.0-3build1.1_amd64.deb ...
Unpacking liblapack-dev:amd64 (3.12.0-3build1.1) ...
Selecting previously unselected package libpaper1:amd64.
Preparing to unpack .../14-libpaper1_1.1.29build1_amd64.deb ...
Unpacking libpaper1:amd64 (1.1.29build1) ...
Selecting previously unselected package libpaper-utils.
Preparing to unpack .../15-libpaper-utils_1.1.29build1_amd64.deb ...
Unpacking libpaper-utils (1.1.29build1) ...
Selecting previously unselected package libpng-dev:amd64.
Preparing to unpack .../16-libpng-dev_1.6.43-5ubuntu0.6_amd64.deb ...
Unpacking libpng-dev:amd64 (1.6.43-5ubuntu0.6) ...
Selecting previously unselected package libpng-tools.
Preparing to unpack .../17-libpng-tools_1.6.43-5ubuntu0.6_amd64.deb ...
Unpacking libpng-tools (1.6.43-5ubuntu0.6) ...
Selecting previously unselected package libreadline-dev:amd64.
Preparing to unpack .../18-libreadline-dev_8.2-4build1_amd64.deb ...
Unpacking libreadline-dev:amd64 (8.2-4build1) ...
Selecting previously unselected package r-base-core.
Preparing to unpack .../19-r-base-core_4.3.3-2build2_amd64.deb ...
Unpacking r-base-core (4.3.3-2build2) ...
Selecting previously unselected package r-cran-boot.
Preparing to unpack .../20-r-cran-boot_1.3-30-1_all.deb ...
Unpacking r-cran-boot (1.3-30-1) ...
Selecting previously unselected package r-cran-cluster.
Preparing to unpack .../21-r-cran-cluster_2.1.6-1build1_amd64.deb ...
Unpacking r-cran-cluster (2.1.6-1build1) ...
Selecting previously unselected package r-cran-foreign.
Preparing to unpack .../22-r-cran-foreign_0.8.86-1build1_amd64.deb ...
Unpacking r-cran-foreign (0.8.86-1build1) ...
Selecting previously unselected package r-cran-mass.
Preparing to unpack .../23-r-cran-mass_7.3-60.0.1-1_amd64.deb ...
Unpacking r-cran-mass (7.3-60.0.1-1) ...
Selecting previously unselected package r-cran-kernsmooth.
Preparing to unpack .../24-r-cran-kernsmooth_2.23-22-1build1_amd64.deb ...
Unpacking r-cran-kernsmooth (2.23-22-1build1) ...
Selecting previously unselected package r-cran-lattice.
Preparing to unpack .../25-r-cran-lattice_0.22-5-1build1_amd64.deb ...
Unpacking r-cran-lattice (0.22-5-1build1) ...
Selecting previously unselected package r-cran-nlme.
Preparing to unpack .../26-r-cran-nlme_3.1.164-1build1_amd64.deb ...
Unpacking r-cran-nlme (3.1.164-1build1) ...
Selecting previously unselected package r-cran-matrix.
## Changed-File Evidence Map
```mermaid
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (8 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (8 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs: README.md"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: README.md"]
R2 --> V2["docs review"]
Evidence --> S3["Test (6 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (6 files)"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (9 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (9 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs: README.md"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs: README.md"]
R2 --> V2["docs review"]
Evidence --> S3["Test (6 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (6 files)"]
R3 --> V3["targeted test run"]
|
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head bounded evidence and found no blocking issues.
Findings
No blocking findings.
Summary
Approval sufficiency: bounded evidence supplied affirmative approval evidence for changed files, coverage/docstring posture, risk surfaces, and current-head verification; approval is not based merely on the absence of known blockers.
Verification posture: CodeGraph evidence was initialized and bounded current-head evidence reviewed for changed-file evidence including README.md, docs/papers/README.md, inst/shiny-app/README.md.
Linter/static: workflow/static review evidence is bounded by the current-head GitHub Checks gate and changed-file evidence.
TDD/regression: coverage execution evidence and focused changed hunks were reviewed from bounded-review-evidence.md.
Coverage: coverage execution evidence reports supported repository test suites passed.
Docstring coverage: coverage execution evidence reports configured repository docstring gates passed or docstring coverage was advisory.
DAG: CodeGraph/source-backed behavior map connects README.md to the affected review, runtime, or workflow path and required checks.
PoC/execution: coverage-evidence job executed on the current head and reported PASS.
DDD/domain: workflow and repository-governance invariants were reviewed against changed files in bounded evidence.
CDD/context: CodeGraph evidence, changed-file history, and focused hunks were reviewed from bounded-review-evidence.md.
Similar issues: changed-file history evidence was reviewed for comparable local precedents.
Claim/concept check: bounded evidence, repository source, current-head workflow evidence, and, where numeric, scientific, statistical, or literature-backed claims are affected, original-paper/formula evidence and parameter-recovery expectations were used for claims.
Standards search: standards and external-source checks are delegated to configured OpenCode web_search/Context7/DeepWiki sources when applicable; no evidence-backed standards blocker is present in bounded evidence.
Compatibility/convention: changed workflow/script conventions, object naming, and reserved-word safety for schema/API/config/code surfaces were checked in bounded evidence.
Breaking-change/backcompat: deployment evidence and changed-file history were checked for backward-compatibility risk.
Performance: changed surfaces were checked for performance risk in bounded evidence.
Developer experience: changed automation, review, test, setup, and maintenance surfaces were checked for helpful or obstructive DX impact in bounded evidence.
User experience: connected user, operator, API, CLI, documentation, review-comment, status-check, rendering, and workflow-reader behavior was checked for contradictions against code, docs, and tests in bounded evidence.
Visual/DOM: Playwright visual, DOM locator, ARIA snapshot, console, and responsive evidence were checked when a web UI surface was present; for non-web surfaces, API/CLI/log/docs/workflow interaction evidence was reviewed instead.
Accessibility/i18n: accessibility, localization, and human-readable text surfaces were checked where UI, CLI, API message, docs, logs, or review text changed.
Supply-chain/license: dependency, package, model, container, and external-tool changes were checked in bounded evidence.
Packaging: package, build, test, lint, and security contracts were checked in bounded evidence.
Security/privacy: workflow-token, review-gate, and repository-automation security/privacy boundaries were checked in bounded evidence.
Adversarial validation
{"status":"passed","probes":[{"path":"R/kaefa.R","line":1,"hypothesis":"Parallel processing logic may fail under low CPU conditions.","attack_or_counterexample":"Simulated low CPU idle percentage (<10%) and single-core system.","evidence":"Tested with `cpu_idle = 5` and `physical_cores = 1`; function correctly returned `1L`.","outcome":"falsified"},{"path":"R/kaefa.R","line":428,"hypothesis":"Model selection criteria (DIC) may be incorrectly inferred from AIC.","attack_or_counterexample":"Provided a fit object without DIC but with AIC.","evidence":"Function correctly raised an error, refusing to infer DIC from AIC.","outcome":"falsified"}],"residual_risk":"Low; edge cases are well-handled, and new tests cover critical paths."}- Result: APPROVE
- Reason: The PR addresses critical issues in model selection criteria and parallel processing, with thorough test coverage and no unresolved review threads.
- Head SHA:
10bece38849b4b80660fe104eb09e6e116650e04 - Workflow run: 29235240912
- Workflow attempt: 1
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head bounded evidence and found no blocking issues.
Findings
No blocking findings.
Summary
Approval sufficiency: bounded evidence supplied affirmative approval evidence for changed files, coverage/docstring posture, risk surfaces, and current-head verification; approval is not based merely on the absence of known blockers.
Verification posture: CodeGraph evidence was initialized and bounded current-head evidence reviewed for changed-file evidence including README.md, docs/papers/README.md, inst/shiny-app/README.md.
Linter/static: workflow/static review evidence is bounded by the current-head GitHub Checks gate and changed-file evidence.
TDD/regression: coverage execution evidence and focused changed hunks were reviewed from bounded-review-evidence.md.
Coverage: coverage execution evidence reports supported repository test suites passed.
Docstring coverage: coverage execution evidence reports configured repository docstring gates passed or docstring coverage was advisory.
DAG: CodeGraph/source-backed behavior map connects README.md to the affected review, runtime, or workflow path and required checks.
PoC/execution: coverage-evidence job executed on the current head and reported PASS.
DDD/domain: workflow and repository-governance invariants were reviewed against changed files in bounded evidence.
CDD/context: CodeGraph evidence, changed-file history, and focused hunks were reviewed from bounded-review-evidence.md.
Similar issues: changed-file history evidence was reviewed for comparable local precedents.
Claim/concept check: bounded evidence, repository source, current-head workflow evidence, and, where numeric, scientific, statistical, or literature-backed claims are affected, original-paper/formula evidence and parameter-recovery expectations were used for claims.
Standards search: standards and external-source checks are delegated to configured OpenCode web_search/Context7/DeepWiki sources when applicable; no evidence-backed standards blocker is present in bounded evidence.
Compatibility/convention: changed workflow/script conventions, object naming, and reserved-word safety for schema/API/config/code surfaces were checked in bounded evidence.
Breaking-change/backcompat: deployment evidence and changed-file history were checked for backward-compatibility risk.
Performance: changed surfaces were checked for performance risk in bounded evidence.
Developer experience: changed automation, review, test, setup, and maintenance surfaces were checked for helpful or obstructive DX impact in bounded evidence.
User experience: connected user, operator, API, CLI, documentation, review-comment, status-check, rendering, and workflow-reader behavior was checked for contradictions against code, docs, and tests in bounded evidence.
Visual/DOM: Playwright visual, DOM locator, ARIA snapshot, console, and responsive evidence were checked when a web UI surface was present; for non-web surfaces, API/CLI/log/docs/workflow interaction evidence was reviewed instead.
Accessibility/i18n: accessibility, localization, and human-readable text surfaces were checked where UI, CLI, API message, docs, logs, or review text changed.
Supply-chain/license: dependency, package, model, container, and external-tool changes were checked in bounded evidence.
Packaging: package, build, test, lint, and security contracts were checked in bounded evidence.
Security/privacy: workflow-token, review-gate, and repository-automation security/privacy boundaries were checked in bounded evidence.
Adversarial validation
{"status":"passed","probes":[{"path":"R/kaefa.R","line":1,"hypothesis":"Parallel processing logic may not handle edge cases correctly.","attack_or_counterexample":"Tested with invalid CPU idle and core count inputs.","evidence":"Verified `.aefaParallelProcessorCount` function handles edge cases (e.g., invalid inputs) correctly.","outcome":"falsified"},{"path":"R/kaefa.R","line":428,"hypothesis":"Model selection criteria extraction may fail for unsupported criteria.","attack_or_counterexample":"Tested with unsupported criteria (e.g., 'CAIC').","evidence":"Verified `.aefaFitCriterionValue` function rejects unsupported criteria with clear error messages.","outcome":"falsified"}],"residual_risk":"Low; edge cases and unsupported criteria are handled gracefully."}- Result: APPROVE
- Reason: No blocking issues found in the current-head evidence.
- Head SHA:
10bece38849b4b80660fe104eb09e6e116650e04 - Workflow run: 29234404954
- Workflow attempt: 2
요약
data위치 인자를modifyList()에서 유실하던 문제를 수정했습니다.mirtML/MAP 적합이 제공하지 않는 DIC를 무조건 읽거나 AIC와 동일하다고 간주하지 않도록 했습니다.AIC + 2k(k+1)/(n-k-1)으로 계산합니다.NCmisc::top()파싱이 실패해도 로컬 core 수로 안전하게 진행하고, 제거된future::multiprocess대신multisession을 사용합니다.원전 근거
mirt공식 문서의 ML/MAP 적합 및 제공 fit statistic 계약을 기준으로 DIC/AICc 경계를 정했습니다.검증
R CMD INSTALL --library=/tmp/kaefa-r-lib .: PASS834 passed, 159 skipped, 0 failed, 0 warningsAIC=978.2313,logLik=-480.1157Item2,Item5제외 후 3문항 하한에서 잔여 부적합 이유를 출력하고 반환git diff --check, CodeGraph sync: PASS재현된 기존 실패
기본값이 없는 인수 "data"가 누락되어 있습니다replacement has length zero(@Fit$DIC/@Fit$AICc부재)