SAMPLE - demo laboratory, made with demo values · The UP↑SCALE system: weighing data, users, audit trail, signatures, records · Pipette check and pipette calibration · Compounding assistant and solution mode · Routine check before use, minimum weight and air buoyancy correction · Fill weighing and the check of prepackages (℮, NIST HB 133) · Density mode (Archimedes) · LIMS / ELN forwarding · 📡 Sensors and instruments (room, liquid, pressure)
| System | SAMPLE - demo laboratory, made with demo values |
|---|---|
| UP↑SCALE | UP⬆SCALE (DIY) #76439 (DIY) · E83DC1241BB0 |
| Versions | App 1.01312 · Firmware 1.01312 |
| Document | UPSCALE-VALPACK-1 · 11/10/2026, 3:42:22 PM · Demo Admin |
| Status | draft until it is signed (chapter 14) |
| 1 | Purpose, scope and intended use |
| 2 | System description |
| 3 | Validation approach and acceptance criteria |
| 4 | References |
| 5 | Requirements and their tests |
| 6 | Risk assessment |
| 7 | Installation qualification (IQ) |
| 8 | Operational qualification (OQ), part A: the calculations |
| 9 | Operational qualification (OQ), part B: test scripts |
| 10 | Performance qualification (PQ) |
| 11 | 21 CFR Part 11 / EU GMP Annex 11 checklist |
| 12 | Supplier information |
| 13 | Change control and periodic review |
| 14 | Deviations, conclusion and approval |
| A | Annex A - the reference cases of this device |
This pack documents the validation of the UP↑SCALE system in your laboratory: the UP↑SCALE (scale or RS-232 adapter with your balance), its firmware and the UP↑SCALE app on the devices you use. It shows that the system is installed as described (IQ), works as specified (OQ) and gives correct results under your conditions (PQ).
Fill in the blank fields, attach the records named in the tests, assess every deviation and sign chapter 14. The release for use follows with the Validation Summary Report (VSR) of the app.
Chapters in this pack: The UP↑SCALE system: weighing data, users, audit trail, signatures, records · Pipette check and pipette calibration · Compounding assistant and solution mode · Routine check before use, minimum weight and air buoyancy correction · Fill weighing and the check of prepackages (℮, NIST HB 133) · Density mode (Archimedes) · LIMS / ELN forwarding · 📡 Sensors and instruments (room, liquid, pressure)
| App version | 1.01312 |
|---|---|
| App code fingerprint (SHA-256) | 76598f1485eff4e3b90536ab5e8259fe4c5eb09502d0e7942c84cf2aa5af58ce |
| UP↑SCALE | UP⬆SCALE (DIY) #76439 (DIY) |
| Device ID | E83DC1241BB0 |
| Edition | ENTERPRISE & COMPLIANCE |
| Firmware | 1.01312 |
| Firmware fingerprint (SHA-256 of the build) | 128bc3a1e12e90a5815d8da9741da650165334455680cc3b705b402ba9c00938 |
| Weighing range (scale data) | Max 120 g · d 10 µg |
| Instrument, counters, certificate data | Firmware 1.01312 configuration counter 61 |
| Sensors and instruments (register) | S-0001 Room sensor (demo) · DEMO-THP-2026-10 · 2027-10-01 S-0002 Water thermometer (demo) · DEMO-WT-2026-07 · 2027-07-01 |
| Equipment register entry | – |
| Users and audit | users with roles |
| Qualified devices (phones / PCs) | 0 of 0 devices qualified |
| Browser of this device | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 |
| Validation of the calculations | Validation of the calculations on this device, 11/10/2026, 3:41:56 PM: 431 cases passed, 0 failed. |
| Balance (lab settings) | Analytical balance (demo) Max 120 g, d 0.01 mg · DEMO-BAL-2026-09 |
|---|---|
| Instruments (lab settings) | Water thermometer: Water thermometer (demo) · DEMO-WT-2026-07 Barometer: Room sensor (demo) · DEMO-THP-2026-10 Hygrometer: Room sensor (demo) · DEMO-THP-2026-10 |
| Standard uncertainties of the instruments (k = 1) | u(water) 0.1 °C · u(air) 0.15 °C · u(p) 5 hPa · u(RH) 2.5 % |
| The runs | check 4 / calibration 10 deliveries per volume · evaporation 60 s · room reference 20 °C · water air-saturated |
| Decision rule | simple acceptance (|e| ≤ limit) · k = 2 |
| Limits of ISO 8655-2 | ISO 8655-2 - app table (secondary sources)SHA-256 3cba194d8834724b2324b9b78b70347c88e74148c12e8bbadcf7ee6ab608c849 |
| CMC table (version in use) | – |
| Pipette register | 5 instruments in the register (without the retired ones) |
Risk-based, along GAMP 5 (second edition) and ISO/IEC 17025:2017, 7.11.2: the effort follows the risk of each function for your results and your data (chapter 6). Your laboratory decides the GAMP category of the system; for a configured product with its own calculations, category 4 is a common choice.
The supplier gives the structure, the reference cases and the test scripts; your laboratory executes the tests, records what it observed, assesses deviations and approves the result.
Editions as used for this version of the app. The limits of ISO 8655-2 in the app come from public secondary sources unless your laboratory typed its own table (chapter 2). UP↑SCALE is not affiliated with ISO, OIML, EURAMET, NIST, ILAC, ISPE or any authority.
The requirements of the intended use and the tests that show them. Add your own requirements at the end and give each one a test.
| ID | Requirement | Shown by |
|---|---|---|
| URS-01 | The recorded weight is the weight the balance shows (same digits, unit, stable mark). | IQ-04, OQ-F01 |
| URS-02 | The calculations of the app and the firmware are correct. | OQ part A |
| URS-03 | Only users with a login work; a role limits what each one may do. | IQ-06, IQ-07, OQ-F03, OQ-F04 |
| URS-04 | Every change of a setting or a record is in the audit trail: who, when, what (old and new value) and why. | OQ-F02 |
| URS-05 | Electronic signatures carry the name, date, time and meaning and stay linked to their record. | OQ-F05 |
| URS-06 | A saved record or report cannot be changed unnoticed. | OQ-F06 |
| URS-07 | Records can be exported and archived in a readable form. | OQ-F07, IQ-10 |
| URS-08 | Time stamps are right. | IQ-08, OQ-F08 |
| URS-09 | A power cut loses no record and does not break the audit trail. | OQ-F09 |
| URS-10 | The software in use is the validated version. | IQ-01, IQ-02, chapter 13 |
| URS-P1 | Volumes by the gravimetric procedure of ISO 8655-6:2022: Z factor, evaporation, the conditions at the start and the end. | OQ part A (PIP), OQ-P02, OQ-P05 |
| URS-P2 | Systematic and random error against the limits, PASS / FAIL by the decision rule of the lab. | OQ part A (PIP, MPE, LIM), OQ-P03 |
| URS-P3 | The uncertainty of every volume along ISO/TR 20461:2023; the reported U never below the CMC. | OQ part A (PIP, CMC), OQ-P07 |
| URS-P4 | The balance and the instruments are suitable (ISO 8655-6:2022 tables 1 and 2); a deviation from the standard is shown on the report. | IQ-P1 ... IQ-P3, OQ part A (BAL, DEV), OQ-P06 |
| URS-P5 | Every delivery is taken from the balance; an implausible value is kept or redone with a reason. | OQ-P01, OQ-P04 |
| URS-P6 | Each run is kept in the register with all values; the due dates follow; old data can be imported with an import record. | OQ-P08, OQ-P09 |
| URS-P7 | Multichannel pipettes: every channel tested and named on the report. | OQ-P10 |
| URS-P8 | The results agree with an external calibration under the conditions of the lab. | PQ-P1 |
| URS-P9 | Volumetric glassware along ISO 4787: to contain - the item is weighed empty before every fill; to deliver - a value only after the vessel was off the balance or an OK; masses up to 2 kg; the setting of the meniscus in U. | OQ part A (PIP-31 ... PIP-36, GLS), OQ-P12, OQ-P13 |
| URS-C1 | Only the approved version of a master formula (rows, SOP, process plan) runs; a change needs a new approval. | IQ-C2, OQ-C01 |
| URS-C2 | An expired or locked lot blocks the start; a weigh step opens only for a container with an approved code and the lot of the batch, or a confirmed label. | IQ-C1, OQ-C02 |
| URS-C3 | Every ingredient is weighed to its goal within its tolerance; only a stable value is taken, with user and time. | OQ part A (SOL), OQ-C03, OQ-C08 |
| URS-C4 | A value over its goal needs a QM release (another user, password, reason) or a recalculation of the other goals; both are in the batch record. | OQ-C04, OQ-C08 |
| URS-C5 | A NO to a check or an in-process value out of its tolerance needs a reason and is a deviation in the batch record. | OQ-C05 |
| URS-C6 | The uniformity of mass along Ph. Eur. 2.9.5 is right. | OQ part A (UM), OQ-C06 |
| URS-C7 | The batch record is complete, sealed and signed by the operator and by a QM who did not make it; the label shows the batch number and the use-by date. | IQ-C3, OQ-C07, PQ-C1 |
| URS-C8 | A tolerance the balance cannot resolve (narrower than d at the batch size) is flagged by the UP↑SCALE before the start, and the batch record names the band that was accepted. | OQ part A (SOL), OQ-C09 |
| URS-R1 | Repeatability and accuracy (or sensitivity) are judged by the limits of the profile: PASS or FAIL. | OQ part A (RT), OQ-R01, OQ-R02 |
| URS-R2 | Every value comes from the balance when it is stable, minus the empty plate before it. | OQ-R01 |
| URS-R3 | After a failed check every device shows NOT RELEASED FOR USE until a check passes or an ADMIN removes the warning with a reason; a due check is shown too. | OQ-R03, OQ-R04 |
| URS-R4 | A weight below the minimum weight is recorded only after a warning, and then logged. | IQ-R2, OQ-R05 |
| URS-R5 | Checks, removed warnings and changes of these settings are recorded (activity log, sealed PDF). | OQ-R06 |
| URS-R6 | The true mass is worked out from the density of the THING and the air density; the reading stays unchanged. | IQ-R3, OQ part A (AB), OQ-R07 |
| URS-W1 | The limits of the rule are right: TNE, T1, T2; MAV and moisture allowance; own - / +. | OQ part A (FE, FM, HB), OQ-W01 |
| URS-W2 | Every fill is judged and shown: orange under, yellow between T1 and the nominal, green in the tolerance, red over. | OQ part A (FS), OQ-W02 |
| URS-W3 | Only a stable fill is taken; one outside the limits only after a confirmation. | OQ-W03 |
| URS-W4 | Statistics and verdict of the run are right; the run goes on after a reload, on another device and after a restart. | OQ-W04, OQ-W05 |
| URS-W5 | The report names the rule and its limits and lists every bag with time, weight and deviation. | OQ-W06 |
| URS-W6 | A lot of closed packs is checked with the sample plan of the rule. | IQ-W1, OQ-W07, PQ-W1 |
| URS-D1 | Both weights come from the balance, taken when stable and after a zero. | OQ-D01 |
| URS-D2 | The liquid density is right: water from the table of the firmware (0 ... 40 °C), the listed liquids, an own value. | OQ part A (DEN), OQ-D02 |
| URS-D3 | Density, volume, uncertainty and the air term are right; an implausible measurement is shown. | OQ part A (DEN, AB), OQ-D03, OQ-D04 |
| URS-D4 | The result agrees with a body of known density. | OQ-D05, PQ-D1 |
| URS-D5 | Results can be copied into your records and saved as a THING. | IQ-D2, OQ-D06 |
| URS-L1 | Only the chosen events go to your https address, with your token. | IQ-L1, OQ-L01 |
| URS-L2 | Every event has a fixed id, device, UP↑SCALE, user and time, so a double can be dropped. | OQ-L01, OQ-L05 |
| URS-L3 | The values equal the records: weight, unit, user, time, below the minimum weight. | OQ-L03 |
| URS-L4 | Lines of the activity log come with sequence number and chain hash; missed lines follow. | IQ-L3, OQ-L02 |
| URS-L5 | Sealed files come with their SHA-256 and the seal. | OQ-L04 |
| URS-L6 | When the server is not reachable, events wait and go again in order; a warning shows. | OQ-L05 |
| URS-L7 | Batches, solutions, routine checks and validation runs arrive as structured records. | OQ-L06, OQ-L07 |
| URS-S1 | A typed value always wins; a sensor fills only an empty field or on request, and every recorded value says whether it came from a sensor (which one) or was typed (from which instrument). | OQ-S02, OQ-S03 |
| URS-S2 | A value older than the limit of its role is not used (liquid 30 s, room 5 min, pressure 1.5 s). | OQ-S04 |
| URS-S3 | The correction of the certificate is added to every reading of a registered device; the record keeps the raw value, the correction and the value used. | OQ-S05 |
| URS-S4 | A calibration that is due shows a warning and counts as a deviation of a pipette or glassware calibration. | IQ-S1, OQ-S06 |
| URS-S5 | Every change of the register is kept with user, time, old and new value (and the reason with the strict audit trail); entries are retired, never deleted; only an ADMIN or a QM changes it. | OQ-S07 |
| URS-S6 | The values of the devices are decoded as their published formats say. | OQ-A (SEN-01 … SEN-23, SEN-27 … SEN-35) |
| URS-S7 | Room limits: a crossing is shown and logged; the room log keeps one mean a minute while the app is open. | OQ-S08 |
| URS-S8 | The pipette budget takes the bigger of the lab's standard uncertainty and U / 2 of the instrument. | OQ-A (SEN-24 … SEN-26) |
Pre-filled by UP↑SCALE as a starting point: confirm or change the ratings for your use (H high, M medium, L low) and write your own rating in the last column.
| Function | Possible failure | Effect | Severity | Likelihood | Control in the system | Tested by | Your rating |
|---|---|---|---|---|---|---|---|
| Reading the balance | a wrong or rounded value is recorded | wrong result | H | L | the value of the balance line with its digits; stable mark | OQ-F01 | |
| Calculations | a wrong formula or limit | wrong result | H | L | reference cases worked out by hand | OQ part A | |
| Audit trail | a change is not recorded | data integrity | H | L | hash-chained activity log in the scale | OQ-F02 | |
| Access control | an unauthorised person changes data | data integrity | H | M | users, roles, lockout | OQ-F03, OQ-F04 | |
| Electronic signatures | a signature is not linked to its record | data integrity | H | L | signed with the number and code of the report | OQ-F05 | |
| Records and reports | a record is changed after saving | data integrity | H | L | seal and integrity code | OQ-F06 | |
| Power cut | a record is lost or the log is broken | data loss | M | M | repair of the log at the start | OQ-F09 | |
| Time stamps | a wrong time in the records | data integrity | M | M | clock of the scale, device qualification | OQ-F08 | |
| Taking a delivery | an unstable or wrong value is taken | wrong volume | H | L | stable hold, plausibility check, KEEP / REDO | OQ-P01, OQ-P04 | |
| Conditions (Z factor) | wrong temperatures or pressure | small volume error | M | M | asked at the start and the end; deviations listed | OQ-P02, OQ-P06 | |
| Limits | a wrong limits table | wrong verdict | H | M | the source of the limits on every report | OQ-P03, IQ-P4 | |
| Uncertainty and CMC | U smaller than the CMC | wrong statement | M | L | reported U = max(U, CMC) | OQ-P07 | |
| Balance suitability | d too coarse for the volume | wrong volume | H | L | a calibration does not start | OQ-P06, IQ-P3 | |
| Due dates | an overdue pipette is used | wrong results in the lab | M | M | due list, stickers, status | OQ-P08 | |
| Data migration | an import changes data | wrong register | M | M | preview and import record with SHA-256 | OQ-P09 | |
| Glassware: an early value | a value taken while the meniscus is set on the balance or during the waiting time | wrong volume | H | L | a value only after the item / vessel was lifted or an OK (MENISCUS SET) | OQ-P12, OQ-P13 | |
| Glassware: the empty reading (to contain) | the item not emptied and dried, or not on the balance | wrong volume | M | L | the EMPTY prompt after every fill; the empty reading needs an item on the pan | OQ-P12 | |
| Identity of the raw materials | a wrong container or lot is used | wrong product | H | M | identity check of the code, its lot and use-by date; wrong scans recorded | OQ-C02 | |
| Lots and use-by dates | an expired or locked lot is used | wrong product | H | L | start blocked; the UP↑SCALE checks the dates with its own clock | OQ-C02 | |
| Weighing | a wrong amount is taken | wrong product | H | L | tolerance per ingredient, stable value only | OQ-C03 | |
| Value over its goal | it is accepted without review | wrong product | H | M | QM release with a reason, or recalculation; both in the batch record | OQ-C04 | |
| Master formula | a changed formula runs | wrong product | H | L | a change needs a new approval | OQ-C01 | |
| Batch record | it is incomplete or changed | data integrity | H | L | made by the UP↑SCALE, seal, four eyes | OQ-C07 | |
| Tolerance narrower than d | a row is accepted outside its tolerance | wrong product | H | L | the UP↑SCALE flags the row, the app warns and asks at the start, the batch record names the accepted band | OQ-C09 | |
| Verdict of the check | a wrong formula or limit | a faulty balance is used | H | L | reference cases; every value, mean and s shown | OQ part A (RT), OQ-R01 | |
| Test weights | a wrong value typed or a weight out of tolerance | wrong verdict | M | M | a note when the weight tolerance is over a third of a limit | IQ-R1, OQ-R02 | |
| Failed or due check | it is ignored | results from an unchecked balance | H | M | bars on every device; only an ADMIN removes a warning, with a reason, logged | OQ-R03, OQ-R04 | |
| Minimum weight | a weighing below it is recorded | relative error too big | H | M | warning first, entry in the activity log | OQ-R05 | |
| Air buoyancy | a wrong density or air density | small mass error | M | L | no correction without a density; the reading is kept; changes logged | OQ-R07 | |
| Limits of the rule | a wrong TNE or MAV | packs short or overfilled | H | L | reference cases; the limits on the report | OQ part A, OQ-W01 | |
| Taking a fill | an unstable or wrong value | wrong statistics | M | L | stable value only; confirmation outside the limits; UNDO | OQ-W03 | |
| Verdict | a wrong verdict for the run | packs short | H | L | reference cases; every bag on the report | OQ-W04 | |
| Open bags | content is lost before the bag is closed | packs short | M | M | a note that this is not the ℮ control; the lot check of the closed packs | OQ-W07 | |
| Balance | not verified, used for packs sold by quantity | legal risk | H | M | your procedure (the 420 and 710 are not verified) | IQ-W1 | |
| Readings | an unstable value or a wrong zero | wrong density | H | L | taken when stable; waits for the zero | OQ-D01 | |
| Liquid | a wrong water temperature or liquid | small density error | M | M | the liquid density is in the saved result | IQ-D1, OQ-D02 | |
| Handling | bubbles; the item touches the container | wrong density | H | M | warnings; MEASURE AGAIN | OQ-D04, PQ-D1 | |
| Record | kept only in the browser, without user or seal | data integrity | M | M | COPY TABLE into your record | IQ-D2, OQ-D06 | |
| App not open | closed, or the device sleeps | weighings missing on the server | M | M | activity log and sales catch up; one fixed lab computer | IQ-L2, OQ-L02 | |
| Server not reachable | queue full, the oldest events dropped | records missing | M | L | 1000 events wait, sent in order, red bar; the records stay in the UP↑SCALE | OQ-L05 | |
| Transfer | a value differs, or an event comes twice | wrong data in the LIMS | H | L | values of the record as JSON; fixed id | OQ-L03, OQ-L05 | |
| Files | changed on the way | data integrity | M | L | SHA-256 and the seal of the UP↑SCALE | OQ-L04 | |
| Settings | switched off or queue emptied unnoticed | records missing | M | M | a gap in the sequence numbers of the activity log | IQ-L3, OQ-L02 | |
| Wrong device or role | a probe used for the air, two sensors swapped | wrong conditions in a record | H | M | one device per role; the record names the device and its register entry | IQ-S2, OQ-S01 | |
| Stale value | sensor out of range, battery empty | an old value recorded | H | L | freshness limit per role; the app asks to type the value | OQ-S04 | |
| Uncalibrated sensor | certificate missing or due | value not traceable or wrong | H | M | register with due date; overdue = deviation; correction from the certificate | IQ-S1, OQ-S06 | |
| Wrong decoding | a firmware change by the maker of the device | wrong value | H | L | published formats, reference cases SEN-, plausible ranges only; comparison with a reference | OQ-A, PQ-S1 | |
| Register changed unnoticed | a correction or U edited | wrong values in later records | H | L | history of every change, ADMIN / QM only, reason with the strict audit trail, sealed register report | OQ-S07 | |
| Gaps in the room log | app closed, sensor disconnected | room not documented for a period | M | M | the report shows the logged period; a broadcasting sensor for long periods | OQ-S08, PQ-S1 |
The app fills in what it knows from this device and marks it; "by the tester" means: check it and write down what you found.
| ID | Check | Expected | Found | Result | Initials / date |
|---|---|---|---|---|---|
| IQ-01 | App version and code fingerprint | recorded; the same as in the validation run of chapter 8 | 1.01312 · 76598f1485eff4e3b90536ab5e8259fe4c5eb09502d0e7942c84cf2aa5af58ce | met | |
| IQ-02 | Firmware and its fingerprint | recorded; the version you planned to validate | 1.01312 · 128bc3a1e12e90a5815d8da9741da650165334455680cc3b705b402ba9c00938 | met | |
| IQ-03 | Edition and Device ID of the UP↑SCALE | ENTERPRISE & COMPLIANCE on the UP↑SCALE of this pack | ENTERPRISE & COMPLIANCE · E83DC1241BB0 | met | |
| IQ-04 | Balance connected, weighing range and d | the range and d of the balance (its display or data sheet) | Max 120 g · d 10 µg | met | |
| IQ-05 | Identity and calibration certificate of the balance | entered in the certificate data; the certificate is valid | Firmware 1.01312 configuration counter 61 | by the tester | |
| IQ-06 | Users and audit | users with roles; strict audit if your procedure asks for reasons | users with roles | met | |
| IQ-07 | Every person has a user of their own; the user access register is up to date and reviewed | yes (user access register, signed) | by the tester | ||
| IQ-08 | Devices (phones / PCs) that keep records are qualified (clock, storage) | every device in use is qualified | 0 of 0 devices qualified | by the tester | |
| IQ-09 | The seal of the UP↑SCALE checks on the public check page | a sealed report of this UP↑SCALE checks as valid | by the tester | ||
| IQ-10 | Backup: archive of the activity log and the record files on your storage | saved where your procedure says | by the tester | ||
| IQ-P1 | Balance, thermometers, barometer and hygrometer entered with their certificates (lab settings) | all entered | all entered with a certificate | met | |
| IQ-P2 | The uncertainties of the instruments | within ISO 8655-6:2022 table 2 | within ISO 8655-6:2022 table 2 | met | |
| IQ-P3 | The d of the balance for the instruments in the register (pipettes, dispensers, burettes, glassware) | fine enough (ISO 8655-6:2022 table 1; glassware: ISO 4787 table 1) | d 0.0100 mg - fine enough for all 5 instruments (pipettes, dispensers, burettes, glassware) | met | |
| IQ-P4 | Lab settings reviewed: limits table, decision rule, k, reference temperature, water | as your procedure says | ISO 8655-2 - app table (secondary sources) · simple acceptance (|e| ≤ limit) | by the tester | |
| IQ-P5 | CMC table in use (accredited laboratories) | the version of your scope | – | by the tester | |
| IQ-S1 | Every sensor and instrument used for records is in the register with certificate, due date and U (k = 2); none is due | complete | all entered with a certificate | met | |
| IQ-S2 | The roles of the connected sensors are checked (room air, liquid, humidity, air pressure) and the sensors placed next to the balance / in the water | by the tester | by the tester | ||
| IQ-S3 | U of the instruments within ISO 8655-6 table 2 where used for pipettes (air 0.3 °C, liquid 0.2 °C, 5 %RH, 10 hPa) | within | within ISO 8655-6:2022 table 2 | met | |
| IQ-C1 | THINGS of the ingredients with approved codes and label names; lots with use-by dates in the lot store | entered and checked against the containers | by the tester | ||
| IQ-C2 | Formulas approved by a QM; the protection "only approved recipes can run" | as your procedure says | by the tester | ||
| IQ-C3 | At least one QM besides the operators; label printer; storage of the sealed batch records outside the browser | as your procedure says | by the tester | ||
| IQ-R1 | Profile, test weights with certificates, weight tolerance (self-check data), smallest net weight, minimum interval | as your procedure says | by the tester | ||
| IQ-R2 | Minimum weight of the balance (SCALE DATA block) | the value of its certificate or qualification | by the tester | ||
| IQ-R3 | Air buoyancy correction, if used: the air density at the balance and the densities of the THINGS | set; the block shows when and by whom | by the tester | ||
| IQ-W1 | Balance for packs sold by quantity: verified (legal for trade) where your national rules ask for it | balance and its verification recorded | by the tester | ||
| IQ-W2 | Rules, nominal quantities, tolerances, label unit and moisture allowance (HB 133) | as your procedure says | by the tester | ||
| IQ-W3 | The d of the balance (HB 133: at most MAV / 6); bag THINGS and the label setup | checked on a test label | by the tester | ||
| IQ-D1 | Calibrated thermometer; water quality; density of an own liquid; string, container and stand | as your procedure says | by the tester | ||
| IQ-D2 | Where the results are recorded (the browser keeps the last 30, without user) | written in your procedure | by the tester | ||
| IQ-L1 | Receiver: https, token, CORS headers, a 2xx answer, POST size for files; a store where entries are only added | 📡 TEST answers OK | by the tester | ||
| IQ-L2 | One forwarding app only, on a qualified device next to the UP↑SCALE that stays open and connected | named in your procedure | by the tester | ||
| IQ-L3 | Events ticked; the receiver drops doubles and checks the sequence and the chain of the activity log | as your procedure says | by the tester |
The reference cases are worked out by hand from the standards named in each case and computed on this device by the code that judges the results: the cases of the tests and of the pipettes by the firmware of the connected UP↑SCALE, the others by this app. The working of every case is public on up-scales.com/check.
A different app or firmware gives a different fingerprint (chapter 2): run the validation again after every update (chapter 13).
Validation of the calculations on this device, 11/10/2026, 3:41:56 PM: 431 cases passed, 0 failed.
| Area | Cases | Passed | Failed |
|---|---|---|---|
| Scale test suite (OIML R 76-1) | 98 | 98 | 0 |
| Routine check (USP <41>) | 7 | 7 | 0 |
| Air buoyancy (OIML D 28 / R 111) | 8 | 8 | 0 |
| Uniformity of mass (Ph. Eur. 2.9.5) | 7 | 7 | 0 |
| Rounding of money (DIN 1333) | 7 | 7 | 0 |
| Package checks (NIST HB 133) | 29 | 29 | 0 |
| Density mode | 8 | 8 | 0 |
| Fill weighing (℮, HB 133) | 32 | 32 | 0 |
| Pipettes: density, Z, volumes, uncertainty, decision rule | 36 | 36 | 0 |
| Recipes, solutions, compounding: goals, recalculation, state of a row | 16 | 16 | 0 |
| Units (the legal definitions of oz, lb, ozt, gr, tola, dwt, ct) | 11 | 11 | 0 |
| Pipettes: limits (ISO 8655-2) and the lab table | 21 | 21 | 0 |
| Statistics page (also NIST StRD) | 6 | 6 | 0 |
| Pipettes: balance requirements (ISO 8655-6 table 1) | 7 | 7 | 0 |
| Pipettes: deviations from ISO 8655-6 | 7 | 7 | 0 |
| Sensors: decoding the values of other makers' devices (published formats) and their U in the pipette budget | 35 | 35 | 0 |
| Pipettes: CMC and the reported U | 11 | 11 | 0 |
| Glassware: class tolerances (ISO / ASTM), balance, test points and room rules (ISO 4787) | 17 | 17 | 0 |
| Coffee modes: flow rate and recipe maths | 68 | 68 | 0 |
Every case with its expected and calculated value: annex A.
Run each test with the equipment of your laboratory, write down what you observed, mark pass or fail and sign it. Attach the records the test names (printouts, PDFs, screenshots).
Use a test user or a test pipette where a test changes data, and note them in chapter 14.
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-F01 | Weighing data path Put three test weights one after the other on the balance (small, middle, near Max), wait for the stable value and save a record each; then press on the pan (unstable) and save. | Each saved value equals the display of the balance (digits and unit); an unstable reading is not saved as stable. | |||
| OQ-F02 | Audit trail Change a setting that changes the weight or the records (e.g. the minimum weight) and give a reason; open the activity log. | One entry with user, date, time, old and new value and the reason; the chain check of the log shows no gap. | |||
| OQ-F03 | Roles Log in as an OPERATOR and try to change the users, the calibration or a protected setting. | Refused; the refusal is in the activity log. | |||
| OQ-F04 | Lockout Enter a wrong password five times for a test user. | The user is locked; the wrong passwords and the lock are in the log; an ADMIN can unlock. | |||
| OQ-F05 | Electronic signature Sign a saved report with the meaning "reviewed"; try once with a wrong password. | The wrong password is refused; the signature shows name, date, time and meaning, is linked to the report number and is in the activity log. | |||
| OQ-F06 | Seal and integrity Save a report as PDF and check it on the public check page; change one character in the HTML report attached to it and check that copy. | The original checks as valid (seal and integrity code); the changed copy is shown as changed. | |||
| OQ-F07 | Export and archive Export a record file (CSV / JSON) and the archive of the activity log; open them on another device. | Complete and readable; sealed files check as valid. | |||
| OQ-F08 | Time Compare the time of a new log entry with a reference clock; open the device qualification of this device. | Within the tolerance of your procedure; this device is shown as qualified. | |||
| OQ-F09 | Power cut While a record is saved (or a run is going on), cut the power of the UP↑SCALE for 10 s, switch it on and connect again. | No record lost or changed; an interrupted log entry is finished or marked; the chain check passes. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-P01 | Delivery mass with a calibrated weight Start a pipette check (100 µL, 4 deliveries). As each delivery put a calibrated weight of about 100 mg (class E2 or F1) into the vessel; take it out again in between (the UP↑SCALE takes a new vessel reading by itself). | Each single value (mg) on the record equals the conventional mass of the weight within its maximum permissible error plus d. | |||
| OQ-P02 | Z factor Enter water 20.0 °C, air 20.0 °C, 1013 hPa, 50 %RH and run a check. | Z on the record 1.00285 µL/mg (1.0029 in the published tables); the record names the water density used. | |||
| OQ-P03 | Limits and verdict Run a check whose deliveries are inside the limits, then one outside (calibrated weights as in OQ-P01, or a pipette set off by 1 %). | PASS inside, FAIL outside; the record shows the limits and their source. | |||
| OQ-P04 | Implausible value In a run, deliver about half the volume once (or a much smaller weight); choose REDO with a reason. | The UP↑SCALE stops at the value; the discarded value and the reason are on the report and in the activity log. | |||
| OQ-P05 | Evaporation and conditions at the end Run a calibration with the evaporation measurement; enter the conditions at the end. | The evaporation rate is on the report and corrects each delivery; the conditions at the start and the end are on the report. | |||
| OQ-P06 | Balance and deviations Start a calibration of a pipette that needs a finer balance (e.g. 10 µL on a 0.01 mg balance); then one with a room of 25 °C and 4 deliveries. | The first does not start (the app shows the d and the d needed); the second lists the deviations before the start and its report says "based on ISO 8655-6:2022 with deviations". | |||
| OQ-P07 | Uncertainty and CMC Upload a CMC table with a row for 20 - 200 µL; calibrate a 100 µL pipette at 100 µL and at a volume outside the table. | U is never below the CMC (marked "CMC" when raised); the volume outside the table is marked and the accreditation text is left off for it. | |||
| OQ-P08 | Records and due dates Finish a run; open the pipette card, the sealed PDF and the activity log. | The run with all single values is in the register; the next due date moved; the PDF checks as valid; the activity log has the entry. | |||
| OQ-P09 | Import of old data Import a CSV of pipettes from your old system (semicolon, decimal comma); keep the import record. | Every row new, updated, skipped or refused as shown in the preview; the import record names the file and its SHA-256. | |||
| OQ-P10 | Multichannel pipette Run a check of a multichannel pipette with every channel (or a rotating group). | Each channel is a block of its own; the next channel starts by itself (or asks for an OK, lab setting); the report names the channels. | |||
| OQ-P11 | App lost during a run Close the app during a run; open it and connect again. | The run goes on in the UP↑SCALE; the app shows it again; no value is lost. | |||
| OQ-P12 | Glassware to contain Register a 100 mL volumetric flask (class A). Run a check with 2 fills: once fill it on the balance without lifting it, once take it off, fill it and put it back. | Filled on the balance: no value until the flask was lifted or MENISCUS SET was pressed. Lifted and back: the value is taken; after every fill the UP↑SCALE asks to empty and dry the flask and weighs it empty again; the record shows mL, the class tolerance and its source. | |||
| OQ-P13 | Glassware to deliver Run a check of a one-mark pipette (class AS) into a weighing vessel: lift the vessel for each delivery and put it back. | The value is taken when the vessel is back and stable; the waiting time runs as a countdown; the record names the waiting time and the delivery time measured. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-C01 | Master formula and approval Save a test formula with ➕ NEW FORMULA (3 ingredients, a check, an in-process control, a filling step). Try to start a batch; let a QM approve it; change one share and save again. | The batch starts only after the approval, and not after the change (⏳ waiting); the approval is in the activity log. | |||
| OQ-C02 | Lots and identity check Identity check 📷 scan to unlock. Type an expired lot, then a locked one, then valid lots, and ▶ START BATCH. At a weigh step scan a code that is not approved, a GS1 code with another lot, then the right code. | The expired and the locked lot block the start; the wrong codes give wrong container and the step stays locked; the right code opens it; every scan is in the batch record. | |||
| OQ-C03 | Weighing to the goal Batch size 100 g. Press ⚖ OVERTAKE with an ingredient under its goal, weigh another one, come back; press OVERTAKE while the weight moves, then stable on the goal. Open the formula on a second device. | The part under the goal is kept and counts; a moving weight is not taken; the value is taken with user and time; the second device shows the same step and values. | |||
| OQ-C04 | QM release and recalculation Weigh an ingredient 5 % over its goal. 🔏 QM RELEASE: try the logged-in user, a QM with a wrong password, then a QM with password and reason. In another test batch use 🧮 RECALCULATE. | The first two are refused; the release is in the activity log and the batch record with name and reason; the other goals follow its proportion, noted in the batch record. | |||
| OQ-C05 | Checks and in-process controls Answer a check with NO; type pH 6.2 for a control of 5.5 ± 0.3; give the reasons. Then ✕ ABORT BATCH with a reason. | Both are deviations with their reason in the batch record; the check stays open; the aborted record is closed as ABORTED. | |||
| OQ-C06 | Uniformity of mass A filling step of 20 units with fills of known mass: one batch with 2 units outside the limit of the dosage form, a second batch with 3. | Average, units outside the limit and twice the limit agree with a hand calculation (e.g. capsules under 300 mg: 10 %); 2 outside: met; 3 outside: NOT met, and a reason is asked. | |||
| OQ-C07 | Batch record and label ✔ FINISH; make the 📄 PDF (SEALED) and ✍ SIGN it as the operator; the same user tries to sign as QM, then another QM signs; print the 🏷 LABEL; check the PDF on the public check page. | Lots, use-by dates, values, users, releases and deviations are listed; the maker is refused as QM; the PDF checks as valid; the label shows the batch and use by = end + shelf life. | |||
| OQ-C08 | Solution mode 🧪 SOLUTION MODE with 2 rows as parts 1 and 4, total 50 g. ⚖ WEIGH NOW the first row 4 % over its goal and press 🧮; weigh the second; ✔ FINISH; make the PDF. | New goals in the same proportion; a row is green within its ± % or within one d, whichever is wider; FINISH only when every row is green; one line per ingredient in the weighing log; the report lists goal, weight, user and time. | |||
| OQ-C09 | Tolerance narrower than d A test formula with an ingredient of 10 % and a tolerance of 0.2 % on a balance with d 0.1 g. Set the batch size to 1000 g, then to 100 g; at 100 g press ▶ START BATCH, weigh that row 0.08 g over its goal and ✔ FINISH. | At 1000 g (tolerance ± 0.2 g) no warning; at 100 g (± 0.02 g) the warning box names the row with accepted ± 0.1 g and START asks once more; the row is green at +0.08 g; the batch record marks it with a warning line and the accepted band ± 0.1 g. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-R01 | Repeatability (USP <41>) On the ☑ TEST page choose Lab: USP <41>, a test weight of e.g. 100 g and your smallest net weight; START ROUTINE CHECK and load the weight 10 times. | Each value equals the display minus the empty plate; mean, s (at least 0.41 d), 2 s / smallest net weight and 2000 x s agree with a hand calculation; PASS at 0.10 % or less. | |||
| OQ-R02 | Accuracy and a failed check Run Lab: Ph. Eur. 2.1.7 with a second weight of at least 5 % of Max; run it again with the value of that weight typed 0.2 % too high. | First run: the error is judged against 0.05 % (USP: 0.10 %). Second run: FAIL with an error of about -0.2 %. | |||
| OQ-R03 | Failed check on every device After the FAIL open the app on a second device; press REMOVE WARNING as an OPERATOR; then ↻ RE-TEST. | The red bar NOT RELEASED FOR USE shows on both devices; the OPERATOR is refused; the bar goes after the pass; fail and pass are in the activity log. | |||
| OQ-R04 | Check due Try to set the minimum interval as an OPERATOR; set every 4 hours as an ADMIN; wait 4 hours. | The OPERATOR is refused; a yellow bar with START shows on every device until a check passes; the change is logged. | |||
| OQ-R05 | Minimum weight As an ADMIN type 20 g (a test value) in the SCALE DATA block and SUBMIT; save 10 g with ∑ and record it anyway; try a change as an OPERATOR; type the value of the certificate again. | BELOW THE MINIMUM WEIGHT with both values; the record and every change are in the activity log; the OPERATOR is refused. | |||
| OQ-R06 | Records of the checks Make 📄 PDF OF THIS CHECK, PDF REPORT and EXPORT LOG; check the PDFs on the public check page. | Every value, limit, user and verdict; failures with their re-test or removed warning; missed intervals; both PDFs check as valid. | |||
| OQ-R07 | Air buoyancy correction As an ADMIN switch it on with PRESET 0.00120 and SUBMIT; load a THING of density 1.0 g/ml and put 100 g on; then air density from 20 °C, 1013.25 hPa, 50 %. | The reading stays 100 g; 🌬 true mass 100.105 g, factor 1.001051 (shown to one digit more than the balance); air density 0.00120 g/cm³; each change logged with old and new value. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-W01 | Limits of the rules Open 🛍 FILL WEIGHING (ROASTERY or CCLUB MODE). ℮ rules EU with 250 g, 150 g and 40 g; then NIST HB 133 with 454 g (label unit g). | 250 g: TNE 9 g, T1 241 g, T2 232 g; 150 g: TNE 6.8 g, T1 143.2 g, T2 136.4 g; 40 g: TNE 3.6 g, T1 36.4 g, T2 32.8 g; 454 g: MAV 19.9 g, MAV line 434.1 g. | |||
| OQ-W02 | Fill state START FILLING with ℮ 250 g, the green range one TNE, AUTO TARE off; load a tared container to 240, 241, 250, 259 and 260 g. | Orange at 240 g, yellow at 241 g, green at 250 and 259 g, red at 260 g. | |||
| OQ-W03 | Taking a bag Press ✔ TAKE BAG while the weight moves; take a bag of 238 g; press ↶ UNDO. | A moving weight is not taken; the 238 g bag asks first; UNDO removes it from the run and the statistics. | |||
| OQ-W04 | Statistics and verdict A new run (℮, 250 g): 8 bags of 252 g, 1 of 255 g, 1 of 238 g. | Mean 250.9 g, s 4.63 g, total 2509 g, overfill 9 g; 1 bag below T1 = 10 %: too many; none below T2; verdict ✗. | |||
| OQ-W05 | A run that goes on During a run reload the app, take a bag on a second device, cut the power of the UP↑SCALE for 10 s. | Every bag is kept on both devices, none is counted twice. | |||
| OQ-W06 | Report and stock ✔ FINISH; make the print, PDF and CSV; check the PDF on the check page (sealed with ENTERPRISE). | Rule, limits, user, batch, verdict and every bag; the CSV has the same rows; the PDF checks as valid; the stock moved once, no sale booked. | |||
| OQ-W07 | Lot check of closed packs In 📊 STATISTICS & ℮ choose EU ℮ packs, 250 g, lot size 300; weigh 50 closed packs (or HB 133, lot size 200: 12 packs). | Sample plan 50 / 3 / 4 (HB 133: 12, none over the MAV); the verdict follows the three rules; the lot report lists every pack. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-D01 | Readings Start DENSITY MODE with something on the plate; empty it; weigh a 50 g steel weight dry, then hanging in water. | Nothing is taken before the zero; both values are taken when stable and equal the display. | |||
| OQ-D02 | Density of the water Water at 20, 23, 27 and 45 °C: measure and 💾 SAVE each; 📋 COPY TABLE. | Liquid 0.9982, 0.9975, 0.9965 (interpolated) and 0.9922 (the 40 °C value). | |||
| OQ-D03 | Calculation From A (in air), W (displaced) and the liquid density ρ(liq) work out density = A / W x ρ(liq), volume = W / ρ(liq) and u = density x √((d / A)² + (d / W)²); with the air correction on: A / W x (ρ(liq) - ρ(air)) + ρ(air). | The app shows the same to the last digit; with the correction the 🌬 note with the air density. | |||
| OQ-D04 | Warnings Let the item rest on the bottom; then measure an item under 5 g on a 0.1 g balance. | A warning that both weights are almost the same; for the small item the ± % it is good to. | |||
| OQ-D05 | Body of known density Measure a body with a density certificate three times with MEASURE AGAIN. | Within the shown uncertainty plus that of the certificate, or within your limit. | |||
| OQ-D06 | Keeping the result 💾 SAVE, 📋 COPY TABLE; 🏷 SAVE AS THING with SAVE ON THE SCALE; weigh the body with this THING. | The table has name, date, both weights, liquid, density, uncertainty; the volume shown = weight / density. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-L01 | Connection In Settings > 🔗 LIMS / ELN FORWARDING type address and token, press 📡 TEST; again with a wrong token. | The ping arrives with id, device and time, and the app shows OK; with the wrong token the server refuses and the app shows the error. | |||
| OQ-L02 | Activity log Change a setting; close the forwarding app; make two changes on another device; open it again and wait a minute. | Every line arrives once with sequence number, user, text and chain hash; no gap; the chain checks. | |||
| OQ-L03 | Weighings Save three weighings with ∑, one below the minimum weight. | grams, unit, user and time as in the weighing log; below_min_weight: true on that one. | |||
| OQ-L04 | Sealed file Tick the sealed reports with the file itself; make a sealed PDF. | A sealed and a sealed_file event with the same log_seq; the decoded file has the SHA-256 of sha256_file and checks as valid. | |||
| OQ-L05 | Server not reachable Stop the receiver for 10 minutes, make some records, start it again. | The waiting events and the error are shown; then all arrive in their order, every id once. | |||
| OQ-L06 | Finished programs Tick the finished programs with the report as a file; finish a test batch. | A programs event of the kind batch (UPSCALE-BATCH-1) and the report file with its SHA-256, valid on the check page. | |||
| OQ-L07 | Status and validation Run a passed, a failed and a passed routine check; run the validation of the calculations. | routine_check and release events (released, not_released, released); a validation event with every case. |
| ID | Test and steps | Expected result | Observed | Pass / fail | Initials / date |
|---|---|---|---|---|---|
| OQ-S01 | Connect and roles Connect the room sensor and the thermometer in ☰ 📡 SENSORS; change the role of the thermometer to room air and back. | Values show live; one device per role; the roles are kept for the device. | |||
| OQ-S02 | Typed value wins In a pipette setup type the water temperature; connect the thermometer. | The typed value stays and is recorded as typed. | |||
| OQ-S03 | Value from a sensor Empty the field: it fills itself; START a check. | The record and the report name the sensor (and its register entry) for each value. | |||
| OQ-S04 | Stale value Switch the room sensor off and wait 6 minutes; press 📡 next to the air temperature. | The app refuses the old value and asks to type it. | |||
| OQ-S05 | Correction Enter a correction of +0.5 °C for the thermometer; compare the value in the app with the display of the device. | Value used = reading + 0.5 °C; raw value and correction in the record. | |||
| OQ-S06 | Calibration due Set the due date of the room sensor to yesterday; open a pipette calibration setup. | ⚠ in the register and the deviation "calibration was due" in the setup and the report. | |||
| OQ-S07 | Audit trail of the register Change the U of an entry (with the strict audit trail: give a reason), retire another entry, print the register report. | Both changes in the history with user, time, old and new value (and reason); the retired entry is still listed. | |||
| OQ-S08 | Room limits and room log Set the maximum below the room temperature for 5 minutes, then back; open the room log of the day. | One warning, the chip turns red, the events in the log; the minute values in the chart, CSV and report. |
The performance under your conditions, with your balance, your operators and your room. Attach the records.
The final report of the test suite of this balance (repeatability, accuracy, eccentricity and what your procedure asks for) with traceable test weights - the PQ baseline the VSR asks for.
| Report no. | Date | Result | Initials |
|---|---|---|---|
Calibrate a reference pipette that has a recent calibration certificate of an accredited laboratory with this system under your routine conditions, at the volumes of the certificate. En = |V(this system) - V(certificate)| / √(U(this system)² + U(certificate)²); pass: En ≤ 1.
The rows below are pre-filled with the last calibrations in the register (mean and reported U of this system); fill in the certificate values.
Glassware: the same with a volumetric flask or a one-mark pipette that has an individual certificate of an accredited laboratory.
| Pipette | Volume µL | Certificate no. | Certificate mean µL | Certificate U µL | This system mean µL | This system U µL | En | En ≤ 1 |
|---|---|---|---|---|---|---|---|---|
Make three batches of a formula in routine use with your operators, raw materials and room. Pass: every batch record is complete and reviewed by a QM, and the results meet your specification (uniformity of mass, in-process values and, where your procedure asks, the assay).
| Test | Result | Acceptance limit | Pass / fail | Initials / date |
|---|---|---|---|---|
Run the routine check with your profile and weights at the planned interval for a set period (e.g. one month). Pass: the PDF REPORT shows no missed interval, and every failure is followed by a passed re-test or a removed warning with its reason.
| Test | Result | Acceptance limit | Pass / fail | Initials / date |
|---|---|---|---|---|
Fill one lot under routine conditions, then check the closed packs with the lot check on your verified balance. Pass: the lot is accepted, and the mean and the overfill of the run are within your targets.
| Test | Result | Acceptance limit | Pass / fail | Initials / date |
|---|---|---|---|---|
Measure a body of known density and a typical sample five times each, by your operators at your water temperature. Pass: the mean for the body agrees with its certificate, and the spread of both is within your limits.
| Test | Result | Acceptance limit | Pass / fail | Initials / date |
|---|---|---|---|---|
After a set period of routine use (e.g. two weeks), compare your server with the UP↑SCALE and the app: the activity log by sequence number, sealed files by SHA-256, batch records and routine checks by number. Pass: no gap, no double, the same values.
| Test | Result | Acceptance limit | Pass / fail | Initials / date |
|---|---|---|---|---|
At a set interval (e.g. monthly, and after a battery change) read the room sensor and the thermometer next to a calibrated reference instrument and record both values. Pass: the difference stays within the U of the sensor plus the U of the reference. On the days of pipette and glassware calibrations the room log has no gap.
| Test | Result | Acceptance limit | Pass / fail | Initials / date |
|---|---|---|---|---|
What the system brings for each point, and what stays with your procedures. A function of the product is no compliance by itself: compliance comes from the validated system together with your procedures.
| Clause | Requirement | UP↑SCALE | Your procedure |
|---|---|---|---|
| §11.10(a) | Validation | this pack, reference cases, fingerprints | execute, assess, approve |
| §11.10(b) | Accurate and complete copies | PDF and HTML reports, CSV / JSON exports - sealed | - |
| §11.10(c) | Protection and retention of records | records in the UP↑SCALE, sealed files, archive of the activity log | storage and retention period |
| §11.10(d) | Access limited to authorised people | users, roles, passwords | who gets a user |
| §11.10(e) | Audit trail | hash-chained activity log: who, when, what (old / new), why | audit trail review (record in the app) |
| §11.10(e) | Audit trail of the register of sensors and instruments | every change with user, time, old / new value, reason (strict audit); entries retired, never deleted; sealed register report | review with the audit trail |
| §11.10(f) | Operational checks (sequence) | guided steps, e.g. the pipette sequence and the routine check | - |
| §11.10(g) | Authority checks | roles QM, ADMIN, OPERATOR | assignment of the roles |
| §11.10(h) | Device checks | Device ID of the UP↑SCALE, qualification of each phone / PC | qualify the devices |
| §11.10(i) | Training | training dates in the user access register | training |
| §11.10(j) | Accountability policy | - | written policy |
| §11.10(k) | Control of the system documentation | manual, changelog, this pack | document control |
| §11.50 / §11.70 | Signature manifestation and linking | name, date, time, meaning; linked to the number and code of the report | - |
| §11.100 | Uniqueness of signatures | permanent user numbers, never given twice | identity check of the people |
| §11.200 / §11.300 | Signature components, password controls | user and password; lockout after 5 wrong passwords; password age; a password set by an ADMIN is changed at the first login | password policy |
| Annex 11 §4 | Validation | this pack | your validation |
| Annex 11 §5 | Data from other instruments (sensors) | each value with its source: device, register entry, certificate, raw value, correction; age and plausibility checks; a typed value wins | qualify the sensors (chapter 📡 sensors) |
| Annex 11 §7 / §17 | Data storage, archiving | records in the UP↑SCALE, exports, archive of the log | backups and archive |
| Annex 11 §10 | Change management | a firmware change is in the activity log; the VSR asks to confirm the release | change control (chapter 13) |
| Annex 11 §11 | Periodic evaluation | - | periodic review (chapter 13) |
| Annex 11 §12 | Security | users, roles, lockout | IT security |
| Annex 11 §16 | Business continuity | - | plan for a failure of the system |
Product: the UP↑SCALE app (a web app, also as a single file for offline use) and the firmware of the UP↑SCALE, up-scales.com.
Versions: every app and firmware release has a version number. The app computes a code fingerprint (SHA-256) of its calculation code and of the reference cases; the firmware reports the SHA-256 of its build. The same build gives the same fingerprints on every device.
Changes: the changes of each version are in the changelog on up-scales.com; a new firmware build is written into the activity log of the UP↑SCALE ("Firmware changed").
Reference cases: worked out by hand from the named standards; the working of each case is public on up-scales.com/check, so your laboratory can check every expected value.
Known limits: the limits of ISO 8655-2 come from public secondary sources unless your laboratory types its own table; UP↑SCALE makes no claim of certification or compliance and is not affiliated with any standards body or authority.
When to repeat which part of the validation. Record every change in your change control.
| Change | What to do |
|---|---|
| New firmware of the UP↑SCALE (activity log "Firmware changed"; the VSR asks to confirm the release) | IQ-02, OQ part A, the OQ tests touched by the change (changelog) or all, new VSR |
| New app version (a new code fingerprint) | IQ-01, OQ part A, the touched OQ tests, new VSR |
| Balance replaced, repaired, calibrated or adjusted (start the change control yourself - only the UP↑SCALE 420, 710 and HDS count their own calibrations) | IQ-04, IQ-05, PQ-1; pipettes: PQ-P1; new VSR |
| Lab settings of the pipettes changed (limits table, CMC, decision rule, instruments) | IQ-P1 ... IQ-P5, OQ-P03, OQ-P07 as touched |
| New phone or PC | device qualification, IQ-08 |
| Periodic review (e.g. yearly) | audit trail review, user access review, open deviations, the release status in the VSR |
| No. | Test | Deviation | Assessment and action | Closed (date, initials) |
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 |
| Remarks |
|---|
| Role | Name | Date | Signature |
|---|---|---|---|
| Performed by | |||
| Reviewed by | |||
| Approved by (QA) |
The release for use of the UP↑SCALE follows with the Validation Summary Report (VSR) on the TEST page of the app, which takes this pack as its IQ/OQ document.
| Case | Clause | Result | Expected | Calculated |
|---|---|---|---|---|
| T3-01 | R 76-1 Table 3 | ✓ | [II] | [II] |
| T3-02 | R 76-1 Table 3 | ✓ | [II] | [II] |
| T3-03 | R 76-1 Table 3 | ✓ | [III] | [III] |
| T3-04 | R 76-1 Table 3 | ✓ | [III, IIII] | [III, IIII] |
| T3-05 | R 76-1 Table 3 | ✓ | IIII | IIII |
| T3-06 | R 76-1 Table 3 | ✓ | [IIII] | [IIII] |
| T3-07 | R 76-1 Table 3 | ✓ | [I, II] | [I, II] |
| T3-08 | R 76-1 Table 3 | ✓ | [III] | [III] |
| T3-09 | R 76-1 Table 3 | ✓ | [II, III] | [II, III] |
| T3-16 | R 76-1 Table 3 | ✓ | [I, II] | [I, II] |
| T3-10 | R 76-1 Table 3, 3.4.3 | ✓ | 0.1 | 0.1 |
| T3-11 | R 76-1 Table 3, 3.4.3 | ✓ | 0.2 | 0.2 |
| T3-12 | R 76-1 Table 3, 3.4.3 | ✓ | 5 | 5 |
| T3-13 | R 76-1 Table 3, 3.4.3 | ✓ | 20 | 20 |
| T3-14 | R 76-1 Table 3, 3.4.3 | ✓ | 50 | 50 |
| T3-15 | R 76-1 Table 3, 3.4.3 | ✓ | 2 | 2 |
| T6-01 | R 76-1 Table 6 | ✓ | 0.5 | 0.5 |
| T6-02 | R 76-1 Table 6 | ✓ | 1 | 1 |
| T6-03 | R 76-1 Table 6 | ✓ | 1 | 1 |
| T6-04 | R 76-1 Table 6 | ✓ | 1.5 | 1.5 |
| T6-05 | R 76-1 Table 6 | ✓ | 1 | 1 |
| T6-06 | R 76-1 Table 6 | ✓ | 0.5 | 0.5 |
| T6-07 | R 76-1 Table 6 | ✓ | 1 | 1 |
| T6-08 | R 76-1 Table 6 | ✓ | 1.5 | 1.5 |
| T6-09 | R 76-1 Table 6 | ✓ | 0.5 | 0.5 |
| T6-10 | R 76-1 Table 6 | ✓ | 1.5 | 1.5 |
| T6-11 | R 76-1 Table 6 | ✓ | 1 | 1 |
| T6-12 | R 76-1 Table 6 | ✓ | 1.5 | 1.5 |
| T6-13 | R 76-1 Table 6 | ✓ | 10 | 10 |
| LV-01 | R 76-1 3.5.1, 3.5.2 | ✓ | ok | ok |
| LV-02 | R 76-1 3.5.1, 3.5.2 | ✓ | ok | ok |
| LV-03 | R 76-1 3.5.1, 3.5.2 | ✓ | maybe | maybe |
| LV-04 | R 76-1 3.5.1, 3.5.2 | ✓ | warn | warn |
| LV-05 | R 76-1 3.5.1, 3.5.2 | ✓ | bad | bad |
| LV-06 | R 76-1 3.5.1 | ✓ | ok | ok |
| A44-01 | R 76-1 A.4.4.1, Table 3 | ✓ | [5, 300, 500, 2000, 3000] | [5, 300, 500, 2000, 3000] |
| A44-02 | R 76-1 A.4.4.1, Table 3 | ✓ | [5, 300, 500, 600, 750, 1050, 1500, 2000, 2250, 3000] | [5, 300, 500, 600, 750, 1050, 1500, 2000, 2250, 3000] |
| A44-03 | R 76-1 A.4.4.1, Table 3 | ✓ | [20, 300, 500, 2000, 3000] | [20, 300, 500, 2000, 3000] |
| A410-01 | R 76-1 A.4.10 | ✓ | 6 | 6 |
| A410-02 | R 76-1 A.4.10 | ✓ | 3 | 3 |
| A410-03 | R 76-1 A.4.10 | ✓ | 10 | 10 |
| A410-04 | R 76-1 A.4.10 | ✓ | [2400] | [2400] |
| A410-05 | R 76-1 A.4.10 | ✓ | [1500, 3000] | [1500, 3000] |
| A443-01 | R 76-1 A.4.4.3 | ✓ | {err: 1, errD: 0.2, u: 0} | {err: 1, errD: 0.2, u: 0} |
| A443-05 | R 76-1 A.4.4.3 | ✓ | {err: 0.5, errD: 0.1, u: 0} | {err: 0.5, errD: 0.1, u: 0} |
| A443-06 | R 76-1 A.4.4.3, 3.5.3.2 | ✓ | {err: 1, errD: 0.2, u: 0.5} | {err: 1, errD: 0.2, u: 0.5} |
| A443-02 | R 76-1 3.5.3.2 | ✓ | {err: 0.1, errD: 1, u: 0.5} | {err: 0.1, errD: 1, u: 0.5} |
| A443-03 | R 76-1 A.4.1.6 | ✓ | {err: 0.03, errD: 0.3, u: 0.1} | {err: 0.03, errD: 0.3, u: 0.1} |
| A443-04 | R 76-1 3.7.1 | ✓ | {err: 0.1, errD: 1, u: 1.5} | {err: 0.1, errD: 1, u: 1.5} |
| W-01 | R 76-1 A.4.4.1, 3.5.1 | ✓ | {checks: [[0.2, 0.1], [0.6, 0.1], [1.2, 0.1], [0.9, 0.1], [0.3, 0.1], [0.3, 0.2], [0.1, 0.2]], status: meets} | {checks: [[0.2, 0.1], [0.6, 0.1], [1.2, 0.1], [0.9, 0.1], [0.3, 0.1], [0.3, 0.2], [0.1, 0.2]], status: meets} |
| R-01 | R 76-1 3.6.1, A.4.10 | ✓ | {checks: [[1, 0.5], [2, 1]], status: maybe} | {checks: [[1, 0.5], [2, 1]], status: maybe} |
| R-02 | R 76-1 3.6.1, A.4.10 | ✓ | {checks: [[0.5, 0.1], [0.7, 0.2]], status: meets} | {checks: [[0.5, 0.1], [0.7, 0.2]], status: meets} |
| R-03 | R 76-1 3.6.1, 3.5.2 | ✓ | {checks: [[2, 0.1], [3, 0.2]], status: fails} | {checks: [[2, 0.1], [3, 0.2]], status: fails} |
| C-01 | R 76-1 3.9.4.1, 3.9.4.2, A.4.11 | ✓ | {checks: [[0.4, 0.5], [0.1, 0.2], [0.2, 0.5]], status: meets} | {checks: [[0.4, 0.5], [0.1, 0.2], [0.2, 0.5]], status: meets} |
| C-02 | R 76-1 3.9.4.1 | ✓ | {checks: [[0.4, 0.5], [0.3, 0.2], [0.1, 0.5]], status: fails} | {checks: [[0.4, 0.5], [0.3, 0.2], [0.1, 0.5]], status: fails} |
| Z-01 | R 76-1 4.5.2, A.4.2.3.1 | ✓ | {checks: [[0.1, 0.25]], status: meets} | {checks: [[0.1, 0.25]], status: meets} |
| Z-02 | R 76-1 4.5.2 | ✓ | {checks: [[0.3, 0.25]], status: maybe} | {checks: [[0.3, 0.25]], status: maybe} |
| Z-03 | R 76-1 4.5.2 | ✓ | {checks: [[0.5, 0.25]], status: fails} | {checks: [[0.5, 0.25]], status: fails} |
| S-01 | R 76-1 4.4.2, A.4.12 | ✓ | {checks: [[1, 1], [2, 1]], status: fails} | {checks: [[1, 1], [2, 1]], status: fails} |
| D-01 | R 76-1 3.8.2.2, A.4.8.2 | ✓ | {checks: [[0, 0.5], [1, 0.5]], status: fails} | {checks: [[0, 0.5], [1, 0.5]], status: fails} |
| LIN-01 | least squares (EURAMET cg-18 style, R 76 has no linearity limit) | ✓ | {a: 1.0001, maxDev: 0} | {a: 1.0001, maxDev: 0} |
| LIN-02 | least squares | ✓ | {a: 1.5, maxDev: 0.333333} | {a: 1.5, maxDev: 0.333333} |
| ECC-01 | R 76-1 3.6.2, Table 6 (difference to the middle, EURAMET cg-18) | ✓ | {maxD: 0.7, mpe: 1, u: 0.2, level: ok} | {maxD: 0.7, mpe: 1, u: 0.2, level: ok, absD: null, absU: null, absMpe: null, absLevel: null} |
| ECC-02 | R 76-1 3.6.2, Table 6 | ✓ | {maxD: 1, mpe: 1, u: 1, level: maybe} | {maxD: 1, mpe: 1, u: 1, level: maybe, absD: null, absU: null, absMpe: null, absLevel: null} |
| ECC-03 | R 76-1 3.6.2, 3.5.2 | ✓ | {maxD: 2.5, mpe: 1, u: 0.2, level: bad} | {maxD: 2.5, mpe: 1, u: 0.2, level: bad, absD: null, absU: null, absMpe: null, absLevel: null} |
| ECC-04 | R 76-1 3.6.2, A.4.7 (against the true mass) | ✓ | {absD: 0.5, absU: 0.1, absMpe: 1, absLevel: ok} | {maxD: 0.5, mpe: 1, u: 0.2, level: ok, absD: 0.5, absU: 0.1, absMpe: 1, absLevel: ok} |
| ECC-05 | R 76-1 3.6.2, A.4.7, 3.7.1 | ✓ | {absD: 1, absU: 1, absMpe: 1, absLevel: maybe} | {maxD: 1, mpe: 1, u: 1, level: maybe, absD: 1, absU: 1, absMpe: 1, absLevel: maybe} |
| ECC-06 | R 76-1 3.6.2, 3.5.2 | ✓ | {absD: 1.2, absU: 0.1, absMpe: 1, absLevel: warn} | {maxD: 1.2, mpe: 1, u: 0.2, level: maybe, absD: 1.2, absU: 0.1, absMpe: 1, absLevel: warn} |
| ECC-07 | R 76-1 A.4.7 | ✓ | {absD: 0, absLevel: ok} | {maxD: 3, mpe: 1, u: 0.2, level: bad, absD: 0, absU: 0.1, absMpe: 1, absLevel: ok} |
| W111-01 | R 76-1 3.7.1 | ✓ | false | false |
| W111-02 | R 76-1 3.7.1 | ✓ | true | true |
| W111-03 | R 76-1 3.7.1 | ✓ | false | false |
| RT-01 | USP <41> repeatability + accuracy | ✓ | {mean: 100.03, s: 0.048305, minW: 96.609178, checks: [[0.966092, 1], [0, 1]], pass: true} | {mean: 100.03, s: 0.048305, sEff: 0.048305, minW: 96.609178, checks: [[0.966092, 1], [0, 1]], pass: true} |
| RT-02 | USP <41> repeatability (s replaced by 0.41 d) | ✓ | {s: 0, sEff: 0.041, minW: 82, checks: [[0.82, 0.5], [0, 0.5]], pass: false} | {mean: 50, s: 0, sEff: 0.041, minW: 82, checks: [[0.82, 0.5], [0, 0.5]], pass: false} |
| RT-03 | Ph. Eur. 2.1.7 sensitivity | ✓ | {checks: [[0.82, 2], [6, 5]], pass: false} | {mean: 100, s: 0, sEff: 0.041, minW: 82, checks: [[0.82, 2], [6, 5]], pass: false} |
| RT-04 | Routine check, own tolerance (quick profile) | ✓ | {mean: 1005, checks: [[5, 10]], pass: true} | {mean: 1005, s: 1, sEff: 1, minW: 2000, checks: [[5, 10]], pass: true} |
| RT-05 | Routine check, own tolerance (minimum 2 d) | ✓ | {mean: 102.666667, checks: [[2.666667, 2]], pass: false} | {mean: 102.666667, s: 0.57735, sEff: 0.57735, minW: 1154.700538, checks: [[2.666667, 2]], pass: false} |
| RT-06 | R 76-1 3.5.2 (in use = 2 x mpe of Table 6) | ✓ | {checks: [[2, 2], [3, 3]], pass: true} | {mean: 1001, s: 1, sEff: 1, minW: 2000, checks: [[2, 2], [3, 3]], pass: true} |
| DS-01 | R 76-1 Table 3; NIST HB 44 S.1.2.1 (d = 1, 2 or 5 x 10^n) | ✓ | [II, III] | [II, III] |
| DS-02 | R 76-1 Table 3, 3.4.3 | ✓ | 10 | 10 |
| DS-03 | R 76-1 Table 3 | ✓ | [III] | [III] |
| DS-04 | R 76-1 Table 3 | ✓ | [] | [] |
| DS-05 | R 76-1 Table 3 | ✓ | [] | [] |
| MI-01 | R 76-1 3.3 / Table 3 for each partial range (multi-interval; our reading: a class fits when it fits every range) | ✓ | [III] | [III] |
| MI-02 | R 76-1 Table 6 (mpe in e of the partial range of the load) | ✓ | 2.5 | 2.5 |
| MI-03 | R 76-1 Table 6 (mpe in e of the partial range of the load) | ✓ | 1.5 | 1.5 |
| MI-04 | R 76-1 Table 6, the boundary of a partial range | ✓ | 2.5 | 2.5 |
| MI-05 | R 76-1 A.4.4 (error of a reading, rounding d / 2 of the range of the load) | ✓ | {err: 5, errD: 2.5, u: 1.25} | {err: 5, errD: 2.5, u: 1.25} |
| AB-01 | OIML D 28 (conventional mass, reference 8000 kg/m3, air 1.2 kg/m3) - air buoyancy correction | ✓ | 1.001053 | 1.001053 |
| AB-02 | OIML D 28 - air buoyancy correction | ✓ | 1.001372 | 1.001372 |
| AB-03 | OIML D 28 - air buoyancy correction | ✓ | 1 | 1 |
| AB-04 | OIML D 28 - air buoyancy correction | ✓ | 0.999912 | 0.999912 |
| AB-05 | OIML R 111-1:2004 E.3-1 (air density, approximation) | ✓ | 0.001199 | 0.001199 |
| AB-06 | OIML R 111-1:2004 E.3-1 (air density, approximation) | ✓ | 0.001117 | 0.001117 |
| AB-07 | Archimedes with the air term (density mode, readings are conventional masses) | ✓ | {density: 2.695498, volume: 10.008529} | {density: 2.695498, volume: 10.008529} |
| AB-08 | OIML D 28 - true mass of a reading | ✓ | 50.042543 | 50.042543 |
| UM-01 | Ph. Eur. 2.9.5 - capsules, average mass < 300 mg | ✓ | {n: 20, mean: 0.25, limitPct: 10, out1: 2, out2: 0, pass: true} | {n: 20, mean: 0.25, limitPct: 10, out1: 2, out2: 0, pass: true} |
| UM-02 | Ph. Eur. 2.9.5 - more than 2 units outside the limit | ✓ | {n: 20, mean: 0.25, limitPct: 10, out1: 4, out2: 0, pass: false} | {n: 20, mean: 0.25, limitPct: 10, out1: 4, out2: 0, pass: false} |
| UM-03 | Ph. Eur. 2.9.5 - a unit outside twice the limit | ✓ | {n: 20, mean: 0.25, limitPct: 10, out1: 2, out2: 2, pass: false} | {n: 20, mean: 0.25, limitPct: 10, out1: 2, out2: 2, pass: false} |
| UM-04 | Ph. Eur. 2.9.5 - tablets, average mass 250 mg or more | ✓ | {n: 20, mean: 0.3, limitPct: 5, out1: 2, out2: 0, pass: true} | {n: 20, mean: 0.3, limitPct: 5, out1: 2, out2: 0, pass: true} |
| UM-05 | own limit around the target fill (not Ph. Eur.) | ✓ | {n: 4, mean: 10.125, limitPct: 5, out1: 1, out2: 0, pass: false} | {n: 4, mean: 10.125, limitPct: 5, out1: 1, out2: 0, pass: false} |
| UM-06 | Ph. Eur. 2.9.5 - 20 units are needed | ✓ | {n: 10, mean: 0.25, limitPct: 10, out1: 0, out2: 0, pass: false} | {n: 10, mean: 0.25, limitPct: 10, out1: 0, out2: 0, pass: false} |
| UM-07 | Ph. Eur. 2.9.5 - the limits of the table | ✓ | [10, 5, 7.5, null, 5] | [10, 5, 7.5, null, 5] |
| PR-01 | DIN 1333 - commercial rounding to the cent | ✓ | 1.01 | 1.01 |
| PR-02 | DIN 1333 - price x weight | ✓ | 4.52 | 4.52 |
| PR-03 | DIN 1333 - price x weight | ✓ | 1.5 | 1.5 |
| PR-04 | DIN 1333 - price x weight | ✓ | 9.98 | 9.98 |
| PR-05 | DIN 1333 - price x weight | ✓ | 4.52 | 4.52 |
| PR-06 | DIN 1333 - a minus amount | ✓ | -2.68 | -2.68 |
| PR-07 | DIN 1333 - six decimals (Bitcoin) | ✓ | 0.000013 | 0.000013 |
| HB-01 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 12.7 | 12.7 |
| HB-02 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 3.6 | 3.6 |
| HB-03 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 3.59 | 3.59 |
| HB-04 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 3.6 | 3.6 |
| HB-05 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 5.4 | 5.4 |
| HB-06 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 35.3 | 35.3 |
| HB-07 | NIST HB 133-2026 Table 2-5 (g) | ✓ | 600 | 600 |
| HB-08 | NIST HB 133-2026 Table 2-5 (oz) | ✓ | 19.490297 | 19.490297 |
| HB-09 | NIST HB 133-2026 Table 2-5 (lb) | ✓ | 19.958064 | 19.958064 |
| HB-10 | NIST HB 133-2026 Table 2-1 | ✓ | [[1, null, 0], [5, 1.242, 0], [12, 0.635, 0], [24, 0.422, 0], [48, 0.29, 1]] | [[1, null, 0], [5, 1.242, 0], [12, 0.635, 0], [24, 0.422, 0], [48, 0.29, 1]] |
| HB-11 | NIST HB 133-2026 2.3.7 - average within the SEL | ✓ | {n: 12, ume: 0, avgError: -0.5, sel: 0.74152, pass: true} | {n: 12, ume: 0, avgError: -0.5, sel: 0.74152, pass: true} |
| HB-12 | NIST HB 133-2026 2.3.7 - average outside the SEL | ✓ | {n: 12, ume: 0, avgError: -1.333333, sel: 0.988694, pass: false} | {n: 12, ume: 0, avgError: -1.333333, sel: 0.988694, pass: false} |
| HB-13 | NIST HB 133-2026 2.3.7 - unreasonable minus error | ✓ | {n: 12, ume: 1, avgError: 1.666667, pass: false} | {n: 12, ume: 1, avgError: 1.666667, sel: 2.932939, pass: false} |
| HB-14 | NIST HB 133-2026 Table 2-1 - one pack over the MAV allowed (n = 48) | ✓ | {n: 48, ume: 1, avgError: 0.708333, pass: true} | {n: 48, ume: 1, avgError: 0.708333, sel: 0.586011, pass: true} |
| HB-15 | NIST HB 133-2026 2.3.7 - cannabis without the moisture allowance | ✓ | {n: 12, ume: 0, avgError: -0.583333, sel: 0.123587, pass: false} | {n: 12, ume: 0, avgError: -0.583333, sel: 0.123587, pass: false} |
| HB-16 | NIST HB 133-2026 2.3.8.1, Table 2-3 - cannabis, moisture allowance 3 % | ✓ | {n: 12, ume: 0, avgError: 0.256667, pass: true} | {n: 12, ume: 0, avgError: 0.256667, sel: 0.123587, pass: true} |
| HB-17 | NIST HB 133-2026 2.3.8.1 - example flour | ✓ | 27.21 | 27.21 |
| HB-18 | NIST HB 133-2026 Table 2-7 - MAV by count | ✓ | [0, 1, 1, 2, 7, 20, 20, 30] | [0, 1, 1, 2, 7, 20, 20, 30] |
| HB-19 | NIST HB 133-2026 Table 2-11 - low count (50 or fewer) | ✓ | [[5, 1], [12, 1], [24, 2], [48, 3]] | [[5, 1], [12, 1], [24, 2], [48, 3]] |
| HB-20 | NIST HB 133-2026 4.2.1 - example pencils | ✓ | {n: 12, short: 1, defective: 1, pass: true} | {n: 12, short: 1, defective: 1, pass: true} |
| HB-21 | NIST HB 133-2026 4.2.1 - too many short packs | ✓ | {n: 12, short: 2, defective: 0, pass: false} | {n: 12, short: 2, defective: 0, pass: false} |
| HB-22 | NIST HB 133-2026 4.2.2 / 2.3.7 - more than 50 items | ✓ | {n: 12, ume: 0, avgError: -0.166667, sel: 0.247173, pass: true} | {n: 12, ume: 0, avgError: -0.166667, sel: 0.247173, pass: true} |
| HB-23 | NIST HB 133-2026 Table 2-6 - MAV by volume | ✓ | [0.5, 14.7, 29, 300, 14.786765] | [0.5, 14.7, 29, 300, 14.786765] |
| HB-24 | NIST HB 133-2026 3.2 - density of 2 packs | ✓ | {density: 0.944, diff: 2} | {density: 0.944, diff: 2} |
| HB-25 | NIST HB 133-2026 3.2 / 2.3.7 - a lot labeled by volume | ✓ | {n: 12, ume: 0, avgError: -0.833333, sel: 1.235867, pass: true} | {n: 12, ume: 0, avgError: -0.833333, sel: 1.235867, pass: true} |
| HB-26 | NIST HB 133-2026 Table 2-3 - packs to open for the tare | ✓ | [12, 17, 8, 2, 24, 2, 2] | [12, 17, 8, 2, 24, 2, 2] |
| HB-27 | NIST HB 133-2026 2.3.5 - tare sample, few packs | ✓ | {init: 2, total: 2, ratio: 11.5, avg: 12.2, done: true} | {init: 2, total: 2, rc: 4.6, rt: 0.4, ratio: 11.5, avg: 12.2, done: true, need: 0} |
| HB-28 | NIST HB 133-2026 2.3.5 - tare sample, open more | ✓ | {init: 2, total: 12, need: 10, done: false} | {init: 2, total: 12, rc: 0.5, rt: 0.5, ratio: 1, avg: null, done: false, need: 10} |
| HB-29 | NIST HB 133-2026 Table 2-1 col. 5 / 6 - initial tare sample | ✓ | [2, 3, 2, 2, 1] | [2, 3, 2, 2, 1] |
| CAL-01 | R 76-1 A.4.4.3 (rounding of a digital reading), 3.7.1, Table 6 - calibration check | ✓ | {mean: 1000.016667, errD: 0.166667, u: 0.55, mpe: 1, level: ok, verdict: ok} | {mean: 1000.016667, errD: 0.166667, u: 0.55, mpe: 1, level: ok, verdict: ok} |
| CAL-02 | R 76-1 A.4.4.3, Table 6 - calibration check (the rounding does not average out) | ✓ | {mean: 1000.05, errD: 0.5, u: 0.55, mpe: 1, level: maybe, verdict: ok} | {mean: 1000.05, errD: 0.5, u: 0.55, mpe: 1, level: maybe, verdict: ok} |
| CAL-03 | R 76-1 3.7.1 (test weights), A.4.4.3 - calibration check | ✓ | {mean: 1000.016667, errD: 0.166667, u: 1, mpe: 1, level: maybe, verdict: ok} | {mean: 1000.016667, errD: 0.166667, u: 1, mpe: 1, level: maybe, verdict: ok} |
| CAL-04 | R 76-1 A.4.4.3 (readings before rounding), Table 6 - calibration check | ✓ | {mean: 1000.13, errD: 1.3, u: 0.15, mpe: 1, level: warn, verdict: ok} | {mean: 1000.13, errD: 1.3, u: 0.15, mpe: 1, level: warn, verdict: ok} |
| CAL-05 | R 76-1 A.4.4.3, Table 6 - calibration check, own limits | ✓ | {mean: 1003.333333, errD: 3.333333, u: 0.55, mpe: 1, level: bad, verdict: acceptable} | {mean: 1003.333333, errD: 3.333333, u: 0.55, mpe: 1, level: bad, verdict: acceptable} |
| CAL-06 | R 76-1 Table 6 - calibration check, own limits | ✓ | {mean: 1006.333333, errD: 6.333333, u: 0.55, mpe: 1, level: bad, verdict: recalibrate} | {mean: 1006.333333, errD: 6.333333, u: 0.55, mpe: 1, level: bad, verdict: recalibrate} |
| CAL-07 | R 76-1 A.4.4.3, Table 6 (multi-interval: rounding and mpe in the partial range of the load) - calibration check | ✓ | {mean: 10006.666667, errD: 3.333333, u: 1.5, mpe: 2.5, level: maybe, verdict: acceptable} | {mean: 10006.666667, errD: 3.333333, u: 1.5, mpe: 2.5, level: maybe, verdict: acceptable} |
| A443-07 | R 76-1 A.4.4.3 note (multi-interval: ½ e of the range of the load, ½ e1 at the zero) | ✓ | {err: 0.6, errD: 0.3, u: 0} | {err: 0.6, errD: 0.3, u: 0} |
| MI-06 | R 76-1 A.4.4.1, 3.3 (the example of the standard: Max = 2 / 5 / 15 kg, e = 1 / 2 / 10 g) | ✓ | [20, 500, 2000, 4000, 5000, 15000] | [20, 500, 2000, 4000, 5000, 15000] |
| R-04 | R 76-1 3.6.1, 3.7.1 (the same weight: its tolerance is not in the difference) | ✓ | {checks: [[1, 0.62], [2, 1]], status: maybe} | {checks: [[1, 0.62], [2, 1]], status: maybe} |
| W-02 | R 76-1 3.5.1 (up and down each within the mpe; no limit for their difference) | ✓ | {checks: [[0.1, 0.1025], [0.8, 0.11], [0.5, 0.115], [0.8, 0.11], [0.2, 0.1025], [1.6, 0.2], [0.1, 0.2]], status: meets} | {checks: [[0.1, 0.1025], [0.8, 0.11], [0.5, 0.115], [0.8, 0.11], [0.2, 0.1025], [1.6, 0.2], [0.1, 0.2]], status: meets} |
| ECC-08 | R 76-1 3.6, A.4.7 (the error at each measurement, not the mean of the rounds) | ✓ | {maxD: 0.75, u: 0.2, level: ok, absD: 1.2, absU: 0.1, absMpe: 1, absLevel: warn} | {maxD: 0.75, mpe: 1, u: 0.2, level: ok, absD: 1.2, absU: 0.1, absMpe: 1, absLevel: warn} |
| ECC-09 | EURAMET cg-18, R 76-1 3.3 (multi-interval: the rounding in the range of the load) | ✓ | {maxD: 5, mpe: 2.5, u: 2.5, level: maybe} | {maxD: 5, mpe: 2.5, u: 2.5, level: maybe, absD: null, absU: null, absMpe: null, absLevel: null} |
| C-03 | R 76-1 3.9.4.1, 3.9.4.2, 3.3 (multi-interval: e of the load, zero return 0.5 e1) | ✓ | {checks: [[2.5, 1.25], [2.5, 0.5], [0, 0.5]], status: maybe} | {checks: [[2.5, 1.25], [2.5, 0.5], [0, 0.5]], status: maybe} |
| S-02 | R 76-1 4.4.2, A.4.12, 3.3 (multi-interval: e of the load) | ✓ | {checks: [[2.5, 2.5]], status: meets} | {checks: [[2.5, 2.5]], status: meets} |
| D-02 | R 76-1 3.8.2.2, A.4.8.2 (the actual scale interval at the load) | ✓ | {checks: [[0, 1.25]], status: meets} | {checks: [[0, 1.25]], status: meets} |
| RT-07 | USP <41> repeatability (0.41 d with the d at the test weight) | ✓ | {mean: 10000, s: 0, sEff: 2.05, minW: 4100, checks: [[2.05, 2.5], [0, 5]], pass: true} | {mean: 10000, s: 0, sEff: 2.05, minW: 4100, checks: [[2.05, 2.5], [0, 5]], pass: true} |
| DEN-01 | Density mode - water at 20 °C, no air term | ✓ | {liquid: 0.9982, density: 2.69754, volume: 9.997996, u: 0.002882} | {liquid: 0.9982, density: 2.69754, volume: 9.997996, u: 0.002882} |
| DEN-02 | Density mode - water at 23 °C (a row of the table) | ✓ | {liquid: 0.99754, density: 18.855939, volume: 0.822022, u: 0.023027} | {liquid: 0.99754, density: 18.855939, volume: 0.822022, u: 0.023027} |
| DEN-03 | Density mode - water at 27 °C (interpolated between 25 and 30 °C) with the air term | ✓ | {liquid: 0.996484, density: 7.824717, volume: 13.330878, u: 0.005944} | {liquid: 0.996484, density: 7.824717, volume: 13.330878, u: 0.005944} |
| DEN-04 | Density mode - isopropanol (0.786 g/cm³ at 20 °C) with the air term | ✓ | {liquid: 0.786, density: 2.117711, volume: 3.837345, u: 0.00075} | {liquid: 0.786, density: 2.117711, volume: 3.837345, u: 0.00075} |
| DEN-05 | Density mode - own liquid 1.2 g/cm³ | ✓ | {liquid: 1.2, density: 2.678571, volume: 18.666667, u: 0.013103} | {liquid: 1.2, density: 2.678571, volume: 18.666667, u: 0.013103} |
| DEN-06 | Density mode - salt water, temperature unknown | ✓ | {liquid: 1.025, density: 7.1684, volume: 1.083941, u: 0.065236} | {liquid: 1.025, density: 7.1684, volume: 1.083941, u: 0.065236} |
| DEN-07 | Density mode - water above 40 °C: the 40 °C value | ✓ | {liquid: 0.99222, density: 1.98444, volume: 5.039205, u: 0.004437} | {liquid: 0.99222, density: 1.98444, volume: 5.039205, u: 0.004437} |
| DEN-08 | Density mode - own liquid outside 0.5 - 3 g/cm³: not known | ✓ | {liquid: 0, density: null, volume: null, u: null} | {liquid: 0, density: null, volume: null, u: null} |
| FE-01 | 76/211/EEC annex I - 250 g: TNE 9 g, T1 241 g, T2 232 g, max. 2.5 % below T1 | ✓ | {tne: 9, t1: 241, t2: 232, pct: 2.5, nominal: 250} | {tne: 9, t1: 241, t2: 232, pct: 2.5, nominal: 250} |
| FE-02 | 76/211/EEC annex I - 40 g: 9 % = 3.6 g | ✓ | {tne: 3.6, t1: 36.4, t2: 32.8, pct: 2.5, nominal: 40} | {tne: 3.6, t1: 36.4, t2: 32.8, pct: 2.5, nominal: 40} |
| FE-03 | 76/211/EEC annex I - 150 g: 4.5 % = 6.75 g, rounded up to 0.1 g | ✓ | {tne: 6.8, t1: 143.2, t2: 136.4, pct: 2.5, nominal: 150} | {tne: 6.8, t1: 143.2, t2: 136.4, pct: 2.5, nominal: 150} |
| FE-04 | 76/211/EEC annex I - below 5 g: no TNE | ✓ | {tne: null, t1: null, t2: null, pct: 2.5, nominal: null} | {tne: null, t1: null, t2: null, pct: 2.5, nominal: null} |
| FE-05 | 76/211/EEC annex I - 2 kg: 1.5 % = 30 g | ✓ | {tne: 30, t1: 1970, t2: 1940, pct: 2.5, nominal: 2000} | {tne: 30, t1: 1970, t2: 1940, pct: 2.5, nominal: 2000} |
| FE-06 | FPackV § 22 - above 10 kg: no TNE in the German table | ✓ | {tne: null, t1: null, t2: null, pct: 2, nominal: null} | {tne: null, t1: null, t2: null, pct: 2, nominal: null} |
| FE-07 | FPackV § 9 / § 10 (3) - drained weight 500 g: T2 = Qn - 3 TNE, max. 2 % below T1 | ✓ | {tne: 15, t1: 485, t2: 455, pct: 2, nominal: 500} | {tne: 15, t1: 485, t2: 455, pct: 2, nominal: 500} |
| FE-08 | NIST HB 133-2026 Table 2-5 - 454 g labeled in g: MAV 19.9 g | ✓ | {tne: 19.9, t1: 434.1, t2: null, pct: null, nominal: 454} | {tne: 19.9, t1: 434.1, t2: null, pct: null, nominal: 454} |
| FE-09 | NIST HB 133-2026 2.3.8.1 - 907 g flour (3 % moisture), labeled in oz | ✓ | {tne: 31.751466, t1: 848.038534, t2: null, pct: null, nominal: 879.79} | {tne: 31.751466, t1: 848.038534, t2: null, pct: null, nominal: 879.79} |
| FE-10 | NIST HB 133-2026 - own moisture allowance 5 %, labeled in lb | ✓ | {tne: 63.502932, t1: 2091.059068, t2: null, pct: null, nominal: 2154.562} | {tne: 63.502932, t1: 2091.059068, t2: null, pct: null, nominal: 2154.562} |
| FE-11 | 76/211/EEC - 40 fills of 250 g, 1 below T1 (2.5 % of 40 = 1 allowed) | ✓ | {mean: 250.725, belowT1: 1, belowT2: 0, ok: true} | {mean: 250.725, belowT1: 1, belowT2: 0, ok: true} |
| FE-12 | 76/211/EEC - 40 fills, 2 below T1: more than 2.5 % | ✓ | {mean: 251.375, belowT1: 2, belowT2: 0, ok: false} | {mean: 251.375, belowT1: 2, belowT2: 0, ok: false} |
| FE-13 | 76/211/EEC - one fill below T2 | ✓ | {mean: 253.75, belowT1: 1, belowT2: 1, ok: false} | {mean: 253.75, belowT1: 1, belowT2: 1, ok: false} |
| FE-14 | 76/211/EEC - the mean below Qn | ✓ | {mean: 249.5, belowT1: 0, belowT2: 0, ok: false} | {mean: 249.5, belowT1: 0, belowT2: 0, ok: false} |
| FE-15 | FPackV - 50 fills, 1 below T1 = 2 %: allowed | ✓ | {mean: 501.64, belowT1: 1, belowT2: 0, ok: true} | {mean: 501.64, belowT1: 1, belowT2: 0, ok: true} |
| FE-16 | NIST HB 133 - mean below the nominal (no lot: every pack against the MAV) | ✓ | {mean: 453.5, belowT1: 0, belowT2: 0, ok: false} | {mean: 453.5, belowT1: 0, belowT2: 0, ok: false} |
| FE-17 | NIST HB 133 - one pack below Qn - MAV (unreasonable minus error) | ✓ | {mean: 454.166667, belowT1: 1, belowT2: 0, ok: false} | {mean: 454.166667, belowT1: 1, belowT2: 0, ok: false} |
| FS-01 | fill weighing ℮ 250 g, green up to Qn + 9 g: under T1 / low / ok / over | ✓ | [0, 3, 3, 1, 1, 2] | [0, 3, 3, 1, 1, 2] |
| FS-02 | fill weighing ℮ 250 g without an upper limit (over 0) | ✓ | [3, 1, 1] | [3, 1, 1] |
| FS-03 | fill weighing own tolerance 100 g - 2 / + 5 g | ✓ | [0, 1, 1, 2] | [0, 1, 1, 2] |
| FS-04 | filling step Ph. Eur. 2.9.5 capsules 250 mg: ± 10 % around the target | ✓ | [0, 1, 1, 2] | [0, 1, 1, 2] |
| FS-05 | filling step own limit ± 5 % around 10 g | ✓ | [0, 1, 1, 2] | [0, 1, 1, 2] |
| FS-06 | fill weighing US 454 g (MAV 19.9 g): below Qn - MAV is under | ✓ | [0, 3, 3, 1] | [0, 3, 3, 1] |
| FM-01 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 12.7 | 12.7 |
| FM-02 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 3.6 | 3.6 |
| FM-03 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 3.59 | 3.59 |
| FM-04 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 3.6 | 3.6 |
| FM-05 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 5.4 | 5.4 |
| FM-06 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 35.3 | 35.3 |
| FM-07 | NIST HB 133-2026 Table 2-5 (g) - the fill weighing of the UP↑SCALE | ✓ | 600 | 600 |
| FM-08 | NIST HB 133-2026 Table 2-5 (oz) - the fill weighing of the UP↑SCALE | ✓ | 19.490297 | 19.490297 |
| FM-09 | NIST HB 133-2026 Table 2-5 (lb) - the fill weighing of the UP↑SCALE | ✓ | 19.958064 | 19.958064 |
| PIP-01 | Water density - Tanaka 2001, 15 °C, 1013.25 hPa | ✓ | 0.999103 | 0.999103 |
| PIP-02 | Water density - 20 °C, 1013.25 hPa (table 998.2067 kg/m3) | ✓ | 0.998207 | 0.998207 |
| PIP-03 | Water density - 25 °C, 1013.25 hPa | ✓ | 0.997047 | 0.997047 |
| PIP-04 | Water density - 20 °C, 950 hPa (compressibility) | ✓ | 0.998204 | 0.998204 |
| PIP-05 | Air density - OIML R 111-1 E.3-1 (= the simplified CIPM formula, EURAMET cg-19 eq. 4), 20 °C, 1013.25 hPa, 50 %RH | ✓ | 0.001199 | 0.001199 |
| PIP-06 | Air density - 23 °C, 980 hPa, 40 %RH | ✓ | 0.001148 | 0.001148 |
| PIP-07 | Z factor at 20 °C, 1013.25 hPa (published tables: 1.0029 µL/mg) | ✓ | 1.002851 | 1.002851 |
| PIP-08 | Z factor at 15 °C (published table: 1.0020) | ✓ | 1.00197 | 1.00197 |
| PIP-09 | Z factor at 25 °C (published table: 1.0040) | ✓ | 1.004 | 1.004 |
| PIP-10 | Z factor at 30 °C (published table: 1.0054) | ✓ | 1.005392 | 1.005392 |
| PIP-11 | Volumes of 10 deliveries of a 100 µL pipette, no evaporation | ✓ | {mean: 100.036037, es: 0.036037, esp: 0.036037, sr: 0.016071, cv: 0.016066, volumes: [100.027009, 100.050082, 100.012965, 100.056101, 100.037041, 100.024, 100.045066, 100.031022, 100.05911, 100.017981]} | {mean: 100.036037, es: 0.036037, esp: 0.036037, sr: 0.016071, cv: 0.016066, volumes: [100.027009, 100.050082, 100.012965, 100.056101, 100.037041, 100.024, 100.045066, 100.031022, 100.05911, 100.017981]} |
| PIP-12 | The same with an evaporation rate of 0.0005 mg/s (corrected per cycle time) | ✓ | {mean: 100.045422, es: 0.045422, esp: 0.045422, sr: 0.016171, cv: 0.016163, volumes: [100.036238, 100.059662, 100.021943, 100.06553, 100.046821, 100.033128, 100.054445, 100.040552, 100.06844, 100.02746]} | {mean: 100.045422, es: 0.045422, esp: 0.045422, sr: 0.016171, cv: 0.016163, volumes: [100.036238, 100.059662, 100.021943, 100.06553, 100.046821, 100.033128, 100.054445, 100.040552, 100.06844, 100.02746]} |
| PIP-13 | The same with gamma 2.4e-4 /°C at a water temperature of 21.5 °C (volume referred to 20 °C) | ✓ | {mean: 99.999645, es: -0.000355, esp: -0.000355, sr: 0.016066, cv: 0.016066, volumes: [99.99062, 100.013684, 99.976581, 100.019701, 100.000648, 99.987612, 100.00867, 99.994631, 100.022709, 99.981595]} | {mean: 99.999645, es: -0.000355, esp: -0.000355, sr: 0.016066, cv: 0.016066, volumes: [99.99062, 100.013684, 99.976581, 100.019701, 100.000648, 99.987612, 100.00867, 99.994631, 100.022709, 99.981595]} |
| PIP-14 | Quick check: 4 deliveries of 100 µL | ✓ | {mean: 99.99429, es: -0.00571, esp: -0.00571, sr: 0.021664, cv: 0.021665, volumes: [99.99429, 99.974233, 100.024376, 99.984262]} | {mean: 99.99429, es: -0.00571, esp: -0.00571, sr: 0.021664, cv: 0.021665, volumes: [99.99429, 99.974233, 100.024376, 99.984262]} |
| PIP-15 | Uncertainty of the mean volume - 100 µL, d 0.01 mg (ISO/TR 20461 model as rebuilt) | ✓ | {uc: 0.016264, U: 0.032528, uuse: 0.224856, Uuse: 0.449713, contrib: [0.005114, 0.010032, 0.001, 0.010032, 0.001295, 0.005418, 0.002229, 0.00019, 0.000099, 0.000051, 0.000065, 0.000201, 0.000025, 0, 0.016171, 0.200091, 0.100045, 0, 0]} | {uc: 0.016264, U: 0.032528, uuse: 0.224856, Uuse: 0.449713, contrib: [0.005114, 0.010032, 0.001, 0.010032, 0.001295, 0.005418, 0.002229, 0.00019, 0.000099, 0.000051, 0.000065, 0.000201, 0.000025, 0, 0.016171, 0.200091, 0.100045, 0, 0]} |
| PIP-16 | Uncertainty - 10 µL on a micro balance (d 0.001 mg) | ✓ | {uc: 0.004793, U: 0.009586, uuse: 0.023692, Uuse: 0.047385, contrib: [0.00207, 0.002006, 0.0001, 0.002006, 0.000129, 0.00325, 0.000215, 0.000019, 0.00001, 0.000005, 0.000007, 0.00002, 0.000003, 0, 0.006544, 0.019993, 0.009997, 0, 0]} | {uc: 0.004793, U: 0.009586, uuse: 0.023692, Uuse: 0.047385, contrib: [0.00207, 0.002006, 0.0001, 0.002006, 0.000129, 0.00325, 0.000215, 0.000019, 0.00001, 0.000005, 0.000007, 0.00002, 0.000003, 0, 0.006544, 0.019993, 0.009997, 0, 0]} |
| PIP-17 | Uncertainty - 1000 µL on an analytical balance (d 0.1 mg), no evaporation measured | ✓ | {uc: 0.157907, U: 0.315813, uuse: 2.251289, Uuse: 4.502578, contrib: [0.063298, 0.100326, 0.010006, 0.100326, 0.012952, 0, 0.022803, 0.001895, 0.000991, 0.000525, 0.000641, 0.002008, 0.000247, 0, 0.200164, 2.001159, 1.00058, 0, 0]} | {uc: 0.157907, U: 0.315813, uuse: 2.251289, Uuse: 4.502578, contrib: [0.063298, 0.100326, 0.010006, 0.100326, 0.012952, 0, 0.022803, 0.001895, 0.000991, 0.000525, 0.000641, 0.002008, 0.000247, 0, 0.200164, 2.001159, 1.00058, 0, 0]} |
| PIP-18 | Decision rule - simple acceptance, pass | ✓ | {verdict: 1, sys: true, rand: true} | {verdict: 1, sys: true, rand: true} |
| PIP-19 | Decision rule - simple acceptance, random error too big | ✓ | {verdict: 2, sys: true, rand: false} | {verdict: 2, sys: true, rand: false} |
| PIP-20 | Decision rule - guard band, pass | ✓ | {verdict: 1, sys: true, rand: true} | {verdict: 1, sys: true, rand: true} |
| PIP-21 | Decision rule - guard band, inconclusive | ✓ | {verdict: 3, sys: true, rand: true} | {verdict: 3, sys: true, rand: true} |
| PIP-22 | Decision rule - guard band, fail | ✓ | {verdict: 2, sys: false, rand: true} | {verdict: 2, sys: false, rand: true} |
| PIP-23 | Decision rule - one delivery: no random error | ✓ | {verdict: 1, sys: true, rand: true} | {verdict: 1, sys: true, rand: true} |
| PIP-24 | EURAMET cg-19 v4.1 (2025), example 2: 100 mL pycnometer, m 99.7500 g, 18.94 °C, air density 0.0012 g/mL, 1e-5 /°C (published V20 = 100.014 mL) | ✓ | {mean: 100014.182682} | {mean: 100014.182682, es: 14.182682, esp: 0.014183, sr: null, cv: null, volumes: [100014.182682]} |
| PIP-25 | EURAMET cg-19 v4.1 (2025), example 1: 1000 mL flask, m 996.9505 g, 19.11 °C, air density 0.0012 g/mL, 1e-5 /°C (published V20 = 999.628 mL) | ✓ | {mean: 999622.565086} | {mean: 999622.565086, es: -377.434914, esp: -0.037743, sr: null, cv: null, volumes: [999622.565086]} |
| PIP-26 | Water density of air-saturated water - 20 °C, 1013.25 hPa (Tanaka 2001; EURAMET cg-19 eq. 3) | ✓ | 0.998204 | 0.998204 |
| PIP-27 | Z factor with air-saturated water - 20 °C, 1013.25 hPa, 50 %RH | ✓ | 1.002854 | 1.002854 |
| PIP-28 | EURAMET cg-19 v4.1 example 2 (100 mL pycnometer) with air-saturated water | ✓ | {mean: 100014.443882} | {mean: 100014.443882, es: 14.443882, esp: 0.014444, sr: null, cv: null, volumes: [100014.443882]} |
| PIP-29 | A lab with the reference temperature 27 °C: gamma 2.4e-4 /°C, water 26.5 °C - the volume referred to 27 °C | ✓ | {mean: 100.16993, es: 0.16993, esp: 0.16993, sr: 0.016093, cv: 0.016066, volumes: [100.160889, 100.183993, 100.146826, 100.19002, 100.170934, 100.157876, 100.17897, 100.164907, 100.193033, 100.151849]} | {mean: 100.16993, es: 0.16993, esp: 0.16993, sr: 0.016093, cv: 0.016066, volumes: [100.160889, 100.183993, 100.146826, 100.19002, 100.170934, 100.157876, 100.17897, 100.164907, 100.193033, 100.151849]} |
| PIP-30 | Handling of the instrument 0.1 % of the volume in U of the mean volume (EURAMET cg-19 v4.1 6.3.7.2) - otherwise as PIP-15 | ✓ | {uc: 0.101359, U: 0.202718, uuse: 0.246109, Uuse: 0.492217, contrib: [0.005114, 0.010032, 0.001, 0.010032, 0.001295, 0.005418, 0.002229, 0.00019, 0.000099, 0.000051, 0.000065, 0.000201, 0.000025, 0, 0.016171, 0.200091, 0.100045, 0, 0.100045]} | {uc: 0.101359, U: 0.202718, uuse: 0.246109, Uuse: 0.492217, contrib: [0.005114, 0.010032, 0.001, 0.010032, 0.001295, 0.005418, 0.002229, 0.00019, 0.000099, 0.000051, 0.000065, 0.000201, 0.000025, 0, 0.016171, 0.200091, 0.100045, 0, 0.100045]} |
| SOL-01 | Recipe / solution: the goals of the rows from their shares - 200 g, shares 50 / 30 / 20 % | ✓ | {goals: [100, 60, 40], sum: 100} | {goals: [100, 60, 40], sum: 100} |
| SOL-02 | The shares as the app sends them (goal / biggest x 100): 90 g, shares 50 / 100 | ✓ | {goals: [30, 60], sum: 150} | {goals: [30, 60], sum: 150} |
| SOL-03 | A share of exactly 100 % counts in the sum (above 100: a fixed weight, not counted) - 300 g, shares 100 / 50 | ✓ | {goals: [200, 100], sum: 150} | {goals: [200, 100], sum: 150} |
| SOL-04 | Recalculation: the base row (goal 100 g) was taken with 105 g - every goal in the same proportion | ✓ | {goals: [105, 63, 42], total: 210} | {goals: [105, 63, 42], total: 210} |
| SOL-05 | Recalculation from the second row: goal 60 g taken with 57 g | ✓ | {goals: [95, 57, 38], total: 190} | {goals: [95, 57, 38], total: 190} |
| SOL-06 | No recalculation when the base row has nothing weighed | ✓ | {goals: [100, 60, 40], total: 200} | {goals: [100, 60, 40], total: 200} |
| SOL-07 | State of a row - goal 100 g, tolerance 0.5 %, d 0.1 g: 100.4 g | ✓ | {state: ok, w: 100.4} | {state: ok, w: 100.4, tolg: 0.5, band: 0.5, below: false} |
| SOL-08 | The same row with 100.6 g | ✓ | {state: over, w: 100.6} | {state: over, w: 100.6, tolg: 0.5, band: 0.5, below: false} |
| SOL-09 | The same row with 99.4 g | ✓ | {state: under, w: 99.4} | {state: under, w: 99.4, tolg: 0.5, band: 0.5, below: false} |
| SOL-10 | Tolerance 0: a value within 1 d of the goal is ok (100.1 g, d 0.1 g) | ✓ | {state: ok, w: 100.1} | {state: ok, w: 100.1, tolg: 0, band: 0.1, below: false} |
| SOL-11 | Already in the vessel: base 40 g + reading 60.3 g, tolerance 0 | ✓ | {state: over, w: 100.3} | {state: over, w: 100.3, tolg: 0, band: 0.1, below: false} |
| SOL-12 | Air buoyancy correction of the row +1000 ppm: reading 99.95 g, tolerance 0.1 % | ✓ | {state: ok, w: 100.04995} | {state: ok, w: 100.04995, tolg: 0.1, band: 0.1, below: false} |
| SOL-13 | Tolerance narrower than d - goal 10 g, tolerance 0.2 %, d 0.1 g: flagged, accepted within 1 d (10.08 g) | ✓ | {state: ok, w: 10.08, tolg: 0.02, band: 0.1, below: true} | {state: ok, w: 10.08, tolg: 0.02, band: 0.1, below: true} |
| SOL-14 | Tolerance equal to d - goal 10 g, tolerance 1 %, d 0.1 g: not flagged (10.1 g) | ✓ | {state: ok, w: 10.1, tolg: 0.1, band: 0.1, below: false} | {state: ok, w: 10.1, tolg: 0.1, band: 0.1, below: false} |
| SOL-15 | Tolerance wider than d - goal 100 g, tolerance 0.5 %, d 0.1 g: the band is the tolerance (100.4 g) | ✓ | {state: ok, tolg: 0.5, band: 0.5, below: false} | {state: ok, w: 100.4, tolg: 0.5, band: 0.5, below: false} |
| SOL-16 | No tolerance - goal 100 g, d 0.1 g: the band is 1 d, not flagged (100.1 g) | ✓ | {state: ok, tolg: 0, band: 0.1, below: false} | {state: ok, w: 100.1, tolg: 0, band: 0.1, below: false} |
| UNIT-01 | Unit - 100 g in avoirdupois ounces (1 oz = 28.349523125 g) | ✓ | 3.527396 | 3.527396 |
| UNIT-02 | Unit - 1000 g in pounds (1 lb = 453.59237 g, international pound 1959) | ✓ | 2.204623 | 2.204623 |
| UNIT-03 | Unit - 1 troy ounce (31.1034768 g) | ✓ | 1 | 1 |
| UNIT-04 | Unit - 10 kg in grains (1 gr = 64.79891 mg) | ✓ | 154323.583529 | 154323.583529 |
| UNIT-05 | Unit - 10 kg in tola (1 tola = 180 gr = 11.6638038 g) | ✓ | 857.353242 | 857.353242 |
| UNIT-06 | Unit - 1 pennyweight (24 gr = 1.55517384 g) | ✓ | 1 | 1 |
| UNIT-07 | Unit - 1 g in metric carats (1 ct = 0.2 g) | ✓ | 5 | 5 |
| UNIT-08 | Unit - 3.5 g in eighths (the eighth of the shops: 3.5 g - not 1/8 oz) | ✓ | 1 | 1 |
| UNIT-09 | Unit - 2500 g in kg | ✓ | 2.5 | 2.5 |
| UNIT-10 | Unit - 12.5 mg as mg | ✓ | 12.5 | 12.5 |
| MPE-01 | ISO 8655-2:2022 (secondary sources) - 100 µL single-channel at the nominal volume | ✓ | {sys: 0.8, rand: 0.3} | {sys: 0.8, rand: 0.3} |
| MPE-02 | Multichannel 1000 µL x 8: the default of the app, two times the single-channel limits (the rule of ISO 8655-2:2002) | ✓ | {sys: 16, rand: 6} | {sys: 16, rand: 6} |
| MPE-03 | A nominal volume between the rows (300 µL): the % of the next bigger row (500 µL) | ✓ | {sys: 2.4, rand: 0.9} | {sys: 2.4, rand: 0.9} |
| MPE-04 | 10 µL single-channel | ✓ | {sys: 0.12, rand: 0.08} | {sys: 0.12, rand: 0.08} |
| MPE-05 | Test volumes of a calibration: nominal, 50 %, max(10 %, lower limit) - 100-1000 µL | ✓ | [1000, 500, 100] | [1000, 500, 100] |
| MPE-06 | Test volumes - 0.5-10 µL (10 % above the lower limit) | ✓ | [10, 5, 1] | [10, 5, 1] |
| MPE-07 | Test volumes - a fixed-volume pipette | ✓ | [200] | [200] |
| MPE-08 | Lab table with multichannel columns - 100 µL x 8 | ✓ | {sys: 1.5, rand: 0.6} | {sys: 1.5, rand: 0.6} |
| MPE-09 | The same table - a single-channel 100 µL pipette | ✓ | {sys: 0.8, rand: 0.3} | {sys: 0.8, rand: 0.3} |
| MPE-10 | Lab table - 150 µL x 8 between the rows 100 and 200 µL | ✓ | {sys: 2.25, rand: 0.9} | {sys: 2.25, rand: 0.9} |
| MPE-11 | Lab limits at one test volume - 100 µL pipette at 10 µL | ✓ | {sys: 0.25, rand: 0.15} | {sys: 0.25, rand: 0.15} |
| MPE-12 | The same line for 100 µL x 8 without multichannel columns | ✓ | {sys: 0.5, rand: 0.3} | {sys: 0.5, rand: 0.3} |
| MPE-13 | A test volume without its own line - the line of the nominal volume | ✓ | {sys: 0.8, rand: 0.3} | {sys: 0.8, rand: 0.3} |
| MPE-14 | Piston burette, motor-driven, 25 mL at the nominal volume (ISO 8655-3:2022 table 1: 0.20 % / 0.070 %) | ✓ | {sys: 50, rand: 17.5} | {sys: 50, rand: 17.5} |
| MPE-15 | The same burette at 10 % (2.5 mL): the 10 % column of table 1 (2.0 % / 0.70 %) | ✓ | {sys: 50, rand: 17.5} | {sys: 50, rand: 17.5} |
| MPE-16 | Motor-driven burette 50 mL at 50 % (25 mL): the 50 % column (0.40 % / 0.10 %) | ✓ | {sys: 100, rand: 25} | {sys: 100, rand: 25} |
| MPE-17 | Motor-driven burette 1 mL at 10 % (0.1 mL): the row up to 1 mL (6.0 % / 1.0 % at 10 %) | ✓ | {sys: 6, rand: 1} | {sys: 6, rand: 1} |
| MPE-18 | Piston burette, manual, 25 mL (maker procedure: 0.2 % / 0.1 %) | ✓ | {sys: 50, rand: 25} | {sys: 50, rand: 25} |
| MPE-19 | Bottle-top dispenser 10 mL at 10 % (1 mL): 6.0 % / 2.0 % (maker procedure, ISO 8655-5:2022) | ✓ | {sys: 60, rand: 20} | {sys: 60, rand: 20} |
| MPE-20 | Repeating dispenser: no default limits (maker or own limits needed) | ✓ | {sys: null, rand: null} | {sys: null, rand: null} |
| LIM-01 | The limits table as typed in the lab settings (decimal comma, a line for a test volume, two bad lines) | ✓ | {rows: [[100, 0.8, 0.3, 1.5, 0.6]], vrows: [[100, 10, 0.25, 0.15]], bad: [3, 4]} | {rows: [[100, 0.8, 0.3, 1.5, 0.6]], vrows: [[100, 10, 0.25, 0.15]], bad: [3, 4]} |
| WU-01 | The unit table of the app: g per unit = the legal definitions, gram -> unit = 1 / (g per unit) | ✓ | [[1, 1], [28.349523, 0.035274], [3.5, 0.285714], [453.59237, 0.002205], [31.103477, 0.032151], [0.2, 5], [0.064799, 15.432358], [11.663804, 0.085735], [1.555174, 0.643015], [420, 0.002381], [1000, 0.001], [0.001, 1000], [0.000001, 1000000], [1000000, 0.000001]] | [[1, 1], [28.349523, 0.035274], [3.5, 0.285714], [453.59237, 0.002205], [31.103477, 0.032151], [0.2, 5], [0.064799, 15.432358], [11.663804, 0.085735], [1.555174, 0.643015], [420, 0.002381], [1000, 0.001], [0.001, 1000], [0.000001, 1000000], [1000000, 0.000001]] |
| ST-01 | Statistics page - 10, 12, 14 g | ✓ | {n: 3, mean: 12, min: 10, max: 14, range: 4, sd: 2, cv: 16.666667} | {n: 3, mean: 12, min: 10, max: 14, range: 4, sd: 2, cv: 16.666667} |
| ST-02 | Statistics page with limits: setpoint 10 g, perfect +/- 1 %, ok +/- 5 % - 9.8, 10.0, 10.2, 10.4 g | ✓ | {mean: 10.1, range: 0.6, sd: 0.258199, cv: 2.556425, perfect: 25, ok: 75, out: 0, cp: 0.645497, cpk: 0.516398} | {n: 4, mean: 10.1, min: 9.8, max: 10.4, range: 0.6, sd: 0.258199, cv: 2.556425, perfect: 25, ok: 75, out: 0, cp: 0.645497, cpk: 0.516398} |
| ST-03 | NIST StRD univariate data set NumAcc1 (10000001, 10000003, 10000002): certified mean 10000002, standard deviation 1 | ✓ | {n: 3, mean: 10000002, sd: 1} | {n: 3, mean: 10000002, min: 10000001, max: 10000003, range: 2, sd: 1, cv: 0.00001} |
| ST-04 | A large offset after the design of NIST StRD NumAcc3: 1000000.2 and 50 pairs 1000000.1 / 1000000.3 (101 values) | ✓ | {n: 101, mean: 1000000.2, sd: 0.1, min: 1000000.1, max: 1000000.3} | {n: 101, mean: 1000000.2, min: 1000000.1, max: 1000000.3, range: 0.2, sd: 0.1, cv: 0.00001} |
| ST-05 | One value: no standard deviation | ✓ | {n: 1, mean: 5, sd: 0, cv: 0, range: 0} | {n: 1, mean: 5, min: 5, max: 5, range: 0, sd: 0, cv: 0} |
| ST-06 | The limits of the statistics from % of a setpoint: 200 g, perfect -1 % / +2 %, ok +/- 5 % | ✓ | {perfect: [198, 204], ok: [190, 210]} | {perfect: [198, 204], ok: [190, 210]} |
| BAL-01 | ISO 8655-6:2022 balance - 10 µL: d 0.001 mg, s 0.006 mg, U in use 0.012 mg | ✓ | {d: 0.001, s: 0.006, u: 0.012} | {d: 0.001, s: 0.006, u: 0.012} |
| BAL-02 | ISO 8655-6:2022 table 1 - 100 µL: d 0.01 mg, s 0.025 mg, U in use 0.05 mg | ✓ | {d: 0.01, s: 0.025, u: 0.05} | {d: 0.01, s: 0.025, u: 0.05} |
| BAL-03 | 1000 µL x 8 on a single-channel balance: repeatability and uncertainty x 2 (table 1, footnote a) | ✓ | {d: 0.1, s: 0.4, u: 0.8} | {d: 0.1, s: 0.4, u: 0.8} |
| BAL-04 | 20 µL: the second row starts at 20 µL | ✓ | {d: 0.01, s: 0.025, u: 0.05} | {d: 0.01, s: 0.025, u: 0.05} |
| BAL-05 | 0.5 µL single-channel: below 2 µL the U in use must stay below 1/4 of the max. systematic error (table 1, footnote e) | ✓ | {d: 0.001, s: 0.006, u: 0.00625} | {d: 0.001, s: 0.006, u: 0.00625} |
| BAL-06 | 10 mL: the row 200 µL - 10 mL includes 10 mL | ✓ | {d: 0.1, s: 0.2, u: 0.4} | {d: 0.1, s: 0.2, u: 0.4} |
| BAL-07 | 1 µL x 8 on a single-channel balance: footnote e is for single-channel pipettes, footnote a doubles | ✓ | {d: 0.001, s: 0.012, u: 0.024} | {d: 0.001, s: 0.012, u: 0.024} |
| DEV-01 | ISO 8655-6:2022 clause 4 - a calibration with no deviation the app can see (100 µL, 10-100 µL) | ✓ | [] | [] |
| DEV-02 | 8.1.1 / 8.1.2 - only the nominal volume of an adjustable pipette and 4 deliveries | ✓ | [volumes, n] | [volumes, n] |
| DEV-03 | 6 / 7.2 - room 24.0 °C, 40 %RH, water 23.0 °C (start) | ✓ | [room_t, room_rh, water_air] | [room_t, room_rh, water_air] |
| DEV-04 | 7.2 - reference temperature 27 °C, humidity not entered, the room 26.0 -> 26.8 °C | ✓ | [rh_none, room_change] | [rh_none, room_change] |
| DEV-05 | 5.5 table 2 - air thermometer u 0.5 °C, hygrometer u 5 %RH (k = 1) | ✓ | [inst_ta, inst_rh] | [inst_ta, inst_rh] |
| DEV-06 | Air temperature left empty, a fixed 200 µL pipette, stopped early | ✓ | [ta_none, stopped] | [ta_none, stopped] |
| DEV-07 | 5.1 - the room thermometer of the run was due for calibration (register of the sensors) | ✓ | [inst_due] | [inst_due] |
| SEN-01 | RuuviTag data format 5 - the valid test vector of the maker | ✓ | {t: 24.3, rh: 53.49, pa: 1000.44} | {t: 24.3, rh: 53.49, pa: 1000.44} |
| SEN-02 | RuuviTag data format 5 - the maximum test vector | ✓ | {t: 163.835, rh: 163.835, pa: 1155.34} | {t: 163.835, rh: 163.835, pa: 1155.34} |
| SEN-03 | RuuviTag data format 5 - the minimum test vector | ✓ | {t: -163.835, rh: 0, pa: 500} | {t: -163.835, rh: 0, pa: 500} |
| SEN-04 | RuuviTag data format 5 - the invalid test vector gives no value | ✓ | {t: null, rh: null, pa: null} | {t: null, rh: null, pa: null} |
| SEN-05 | Health Thermometer 0x2A1C - IEEE-11073 FLOAT 36.5 °C | ✓ | {t: 36.5, rh: null, pa: null} | {t: 36.5, rh: null, pa: null} |
| SEN-06 | Health Thermometer 0x2A1C - in °F (flag bit 0) | ✓ | {t: 37, rh: null, pa: null} | {t: 37, rh: null, pa: null} |
| SEN-07 | Health Thermometer 0x2A1C - NaN gives no value | ✓ | – | – |
| SEN-08 | Health Thermometer 0x2A1C - a negative mantissa | ✓ | {t: -5.25, rh: null, pa: null} | {t: -5.25, rh: null, pa: null} |
| SEN-09 | Environmental Sensing 0x2A6E temperature (sint16, 0.01 °C) | ✓ | {t: 21.38, rh: null, pa: null} | {t: 21.38, rh: null, pa: null} |
| SEN-10 | Environmental Sensing 0x2A6F humidity (uint16, 0.01 %) | ✓ | {t: null, rh: 45, pa: null} | {t: null, rh: 45, pa: null} |
| SEN-11 | Environmental Sensing 0x2A6D pressure (uint32, 0.1 Pa) | ✓ | {t: null, rh: null, pa: 1013.25} | {t: null, rh: null, pa: 1013.25} |
| SEN-12 | Xiaomi LYWSD03MMC (its own firmware) - int16 LE 0.01 °C, %, mV | ✓ | {t: 18.67, rh: 61, pa: null} | {t: 18.67, rh: 61, pa: null} |
| SEN-13 | Nordic Thingy:52 temperature - int8 + hundredths, below zero | ✓ | {t: -5.5, rh: null, pa: null} | {t: -5.5, rh: null, pa: null} |
| SEN-14 | Nordic Thingy:52 pressure - int32 LE + hundredths (hPa) | ✓ | {t: null, rh: null, pa: 1013.25} | {t: null, rh: null, pa: 1013.25} |
| SEN-15 | Aranet4 current readings (13 bytes) | ✓ | {t: 21.5, rh: 45, pa: 1013.2} | {t: 21.5, rh: 45, pa: 1013.2} |
| SEN-16 | BTHome v2 - the example of the format: 40 02 CA 09 03 BF 13 | ✓ | {t: 25.06, rh: 50.55, pa: null} | {t: 25.06, rh: 50.55, pa: null} |
| SEN-17 | BTHome v2 - packet id, battery, a negative temperature, pressure (uint24, 0.01 hPa) | ✓ | {t: -5.5, rh: 50.55, pa: 1013.25} | {t: -5.5, rh: 50.55, pa: 1013.25} |
| SEN-18 | BTHome v2 - an encrypted packet is not read | ✓ | – | – |
| SEN-19 | pvvx custom format (service data 0x181A, 15 bytes) | ✓ | {t: 21.37, rh: 45.1, pa: null} | {t: 21.37, rh: 45.1, pa: null} |
| SEN-20 | Govee H5075 family (maker 0xEC88) - packed value | ✓ | {t: 21.8, rh: 44.4, pa: null} | {t: 21.8, rh: 44.4, pa: null} |
| SEN-21 | Govee H5075 family - below zero (bit 23) | ✓ | {t: -3.2, rh: 61.5, pa: null} | {t: -3.2, rh: 61.5, pa: null} |
| SEN-22 | A serial sensor line (Vaisala style): T= 21.3 'C RH= 45.2 %RH P= 1013.2 hPa | ✓ | {t: 21.3, rh: 45.2, pa: 1013.2} | {t: 21.3, rh: 45.2, pa: 1013.2} |
| SEN-23 | A serial sensor line in °F and inHg | ✓ | {t: 22, rh: null, pa: 1013.207888} | {t: 22, rh: null, pa: 1013.207888} |
| SEN-24 | Pipette budget: an instrument with U 0.4 °C (k = 2), the lab 0.1 °C - the bigger standard uncertainty is used | ✓ | 0.2 | 0.2 |
| SEN-25 | Pipette budget: an instrument with U 0.2 °C, the lab 0.15 °C | ✓ | 0.15 | 0.15 |
| SEN-26 | Pipette budget: a value without an instrument of the register | ✓ | 0.1 | 0.1 |
| SEN-27 | Modbus RTU read request with its CRC-16/MODBUS: device 1, function 03, register 0, 10 registers | ✓ | 01030000000AC5CD | 01030000000AC5CD |
| SEN-28 | Modbus float32, the low word first (Vaisala HMP110: 0x0000 relative humidity, 0x0002 temperature) | ✓ | 21.5 | 21.5 |
| SEN-29 | Modbus float32, the high word first | ✓ | 21.5 | 21.5 |
| SEN-30 | Modbus int16 below zero (function 04) | ✓ | -200 | -200 |
| SEN-31 | Modbus uint32 | ✓ | 100000 | 100000 |
| SEN-32 | Modbus frame with a wrong CRC gives no value | ✓ | – | – |
| SEN-33 | JSON paths of the HTTP and MQTT sources | ✓ | [21.4, 45.5, 22.1, null] | [21.4, 45.5, 22.1, null] |
| SEN-34 | MQTT 3.1.1: the remaining length (2.2.3) and topic filters with + and # (4.7) | ✓ | [[0], [127], [128, 1], [193, 2], [255, 127]] | [[0], [127], [128, 1], [193, 2], [255, 127]] |
| SEN-35 | MQTT topic filters | ✓ | [true, true, false, true] | [true, true, false, true] |
| CMC-01 | CMC lookup - an absolute row (10-100 µL: 0.1 µL) | ✓ | 0.1 | 0.1 |
| CMC-02 | CMC lookup - a relative row (100-1000 µL: 0.2 %) | ✓ | 1 | 1 |
| CMC-03 | CMC lookup - a + b x V (1-10 µL: 0.05 + 0.001 V) | ✓ | 0.055 | 0.055 |
| CMC-04 | CMC lookup - two rows meet at 100 µL: the bigger CMC | ✓ | 0.2 | 0.2 |
| CMC-05 | CMC lookup - outside the scope (no row for 20 mL air displacement) | ✓ | – | – |
| CMC-06 | CMC lookup - a row for positive displacement only does not cover an air displacement pipette | ✓ | – | – |
| CMC-07 | ILAC P14 - the reported U is never smaller than the CMC (raised) | ✓ | {U: 0.1, raised: true, outside: false} | {U: 0.1, raised: true, outside: false} |
| CMC-08 | ILAC P14 - U bigger than the CMC stays | ✓ | {U: 0.2, raised: false, outside: false} | {U: 0.2, raised: false, outside: false} |
| CMC-09 | ILAC P14 - no CMC: outside the scope, U as calculated | ✓ | {U: 0.2, raised: false, outside: true} | {U: 0.2, raised: false, outside: true} |
| CMC-10 | CMC of a burette: only the burette row (5 mL: 0.1 % = 5 µL; the pipette row is not used) | ✓ | 5 | 5 |
| CMC-11 | CMC of a pipette (air displacement): only the pipette row, never a burette row | ✓ | 15 | 15 |
| PIP-31 | Glassware: setting the meniscus at a ring mark, u = u_p x π/4 x ز (EURAMET cg-19 v4.1 6.3.7.1) - neck Ø 12 mm, u_p 0.025 mm | ✓ | 2.827433 | 2.827433 |
| PIP-32 | Glassware: reading a graduated item once (cylinder), triangular over half the reading step: u = r / (2√6) - reading resolution r = 1 mL | ✓ | 204.124145 | 204.124145 |
| PIP-33 | Glassware: reading a graduated item twice (burette: zero and the mark): √2 x r / (2√6) - reading resolution r = 0.1 mL | ✓ | 28.867513 | 28.867513 |
| PIP-34 | Glassware: no meniscus method - no component | ✓ | 0 | 0 |
| PIP-35 | Glassware: uncertainty of a 100 mL volumetric flask (to contain, 10 fills, borosilicate 3.3 γ 9.9e-6 /°C at the water temperature against 20 °C, u(γ) = 5 %/√3, the meniscus of a 13 mm neck in U as component 20) | ✓ | {uc: 4.043739, U: 8.087478, uuse: 4.690016, Uuse: 9.380032, contrib: [0.791828, 0.200629, 0.200048, 0.200629, 0.012951, 0, 2.129349, 0.037976, 0.099152, 0.025627, 0.064631, 0.20071, 0.024907, 0.042879, 2.503979, 0, 0, 0, 0, 3.318307]} | {uc: 4.043739, U: 8.087478, uuse: 4.690016, Uuse: 9.380032, contrib: [0.791828, 0.200629, 0.200048, 0.200629, 0.012951, 0, 2.129349, 0.037976, 0.099152, 0.025627, 0.064631, 0.20071, 0.024907, 0.042879, 2.503979, 0, 0, 0, 0, 3.318307]} |
| PIP-36 | Glassware: soda-lime glass (γ 27e-6 /°C, ISO 4787) referred to 27 °C, the item at the water temperature 25.4 °C | ✓ | {mean: 100123.998696, es: 123.998696, esp: 0.123999, sr: 2.115835, cv: 0.002113, volumes: [100124.199522, 100121.789608, 100126.006958]} | {mean: 100123.998696, es: 123.998696, esp: 0.123999, sr: 2.115835, cv: 0.002113, volumes: [100124.199522, 100121.789608, 100126.006958]} |
| GLS-01 | Glassware: ISO 1042 volumetric flask 100 mL class A (secondary sources) | ✓ | {sys: 100, rand: 0, std: ISO 1042} | {sys: 100, rand: 0, std: ISO 1042} |
| GLS-02 | Glassware: ASTM E288 / USP <31> volumetric flask 100 mL class A | ✓ | {sys: 80, rand: 0, std: ASTM E288} | {sys: 80, rand: 0, std: ASTM E288} |
| GLS-03 | Glassware: class B = 2 x class A (ISO 1042 flask 250 mL) | ✓ | {sys: 300, rand: 0, std: ISO 1042} | {sys: 300, rand: 0, std: ISO 1042} |
| GLS-04 | Glassware: ISO 648 one-mark pipette 25 mL class AS (= class A) | ✓ | {sys: 30, rand: 0, std: ISO 648} | {sys: 30, rand: 0, std: ISO 648} |
| GLS-05 | Glassware: ASTM E1272 graduated cylinder 100 mL class A | ✓ | {sys: 500, rand: 0, std: ASTM E1272} | {sys: 500, rand: 0, std: ASTM E1272} |
| GLS-06 | Glassware: ISO 385 burette 50 mL class A (the same tolerance at every point) | ✓ | {sys: 50, rand: 0, std: ISO 385} | {sys: 50, rand: 0, std: ISO 385} |
| GLS-07 | Glassware: a size not in the table (150 mL flask) has no default tolerance | ✓ | {sys: null, rand: 0, std: ISO 1042} | {sys: null, rand: 0, std: ISO 1042} |
| GLS-08 | Glassware: an item without an accuracy class has no default tolerance | ✓ | {sys: null, rand: 0, std: ISO 1042} | {sys: null, rand: 0, std: ISO 1042} |
| GLS-09 | Glassware: the balance of ISO 4787 table 1 for 10 mL (ISO/DIS 4787 sample) | ✓ | {d: 0.1, s: 0.2, u: 0.4} | {d: 0.1, s: 0.2, u: 0.4} |
| GLS-10 | Glassware: the balance of ISO 4787 table 1 for 100 mL | ✓ | {d: 1, s: 2, u: 4} | {d: 1, s: 2, u: 4} |
| GLS-11 | Glassware: the balance of ISO 4787 table 1 for 2000 mL | ✓ | {d: 10, s: 10, u: 40} | {d: 10, s: 10, u: 40} |
| GLS-12 | Glassware: the default test points of a 50 mL glass burette (100 / 80 / 60 / 40 / 20 %) | ✓ | [50000, 40000, 30000, 20000, 10000] | [50000, 40000, 30000, 20000, 10000] |
| GLS-13 | Glassware: the default test points of a 100 mL measuring cylinder (100 / 50 / 20 %) | ✓ | [100000, 50000, 20000] | [100000, 50000, 20000] |
| GLS-14 | Glassware: a one-mark item has one test point, its nominal capacity | ✓ | [100000] | [100000] |
| GLS-15 | Glassware, ISO 4787 room rules: RH 40 % and a change of 0.8 °C are allowed (they are not for pipettes); a calibration without the meniscus is listed | ✓ | [men_none] | [men_none] |
| GLS-16 | Glassware, ISO 4787 room rules: air thermometer U 0.3 °C (> 0.2), RH 30 / 33 % (< 35), water 1.4 °C from the air at the end, the room changed 1.2 °C (> 1) | ✓ | [inst_ta, room_rh, room_rh, water_air, room_change] | [inst_ta, room_rh, room_rh, water_air, room_change] |
| GLS-17 | The instrument of an imported row from its words (glassware and piston instruments) | ✓ | [flask, cylinder, vpipette, gpipette, gburette, burette, pipette] | [flask, cylinder, vpipette, gpipette, gburette, burette, pipette] |
| COF-01 | Coffee: the flow rate of the scale - least squares over 1 s of the samples (here 2 g/s, a sample every 25 ms) | ✓ | {slope: 2, span: 1, used: 41} | {slope: 2, span: 1, used: 41} |
| COF-02 | Coffee: a drop hitting the cup (+0.8 g in one sample) is left out - the flow stays 2 g/s | ✓ | {slope: 2, span: 1, used: 40} | {slope: 2, span: 1, used: 40} |
| COF-03 | Coffee / factory cut-off: the fast flow - the last 16 samples, no trimming | ✓ | {slope: 2, span: 0.375, used: 16} | {slope: 2, span: 0.375, used: 16} |
| COF-04 | Coffee: a slow scale (a weight every 250 ms) - the 1 s window takes at least 6 samples | ✓ | {slope: 3, span: 1.25, used: 6} | {slope: 3, span: 1.25, used: 6} |
| COF-05 | Espresso: the yield of the recipe = dose x ratio (drink : coffee) | ✓ | 36 | 36 |
| COF-06 | Espresso: no ratio, no yield | ✓ | 0 | 0 |
| COF-07 | Pour-over: all the water (bloom included) and the bloom water of the recipe | ✓ | {water: 240, bloom: 45} | {water: 240, bloom: 45} |
| COF-08 | Pour-over: a bloom time of 0 = no bloom water | ✓ | {water: 240, bloom: 0} | {water: 240, bloom: 0} |
| COF-09 | Pour-over: the result with the coffee in the jug measured (lift-off at the end) | ✓ | {retained: 35, ratio: 16.666667, beverageRatio: 14.333333, flow: 1.25} | {retained: 35, ratio: 16.666667, beverageRatio: 14.333333, flow: 1.25} |
| COF-10 | Pour-over: the result without a lift-off - no beverage, no water kept | ✓ | {retained: null, ratio: 16.666667, beverageRatio: null, flow: 1.25} | {retained: null, ratio: 16.666667, beverageRatio: null, flow: 1.25} |
| COF-11 | Espresso: the average flow since the first drops, in 0.01 g/s | ✓ | 1.31 | 1.31 |
| COF-12 | Espresso: no average flow in the first 0.5 s | ✓ | 0 | 0 |
| COF-13 | Pour-over: the coffee in the jug while the dripper is lifted, and the drop that counts as a lift-off | ✓ | {jug: 65, limit: 62.5} | {jug: 65, limit: 62.5} |
| COF-14 | Pour-over: a light dripper - the lift-off needs at least 10 g; the jug never below 0 | ✓ | {jug: 0, limit: 10} | {jug: 0, limit: 10} |
| COF-15 | Pour-over with own pours: the water of every step - a pour its part of all the water, a stir the water of the pour before it | ✓ | [60, 120, 120, 180, 240, 300] | [60, 120, 120, 180, 240, 300] |
| COF-16 | Pour-over with own pours: a step before the first pour has no water; the last pour is all the water | ✓ | [0, 50, 250] | [0, 50, 250] |
| COF-17 | Pour-over with own pours: parts that are no round numbers, in 0.01 g | ✓ | [39.94, 120.06, 256] | [39.94, 120.06, 256] |
| COF-18 | Pour-over with own pours: the step at a time - the last one whose start has come | ✓ | 1 | 1 |
| COF-19 | Pour-over with own pours: all starts passed - the last step | ✓ | 3 | 3 |
| COF-20 | Pour-over with own pours: a step that began early (its pour started) is never taken back | ✓ | 2 | 2 |
| COF-21 | Pour-over with own pours: a step begins at its start exactly | ✓ | 1 | 1 |
| COF-22 | Pour-over: the coffee to expect in the jug - all the water minus what the coffee keeps (2 g per g at the start) | ✓ | 220 | 220 |
| COF-23 | Pour-over: the coffee to expect with the weighed dose and a learned value, in 0.01 g | ✓ | 214.34 | 214.34 |
| COF-24 | Pour-over: learning what the coffee keeps - half of the way to the measured value | ✓ | 2.2 | 2.2 |
| COF-25 | Pour-over: no lift-off at the end - nothing is learned | ✓ | 2 | 2 |
| COF-26 | Pour-over: a measured value outside 0.5 - 4 g per g is not taken (lifted off too early) | ✓ | 2.1 | 2.1 |
| COF-27 | Espresso: the dial-in hint - on time for the recipe (within 10 %): 1 | ✓ | 1 | 1 |
| COF-28 | Espresso: the dial-in hint - too fast (below 90 % of the shot time): 2 = grind finer | ✓ | 2 | 2 |
| COF-29 | Espresso: a shot stopped early counts as if it had run to the target yield | ✓ | 1 | 1 |
| COF-30 | Espresso: the pre-infusion is not scaled - too slow (above 110 %): 3 = grind coarser | ✓ | 3 | 3 |
| COF-31 | Espresso: hardly any coffee in the cup (below 1 g) - no hint | ✓ | 0 | 0 |
| COF-32 | Coffee: the extraction yield = beverage x TDS / dose - a filter brew in the classic box (EY 18 - 22 %, TDS 1.15 - 1.35 %): verdict 0 | ✓ | {ey: 21.67, verdict: 0} | {ey: 21.67, verdict: 0} |
| COF-33 | Coffee: a filter brew under-extracted and weak: verdict 1 + 4 = 5 | ✓ | {ey: 17.6, verdict: 5} | {ey: 17.6, verdict: 5} |
| COF-34 | Coffee: an espresso in the common range (EY 18 - 22 %, TDS 8 - 12 %): verdict 0 | ✓ | {ey: 21.11, verdict: 0} | {ey: 21.11, verdict: 0} |
| COF-35 | Coffee: an espresso over-extracted and strong: verdict 2 + 8 = 10 | ✓ | {ey: 25.6, verdict: 10} | {ey: 25.6, verdict: 10} |
| COF-36 | Coffee: no TDS - no extraction yield (verdict 255) | ✓ | {ey: null, verdict: 255} | {ey: null, verdict: 255} |
| COF-37 | Pour-over, a timed pour: on its plan line (within max(5 g, 10 % of the pour)) - no hint | ✓ | 0 | 0 |
| COF-38 | Pour-over, a timed pour: behind the plan - 1 = pour faster | ✓ | 1 | 1 |
| COF-39 | Pour-over, a timed pour: ahead of the plan - 2 = pour slower | ✓ | 2 | 2 |
| COF-40 | Pour-over, a timed pour: nothing in the first second | ✓ | 0 | 0 |
| COF-41 | Pour-over, a timed pour: nothing in the last 2 seconds | ✓ | 0 | 0 |
| COF-42 | Pour-over, a timed pour: a big pour has 10 % of it as tolerance | ✓ | 0 | 0 |
| COF-43 | Pour-over: stop pouring soon - more than 3 s to go: nothing | ✓ | 0 | 0 |
| COF-44 | Pour-over: stop pouring in 3 s (the water on its way counted: flow x lag) | ✓ | 3 | 3 |
| COF-45 | Pour-over: stop pouring in 1 s | ✓ | 1 | 1 |
| COF-46 | Pour-over: stop now - the water still on its way fills the pour | ✓ | 4 | 4 |
| COF-47 | Pour-over: no steady flow (below 1 g/s) - no countdown | ✓ | 0 | 0 |
| COF-48 | Pour trainer: a timed pour right on its line (its planned rate from where it began, up to its water) - score 100 | ✓ | {mean: 0, score: 100} | {mean: 0, score: 100} |
| COF-49 | Pour trainer: poured at double the rate - the mean distance is 2.5 tolerances, score 0 | ✓ | {mean: 15, score: 0} | {mean: 15, score: 0} |
| COF-50 | Pour trainer: too slow and stopped short - the time until it stopped counts | ✓ | {mean: 11.82, score: 21} | {mean: 11.82, score: 21} |
| COF-51 | Pour trainer: a later pour that began above its plan (the pour before overshot by 6 g) - the line starts where it began | ✓ | {mean: 0, score: 100} | {mean: 0, score: 100} |
| COF-52 | Pour trainer: a small pour has 5 g as tolerance | ✓ | {mean: 2.14, score: 83} | {mean: 2.14, score: 83} |
| COF-53 | Espresso: the peak flow - the highest valid flow from 1 s after the first drops | ✓ | 2.4 | 2.4 |
| COF-54 | Espresso: the peak flow - a flow that is not valid and the flow after STOP NOW of the early stop do not count | ✓ | 1.8 | 1.8 |
| COF-55 | Espresso: the peak flow - above 20 g/s is no espresso (a cup put on, a hand) | ✓ | 2.2 | 2.2 |
| COF-56 | Espresso: the peak flow - no valid flow after the first drops: none | ✓ | – | – |
| COF-57 | Espresso: the time to the first drops after a START - 5 d for 1.5 s, the drops came when it first rose | ✓ | {ttfd: 6.2, state: 2} | {ttfd: 6.2, state: 2} |
| COF-58 | Espresso: the time to the first drops - a short bump (the cup touched) is no drop, the watch starts again | ✓ | {ttfd: 8, state: 2} | {ttfd: 8, state: 2} |
| COF-59 | Espresso: the time to the first drops - coffee already in the cup at the START (pressed late): not measured | ✓ | {ttfd: null, state: 3} | {ttfd: null, state: 3} |
| COF-60 | Espresso: the time to the first drops - a cup put on after the START (more than max(15 g, 50 d)): not measured | ✓ | {ttfd: null, state: 3} | {ttfd: null, state: 3} |
| COF-61 | Espresso: the time to the first drops on a scale with d = 1 g (5 g for 1.5 s) | ✓ | {ttfd: 5.4, state: 2} | {ttfd: 5.4, state: 2} |
| COF-62 | Espresso: the time to the first drops - rising, but not 1.5 s yet: no time yet | ✓ | {ttfd: null, state: 1} | {ttfd: null, state: 1} |
| COF-63 | Coffee weighing: the dose in a remembered holder = the weight above the empty scale - the empty holder | ✓ | {dose: 18.2, state: 0} | {dose: 18.2, state: 0} |
| COF-64 | Coffee weighing: nothing on the scale (within max(0.5 g, 5 d) of 0) - no dose | ✓ | {dose: null, state: 1} | {dose: null, state: 1} |
| COF-65 | Coffee weighing: less than the empty holder by more than the tolerance - another holder | ✓ | {dose: null, state: 2} | {dose: null, state: 2} |
| COF-66 | Coffee weighing: the empty holder a little lighter (within the tolerance) shows the dose as it is | ✓ | {dose: -0.3, state: 0} | {dose: -0.3, state: 0} |
| COF-67 | Coffee weighing: more than a dose (above 40 g) - another holder or something else on the scale | ✓ | {dose: null, state: 3} | {dose: null, state: 3} |
| COF-68 | Coffee weighing: a scale with d = 1 g has 5 g of tolerance | ✓ | {dose: -4, state: 0} | {dose: -4, state: 0} |
Made by the UP↑SCALE app. The validation is the work and the decision of your laboratory: this pack gives the structure, the data of the system and the tests. UP↑SCALE does not certify the system, its use or its compliance with a rule.
Report no. 37 · UP⬆SCALE (DIY) #76439 · Device ID E83DC1241BB0
Firmware 1.01312 · configuration counter 61 · Code: 188f5d07e551d668
Check this file yourself: up-scales.com/check - the check runs in your browser, nothing is uploaded.