Who names the severities¶
Every non-conformance in this MES carries a severity, and until this feature
existed nothing said what a severity could be. The column was twenty
characters of free text with a default of minor, and the only two words in
the product were the two its own code wrote: a recorded check outside its
specification opened a minor one, an SPC rule 1 firing opened a major
one. Nothing validated anything else. A trigger could write any string at
all, and the trigger catalogue's own help offered critical — a word nothing
in this product has ever written and no plant had on any list.
That is free text by accident rather than by design, and it is the same failure the downtime reasons had: a field a plant fills in with no list behind it.
This page is the second half of who names the reasons, and it is deliberately the same page again. If you have read that one you already know this one: the lifecycle, the two capabilities, the panel, the walk and the undo are the same machinery. What is different is three things, and they are all at the end.
The short version¶
- Somebody holding
quality.definedrafts a severity, on Quality › Configuration › Non-conformance severities (/dashboard/severities) or through the API. Nothing changes on any record. - It appears on the Waiting for you panel on
/dashboard— for the people who can act on it, and for nobody else. - Somebody holding
quality.approveputs it in force. The row records who and when. - From then on a new non-conformance may only be raised at a word on the list.
- Undo is one move: approve the previous revision. Nothing is deleted, and no record is re-graded.
The two capabilities¶
| Capability | What it grants | Who holds it as shipped |
|---|---|---|
quality.define |
Draft the plant's quality vocabulary | admin, and the agent role |
quality.approve |
Put a quality vocabulary in force | admin only |
Separate for the reason every pair in this product is separate: writing down
what this plant calls a serious finding and putting that in front of every
quality record are different jobs. An administrator can compose a quality
engineer role that holds both without holding users.manage or
masterdata.write; a role is a named bundle of capabilities and bundles are
data, so that is an afternoon on the admin screen and no deployment.
The agent role holds the drafting half and never the approving half.
The screen¶
Quality › Configuration › Non-conformance severities
(/dashboard/severities) is one row on the Quality workspace's
Configuration page (/dashboard/config/quality). It lists every word the
plant has ever had — on the list, retired, drafted and unsigned — with how
many non-conformances each one grades, and the form that drafts the next one
is there for somebody holding quality.define and absent for everybody else.
Typing a code that already exists drafts its next revision; typing one that has a draft open edits that draft.
A plant with no list behaves exactly as it always did¶
This is worth saying plainly, because it is the rule the whole configuration
effort runs on: the literal in the source is the shipped default,
unchanged. A plant that has approved no severity is not a plant with a
broken feature. Its severity column takes whatever is written, exactly as it
did before any of this existed, and nothing about a record it raises is
different.
The moment a plant has one word in force, the column stops being free text: a new non-conformance may only be raised at a code on the list, and the refusal names the list rather than the rule.
Records raised before the list keep their word. Nothing is read and
nothing is rewritten. A hold graded showstopper last March is still graded
showstopper, on the record and on any certificate that printed it, whatever
the plant's list says now. Retiring a word changes what may be graded next and
never what was graded before — the same sentence the downtime vocabulary
keeps about an interval it labelled.
The two words this product writes itself¶
minor and major are not the plant's to remove. The product opens
non-conformances by itself:
| Word | Who writes it |
|---|---|
minor |
a recorded check outside its specification, and SPC rules 2, 3 and 4 |
major |
SPC rule 1 — a point beyond three sigma |
So a plant whose list lacked one of them would find out at the moment a machine raised a hold, with nobody watching. Instead the refusal is moved to the only moment a person is present:
- Retiring one is refused on the screen, with the sentence saying which code path writes it. The Retire button is absent rather than offered and refused.
- A pack that seeds a list without one is refused by
fsmes pack check, offline, where a person is reading and can fix it.
It is a refusal to retire, never to rename. The code is the key; the name and the sentence beside it are the plant's and always were. A plant that calls a major finding a Show-stopper changes the name, keeps the code, and every screen reads its own word.
What a plant starts with¶
A pack may carry masterdata/nc_severities.json
(plant packs). The three lab packs and the cutlery demo ship
exactly two words — minor and major — because those are the two the
source writes today. Shipping a third to be helpful would be inventing a
plant: critical and observation are words some plants use, and this
product has never written either.
A packed vocabulary arrives in force, not as a draft. Applying a pack is a
deliberate act by a person, and fsmes pack apply never rewrites a code that
is already there. Every change after the first apply goes through
draft → approve like everything else.
What this does not do¶
- It does not rank. There is no numeric order behind the words, and a
triage queue sorted by severity is the plant's own reading of its own list.
Asserting that one plant's
majoris another plant'smajoris exactly what this product will not do. - It does not decide which rules raise a hold. That is
decision 0036
and
[quality] hold_rules, listed on the same Configuration page. - It does not decide which rule is a major finding. Which SPC rules open
a major non-conformance rather than a minor one is
[quality] major_rules— rule 1 alone by default, which is what the source does. See this plant's own quality numbers. - There is no severity input on any screen. There never has been: nothing
in this product has ever offered a person a severity to pick. The places a
severity is written are the two product code paths above and a trigger's
open_ncaction parameters, and that last one is now checked against the plant's list like everything else.
See also¶
- Who names the reasons — the first vocabulary, and the same loop
- Plant packs — shipping a severity list with a plant
- This plant's own quality numbers — the numbers, as opposed to the words
- Configuration is authored by roles, and decision 0035
- What is still hard-coded — where this was row Q3