Commit Graph

6 Commits

Author SHA1 Message Date
1974ad582f refactor: move event system to reducer, remove engine package (#32)
## Description

This PR completes the MVC-inspired refactoring by moving the event system from the engine into the reducer.
The engine package is now removed entirely, as the reducer handles both reduction logic and lifecycle events.

- Add `pkg/reducer/events.go` with `StartEvent`, `StepEvent`, and `StopEvent`.
- Extend `Reducer` interface to embed `Emitter[Event]` and add `Expression()` method.
- Update `NormalOrderReducer` to embed `BaseEmitter` and emit lifecycle events during reduction.
- Update all plugins to attach to `Reducer` instead of `Engine`.
- Remove `internal/engine` package entirely.
- Add `Off()` method to `BaseEmitter` to complete the `Emitter` interface.
- Fix `Emitter.On` signature to use generic type `E` instead of `string`.

### Decisions

- The `Reducer` interface now combines reduction logic with event emission, making it the single orchestration point.
- Plugins attach directly to the reducer, simplifying the architecture.
- The `Expression()` method on `Reducer` provides access to current state for plugins.

## Benefits

- Simpler architecture with one fewer abstraction layer.
- Plugins are now mode-agnostic - they work with any `Reducer` implementation.
- Cleaner separation: reducers handle reduction, plugins observe via events.
- Easier to add new evaluation modes - just implement `Reducer` with embedded emitter.

## Checklist

- [x] Code follows conventional commit format.
- [x] Branch follows naming convention (`<type>/<description>`).
- [x] Tests pass (if applicable).
- [ ] Documentation updated (if applicable).

Reviewed-on: #32
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
2026-01-17 00:27:36 +00:00
19652563a4 docs: add issue linking instructions to PR workflow (#23)
## Description

This PR updates CLAUDE.md to include documentation about linking issues in pull requests.
The documentation explains how to use the "Closes #<number>" syntax in commit messages and PR descriptions to automatically link and close issues when PRs are merged.

### Changes

- Added "Linking issues" section to Pull Request Management in [CLAUDE.md](CLAUDE.md:81-82).
- Documented the use of `Closes #<number>` syntax for automatic issue closure.

## Benefits

Developers will know to properly link issues in their PRs.
Issues will be automatically closed when their corresponding PRs are merged.
The repository will maintain better traceability between issues and PRs.

## Checklist

- [x] Code follows conventional commit format.
- [x] Branch follows naming convention (`<type>/<description>`). Always use underscores.
- [x] Tests pass (if applicable).
- [x] Documentation updated (if applicable).

Reviewed-on: #23
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
2026-01-13 01:45:53 +00:00
dec9af0244 feat: add issue templates for Gitea (#22)
## Description

This PR implements issue templates for the lambda repository to improve issue tracking and developer experience.
The templates follow Gitea best practices and provide clear guidance for users when creating issues.
Three distinct templates were created to handle different types of issues: feature requests, bug reports, and general issues.

### Changes

- Created [.gitea/ISSUE_TEMPLATE/feature.md](.gitea/ISSUE_TEMPLATE/feature.md) for feature requests and enhancements.
- Created [.gitea/ISSUE_TEMPLATE/bug.md](.gitea/ISSUE_TEMPLATE/bug.md) for bug reports.
- Created [.gitea/ISSUE_TEMPLATE/general.md](.gitea/ISSUE_TEMPLATE/general.md) for general issues.
- Updated [CLAUDE.md](CLAUDE.md) with issue management and workflow documentation.

### Decisions

All templates use Markdown format with YAML frontmatter, following the existing PR template style.
Each template includes pre-populated metadata (title prefix, labels, target branch).
Templates provide inline HTML comments to guide users without cluttering the final issue.
The templates are consistent with conventional commit format (feat:, fix:, etc.).

## Benefits

Users will have clear guidance when creating issues, reducing back-and-forth communication.
Issues will be more structured and contain necessary information for developers.
Pre-populated labels and titles ensure consistent issue categorization.
The templates align with the existing PR template style for a cohesive experience.

## Checklist

- [x] Code follows conventional commit format.
- [x] Branch follows naming convention (`<type>/<description>`). Always use underscores.
- [x] Tests pass (if applicable).
- [x] Documentation updated (if applicable).

Reviewed-on: #22
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
2026-01-13 01:43:36 +00:00
c0353c8e1f feat: add required name field to PR template (#7)
## Description

Gitea requires a `name` field in the frontmatter of pull request templates.
This PR adds the required `name: "Default Template"` field to fix the template validation error.
Additionally updates CLAUDE.md to reference the PR template format and use lowercase for PR title placeholder.

## Benefits

- The pull request template is now valid and will be properly loaded by Gitea.
- Users creating PRs will see the template automatically populated.
- CLAUDE.md now documents the PR template format for consistency.

## Checklist

- [x] Code follows conventional commit format.
- [x] Branch follows naming convention (`<type>/<description>`).
- [x] Tests pass (if applicable).
- [x] Documentation updated (if applicable).

Reviewed-on: #7
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
2026-01-10 22:54:43 +00:00
8b6c632e4d feat: add pull request template (#5)
## Description

Added a standardized pull request template to improve PR quality and consistency. The template provides a clear structure for contributors to follow when creating PRs.

The template includes:
- Title placeholder following conventional commit format (`<type>: <description>`)
- Description section with guidance on context, rationale, and changes
- Optional Decisions section for architectural choices
- Benefits section to highlight improvements
- Checklist for conventional commits, branch naming, tests, and documentation

### Decisions

Created the template in `.gitea/PULL_REQUEST_TEMPLATE/default.md` to support multiple template types in the future.

## Benefits

- Ensures PRs follow project conventions (conventional commits, branch naming)
- Provides clear structure for describing changes
- Helps reviewers understand context and benefits
- Reduces back-and-forth by reminding contributors of requirements
- Supports future expansion with additional template types

Reviewed-on: #5
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
2026-01-10 22:44:41 +00:00
7a5944594f docs: add project guidelines for Claude Code (#4)
## Summary
- Add CLAUDE.md with project guidelines
- Documents conventional commit format and types
- Specifies branch naming conventions
- Includes PR management instructions using tea CLI

## Test plan
- Review CLAUDE.md content
- Verify formatting and accuracy

Reviewed-on: #4
Co-authored-by: M.V. Hutz <git@maximhutz.me>
Co-committed-by: M.V. Hutz <git@maximhutz.me>
2026-01-10 22:32:15 +00:00