SOFTWARE VERIFICATION · v1.2

Calculations and saved indents

← Open engine · Calculation and deployment guide

99 / 99 checks passed. 5,000 calculation simulations and 200 consecutive weekly saved snapshots passed. Calculation seed: 1729.

Saved-copy behavior

A saved indent contains a separate copy of dated inputs, holidays, item rules and original calculated results. Later changes do not modify it. Multiple revisions are retained. Incomplete calculations remain labelled drafts. Saved results are read only; Use as draft creates an editable working copy while preserving saved originals.

JSON backups include current work and all saved history. Old backups without history remain supported. Archives are validated for item identities, numeric values, statuses, date coverage and summaries. Duplicate IDs, recursive snapshots and malformed archives are rejected. Existing history is not silently evicted when browser storage is full.

Browser checks and fix

Automated checks

SuiteCheckResult
CalculationsDate display is dd/mm/yyyy with leading zeroesPASS
CalculationsDate entry parses dd/mm/yyyy to an unambiguous internal valuePASS
CalculationsUS date entry rejectedPASS
CalculationsImpossible calendar date rejectedPASS
CalculationsSingle-digit dates rejected to enforce requested formatPASS
CalculationsLeap date acceptedPASS
CalculationsTuesday maps to upcoming Wednesday–Tuesday across month boundaryPASS
CalculationsNormal chemistry baseline is 6.5 day loadsPASS
CalculationsSaturday remains full loadPASS
CalculationsSunday selected twice never double-counts the reductionPASS
CalculationsNormal immunoassay baseline is six days; Sunday zeroPASS
CalculationsOne extra holiday reduces chemistry by half a dayPASS
CalculationsOne extra holiday removes one immunoassay dayPASS
CalculationsCalendar-day consumable demand unaffected by holidayPASS
CalculationsWeekly need rounds upward to 20 before pack conversionPASS
CalculationsGlucose zero-stock example now needs one pack, without an added bridgePASS
CalculationsExact weekly multiple of 20 stays unchangedPASS
CalculationsZero demand stays zeroPASS
CalculationsPack rounding occurs before stock subtractionPASS
CalculationsIn Lab is the entered supply-unit balance, with no time deductionPASS
CalculationsTo Indent equals rounded packs needed minus In LabPASS
CalculationsExcess stock never gives negative orderPASS
CalculationsFractional supply stock rounds the remaining request upwardPASS
CalculationsPermitted half-unit supply increment respectedPASS
CalculationsLoose reagent balance is labelled bottlesPASS
CalculationsR1 bottles per pack determine tests per loose bottlePASS
CalculationsTwo loose Glucose bottles equal 0.4 packetPASS
CalculationsHalf a loose bottle is supportedPASS
CalculationsTotal Protein loose bottle equals one bottle supply unitPASS
CalculationsUnknown bottle conversion blocks positive loose stockPASS
CalculationsUnknown bottle conversion does not block a verified zero loose balancePASS
CalculationsQC loose balance remains in aliquotsPASS
CalculationsConsumable loose pieces remain piecesPASS
CalculationsCobas opening shots counted directly without hour interpolationPASS
CalculationsBefore-loading packs count exactly oncePASS
CalculationsAfter-loading mode does not add loaded packs againPASS
CalculationsBefore-loading mode requires loading entryPASS
CalculationsCobas missing shots stays incompletePASS
CalculationsZero stock generates no before-receipt risk field or summary countPASS
CalculationsBlank stock remains unknownPASS
CalculationsNegative stock rejectedPASS
CalculationsMissing consumption is not treated as zeroPASS
CalculationsMissing pack yield is not treated as zeroPASS
CalculationsDept zero flags NA without reducing requestPASS
CalculationsPositive insufficient Dept stock flags short supply, not NAPASS
CalculationsUnknown Dept stock creates no invented NAPASS
CalculationsTarget-stock rule retains exact target before supply conversionPASS
CalculationsAmylase loose bottles and stock pool into a single ordering rowPASS
CalculationsUnknown nonzero Erba yield blocks the pooled resultPASS
CalculationsInactive preferred Amylase does not silently drop demandPASS
CalculationsDuplicate CSV item IDs rejectedPASS
CalculationsNegative import rejected without mutating current stockPASS
CalculationsPositive loose-bottle CSV validates its unitPASS
CalculationsLegacy loose-tests CSV is rejected instead of reinterpreted as bottlesPASS
CalculationsAmbiguous nonzero loose CSV without unit is rejectedPASS
CalculationsLegacy zero loose CSV is safely acceptedPASS
CalculationsQuoted CSV cells round-tripPASS
CalculationsCSV spreadsheet-formula prefixes neutralizedPASS
CalculationsVersion-1 backup loose tests convert to bottles without losing capacityPASS
CalculationsVersion-1 master uses known seed bottles-per-pack during migrationPASS
CalculationsUnconvertible legacy loose test balance is cleared with an explicit noticePASS
CalculationsVersion-2 loose bottles are not migrated a second timePASS
CalculationsDuplicate backup IDs rejectedPASS
CalculationsInvalid bottles-per-pack backup rejectedPASS
CalculationsUpdated master has 95 rows / 93 enabled / known reagent bottle metadataPASS
CalculationsCorrected Hitachi supply remains 200 piecesPASS
CalculationsNew plan has no stale stock entriesPASS
Calculations52 consecutive planning weeks retain six full days plus reduced SundayPASS
Calculations5000 independent randomized cases: pack-first formula, bottles, shots, holidays and monotonicityPASS
HistorySave includes a dated calculation and complete inputsPASS
HistorySaving makes a deep snapshot, independent of current stockPASS
HistorySaving preserves original rules after later live editsPASS
HistoryChanging current holidays leaves saved needs and dates unchangedPASS
HistoryIncomplete calculations save explicitly as draftsPASS
HistoryA new revision adds another saved copy without overwritingPASS
HistoryArchive addition does not mutate the old workspacePASS
HistorySnapshot does not recursively include prior historyPASS
HistoryBackup round-trip retains all saved snapshots and their calculated valuesPASS
HistoryOld backup without history upgrades to an empty archivePASS
HistoryOld schema-one backup still migrates loose tests to bottlesPASS
HistoryUse as draft restores old input and rules while retaining all saved originalsPASS
HistoryA result saved by an earlier engine version keeps its original numbers and versionPASS
HistorySaved time uses dd/mm/yyyy and Indian Standard TimePASS
HistoryDefault saved IDs are uniquePASS
HistoryDuplicate history IDs rejected atomicallyPASS
HistoryDuplicate archive insertion rejectedPASS
HistoryRecursive snapshots rejectedPASS
HistoryNegative saved quantities rejectedPASS
HistoryContradictory status and quantity rejectedPASS
HistoryTampered summary counts rejectedPASS
HistoryTampered saved coverage dates rejectedPASS
HistoryMissing saved result rows rejectedPASS
HistoryChanged saved item identity rejectedPASS
HistoryMalformed saved timestamps rejectedPASS
HistoryOverlong saved names rejectedPASS
HistoryBlank saved name gets a nonempty defaultPASS
HistoryInvalid current plan cannot be archivedPASS
HistoryArchive bounds enforced without deleting existing recordsPASS
History200 consecutive weekly snapshots survive changes and JSON restorePASS

Scope

History is browser-local, not shared server storage. Export backups before clearing browser data. The 200-snapshot exercise used representative small calculation records to test retention and restore; it does not guarantee storage capacity for 200 full laboratory registers. Actual capacity depends on the browser.

No account deployment, physical printer, actual phone, or browser file-import action was tested. Saved-copy creation, reload, immutable viewing, working-copy restoration and CSV/JSON downloads were tested in desktop Chrome. Backup restore and malformed archive rejection were tested through the same validation module used by the application.

Re-run node verification/engine.test.mjs and node verification/history.test.mjs from the extracted package. No dependencies are required. These checks validate software behavior, not actual consumption, expiry or QC performance.