@@ -495,7 +495,7 @@ func TestBuildServeStartupDiagnostics_SubscriptionRPCOnly(t *testing.T) {
495495 StateDir : "/tmp/agent/state" ,
496496 Workspace : "/tmp/agent/workspace" ,
497497 ConfigSource : "/tmp/agent/agent.yaml" ,
498- RoleSource : "/tmp/agent/ROLE .md" ,
498+ RoleSource : "/tmp/agent/AGENTS .md" ,
499499 RoleInferred : "pm" ,
500500 ServeInput : "-" ,
501501 InputMode : "subscription" ,
@@ -515,7 +515,7 @@ func TestBuildServeStartupDiagnostics_SubscriptionRPCOnly(t *testing.T) {
515515 if diag .SubscriptionReason != "empty_repos" {
516516 t .Fatalf ("subscription_reason = %q, want empty_repos" , diag .SubscriptionReason )
517517 }
518- if diag .RoleSource != "/tmp/agent/ROLE .md" {
518+ if diag .RoleSource != "/tmp/agent/AGENTS .md" {
519519 t .Fatalf ("role_source = %q" , diag .RoleSource )
520520 }
521521 if diag .RoleInferred != "pm" {
@@ -579,7 +579,7 @@ func TestWriteServeStartupDiagnostics(t *testing.T) {
579579 td := t .TempDir ()
580580 diag := serveStartupDiagnostics {
581581 AgentID : "main" ,
582- RoleSource : filepath .Join (td , "ROLE .md" ),
582+ RoleSource : filepath .Join (td , "AGENTS .md" ),
583583 RoleInferred : "pm" ,
584584 Preview : "experimental" ,
585585 }
@@ -961,20 +961,20 @@ func TestClose_StopsControllerAndRemovesSocket(t *testing.T) {
961961 }
962962}
963963
964- func TestInferControllerRole (t * testing.T ) {
964+ func TestControllerRoleLabelForPersona (t * testing.T ) {
965965 t .Parallel ()
966966
967- if got := inferControllerRole ("ROLE: PM\n Product manager" ); got != "pm" {
968- t .Fatalf ("infer pm = %q" , got )
967+ tests := map [string ]string {
968+ "pm" : "pm" ,
969+ "autonomous" : "pm" ,
970+ "executor" : "dev" ,
971+ "github_solver" : "dev" ,
972+ "unknown" : "pm" ,
969973 }
970- if got := inferControllerRole ("ROLE: DEV\n Software engineer" ); got != "dev" {
971- t .Fatalf ("infer dev = %q" , got )
972- }
973- if got := inferControllerRole ("unknown" ); got != "pm" {
974- t .Fatalf ("infer default = %q" , got )
975- }
976- if got := inferControllerRole ("---\n role: dev\n ---\n body" ); got != "dev" {
977- t .Fatalf ("infer frontmatter dev = %q" , got )
974+ for role , want := range tests {
975+ if got := controllerRoleLabelForPersona (role ); got != want {
976+ t .Fatalf ("controllerRoleLabelForPersona(%q) = %q, want %q" , role , got , want )
977+ }
978978 }
979979}
980980
@@ -1058,9 +1058,10 @@ func TestLoadControllerRole(t *testing.T) {
10581058 t .Parallel ()
10591059
10601060 agentHome := t .TempDir ()
1061- rolePath := filepath .Join (agentHome , "ROLE.md" )
1062- if err := os .WriteFile (rolePath , []byte ("ROLE: DEV\n " ), 0o644 ); err != nil {
1063- t .Fatalf ("write role: %v" , err )
1061+ agentsPath := filepath .Join (agentHome , "AGENTS.md" )
1062+ content := "---\n persona_contract: v2\n role: executor\n ---\n # AGENTS.md\n body\n "
1063+ if err := os .WriteFile (agentsPath , []byte (content ), 0o644 ); err != nil {
1064+ t .Fatalf ("write AGENTS.md: %v" , err )
10641065 }
10651066 roleLabel , err := loadControllerRole (agentHome )
10661067 if err != nil {
@@ -1075,12 +1076,12 @@ func TestLoadControllerRole_EmptyFile(t *testing.T) {
10751076 t .Parallel ()
10761077
10771078 agentHome := t .TempDir ()
1078- rolePath := filepath .Join (agentHome , "ROLE .md" )
1079- if err := os .WriteFile (rolePath , []byte (" \n " ), 0o644 ); err != nil {
1080- t .Fatalf ("write role : %v" , err )
1079+ agentsPath := filepath .Join (agentHome , "AGENTS .md" )
1080+ if err := os .WriteFile (agentsPath , []byte (" \n " ), 0o644 ); err != nil {
1081+ t .Fatalf ("write AGENTS.md : %v" , err )
10811082 }
10821083 if _ , err := loadControllerRole (agentHome ); err == nil {
1083- t .Fatalf ("expected error for empty ROLE .md" )
1084+ t .Fatalf ("expected error for empty AGENTS .md" )
10841085 }
10851086}
10861087
0 commit comments