Inventory and file kinds
The scan walks the folder, computes a hash for every file and proposes a kind for each. The kind is deduced from the content and never from the extension, because the same .xlsx can be an instrument export, a calculation workbook or an entry sheet. Every classification carries its reason, and a human arbitration is never undone by a rescan.
The scan
The walk is bounded by the allowed roots, like the file explorer. Every file is read for its SHA-256 hash, then submitted to the recognition probes. On a folder of three hundred files the operation runs long enough to be followed from elsewhere: it is published as a background task and stays visible from any panel.
The kinds
| Kind | What it designates |
|---|---|
| export-instrument | Raw output from an instrument, often multi-sample. |
| classeur-calcul | A sheet carrying formulas, therefore a treatment. |
| tableau-saisie | A sheet of hand-entered values, with no formula. |
| protocole | Operating procedure, recipe, bench sheet. |
| document | Report, article, presentation. |
| observation | Photograph, bench image, field note. |
| reference | Material certificate, standard sheet. |
| rebut | Temporary file, autosave, working copy. |
| indetermine | No probe concluded. The reason says which one failed and why. |
Recognising a protocol
Two independent signatures are tested: a bilingual operating lexicon, and the density of quantities carrying a unit. The second was added after confrontation with real folders, where two protocols contained no verb at all: they are recipes in table form, one column of reagents and one column of volumes.
Legacy formats and libraries
| Point | Behaviour |
|---|---|
| Older formats (xls, doc, ppt, mdb, spc, jdx) | Recognised and marked obsolescent, so their presence is visible before they become unreadable. |
| PDF probe | Indifferent to the installed engine: pypdf, pdfminer or pdfplumber all do. |
| docx files | Read straight from the zip, with no extra dependency. |
| Missing library | The probe returns indetermine with its reason instead of raising. The air-gap constraint forbids assuming a package is installed. |
Reasons
A classification reason is a code with its parameters, never a sentence. The sentence only exists at display time, built from bilingual tables. A campaign scanned in French therefore stays readable in English, adding a language does not force a rescan, and rewording a label does not make already-written descriptors inconsistent. A code unknown to an older version is shown as it is rather than hidden.
Human arbitration
The proposed kind can be corrected. The correction carries the arbitre flag and is indexed on the file hash, not on its path.
| Situation | Effect on the arbitration |
|---|---|
| The file is moved or renamed | It keeps its corrected kind: the content has not changed. |
| The file content changes | The arbitration is lost, and a new proposal is made. |
| A rescan is run | The campaign and chain blocks are carried over, never recomputed. |
Arbitrations are done in batches. The scanner groups files by folder, reason and author so that one decision settles N files: confirming thirty matches one at a time leads to giving up around the twentieth.
Duplicates and versions
Duplicates are detected by hash, not by name. The history keeps the number of revisions and the last ten states, each as a hash and the date at which it stopped being current. The count is made on the hash, not on the modification date, which also changes when a file is opened and saved again without any change.
Flag without erasing
An attached file that disappears, a node with no file, an unresolved sample link all stay displayed and marked. Nothing is removed from the descriptor: an unplugged network drive or an absent external disk is not a deletion, and erasing the line would lose the information at the exact moment it is useful.
Opening a file
Opening goes through IsoFind first when an opener exists for that kind, and through the system afterwards. The system route is bounded by the allowed roots and refuses twenty-nine executable extensions: opening a .bat means running it.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Every file in a folder comes back as indetermine. | The matching probe degraded for lack of a library. The reason says so, and the journal carries the single line for that session. |
| A corrected file goes back to its old kind. | Its content changed since the arbitration, which is indexed on the hash. |
| A file appears twice. | Two real copies, with two distinct hashes. Identical content would have produced a single entry. |
| The scan does not start. | The folder lies outside the allowed roots. |