Skip to content

State the handoff reader contract nomologR asked for, and record the joint 1.0 checklist - #79

Merged
JUhalt merged 1 commit into
masterfrom
docs/handoff-reader-contract
Sep 27, 2026
Merged

JUhalt merged 1 commit into
masterfrom
docs/handoff-reader-contract

Conversation

@JUhalt

@JUhalt JUhalt commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

nomologR asked for three handoff clarifications before schema 1 becomes a 1.0 promise, and proposed a release-candidate checklist for the joint 1.0. The maintainer approved all of it on 2026-09-27. The schema and every handoff are unchanged, and no computed value changes.

1. "Reading the decisions", a new section in ?content_handoff

A reader takes each item's decision from carried and status, and never re-derives it by comparing value with criterion or by branching on provenance$package_version. status is one of the four values keep accepts; recommendation words the same decision for a person and, like rule, is prose.

The example is the nine-expert correction in 0.8.0. An item that 7 of 9 experts rated relevant has an I-CVI of .778 in both releases:

  • 0.7.0 compared it with a rounded .78 and held it back;
  • 0.8.0 applies Lynn's (1986) 7 of 9, stores 7/9 as the criterion, and carries it.

In the 0.8.0 handoff the value equals the criterion, so a recomputed value >= criterion would hang on floating-point rounding, where the package compares counts of experts. The section also restates that keying of NA means unknown, never forward-worded. The page now lists Lynn (1986) under References.

2. An item sits in at most one scale

The scales entry now says so: an item belongs to at most one scale, the one its item_evidence$scale names, because every workflow that maps items to constructs requires exactly one target per item. It also notes that a Delphi handoff has scales = NULL.

New tests:

  • for the sort, rating, and congruence workflows, no item appears in two scales, and each carried item sits in the scale its evidence row names;
  • each of the three workflows refuses an item given two targets;
  • every workflow's status (including Delphi and essentiality) is one of the values keep accepts, and carried follows status and keep exactly.

nomologR's reader keeps its own check for an item in two scales, since a hand-built or edited object can still contain one.

3. A "checked, none reversed" fixture (delivered outside the repo)

nomologR's reader treats keying = 1 throughout ("someone checked, none reversed") differently from NA ("nobody said"), and tested that case by editing a 0.7.0 object. The fixture generator gained a fit with reverse_keyed = character(0) and response_scale = c(1, 5), run from the v0.9.0 tag. The new file equals the delivered walkthrough-sort file in every field except keying and created. The fifteen files nomologR already had are byte-identical. nomologR added it in JUhalt/nomologR#102.

4. The joint 1.0 checklist, in the ROADMAP

The v1.0.0 section records the release-candidate checklist, in addition to nomologR#53's criteria:

  • a final fixture set from each release candidate, with md5 sums, that nomologR's tests pass before either package tags;
  • the compatibility table in both READMEs (contentvalidR 1.x writes schema 1, nomologR 1.x reads it), added at the release candidate so neither README describes a 1.x before one exists;
  • one handoff example in both READMEs, regenerated from contentvalidR's release candidate;
  • the joint walkthrough in one package, with the other linking to it. Not yet decided. Recommended, and acceptable to nomologR: vignette("one-item-set-both-stages") here, linking to nomologR's guided-workflow article. The maintainer decides;
  • release notes that link each other.

The CRAN criterion now notes that nomologR 0.3.0 was submitted on 2026-09-26.

Verification

  • All 2,975 tests pass (2,950 before, plus the new expectations). Spelling is clean.
  • The rendered help text was read for the new section.
  • tools/release-gate.R on this PR's head (33b106f), run in a detached worktree: build, smoke, and check all pass. R CMD check: 0 errors, 0 warnings, and only the two expected notes (New submission; math rendering skipped without V8).

🤖 Generated with Claude Code

…joint 1.0 checklist

?content_handoff gains "Reading the decisions": a reader takes each item's
decision from `carried` and `status`, never re-deriving it by comparing
`value` with `criterion` or by branching on the producer version. The
example is 0.8.0's nine-expert correction, where an item's I-CVI stayed at
.778 while its decision changed, and where value and criterion are equal,
so a recomputed comparison would hang on floating-point rounding. The
section restates that keying NA means unknown, never forward-worded, and
the page now lists Lynn (1986) under References.

The `scales` field now says an item sits in at most one scale, the one its
item_evidence$scale names. A new test holds the sort, rating, and
congruence workflows to that, and checks that each refuses an item with
two targets. Another checks that every workflow's status is one of the
values `keep` accepts, and that `carried` follows status and keep exactly.

ROADMAP.md records the release-candidate checklist nomologR proposed and
the maintainer approved on 2026-09-27, and the three clarifications, with
the "checked, none reversed" fixture delivered from v0.9.0. The schema and
every handoff are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JUhalt
JUhalt merged commit 5d52f15 into master Sep 27, 2026
8 checks passed
JUhalt added a commit that referenced this pull request Sep 28, 2026
Release contentvalidR 0.10.0

Stamps the version, release notes, citation metadata, README, and roadmap
for the tenth public release, the last planned before the joint 1.0
release candidate on 2026-10-17. It adds figures for papers, posters, and
teaching: content_evidence() with its item flow diagram and item evidence
profile, the rating-distribution view, and the apa switch (#82). It also
states the handoff contract nomologR reads (#79), makes this package's
walkthrough the joint one (#80, #81), separates the Delphi printout's
caveats from its teaching (#78), and records the release-candidate
timeline (#83).

No computed value changes: 25 analyses across every workflow return the
same values as v0.9.0. No breaking changes: the plot methods gain
arguments after their existing ones. agreement_summary() remains
deprecated and is removed in 1.0.0.

contentvalidR 0.4.0 has been on CRAN since 2026-09-28. CRAN asks for
updates no more often than every one to two months, so 0.10.0 is released
on GitHub and R-universe only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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