Skip to content

Classify all 80 conflicted type names, and gate the classification - #2806

Merged
gHashTag merged 1 commit into
masterfrom
w708-type-conflict-classification
Aug 29, 2026
Merged

Classify all 80 conflicted type names, and gate the classification#2806
gHashTag merged 1 commit into
masterfrom
w708-type-conflict-classification

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Refs #2774

tri types dup reports which names have two definitions. It cannot say what kind of conflict each is, and the two kinds want opposite repairs. All 80 were opened and judged:

Verdict Count
DRIFT — one concept that grew a second definition 46
DISTINCT — two concepts that collided on a name 34

docs/TYPE_CONFLICTS.md is the summary; docs/reports/type_conflicts_classified.json holds the per-name reading that decided each verdict.

One row is fixable today with no cross-module decision. AdamWConfig has both definitions in ONE file (specs/ml/optimizer/adamw.t27 lines 28 and 483), six of seven fields identical, and the file's own comment says the second was appended.

The document is gated, in both directions

A written reading of a tree stops being true without anything failing. tri types classified re-takes it:

classified but no longer conflicting  -> STALE     (a repair landed)
conflicting but not classified        -> UNJUDGED  (nobody has read it)

Only UNJUDGED feels like a failure. Passing over STALE is how a document becomes decoration. Both are red. Wired into corpus-ratchet.yml.

Proven red both ways before landing, then restored:

1) drop a row  -> UNJUDGED  Color: conflicting, but nothing has read it
2) plant a row -> STALE     ZZZNotAType: classified, but no longer conflicting
3) restore     -> exit=0, OK

It earned itself on the first execution. HealthStatus — the eightieth name — appeared when #2802 taught the field reader that pub name: T is a field. The classification run predated that change and never saw it.

Recorded rather than hidden

Four verdicts (Agent, AgentStatus, Color, HealthStatus) are reported CONFLICTED by the tool only because it cannot parse the variants : , enum idiom on one side — it compares an empty field list against a full one. Those four were decided by reading the source; the tool's agreement is a coincidence, not corroboration. docs/TYPE_CONFLICTS.md says so in its own section.

ci-gates 205-207.

Refs #2774

`tri types dup` reports which names have more than one definition and
`tri types ratchet` holds that set. Neither can say what KIND of conflict a
name is, and the two kinds want opposite repairs:

  DRIFT     one concept that grew a second definition -- converge them
  DISTINCT  two concepts that collided on a name -- rename, or judge and accept

All 80 were opened and decided with the reading written down: 46 DRIFT,
34 DISTINCT. docs/TYPE_CONFLICTS.md is the summary,
docs/reports/type_conflicts_classified.json is the record.

A written reading of a tree stops being true without anything failing, so
`tri types classified` re-takes it and fails in both directions -- UNJUDGED for
a conflict nobody has read, STALE for a row about a name that is no longer
conflicting. Passing over STALE is how a document becomes decoration. Wired
into corpus-ratchet.yml; proven red both ways before landing.

It earned itself on the first run: HealthStatus, the eightieth name, appeared
when #2802 taught the field reader that `pub name: T` is a field.

Recorded rather than hidden: four verdicts are reported CONFLICTED by the tool
only because it cannot parse `variants : ,` on one side. Those verdicts came
from reading the source; the tool agreeing is a coincidence.

ci-gates 205-207.
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-29 11:42:53 UTC

Summary

Status Count
Total Open PRs 9
PRs with Failing Checks 7
PRs with All Checks Green 2
READY 0
FAILING 7
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=d25ac0cc159e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 40ca257 into master Aug 29, 2026
32 checks passed
@gHashTag
gHashTag deleted the w708-type-conflict-classification branch August 29, 2026 11:47
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