spacr.qt.maturity¶
Assign evidence-based maturity labels to Qt applications.
Application maturity is assessed from tests, command-line support or a stated GUI-only scope, documentation, tutorials, and use by other spaCR components. The labels have the following meanings:
stableThe application has a working pipeline or library, broad test coverage, and user documentation.
betaThe application is functional and tested but has less documentation or operational use than a stable application.
The apply() function updates spacr.qt.app.APP_STAGE from the
assessments below. An application without an assessment or an explicitly
declared stage is assigned UNASSESSED_STAGE ("alpha"). Explicit
beta labels are retained, while recorded assessments take precedence.
PROMOTIONS contains applications whose labels changed;
AFFIRMED contains reviewed applications whose labels were already
appropriate.
Functions¶
|
Write the assessment into the shell's stage table, then fill the gaps. |
|
Every app key somebody has actually looked at, in any of the tables. |
|
Why |
|
Entry point for |
|
Registered apps nobody has assessed, in registry order. |
Module Contents¶
- spacr.qt.maturity.apply(stages: Dict[str, str] = None, keys=None) List[str][source]¶
Write the assessment into the shell’s stage table, then fill the gaps.
Two phases, and they answer two different questions:
PROMOTIONS— the apps somebody assessed and moved. Idempotent, and it never demotes: a module some other code has already promoted further than this table says stays where it is. That matters because the table is a snapshot of one assessment, and the next assessment should not be silently undone by re-importing this module.Every registered app that is in none of the assessment tables and has no line of its own is written in as
UNASSESSED_STAGE. This is what stops a new module inheritingstablefrom the absence of an entry — see the module docstring. It only ever writes where there is nothing, so it cannot overrule an author, a plugin, or phase 1.
- Parameters:
stages – the table to write into. Defaults to
spacr.qt.app.APP_STAGE; injectable so a test does not have to mutate the live registry.keys – the app keys phase 2 considers. Defaults to the live registry; pass
()to run phase 1 alone.
- Returns:
the app keys whose stage this call changed.
- spacr.qt.maturity.assessed_keys() frozenset[source]¶
Every app key somebody has actually looked at, in any of the tables.
- spacr.qt.maturity.reason_for(app_key: str) str[source]¶
Why
app_keyis where it is, or""when it was not assessed.An empty string is a real answer here and the UI is entitled to say it plainly: this module is alpha because nobody has checked it, not because somebody checked it and concluded alpha.
- Parameters:
app_key – the app’s registry key, e.g.
"align"; converted tostrand looked up inPROMOTIONS, thenAFFIRMED, thenRETIREMENTS.
- spacr.qt.maturity.register() bool[source]¶
Entry point for
spacr.qt.SELF_REGISTERING_MODULES.Idempotent —
apply()never demotes, so a second launch in one process (the test suite does this) is a no-op rather than a conflict.
- spacr.qt.maturity.unassessed_apps(stages: Dict[str, str] = None, keys=None) List[str][source]¶
Registered apps nobody has assessed, in registry order.
An app is unassessed when it appears in none of
PROMOTIONS,AFFIRMEDorRETIREMENTS. Whether it carries a stage is a different question: a module that declared alpha for itself is unassessed and correctly labelled, which is exactly the state most of the shelf is in.- Parameters:
stages – unused for the decision; accepted so callers can pass the same two arguments they pass
apply().keys – the app keys to consider; defaults to the live registry.