Skip to content

primitive_frequency_mix: a second identification carrier for 002#6

Merged
jamesdward merged 1 commit into
mainfrom
feat/primitive-mix
Jul 6, 2026
Merged

primitive_frequency_mix: a second identification carrier for 002#6
jamesdward merged 1 commit into
mainfrom
feat/primitive-mix

Conversation

@jamesdward

Copy link
Copy Markdown
Owner

What

Milestone 3, Phase 9 — closes the dangerous half of SI-022 ("two grid dialects sharing an ink set are indistinguishable") by measuring, committing and scoring the primitive-frequency mix.

  • Classifier rebuilt on per-ink footprints reconstructed from the committed overprint arithmetic (components merge only with same-ink neighbours), fully diagonal on the five primitives (recall and precision 1.0), edge-touching components excluded so small-fragment estimates are unbiased.
  • Scoring: L1 distance against the committed mix with an n-dependent tolerance (committed × max(1, √(16/n))) so multinomial sampling noise on small fragments is priced as uncertainty, not punished as disagreement; the working reports n, effective tolerance and L1.
  • Sheet v1.1.0: mix committed (expected [0.30, 0.10, 0.24, 0.20, 0.16], tolerance 0.95), weights rebalanced ink 0.60 / mix 0.40. Explicit caveat per SI-018: this commits the reconstruction's composition model, not Studio.Build's original.

Results

  • 0 of 624 same-ink/different-composition impostor fragments reach identified — all-circles, all-stripes, all-staircase, all-filled, at every fraction. The nearest case (all-staircase, 0.684 at frac 0.35–0.5) is a thin but measured margin, kept below the line by classifier recall fixes rather than by exception; the mechanism and bound are documented in SI-026.
  • Genuine held-out surfaces: 0.89–0.92 identified full-surface; frac-0.2 fragments hold a 0.64 mean (solid candidate). The drop vs the ink-only sheet at small fractions is the honest price of the closed gap: a fragment too small to measure the mix makes genuine and same-ink impostor literally identical.
  • SI-008 annotated resolved-for-reconstruction; SI-022 updated with the numbers; SI-026 added.

Review note

The first draft was rejected in director review for gutting genuine small-fragment strength (0.30 at frac 0.2) and letting all-staircase cross 0.70; both were fixed by the edge-exclusion + n-dependent-tolerance redesign and three classifier recall fixes.

Tests

21 mix tests; merged with main (incl. #5): 154 passed.

- classifier rebuilt on per-ink footprints from the overprint arithmetic;
  fully diagonal on the five primitives (recall and precision 1.0); edge-
  touching components excluded from the mix (unbiased small-fragment
  estimates)
- scoring: L1 vs committed mix with n-dependent tolerance
  (committed x max(1, sqrt(n_ref/n)), n_ref 16) so multinomial sampling
  noise is not punished as disagreement
- iso-002.yaml v1.1.0: mix committed (reconstruction's composition model
  per SI-018), weights rebalanced ink 0.60 / mix 0.40
- same-ink/different-composition impostors: 0/624 fragments identified
  across all four single-primitive compositions (closes SI-022's dangerous
  half); genuine held-out surfaces 0.89 identified, frac-0.2 mean 0.639
- SI-008 resolved-for-reconstruction, SI-022 updated, SI-026 added
- 21 mix tests; 146 total green
@jamesdward
jamesdward merged commit ef33f75 into main Jul 6, 2026
1 check passed
@jamesdward
jamesdward deleted the feat/primitive-mix branch July 6, 2026 15:02
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