Skip to content

About

Follows up on user activities related to task, sends reminders, and unassign inactive users.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

@ubiquity-os/daemon-disqualifier

Watches user activity on issues, sends reminders on disqualification threshold, and eventually unassigns inactive user to ensure that tasks don't stall, and subtracts XP.

The system utilizes a dedicated CRON workflow (cron.yml) that runs periodically to manage and update reminders. This CRON system maintains state in a database and automatically enables/disables itself based on pending updates. During CRON runs it creates installation-scoped Octokit instances per repository and directly executes the reminder/disqualification flow without editing comments.

Technical Architecture

Overview

Daemon Disqualifier is built as a TypeScript-based GitHub Action that monitors pull request activity and manages reviewer assignments. The system uses a combination of event-driven processing and scheduled tasks to maintain an efficient code review workflow.

Testing Infrastructure

The project includes a comprehensive test suite using Jest:

  • Unit Tests: Cover individual components and utilities
  • Integration Tests: Test interaction between components
  • Mock System (tests/__mocks__/):
    • Database mocks
    • HTTP route mocks
    • GitHub API mocks
    • User activity simulation

Setup

bun install

Database

Runtime state is stored in Postgres through DATABASE_URL.

The deployment workflow only provisions the shared ubiquity-os-postgres Prisma database in Deno Deploy. Deno app lifecycle is managed by ubiquity-os/deno-deploy@main, and both the Deno worker and cron.yml read DATABASE_URL from the selected GitHub environment. Collision avoidance inside the shared database is handled by project-specific tables.

Set DATABASE_URL in both the main and development GitHub environments before enabling Deno deploys or CRON runs.

Test

To start Jest testing, run

bun run test

Valid configuration

- plugin: ubiquity-os/daemon-disqualifier
  with:
    # Time period after which inactive reviewers are unassigned
    negligenceThreshold: "7 days"
    # Time period after which warning notifications are sent
    followUpInterval: "3.5 days"
    # Enable faster processing for priority items
    prioritySpeed: true
    # Enforce pull request requirement
    pullRequestRequired: true
    # List of GitHub webhook events to process (these are the tail of the webhook event i.e. pull_request.review_requested)
    eventWhitelist:
      - "review_requested"
      - "ready_for_review"
      - "commented"
      - "committed"
    availableDeadlineExtensions:
      enabled: true
      amounts:
        - "Priority: 1 (Normal)": 5
        - "Priority: 2 (Medium)": 4
        - "Priority: 3 (High)": 3
        - "Priority: 4 (Urgent)": 2
        - "Priority: 5 (Emergency)": 1

About

Follows up on user activities related to task, sends reminders, and unassign inactive users.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages