‹ Reports
The Dispatch

OSS Watchlist: hatchet-dev/hatchet


New Features and Dependency Updates Propel Project Forward

Recent development efforts have focused on introducing new features and updating dependencies, signaling a proactive approach to enhancing functionality and maintaining security.

Recent Activity

Team Members

Summary of Activities

Patterns, Themes, and Conclusions

  1. Dependency Management: Dependabot efficiently handles updates, ensuring the project remains current with external libraries.
  2. Feature Enhancements: Introduction of worker paused state and variable token expiration enhances platform functionality.
  3. Bug Fixes and Optimizations: Several bug fixes and optimizations were implemented, improving overall system stability.
  4. Collaborative Efforts: Strong collaboration among team members on significant features.

Risks

Critical Bug Causing Double Execution of Steps

Prolonged Disagreements Among Team Members

Frequent Rewrites of Source Code Files

Ambiguous Specifications for Important Functionality

Non-Critical PRs Left Open Without Updates

Of Note

  1. Collaborative Feature Development:

    • The worker paused state feature was developed collaboratively by Alexander Belanger and Gabe Ruttner, demonstrating effective teamwork.
  2. Documentation Improvements:

    • Luca Steeb's updates to webhook documentation enhance clarity and usability for developers interacting with webhooks.
  3. Pre-Commit Formatting for Prisma Files:

    • Implemented by Luca Steeb, this ensures consistent formatting across Prisma files, reducing potential merge conflicts.

Overall, the project has made significant progress with new features, bug fixes, dependency updates, and documentation enhancements. However, addressing critical bugs and improving team alignment on specifications remain crucial for continued success.

Detailed Reports

Report On: Fetch commits



Development Team and Recent Activity

Team Members

  • dependabot[bot]

  • Luca Steeb (steebchen)

  • Alexander Belanger (abelanger5)

  • Gabe Ruttner (grutt)

  • Becca Britt (wcbzero)

Recent Activity

dependabot[bot]

  • 0 days ago: Bumped go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc from 1.27.0 to 1.28.0.
  • 0 days ago: Bumped go.opentelemetry.io/otel/sdk from 1.27.0 to 1.28.0.
  • 1 day ago: Bumped google.golang.org/api from 0.186.0 to 0.187.0.
  • 2 days ago: Bumped github.com/gorilla/schema from 1.4.0 to 1.4.1.

Luca Steeb (steebchen)

  • 1 day ago:
    • Removed unused workflows field in webhooks.
    • Pinned Swagger API generation.
    • Added pre-commit formatting for Prisma files.
  • 6 days ago:
    • Updated webhook documentation.
    • Fixed webhook handler to send ActionPayload as string and set content-type in requests.

Alexander Belanger (abelanger5)

  • 2 days ago:
    • Fixed Python SDK docs references to hatchet.admin.
    • Implemented worker paused state feature.
    • Added skip button in onboarding.
    • Introduced variable token expiration feature.

Gabe Ruttner (grutt)

  • 2 days ago:
    • Implemented worker paused state feature.
    • Added skip button in onboarding.
    • Introduced variable token expiration feature.

Becca Britt (wcbzero)

  • 2 days ago: Fixed Python SDK docs references to hatchet.admin.

Patterns, Themes, and Conclusions

  1. Dependency Management: Dependabot continues to handle dependency updates efficiently, ensuring the project remains current with external libraries.
  2. Feature Enhancements: New features such as worker paused state, variable token expiration, and Swagger API generation pinning were introduced, enhancing the platform's functionality.
  3. Bug Fixes and Optimizations: Several bug fixes were implemented, including removing unused fields, fixing documentation references, and improving webhook handling.
  4. Collaborative Efforts: Multiple team members worked together on significant features like the worker paused state and variable token expiration, demonstrating strong collaboration.

Analysis of Progress Since Last Report

Since the last report, there has been substantial activity:

  1. New Features:

    • Worker paused state by Alexander Belanger and Gabe Ruttner.
    • Variable token expiration by Alexander Belanger and Gabe Ruttner.
    • Swagger API generation pinning by Luca Steeb.
  2. Bug Fixes:

    • Removal of unused workflows field in webhooks by Luca Steeb.
    • Fixes in Python SDK documentation by Becca Britt and Alexander Belanger.
  3. Dependency Updates:

    • Multiple updates by dependabot[bot], including go.opentelemetry.io/otel, google.golang.org/api, and github.com/gorilla/schema.
  4. Documentation Updates:

    • Webhook documentation improvements by Luca Steeb.

Overall, the team has made significant progress with new features, bug fixes, dependency updates, and documentation enhancements, indicating a productive development cycle focused on improving functionality and stability.

Report On: Fetch issues



Analysis of Progress Since Last Report

Since the previous analysis 7 days ago, there has been significant activity in the hatchet-dev/hatchet repository. Here is a detailed breakdown of the changes and their implications:

New Issues

Issue #687: feat: Periodically cleanup historical job runs

  • Created: 0 days ago by Ian Clark (evenicoulddoit)
  • Significance: This issue raises the need for an automated cleanup mechanism for old job runs to manage database growth and compliance with regulations like GDPR. The lack of indexes on created markers suggests potential performance issues that need addressing.

Issue #682: feat: add failure information to the onFailure steps

  • Created: 1 day ago by None (abelanger5)
  • Significance: Enhancing the context for onFailure steps to include failure reasons and failed step details will improve debugging and error handling.

Issue #681: Fix: #285

  • Created: 1 day ago by Shivankar Sharma (shiv4nk4r)
  • Significance: This issue addresses a bug (#285) related to the copy-to-clipboard functionality in Firefox. The proposed fix involves using react-copy-to-clipboard to change the behavior of copy-to-clipboard.tsx.

Issue #680: Fix: #662

  • Created: 1 day ago by Shivankar Sharma (shiv4nk4r)
  • Significance: This issue aims to fix another bug (#662) by adding a version component to the UI, which includes theme settings and version display. There is ongoing discussion about integrating this with the API version for consistency.

Issue #668: chore(deps): bump github.com/steebchen/prisma-client-go from 0.37.0 to 0.38.0

  • Created: 5 days ago by None (dependabot[bot])
  • Significance: Regular dependency updates ensure that the project remains secure and up-to-date with the latest features and fixes from dependencies.

Issue #666: feat: Deduplicated enqueue

  • Created: 5 days ago by Ivan Malison (colonelpanic8)
  • Significance: This feature request suggests implementing deduplicated enqueue functionality to avoid redundant workflow executions, which is crucial for long-running and expensive workflows.

Ongoing Discussions

Issue #680: Fix: #662

  • Discussion Highlights:
    • Abelanger5 suggested fetching the version from the /api/v1/meta endpoint.
    • Luca Steeb proposed placing the version information in the settings page for better UI organization.
    • Shivankar Sharma requested documentation for implementing these suggestions.

Issue #666: feat: Deduplicated enqueue

  • Discussion Highlights:
    • Ivan Malison proposed using PostgreSQL constraints for deduplication.
    • Abelanger5 discussed potential implementation approaches, including using metadata fields or checksums.
    • The conversation also touched on whether this should be implemented at the workflow or step level.

Closed Issues

Issue #686: chore(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.27.0 to 1.28.0

  • Created and Closed: 0 days ago by None (dependabot[bot])
  • Significance: Keeping dependencies up-to-date ensures that the project benefits from recent improvements and security patches.

Issue #685, #684, #683, and others closed within the last few days.

  • These issues include various dependency updates, bug fixes, and new features that contribute to overall system stability and functionality.

Observations

  • The repository continues to see active development with new features, bug fixes, and documentation improvements.
  • There is a focus on enhancing user experience through better error messages (#687) and documentation updates (#680).
  • Security remains a priority with regular dependency updates (#686).

Summary

The recent activity in the hatchet-dev/hatchet repository includes critical updates that enhance functionality, security, and user experience. The development team remains proactive in addressing issues promptly, which is a positive indicator for the project's health.

Detailed Breakdown of New Issues

  • #687, #682, and others highlight ongoing efforts to improve code quality, user experience, and security.
  • Documentation updates (#680) are particularly important for user onboarding and reducing friction.

Detailed Breakdown of Closed Issues

  • The closure of issues like #686 through #683 reflects continuous efforts to keep dependencies current while also adding new features and fixing critical bugs.

Conclusion

The hatchet-dev/hatchet repository has seen significant progress over the past 7 days with numerous bug fixes, feature enhancements, and dependency updates. The development team remains responsive and proactive in addressing issues, which bodes well for the project's future stability and usability.

This report captures only activity since the last analysis 7 days ago, focusing on new developments while providing context from previously closed issues where relevant.

Report On: Fetch PR 681 For Assessment



PR #681

Summary

This pull request addresses a bug fix related to the copy-to-clipboard.tsx file in the hatchet-dev/hatchet repository. The primary change involves updating the implementation of the copy-to-clipboard functionality by using the react-copy-to-clipboard package. Additionally, the pnpm-lock.yaml file has been updated to reflect this new dependency.

Changes Made

  1. Dependencies Added:

    • Added react-copy-to-clipboard version ^5.1.0 to package.json.
    • Added type definitions for react-copy-to-clipboard version ^5.0.7 to package.json.
  2. Lock File Update:

    • Updated pnpm-lock.yaml to include the new dependencies and their respective versions.
  3. Component Update:

    • Modified copy-to-clipboard.tsx to use the react-copy-to-clipboard package for copying text to the clipboard.
    • Refactored the component to handle copy success state using the new package.

Detailed Code Review

package.json

+    "react-copy-to-clipboard": "^5.1.0",
+    "@types/react-copy-to-clipboard": "^5.0.7",
  • These additions are straightforward and necessary for incorporating the new library.

pnpm-lock.yaml

The lock file changes reflect the addition of react-copy-to-clipboard and its dependencies, ensuring that the correct versions are installed.

copy-to-clipboard.tsx

+import { CopyToClipboard as Copy } from 'react-copy-to-clipboard';
...
+    <Copy
+      text={text}
+      onCopy={() => {
         setSuccessCopy(true);
         setTimeout(() => {
           setSuccessCopy(false);
         }, 2000);
       }}
     >
  • The component now uses <Copy> from react-copy-to-clipboard, which simplifies handling clipboard operations.
  • The refactoring maintains existing functionality while leveraging a more robust library for clipboard operations.

Assessment

  1. Code Quality:

    • The code is clean and follows best practices.
    • The use of an external library (react-copy-to-clipboard) is appropriate for handling clipboard operations, reducing custom code and potential bugs.
    • The state management for copy success is handled efficiently with React's useState.
  2. Dependency Management:

    • Dependencies are correctly added to both package.json and pnpm-lock.yaml.
    • The lock file updates ensure that all necessary packages are installed with their correct versions.
  3. Functionality:

    • The changes should resolve the bug related to clipboard copying as described in issue #285.
    • The component's behavior remains consistent, providing visual feedback upon successful copy operations.
  4. Review Comments:

    • The reviewer suggested updating the lock file, which was promptly addressed by the contributor.

Recommendations

  • Testing: Ensure thorough testing of the new implementation across different browsers to confirm that clipboard operations work as expected.
  • Documentation: If not already present, consider adding comments or documentation explaining why react-copy-to-clipboard was chosen over native clipboard API usage.

Conclusion

This pull request effectively addresses the bug by integrating a reliable third-party library for clipboard operations, improving both code maintainability and functionality. The changes are well-executed, and the dependency management is handled correctly. This PR is ready for merging after successful testing.

Report On: Fetch pull requests



Analysis of Progress Since Last Report

Since the previous analysis conducted 7 days ago, there has been significant activity in the repository with various pull requests being opened and closed. Here's a detailed report on the changes:

Notable Problems with Open PRs:

  1. PR #681: Fix: #285

  2. PR #680: Fix: #662

  3. PR #672: refactor(db-config): remove disconnect and move to cleanup

  4. PR #668: chore(deps): bump github.com/steebchen/prisma-client-go from 0.37.0 to 0.38.0

    • State: Open
    • Created: 5 days ago, edited today
    • Description: Bumps Prisma client-go dependency to version 0.38.0.
    • Comments: Vercel bot provided deployment updates.
    • Commits: 1 commit focusing on updating the dependency.
    • Files Changed: go.mod, go.sum
  5. PR #655: fix(go-sdk): prefix action names with workflow name

    • State: Open
    • Created: 7 days ago, edited 5 days ago
    • Description: Fixes issue #554 by prefixing action names with workflow name in Go SDK.
    • Comments: Vercel bot provided deployment updates.
    • Commits: 6 commits focusing on fixing action names in Go SDK.
    • Files Changed: Multiple files including examples/webhook/main_e2e_test.go, pkg/client/types/action.go, etc.

Recently Closed/Merged PRs of Interest:

  1. PR #686: chore(deps): bump go.opentelemetry.io/otel/exporters/otlp/otlptrace from 1.27.0 to 1.28.0 -State Closed -Created/Closed0 days ago -Description Updates Golang API dependency to version 1.28.0.

  2. PR#685chore(deps)bumpgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcfrom1.27.0to1.28.0 -Stateclosed -Created/Closed0daysago -Description**UpdatesGolangAPIdependencytoversion1.28.0

3.PR#684chore(deps)bumpgo.opentelemetry.io/otelfrom1.27.0to1.28.0 -Stateclosed -Created/Closed0daysago -Description**UpdatesGolangAPIdependencytoversion1.28.0

4.PR#683chore(deps)bumpgo.opentelemetry.io/otel/sdkfrom1.27.0to1.28.0 -Stateclosed -Created/Closed0daysago -Description**UpdatesGolangAPIdependencytoversion1.28.0

5.PR#679chore(deps)bumpgoogle.golang.org/apifrom0.186.0to0.187.0 -Stateclosed -Created/Closed1dayago -Description**UpdatesGoogleAPIdependencytoversion0.187.0

6.PR#678Fixpythonsdkdocshatchet.adminreferences -Stateclosed -Created/Closed2daysago -Description**Fixesreferencestohatchetadminmoduleinpythonsdkdocs

7.PR#677featworkerpausedstate -Stateclosed -Created/Closed2daysago -Description**AddsPausedstatetoworkerandUIaffordancetoupdatethisstateWhenaworkerisPausedworkwillnotbeassignedtotheworkerbutallconnectionswillnotbeinterrupted

8.PR#676chore(deps)bumpgithub.com/gorilla/schemavfrom1.4.to1..4..1 -Stateclosed -Created/Closed2daysago -Description**BumpsGorillaSchemadependencytoversion1..4..1

9.PR#675chore(packages)pinswaggerapigeneration -Stateclosed -Created/Closed4daysagoeditedtodayclosedtodayMergedbyLucaSteebsteebchentodayPreventsconflicts/issueswiththegeneratedAPIbypinningaspecificversionoftheswaggergenerator

10.PR#674chore(pre-commit)formatprismafileonpre-commit -Stateclosed -Created/Closed4daysagoeditedtodayclosedtodayMergedbyLucaSteebsteebchentodayFormatsprismafileonpre-commitusingTaskfile

11.PR#673fix(go-sdk)addscheduletimeout -Stateclosed -Created/Closed4daysagoedited3daysagoclosed3daysagoMergedbyNoneabelanger53daysagoAddsscheduletimeouttomatchdocumentationfortheGoSDK

12.PR#672refactor(db-config)removedisconnectandmovetocleanupRefactorsdatabaseconfigurationbyremovingdisconnectandmovingittocleanupVercelbotprovideddeploymentupdates

13.PR#671feat(cloud)makepaymentdetailsoptionalandaddlinkAddsLinkpaymentmethodonbillingpage(cloud)

14.PR#670featvariabletokenexpirationMakesexpirationdurationconfigurablefortokenscreatedwiththeCLIandDashboard

15.PR#668chore(deps)bumpgithub.comsteebchen/prisma-client-gofrom037to038BumpsPrismaclient-godependencytoversion038

16.PR#667chore(deps)bumpgithub.com/go-co-op/gocron/v2from270to271BumpsGoCrondendencytoversion271

Report On: Fetch Files For Assessment



Source Code Assessment

File: go.mod

Structure and Quality:

  • Module Declaration: The file begins with a module declaration, specifying the module path as github.com/hatchet-dev/hatchet.
  • Go Version: Specifies Go 1.21, which is a recent version, ensuring compatibility with modern language features.
  • Direct Dependencies: Lists several direct dependencies, including well-known libraries like github.com/fatih/color, github.com/google/go-github, and go.opentelemetry.io/otel. This indicates the project leverages reliable and widely-used libraries.
  • Indirect Dependencies: Also includes indirect dependencies, which are dependencies of the direct dependencies. This is managed automatically by Go modules.
  • Versioning: Dependencies are versioned correctly, with specific versions or commit hashes ensuring reproducibility.

Quality Indicators:

  • Dependency Management: Proper use of Go modules for dependency management ensures that the project can be built reliably and consistently across different environments.
  • Modern Practices: Use of recent versions of dependencies indicates that the project is keeping up with updates and security patches.

Potential Improvements:

  • Comments: Adding comments to explain why certain dependencies are used could help new developers understand the necessity of each library.

File: go.sum

Structure and Quality:

  • Checksums: Contains checksums for all the modules listed in go.mod, ensuring the integrity and consistency of the modules.
  • Comprehensive List: Includes both direct and indirect dependencies, providing a complete picture of all required modules.

Quality Indicators:

  • Integrity Assurance: The presence of checksums ensures that the exact versions of dependencies are used, preventing issues related to dependency tampering or corruption.
  • Automatic Management: Managed automatically by Go, reducing the risk of human error in dependency management.

Potential Improvements:

  • No immediate improvements needed as this file is auto-generated and maintained by Go tooling.

File: internal/services/webhooks/webhooks.go

Structure and Quality:

  • Controller Definition: Defines a WebhooksController struct with necessary fields for managing webhook workers.
  • Initialization Function: The New function initializes a new controller instance.
  • Start Function: The Start function sets up a ticker to periodically check webhook workers' health and manage their lifecycle.
  • Health Check Logic: Implements a health check mechanism to ensure webhook workers are active and healthy.
  • Token Management: Handles token generation and encryption for webhook workers.

Quality Indicators:

  • Concurrency Handling: Uses goroutines and context cancellation to manage concurrent operations effectively.
  • Error Handling: Errors are logged appropriately, providing visibility into issues during execution.
  • Security Practices: Encrypts tokens before storing them, enhancing security.

Potential Improvements:

  • Code Comments: Adding more comments explaining each function's purpose would improve readability.
  • Modularization: Breaking down large functions into smaller ones could enhance maintainability.

File: pkg/webhook/worker.go

Structure and Quality:

  • Worker Definition: Defines a WebhookWorker struct with options for configuration.
  • Initialization Function: The New function initializes a new webhook worker instance.
  • Start Function: The Start function starts the webhook worker using provided options.

Quality Indicators:

  • Client Initialization: Uses a client library for making HTTP requests, encapsulating complexity.
  • Error Handling: Properly handles errors during initialization and startup.

Potential Improvements:

  • Code Comments: Adding comments to explain the purpose of each method would improve clarity.
  • Configuration Validation: Adding validation for worker options could prevent misconfiguration issues.

File: pkg/worker/webhook_handler.go

Structure and Quality:

  • Handler Definition: Defines an HTTP handler for processing webhook requests.
  • Health Check Response Struct: Defines a struct for health check responses.
  • Request Handling Logic: Handles different HTTP methods (GET, PUT, POST) appropriately.
  • Signature Verification: Verifies request signatures to ensure authenticity.

Quality Indicators:

  • Security Practices: Verifies signatures on incoming requests, enhancing security.
  • Error Handling: Logs errors at various stages, aiding in debugging issues.

Potential Improvements:

  • Code Comments: Adding comments explaining each section of the handler would improve readability.
  • Modularization: Breaking down large functions into smaller ones could enhance maintainability.

File: frontend/app/package.json

Structure and Quality:

  • Project Metadata: Contains metadata about the project such as name, version, and private status.
  • Scripts Section: Defines various scripts for development tasks like building, linting, and formatting code.
  • Dependencies Section: Lists both production (dependencies) and development (devDependencies) dependencies.

Quality Indicators:

  • Dependency Management: Uses modern JavaScript libraries like React, Vite, and TailwindCSS, indicating a modern frontend stack.
  • Linting and Formatting Tools: Includes tools like ESLint and Prettier to enforce code quality standards.

Potential Improvements:

  • No immediate improvements needed as this file is well-organized and follows standard practices.

Files Skipped Due to Length

The following files were skipped due to their length exceeding the context window: 1. frontend/app/src/lib/api/generated/Api.ts 2. frontend/app/src/lib/api/generated/data-contracts.ts 3. prisma/schema.prisma

These files likely contain auto-generated code or extensive schema definitions. Reviewing these files manually or using tools designed for large file analysis would be recommended.


Overall, the source code files exhibit good practices in terms of dependency management, concurrency handling, error logging, and security practices. Adding more comments and modularizing some functions could further enhance readability and maintainability.

Aggregate for risks



Notable Risks

Critical bug causing double execution of steps when restarting the engine

Severity: High (3/3)

Rationale

This bug can lead to significant workflow reliability issues, causing unexpected behavior and potentially duplicating actions that should only occur once.

  • Evidence: Issue #552 highlights a critical bug where restarting the engine causes the same step to execute twice.
  • Reasoning: This issue directly impacts the core functionality of the system, leading to potential data corruption, unintended side effects, and unreliable operation of workflows.

Next Steps

  • Prioritize fixing this bug immediately.
  • Implement a robust testing mechanism to ensure that restarting the engine does not cause duplicate executions in the future.

Prolonged disagreement or argumentative engagement among team members

Severity: Medium (2/3)

Rationale

Disagreements can indicate deeper issues within the team that may affect productivity and project direction.

  • Evidence: PR discussions showing considerable disagreement about code and architectural issues (#524).
  • Reasoning: While healthy debate is part of development, prolonged disagreements can slow down progress and lead to fragmented solutions.

Next Steps

  • Escalate the discussion to a tech lead or technical executive for resolution.
  • Facilitate a meeting to align on architectural decisions and ensure all team members are on the same page.

Multiple rewrites of the same source code files in a short period

Severity: Medium (2/3)

Rationale

Frequent changes to the same files can indicate instability or unclear requirements, which may introduce bugs or inconsistencies.

  • Evidence: Multiple commits by Gabe Ruttner and Alexander Belanger on features like worker semaphore v2 and email alert groups (#540, #547).
  • Reasoning: While these changes are aimed at improving functionality, frequent rewrites can lead to integration issues and potential bugs if not managed carefully.

Next Steps

  • Conduct a thorough review of recent changes to ensure stability.
  • Establish clearer requirements and design specifications before implementing further changes.

Ambiguous specifications or direction for important functionality

Severity: Medium (2/3)

Rationale

Ambiguity in specifications can lead to misaligned implementations and wasted effort.

  • Evidence: Issue #541 requests retry delay parameters but lacks detailed defining criteria.
  • Reasoning: Without clear specifications, developers may implement features that do not meet user needs or project goals, leading to rework and delays.

Next Steps

  • Clarify and document detailed specifications for high-priority features.
  • Ensure all stakeholders review and agree on these specifications before development begins.

Non-critical PRs left open for several days without any updates

Severity: Low (1/3)

Rationale

While not urgent, leaving PRs open without updates can indicate potential bottlenecks in the review process.

  • Evidence: PR #501 has been open for 21 days with unresolved linter issues.
  • Reasoning: Delays in merging non-critical PRs can slow down overall development velocity and introduce merge conflicts over time.

Next Steps

  • Assign reviewers promptly and set clear deadlines for reviewing non-critical PRs.
  • Encourage regular updates on open PRs to keep them moving towards closure.