oyvindberg / bleep

A bleeping fast scala build tool!
MIT License
149 stars 21 forks source link

Eviction error with version range #434

Open nafg opened 4 days ago

nafg commented 4 days ago

When I try to depend on com.google.firebase:firebase-admin:9.4.1 in my scripts project, the build can't resolve. This seems to be caused by a transitive dependency of Bleep, org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.20.1, using range syntax for its dependency, as you can confirm at https://central.sonatype.com/artifact/org.eclipse.lsp4j/org.eclipse.lsp4j.jsonrpc/0.20.1/dependencies.

Is this supposed to work?

Full output ``` 📙 (2167097 ms) Refreshing /home/naftoli/repositories/gitlab.com/bookphone/bookphone/.bleep/builds/bsp/.bloop... 📗 (2167406 ms) Resolving dependencies failed. Retrying. Error: Conflicting dependencies: com.google.code.gson:gson:2.11.0 or [2.9.1,2.11) wanted by com.google.cloud:google-cloud-firestore:3.26.5 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.cloud:google-cloud-storage:2.43.1 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.http-client:google-http-client-gson:1.45.0 wants 2.11.0 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.api-client:google-api-client-gson:2.7.0 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.auth:google-auth-library-oauth2-http:1.27.0 │ ├─ com.google.api-client:google-api-client:2.7.0 wants com.google.auth:google-auth-library-oauth2-http:1.23.0 │ │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-storage:2.43.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.oauth-client:google-oauth-client:1.36.0 wants com.google.http-client:google-http-client-gson:1.43.3 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.cloud:google-cloud-storage:2.43.1 └─ com.google.firebase:firebase-admin:9.4.1 org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.20.1 wants [2.9.1,2.11) ├─ ch.epfl.scala:bsp4j:2.1.1 │ └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 │ └─ build.bleep:bleep-core_2.13:0.0.9 └─ org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.20.1 └─ ch.epfl.scala:bsp4j:2.1.1 └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 └─ build.bleep:bleep-core_2.13:0.0.9 [38;5;102m[retriesLeft => 2] 📗 (2167695 ms) Resolving dependencies failed. Retrying. Error: Conflicting dependencies: com.google.code.gson:gson:2.11.0 or [2.9.1,2.11) wanted by com.google.cloud:google-cloud-firestore:3.26.5 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.cloud:google-cloud-storage:2.43.1 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.http-client:google-http-client-gson:1.45.0 wants 2.11.0 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.api-client:google-api-client-gson:2.7.0 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.auth:google-auth-library-oauth2-http:1.27.0 │ ├─ com.google.api-client:google-api-client:2.7.0 wants com.google.auth:google-auth-library-oauth2-http:1.23.0 │ │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-storage:2.43.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.oauth-client:google-oauth-client:1.36.0 wants com.google.http-client:google-http-client-gson:1.43.3 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.cloud:google-cloud-storage:2.43.1 └─ com.google.firebase:firebase-admin:9.4.1 org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.20.1 wants [2.9.1,2.11) ├─ ch.epfl.scala:bsp4j:2.1.1 │ └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 │ └─ build.bleep:bleep-core_2.13:0.0.9 └─ org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.20.1 └─ ch.epfl.scala:bsp4j:2.1.1 └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 └─ build.bleep:bleep-core_2.13:0.0.9 [38;5;102m[retriesLeft => 1] 📗 (2167988 ms) Resolving dependencies failed. Retrying. Error: Conflicting dependencies: com.google.code.gson:gson:2.11.0 or [2.9.1,2.11) wanted by com.google.cloud:google-cloud-firestore:3.26.5 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.cloud:google-cloud-storage:2.43.1 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.http-client:google-http-client-gson:1.45.0 wants 2.11.0 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.api-client:google-api-client-gson:2.7.0 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.auth:google-auth-library-oauth2-http:1.27.0 │ ├─ com.google.api-client:google-api-client:2.7.0 wants com.google.auth:google-auth-library-oauth2-http:1.23.0 │ │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-storage:2.43.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.oauth-client:google-oauth-client:1.36.0 wants com.google.http-client:google-http-client-gson:1.43.3 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.cloud:google-cloud-storage:2.43.1 └─ com.google.firebase:firebase-admin:9.4.1 org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.20.1 wants [2.9.1,2.11) ├─ ch.epfl.scala:bsp4j:2.1.1 │ └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 │ └─ build.bleep:bleep-core_2.13:0.0.9 └─ org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.20.1 └─ ch.epfl.scala:bsp4j:2.1.1 └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 └─ build.bleep:bleep-core_2.13:0.0.9 [38;5;102m[retriesLeft => 0] bleep was not able to refresh the build: Error resolving dependencies for 02-scripts: Conflicting dependencies: com.google.code.gson:gson:2.11.0 or [2.9.1,2.11) wanted by com.google.cloud:google-cloud-firestore:3.26.5 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.cloud:google-cloud-storage:2.43.1 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.http-client:google-http-client-gson:1.45.0 wants 2.11.0 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.api-client:google-api-client-gson:2.7.0 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.auth:google-auth-library-oauth2-http:1.27.0 │ ├─ com.google.api-client:google-api-client:2.7.0 wants com.google.auth:google-auth-library-oauth2-http:1.23.0 │ │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-storage:2.43.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.oauth-client:google-oauth-client:1.36.0 wants com.google.http-client:google-http-client-gson:1.43.3 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.cloud:google-cloud-storage:2.43.1 └─ com.google.firebase:firebase-admin:9.4.1 org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.20.1 wants [2.9.1,2.11) ├─ ch.epfl.scala:bsp4j:2.1.1 │ └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 │ └─ build.bleep:bleep-core_2.13:0.0.9 └─ org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.20.1 └─ ch.epfl.scala:bsp4j:2.1.1 └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 └─ build.bleep:bleep-core_2.13:0.0.9 📙 (2168275 ms) bleep was not able to refresh the build bleep.BleepException$ResolveError: Error resolving dependencies for 02-scripts at bleep.CoursierResolver.force(CoursierResolver.scala:56) at bleep.CoursierResolver.force$(CoursierResolver.scala:22) at bleep.CoursierResolver$TemplatedVersions.force(CoursierResolver.scala:317) at bleep.GenBloopFiles$.translateProject(GenBloopFiles.scala:273) at bleep.GenBloopFiles$InMemory$.apply$$anonfun$1(GenBloopFiles.scala:30) at bleep.internal.rewriteDependentData$Api.rewritten$lzyINIT1$1$$anonfun$1$$anonfun$1(rewriteDependentData.scala:38) at bleep.Lazy$$anon$1.get(Lazy.scala:36) at bleep.Lazy.forceGet(Lazy.scala:13) at bleep.Lazy.forceGet$(Lazy.scala:7) at bleep.Lazy$$anon$1.forceGet(Lazy.scala:30) at bleep.GenBloopFiles$.encodedFiles$$anonfun$1(GenBloopFiles.scala:149) at scala.collection.StrictOptimizedSortedMapOps.map(StrictOptimizedSortedMapOps.scala:30) at scala.collection.StrictOptimizedSortedMapOps.map$(StrictOptimizedSortedMapOps.scala:29) at scala.collection.immutable.TreeMap.map(TreeMap.scala:73) at bleep.GenBloopFiles$.encodedFiles(GenBloopFiles.scala:152) at bleep.GenBloopFiles$SyncToDiskWith.apply(GenBloopFiles.scala:131) at bleep.bootstrap$.go$1$$anonfun$1(bootstrap.scala:82) at scala.util.Either.map(Either.scala:390) at bleep.bootstrap$.go$1(bootstrap.scala:87) at bleep.bootstrap$.from(bootstrap.scala:95) at bleep.bsp.BuildChangeTracker$.bleep$bsp$BuildChangeTracker$$$load(BuildChangeTracker.scala:94) at bleep.bsp.BuildChangeTracker$Impl.$anonfun$2$$anonfun$1(BuildChangeTracker.scala:56) at scala.util.Either.flatMap(Either.scala:360) at bleep.bsp.BuildChangeTracker$Impl.$anonfun$2(BuildChangeTracker.scala:56) at scala.util.Either.flatMap(Either.scala:360) at bleep.bsp.BuildChangeTracker$Impl.ensureBloopUpToDate$$anonfun$1(BuildChangeTracker.scala:60) at java.base@21.0.2/java.util.concurrent.atomic.AtomicReference.updateAndGet(AtomicReference.java:210) at bleep.bsp.BuildChangeTracker$Impl.ensureBloopUpToDate(BuildChangeTracker.scala:81) at bleep.bsp.BleepBspServer.buildTargetCompile(BleepBspServer.scala:159) at java.base@21.0.2/java.lang.reflect.Method.invoke(Method.java:580) at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.lambda$null$0(GenericEndpoint.java:65) at org.eclipse.lsp4j.jsonrpc.services.GenericEndpoint.request(GenericEndpoint.java:120) at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.handleRequest(RemoteEndpoint.java:261) at org.eclipse.lsp4j.jsonrpc.RemoteEndpoint.consume(RemoteEndpoint.java:190) at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.handleMessage(StreamMessageProducer.java:194) at org.eclipse.lsp4j.jsonrpc.json.StreamMessageProducer.listen(StreamMessageProducer.java:94) at org.eclipse.lsp4j.jsonrpc.json.ConcurrentMessageProcessor.run(ConcurrentMessageProcessor.java:113) at java.base@21.0.2/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.base@21.0.2/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base@21.0.2/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base@21.0.2/java.lang.Thread.runWith(Thread.java:1596) at java.base@21.0.2/java.lang.Thread.run(Thread.java:1583) at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:833) at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:211) Caused by: coursier.error.ResolutionError$ConflictingDependencies: Conflicting dependencies: com.google.code.gson:gson:2.11.0 or [2.9.1,2.11) wanted by com.google.cloud:google-cloud-firestore:3.26.5 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.cloud:google-cloud-storage:2.43.1 wants 2.11.0 └─ com.google.firebase:firebase-admin:9.4.1 com.google.http-client:google-http-client-gson:1.45.0 wants 2.11.0 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.api-client:google-api-client-gson:2.7.0 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.auth:google-auth-library-oauth2-http:1.27.0 │ ├─ com.google.api-client:google-api-client:2.7.0 wants com.google.auth:google-auth-library-oauth2-http:1.23.0 │ │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-firestore:3.26.5 │ └─ com.google.firebase:firebase-admin:9.4.1 ├─ com.google.cloud:google-cloud-storage:2.43.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.oauth-client:google-oauth-client:1.36.0 wants com.google.http-client:google-http-client-gson:1.43.3 ├─ com.google.api-client:google-api-client:2.7.0 │ ├─ com.google.api-client:google-api-client-gson:2.7.0 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ ├─ com.google.cloud:google-cloud-storage:2.43.1 │ │ └─ com.google.firebase:firebase-admin:9.4.1 │ └─ com.google.firebase:firebase-admin:9.4.1 └─ com.google.cloud:google-cloud-storage:2.43.1 └─ com.google.firebase:firebase-admin:9.4.1 org.eclipse.lsp4j:org.eclipse.lsp4j.jsonrpc:0.20.1 wants [2.9.1,2.11) ├─ ch.epfl.scala:bsp4j:2.1.1 │ └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 │ └─ build.bleep:bleep-core_2.13:0.0.9 └─ org.eclipse.lsp4j:org.eclipse.lsp4j.generator:0.20.1 └─ ch.epfl.scala:bsp4j:2.1.1 └─ ch.epfl.scala:bloop-rifle_2.13:2.0.0 └─ build.bleep:bleep-core_2.13:0.0.9 at coursier.Resolve$.validate(Resolve.scala:418) at coursier.Resolve.validate0$1(Resolve.scala:160) at coursier.Resolve.$anonfun$ioWithConflicts0$4(Resolve.scala:210) at coursier.util.Task$.$anonfun$flatMap$extension$1(Task.scala:14) at coursier.util.Task$.$anonfun$flatMap$extension$1$adapted(Task.scala:14) at coursier.util.Task$.wrap(Task.scala:82) at coursier.util.Task$.$anonfun$flatMap$2(Task.scala:14) at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:470) ... 6 more [39m 📗 (2182554 ms) Changed: Set(bleep build) 📙 (2182556 ms) Refreshing /home/naftoli/repositories/gitlab.com/bookphone/bookphone/.bleep/builds/bsp/.bloop... 📗 (2183772 ms) wrote bloop files [summary => Changed: 11, Unchanged: 2] 📗 (2183772 ms) bootstrapped in 1217 ms 📗 (2183772 ms) Notifying IDE of 12 changes in build targets 📗 (2183772 ms) Loaded changed build ```
oyvindberg commented 3 days ago

No, this is not meant to work. if you setup a dependency on both projects in sbt you'll get exactly the same error. the tools you have to resolve the situation are also the same:

nafg commented 1 hour ago

Is that because Coursier doesn't support ranges in dependency versions, or is it some other layer? Because IIUC gson:2.11.0 should satisfy the requirements.

nafg commented 1 hour ago

Oh sorry never mind, I forgot that ) means exclusive so jsonrpc:0.20.1 is rejecting 2.11.

nafg commented 1 hour ago

I guess if I want to be safe I should wait on https://github.com/build-server-protocol/build-server-protocol/discussions/703, which then has to percolate through to bleep-rifle and finally bloop...