Content inspection and archive walks on seeding nodes (relay)
Test and deploy / test (push) Successful in 1m49s
Test and deploy / deploy (push) Successful in 2m15s

Inspection is split into prepare (database), probe (lib/content/probe:
downloads, decoding and parsing, no database) and apply (database).
worker:collection runs all three; seed:node with SEED_INSPECTORS leases
jobs from the same queues through the seed API (BullMQ manual leases),
fetches articles through the seed API and posts the probes back.

A node now needs only SEED_URL and SEED_TOKEN: the settings the app
requires but a node never uses get placeholders for seed:node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daan MeijerandClaude Opus 5.5 committed 2026-10-06 11:17:02 +02:00
1 parent 51975fe603
commit 2dbca9b152
22 files changed
+1198 -540

No files matched your search

+6
View File
@@ -59,6 +59,12 @@ router
router.post('ranges/:id/done', [SeedController, 'done']).where('id', router.matchers.number())
router.post('ranges/:id/release', [SeedController, 'release']).where('id', router.matchers.number())
router.get('status', [SeedController, 'status'])
// Content inspection and archive walks on nodes (CONCEPT.md D41).
router.post('inspect/lease', [SeedController, 'inspectLease'])
router.post('inspect/done', [SeedController, 'inspectDone'])
router.post('inspect/failed', [SeedController, 'inspectFailed'])
router.post('inspect/release', [SeedController, 'inspectRelease'])
router.get('articles', [SeedController, 'article'])
})
.prefix('/api/v1/seed')
.use(middleware.seedNode())