Give tireless a database and a way to see issues. Reads from Gitea, writes
nothing to the forge. No claiming, no agents, no tokens spent.
Done when: labelled issues in a real repo appear in the dashboard within one
poll interval, and a repo's schedule can be changed from the dashboard without a
redeploy.
Why first: it proves the poll loop, the rate discipline and repo configuration
while the blast radius is still zero.
#2 and #4 are independent and can run concurrently. #2 carries a decision about
sqlx compile-time query checking that the rest inherit, so start it first.
Not part of this epic
#8 CI: fail the build on stale TypeScript bindings
#9 is worth doing before any of the above: the deploy has never run, and it is
cheapest to fix while there is no state to lose. #10 tests the assumption the
whole economic argument rests on, and it does not need any of this machinery.
Note on labels
These issues carry tireless/implement but nottireless. That is
deliberate and is the protocol working as designed (design.md §2.2): the mode
label records how the work should be handled, the opt-in label admits it. Add tireless to a child when you want it picked up.
Nothing will be picked up at all until stages 2–4 exist, so for now these are a
backlog for a human or a directed agent session.
Epic for stage 1 of `doc/plan/design.md` §7.
## Goal
Give tireless a database and a way to see issues. Reads from Gitea, writes
nothing to the forge. No claiming, no agents, no tokens spent.
*Done when:* labelled issues in a real repo appear in the dashboard within one
poll interval, and a repo's schedule can be changed from the dashboard without a
redeploy.
*Why first:* it proves the poll loop, the rate discipline and repo configuration
while the blast radius is still zero.
## Children
| Child | Depends on |
| --- | --- |
| #2 Postgres schema and migrations | — |
| #3 `PgStore`: `JobStore` with `FOR UPDATE SKIP LOCKED` | #2 |
| #4 Gitea client: conditional issue listing | — |
| #5 Poll loop: interval floor, jitter, quiet window | #3, #4 |
| #6 Repo CRUD over `/v1` | #3 |
| #7 Dashboard: repos page | #6 |
#2 and #4 are independent and can run concurrently. #2 carries a decision about
sqlx compile-time query checking that the rest inherit, so start it first.
## Not part of this epic
- #8 CI: fail the build on stale TypeScript bindings
- #9 Verify the deploy workflow end to end
- #10 Test plan quality against a real issue
#9 is worth doing before any of the above: the deploy has never run, and it is
cheapest to fix while there is no state to lose. #10 tests the assumption the
whole economic argument rests on, and it does not need any of this machinery.
## Note on labels
These issues carry `tireless/implement` but **not** `tireless`. That is
deliberate and is the protocol working as designed (design.md §2.2): the mode
label records how the work should be handled, the opt-in label admits it. Add
`tireless` to a child when you want it picked up.
Nothing will be picked up at all until stages 2–4 exist, so for now these are a
backlog for a human or a directed agent session.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Epic for stage 1 of
doc/plan/design.md§7.Goal
Give tireless a database and a way to see issues. Reads from Gitea, writes
nothing to the forge. No claiming, no agents, no tokens spent.
Done when: labelled issues in a real repo appear in the dashboard within one
poll interval, and a repo's schedule can be changed from the dashboard without a
redeploy.
Why first: it proves the poll loop, the rate discipline and repo configuration
while the blast radius is still zero.
Children
PgStore:JobStorewithFOR UPDATE SKIP LOCKED/v1#2 and #4 are independent and can run concurrently. #2 carries a decision about
sqlx compile-time query checking that the rest inherit, so start it first.
Not part of this epic
#9 is worth doing before any of the above: the deploy has never run, and it is
cheapest to fix while there is no state to lose. #10 tests the assumption the
whole economic argument rests on, and it does not need any of this machinery.
Note on labels
These issues carry
tireless/implementbut nottireless. That isdeliberate and is the protocol working as designed (design.md §2.2): the mode
label records how the work should be handled, the opt-in label admits it. Add
tirelessto a child when you want it picked up.Nothing will be picked up at all until stages 2–4 exist, so for now these are a
backlog for a human or a directed agent session.