@@ -859,26 +859,40 @@ func enforceCanonicalScopeMetadataForInit(fs fsys.FS, scopeRoot, doltDatabase st
859859}
860860
861861func normalizeCanonicalBdScopeFiles (cityPath string , cfg * config.City ) error {
862- if cfg == nil || ! cityUsesBdStoreContract ( cityPath ) {
862+ if cfg == nil {
863863 return nil
864864 }
865865 resolveRigPaths (cityPath , cfg .Rigs )
866- if err := ensureCanonicalScopeMetadataForInit (fsys.OSFS {}, cityPath , defaultScopeDoltDatabase (cityPath , cityPath , config .EffectiveHQPrefix (cfg ))); err != nil {
867- return fmt .Errorf ("canonicalizing city metadata: %w" , err )
866+ if scopeUsesManagedBdStoreContract (cityPath , cityPath ) {
867+ if err := ensureCanonicalScopeMetadataForInit (fsys.OSFS {}, cityPath , defaultScopeDoltDatabase (cityPath , cityPath , config .EffectiveHQPrefix (cfg ))); err != nil {
868+ return fmt .Errorf ("canonicalizing city metadata: %w" , err )
869+ }
868870 }
869871 for i := range cfg .Rigs {
872+ if ! rigUsesManagedBdStoreContract (cityPath , cfg .Rigs [i ]) {
873+ continue
874+ }
870875 if err := ensureCanonicalScopeMetadataForInit (fsys.OSFS {}, cfg .Rigs [i ].Path , defaultScopeDoltDatabase (cityPath , cfg .Rigs [i ].Path , cfg .Rigs [i ].EffectivePrefix ())); err != nil {
871876 return fmt .Errorf ("canonicalizing rig %q metadata: %w" , cfg .Rigs [i ].Name , err )
872877 }
873878 }
874- if err := syncConfiguredDoltPortFiles (cityPath , rawBeadsProvider ( cityPath ), cfg .Dolt , config .EffectiveHQPrefix (cfg ), cfg .Rigs ); err != nil {
879+ if err := syncConfiguredDoltPortFiles (cityPath , cfg .Dolt , config .EffectiveHQPrefix (cfg ), cfg .Rigs ); err != nil {
875880 return fmt .Errorf ("syncing canonical dolt config: %w" , err )
876881 }
877882 return nil
878883}
879884
880- func syncConfiguredDoltPortFiles (cityPath , provider string , cityDolt config.DoltConfig , cityPrefix string , rigs []config.Rig ) error {
881- if ! providerUsesBdStoreContract (provider ) {
885+ func syncConfiguredDoltPortFiles (cityPath string , cityDolt config.DoltConfig , cityPrefix string , rigs []config.Rig ) error {
886+ resolveRigPaths (cityPath , rigs )
887+ cityUsesBd := scopeUsesManagedBdStoreContract (cityPath , cityPath )
888+ anyRigUsesBd := false
889+ for _ , rig := range rigs {
890+ if rigUsesManagedBdStoreContract (cityPath , rig ) {
891+ anyRigUsesBd = true
892+ break
893+ }
894+ }
895+ if ! cityUsesBd && ! anyRigUsesBd {
882896 return nil
883897 }
884898 // .beads/config.yaml is a bd compatibility mirror, not the canonical
@@ -895,11 +909,15 @@ func syncConfiguredDoltPortFiles(cityPath, provider string, cityDolt config.Dolt
895909 if cityState .EndpointOrigin == contract .EndpointOriginManagedCity {
896910 managedPort = currentDoltPort (cityPath )
897911 }
898- if err := normalizeScopeDoltConfig (cityPath , cityState ); err != nil {
899- return err
900- }
901- if managedPort != "" {
902- writeDoltPortFile (cityPath , managedPort )
912+ if cityUsesBd {
913+ if err := normalizeScopeDoltConfig (cityPath , cityState ); err != nil {
914+ return err
915+ }
916+ if managedPort != "" {
917+ writeDoltPortFile (cityPath , managedPort )
918+ } else {
919+ removeDoltPortFile (cityPath )
920+ }
903921 } else {
904922 removeDoltPortFile (cityPath )
905923 }
@@ -909,6 +927,10 @@ func syncConfiguredDoltPortFiles(cityPath, provider string, cityDolt config.Dolt
909927 if strings .TrimSpace (rig .Path ) == "" {
910928 continue
911929 }
930+ if ! rigUsesManagedBdStoreContract (cityPath , rig ) {
931+ removeDoltPortFile (rig .Path )
932+ continue
933+ }
912934 rigState , err := syncDesiredRigDoltConfigState (cityPath , rig , cityState )
913935 if err != nil {
914936 return err
@@ -1021,7 +1043,7 @@ func wrapInvalidEndpointStateError(scope string, err error) error {
10211043}
10221044
10231045func validateCanonicalCompatDoltDrift (cityPath string , cfg * config.City ) error {
1024- if cfg == nil || ! cityUsesBdStoreContract (cityPath ) {
1046+ if cfg == nil || ! workspaceUsesManagedBdStoreContract (cityPath , cfg . Rigs ) {
10251047 return nil
10261048 }
10271049 cityResolved , err := contract .ResolveScopeConfigState (fsys.OSFS {}, cityPath , cityPath , config .EffectiveHQPrefix (cfg ))
0 commit comments