|
|
@@ -19,8 +19,8 @@ from sqlalchemy.ext.asyncio import (
|
|
|
from script_build_host.application.legacy_projection import LegacyDetailProjectionService
|
|
|
from script_build_host.domain.artifacts import (
|
|
|
ArtifactState,
|
|
|
+ DirectionArtifact,
|
|
|
DirectionGoal,
|
|
|
- ScriptDirectionArtifactV1,
|
|
|
)
|
|
|
from script_build_host.domain.errors import PublicationReadbackMismatch
|
|
|
from script_build_host.domain.phase_three_artifacts import (
|
|
|
@@ -29,6 +29,7 @@ from script_build_host.domain.phase_three_artifacts import (
|
|
|
canonicalize_legacy_projection,
|
|
|
)
|
|
|
from script_build_host.domain.phase_two_artifacts import (
|
|
|
+ GoalCoverage,
|
|
|
ScriptElementV1,
|
|
|
ScriptParagraphElementLinkV1,
|
|
|
ScriptParagraphV1,
|
|
|
@@ -79,7 +80,10 @@ def _structured(direction_ref: str) -> StructuredScriptArtifactV1:
|
|
|
),
|
|
|
elements=(ScriptElementV1(30, "hook", "形式", "opening"),),
|
|
|
paragraph_element_links=(ScriptParagraphElementLinkV1(20, 30),),
|
|
|
- source_artifact_refs=(),
|
|
|
+ source_artifact_refs=("script-build://artifact-versions/2",),
|
|
|
+ goal_coverage=(
|
|
|
+ GoalCoverage("goal-1", ("script-build://artifact-versions/2",)),
|
|
|
+ ),
|
|
|
evidence_refs=(),
|
|
|
acceptance_notes=(),
|
|
|
)
|
|
|
@@ -145,10 +149,16 @@ async def _publication_fixture(
|
|
|
task_id="direction",
|
|
|
attempt_id=f"direction-{build_id}",
|
|
|
spec_version=1,
|
|
|
- artifact=ScriptDirectionArtifactV1(
|
|
|
- goals=(DirectionGoal("goal", "deliver", "source"),),
|
|
|
+ artifact=DirectionArtifact(
|
|
|
+ goals=(
|
|
|
+ DirectionGoal(
|
|
|
+ "goal",
|
|
|
+ "deliver",
|
|
|
+ "source",
|
|
|
+ success_criteria=("the delivery closes",),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
evidence_refs=("script-build://artifact-versions/777",),
|
|
|
- legacy_markdown="# Direction",
|
|
|
),
|
|
|
)
|
|
|
script = _structured(f"script-build://artifact-versions/{direction.artifact_version_id}")
|