Solicitudes de seguimiento no aceptadas

He configurado el plugin ActivityPub, pero no puedo seguir a los actores que he configurado en mi instancia desde ninguna otra aplicación de fediverso. Cuando intento seguir:

news@forum.internet-czas-dzialac.pl

desde un cliente de Mastodon, y actualizo la interfaz de Mastodon, la solicitud de seguimiento se queda atascada:

Se ha quedado atascada en “retirar solicitud de seguimiento” durante horas. Cancelar y enviar una solicitud de seguimiento de nuevo no ayuda, todavía se queda atascada y no se informa sobre nuevas publicaciones en la categoría.

1 me gusta

Puedo reproducirlo, aunque veo una interfaz ligeramente diferente:

¿Puedes probar How to debug connectivity issues with ActivityPub a ver si algo de eso ayuda?

1 me gusta
  1. No se ha configurado ningún geobloqueador en mi servidor
  2. Desactivar la opción “requerir solicitudes firmadas” en la configuración del plugin en admin/site_settings/category/all_results?filter=plugin%3Adiscourse-activity-pub no resolvió el problema
  3. Estoy viendo las siguientes advertencias en los registros:
[Discourse Activity Pub] Failed to process https://mastodon.social/users/Ifutig#delete: Object is not ready



[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:42:in `rescue in block in perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:35:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:8:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'

  1. La configuración activity pub allowed request origins y activity pub blocked request origins están vacías.

Los informes de sidekiq de Mastodon para la cola ActivityPub::DeliveryWorker llamada con los argumentos:

"{\\\"@context\\\":\\\"https://www.w3.org/ns/activitystreams\\\",\\\"id\\\":\\\"https://toot.kuba-orlik.name/users/kuba#follows/2702/undo\\\",\\\"type\\\":\\\"Undo\\\",\\\"actor\\\":\\\"https://toot.kuba-orlik.name/users/kuba\\\",\\\"object\\\":{\\\"id\\\":\\\"https://toot.kuba-orlik.name/afe35800-107b-4843-baf6-763052aa8a79\\\",\\\"type\\\":\\\"Follow\\\",\\\"actor\\\":\\\"https://toot.kuba-orlik.name/users/kuba\\\",\\\"object\\\":\\\"https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366\\\"}}\", 1, \"/inbox\"
HTTP::Request::UnsupportedSchemeError: unknown scheme: on /inbox

Parece que tal vez ap_id está vacío en este fragmento?


Sí, puedo ver que

curl -H "Accept: application/activity+json" https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366 | jq

devuelve:

{
  "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
  "type": "Group",
  "updated": "2025-03-14T12:23:02Z",
  "url": "https://forum.internet-czas-dzialac.pl/c/nowinki-od-icd/65",
  "name": "Forum ICD - Newsy",
  "inbox": "/inbox",
  "outbox": "/outbox",
  "followers": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366/followers",
  "preferredUsername": "news",
  "publicKey": {
    "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366#main-key",
    "owner": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2JFbVH7kIfa/14CDnUww\n9x+XwOPsS0qyeec1jdasv8SqqCit22FwDsLhH6vWpSIDisEDOhTLZjFFtpwksA8d\nRZIdOFrFazPkUF69J5VDVGtLgjyRi/KkJewbVaUnxO8zNwnxyBYWe8QoMWbdFwto\nfNzvB/ht+9Pch8ksVzNPnrA3Z7egtWHWGNl5sQ+8eXOKzeMNOn73hCEKcOSPWulz\n1gbbdo0So5ThKpwXC0ViqcZy2yzyTFptdrvL7lphr0BywUsG6AruOuwmghw6eRNe\nFvzx0Pq01bUIyY+MXiYmN6sLMIDqi/kdoALzSE+tHcv7HzCLNuEJb1DCmZo56O2H\nSQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://forum.internet-czas-dzialac.pl/uploads/default/original/1X/adbc19ebc6466183dc0387c3f59d86bd2861b5c9.png"
  },
  "@context": "https://www.w3.org/ns/activitystreams"
}

Puedes ver que las URL de inbox y outbox no tienen el protocolo ni el dominio.

2 Me gusta

Creo que he encontrado el problema. He enviado una PR que soluciona esto:

La esencia del cambio es añadir estos getters:

1 me gusta

El problema es que los objetos se están creando de alguna manera con IDs en primer lugar. No está relacionado con el serializador (o el fabricador). ¿Podrías compartir:

  1. El entorno de tu Discourse, es decir, cómo lo estás alojando y qué versión de Discourse estás utilizando.
  2. Cualquier otro plugin que estés utilizando.

@kuba-orlik Tu problema probablemente sea causado por esta PR

Esto debería solucionarlo:

¡Gracias por informar del problema y por tu paciencia!

1 me gusta

Gracias @angus por investigarlo. Desafortunadamente, incluso con la última versión, el problema persiste.

Me estoy autoalojando usando la configuración oficial de docker (./launcher rebuild app).

Estoy ejecutando Discourse 3.5.0.beta2-dev

discourse-chat-integration, discourse-whos-online, discourse-telegram-notifications, discourse-assign

Pensé que este podría ser el caso, pero había intentado instalar versiones anteriores a este commit y tuve el mismo problema :thinking:

He instalado la última versión del plugin (desde el commit 0083654), y desafortunadamente el problema no está solucionado. Una rápida comprobación:

> curl -H "Accept: application/activity+json" https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366 | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1298    0  1298    0     0   9151      0 --:--:-- --:--:-- --:--:--  9205
{
  "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
  "type": "Group",
  "updated": "2025-03-14T12:23:02Z",
  "url": "https://forum.internet-czas-dzialac.pl/c/nowinki-od-icd/65",
  "name": "Forum ICD - Newsy",
  "inbox": "/inbox",
  "outbox": "/outbox",
  "followers": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366/followers",
  "preferredUsername": "news",
  "publicKey": {
    "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366#main-key",
    "owner": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2JFbVH7kIfa/14CDnUww\n9x+XwOPsS0qyeec1jdasv8SqqCit22FwDsLhH6vWpSIDisEDOhTLZjFFtpwksA8d\nRZIdOFrFazPkUF69J5VDVGtLgjyRi/KkJewbVaUnxO8zNwnxyBYWe8QoMWbdFwto\nfNzvB/ht+9Pch8ksVzNPnrA3Z7egtWHWGNl5sQ+8eXOKzeMNOn73hCEKcOSPWulz\n1gbbdo0So5ThKpwXC0ViqcZy2yzyTFptdrvL7lphr0BywUsG6AruOuwmghw6eRNe\nFvzx0Pq01bUIyY+MXiYmN6sLMIDqi/kdoALzSE+tHcv7HzCLNuEJb1DCmZo56O2H\nSQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://forum.internet-czas-dzialac.pl/uploads/default/original/1X/adbc19ebc6466183dc0387c3f59d86bd2861b5c9.png"
  },
  "@context": "https://www.w3.org/ns/activitystreams"
}

Puedes ver que de nuevo las claves inbox y outbox no son URLs completas.

1 me gusta

Volver a un commit anterior no habría ayudado una vez que el problema se presentó. Intenta volver a guardar los actores en Admin > ActivityPub, es decir, haz clic en "Guardar Actor" en /admin/plugins/ap/actor.

1 me gusta

¡Ah! ¡Volví a guardar los actores de la categoría y funciona!

Ahora, ¿cómo arreglo los actores de usuarios individuales, como https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531?

> curl -H "Accept: application/activity+json" https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531 | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1332    0  1332    0     0   9273      0 --:--:-- --:--:-- --:--:--  9314
{
  "id": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531",
  "type": "Person",
  "updated": "2025-03-14T12:34:26Z",
  "url": "https://forum.internet-czas-dzialac.pl/u/kuba",
  "name": "Kuba",
  "inbox": "/inbox",
  "outbox": "/outbox",
  "sharedInbox": "https://forum.internet-czas-dzialac.pl/ap/users/inbox",
  "followers": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531/followers",
  "preferredUsername": "kuba",
  "publicKey": {
    "id": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531#main-key",
    "owner": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wp46cDyUbUUTfvbWqy/\nRS3YXY2g69+a3R5n+f4EeCxcpNL1OGPyzgjszdoxAWLSXCHqZk91v2rvpfRZt8wi\nEQ8Sr5CVj1uKIny9bdxKtxVyiT7U1pIZGD1VhWXqY1tMRLxQWWhA2+UtD1pfFzk/\nyqcbqXUvlG6UsQBAlDnaPxKaq3CD1ui1ANVsVY+VEbJyROIVY3q86qw50KSDHu/y\n0TaD6UjZNtnGOVmjh11QZwn2j5A/GYj6gqFDdS58KMMoBuPAfRZ7uD3psJ5CqT6F\nKLwn5q3UvypEm89SmboRIEcq7Pcvv1Zts0QJRDaSA0M4VeW35iuAqnhQ7yHKthAF\nYwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://forum.internet-czas-dzialac.pl/user_avatar/forum.internet-czas-dzialac.pl/kuba/96/1866_2.png"
  },
  "@context": "https://www.w3.org/ns/activitystreams"
}
1 me gusta

¡Me alegra que funcione!

Las comprobaciones de verificación de datos actuales se aplicarán cada vez que un usuario participe en una actividad real (es decir, se autocorrige cuando sea necesario), sin embargo, es una buena idea extender las mismas comprobaciones de verificación al acceso directo del actor de la persona, como está haciendo aquí. Esto lo hará:

Gracias por perseverar con esto. Es muy útil tener una instancia real con datos incorrectos para garantizar que las comprobaciones de verificación funcionen como se espera y según sea necesario. El problema original de corrupción de datos que condujo a estos cambios recientes podría volver a ocurrir de alguna otra forma, por lo que el objetivo aquí es garantizar la coherencia continua de los datos en el punto en que se necesitan (en lugar de manejarlos a través de migraciones, etc.). ¡Avísame si ves algún problema similar!

2 Me gusta

¡Ya funciona! Cambiaré a tu fork por ahora :slight_smile:

1 me gusta

@angus gracias por tu apoyo hasta ahora. Aunque las URL de la bandeja de entrada/salida parecen estar bien ahora, seguir a otros todavía no funciona. He intentado seguir a @kuba@forum.internet-czas-dzialac.pl desde dos instancias diferentes de Mastodon, y ha fallado en ambos casos.

Estoy recibiendo este error al enviar una solicitud de seguimiento para un actor de usuario normal:

[Discourse Activity Pub] Error al procesar https://mastodon.internet-czas-dzialac.pl/6bef64d0-c8ad-473c-85f6-d3fd190b5ebd:
La actividad no es compatible con el actor y el objeto

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:139:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
(... )

Y esto al deshacer una solicitud de seguimiento:

[Discourse Activity Pub] Error al procesar https://mastodon.internet-czas-dzialac.pl/users/icd#follows/5003/undo:
El objeto no está listo

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:137:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
(... )

La segunda advertencia, es decir, esta

No se pudo procesar Internet. Czas działać! 🌎 (@icd@mastodon.internet-czas-dzialac.pl) - Fundacja Internet. Czas działać! - serwer Mastodona El objeto no está listo

es esperada, ya que no puedes Deshacer algo que no se ha hecho.

En cuanto a por qué el seguimiento no funciona

No se pudo procesar https://mastodon.internet-czas-dzialac.pl/6bef64d0-c8ad-473c-85f6-d3fd190b5ebd: La actividad no es compatible con el actor y el objeto

Esto me sugiere que estás intentando seguir a un actor no estándar. Esa advertencia se genera cuando falla una validación de tipo. Puedes ver los diversos tipos de Actor que admitimos en esta carpeta:

https://github.com/discourse/discourse-activity-pub/tree/main/lib/discourse_activity_pub/ap/actor

Además, esa URL no parece resolver nada.

Eso es extraño, solo estoy intentando seguir a un actor de persona normal. Los registros aquí son para mí intentando seguir a @kuba@forum.internet-czas-dzialac.pl (pensando que corresponde a Profile - kuba - Forum Internet. Czas działać!, ¿a menos que me equivoque en algo?)

Por lo que entiendo de https://github.com/discourse/discourse-activity-pub/blob/main/lib/discourse_activity_pub/ap/actor/person.rb, seguir a los usuarios de Discourse a través de AP está soportado, ¿verdad?

No, no lo está. Seguir actores de Discourse, que son categorías o etiquetas, está soportado. Los usuarios de un foro no pueden ser seguidos a través de ActivityPub. Esos son “pseudo usuarios” cuyo actor de categoría/etiqueta está impulsando.

Ah, entendido. ¿Hay planes de ofrecer soporte a los siguientes usuarios en particular? Con gusto ayudaré

Ah, ya veo, sí, eso no es compatible actualmente.

No a corto o medio plazo.