@@ -46,6 +46,23 @@ impl SimAgent {
4646 }
4747}
4848
49+ /// Primaries in scope for corpus comparison. Prism compares `architecture.py`
50+ /// ONLY (similarity v2: training.py is exempt from corpus/candidate); other
51+ /// domains use every primary.
52+ fn scoped_primaries < ' a > ( req : & ReviewRequest , primaries : & ' a [ ( String , String ) ] ) -> Vec < & ' a str > {
53+ if req. domain_rules . contains ( "Prism domain" ) {
54+ let arch: Vec < & str > = primaries
55+ . iter ( )
56+ . filter ( |( p, _) | p. ends_with ( "architecture.py" ) )
57+ . map ( |( _, s) | s. as_str ( ) )
58+ . collect ( ) ;
59+ if !arch. is_empty ( ) {
60+ return arch;
61+ }
62+ }
63+ primaries. iter ( ) . map ( |( _, s) | s. as_str ( ) ) . collect ( )
64+ }
65+
4966#[ async_trait]
5067impl AgenticBackend for SimAgent {
5168 async fn review ( & self , req : & ReviewRequest ) -> Result < AgenticVerdict , AgenticError > {
@@ -66,25 +83,9 @@ impl AgenticBackend for SimAgent {
6683 return Ok ( v) ;
6784 }
6885
69- // Concatenate primaries for hash / fingerprint (stable order from
70- // request). Prism compares architecture.py ONLY (similarity v2:
71- // training.py is exempt from corpus/candidate); other domains use
72- // every primary.
73- let scoped: Vec < & str > = if req. domain_rules . contains ( "Prism domain" ) {
74- let arch: Vec < & str > = primaries
75- . iter ( )
76- . filter ( |( p, _) | p. ends_with ( "architecture.py" ) )
77- . map ( |( _, s) | s. as_str ( ) )
78- . collect ( ) ;
79- if arch. is_empty ( ) {
80- primaries. iter ( ) . map ( |( _, s) | s. as_str ( ) ) . collect ( )
81- } else {
82- arch
83- }
84- } else {
85- primaries. iter ( ) . map ( |( _, s) | s. as_str ( ) ) . collect ( )
86- } ;
87- let joined = scoped. join ( "\n #--\n " ) ;
86+ // Concatenate the in-scope primaries for hash / fingerprint (stable
87+ // order from request).
88+ let joined = scoped_primaries ( req, & primaries) . join ( "\n #--\n " ) ;
8889 let cand_hash = source_hash_hex ( & joined) ;
8990
9091 for entry in & req. corpus {
@@ -185,9 +186,7 @@ fn telemetry_hooks_verdict(
185186 if !req. domain_rules . contains ( "Prism domain" ) {
186187 return None ;
187188 }
188- let Some ( ( path, src) ) = primaries. iter ( ) . find ( |( p, _) | p. ends_with ( "training.py" ) ) else {
189- return None ;
190- } ;
189+ let ( path, src) = primaries. iter ( ) . find ( |( p, _) | p. ends_with ( "training.py" ) ) ?;
191190 let imports_shim = src. contains ( "prism_telemetry" )
192191 || src. contains ( "ctx[\" telemetry\" ]" )
193192 || src. contains ( "ctx['telemetry']" ) ;
0 commit comments