Results API¶
Result models are frozen and reject unknown fields. ExtractionResult[T] can
contain mutable caller-owned output even though the envelope is frozen.
See Results and Artifacts for status rules, filesystem layout, collision behavior, and sensitive-data handling.
Typed artifact-plan and serializer ports are exported from
survey_scribe.serialization.
results ¶
Frozen typed extraction results and stable diagnostics.
ResultStatus ¶
DiagnosticSeverity ¶
DiagnosticCode ¶
Bases: StrEnum
Stable built-in diagnostic codes.
quality_low_confidence
class-attribute
instance-attribute
¶
quality_low_confidence = 'QUALITY_LOW_CONFIDENCE'
quality_missing_categories
class-attribute
instance-attribute
¶
quality_missing_categories = 'QUALITY_MISSING_CATEGORIES'
quality_duplicate_raw_name
class-attribute
instance-attribute
¶
quality_duplicate_raw_name = 'QUALITY_DUPLICATE_RAW_NAME'
quality_overlap_deduped
class-attribute
instance-attribute
¶
quality_overlap_deduped = 'QUALITY_OVERLAP_DEDUPED'
quality_possible_duplicate
class-attribute
instance-attribute
¶
quality_possible_duplicate = 'QUALITY_POSSIBLE_DUPLICATE'
quality_module_reconciled
class-attribute
instance-attribute
¶
quality_module_reconciled = 'QUALITY_MODULE_RECONCILED'
metadata_incomplete
class-attribute
instance-attribute
¶
metadata_incomplete = 'METADATA_INCOMPLETE'
xlsform_choice_list_missing
class-attribute
instance-attribute
¶
xlsform_choice_list_missing = 'XLSFORM_CHOICE_LIST_MISSING'
xlsform_expression_unsupported
class-attribute
instance-attribute
¶
xlsform_expression_unsupported = (
"XLSFORM_EXPRESSION_UNSUPPORTED"
)
xlsform_feature_unsupported
class-attribute
instance-attribute
¶
xlsform_feature_unsupported = 'XLSFORM_FEATURE_UNSUPPORTED'
xlsform_function_unsupported
class-attribute
instance-attribute
¶
xlsform_function_unsupported = (
"XLSFORM_FUNCTION_UNSUPPORTED"
)
xlsform_reference_unresolved
class-attribute
instance-attribute
¶
xlsform_reference_unresolved = (
"XLSFORM_REFERENCE_UNRESOLVED"
)
xlsform_type_unsupported
class-attribute
instance-attribute
¶
xlsform_type_unsupported = 'XLSFORM_TYPE_UNSUPPORTED'
Diagnostic ¶
Bases: BaseModel
One stable diagnostic without raw provider response data.
model_config
class-attribute
instance-attribute
¶
model_config = ConfigDict(extra='forbid', frozen=True)
severity
class-attribute
instance-attribute
¶
severity: DiagnosticSeverity = DiagnosticSeverity.warning
details
class-attribute
instance-attribute
¶
details: dict[StrictStr, Any] = Field(default_factory=dict)
freeze_json_details
classmethod
¶
freeze_json_details(
value: dict[str, Any],
) -> dict[str, Any]
Detach and recursively freeze finite JSON-compatible details.
FailedBlock ¶
Bases: BaseModel
A source block that did not produce usable structured output.
ArtifactKind ¶
Bases: StrEnum
Published artifact role.
ArtifactReference ¶
Bases: BaseModel
Reference to one validated local artifact.
model_config
class-attribute
instance-attribute
¶
model_config = ConfigDict(extra='forbid', frozen=True)
PromptArtifactProvenance ¶
Bases: BaseModel
One routing prompt identity without prompt or questionnaire content.
ArtifactProvenance ¶
Bases: BaseModel
Digest-only provenance supplied to an artifact serializer.
model_config
class-attribute
instance-attribute
¶
model_config = ConfigDict(
extra="forbid", frozen=True, hide_input_in_errors=True
)
require_stable_unique_records ¶
require_stable_unique_records() -> ArtifactProvenance
Reject duplicate digests and duplicate prompt identities.
ExtractionResult ¶
Bases: BaseModel, Generic[T]
Frozen result envelope; caller-owned output T can remain mutable.
model_config
class-attribute
instance-attribute
¶
model_config = ConfigDict(
extra="forbid",
frozen=True,
arbitrary_types_allowed=True,
)
run_id
class-attribute
instance-attribute
¶
run_id: str = Field(default_factory=lambda: uuid4().hex)
artifact_provenance
class-attribute
instance-attribute
¶
artifact_provenance: ArtifactProvenance | None = Field(
default=None, exclude=True, repr=False
)
status
property
¶
status: ResultStatus
Derive status from usable output and operational failures.
Returns:
| Type | Description |
|---|---|
ResultStatus
|
|
ResultStatus
|
or |
derive_survey_id ¶
derive_survey_id() -> ExtractionResult[T]
Use the output survey identifier when no envelope value was supplied.
serialization_snapshot ¶
serialization_snapshot() -> dict[str, Any]
Return a detached JSON-compatible snapshot of the current envelope.
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
A deep-copied dictionary that does not change if caller-owned output |
dict[str, Any]
|
is later mutated. |
write ¶
write(
output_dir: str | PathLike[str],
*,
sidecar: bool = True,
overwrite: bool = False,
serializer: ArtifactSerializer[T] | None = None,
) -> ExtractionResult[T]
Publish one versioned generation and return its artifact references.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
output_dir
|
str | PathLike[str]
|
Trusted local directory for stable and generation files. |
required |
sidecar
|
bool
|
Whether to include the diagnostic sidecar. |
True
|
overwrite
|
bool
|
Whether to publish a new generation when stable artifacts already exist. |
False
|
serializer
|
ArtifactSerializer[T] | None
|
Optional typed serializer. Exact |
None
|
Returns:
| Type | Description |
|---|---|
ExtractionResult[T]
|
A new frozen result containing references and SHA-256 digests for the |
ExtractionResult[T]
|
published files. |
Raises:
| Type | Description |
|---|---|
ArtifactCollisionError
|
Artifacts exist and overwrite is disabled, or another writer holds the survey lock. |
ArtifactWriteError
|
Validation, generation, projection, pointer, or filesystem publication fails. |
Note
The process-owned survey lock covers recovery and publication. A durable journal repairs a hard exit before another write proceeds.