context loading, path resolution, form state, dynamic rules, and provider-neutral assessment runner/cache boundary

This commit is contained in:
2026-05-04 13:52:29 +02:00
parent eccf1874fb
commit 8361f9ea45
29 changed files with 2809 additions and 65 deletions

View File

@@ -14,6 +14,9 @@ def builtin_extension_registry() -> ExtensionRegistry:
for descriptor in _processor_descriptors() + [
_local_sqlite_backend_descriptor(),
_workflow_engine_descriptor(),
_runtime_context_descriptor(),
_runtime_form_state_descriptor(),
_runtime_assessment_descriptor(),
]:
registry.register(descriptor)
return registry
@@ -120,3 +123,68 @@ def _workflow_engine_descriptor() -> ExtensionDescriptor:
docs=["docs/workflow-definition-standard.md"],
examples=["examples/workflows/adr-release-notes.workflow.md"],
)
def _runtime_context_descriptor() -> ExtensionDescriptor:
return ExtensionDescriptor(
id="runtime.context",
kind="runtime",
summary="YAML/JSON runtime context loader for document contracts.",
capabilities=[
ProcessingCapability(id="context", kind="read"),
ProcessingCapability(id="json-schema", kind="validate"),
ProcessingCapability(id="diagnostics", kind="emit"),
],
safety={"reads_files": True, "network": False},
input_contract="YAML/JSON runtime context file",
output_contract="RuntimeContext",
diagnostics_namespace="runtime.context",
provenance_prefix="runtime.context",
cli={"commands": ["mkt contract check --context", "mkt contract form-state"]},
docs=["docs/runtime-context-forms-assessments.md"],
examples=["examples/runtime/business-letter.context.yaml"],
)
def _runtime_form_state_descriptor() -> ExtensionDescriptor:
return ExtensionDescriptor(
id="runtime.form-state",
kind="runtime",
summary="UI-neutral field prefill, validation, and dynamic rule engine.",
capabilities=[
ProcessingCapability(id="forms", kind="evaluate"),
ProcessingCapability(id="rules", kind="evaluate"),
ProcessingCapability(id="contracts", kind="validate"),
ProcessingCapability(id="diagnostics", kind="emit"),
],
safety={"reads_files": False, "network": False},
input_contract="Document + DocumentContract + RuntimeContext",
output_contract="FormState",
diagnostics_namespace="runtime",
provenance_prefix="runtime.form_state",
cli={"commands": ["mkt contract form-state"]},
docs=["docs/runtime-context-forms-assessments.md"],
examples=["examples/runtime/workplan-dynamic.contract.md"],
)
def _runtime_assessment_descriptor() -> ExtensionDescriptor:
return ExtensionDescriptor(
id="runtime.assessment",
kind="assessment-runner",
summary="Provider-neutral rubric assessment request, result, and cache boundary.",
capabilities=[
ProcessingCapability(id="assessment", kind="execute"),
ProcessingCapability(id="rubrics", kind="read"),
ProcessingCapability(id="cache-key", kind="compute"),
ProcessingCapability(id="diagnostics", kind="emit"),
],
safety={"network": "adapter-only", "provider_calls": "adapter-only"},
input_contract="AssessmentRequest",
output_contract="AssessmentResult",
diagnostics_namespace="runtime.assessment",
provenance_prefix="runtime.assessment",
docs=["docs/runtime-context-forms-assessments.md"],
examples=["examples/runtime/concept-note-assessment.contract.md"],
metadata={"provider_implementation": "external adapter required"},
)