|
|
@@ -32,10 +32,11 @@ from script_build_host.agents.validation import (
|
|
|
)
|
|
|
from script_build_host.domain.artifacts import (
|
|
|
ArtifactKind,
|
|
|
- Criterion,
|
|
|
+ DirectionArtifact,
|
|
|
+ DirectionConstraint,
|
|
|
DirectionGoal,
|
|
|
+ DirectionPreference,
|
|
|
EvidenceRecordV1,
|
|
|
- ScriptDirectionArtifactV1,
|
|
|
)
|
|
|
from script_build_host.domain.canonical_json import canonical_sha256
|
|
|
from script_build_host.domain.errors import ArtifactNotFound, ProtocolViolation
|
|
|
@@ -750,13 +751,12 @@ class LegacyScriptToolGateway:
|
|
|
self,
|
|
|
*,
|
|
|
goals: Sequence[Mapping[str, Any]],
|
|
|
- criteria: Sequence[Mapping[str, Any]],
|
|
|
- domain_criteria: Sequence[Mapping[str, Any]],
|
|
|
+ constraints: Sequence[Mapping[str, Any]],
|
|
|
+ preferences: Sequence[Mapping[str, Any]],
|
|
|
topic_refs: Sequence[str],
|
|
|
persona_refs: Sequence[str],
|
|
|
strategy_refs: Sequence[str],
|
|
|
evidence_refs: Sequence[str],
|
|
|
- legacy_markdown: str,
|
|
|
context: Mapping[str, Any],
|
|
|
) -> dict[str, Any]:
|
|
|
await self.ensure_dispatch_allowed(context)
|
|
|
@@ -767,34 +767,44 @@ class LegacyScriptToolGateway:
|
|
|
raise ProtocolViolation(
|
|
|
"direction references evidence outside frozen child ACCEPT decisions"
|
|
|
)
|
|
|
- artifact = ScriptDirectionArtifactV1(
|
|
|
+ artifact = DirectionArtifact(
|
|
|
goals=tuple(
|
|
|
DirectionGoal(
|
|
|
goal_id=redact_text(str(item["goal_id"])),
|
|
|
statement=redact_text(str(item["statement"])),
|
|
|
- rationale=redact_text(str(item.get("rationale", ""))),
|
|
|
+ rationale=redact_text(str(item["rationale"])),
|
|
|
+ parent_goal_id=(
|
|
|
+ redact_text(str(item["parent_goal_id"]))
|
|
|
+ if item.get("parent_goal_id") is not None
|
|
|
+ else None
|
|
|
+ ),
|
|
|
+ success_criteria=tuple(
|
|
|
+ redact_text(str(value)) for value in item["success_criteria"]
|
|
|
+ ),
|
|
|
)
|
|
|
for item in goals
|
|
|
),
|
|
|
- criteria=tuple(
|
|
|
- Criterion(
|
|
|
- redact_text(str(item["criterion_id"])),
|
|
|
- redact_text(str(item["description"])),
|
|
|
+ constraints=tuple(
|
|
|
+ DirectionConstraint(
|
|
|
+ constraint_id=redact_text(str(item["constraint_id"])),
|
|
|
+ statement=redact_text(str(item["statement"])),
|
|
|
+ rationale=redact_text(str(item.get("rationale", ""))),
|
|
|
)
|
|
|
- for item in criteria
|
|
|
+ for item in constraints
|
|
|
),
|
|
|
- domain_criteria=tuple(
|
|
|
- Criterion(
|
|
|
- redact_text(str(item["criterion_id"])),
|
|
|
- redact_text(str(item["description"])),
|
|
|
+ preferences=tuple(
|
|
|
+ DirectionPreference(
|
|
|
+ preference_id=redact_text(str(item["preference_id"])),
|
|
|
+ statement=redact_text(str(item["statement"])),
|
|
|
+ rationale=redact_text(str(item.get("rationale", ""))),
|
|
|
+ priority=(int(item["priority"]) if item.get("priority") is not None else None),
|
|
|
)
|
|
|
- for item in domain_criteria
|
|
|
+ for item in preferences
|
|
|
),
|
|
|
topic_refs=_safe_text_tuple(topic_refs),
|
|
|
persona_refs=_safe_text_tuple(persona_refs),
|
|
|
strategy_refs=_safe_text_tuple(strategy_refs),
|
|
|
evidence_refs=tuple(evidence_refs),
|
|
|
- legacy_markdown=redact_text(legacy_markdown),
|
|
|
)
|
|
|
version, ref = await self.artifacts.freeze(
|
|
|
script_build_id=binding.script_build_id,
|