-
Notifications
You must be signed in to change notification settings - Fork 0
docs: consolidate FIPC product, research, and licensing guidance #261
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
seonghobae
wants to merge
21
commits into
master
Choose a base branch
from
cursor/fipc-citation-adrs-6383
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from all commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
e397aa2
docs: add FIPC ADRs and correct bibliographic citations
cursoragent 7451510
docs: point agent guides at ADRs and verified citations
cursoragent 72a79dd
Merge remote-tracking branch 'origin/master' into fix261
cursoragent 2ea4d91
ci: retrigger Strix and Noema after GitHub API flake
cursoragent 7b711e7
ci: retrigger Noema now that GitHub.com is operational
cursoragent 484f663
docs: restore Ground Rules list indentation
seonghobae 53b7d39
docs: add organization DeepWiki badge
seonghobae c09c220
docs(pages): add public aFIPC landing source
seonghobae c7f31fe
docs: consolidate product landing and license boundary
seonghobae 06154de
docs: align public guide with canonical README
seonghobae dabe29d
docs: describe mirt estimation paths precisely
seonghobae 217027a
docs: align agent guidance with estimator fallbacks
seonghobae 1db6d73
docs: restore agent guidance and fix estimation wording
seonghobae 2c57f05
docs: align architecture with actual estimator paths
seonghobae f695215
docs: bind FIPC note to actual mirt method paths
seonghobae 9cd02c6
docs: make aFIPC onboarding non-interactive and license-honest
seonghobae 81f8a81
docs: keep aFIPC source checks license-honest
seonghobae 80246f5
docs: separate aFIPC retry and surveyFA recovery gates
seonghobae 5c7fb53
docs: broaden aFIPC estimation ADR title
seonghobae 47a37f7
docs: clarify aFIPC raw-form recovery gates
seonghobae afc5a63
docs: establish code-current product gap baseline
seonghobae File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,55 +1,181 @@ | ||
| # aFIPC | ||
|
|
||
| Automated Fixed Item Parameter Calibration (FIPC) for IRT test linking. | ||
|
|
||
| This package contains the original graduate-school implementation used to | ||
| produce accurate fixed-item linking results. The current maintenance goal is to | ||
| preserve numerical behavior while modernizing repository operations | ||
| (documentation, CI, and dependency hygiene). | ||
|
|
||
| ## What this repository contains | ||
|
|
||
| - `R/aFIPC.R`: core `autoFIPC()` implementation | ||
| - `DESCRIPTION`, `NAMESPACE`, `man/`: package metadata and generated docs | ||
| - `packrat/`: historical dependency lock/vendor directory | ||
| - `.github/workflows/`: CI/security automation | ||
|
|
||
| ## Development status | ||
|
|
||
| - Algorithmic core is legacy but trusted for historical outputs. | ||
| - Operational guardrails are now maintained via GitHub Actions and Dependabot. | ||
| - Legacy `packrat` bootstrap is opt-in via `AFIPC_ENABLE_PACKRAT=true`. | ||
| - Broken host-specific `packrat/lib-R` symlinks were removed for portable builds. | ||
| - Architectural and agent operation docs are available in: | ||
| - `ARCHITECTURE.md` | ||
| - `AGENTS.md` | ||
| - `CLAUDE.md` | ||
| - `CONTRIBUTING.md` | ||
| - `.github/SECURITY.md` | ||
|
|
||
| ## Collaboration workflow | ||
|
|
||
| - Pull request template: `.github/PULL_REQUEST_TEMPLATE.md` | ||
| - Issue templates: `.github/ISSUE_TEMPLATE/` | ||
| - Code ownership: `.github/CODEOWNERS` | ||
| - Code quality checks: `.github/workflows/code-quality.yml` | ||
| - Security checks (private-safe): `.github/workflows/security-audit.yml` | ||
| - Secret-scan policy config: `.gitleaks.toml` | ||
| - CodeRabbit command reference: `docs/coderabbit/review-commands.md` | ||
| - Maintainer operations runbook: `docs/operations/maintenance-runbook.md` | ||
|
|
||
| ## Local package check | ||
| [](https://deepwiki.com/ContextualWisdomLab/aFIPC) | ||
|
|
||
| **Fixed-item IRT calibration for keeping test forms on a common score scale.** | ||
|
|
||
| aFIPC automates fixed-item parameter calibration (FIPC) for linking and equating | ||
| workflows. It helps psychometric teams carry anchor-item information from a | ||
| reference form into calibration of a new form, inspect item-parameter drift, and | ||
| obtain linked model/score artifacts without turning the repository into a | ||
| general assessment platform. | ||
|
|
||
| ## When aFIPC fits | ||
|
|
||
| Use aFIPC when you have a reference form, a newly administered form, and an | ||
| explicitly reviewed set of common items whose parameters should anchor the | ||
| linking design. The package owns the in-process calibration/linking workflow. | ||
| Test delivery, source-system data collection, operational score policy, and | ||
| downstream decision authority remain outside this repository. | ||
|
|
||
| The numerical implementation is compatibility-sensitive. Changes to calibration | ||
| behavior should be backed by regression evidence rather than incidental | ||
| refactoring. | ||
|
|
||
| ## Core workflow | ||
|
|
||
| 1. Prepare old/reference-form and new-form response data, or compatible fitted | ||
| model objects. | ||
| 2. Identify the corresponding common-item names on both forms. | ||
| 3. Run `autoFIPC()` with the intended item model and explicit common-item | ||
| confirmation. | ||
| 4. Review convergence, item-parameter-drift evidence, and linked outputs before | ||
| downstream use. | ||
|
|
||
| A non-interactive raw-data API shape is: | ||
|
|
||
| ```r | ||
| result <- autoFIPC( | ||
| newformXData = new_form, | ||
| oldformYData = reference_form, | ||
| newformCommonItemNames = common_new, | ||
| oldformCommonItemNames = common_old, | ||
| newformBILOGprior = FALSE, | ||
| oldformBILOGprior = FALSE, | ||
| confirmCommonItems = TRUE | ||
| ) | ||
|
seonghobae marked this conversation as resolved.
|
||
| ``` | ||
|
|
||
| The explicit BILOG-prior choices matter for the default 3PL path: leaving either | ||
| choice as `NULL` can require interactive input when raw response data are fitted. | ||
|
seonghobae marked this conversation as resolved.
|
||
| If callers use already fitted compatible model objects, review the complete | ||
| argument contract before omitting those raw-data choices. | ||
|
|
||
| `autoFIPC()` returns the base-form, new-form, and linked-model artifacts as an R | ||
| list. See `man/autoFIPC.Rd` for the complete argument contract. | ||
|
|
||
| ## Methodological boundary | ||
|
|
||
| `autoFIPC()` implements FIPC: common items keep reference-form parameter values | ||
| while the new form is calibrated onto that scale (Kim, 2006). This differs from | ||
| separate calibration followed by Stocking-Lord or Haebara characteristic-curve | ||
| transformations, and from concurrent calibration. aFIPC does not estimate | ||
| Stocking-Lord or Haebara linking constants. | ||
|
|
||
| The current estimation path delegates IRT estimation to `mirt` rather than | ||
| owning an independent numerical IRT engine. The accepted method decisions are | ||
| recorded in [the ADR index](docs/adr/README.md), and the verified APA records and | ||
| DOIs are maintained in [the research index](docs/papers/README.md). | ||
|
|
||
| Key sources include: | ||
|
|
||
| - Kim, S. (2006). A comparative study of IRT fixed parameter calibration | ||
| methods. *Journal of Educational Measurement, 43*(4), 355-381. | ||
| <https://doi.org/10.1111/j.1745-3984.2006.00021.x> | ||
| - Chalmers, R. P. (2012). mirt: A multidimensional item response theory package | ||
| for the R environment. *Journal of Statistical Software, 48*(6), 1-29. | ||
| <https://doi.org/10.18637/jss.v048.i06> | ||
| - Bock, R. D., & Aitkin, M. (1981). Marginal maximum likelihood estimation of | ||
| item parameters: Application of an EM algorithm. *Psychometrika, 46*(4), | ||
| 443-459. <https://doi.org/10.1007/BF02293801> | ||
|
|
||
| Linking quality still depends on anchor quality, model fit, calibration | ||
| assumptions, and the comparability of the forms being linked. Repository tests | ||
| and cited methodology are implementation evidence; they do not make arbitrary | ||
| forms automatically comparable. | ||
|
|
||
| ## Evaluate the current source | ||
|
|
||
| This repository currently provides source rather than an immutable GitHub | ||
| release. It also has a known GPL-family runtime blocker: `DESCRIPTION` imports | ||
| `mirt`, and `rcmdcheck` does **not** install that dependency for the package under | ||
| check. Therefore this README does not present a fresh `install.packages("mirt")` | ||
| bootstrap as a commercially acceptable onboarding path. | ||
|
|
||
| If you are maintaining the existing legacy development environment and its | ||
| current dependency graph has already been provisioned for license-diligence or | ||
| compatibility work, the repository check itself is: | ||
|
|
||
| ```bash | ||
| R_PROFILE_USER=/dev/null Rscript -e \ | ||
| 'install.packages(c("rcmdcheck"), repos="https://cloud.r-project.org")' | ||
| 'install.packages("rcmdcheck", repos="https://cloud.r-project.org")' | ||
|
seonghobae marked this conversation as resolved.
|
||
|
|
||
| R_PROFILE_USER=/dev/null Rscript -e \ | ||
| 'rcmdcheck::rcmdcheck(args = c("--no-manual", "--as-cran"), error_on = "warning")' | ||
| ``` | ||
|
|
||
| ## Maintenance policy | ||
| This is **not** a clean commercial-install recipe: `rcmdcheck` expects the | ||
| package's declared runtime dependencies, including the currently disallowed | ||
| `mirt`, to already exist. A commercially compatible clean setup is blocked until | ||
| issue #320 replaces/removes that runtime path and the final package graph is | ||
| revalidated. | ||
|
|
||
| The historical `packrat/` tree is retained for compatibility archaeology. Its | ||
| bootstrap is opt-in via `AFIPC_ENABLE_PACKRAT=true` and should not be treated as | ||
| the preferred dependency workflow. | ||
|
|
||
| ## Architecture and responsibility | ||
|
|
||
| The runtime is single-process and fileless: callers provide in-memory R | ||
| data/model objects and receive R model artifacts. `R/aFIPC.R` owns the main | ||
| fixed-item linking workflow, while `R/surveyFA.R` contains supporting analytical | ||
| routines. Package metadata and generated reference docs live in `DESCRIPTION`, | ||
| `NAMESPACE`, and `man/`. | ||
|
|
||
| The current calibration engine calls the external `mirt` package for IRT | ||
| estimation and parameter/model operations. That dependency is a material runtime | ||
| boundary, not an implementation detail that the repository license can override. | ||
|
|
||
| See [ARCHITECTURE.md](ARCHITECTURE.md) for the component map and maintenance | ||
| boundaries. | ||
|
|
||
| ## Quality and change control | ||
|
|
||
| Repository automation covers R package checks, code/document quality, | ||
| workflow/security auditing, dependency review where the platform supports it, | ||
| and supply-chain posture. Before modifying estimation/linking logic, read | ||
| [CONTRIBUTING.md](CONTRIBUTING.md) and preserve the documented regression and | ||
| review discipline. | ||
|
|
||
| Current source metadata is `0.1.0`; the repository does not currently publish | ||
| GitHub Releases. A source version or passing development check is therefore not | ||
| presented as an immutable supported release. | ||
|
|
||
| ## Commercial licensing status | ||
|
|
||
| **Not currently cleared for ContextualWisdomLab commercial | ||
| intake/distribution.** | ||
|
|
||
| `DESCRIPTION` presently declares `GPL-3 | file LICENSE`, while the runtime | ||
| directly imports `mirt`, whose current CRAN distribution is GPL-family licensed. | ||
| ContextualWisdomLab's commercial intake policy does not accept GPL/LGPL/AGPL | ||
| family software as the normal dependency baseline. The repository-authored | ||
| source grant and third-party runtime obligation are separate questions; neither | ||
| can be made policy-compliant by README wording alone. | ||
|
|
||
| Issue #320 owns the required source-provenance/relicensing review and replacement | ||
| of the GPL-family runtime path while preserving the actual fixed-item | ||
| calibration/linking estimand and regression behavior. Until that work is | ||
| integrated and verified, do not present this repository as Apache-2.0/MIT | ||
| cleared or commercially policy-compliant. | ||
|
|
||
| ## Documentation | ||
|
|
||
| - [Public documentation home](docs/index.md) - product scope, workflow, | ||
| architecture, and change-control entry point. | ||
| - [FIPC linking contract](docs/fixed-parameter-item-calibration.md) - what is | ||
| fixed, what is estimated, and how the linked scale is defined. | ||
| - [Architecture decisions](docs/adr/README.md) - FIPC and estimation decisions. | ||
| - [Research sources](docs/papers/README.md) - verified methodological references | ||
| and DOIs. | ||
| - [Architecture](ARCHITECTURE.md) - component and responsibility boundaries. | ||
| - [Generated R reference](man/autoFIPC.Rd) - `autoFIPC()` API contract. | ||
| - [Contributing](CONTRIBUTING.md) - contributor workflow and verification | ||
| expectations. | ||
| - [.github/SECURITY.md](.github/SECURITY.md) - vulnerability-reporting guidance. | ||
| - [Ask DeepWiki](https://deepwiki.com/ContextualWisdomLab/aFIPC) - | ||
| repository-aware navigation. | ||
|
|
||
| - Prefer preserving equation/calibration behavior over refactoring. | ||
| - Avoid silent behavioral changes in `autoFIPC()` without explicit regression | ||
| evidence. | ||
| - Keep CI green on supported runners and keep Actions pinned/updated. | ||
| For scientific or operational changes, open an issue or pull request with the | ||
| exact design assumptions, affected calibration behavior, and reproducible | ||
| verification evidence. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
두 공개 문서에서 BILOG-prior 인자의 추정 경로를 동일하게 설명하세요.
FALSE는 raw 3PL 적합을 empirical-histogram 경로로 시작하게 하고,TRUE는 BILOG-MG prior를 사용하는 MMLE/EM 경로를 선택합니다. 이 선택과 후속 fallback 순서를 문서화해야 결과를 재현할 수 있습니다. (raw.githubusercontent.com)README.md#L43-L44:TRUE와FALSE가 선택하는 추정 경로를 예시 아래에 설명하세요.README.md#L49-L52:NULL,FALSE,TRUE의 상호작용과 fallback 순서를 명시하세요.docs/index.md#L26-L27: 동일한 estimator semantics를 추가하거나 관련 ADR로 연결하세요.📍 Affects 2 files
README.md#L43-L44(this comment)README.md#L49-L52docs/index.md#L26-L27🤖 Prompt for AI Agents