[{"name":"agentproto","kind":"directory","size":0,"lastCommitHash":"697a16f12269b4115c4707dacc7dbedab261a92d","lastCommitWhen":"2026-09-12T03:07:00+03:00","lastCommitMessage":"spindle: cleanup before refactor\n\n- explicit `wid.PipelineId.Rkey` reference\n- fix lint warning. wrong break statement\n- remove unused codes\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"artifactstore","kind":"directory","size":0,"lastCommitHash":"8cbf357ce814317f4e686bb668cfa663b4f05d46","lastCommitWhen":"2026-10-26T06:26:38+03:00","lastCommitMessage":"spindle/{artifactstore,engine}: stop deleting a workflow's log when the log directory is also the archive\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"config","kind":"directory","size":0,"lastCommitHash":"53d825d3285c0880b4cac06b1d8c7aec6a922757","lastCommitWhen":"2026-11-05T14:19:38+03:00","lastCommitMessage":"docs,nix/modules,spindle/{config,xrpc}: turn on cors for the spindle by default\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"db","kind":"directory","size":0,"lastCommitHash":"c18a8c20e7355e7f8441674dcac491726e05556a","lastCommitWhen":"2026-11-05T15:55:17+03:00","lastCommitMessage":"spindle/{mill,db}: keep a finished ci run's status when its executor restarts or a cancel arrives late\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"engine","kind":"directory","size":0,"lastCommitHash":"1be4d9c372bff9e6522b4228eda619e5f2dd8984","lastCommitWhen":"2026-11-04T20:13:14+03:00","lastCommitMessage":"spindle/mill: fail a workflow right away when no executor has its labels\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"engines","kind":"directory","size":0,"lastCommitHash":"61f8eadd17695953e4ebb955cb14945f0619cd89","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{engines/microvm,nixcache}: report which attic cache paths a workflow fetched\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"identity","kind":"directory","size":0,"lastCommitHash":"fad5c393cf79ae1a7f74e37778da01300b682869","lastCommitWhen":"2026-10-20T19:19:14+03:00","lastCommitMessage":"spindle: serve a did:web document behind a signing key the operator brings\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"knotclient","kind":"directory","size":0,"lastCommitHash":"a0c573a7668728eecb7f06ec4d79301ce6430911","lastCommitWhen":"2026-10-29T18:02:53+03:00","lastCommitMessage":"docs,spindle: keep a repo's secrets when its manifest goes missing unless the knot says the repo was deleted\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"logview","kind":"directory","size":0,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"mill","kind":"directory","size":0,"lastCommitHash":"c18a8c20e7355e7f8441674dcac491726e05556a","lastCommitWhen":"2026-11-05T15:55:17+03:00","lastCommitMessage":"spindle/{mill,db}: keep a finished ci run's status when its executor restarts or a cancel arrives late\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"models","kind":"directory","size":0,"lastCommitHash":"e25d3752b7647f29c2de87b174d8cfcaf36481b8","lastCommitWhen":"2026-11-09T16:46:00+09:00","lastCommitMessage":"*: fmt\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"netguard","kind":"directory","size":0,"lastCommitHash":"6d6ec7a8668982c584242186778b081293b7d98f","lastCommitWhen":"2026-10-20T19:19:14+03:00","lastCommitMessage":"spindle: run pipelines from knot2's notifyEvent\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"nixcache","kind":"directory","size":0,"lastCommitHash":"44436756fe10b6544870b9a1895ab395da143f77","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{quota,nixcache,engine}: evict nix paths and `cache:` entries in one least recently used order\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"observability","kind":"directory","size":0,"lastCommitHash":"1be4d9c372bff9e6522b4228eda619e5f2dd8984","lastCommitWhen":"2026-11-04T20:13:14+03:00","lastCommitMessage":"spindle/mill: fail a workflow right away when no executor has its labels\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"oidc","kind":"directory","size":0,"lastCommitHash":"fad5c393cf79ae1a7f74e37778da01300b682869","lastCommitWhen":"2026-10-20T19:19:14+03:00","lastCommitMessage":"spindle: serve a did:web document behind a signing key the operator brings\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pemkey","kind":"directory","size":0,"lastCommitHash":"23843fec810a835b085c9b1d847b391b8c766afa","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{config,engine,nixcache,pemkey}: give each run a token for its repo's attic cache\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"pipeline","kind":"directory","size":0,"lastCommitHash":"1133638fa613f43c62714fd8997377e6f68173f6","lastCommitWhen":"2026-10-26T06:26:38+03:00","lastCommitMessage":"spindle/xrpc: list and read pipelines that a cron schedule started\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"quota","kind":"directory","size":0,"lastCommitHash":"44436756fe10b6544870b9a1895ab395da143f77","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{quota,nixcache,engine}: evict nix paths and `cache:` entries in one least recently used order\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"secrets","kind":"directory","size":0,"lastCommitHash":"0e0e98769ad844989aba1ab278ca67ff7fa4af96","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: refuse secret keys that aren't identifiers\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"storage","kind":"directory","size":0,"lastCommitHash":"6f1f48652d1c3ba5e7ccf0a694b9f784d28f6b8d","lastCommitWhen":"2026-09-02T21:18:38Z","lastCommitMessage":"spindle: add generic CI cache\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"webhook","kind":"directory","size":0,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"xrpc","kind":"directory","size":0,"lastCommitHash":"53d825d3285c0880b4cac06b1d8c7aec6a922757","lastCommitWhen":"2026-11-05T14:19:38+03:00","lastCommitMessage":"docs,nix/modules,spindle/{config,xrpc}: turn on cors for the spindle by default\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"account_job_test.go","kind":"file","size":3055,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"admission_pause.go","kind":"file","size":452,"lastCommitHash":"00fb43ab6a562c4b5b057d313641443b76ec9429","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"docs,spindle: send nothing for a paused owner's repos, webhooks included\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"allowlist_test.go","kind":"file","size":1990,"lastCommitHash":"b3d7906f326d1186ae0b0a2aaab89944354590a2","lastCommitWhen":"2026-10-21T00:02:57+03:00","lastCommitMessage":"spindle: take admins, admission and invite codes the way knot2 does\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"backfill_later_test.go","kind":"file","size":1472,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"backfill_marks_test.go","kind":"file","size":1610,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"backfill_skip_test.go","kind":"file","size":2310,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"banned_actor_test.go","kind":"file","size":1581,"lastCommitHash":"865825c8c30444e98edaa60bfaf0a0e2c216d044","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: run nothing for a banned pusher or pull author\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"casbin_copy.go","kind":"file","size":2866,"lastCommitHash":"2121200827b05743538f14e5b986e5a8d6ba446b","lastCommitWhen":"2026-05-12T21:03:05+03:00","lastCommitMessage":"spindle: legacy casbin rekey via tap resync nudge\n\nLewis: May this revision serve well! <lewis@tangled.org>\n"},{"name":"collaborator_marks_test.go","kind":"file","size":3224,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"collaborator_sync_test.go","kind":"file","size":865,"lastCommitHash":"f71277ca4928bf5e92bb15509e3e9c95a6969344","lastCommitWhen":"2026-10-22T06:04:49+03:00","lastCommitMessage":"spindle: write the collaborator row before granting its access\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"collaborators.go","kind":"file","size":2517,"lastCommitHash":"b6efa358af35e2d2dfbce41874fafa778605ad00","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: write collaborators the same way from a full sync and from single records\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"debug_keys_test.go","kind":"file","size":5301,"lastCommitHash":"6d3252b4346f82fb8aafdd1f093965cc8b8da5f9","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: check debug ssh keys against the people who can push\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"debug_keys.go","kind":"file","size":4562,"lastCommitHash":"a10353a301ad0c157eaee1182cf844e94b8f3374","lastCommitWhen":"2026-10-29T06:44:53+03:00","lastCommitMessage":"nix/modules,spindle: accept a repo declaration from the liar pds when the owner's own pds doesn't have one yet\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"engine_microvm_linux.go","kind":"file","size":670,"lastCommitHash":"6d3252b4346f82fb8aafdd1f093965cc8b8da5f9","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: check debug ssh keys against the people who can push\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"engine_microvm_other_test.go","kind":"file","size":565,"lastCommitHash":"b663c52ccf324f6acb5dfbebd431988e5ff4c95d","lastCommitWhen":"2026-10-14T02:55:41+03:00","lastCommitMessage":"spindle: start without the microvm engine where it can't run\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"engine_microvm_other.go","kind":"file","size":428,"lastCommitHash":"6d3252b4346f82fb8aafdd1f093965cc8b8da5f9","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: check debug ssh keys against the people who can push\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"fakes_test.go","kind":"file","size":20376,"lastCommitHash":"f50b646c2fc23c687a13c7763068cdf7dedb01d3","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle: run its tests in parallel\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"faults_test.go","kind":"file","size":18585,"lastCommitHash":"327a5ce5f7e9dd5e4c477efa72357c17cb8f4b9b","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle: make the tests wait for an event to be applied, not just read\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"filter_workflows_test.go","kind":"file","size":1325,"lastCommitHash":"0a25fec471baeaed88fc26c22213c81583e70c64","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"workflow,knotserver,spindle: keep pipeline specs in workflow instead of the sh.tangled types\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"http_server_test.go","kind":"file","size":2060,"lastCommitHash":"9cdf6c4f846b400906675a2369268a6275ae0734","lastCommitWhen":"2026-10-22T06:04:49+03:00","lastCommitMessage":"spindle: time out slow http clients\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"hydrant_pending_test.go","kind":"file","size":7515,"lastCommitHash":"24aaed58bea06e70d596dae3057afea9a3d9105c","lastCommitWhen":"2026-10-20T19:19:15+03:00","lastCommitMessage":"spindle: catch up on what jetstream missed\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"hydrant_test.go","kind":"file","size":28193,"lastCommitHash":"5c76e96a88fb244299afaef4cb375aafa6b9e2a5","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: serve the ci routes under org.tangled only\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"hydrant.go","kind":"file","size":30907,"lastCommitHash":"f9cce9b25d2b9a367d50e757e097de326d9baf41","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"jetstream,spindle: drop duplicated code\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"identity_route_test.go","kind":"file","size":2075,"lastCommitHash":"fad5c393cf79ae1a7f74e37778da01300b682869","lastCommitWhen":"2026-10-20T19:19:14+03:00","lastCommitMessage":"spindle: serve a did:web document behind a signing key the operator brings\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"ingest_shards_test.go","kind":"file","size":8926,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"ingest_shards.go","kind":"file","size":4200,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"ingester_enrollment_test.go","kind":"file","size":1540,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"ingester_test.go","kind":"file","size":10564,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"ingester.go","kind":"file","size":8753,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"instance_lock_other.go","kind":"file","size":103,"lastCommitHash":"80f8578515be5a00335ae367a84ef0d81e05856e","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle: refuse to start a second spindle on the same database\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"instance_lock_test.go","kind":"file","size":751,"lastCommitHash":"80f8578515be5a00335ae367a84ef0d81e05856e","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle: refuse to start a second spindle on the same database\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"instance_lock_unix.go","kind":"file","size":745,"lastCommitHash":"80f8578515be5a00335ae367a84ef0d81e05856e","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle: refuse to start a second spindle on the same database\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"job_workers_test.go","kind":"file","size":1265,"lastCommitHash":"4aded73de1c288e018618b49811909f17f5f8acc","lastCommitWhen":"2026-10-26T13:21:16+09:00","lastCommitMessage":"spindle: create blocked pipelines from event stream\n\npipelines are created when it received the event from event stream or\nnotifyEvent call.\nworkflows that needs an approval will be created with `blocked` state.\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"load_pipeline_test.go","kind":"file","size":3464,"lastCommitHash":"6d6ec7a8668982c584242186778b081293b7d98f","lastCommitWhen":"2026-10-20T19:19:14+03:00","lastCommitMessage":"spindle: run pipelines from knot2's notifyEvent\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"main_test.go","kind":"file","size":519,"lastCommitHash":"f50b646c2fc23c687a13c7763068cdf7dedb01d3","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle: run its tests in parallel\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"middleware.go","kind":"file","size":843,"lastCommitHash":"3eb50c9faa1da22c57240ad9ffd5575b4605da8a","lastCommitWhen":"2025-10-13T10:11:23+01:00","lastCommitMessage":"spindle: improve the logging situation\n\nSigned-off-by: oppiliappan <me@oppi.li>\n"},{"name":"motd","kind":"file","size":850,"lastCommitHash":"4cfec2ad9ee7a0d1839ec49c3e583db3d2ed16ea","lastCommitWhen":"2026-10-08T11:45:00+03:00","lastCommitMessage":"*: swap links to new docs\n\nSigned-off-by: Anirudh Oppiliappan <anirudh@tangled.org>\n"},{"name":"nix_cache_grant_test.go","kind":"file","size":1974,"lastCommitHash":"23843fec810a835b085c9b1d847b391b8c766afa","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{config,engine,nixcache,pemkey}: give each run a token for its repo's attic cache\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"notify_admission_test.go","kind":"file","size":2363,"lastCommitHash":"9651a3a2ef795882cefe3de2853ce7662c3075c0","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: use a fixed set of repo locks and never hold one during a knot request\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"notify_event_test.go","kind":"file","size":17635,"lastCommitHash":"1cb0df9b3f8cd17398a969df66e2d6207929634f","lastCommitWhen":"2026-10-26T13:21:15+09:00","lastCommitMessage":"spindle: trigger manual pipelines via `org.tangled.event.notifyEvent`\n\nManual triggers are now sent to notifyEvent as an\n`org.tangled.ci.trigger.manual` event, authed by the user token like\n`triggerPipeline` was.\n\nTriggerManual no longer takes a fork source or pull request context.\nPipelines from pull request will be created on event stream, not on xrpc\ncall.\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"notify_event.go","kind":"file","size":15702,"lastCommitHash":"d15cbd9da4db885fa7e76efc75de0c5b878e9cf1","lastCommitWhen":"2026-10-30T16:00:03Z","lastCommitMessage":"all: remove the legacy appview and knotserver\n\nMoves around a few packages in accord.\n\nSigned-off-by: Anirudh Oppiliappan <anirudh@tangled.org>\n"},{"name":"notify_shutdown_test.go","kind":"file","size":580,"lastCommitHash":"e8ec5cde8d9e57567ebe4fd4cb449261b00d59ec","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle: end a push's git work when the spindle shuts down\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"notify_slots_test.go","kind":"file","size":8395,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"notify_status_test.go","kind":"file","size":2329,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pause_atomic_test.go","kind":"file","size":2247,"lastCommitHash":"4aded73de1c288e018618b49811909f17f5f8acc","lastCommitWhen":"2026-10-26T13:21:16+09:00","lastCommitMessage":"spindle: create blocked pipelines from event stream\n\npipelines are created when it received the event from event stream or\nnotifyEvent call.\nworkflows that needs an approval will be created with `blocked` state.\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"pause_test.go","kind":"file","size":3536,"lastCommitHash":"9b4416dd0c9c8c4ee9441e2b195d3e7ee1ffc1fd","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: pause the repos of an owner taken off the allow-list\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pause_webhook_test.go","kind":"file","size":2980,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"permissions_test.go","kind":"file","size":8325,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pull_backlog_test.go","kind":"file","size":2198,"lastCommitHash":"f1ec7f192853cf6606a7985d9313a7e4bbc8c658","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"docs,nix,spindle: share the job pool and notify slots fairly across knots\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pull_pipelines_test.go","kind":"file","size":18422,"lastCommitHash":"327a5ce5f7e9dd5e4c477efa72357c17cb8f4b9b","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle: make the tests wait for an event to be applied, not just read\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pull_trust_test.go","kind":"file","size":9557,"lastCommitHash":"41bfcc19e660b2e971deeda30c962cb44d4c89fb","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{engine,engines/microvm}: give untrusted runs no nix cache upload\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pull_versions_test.go","kind":"file","size":2680,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pulls_test.go","kind":"file","size":14480,"lastCommitHash":"327a5ce5f7e9dd5e4c477efa72357c17cb8f4b9b","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle: make the tests wait for an event to be applied, not just read\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"pulls.go","kind":"file","size":18328,"lastCommitHash":"4aded73de1c288e018618b49811909f17f5f8acc","lastCommitWhen":"2026-10-26T13:21:16+09:00","lastCommitMessage":"spindle: create blocked pipelines from event stream\n\npipelines are created when it received the event from event stream or\nnotifyEvent call.\nworkflows that needs an approval will be created with `blocked` state.\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"record_marks_test.go","kind":"file","size":3915,"lastCommitHash":"00fb43ab6a562c4b5b057d313641443b76ec9429","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"docs,spindle: send nothing for a paused owner's repos, webhooks included\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_job_backoff_test.go","kind":"file","size":1640,"lastCommitHash":"00fb43ab6a562c4b5b057d313641443b76ec9429","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"docs,spindle: send nothing for a paused owner's repos, webhooks included\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_job_limits_test.go","kind":"file","size":8876,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_jobs_test.go","kind":"file","size":7958,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_jobs.go","kind":"file","size":12335,"lastCommitHash":"f1ec7f192853cf6606a7985d9313a7e4bbc8c658","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"docs,nix,spindle: share the job pool and notify slots fairly across knots\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_locks_cleanup_test.go","kind":"file","size":923,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_locks_test.go","kind":"file","size":13925,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_locks.go","kind":"file","size":2201,"lastCommitHash":"00fb43ab6a562c4b5b057d313641443b76ec9429","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"docs,spindle: send nothing for a paused owner's repos, webhooks included\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_retry_cap_test.go","kind":"file","size":1946,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_retry_test.go","kind":"file","size":3486,"lastCommitHash":"cc0766ce3139fb11e1b8d0e2242dc2c123321b45","lastCommitWhen":"2026-10-20T19:19:15+03:00","lastCommitMessage":"spindle: ingest org.tangled records from jetstream and drop the knot1 feeds\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repo_retry.go","kind":"file","size":4427,"lastCommitHash":"2c154c61e4a0f3525c0df02ebd613e0bfbc30e83","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle: tick the repo retry loop every 50 ms in tests instead of 10 s\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repos_test.go","kind":"file","size":25682,"lastCommitHash":"a0c573a7668728eecb7f06ec4d79301ce6430911","lastCommitWhen":"2026-10-29T18:02:53+03:00","lastCommitMessage":"docs,spindle: keep a repo's secrets when its manifest goes missing unless the knot says the repo was deleted\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"repos.go","kind":"file","size":13501,"lastCommitHash":"a0c573a7668728eecb7f06ec4d79301ce6430911","lastCommitWhen":"2026-10-29T18:02:53+03:00","lastCommitMessage":"docs,spindle: keep a repo's secrets when its manifest goes missing unless the knot says the repo was deleted\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"retry_approval_test.go","kind":"file","size":3437,"lastCommitHash":"2e95089b4857584e1450147ba0aa7f81148b1868","lastCommitWhen":"2026-10-28T10:56:01+03:00","lastCommitMessage":"spindle: refuse to retry a blocked pipeline that was cancelled before anyone approved it\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"run_env_test.go","kind":"file","size":12049,"lastCommitHash":"0a25fec471baeaed88fc26c22213c81583e70c64","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"workflow,knotserver,spindle: keep pipeline specs in workflow instead of the sh.tangled types\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"run_pipeline_test.go","kind":"file","size":1907,"lastCommitHash":"4aded73de1c288e018618b49811909f17f5f8acc","lastCommitWhen":"2026-10-26T13:21:16+09:00","lastCommitMessage":"spindle: create blocked pipelines from event stream\n\npipelines are created when it received the event from event stream or\nnotifyEvent call.\nworkflows that needs an approval will be created with `blocked` state.\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"schedule_test.go","kind":"file","size":21284,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"schedule.go","kind":"file","size":22849,"lastCommitHash":"0ad9145396d4a59343b2404beffe45697ce3904f","lastCommitWhen":"2026-10-27T05:29:44+09:00","lastCommitMessage":"gitclient,spindle: use git smart-http v2 protocol over xrpc\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"secret_copy.go","kind":"file","size":2960,"lastCommitHash":"2b00f54292c54681e0c4687fe9a950c7337f7e46","lastCommitWhen":"2026-05-12T21:03:05+03:00","lastCommitMessage":"spindle: legacy secret migration via tap resync nudge\n\nLewis: May this revision serve well! <lewis@tangled.org>\n"},{"name":"server_test.go","kind":"file","size":7448,"lastCommitHash":"d15cbd9da4db885fa7e76efc75de0c5b878e9cf1","lastCommitWhen":"2026-10-30T16:00:03Z","lastCommitMessage":"all: remove the legacy appview and knotserver\n\nMoves around a few packages in accord.\n\nSigned-off-by: Anirudh Oppiliappan <anirudh@tangled.org>\n"},{"name":"server.go","kind":"file","size":49096,"lastCommitHash":"e948e6425f0c53a5f5cf0d8501cde7ec4b32e2ca","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{db,server}: stop charging repos for nix uploads from before attic\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"source_repo_test.go","kind":"file","size":1012,"lastCommitHash":"5c76e96a88fb244299afaef4cb375aafa6b9e2a5","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: serve the ci routes under org.tangled only\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"startup_migrations_test.go","kind":"file","size":25229,"lastCommitHash":"d3be465b3dad62e52d15c330780cf38a98725f96","lastCommitWhen":"2026-10-09T18:40:23+03:00","lastCommitMessage":"spindle: backfill with an embedded hydrant instead of tap\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"startup_migrations.go","kind":"file","size":601,"lastCommitHash":"d3be465b3dad62e52d15c330780cf38a98725f96","lastCommitWhen":"2026-10-09T18:40:23+03:00","lastCommitMessage":"spindle: backfill with an embedded hydrant instead of tap\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_admission_test.go","kind":"file","size":18455,"lastCommitHash":"6c34d23490114dc0ad650d9274fe0e3f354df85c","lastCommitWhen":"2026-11-02T13:05:32+01:00","lastCommitMessage":"spindle/{db,quota}: index a repo's attic cache objects with their quota\n\nSigned-off-by: dawn <dawn@tangled.org>\n\n\n\n"},{"name":"torture_engine_test.go","kind":"file","size":4774,"lastCommitHash":"0a25fec471baeaed88fc26c22213c81583e70c64","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"workflow,knotserver,spindle: keep pipeline specs in workflow instead of the sh.tangled types\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_ingest_test.go","kind":"file","size":26889,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_notify_abuse_test.go","kind":"file","size":21575,"lastCommitHash":"3ead49772b4d3574bee00a72fccc46a7193b10ff","lastCommitWhen":"2026-10-22T06:52:37+03:00","lastCommitMessage":"spindle: trim the torture harness\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_notify_test.go","kind":"file","size":8845,"lastCommitHash":"3ead49772b4d3574bee00a72fccc46a7193b10ff","lastCommitWhen":"2026-10-22T06:52:37+03:00","lastCommitMessage":"spindle: trim the torture harness\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_pool_test.go","kind":"file","size":9477,"lastCommitHash":"3ead49772b4d3574bee00a72fccc46a7193b10ff","lastCommitWhen":"2026-10-22T06:52:37+03:00","lastCommitMessage":"spindle: trim the torture harness\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_queue_test.go","kind":"file","size":30466,"lastCommitHash":"4aded73de1c288e018618b49811909f17f5f8acc","lastCommitWhen":"2026-10-26T13:21:16+09:00","lastCommitMessage":"spindle: create blocked pipelines from event stream\n\npipelines are created when it received the event from event stream or\nnotifyEvent call.\nworkflows that needs an approval will be created with `blocked` state.\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"torture_soak_test.go","kind":"file","size":3044,"lastCommitHash":"6d5eb0adb89fead0950423810aa291389e416987","lastCommitWhen":"2026-10-22T19:05:04+03:00","lastCommitMessage":"jetstream,appview,deliberi: read events with our own client and drop bluesky-social/jetstream\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_test.go","kind":"file","size":11982,"lastCommitHash":"3ead49772b4d3574bee00a72fccc46a7193b10ff","lastCommitWhen":"2026-10-22T06:52:37+03:00","lastCommitMessage":"spindle: trim the torture harness\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"torture_world_test.go","kind":"file","size":19349,"lastCommitHash":"0ad9145396d4a59343b2404beffe45697ce3904f","lastCommitWhen":"2026-10-27T05:29:44+09:00","lastCommitMessage":"gitclient,spindle: use git smart-http v2 protocol over xrpc\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"TORTURE.md","kind":"file","size":5717,"lastCommitHash":"3ead49772b4d3574bee00a72fccc46a7193b10ff","lastCommitWhen":"2026-10-22T06:52:37+03:00","lastCommitMessage":"spindle: trim the torture harness\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"wipe_claim_test.go","kind":"file","size":3217,"lastCommitHash":"a0c573a7668728eecb7f06ec4d79301ce6430911","lastCommitWhen":"2026-10-29T18:02:53+03:00","lastCommitMessage":"docs,spindle: keep a repo's secrets when its manifest goes missing unless the knot says the repo was deleted\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"wipe_test.go","kind":"file","size":11244,"lastCommitHash":"f1c20643f94c75f50b4a79a9121e4ebedc06f28e","lastCommitWhen":"2026-10-28T15:06:02+09:00","lastCommitMessage":"cilogs,spindle: follow renamed lexicons\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"wipe.go","kind":"file","size":9910,"lastCommitHash":"f9cce9b25d2b9a367d50e757e097de326d9baf41","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"jetstream,spindle: drop duplicated code\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"wipes_test.go","kind":"file","size":4509,"lastCommitHash":"bd523e5aece32a0af376d5a8209a416a4705663f","lastCommitWhen":"2026-10-22T06:04:51+03:00","lastCommitMessage":"spindle,xrpc/serviceauth: share test setup instead of copying it per test\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"workflow_defs_test.go","kind":"file","size":1810,"lastCommitHash":"174b13cf1e600bee79c8b604fec448d549ff7593","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: read workflow definitions from the knot instead of fetching the repo\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"workflow_defs.go","kind":"file","size":1740,"lastCommitHash":"5c76e96a88fb244299afaef4cb375aafa6b9e2a5","lastCommitWhen":"2026-10-22T06:52:38+03:00","lastCommitMessage":"spindle: serve the ci routes under org.tangled only\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"workflow_limits_test.go","kind":"file","size":1297,"lastCommitHash":"263dedc58e85c7916dabeff708f181d972976832","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: refuse a workflow dir with too many files\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"workflow_limits.go","kind":"file","size":205,"lastCommitHash":"263dedc58e85c7916dabeff708f181d972976832","lastCommitWhen":"2026-10-22T06:04:50+03:00","lastCommitMessage":"spindle: refuse a workflow dir with too many files\n\nSigned-off-by: dawn <dawn@tangled.org>\n"},{"name":"workflow_read_test.go","kind":"file","size":13925,"lastCommitHash":"0ad9145396d4a59343b2404beffe45697ce3904f","lastCommitWhen":"2026-10-27T05:29:44+09:00","lastCommitMessage":"gitclient,spindle: use git smart-http v2 protocol over xrpc\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"},{"name":"workflow_read.go","kind":"file","size":4363,"lastCommitHash":"0ad9145396d4a59343b2404beffe45697ce3904f","lastCommitWhen":"2026-10-27T05:29:44+09:00","lastCommitMessage":"gitclient,spindle: use git smart-http v2 protocol over xrpc\n\nSigned-off-by: Seongmin Lee <git@boltless.me>\n"}]