Function
F0 – F6
Adopted verbatim from R2v3 REC. Does it work, and how completely was that verified.
The attestation protocol makes it impossible to move your number after seeing the other side's number. That is worth nothing if the two sides are pricing different described objects — and by default they are, because the industry standard grades condition with words like minor scratches. This rubric never asks for an adjective. It asks for counts and instrument readings, and derives the grade.
R2v3 is the certification serious refurbishing facilities actually hold. Its equipment categorization sorts cosmetic condition into nine bands using phrases like minor scratches, light scratches and scratches. The published analysis of the standard's own second draft says the quiet part out loud: those terms "do not have well-defined status."
So a commitment scheme built on "Used Good, I'd say" commits to nothing. Both parties can seal a grade, reveal it, and still be describing different machines. The cryptography is sound and the input is mush.
Never collect the category. Collect counts against defined thresholds and readings taken off the machine, then derive the category from them. The adjective becomes an output — reproducible, and arguable one line at a time.
It does not make grading objective. Someone still decides whether that mark is a scratch or a smudge, and whether it is 9mm or 11mm. What changes is that the remaining judgement calls become individually contestable instead of bundled into one unfalsifiable letter, and a dispute becomes answerable with a ruler instead of an argument. That is a real improvement and it is not the same thing as objectivity. Section 9 is the honest list of what is still unresolved.
F0 – F6
Adopted verbatim from R2v3 REC. Does it work, and how completely was that verified.
C0 – C9
Adopted verbatim from R2v3 REC — but derived from counts here, not from adjectives.
S0 – S4
New. Can this machine be defended. Nothing in R2v3 grades this at all.
Because F and C are unmodified, a Sovereign Circuit grade is legible to any R2-certified
facility without translation. F5/C6/S3 reads as "Refurbished, Used
Excellent" to a buyer who has never heard of this program, and adds a third letter they
can ignore.
S is the axis that decides placement. R2v3 grades whether a machine works and how it looks. It says nothing about whether it has a hardware root of trust, whether its firmware still receives fixes, or whether its DMA-capable ports can be shut. For a program whose whole premise is placing used hardware inside a security envelope, that is the thing that matters most — and the standard is silent on it.
The registry is hashed into rubric_hash, so the sheet in the inspector's
hand is provably the sheet the grade was derived from. Two field classes, and the
distinction is not cosmetic — it decides what happens when two parties disagree.
SMART counters, battery capacity, TPM version, test-suite results. Read off the device. If two parties report different values, the round voids — see section 7.
Counts of visible defects, presence of damage, completeness. Tolerated within a stated band, because two careful people can look at the same scuff and count differently.
Counts are not reproducible unless the conditions are fixed.
A defect qualifying at more than one threshold is counted at every threshold it meets. A
30mm scratch increments both scratches_ge_10mm and
scratches_ge_25mm.
The tol column is the largest difference between two independent observers
the rubric will treat as two careful people looking at the same unit. It is not a claim
that differences inside it are meaningless. Class M fields have no tolerance.
| Field | Class | Type | Tol | Definition |
|---|---|---|---|---|
| Cosmetic — visible condition | ||||
unused | H | bool | — | Never placed into service |
packaging | H | enum | — | none | generic | original |
restored_to_like_new | H | bool | — | Cosmetically repaired, no blemishes |
warranty_attached | H | bool | — | Program warranty issued with unit |
cleaned_labels_removed | H | bool | — | Cleaned, non-original labels off |
dents_ge_2mm | H | int | 1 | Deformations >=2mm in any dimension |
dents_ge_6mm | H | int | 0 | Deformations >=6mm ('heavy') |
scratches_ge_10mm | H | int | 2 | External scratches >=10mm long |
scratches_ge_25mm | H | int | 1 | External scratches >=25mm long |
discolored_zones_ge_10mm | H | int | 1 | Faded/discolored areas >=10mm |
label_residue_zones | H | int | 1 | Adhesive or tag residue areas |
display_scratches_ge_5mm | H | int | 1 | Panel scratches >=5mm, white field |
display_delamination | H | bool | — | Coating or bonding separation |
keys_missing | H | int | 0 | Absent keycaps |
keys_legend_worn | H | int | 2 | Keycaps with illegible legends |
housing_cracked | H | bool | — | Any through-crack in the housing |
hinge_damaged | H | bool | — | Hinge bent, seized or detached |
hinge_play_mm | H | int | 1 | Lid deflection at 90 degrees, mm |
latch_broken | H | bool | — | Latch non-functional |
missing_parts | H | list | — | Bezels, feet, covers, panels, keys |
critical_parts_missing | H | bool | — | Parts required to operate |
| Functional — bench results | ||||
posts | M | bool | — | Completes power-on self test |
all_hardware_pass | M | bool | — | Full hardware test suite |
key_functions_pass | M | bool | — | R2v3 F3 key-function test set |
ports_total | M | int | 0 | Count of external ports |
ports_failed | M | int | 0 | Ports failing loopback or device test |
wifi_pass | M | bool | — | Associates and passes throughput test |
bt_pass | M | bool | — | Pairs and sustains a link |
audio_pass | M | bool | — | Output and input verified |
camera_pass | M | bool | — | Captures at rated resolution |
trackpad_pass | M | bool | — | Tracks across full surface |
ram_test_pass | M | bool | — | Full-pass memory test, no errors |
thermal_throttle_observed | M | bool | — | Throttled under 15-min load |
display_dead_pixels | M | int | 0 | Permanently unlit subpixels |
display_stuck_pixels | M | int | 0 | Permanently lit subpixels |
oem_parts_only | H | bool | — | All replacements OEM original |
os_licensed_configured | M | bool | — | Licensed OS loaded, configured |
software_test_results_available | M | bool | — | Test log retained |
| Storage and battery — instrument readings | ||||
storage_present | M | bool | — | Storage device installed |
smart_5 | M | int | 0 | Reallocated sector count |
smart_187 | M | int | 0 | Reported uncorrectable errors |
smart_188 | M | int | 0 | Command timeout |
smart_197 | M | int | 0 | Current pending sector count |
smart_198 | M | int | 0 | Offline uncorrectable |
power_on_hours | M | int | 0 | SMART 9 |
battery_present | M | bool | — | Battery installed |
battery_design_mwh | M | int | 0 | Rated capacity when new, mWh |
battery_full_charge_mwh | M | int | 0 | Present full-charge capacity, mWh |
battery_cycles | M | int | 0 | Reported charge cycles |
| Sovereign — protectability | ||||
tpm_version | M | enum | — | none | 1.2 | 2.0 |
secure_boot_capable | M | bool | — | Firmware supports Secure Boot |
secure_boot_enabled | M | bool | — | Secure Boot currently enforced |
uefi_not_legacy | M | bool | — | Boots UEFI, not legacy BIOS/CSM |
iommu_present | M | bool | — | VT-d / AMD-Vi present and enabled |
dma_ports_lockable | M | bool | — | DMA-capable ports can be disabled |
firmware_latest_applied | M | bool | — | Latest vendor firmware applied |
cpu_microcode_current | M | bool | — | Current microcode revision |
vendor_support_active | M | bool | — | Vendor still issues firmware fixes |
supported_os_available | M | bool | — | A vendor-supported OS will run |
full_disk_encryption | M | bool | — | FDE enabled at placement |
wipe_standard | M | enum | — | none | clear | purge (NIST SP 800-88r2) |
wipe_verified | M | bool | — | Sanitization independently verified |
| Identity and provenance | ||||
backlight_uniform | H | bool | — | No visible bleed or blotching |
ecc_memory | M | bool | — | Error-correcting memory |
storage_type | M | enum | — | none | hdd | sata_ssd | nvme |
wipe_certificate_id | M | str | — | Certificate identifier, or empty |
Evaluated top-down. Every predicate is a count against a threshold, so two people with the same sheet always reach the same letter. The bands are conjunctive — every condition must hold — which matters later, in section 7.
| Code | Label | Binding predicates |
|---|---|---|
| C9 | New Open Box | unused, pristine, original packaging opened |
| C8 | Unused | unused, pristine, packaging not original |
| C7 | Certified Pre-Owned | restored to like-new, pristine, warranty attached |
| C6 | Used Excellent | no dents; ≤2 scratches ≥10mm; none ≥25mm; no display scratches; no discoloration; no residue; cleaned; nothing missing; no structural damage |
| C5 | Used Very Good | no heavy dents; ≤2 dents ≥2mm; ≤1 scratch ≥25mm; ≤1 discolored zone; ≤1 display scratch; nothing missing |
| C4 | Used Good | no heavy dents; ≤5 dents ≥2mm; ≤1 key missing; nothing missing; no structural damage |
| C3 | Used Fair | ≤3 heavy dents; no critical parts missing — the placement floor |
| C2 | Used Poor | heavy damage prevalent |
| C1 | Damaged | housing cracked through, or critical parts missing |
| C0 | Not categorized | not evaluated |
"Pristine" means every visible-defect count is zero, nothing is missing, and there is no structural damage.
| Code | Label | Requires |
|---|---|---|
| F6 | Like New | hardware clean, licensed OS configured, test log retained, OEM parts only, battery ≥90% of design (or no battery) |
| F5 | Refurbished | hardware clean, licensed OS configured, test log retained |
| F4 | Hardware Functional | hardware clean, software not configured |
| F3 | Key Functions Working | passes the key-function set |
| F2 | Verified Specialty | per R2v3 Appendix D |
| F1 | Collectible or Specialty | rare, unsupported, may have missing parts |
| F0 | Not functional | does not POST, or fails key functions |
Backblaze's analysis of its own drive fleet identifies five SMART attributes that actually correlate with impending failure: 5, 187, 188, 197 and 198. A non-zero value in any of the five caps the unit at F3.
It is not scored, weighted, or offset against condition. A drive that has begun to fail is not a drive with a slightly lower grade, and a program that places storage inside households does not get to be clever about this. Power-on hours, by contrast, are recorded but are not a defect — a 44,000-hour drive with clean counters grades F6.
Battery health is full_charge_mwh / design_mwh as an integer percentage,
rounded half-up — the same rounding the price protocol uses, for the same reason. Below
90% the unit cannot hold F6. A unit with no battery is not penalised: the field reports
null, which is not zero.
TPM 2.0 · Secure Boot enforced · UEFI · IOMMU · DMA ports lockable · firmware current · vendor support active · microcode current · FDE · sanitized to Purge
TPM 2.0 · Secure Boot capable · UEFI · firmware current · FDE
UEFI · Secure Boot capable · FDE — but no TPM 2.0
Legacy BIOS, or cannot enforce Secure Boot, or no FDE. Never placed with households or children.
Not sanitized, sanitization unverified, or no supported OS exists.
TPM 1.2 does not reach S3. Microsoft's position is that 1.2 is insufficient and that the TPM 2.0 line is not moving; a rubric treating 1.2 as adequate would be writing cheques the OS vendor will not honour.
S0 is absolute. An unsanitized unit is not placeable at any tier, in any cosmetic condition, at any price. Vector GV-5 below is an immaculate, fully-current, zero-defect machine that routes to recovery because its wipe was not verified. Sanitization follows NIST SP 800-88 Rev. 2, which R2v3 requires.
This is the real derivation, not a mock-up — a direct port of
grading.py. It self-checks against all eleven published vectors on load and
reports the result below rather than hiding a mismatch. Nothing leaves your device.
Try it: load GV-1 and turn off vendor_support_active.
Nothing physical changes and the unit loses Tier A. Then load GV-1 and pile on
cosmetic damage — dents, scratches, worn key legends — and watch it hold Tier A while
the cosmetic band collapses. Appearance does not decide placement. Finally, uncheck
wipe_verified on anything at all.
That sentence is only true if it is enforced, so three conditions apply identically at Tier A and Tier D. Fail any one and the unit routes to recovery regardless of everything else. The test suite asserts this at every tier rather than asserting it in prose.
| Tier | Serves | Requires |
|---|---|---|
| A | Business and agency | S4, F5 |
| B | Small business, nonprofit, congregation | S3, F4 |
| C | Household adults | S2, F4 |
| D | Children — homework and coding lab | S2, F3 |
| L | Contained lab use only | S1 |
| P | Repair before placement | C2 |
| R | Recovery | anything else |
What descends the cascade is the consequence of compromise, never the standard of defence. A child's homework machine has no corporate credentials and no lateral path into an enterprise network. It does not have weaker encryption.
Cosmetic condition does not choose a tier — C3 and C6 place identically. But C1 and C2 are not descriptions of appearance. C1 is a cracked housing; C2 has critical parts missing. Those are durability findings wearing cosmetic clothing, so they gate placement where ordinary wear does not.
If two parties report different values for a Class M field, that is not a disagreement about judgement. It means the device was altered between readings, the wrong unit was read, or a reading is fabricated. The round voids. Values are not averaged, toleranced, or split. This check runs first, and it voids even when the two sheets happen to derive to the same grade — because the problem is not the grade, it is that one of the two readings is not real.
Two inspectors will disagree about whether that is three scratches or five. Almost always it changes nothing. So the rubric does not reconcile observations. It reconciles grades.
Re-inspection becomes a single measurement instead of a re-run of the whole sheet. Because the cosmetic bands are conjunctive, each field crossing its own threshold flips the grade on its own — so a material divergence usually returns several independently pivotal fields rather than one.
If re-inspection does not settle it, the conservative merge takes the worse value for every differing field, producing the lowest grade consistent with both sheets. This is not a fair-value estimate and is not presented as one. It is a deliberate tie-break against the party proposing the unit, and its purpose is to make unresolved divergence unattractive rather than to be correct. Two parties who cannot agree on what is physically in front of them should find that expensive.
The grade must be agreed before the price commitment window opens. Otherwise a party who can see where the price is heading has a reason to shade their observations toward it.
Steps 1–5 are this document. Steps 6–7 are the
Dual Attestation Protocol. The grade_token commits
over the observations and the rubric, not the derived letters — because the derivation is
deterministic and published, anyone holding the sheet can recompute the letters and check
them.
All vectors share one reference unit: a three-year-old fleet laptop, 57,000 mWh design
battery at 52,000 mWh, 9,800 power-on hours, clean SMART, TPM 2.0, purge-verified. Each
changes as little as possible from it. Reproduced by
test_grading.py — 247 assertions.
| ID | Case | Grade | Tier | Batt | Load | |
|---|---|---|---|---|---|---|
| GV-1 | Reference fleet laptopThree years old, cleaned, fully current firmware, purge-verified. | F6/C6/S4 | A | 91% | 2 | |
| GV-2 | Vendor support endedPhysically identical to GV-1. Vendor no longer issues firmware fixes, so it can no longer hold the top sovereign band or serve Tier A. | F6/C6/S3 | B | 91% | 2 | |
| GV-3 | TPM 1.2 onlyWell-kept and fully functional, but without a TPM 2.0 root of trust it is capped at Sovereign Limited and cannot exceed household adult use. | F6/C6/S2 | C | 91% | 2 | |
| GV-4 | Dented but soundVisibly used — heavy dents, long scratches, worn key legends, tag residue. Nothing missing, nothing structural. It grades C3 on looks and still serves Tier A, because appearance does not decide placement. | F6/C3/S4 | A | 91% | 45 | |
| GV-4b | The rubber foot problemIdentical to GV-4 plus one missing rubber foot. R2v3 F4 admits no missing parts of any kind, so the unit drops two functional bands and three tiers over a piece of rubber. Recorded as a known defect of the inherited standard, not as a result the rubric endorses. | F3/C3/S4 | D | 91% | 50 | |
| GV-5 | Pristine but unsanitizedImmaculate, current, fully functional — and not sanitized. S0. Not placeable at any tier, at any price, in any condition. | F6/C6/S0 | R | 91% | 0 | |
| GV-6 | Drive beginning to failReallocated sectors and pending sectors present. A drive that is starting to fail is not a slightly lower grade, so it drops to F3. | F3/C6/S4 | D | 91% | 2 | |
| GV-7 | Legacy BIOS machineNo Secure Boot chain. S1 — contained lab use only. Deliberately NOT placed with households or children even though it works fine. | F6/C6/S1 | L | 91% | 2 | |
| GV-8 | Tired batteryIdentical to GV-1 apart from a battery at 62% of design capacity. One instrument reading, one band. | F5/C6/S4 | A | 61% | 2 | |
| GV-9 | Cracked housingBoots, passes every functional test and holds the top sovereign grade — and is still routed to recovery, because a cracked housing is a structural finding, not an aesthetic one. | F6/C1/S4 | R | 91% | 11 | |
| GV-10 | Cascade unit for a homework deskOlder and only key-functions tested, but TPM 2.0, Secure Boot capable, encrypted and purge-verified. Serves Tier D at the same protection standard as Tier A. | F3/C4/S3 | D | 72% | 16 |
Nothing physical changes. The vendor stops issuing firmware fixes and the unit loses Tier A. Support lifetime, not condition, is what ends a machine's working life at the top.
Seven dents, fourteen long scratches, worn key legends, tag residue. Drops three cosmetic bands and stays at Tier A.
One missing rubber foot. Drops two functional bands and three tiers. This is inherited from R2v3 F4 and it is wrong — see open item 4. Published rather than quietly patched.
Immaculate, current, fully functional, unsanitized. Recovery. The gate that overrides everything.
Passes every functional test, holds the top sovereign grade, cracked housing. Recovery. This one was a real bug found by running the vectors: tier derivation originally ignored the cosmetic axis and placed a cracked-chassis laptop at Tier A.
| ID | Case | Status | Pivotal fields |
|---|---|---|---|
| RV-1 | Immaterial divergence | immaterial | none |
| RV-2 | Material divergence, single pivotal field | material | dents_ge_6mm |
| RV-3 | Machine-read conflict | void | none |
| RV-4 | Several independently pivotal fields | material | dents_ge_2mm discolored_zones_ge_10mm scratches_ge_25mm |
RV-1's two sheets differ on two fields and nothing is escalated at all. RV-2's differ on one, and that one is named. RV-3 voids on a machine-field conflict. RV-4 returns three independently pivotal fields, which is what conjunctive bands produce.
Stated plainly rather than papered over.
The protocol stops either side moving their number. The rubric stops them describing different machines. Neither is worth much without the other.