Metadata-Version: 2.4
Name: signalsafe-tree-spec-assessment
Version: 0.5.0
Summary: Deterministic TreeSpec transition-score assessment
License-Expression: MIT
Requires-Python: <4,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: signalsafe-tree-spec<0.5,>=0.4.0
Requires-Dist: servicephilosophy<0.2,>=0.1.1
Requires-Dist: sqlphilosophy[async]<0.4,>=0.3.0
Requires-Dist: sqlalchemy<3,>=2
Dynamic: license-file

# signalsafe-tree-spec-assessment

Current source and planned customer-subdomain impact: [current-state summary](../docs/current-state-summary.md).

Unpublished candidate 0.5.0. Python >=3.12,<4; existing `signalsafe-tree-spec` 0.4.x.
The deterministic core adds validated transition score deltas. Explicit service and
persistence modules share attempt/history operations and report grouping using
servicePhilosophy and sqlPhilosophy. Hosts retain mapped models, ownership predicates,
transactions, graph navigation, outcome thresholds, authorization and queues.

```python
from tree_spec_assessment.contracts import AssessmentDefinition
from tree_spec_assessment.scoring import assess_integer_scores, assess_binary64_scores

definition = AssessmentDefinition(("total", "awareness"))
result = assess_integer_scores(definition, {"total": 5}, {"total": -2})
assert result.score["total"] == 3
fractional = assess_binary64_scores(definition, {}, {"awareness": 0.5})
assert fractional.score["awareness"] == 0.5
```

Missing dimensions mean zero; present null, booleans, strings, unknown dimensions and
nonfinite values are rejected. Integer inputs are Python integers with exact addition.
Integer result serialization uses decimal strings. Binary64 results use JSON numbers
and IEEE-754 addition without rounding or clamping; overflow is rejected.
`AssessmentError` exposes stable `code` and `path`; hosts keep their own error envelopes.
Existing `Delta` normalization is available through `tree_spec_assessment.tree_spec.integer_delta`.

Install the candidate wheel directly for an unpublished pilot. Registry adoption needs
an independently reviewed, separately authorized release. Python 0.5.0 and TypeScript 0.4.1
share assessment schema v1 and TreeSpec wire v1; compare serialized fixtures before repinning.

Ordered score replay is available in Python `tree_spec_assessment.replay` and TS
`@signalsafe/tree-spec-assessment/replay`. It consumes host-selected deltas lazily.
Authored-outcome summaries use `OutcomeObservation`, immutable `OutcomeSummary` and
`summarize_outcomes` (TS `summarizeOutcomes` from `./outcomes`). Weights are exact signed
integers; empty/null outcomes are absent from buckets but included in overall count.
Inputs receive stable diagnostics; hosts retain completion and success policy.

See [Python documentation](docs/README.md),
[compatibility](docs/compatibility.md) and
[shared attempt services](docs/shared-attempt-services.md).
Repository-wide adoption and release guidance is in
[consolidation](../docs/consolidation.md) and [releases](../RELEASING.md).
