CONNECT - HTTP/1.1" 404 NR route_not_found

We've bunch of microservices running on-prem kubernetes cluster v.1.19 with Istio 1.9.0. Some of microservice needs to call external API through our company proxy.. What ı would like to do is implement a retry logic for external API call if the service returns 5xx.
So simply,
ServiceA can access ServiceC only through ServiceB in our case.
ServiceA(Pod) -> ServiceB(company proxy) -> ServiceC (api.example.com)
If I removed the proxy-se serviceEntry, I did not have any connection issue but although the logs in  istio-proxy with 0 code likewise below..
Use 'kubectl describe pod/api-dev-7d65d79f8b-c9c55 -n hub-dev' to see all of the containers in this pod.
/usr/src/app $ https_proxy=$HTTPS_PROXY curl -I -L  https://api.example.com 2>/dev/null | head -n 1
HTTP/1.1 200 Connection established

$ kubectl logs -f api-dev-7d65d79f8b-c9c55 -n dev -c istio-proxy
[2021-03-16T09:31:06.620Z] "- - -" 0 - - - "-" 987 4733 43 - "-" "-" "-" "-" "53.xx.xxx.xx:3128" outbound|3128||security-proxy.net <IP_ADDRESS>:40810 53.xx.xx.xx:3128 <IP_ADDRESS>:40808 - -

When I added ServiceEntry proxy-se then I received an 404 NR error where at least ı can see the proper final destination..
I just aware of that there is a similar issue closed but not sure whether Istio 1.9.0 is included with this.. Could you please help me how can I resolve this ?
https://github.com/envoyproxy/envoy/issues/11308
Use 'kubectl describe pod/oneapihub-auth-dev-578977f56c-zxhs9 -n dev' to see all of the containers in this pod.
/usr/src/app $ https_proxy=$HTTPS_PROXY curl -I -L  https://api.example.com 2>/dev/null | head -n 1
HTTP/1.1 404 Not Found

 kubectl logs -f oneapihub-auth-dev-578977f56c-zxhs9 -n dev -c istio-proxy
[2021-03-18T17:30:18.377Z] "CONNECT - HTTP/1.1" 404 NR route_not_found - "-" 0 0 0 - "-" "curl/7.69.1" "c68b6253-32a4-4439-be3b-58df15ed64cc" "api.example.com:443" "-" - - 53.xx.xx.xx:3128 <IP_ADDRESS>:57164 -

I can able to see proxy whereas cant see the api.example.com
$ istioctl pc route oneapihub-auth-dev-578977f56c-zxhs9.dev
NAME                                                                        DOMAINS                                              MATCH                  VIRTUAL SERVICE
3128                                                                        security-proxy.net                                       /*                     proxy-vs.hub-dev

Here are the resources that I created
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: proxy-se
  namespace: dev
spec:
  hosts:
  - security-proxy.net
  ports:
  - number: 3128
    name: http
    protocol: HTTP
  location: MESH_EXTERNAL
  resolution: NONE

---

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: proxy-vs
  namespace: dev
spec:
  hosts:
    - "security-proxy.net"
  http:
    - name: "proxy"
      match:
        - port: 3128
      route:
        - destination:
            host: "security-proxy.net"
            port:
              number: 3128
      timeout: 90s
      retries:
        retryOn: "5xx"
        attempts: 3
        perTryTimeout: 5s
---

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: api.example.com
  namespace: dev
spec:
  hosts:
    - api.example.com
  ports:
    - number: 443
      name: https
      protocol: HTTPS
  resolution: NONE
  location: MESH_EXTERNAL

Looks like the listener only have route for security-proxy.net host but not api.example.com. You probably need to configure a VirtualService to add a route for api.example.com?

hi @bianpengyuan
I just added VirtualService as a below but still get same error.. Could you please let me know whether if I have to change something or not?
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: api.example.com
  namespace: hub-dev
spec:
  hosts:
    - "api.example.com"
  http:
    - name: "api.example.com"
      match:
        - port: 443
      route:
        - destination:
            host: "api.example.com"
            port:
              number: 443
      timeout: 90s
      retries:
        retryOn: "5xx"
        attempts: 3
        perTryTimeout: 5s
---

[2021-03-20T14:04:52.890Z] "CONNECT - HTTP/1.1" 404 NR route_not_found - "-" 0 0 1 - "-" "curl/7.69.1" "f555031e-1c21-452f-90b2-74e39323641c" "api.example.comt:443" "-" - - 53.xx.xx.xx:3128 <IP_ADDRESS>:56214 - -

The virtual service should be set up as matching host api.example.com at port 3128, and route to security-proxy service.

@bianpengyuan , so do I have to only one virtual service ? But the traffic goes first through the security-proxy:3128 and final destination is api.examl.example.com:443 where it is the external API that our service has to access.
Could you please help how the whole virtual service looks like, ı bit confuse really.

Please take a look at https://istio.io/latest/docs/tasks/traffic-management/egress/http-proxy/. Actually the proxy service needs to be defined as a TCP service, instead of HTTP: Although applications use the HTTP CONNECT method to establish connections with HTTPS proxies, you must configure the proxy for TCP traffic, instead of HTTP.

@bianpengyuan but without virtual service I can not able to use retry logic which I need or would like to do.

Yeah, Istio does not yet adopt envoy upstream HTTP CONNECT support. You'd need to use Istio egress gateway to proxy external request and achieves retry etc.

@bianpengyuan is there any roadmap or PR regarding this adaptation for v.1.9.0 ? Sorry for bothering but could you please advise how should I apply virtual service through egress gateway without virtual service?

1.9 was already released a month ago. I am not aware of any plan adding support for HTTP Connect, @howardjohn @lambdai probably would know.

Sorry for bothering but could you please advise how should I apply virtual service through egress gateway without virtual service?

The idea is to use egress gateway to proxy all traffic goes out of the mesh, instead of the http proxy. See https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/#egress-gateway-for-http-traffic for some details.

So in this case, I need to create a virtual service again, right ?

So in this case, I need to create a virtual service again, right ?

Yeah with egress gateway, you no longer need to sent request with https_proxy, but instead using virtual service to route request from the sidecar to egress and egress to external API service. You can configure retry either at egress or at sidecar via virtual service too.

So in this case, I need to create a virtual service again, right ?

Yeah with egress gateway, you no longer need to sent request with https_proxy, but instead using virtual service to route request from the sidecar to egress and egress to external API service. You can configure retry either at egress or at sidecar via virtual service too.

@bianpengyuan,
So first confusion, should I specify the addreses as a IP ? Cause we do not have static IP where we should use DNS instead of IP ?
Unfortunately I could not able to find specific examples that covers this case thus is that possible to share how the resources looks like just for reference
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: proxy
spec:
  hosts:
  - my-company-proxy.com # ignored
  addresses:
  - $PROXY_IP/32
  ports:
  - number: $PROXY_PORT
    name: tcp
    protocol: TCP
  location: MESH_EXTERNAL
EOF

What are you trying to configure. A service entry for api.example.com? You don't need to specify addresses. There are plenty examples here: https://istio.io/latest/docs/reference/config/networking/service-entry/

@bianpengyuan as I mentioned earlier ı would like to apply a retry logic for api.example.com.443 which goes through our company proxy service-proxy:3128. So currently Istio do not handle CONNECT method so as a workaround, as you mentioned before  use egress gateway to proxy all traffic goes out of the mesh, but how ?

Do I have to create a separate service entries for service-proxy:3128 and api.example.com:443 ?
Do I have to create a separate virtual services for service-proxy:3128 and api.example.com:443 ?

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: proxy-se
spec:
  hosts:
  - security-prox
  ports:
  - number: 3128
    name: http
    protocol: HTTP
  location: MESH_EXTERNAL
  resolution: NONE

 apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: api-example.com
spec:
  hosts:
  - api-example.com
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  location: MESH_EXTERNAL
  resolution: NONE

---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: istio-egressgateway
spec:
  selector:
    istio: egressgateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - api.example.com

---

$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: api.example.com-through-egress-gateway
spec:
  hosts:
  - api.example.com
  gateways:
  - istio-egressgateway
  - mesh
  http:
  - match:
    - gateways:
      - mesh
      port: 80
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        port:
          number: 80
      weight: 100
  - match:
    - gateways:
      - istio-egressgateway
      port: 80
    route:
    - destination:
        host: api.example.com
        port:
          number: 443
      weight: 100
    retries:
      retryOn: "5xx"
      attempts: 3
      perTryTimeout: 5s
EOF

What I am saying is to replace your company proxy with egress gateway proxy. instead of app -> corp proxy -> external api, use app -> egress gateway -> external api. If you have to go through the corp http proxy, Istio HTTP level routing simply does not work and you have to rely on IP based routing (i.e. https://istio.io/latest/docs/tasks/traffic-management/egress/http-proxy/).
If app -> egress gateway -> external api is acceptable for you, the doc here should be good enough, no? https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/#egress-gateway-for-https-traffic

Ok, ı guess this is clear now let me test it to see how it will work..
But as I understood I need to create a two different service entry which one for corp proxy to replace our corp proxy.. After ı completed this step, I need to create a service entry and gateway and virtual service as you mentioned herhttps://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway-tls-origination/ where I can use the retry logic here for api.example.com:443 , am I right ?


cannot resolve error with create react app build script

doesn't seem to work well with create-react-app, I have no issue on development but can't run npm run build, it throw cannot resolve module error.

Please provide more information: the code, file layout, if you've ejected, babel config, and the full error message.

my bad, can't use .babelrc but need to eject it.


Unable to install library

For updating diagrams, I'm trying to install the dependencies to update the OCI icon library. In order to do so, according to collab guide here: https://github.com/dralquinta/diagrams/blob/master/CONTRIBUTING.md I need to install round depedency.
When trying to do so, according to guide, I get no response from repo:
[opc@dalquintdevhubscl diagrams]$ go get github.com/mingrammer/round

And then when trying to run autogen.sh in diagrams I get:
[opc@dalquintdevhubscl diagrams]$ ./autogen.sh
round is not installed

My dependency script looks like this:
#!/bin/bash
set -xe

go get github.com/mingrammer/round
sudo pip3 install black
FILE=Inkscape-3bf5ae0-x86_64.AppImage
if [ ! -f "$FILE" ]; then
    wget --no-check-certificate https://inkscape.org/ko/gallery/item/29256/Inkscape-3bf5ae0-x86_64.AppImage
    chmod u+x ${FILE}
    ln -s ${FILE} inkview
fi

Could you kindly let me know if there is something wrong with the installation process I'm following? I don't see anything evident at this point.
Thanks

I am also having this issue

+1


Does VLMEvalKit support Paged Attention evaluation?

Thanks for your great work.
I would love to know if VLMEvalKit supports the Paged Attention inference? If it does, how can I use the Paged Attention for inference? Thanks.

Hi,
Thank you for reaching out regarding the use of Paged Attention with VLMEvalkit.
Currently, VLMEvalkit does not provide specific support for Paged Attention inference. If you intend to utilize Paged Attention, please verify whether your model supports this feature before proceeding.
We appreciate your understanding and are happy to assist with any further questions or clarifications you may need.


COMPARISON: tmm77 CAI impl for comparison

NOTE (Draft by intention)
This PR is by intention a draft and is not intended to be merged. It may be eventually but it should serve mainly as a reference for discussions.

This PR is for comparing the current implementation of the ROCm/cupy master branch CUDA Array Interface (CAI) with the implementation from an internal repository, which was created by @tmm77.
The changes implemented by the PR perform better when testing another internal application while
the current ROCm/cupy master branch implementation breaks some of the tests.

@AdrianAbeyta  Can you comment on where you see fundamental differences?
Note that @tmm77 's work is based on an older version of the ROCm/cupy repo, the work might have not have seen all the latest developments. For example, @tmm77  has a couple of routines raise RuntimeError because of operations that were supposedly unsupported at the time when @tmm77  created their PR.

Update (This PR also causes failures when testing internal application):
This development also cause stest failures when testing the internal application.
Deeper investigation seems necessary.


Update styles.css

Please always provide the GitHub issue(s) your PR is for, as well as test URLs where your change can be observed (before and after):
Fix #
Test URLs:

Before: https://main--demobank--vvedagiri.hlx.page/
After: https://branch1--demobank--vvedagiri.hlx.page/

commit


image_button not working

Hi there!
I can't get the image_button to return true. If I change my code to use a "normal" button, everything works fine, but the image_button seems to be broken in pyimgui.
if (imgui.image_button(texture, width, height)):
        # shows the image, but never prints "Yay"
        print("Yay")

...

if (imgui.button("test")):
        # Obviously no image, but prints "Yay" when clicked
        print("Yay")

I don't think I'm doing something wrong. Can you confirm this issue?

Hi, I have tested it in my environment and it works fine:

Can you tell me what OS are you running and what is your rendering backend? If you're running windows it may be possible that this is some kind of output buffering problem. Have you tried doing something different than printing inside of your if imgui.image_button(...):? Maybe try using exit() or raising and exception?

Also the information about your Python version and list of versions of additional Python libraries may be useful here.

Interesting. I just checked it again and it works on this system just fine as well. On my other system it still doesn't work.
Both systems run Gentoo Linux, the backend used is pygame.
My desktop runs python 3.4.6, my notebook runs 3.6.1. The notebook is the one, were the image_button does not work. I just downgraded to 3.4.6 again, but that did not fix the problem.
Both systems use virtualenv with exactly the same libraries installed, according to pip list. I don't really know what could possibly make this difference...

Interesting. I just checked it again and it works on this system just fine as well. On my other system it still doesn't work.
Both systems run Gentoo Linux, the backend used is pygame.
My desktop runs python 3.4.6, my notebook runs 3.6.1. The notebook is the one, were the image_button does not work. I just downgraded to 3.4.6 again, but that did not fix the problem.
Both systems use virtualenv with exactly the same libraries installed, according to pip list. I don't really know what could possibly make this difference...
By the way, the actual code I try to run is more complicated than the print, I just tried to find a minimal example.

@Gotos thanks for all the info. It sounds weird indeed. I will try to run my snippet in different environments to see if I can reproduce it. It would be great if you could create a minimal script that reproduces the issue in one of your environment so I could try to run it in different vagrant boxes to see if it is system-specific problem.
Also I found one thing in core ImGui code that may result in such behavior. ImgGui uses a texture_id value (a void * pointer) as a widget id. By default this leads to assumption that every separate image button should have different texture id pointer, i.e. if two buttons have the same textures then they are treated as the same unique widget. Are you maybe using the same textures for multiple buttons?
If this is the case, we will have to add either add the option to use push/pop methods for id scopes or change the was how texture pointers are handled on pyimgui side.

Hi o/
Here's the minimal script. I can't currently confirm that it runs with my over system cause I'm not currently at home, but on my laptop this does show the button but the print is not executed.
from __future__ import absolute_import

import sys

import pygame
from OpenGL.GL import *

from imgui.integrations.pygame import PygameRenderer
import imgui

def loadImage(image):
    textureSurface = pygame.transform.flip(image, False, True)

    textureData = pygame.image.tostring(textureSurface, "RGBA", 1)

    width = textureSurface.get_width()
    height = textureSurface.get_height()

    texture = glGenTextures(1)
    glBindTexture(GL_TEXTURE_2D, texture)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,
                 GL_UNSIGNED_BYTE, textureData)

    return texture, width, height

def main():
    pygame.init()

    size = 800, 600

    pygame.display.set_mode(size, pygame.DOUBLEBUF | pygame.OPENGL)

    io = imgui.get_io()
    io.fonts.add_font_default()
    io.display_size = size

    renderer = PygameRenderer()

    while 1:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

            renderer.process_event(event)

        imgui.new_frame()

        texture, width, height = loadImage(pygame.image.load("test.png"))

        imgui.begin("Custom window", True)
        if imgui.image_button(texture, width, height):
            print("Yay")
        imgui.end()

        # note: cannot use screen.fill((1, 1, 1)) because pygame's screen
        #       does not support fill() on OpenGL sufraces
        glClearColor(1, 1, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT)
        imgui.render()

        pygame.display.flip()

if __name__ == "__main__":
    main()```

I tried your script and successfully reproduced your issue. Still, I don't know if this is the same problem you're experiencing.
You run following line on every frame:
texture, width, height = loadImage(pygame.image.load("test.png"))

It loads 'test.png' and creates new texture file. The texture variable will have different value every time you execute imgui.image_button function. Usually ImGui tracks widgets by their names or other unique value (e.g. text in the text label) to guess if given user interaction between subsequent frames refers to the same widget. Image buttons don't have names or labels so the texture value is used as a identifier for that widget. It means that on every frame your image button will be treated as completely different widget. It may visually look like button is clicked but actual clicking for a button never resolves and  and this is why you don't get proper return value.
Try moving the loadImage(pygame.image.load("test.png")) call outside of the while loop and store texture in one variable that will not change it's value between frames.

OK, I assume this is fixed.

Sorry that I never responded to your last message. Your explanation made sense at the time, but if I recall correctly I decided not to use an image button for my problem in the end and didn't get around to try and fix my old code with your input.
Thanks for your time!

No problem. I'm just doing a cleanup :)


feat: Implement currencies formatter for saved metrics

SUMMARY
WARNING: This PR might be considered a breaking change. Currently the d3formats defined in dataset editor for saved metrics worked only in Table and Pivot Table charts. Now they will also work in viz types listed below and they take priority over d3 formats defined in control panel. That means that charts that use metrics that have custom formats defined on dataset level might change their displayed number formats.
Enables users to set a currency formatter for saved metrics in Datasource edit modal.
Currently supported currencies are: "USD", "EUR", "GBP", "INR", "MXN", "JPY", "CNY" (+ user can manually type other currency codes in the currency picker). More currency codes can be added in config.py by modifying array CURRENCIES.
Currently supported charts are: Table, Pivot Table, Big Number (+ with trendline), (Time)Series Echarts, Pie, Gauge, Funnel, Treemap.
The number is formatted using the d3 format specified either for saved metric in datasource editor (takes priority) or in control panel. If user picks a d3 formatter that adds % or currency signs, the special signs are ignored.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
https://github.com/apache/superset/assets/15073128/281ec0b5-3506-4dbb-a709-50080fa9906b
TESTING INSTRUCTIONS

If you're running this PR locally, run the migration first
Open 1 of the supported charts
Open datasource editor, add/edit a saved metric and set a currency
Use the metric with currency in the chart
Verify that values are formatted with currency sign

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[x] Includes DB Migration (follow approval process in SIP-59)

[x] Migration is atomic, supports rollback & is backwards-compatible
[x] Confirm DB migration upgrade and downgrade tested
[x] Runtime estimates and downtime expectations provided:
Current: 0.13 s
10+: 0.12 s
100+: 0.12 s
1000+: 0.13 s

[ ] Introduces new feature or API
[ ] Removes existing feature or API

CC @yousoph

/testenv up

@kgabryje given that this could be considered a breaking change, wdyt about trying to cherry this PR into 3.0, along with https://github.com/apache/superset/pull/24594? cc @michael-s-molina and @rusackas

@kgabryje given that this could be considered a breaking change, wdyt about trying to cherry this PR into 3.0, along with #24594? cc @michael-s-molina and @rusackas

@eschutho This is already included in 3.0

Ok, perfect!


Added CONTRIB, .gitignore and updated License

Please merge latest file updates and working towards repo alignment.
Updated:
LICENSE
Added
CONTRIBUTING.rst
.gitignore

Closed old PR


When exporting Markdown with code blocks, ^M line endings are intermittent

I guess this is ChatGPT not really caring about line endings. I ended up with a document which was neither Unix \n or Windows \r\n, but a mixture of the two.
(In VIM on Linux, this manifests as some lines having ^M on the end, and some not.)
I would suggest chatgpt-exporter do a final pass over the document, to ensure every line ends in \r\n, to produce a DOS/Windows-style file which will also work fine on *nix.
My issue was with Markdown files. I don't know if HTML and TXT modes have the same issue, but I guess the same approach for them wouldn't hurt.

So \r\n will be the best choice for cross-platform compatibility? Let me check check.

I did think \r\n would be the most compatible.
But \n should be good enough for now, until someone raises an issue.
I think Windows Notepad now handles \n well. But astonishingly, bash under WSL does not!

tbh I don't have enough knowledge and experience about line ending. So \n is actually what ChatGPT tells me 🤣


Fix right of residence number

Remove aso_number in HasoContractPDFData as it's duplicated with right_of_residence_number.
Change right_of_residence_number to use resevation right_of_residence number instead of customer.right_of_residence

Codecov Report

Merging #288 (dafdd22) into develop (bb7357c) will decrease coverage by 0.00%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           develop     #288      +/-   ##
===========================================
- Coverage    93.42%   93.42%   -0.01%
===========================================
  Files          118      118
  Lines         4305     4304       -1
  Branches       384      384
===========================================
- Hits          4022     4021       -1
  Misses         202      202
  Partials        81       81

Impacted Files
Coverage Δ

application_form/pdf/haso.py
100.00% <ø> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Minor - Parser should also recognize MathML-Presentation annotation #27

Is the change okay?

@AndreG-P could you review and merge this?

Coverage decreased (-0.1%) to 78.583% when pulling a73747a1411e949042223a3b4e93edc06b3cc124 on parser_pmml into e24632ff4813b644ab0aace2164a131602f0ba43 on master.

a test would be good. otherwise it's hard to understand the change

Okay, I added a test case and skipped the render test ... a mistake. Seems like mathoid svg rendering can't handle formulas like
<math xmlns="http://www.w3.org/1998/Math/MathML" id="p1.1.m1.1" class="ltx_Math" alttext="m" display="inline">
  <semantics id="p1.1.m1.1a">
    <ci id="p1.1.m1.1.1.cmml" xref="p1.1.m1.1.1">𝑚</ci>
    <annotation-xml encoding="MathML-Presentation" id="p1.1.m1.1b">
	<mi id="p1.1.m1.1.1" xref="p1.1.m1.1.1.cmml">m</mi>
    </annotation-xml>
  </semantics>
</math>

I will try to take a look tomorrow.

It's maybe because there is no apply tag in the content MML subtree. Sounds strange but we already faced this issue a couple of times.

Now the pull request looks good in theory. The change is small and well tested. So now only the logic must be fixed.

mathoid is a rendering engine for presentation mathml. rendering content mathml is not in the scope.

can't be fixed at the moment, see https://github.com/ag-gipp/vmext/issues/27

reviewed your changes: ok


Add Odometer

This helps generate all combinations for brute force searching
Add RangeOdometer

@kwalcock mind if I ask what this does?  I saw the PR go in and was curious

No questions.  It's a secret.  It's a backport whose use is a long ways away: https://github.com/lum-ai/eidos/blob/39dd25d789136e2b198208a92d921fee41704a4c/src/main/scala/org/clulab/wm/eidos/mentions/MentionUtils.scala#L101.  It combines several sequencey things and gives all possibilities in a single iterator so that it can be used in map, foreach, etc.

cool -- fwiw, esp if you're in the prep stages, I really think this functionality (https://github.com/lum-ai/eidos/blob/39dd25d789136e2b198208a92d921fee41704a4c/src/main/scala/org/clulab/wm/eidos/mentions/MentionUtils.scala#L100) should exist in Processors.  That is, a sentence should be able to give the minimum graph distance in its X parse (e.g., SRL, syntax, etc).

When reading the code I was concerned about whether there actually was a distance between any two tokens.  What is guaranteed about the connectedness of the graph?  In reach I recently had to catch cases where the graph seemed incomplete:
https://github.com/clulab/reach/blob/30cd0daa1c1921767fb6f6935a21460ca94d1438/main/src/main/scala/org/clulab/polarity/LinguisticPolarityEngine.scala#L85-L93.  It does seem like whatever makes the graph, processors, should also provide general support for them.

Agreed on all points.  I guess it could return a Seq[Int] of distances, so empty if no connection, and shortest first if there are >1.  IDK if this formulation is inherently less efficient.  Another option could be Option[Int] if it's more efficient...?


Left nav should take full height of iframe

Search appears at the top, in line with the top bar. New function is immediately below, bottom line aligned with tabs for function view.

Done


.webm file extension not recognized

Version: Unreal 4.16.3, Windows
The VLC plugin doesn't seem to recognize files ending in .webm in the editor.
Steps:

Put video file https://base-n.de/webm/out9.webm in Content/Movies
Navigate to Content/Movies in editor.
Click import and navigate to the file, notice it doesn't appear in the file selector.
Type the file name out9.webm in file selector

Results:
Failed to import out9.webm. Unknown extension.
Note: If you rename out9.webm to out9.mp4 then the VLC plugin will pick it up and play the VP9 video. The plugin has the "webm" extension specified in VlcMediaFactoryModule.cpp - SupportedFileExtensions.Add(TEXT("webm"));

Should be fixed now, thanks!


rfkill: Cannot open RFKILL control device

Hey there,
I just tried installing this module on the latest version of Home Assistant (OS 6.6, running Home Assistant 2021.11.4) on a Pi 4, and for some reason, the Wi-Fi network doesn't broadcast. I can't find it at all.
Here are the logs:
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
Starting Hass.io Access Point Addon
Add DNS: dhcp-option=6,<IP_ADDRESS>
Configuration file: /hostapd.conf
rfkill: Cannot open RFKILL control device
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr e4:5f:01:1e:fa:4b and ssid "HomeAssistant"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

And here's my config:
ssid: HomeAssistant
wpa_passphrase: xxxxxx
channel: '6'
address: <IP_ADDRESS>
netmask: <IP_ADDRESS>
broadcast: <IP_ADDRESS>
interface: wlan0
hide_ssid: '0'
dhcp: '1'
dhcp_start_addr: <IP_ADDRESS>
dhcp_end_addr: <IP_ADDRESS>
allow_mac_addresses: []
deny_mac_addresses: []
debug: 0
hostapd_config_override: []
client_internet_access: '0'
client_dns_override: []

I'm wondering if this problem is related to AppArmor.
Anyways I don't know if the rfkill: Cannot open RFKILL control device and wlan0: Could not connect to kernel driver are supposed to be here, but I guess not? Either way I don't even understand why it says AP-Enabled when it's not enabled :/
Thanks!

+1
And not get internet access.
my config
ssid: rpihole
wpa_passphrase: raspberry69
channel: '6'
address: <IP_ADDRESS>
netmask: <IP_ADDRESS>
broadcast: <IP_ADDRESS>
interface: wlan0
hide_ssid: '0'
dhcp: '1'
dhcp_start_addr: <IP_ADDRESS>
dhcp_end_addr: <IP_ADDRESS>
allow_mac_addresses: []
deny_mac_addresses: []
debug: 1
hostapd_config_override: []
client_internet_access: '1'
client_dns_override:
  - <IP_ADDRESS>
dnsmasq_config_override: []

My log with 2 devices connected without internet.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] done.
[services.d] starting services
[services.d] done.
Starting Hass.io Access Point Addon
# Setup interface:
Add to /etc/network/interfaces: iface wlan0 inet static
Run command: nmcli dev set wlan0 managed no
Run command: ip link set wlan0 down
Add to /etc/network/interfaces: address <IP_ADDRESS>
Add to /etc/network/interfaces: netmask <IP_ADDRESS>
Add to /etc/network/interfaces: broadcast <IP_ADDRESS>
Run command: ip link set wlan0 up
# Setup hostapd:
Add to hostapd.conf: ssid=rpihole
Add to hostapd.conf: wpa_passphrase=********
Add to hostapd.conf: channel=6
Add to hostapd.conf: ignore_broadcast_ssid=0
Add to hostapd.conf: macaddr_acl=0
Add to hostapd.conf: interface=wlan0
# DHCP enabled. Setup dnsmasq:
Add to dnsmasq.conf: dhcp-range=<IP_ADDRESS>,<IP_ADDRESS>,12h
Add to dnsmasq.conf: interface=wlan0
Add custom DNS: dhcp-option=6,<IP_ADDRESS>
## Starting dnsmasq daemon
## Starting hostapd daemon
Configuration file: /hostapd.conf
rfkill: Cannot open RFKILL control device
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr dc:a6:32:77:fb:62 and ssid "rpihole"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: disassociated
wlan0: STA f4:cf:a2:15:89:4d IEEE 802.11: associated
wlan0: AP-STA-CONNECTED f4:cf:a2:15:89:4d
wlan0: STA f4:cf:a2:15:89:4d RADIUS: starting accounting session 6991D96AF001D84A
wlan0: STA f4:cf:a2:15:89:4d WPA: pairwise key handshake completed (RSN)
wlan0: STA 7c:fd:6b:74:a7:ad IEEE 802.11: associated
wlan0: AP-STA-CONNECTED 7c:fd:6b:74:a7:ad
wlan0: STA 7c:fd:6b:74:a7:ad RADIUS: starting accounting session 8DB0749D88B49EF2
wlan0: STA 7c:fd:6b:74:a7:ad WPA: pairwise key handshake completed (RSN)

I also have this problem, like the OP, I am using a RPi4 my AP does not start either, and I cannot find how to fix it. I am however running HAOS 7.1.
These are the logs from the UI:
# Setup hostapd:
Add to hostapd.conf: ssid=PORTAL
Add to hostapd.conf: wpa_passphrase=********
Add to hostapd.conf: channel=4
Add to hostapd.conf: ignore_broadcast_ssid=0
Add to hostapd.conf: macaddr_acl=0
Add to hostapd.conf: interface=wlan0
# DHCP not enabled. Skipping dnsmasq
## Starting hostapd daemon
Configuration file: /hostapd.conf
rfkill: Cannot open RFKILL control device
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr e4:5f:01:20:4a:a5 and ssid "PORTAL"
wlan0: interface state UNINITIALIZED->ENABLED
wlan0: AP-ENABLED

Exactly same error messages in my configuration on
Host Operating System | Home Assistant OS 7.0
Supervisor Version | supervisor-2022.01.1
Hardware: RPI4
Access point appears for a few seconds and disappears. And I cannot connect to it.
Any suggestion?

I've been having the same issue on RPI4 and HassOS 7. It looks like hw_mode=g doesn't work. Forcing hw_mode=a "fixes" but that means your clients need 5ghz. If you do have 2.4ghz clients that need to connect, upgrading to HassOS 8.0.rc3 (you'll need to join the beta channel) will let hw_mode=g work on RPI4.

upgrading to HassOS 8.0.rc3 (you'll need to join the beta channel) will let hw_mode=g work on RPI4.
Many thanks for your workaround and detailed clarification!
As my homeassistant is a productive environment with a couple of important automations, I'll wait till HassOS 8.x move to the official, not-beta release and then use hw_mode=g.

Cheers!
Peter

Issue seems fixed, and is stale


rewards call

What is the purpose of the change
<!-- > Add a description of the overall background and high level changes that this PR introduces

This is the code for collecting staking rewards

### ClickUp Task

[ClickUp Task URL](https://app.clickup.com/t/8678m13z8)

## Testing and Verifying

<!-- _(Please pick either of the following options)_

This change has been tested locally by rebuilding the website and verified content and links are expected

@jonator Any insight here, I'm getting a test failure in the stores package:
src/account/osmosis/types.ts:118:10 - error TS2339: Property 'lockExistingFullRangePositionAndSFStake' does not exist on type '{ superfluidDelegate(value: MsgSuperfluidDelegate): { typeUrl: string; value: MsgSuperfluidDelegate; }; superfluidUndelegate(value: MsgSuperfluidUndelegate): { ...; }; ... 6 more ...; addToConcentratedLiquiditySuperfluidPosition(value: MsgAddToConcentratedLiquiditySuperfluidPosition): { ...; }; }'.

118         .lockExistingFullRangePositionAndSFStake,
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

https://github.com/osmosis-labs/osmosis-frontend/pull/2012/files#diff-1ca7a8b77f7536e0a20aaccb2e8c762cbc58ae9ac32d4d6ee1102fab9e3b7301L118
I believe that message was removed. The fix for this is in this PR ^^


Adds SQL Starter code sample

Helps fix #146

Can't do changes during merge since master is protected. Please re-approve.


Substrate: Distinct dispatch CFG for call and deploy

Fix an oversight form #1249. The dispatch logic can not be the same for call and deploy as constructors must not be allowed to be accessed from the call function.

Added this as an additional mock VM test

I might be missing some context in this change. Do call and deploy have different entry points for contracts on Susbtrate? Or is it something like fn solana_deploy?

I might be missing some context in this change. Do call and deploy have different entry points for contracts on Susbtrate? Or is it something like fn solana_deploy?

On Substrate, the wasm file has two entry points: deploy and call. The first is used for calling the constructor, and the second for a function call. They should have separate dispatch functions

Yes Sean is correct about that. I slightly refactored to code and also documented that. @LucasSte


Please re-include msdia140typelib_clr0200.dll in the NuGet package Microsoft.TestPlatform.17.4.x

Description
Microsoft.TestPlatform.17.4.0-preview-20220707-01 is missing msdia140typelib_clr0200.dll. In past releases of this NuGet (the latest prior one I can see is 17.3.0-preview-20220612-01), this typelib is present in tools/net451/Common7/IDE/Extensions/TestPlatform/msdia140typelib_clr0200.dll.
Please bring back the msdia140typelib_clr0200.dll as it breaks existing app and test code which uses the DIA SDK from C# and needs this typelib.
Steps to reproduce
N/A
Expected behavior
The Microsoft.TestPlatform will include msdia140typelib_clr0200.dll under tools/net451/Common7/IDE/Extensions/TestPlatform/msdia140typelib_clr0200.dll
Actual behavior
Microsoft.TestPlatform.17.4.0-preview-20220707-01 is missing msdia140typelib_clr0200.dll.
Diagnostic logs
N/A
Environment
N/A

cc @MarcoRossignoli and @nohwnd

@arvindshmicrosoft Would you mind sharing with us the scenario in which you are using it? Ideally if you have a repro that would be awesome. Is it that you were relying on the fact this dll was shipped with test platform?
We removed this dependency because it's not used anywhere in our code.

Thanks @Evangelink for sharing the reason behind this change. Let me share the scenario behind this issue:

msdia140.dll is part of the DIA SDK within Visual Studio and is a COM library.
In order to use DIA from within managed applications we need a typelib, which can typically by running midl and typelib against the %VSINSTALLDIR%\DIA SDK\idl\dia2.idl provided by the DIA SDK.
However, at least since VS 2015, msdia140typelib_clr0200.dll is shipped with Visual Studio (the exact location has changed, initially I remember it used to be under Common7\IDE\CommonExtensions\Microsoft\TestWindow, now of course in 2022 it is under Common7\IDE\Extensions\TestPlatform) has provided a ready-to-use typelib.
The ready-to-use msdia140typelib_clr0200.dll eliminating the need for manually running midl and typelib to generate the "wrapper" needed to use msdia140.dll from within managed apps.

I can work around by now proceeding to run midl and typelib to generate the equivalent of msdia140typelib_clr0200.dll but having msdia140typelib_clr0200.dll as part VS 2022 and in the VSTest NuGet saves some steps for devs trying to use DIA from managed code.
Though - I totally understand and respect if you stay with the change and do not choose to include msdia140typelib_clr0200.dll anymore in this NuGet. Feel free to close the issue with that note, if the decision is final.

@arvindshmicrosoft Thanks for the context, we are not going to ship that library anymore, because it was made to support .NET Framework 2.0 and we don't have any use for it anymore because we replaced it with p/Invoke.
I've added you to the original thread that explains the details and motivated the removal of this library, hopefully there is alternative library already shipped with VS. Or you can add additional nuget to their build pipeline to create and ship it for you.
I admittedly don't know enough about how this works. From what I understand we moved to using PInvoke with msdia140, to consume it from our C# code. Is not generating a typelib for it, and using that a lost opportunity for us?

@nohwnd - the explanations on this Issue are clear and I will close this issue. I understand why the typelib was removed from VSTest. We will generate the typelib using MIDL and tlbimp for now. Hopefully in the future we will have some other cleaner way for MSDIA interop for all.

Thank you @Evangelink - unfortunately my requirement is solely for native PDBs, so DIA is the only way out.

Just in case this could help, according to their readme:

The implementation of these interfaces for Windows PDBs is provided by Microsoft.DiaSymReader.Native package


feat: cleanup-wallets cli command

lnbits-cli db cleanup-wallets removes all wallets that never had an transaction. this helps against spammers creating random wallets, eventually slowing down the db.

I think we should wait for the PR https://github.com/lnbits/lnbits/pull/2177 merge and then update his PR to use created_at to delete only old wallets/accounts.

I think we should wait for the PR #2177 merge and then update his PR to use created_at to delete only old wallets/accounts.

#2177 has been merged now

I am thinking whether delta in seconds is not too nerdy and maybe 99% admins just need delta in days?
If you agree, we can rename CLEANUP_WALLETS_DELTA to CLEANUP_WALLETS_DAYS and adjust the math accordingly. What do you think @dni?

yeah cool idea, lets use days

done


Try fixing the linter

Changes to use a fork of the Lua action.

Reason for in-house fork instead of someone else's is because I'm specifically targeting 2.1.0-beta3 while everyone else seems to be targeting rolling-release (that or I didn't bother analyzing deep enough).


NPSP Installer "Success" screen - tweak "Next Steps"

I think there is a better way to show the next steps - the blue on green links get lost, and maybe could make it clearer:
*Upgraded from a previous version? GO HERE

Installed from scratch? GO HERE

Also: the second sentence in the Next Steps second appears as "IF" instead of "If"


[WIP] import csv for form #4357

Coverage decreased (-0.04%) to 84.797% when pulling f7528106bee80a0d5a58dd6c5c707353db5049b9 on pr-import_csv_for_form into c2ebd662e88a5df582502394bb33e2ebc4be5f37 on master.


Don't forget the favicon!

:)

@chloespilotro note this one is done in the manager, at launch, we change it in the interface

https://github.com/zesty-io/nextjs-website/pull/337


Cimgui 1.70 (and later?) export igMenuItemBool (and igMenuItemBoolPtr)

https://github.com/nimgl/nimgl/blob/11e7767145d7640311cabc9a846d8a12a31379f1/src/nimgl/imgui.nim#L1584
I fixed it in my local copy by referencing the proper symbol:
proc igMenuItem*(label: cstring, shortcut: cstring = nil, selected: bool = false, enabled: bool = true): bool {.imgui_lib, importc: "igMenuItemBool".}

Fixed on https://github.com/nimgl/nimgl/issues/22 and https://github.com/nimgl/nimgl/commit/dae491c1b40d72c9df245edabf0080bfb5139b64.

You are awesome, thanks!


When using python.withPackages overrides are lost.

We override and and patch some python libraries and bundle those using withPackages.
After using withPackages the patched version is not part of the pkgs set anymore.
Steps To Reproduce
Create my-python.nix
{ pkgs ? import <nixpkgs> { } }:
let
  myPython = pkgs.python38.override {
    packageOverrides = self: super: {
      myMatplotlib = super.matplotlib;
    };
  };
in
{
  python = myPython;
  pythonW = myPython.withPackages (p: [ p.myMatplotlib ]);
}

and try to instantiate myMatplotlib of python and pythonW.
python.pkgs.myMatplotlib works:
$ nix-instantiate -A python.pkgs.myMatplotlib my-python.nix
/nix/store/6z9d2yz98wrh64zkxzaapyyidkcc0gdf-python3.8-matplotlib-3.5.1.drv

but pythonW.pkgs.myMatplotlib does not, which seems to be a bug:
$ nix-instantiate -A pythonW.pkgs.myMatplotlib my-python.nix
error: attribute 'myMatplotlib' in selection path 'pythonW.pkgs.myMatplotlib' not found

@fridh you seem to have touche withPackages last
$ git blame pkgs/development/interpreters/python/default.nix | grep 'withPackages ='
efbe87f3ef76 (Frederik Rietdijk    2018-12-31 13:59:20 +0100 105)         withPackages = import ./with-packages.nix { inherit buildEnv pythonPackages;};

The interpreter has a passthru. When you use withPackages or buildEnv, you get a different derivation. While some of the passthru items from the interpreter are part of this one, apparently not everything is. One can ask the question whether it should.

One can ask the question whether it should.

Not really clear to me, tbh. One could argue that you shouldn't use pkgs once you finalized with withPackages.
For now I as a workaround I just overwrite pkgs
python =
      let
        withPackages = python.withPackages (pythonPkgs: with pythonPkgs; [...]);
      in
      withPackages
        // { inherit (python) pkgs; };

The following shows how you can still access the overridden set:
$ nix eval --impure --expr '(let python = (import (fetchTarball "channel:nixos-21.11") {}).python3.override {packageOverrides=(self: super: {mymatplotlib=super.matplotlib;}); self = python;}; in python.withPackages(ps: [])).python.pkgs.mymatplotlib.pname'

The reason it was not working for you was because you did not pass the overridden interpreter to itself. The Nixpkgs manual shows that when correctly overriding that is needed.

Thank you. I found it.


Ensure Istio works when there are Windows nodes in RKE2-provisioned cluster

As per RKE2 <-> RKE1 provisioning parity requirements, we need to ensure Istio is not affected if there are Windows nodes present in RKE2-provisioned cluster. Note that there are no expectations of Istio actually working against Windows nodes, we just need to ensure a presence of Windows nodes doesn't result in failures.

Need to add
Tolerations - to support RKE1 windows clusters
Node Selectors - to support RKE2 windows clusters
for the components to be scheduled only on the linux nodes
see: https://github.com/rancher/rancher/issues/36403

This issue is going to be superceded by a previous dashboard issue which captures everything and has all PRs linked up. You can see context https://github.com/rancher/dashboard/issues/5137#issuecomment-1062323770

Closing this since the Zube bot mistakenly re-opened.


global configuration of the component

Is there a way to set some options globally?
Reading the documentation it seems i would have to set the breakpoints and desired image formats every time i use the component. Maybe i am missing something?

@gtnbssn Hi :wave: @gtnbssn. Yes, there's a way to define global configs for the component. You can define the configs by defining an image object in the Astro config.

Aaah makes sense, i will follow the next versions! Thanks a lot!!
I was thinking otherwise i could probably just create my own component that extend yours and has my default props set.
This component is definitely selling me on Astro by the way, great job!!

Thank you @gtnbssn! And another good news<EMAIL_ADDRESS>was released two days ago which supports global config options. Check https://www.npmjs.com/package/astro-imagetools#global-config-options for more information. I am closing the issue now. Feel free to reopen the issue if necessary.


List constraints

Probably won't be doing most of these.

[x] length_c/2
[x] same_length_c/2
[ ] member_c/2
[ ] append_c/2 (maybe impossible?)
[ ] append_c/3 (maybe impossible?)
[ ] reverse_c/2
[ ] nth0_c/3
[ ] nth0_c/4 (maybe impossible?)
[ ] nth1_c/3
[ ] nth1_c/4 (maybe impossible?)
[ ] sum_list_c/2
[ ] transpose_c/2 (maybe impossible?)
[ ] list_to_set_c/2
[ ] list_max_c/2
[ ] list_min_c/2
[ ] permutation_c/4 (maybe impossible?)

Just seeing this for the first time. As to append_c/3, I tried to explain this to you earlier. There is a very fundamental problem with it. Do you want it to terminate? What properties do you expect from it. And what about such cases as ?- append([], non_list, non_list).

Do you want it to terminate? What properties do you expect from it. And what about such cases as ?- append([], non_list, non_list).

I want it to be the most useful possible, so ideally it would terminate. I expect it to be something like:
?- append_c(A, B, AB).
    % Automatically propagates other constraints, deterministic in this case
    append_c(A, B, AB), list_c(A), list_c(B), list_c(AB), length_c(A, _A), length_c(B, _B), length_c(AB, _C),
    clpz:(_A + _B #= _C), clpz:(_A #>= 0), clpz:(_B #>= 0), clpz:(_C #>= 0).
?- append_c(A, B, AB), A = [1,2,3].
    % Only resolve when sufficient information is known
    append_c([1,2,3], B, AB), list_c(B), list_c(AB), length_c(B, _A),  length_c(AB, _B),
    clpz:(_A + 3 #= _B), clpz:(_A #>= 0), clpz:(_B #>= 0).
?- append_c(A, B, AB), B = non_list.
    % Fails instead of error
    false.

It doesn't look impossible to me, nor very problematic, but it will involve a whole dance of attributed variables to work correctly.

One thing is that I intentionally don't want this to work like length/2 or labeling/2, listing solutions. I want it to purely propagate constraints, like I did with length_c/2, you will have to do that separately (maybe i will implement a labeling/2-like predicate eventually). Maybe then this kind of predicate becomes problematic.

You will have to solve the word problem for append_c/3 to get full consistency. Makanin. So you would have to opt for less. Then what about termination?

In any case, I really recommend you look at Prolog III and IV first. The systems are downloadable. And take steps from there.

In any case, I really recommend you look at Prolog III and IV first. The systems are downloadable. And take steps from there.

I didn't do that already because the manual of Prolog IV seems to only be available in French. Maybe it's time to start learning French? Or heavily use translators but that sounds incredibly obtuse.

You will have to solve the word problem for append_c/3 to get full consistency. Makanin. So you would have to opt for less. Then what about termination?

Oh, pure maths. I haven't looked too deeply into this, but my intuition is that there is an algorithm that will always terminate for the propagation of the constraints of append_c/3 on finite lists.
What is clear to me is that append_c/3 is obviously way more difficult that other predicates like length_c/2 (on which I just ran the verification program and it passed for all the searched space, first try). I don't think it's as impactful as length_c/2 also. I will try to work on simpler and more impactful, stuff like the type constraints (#10) and leave complicated and maybe impossible predicates like append_c/3 for a latter time when I'm more skilled and knowledgeable with all this constraint stuff.

Prolog III manual is English too. The downside of Prolog III is that it has its own syntax that is incompatible with ISO.

Unification and thus constraints are much more difficult than their corresponding matching problem (matching in the sense that one side is variable free). What makes it so difficult are the multiple occurrences of the same variable. And this is also often the challenge with implementing constraints. That is, exactly this is often a source of errors.

And about Prolog IV: Using the program itself does not require fluency in French.

I downloaded and messed with it for a  bit. Very interesting the sheer amount of constraints it seems to be able to do. Turns out I also know more French than I anticipated, so reading the manual hasn't been very difficult. I still don't understand why this works this way:
>> conc([2|AB], [1|A], B).

B ~ list,
A ~ list,
AB ~ list.

This already can be detected as a failure quite easily, but apparently Prolog IV waits until it has full knowledge of at least 2 of the arguments to make a decision:
>> conc([2|AB], [1|A], B), A = [2,3].

A = [2,3],
B ~ list,
AB ~ list.

>> conc([2|AB], [1|A], B), A = [2,3], B = [4].

false.

This is what you talked about to me another time. I still don't really understand this design decision. Is it to be more "efficient" and not waste cpu cycles propagating the constraint every time anything is touched? You mentioned termination a few times, but I think this very trivially terminates for finite lists. Are the problem cyclic terms? The ISO Standard seems to have acyclic_term/1, so this seems to me as a case where you could simply use a guard to only propagate if the term is acyclic. Does acyclic_term/1 sometimes not terminate? If that's so, then I see the problem.

This is what you talked about to me another time.

Exactly!
conc/3 propagates only if two of its arguments are lists (that is, finite lists, indeed), as you have already discovered. It fails for any infinite list or other non-list. Cases, where the pedestrian append/3 could still fail, lead to floundering (which is not displayed in Prolog IV, unfortunately. A simple maybe to indicate that there are some constraints around would already be much better, but well things were not that evident 25 years ago ...). So at first sight that seems very conservative. What are the alternatives? Maybe there are some better ones, but they are not that obvious. Consider as one such alternative where you take the classic append/3 definition and add block (delay) its execution if both the first and the last argument are variables giving block_append/3. What can we say about the termination property of such a definition? Is this now always terminating? (The answer is of course no. Do you see it?)

Are the problem cyclic terms?

No. It is really the nature of unification.
Prolog III did conc/3with a bit more (implicit) length constraints (Prolog IV terminology: size/2. Really a misnomer as size is practically tantamount to general term size and not list length.)

Are the problem cyclic terms?

No. It is really the nature of unification.

Sorry, I meant "unification subject to occurs check". I forgot those are technically different things, because they often occur at the same time. But I guess this is also not relevant for this?

What can we say about the termination property of such a definition? Is this now always terminating? (The answer is of course no. Do you see it?)

I can't see it actually, unless you consider showing residual constraints as "not terminating". Could you give an example of a query that wouldn't terminate with block_append/2? I really can't think of any that doesn't involve STO or cyclic terms (which, as I understand, can both be guarded against in ISO with unify_with_occurs_check/2 and acyclic_term/1).

:- block(block_append(-,?,-)).
block_append([], Cs, Cs).
block_append([A|As], Bs, [A|Cs]) :-
   block_append(As, Bs, Cs).

| ?- block_append(A,B,C).
user:block_append(A,B,C) ?
yes
| ?- block_append([a|L],_,L).
     loops.

This is in SICStus

The ISO Standard seems to have acyclic_term/1, so this seems to me as a case where you could simply use a guard to only propagate if the term is acyclic.

Within ISO, there are only terms. Thus finite terms. What happens for NSTO unification is left undefined. The motivation for acyclic_term/1 are primarily interfaces. How can one protect code against such infinite trees from the outside? It is possible to ensure that a term is finite (just traverse it, if this terminates and "returns", well it was finite, otherwise ...), but the overheads are large and termination is not possible (for implementations with rational trees). I am unaware of an implementation of acyclic_term/1 that does not terminate, even implementations that loop on some unifications still terminate rapidly for it (like GNU).

One highly desirable termination property is: If G_0, false terminates, then also any instance of it will terminate. This is true for pure Prolog. It is not true for block_append/3.

For Prolog IV: you can type iso. to get a top level quite similar to the top level of Scryer. In fact, Prolog IV was the first system to offer such a top level.