v2.5.1
The disclosure screen's category words have changed, and the old ones are
refused. If any .fettler.json or .fettler.local.json on your machine
names phi, pii or sci in a screen, it will stop working when you
install this release. Two of the three new words are a straight rename; one
of them splits in two.
| Was | Write instead |
|---|---|
pii |
identifiers |
sci |
scientific |
phi |
identifiers for the labelled patterns, clinical for model screening of clinical text — it was doing duty for both |
The old words are refused rather than translated, when the configuration
is read, with a message naming the replacement:
'phi' is no longer a screening category; the labelled identifier patterns are
'identifiers', and clinical-model screening is 'clinical'
Translating them silently would have kept them alive in configurations
indefinitely, still promising what they always over-promised — which is the
whole reason for the change.
Why the words changed
phi and pii claimed more than the screen delivers. A category called
phi reads as "protected health information is covered here". What its
pattern tier actually found was a record number under an MRN: label and a
date under a DOB: label. Patient names, addresses, conditions and the
clinical prose around them were never matched by anything unless you had
installed a model — and nothing said so.
The honest sentence, which the documentation now leads with: out of the
box the screen catches structured identifiers — a social security number,
a Luhn-valid card, a formatted phone number, an email address, a labelled
record number and a labelled date of birth. Names, addresses, conditions and
free text are caught only by a model you install, and the manifest plus
roots name exactly which model that is.
The new words say which is which. identifiers is the pattern tier and
takes no model, ever. clinical, legal and scientific are model tiers
and screen nothing at all until you install one.
Added
-
fettle rootsnames the model doing the judging, and never hides it.
Where a grant screens a model-backed category,rootsnow reports that
category on its own line: the checkpoint and revision read from the
model'smanifest.json, orno model installed - reads here will refuse
where the directory holds none.records /work/records can: list read screen: identifiers clinical clinical: obi/deid_roberta_i2b2 @ a1b2c3dWith no
"models"directory declared at all, one line says so rather than
letting the category words imply a protection that is not running:no "models" directory is declared, so clinical, legal, scientific screen nothing here - only the identifier patterns runThe JSON answer carries the same facts under
screening, because the MCP
front end never sees the text one — and that is the front end where a
model is the thing reading the answer. Manifest reading is read-only and
tolerant: an unreadable or incomplete manifest reports as no model rather
than taking the whole answer away, sincerootsis very often the call
somebody makes because something is already wrong. -
scripts/shoddy-branch.*replacesscripts/shoddy-feature.*, and adds
abugverb.bug NAMENNcutsbug/<origin-feature>NNoff an
up-to-datemain, so a fix carries the name of the feature it belongs to
and its number:bug/pudsey01is the first fix to work that shipped from
feature/pudsey. The two digits are not optional —bug/pudseyrefuses.
shipruns fromfeature/*andbug/*alike and merges each the same
way. The script was renamed becausefeaturewas never the only thing it
cut.
Changed
-
A pattern-only screen never starts the sidecar. A scope screening
identifiersand nothing else has no question to put to a model, so
burler is not consulted, not started, and its absence is not a refusal.
Previously the category words made this hard to reason about; now it
follows from them. A tree screening onlyidentifiersnever needs a
models directory at all. -
Every pattern finding reports as
identifiers. A refusal that used to
read2 in phinow reads2 in identifiers. The count and the category
are still all it says — never the text it found. -
The documentation says what the screen catches, rather than implying
more. Screening
gains a column naming the model family behind each category and stating
that the manifest androotsname the exact checkpoint; the
four-categories tables, the workedrootsoutput, the refusal examples
and every configuration snippet carry the new words. The claim that the
first tier "already carries most of" the personal-identifier category is
gone — it was the clearest form of the over-promise. -
The workstation diagram draws all eleven denied built-ins.
Monitor,
BashOutputandTaskOutputwere added to the deny list in v2.5.0 and
never drawn.Monitoris a shell — it runs what it is handed in the same
environmentBashdoes — and the two output readers start nothing and
write nothing but hand back the output of work already done, bytes that
reached the model without passing the tree boundary, the secret scan or
the disclosure screen. The figure'saria-labelnames them too.
Fixed
- A worked example on the screening page tripped the screen it
documents. The page carried a literal labelled date of birth as sample
text, so thedate-of-birthdetector matched it and any screened tool
reading the page was refused — the documentation for the feature was
unreadable to anything the feature was switched on for. The example now
describes the shape instead of spelling it.