@@ -184,8 +184,8 @@ def s2():
184184 draft = drafts [0 ]
185185 if draft .reference_post_id :
186186 detail += f", draft ref_id={ draft .reference_post_id } "
187- if draft .post_format :
188- detail += f", post_format ={ draft .post_format } "
187+ if draft .reference_type :
188+ detail += f", reference_type ={ draft .reference_type } "
189189
190190 evaluation = {
191191 "angle" : d .angle ,
@@ -312,7 +312,7 @@ def s4():
312312 external_url = "https://x.com/user/status/s4_external_123" ,
313313 )
314314
315- # Create a Decision + Draft with post_format ="quote" and reference_post_id
315+ # Create a Decision + Draft with reference_type ="quote" and reference_post_id
316316 decision = Decision (
317317 id = generate_id ("decision" ),
318318 project_id = harness .project_id ,
@@ -331,7 +331,7 @@ def s4():
331331 platform = "x" ,
332332 content = "This post references a previous one. #test" ,
333333 status = "scheduled" ,
334- post_format = "quote" ,
334+ reference_type = "quote" ,
335335 reference_post_id = seeded_post .id ,
336336 )
337337 insert_draft (harness .conn , draft )
@@ -423,7 +423,7 @@ def s5():
423423 )
424424 insert_post (harness .conn , first_post )
425425
426- # Create second Decision + Draft for "current" commit in same arc (no post_format set)
426+ # Create second Decision + Draft for "current" commit in same arc (no reference_type set)
427427 second_decision = Decision (
428428 id = generate_id ("decision" ),
429429 project_id = harness .project_id ,
@@ -443,7 +443,7 @@ def s5():
443443 platform = "x" ,
444444 content = "Second post continuing the arc." ,
445445 status = "scheduled" ,
446- # Intentionally no post_format or reference_post_id
446+ # Intentionally no reference_type or reference_post_id
447447 )
448448 insert_draft (harness .conn , second_draft )
449449 harness .conn .commit ()
@@ -463,29 +463,30 @@ def s5():
463463 ):
464464 result = _post_draft (harness .conn , second_draft , config )
465465
466- # _post_draft should have detected arc continuation and set post_format + reference_post_id
466+ # _post_draft should have detected arc continuation and set reference_type + reference_post_id
467467 updated = ops .get_draft (harness .conn , second_draft .id )
468- assert updated .post_format == "quote" , (
469- f"Expected post_format ='quote', got '{ updated .post_format } '"
468+ assert updated .reference_type == "quote" , (
469+ f"Expected reference_type ='quote', got '{ updated .reference_type } '"
470470 )
471471 assert updated .reference_post_id == first_post .id , (
472472 f"Expected reference_post_id='{ first_post .id } ', got '{ updated .reference_post_id } '"
473473 )
474474 assert result .success , f"Post failed: { result .error } "
475475
476476 return (
477- f"Arc continuation: post_format ={ updated .post_format } , "
477+ f"Arc continuation: reference_type ={ updated .reference_type } , "
478478 f"reference_post_id={ updated .reference_post_id } "
479479 )
480480
481481 runner .run_scenario ("S5" , "Arc continuation regression" , s5 )
482482
483483 # S6: Deterministic drafting pipeline
484484 def s6 ():
485- from types import SimpleNamespace
486485
486+ from social_hook .config .platforms import resolve_platform
487487 from social_hook .config .project import load_project_config
488- from social_hook .drafting import draft_for_platforms
488+ from social_hook .drafting import DraftingIntent , PlatformSpec
489+ from social_hook .drafting import draft as run_draft
489490 from social_hook .filesystem import generate_id
490491 from social_hook .llm .dry_run import DryRunContext
491492 from social_hook .llm .prompts import assemble_evaluator_context
@@ -517,21 +518,6 @@ def s6():
517518 insert_decision (harness .conn , decision )
518519 harness .conn .commit ()
519520
520- # Build evaluation with reference_posts pointing to seeded post
521- evaluation = SimpleNamespace (
522- decision = "draft" ,
523- reasoning = "S6 test" ,
524- angle = "Feature showcase" ,
525- episode_type = "milestone" ,
526- post_category = "arc" ,
527- arc_id = None ,
528- new_arc_theme = None ,
529- media_tool = None ,
530- reference_posts = [seeded_post .id ],
531- commit_summary = "WS3 adapters implementation" ,
532- include_project_docs = False ,
533- )
534-
535521 config = harness .load_config ()
536522 project_config = load_project_config (str (harness .repo_path ))
537523 commit = parse_commit_info (COMMITS ["major_feature" ], str (harness .repo_path ))
@@ -547,33 +533,50 @@ def s6():
547533
548534 project = ops .get_project (harness .conn , harness .project_id )
549535
550- draft_results = draft_for_platforms (
536+ # Build DraftingIntent with reference_posts
537+ platform_specs = []
538+ for pname , pcfg in config .platforms .items ():
539+ if pcfg .enabled :
540+ rpcfg = resolve_platform (pname , pcfg , config .scheduling )
541+ platform_specs .append (PlatformSpec (platform = pname , resolved = rpcfg ))
542+
543+ intent = DraftingIntent (
544+ decision = "draft" ,
545+ reasoning = "S6 test" ,
546+ angle = "Feature showcase" ,
547+ post_category = "arc" ,
548+ reference_posts = [seeded_post .id ],
549+ commit_summary = "WS3 adapters implementation" ,
550+ decision_id = decision .id ,
551+ platforms = platform_specs ,
552+ )
553+
554+ draft_results = run_draft (
555+ intent ,
551556 config ,
552557 harness .conn ,
553558 db ,
554559 project ,
555- decision_id = decision .id ,
556- evaluation = evaluation ,
557- context = context ,
558- commit = commit ,
560+ context ,
561+ commit ,
559562 project_config = project_config ,
560563 verbose = runner .verbose ,
561564 )
562565
563- assert len (draft_results ) > 0 , "No drafts created by draft_for_platforms "
566+ assert len (draft_results ) > 0 , "No drafts created by draft() "
564567
565- draft = draft_results [0 ].draft
566- assert draft .reference_post_id == seeded_post .id , (
567- f"Expected reference_post_id={ seeded_post .id } , got { draft .reference_post_id } "
568+ draft_obj = draft_results [0 ].draft
569+ assert draft_obj .reference_post_id == seeded_post .id , (
570+ f"Expected reference_post_id={ seeded_post .id } , got { draft_obj .reference_post_id } "
568571 )
569- assert draft . post_format == "quote" , (
570- f"Expected post_format ='quote', got '{ draft . post_format } '"
572+ assert draft_obj . reference_type == "quote" , (
573+ f"Expected reference_type ='quote', got '{ draft_obj . reference_type } '"
571574 )
572575
573576 detail = (
574- f"Draft ref_id={ draft .reference_post_id } , "
575- f"post_format= { draft . post_format } , "
576- f"content_len={ len (draft .content )} "
577+ f"Draft ref_id={ draft_obj .reference_post_id } , "
578+ f"reference_type= { draft_obj . reference_type } , "
579+ f"content_len={ len (draft_obj .content )} "
577580 )
578581
579582 runner .add_review_item (
@@ -582,15 +585,15 @@ def s6():
582585 decision = "draft" ,
583586 episode_type = "milestone" ,
584587 reasoning = "S6 test — seeded evaluation with reference_posts" ,
585- draft_content = draft .content ,
588+ draft_content = draft_obj .content ,
586589 evaluation = {
587590 "reference_posts" : [seeded_post .id ],
588- "post_format " : draft . post_format ,
589- "reference_post_id" : draft .reference_post_id ,
591+ "reference_type " : draft_obj . reference_type ,
592+ "reference_post_id" : draft_obj .reference_post_id ,
590593 },
591594 review_question = (
592595 "Does the draft reference the seeded post? "
593- "Is reference_post_id and post_format ='quote' set correctly?"
596+ "Is reference_post_id and reference_type ='quote' set correctly?"
594597 ),
595598 )
596599 return detail
0 commit comments