Conversation
Environment contract and result validity: examples declare the environment they require, core resolves what the machine provides, runs are verified before they produce numbers, and reports record what actually executed. Follows the phase folder convention and updates the index README as its maintainer notes require. Signed-off-by: koma <vjuhhii@gmail.com>
Collaborator
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: vjuhhii The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Signed-off-by: koma <vjuhhii@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
/kind documentation
What this PR does / why we need it:
Adds a Phase 4 proposal to
docs/proposals/scenarios/example-restoration/, following the phasefolder convention that directory establishes, and updates its index README as the "Notes for
Maintainers" section there requires.
On timing, since it differs from previous phases. #375 and #541 were submitted by mentees after
selection. I am submitting this as an applicant, before selection, so I want to be explicit about
what it is: a proposed direction for Phase 4, grounded in work already in the tree, offered
regardless of who ends up doing it. If maintainers would rather this waited until the phase's mentee
is confirmed, or would rather it were merged and reassigned, both are fine by me — say the word and
I will adjust or close it.
The argument
Phases 1 to 3 progressively answered does this example run? Phase 3 in particular built the
inventory, the tiered validation, the PR-impact classification, and published example health. That
machinery works.
The gap this proposal addresses is that running successfully and measuring meaningfully are
different properties, and only the first is currently verified.
#888 documents the proven case: below compute capability 8.0 PyTorch emulates
bfloat16instead ofrefusing it, two LLM examples select it unconditionally on any CUDA device, and on a GTX 1080 that
path measures 1.85× slower than float32. Nothing raises. The benchmark completes and publishes the
number.
What I found while writing this
Phase 3 already reserves
Failed: Hardware assumptionas a failure cause and publishesRequires GPU or special hardwareas a status. The vocabulary is there. The detection behind it is_check_cuda_only_assumptions()instatic_validator.py:474, a textual scan that exempts any filecontaining
torch.cuda.is_available().I ran that check's own regex and exemption rule against the sites in #888:
bfloat16eagle_llm.pyWARNING, does not blockblock/drafter.pyblock/verifier.pyhuggingface_llm.pydevice == "cuda"is a comparison, not an assignment, so the pattern does not match it. Two of thethree files responsible for the failure mode are invisible to the check designed to find hardware
assumptions, and the exemption rule is precisely the predicate #888 shows to be insufficient.
This is not a criticism of Phase 3. A textual scan is the right first approximation when there is
nothing to check against. The proposal's argument is that there should be something to check
against.
The proposal in one line
An example declares the environment it requires, core resolves what the machine provides,
the run is verified before it produces numbers, and the report records what actually
executed.
A contract evaluates to satisfied, substituted, or unsatisfiable. The distinction between the last
two is the design's centre: refusing every mismatch would make Ianvs unusable on ordinary hardware,
which contradicts the point of an edge-AI benchmark, while publishing a substituted result as native
is the bug. Recording the substitution keeps both properties.
Relationship to work already open
The first two stages are partly implemented, in work done while preparing this: #957 adds
device_profile()andsupports_bf16(), an optionalmin_compute_capabilityintestenv.yaml,verification in
TestEnv.prepare(), and a fallback warning. #767 and #890 cover theuse_gpuordering defect and its regression tests.
The proposal also references adjacent work by others — #535 / #536 on local device detection, #845
on a pytest suite for
core/, and theget_device()suggestion raised in review of #767 — with theintent of consuming rather than duplicating it. Where scope overlaps something a contributor has
already begun, I would rather coordinate in those threads.
Contents
phase-4-2026-term-3/proposal.md— background, problem statement with the verification above,proposal, scope, target users, design details with a worked example, functional requirements,
a roadmap over the Sep 7 – Nov 27 term with a midterm deliverable, acceptance criteria, and risk
analysis.
README.md— new row in the phases table and a Phase 4 section, per the maintainer notes in thatfile.
Which issue(s) this PR fixes:
None directly; this is a proposal. Related: #230, #888, #957, #767, #890.