Skip to content

Cross-grammar discrimination experiment (exp-002) + rotated-sampler fix#3

Closed
jamesdward wants to merge 1 commit into
feat/recogniser-002from
feat/exp-002-cross-grammar
Closed

Cross-grammar discrimination experiment (exp-002) + rotated-sampler fix#3
jamesdward wants to merge 1 commit into
feat/recogniser-002from
feat/exp-002-cross-grammar

Conversation

@jamesdward

Copy link
Copy Markdown
Owner

What

Milestone 2, Phase 7 — stacked on #2; I'll rebase onto main once #2 merges so this shows only the Phase 7 diff.

  • Sampler fix (SI-017 gap 2, resolved): the rotated fragment crop degenerated to zero-size windows near 90° (negative slice index). The warp is now framed directly onto the window, making zero-size output impossible at any rotation; regression tests at 85–95° and extreme aspect jitter. exp-001's thin 90° arm was caused by this.
  • battery/cross.py: four arms — 001 fragments and 002 fragments swept over fraction × rotation against BOTH sheets; a white-balance gain sweep on 002; and mutual impostors including a nine-ink grid impostor (002's exact structure, inks hue-rotated 165°).
  • experiments/exp-002-cross-grammar/: manifest-pinned, 1269-row CSV, 4 charts, full report.

Headline results (from the report)

  • Cross-grammar: 0 of 885 genuine fragments ever reached candidate against the wrong sheet (max cross-aggregate 0.268 vs true-sheet 0.35–0.88). The report is explicit that this separation is between-family and structural; same-family distance remains the open hard test (SI-022).
  • White-balance (the M2 core claim): absolute colour matching collapses to 0.016–0.125 under casts; the relationship path holds 0.588–0.806 (above candidate throughout) and recovers the applied gain to two significant figures, degrading predictably in the strong-warm clipping regime.
  • Peak discounting confirmed at its sharpest: an impostor sharing all of 002's canonical structure (grid, rhythm, staircase, exact multiply) but not its inks scores 0.003 — the address is the inks, and only the inks.
  • 002 fragment strength: identified from 5% of surface area (vs 001's whole-surface requirement) — audit 002 §5's "dramatically better" confirmed empirically.

Tests

18 new (sampler regressions + quick end-to-end). Full suite: 125 passed.

- generator/fragments.py: warp framed directly onto the window — zero-size
  crops impossible at any rotation (SI-017 gap 2 resolved, regression tested)
- battery/cross.py: four-arm sweep (001 fragments, 002 fragments, WB gain
  sweep, mutual impostors incl. nine-ink hue-rotated grid impostor)
- experiments/exp-002-cross-grammar/: manifest, 1269-row CSV, 4 charts,
  report
- headline: 0/885 cross-family fragments reach candidate; relationship-path
  colour holds 0.59-0.81 under casts that collapse absolute matching to
  0.02-0.13, and recovers the applied gain; structure-only impostor scores
  ~0.003 (peak discounting confirmed); SI-022 records the same-family
  distance gap
- 18 new tests; 125 total green
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