Skip to content

Develop "FOC Project Bot" plan #25

@BigLep

Description

@BigLep

Done criteria

We have a plan and set of tasks to implement so that the "FOC Project Bot" described below could be implemented. This plan could be markdown document(s) and/or github issues.

Background

All of the Filecoin Onchain Cloud working group (FOC WG) engineering work is tracked by issues and PRs on github that show up on the FOC board: FOC . We have various GitHub project workflows (example) and repository github workflow (example) that take on ensuring all the relevant issues/PRs are on the FOC project board, but there is still manual followup that happens afterwards to set assignees, reviews, the current cycle, the cycle theme, the milestone, etc. This manual followup generally falls on FOC TPMs (e.g., @rjan90, @BigLep) or engineers.

I want a "FOC Project Bot" that can handle a lot of the FOC project board management and maintenance automatically or at least help make it easier for FOC TPMs to do this work.

Requirements

See the current contents of the FOC project

Must be able to load the contents of the FOC Project and see all issues and PRs, their native state (assignee, reviewers, milestone, etc.), and state in the FOC project (status, cycle, estimate, etc).

It should also be possible to view the Project with a filter to load and process faster. For example, it's often advantageous to filter out "Done" items. "FOC Project Bot" should be able to contruct intelligent filters so it runs snappy.

Be able to mutate the FOC project and issue/PR state

Anything a human could do like change the milestone, set the status, set an assignee, etc. "FOC Project Bot" should also be able to do unless otherwise noted. (For example, down below I discuss how I don't want "FOC Project Bot" to be removing items from the project.)

Chat interface

I want a way to chat with "FOC Project Bot" where anyone on the team can ask it to take actions and it will reply with the result. Similarly, if it is proactively doing cleanup or making decisions, I want it to log to chat what it's done so it's easy for someone to ask it followup questions or inform "FOC Project Bot" of mistakes.

The team already lives in slack, so it would be ideal to have a chat interface through slack.

Durably Persist Its Context in a Human Readable Form

"FOC Project Bot" will build up knowledge about the FOC Project and wil create rules that it discovers itself or as given by TPMs. I want to make sure those get persisted. This could be as a markdown file in a repo, or could be a Notion document. Whenever "FOC Project Bot" runs, it should use this context for making decisions.

Example rules I can imagine it having include:

  • NEVER remove items from the FOC project without getting double confirmation from a human.
  • ALWAYS set the assignee of a new PR in the FOC Project to be the author of the PR unless an assignee was already set.
  • ALWAYS set the Cycle Theme of new PRs in the FOC project that are from debendabot to be "Dependency Updates". These items should also have their status set to "Todo" and they should be added to the current Cycle.

Run based on "triggers" or "events"

The manual human form is to review the FOC project a couple of times a day. At the minimum, "FOC Project Bot" should be on a schedule to wake up, get the state of the world, and take action. It would also be fine if it had a webhook so it responded to board activity automatically.

Bonus: keep a log of actions

Not required to start, but I bring it up now in case it affects the architecture: it would be great to be able to say "Hey, @focProjectBot, what have you done or notice the last 24 hours and to get a summary back of the actions it has taken".

Architecture and Design

This needs to get figured out, but we need to figure how "FOC Project Bot" runs. Ideas that come to mind:

  • Part of Claude'a repeated job flow? The downside I see of this as this it will be harder to make it work for multiple concurrent users.
  • Leverage Notion Custom as what I'm describing is somewhat similar to the Notion Feedback Router in https://www.notion.com/blog/introducing-custom-agents and https://www.youtube.com/watch?v=w5cFKe2H3Qw&t=2s
    • This seems like it could be nice as it can easily hook into slack and be storing its context in a Notion page.
  • Do some sort of n8n workflow and a good MCP server that knows about prebuilt tools and about our FOC project.

Other Thoughts

  • https://github.com/FilOzone/tpm-utils is already building up various tools/scripts for working with our FOC project and repos. It would be great if "FOC Project Bot" knew how to wield them.
  • We'll need a GitHub identity to read/manipulate the FOC project and its issues. I would plan on us using https://github.com/FilOzzy . Maybe instead of calling this desired entity I've described above as "FOC Project Bot", we instead start calling it "FilOzzy"?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

🐱 Todo

Relationships

None yet

Development

No branches or pull requests

Issue actions