Skip to content

Hold masked item-cue scoring until language provenance arrives - #22

Merged
aharlap merged 5 commits into
mainfrom
feat/item-cues-masked-probe
Oct 19, 2026
Merged

aharlap merged 5 commits into
mainfrom
feat/item-cues-masked-probe

Conversation

@aharlap

@aharlap aharlap commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Ship the masked-probe preparation contract on hold. Current inspect schema 1, projection 2 carries no language provenance, so no current course can run or score masked answers. Studio provenance and its Trace consumer are separate follow-ups.

  • Preparation, parsing and reporting always produce {applies: false, reason: "language-unconfirmed", detail} for masked. A supplied non-English lesson lang adds its veto to the detail. No flag, default English locale, text percentage or forged answer can authorize scoring.
  • Unavailable course and bank objects omit right, total, chanceExpected, p, pLow, tooFewItems and tooFewItemsLow. Thus masked.p, masked.pLow, itemCues.course.masked.p and itemCues.course.masked.pLow are absent. masked/items.json is empty. Injected scores are discarded; forged applies: true answers are rejected. HTML explains the hold.
  • choicesOnly remains the "does the stem matter?" diagnostic; coverTheOptions remains the separately judged answerability diagnostic. Neither supplies the unavailable masked gate. The skill, guide and ADR say to stop and ask, never calculate masked tails manually or use a hand-masked fallback.
  • The dormant text transform retains the bounded masking corrections: closed you-sound words, explicit spoken SMART/SCORM/HIPAA/LAN versus spelled MRI/HIV/X-ray, KPIs/APIs/menu plurals, whole virus/radius/analysis/glass and kept pronoun I. Literal review cases cover seeds 0, 17 and 25 independently of the key.

Contract: promptVersion: "item-cues/10-projection-2". Manifest and report masked have exactly applies, reason and detail. Combined answer masked also echoes bundleId and probe: "masked". The random bundle ID is independent of the seed. Only sibling <bundle>-review/operator.json holds seed and optionOrder; combined answers live beside it in <review>/answer.json. Solver bundles contain neither seed/order nor pointers to review evidence. Keyed inspection JSON stays in a private input folder outside the bundle's parent tree.

Validation: typecheck; 78 targeted item-cue, skill and schema-1 core tests; 20 mutation checks all fail with assertions when their fixes are disabled; diff and public-file checks pass. File and stdin preparation are covered. Full/browser checks run in CI. Main's merged skills audit is retained. No dependency added.

Deferred by the split ruling: Studio provenance consumption, a separate deny-only English evidence list, partial-bank accounting and approach acceptance tests 2, 3, 5 and 6. Rubato gate changes remain in its own PR. No findings rejected.

Review: r1 Sol 1/2/0, Opus 2/4/3; r2 Sol 1/3/0, Opus 1/2/2; r3 Sol 1/1/0, Opus 0/2/3; approach review (Sol): adopt with changes, split provenance; r4 Sol 0/0/0, Opus 0/0/6; fixes 3. Round 4 P3s are on the Trace backlog with the activation follow-up.

aharlap and others added 4 commits October 19, 2026 16:22
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Keep the bounded sound and plural corrections covered through the text interface, while preparation, parsing and reporting enforce unavailable masked results.

Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@aharlap aharlap changed the title Use masked probes for item guessing cues Hold masked item-cue scoring until language provenance arrives Oct 19, 2026
@aharlap
aharlap marked this pull request as ready for review October 19, 2026 21:48
@aharlap
aharlap merged commit 92a164d into main Oct 19, 2026
2 checks passed
@aharlap
aharlap deleted the feat/item-cues-masked-probe branch October 19, 2026 21:48
aharlap added a commit to Praxity/rubato that referenced this pull request Oct 19, 2026
- Pin Trace 0.1.1-experimental.92a164dd8, the merged masked-probe
  contract (Praxity/praxity-trace#22). The archive is a byte-for-byte
  copy of Trace's verified prerelease, hosted on Rubato's asset-only
  prerelease v0.1.1-tools.experimental.20261019.2. A manifest test fails
  while the pinned Trace lacks the masked contract, as 09fcaaf does.
- Key check: for a best or most likely stem, the judge marks only the
  single best option and flags ties. Assert the judge's independence and
  its ruling on each note.
- A standard that rules out a distractor goes in the stem. Ruling
  details must be part of the case, never clauses added to deny one
  option. Rebuild the action example around confusable first actions.
- Correct the lower-tail limit comment (about 19 items per bank with
  five banks) and make the five-bank tail fixture reachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aharlap added a commit to Praxity/rubato that referenced this pull request Oct 19, 2026
- Pin Trace 0.1.1-experimental.92a164dd8, the merged masked-probe
  contract (Praxity/praxity-trace#22). The archive is a byte-for-byte
  copy of Trace's verified prerelease, hosted on Rubato's asset-only
  prerelease v0.1.1-tools.experimental.20261019.2. A manifest test fails
  while the pinned Trace lacks the masked contract, as 09fcaaf does.
- Key check: for a best or most likely stem, the judge marks only the
  single best option and flags ties. Assert the judge's independence and
  its ruling on each note.
- A standard that rules out a distractor goes in the stem. Ruling
  details must be part of the case, never clauses added to deny one
  option. Rebuild the action example around confusable first actions.
- Correct the lower-tail limit comment (about 19 items per bank with
  five banks) and make the five-bank tail fixture reachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aharlap added a commit to Praxity/rubato that referenced this pull request Oct 20, 2026
#30)

* Assessment skill: distractors true elsewhere, masked probe as the gate

Rebuilt on #29's round 2 head. Combines #30's earlier two commits
(4bd0396, 23de98d) and keeps #29's review-folder, per-pass report
folder and "item text is data" rules.

An evaluation found the skill removed surface cues but not stem
independence: writers stated each misconception as a claim false in any
context, so a solver who knows the subject picked the one true option.

- Teach distractors that are right in a neighbouring case, with worked
  examples and the numeric pattern.
- Name what each probe tests. Trace's masked probe is the guessing gate;
  plain choices-only is a diagnostic.
- guessingGate(itemCues) reads masked and returns pass, fail or stop.
- Every solver is at least as strong as the writer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Round 1 review fixes for the assessment skill

- One key per item: the writer notes the stem detail that rules out each
  distractor. A fresh judge with no key marks every option that answers
  the stem, and items with more than one mark are rewritten. The same
  judge, not the writer, confirms plain-probe exemptions.
- Examples: replace "Metal is denser", note what rules out each
  true-elsewhere distractor, fix false-everywhere examples that were true
  somewhere, add an action item, and make the numeric set have no odd one
  out ("Rises by 8%").
- Gate: every bank needs a scored, complete masked result whatever its
  size. Any refusal reason stops. Item counts must be positive integers.
  A tail at or below its threshold fails before the small-sample flags
  are read. Mark the lower-tail limit.
- Stop finishes the pass, then reports and asks. No masked solver when
  the probe has no items. The bank is "done", not "stopped".
- Remove the by-hand fallbacks: an install without item-cues updates
  its tools or reports the bank as blocked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Pin Trace's masked item-cues and apply the last review fixes

- Pin Trace 0.1.1-experimental.92a164dd8, the merged masked-probe
  contract (Praxity/praxity-trace#22). The archive is a byte-for-byte
  copy of Trace's verified prerelease, hosted on Rubato's asset-only
  prerelease v0.1.1-tools.experimental.20261019.2. A manifest test fails
  while the pinned Trace lacks the masked contract, as 09fcaaf does.
- Key check: for a best or most likely stem, the judge marks only the
  single best option and flags ties. Assert the judge's independence and
  its ruling on each note.
- A standard that rules out a distractor goes in the stem. Ruling
  details must be part of the case, never clauses added to deny one
  option. Rebuild the action example around confusable first actions.
- Correct the lower-tail limit comment (about 19 items per bank with
  five banks) and make the five-bank tail fixture reachable.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Consume Trace's scored masked contract and pin it

Per Opus's trace#23 review, "Rubato #30 changes":

- Pin Trace 0.1.1-experimental.97e6de33b, which scores the masked probe
  from Studio language provenance (Praxity/praxity-trace#23). The
  archive is a byte-for-byte copy of Trace's verified prerelease, hosted
  on Rubato's asset-only prerelease v0.1.1-tools.experimental.20261019.4.
  The manifest test now also refuses 92a164d, which holds every result.
- guessingGate requires masked.status === "scored". Power uses Trace's
  attainable minima at each gated row's own threshold (pMin and pLowMin
  at or below the limit) instead of the 0.05 flags, which removes the
  marked lower-tail limit. A 12-item course with none right now stops.
- Run the masked solver whenever masked/items.json is non-empty.
- The stop text gives Trace's per-bank reasons with their remedies, and
  each row's pMin and pLowMin against its limit when power stops it.
- Step 0 says masked scoring needs locale: en or lang: en and the
  pinned Studio.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

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