chore(claude): add CLAUDE instructions for repo#19
Merged
Conversation
4f6ad60 to
80a4041
Compare
Collaborator
Author
|
This change is part of the following stack: Change managed by git-spice. |
This was referenced Feb 17, 2026
80a4041 to
6773b3a
Compare
sbalabanov
reviewed
Feb 17, 2026
| ``` | ||
| extensions/{extension}/{impl}/ | ||
| ├── BUILD.bazel | ||
| ├── factory.go # Implements Factory interface |
Contributor
There was a problem hiding this comment.
I do not think we always need a factory for each extension
sbalabanov
reviewed
Feb 17, 2026
| │ ├── message_test.go | ||
| │ ├── delivery.go # Delivery entity | ||
| │ └── delivery_test.go | ||
| └── storage/ # Storage domain entities |
Contributor
There was a problem hiding this comment.
I flattened that... Request is a fundamental entity and does not belong to storage. I am not even sure if we need a hierarchy of entities, we will have like couple dozens of them at most?
Collaborator
Author
There was a problem hiding this comment.
i can see entities being flat for all the business layer, maybe we keep the entities for any infra related out of it. like for DB messaging queue...
sbalabanov
reviewed
Feb 17, 2026
| 1. **Never use WORKSPACE**: This repo uses Bzlmod exclusively | ||
| 2. **Commit generated files**: All `*pb.go` files are committed | ||
| 3. **Use interfaces for extensions**: Keep implementations swappable | ||
| 4. **Follow the Factory pattern**: All extensions use Factory interface |
Contributor
|
we will also need to add basic architectural principles around immutability and eventual consistency paradigm, in particular when working with the database |
sbalabanov
approved these changes
Feb 17, 2026
## Why? Address review comments on PR #19 regarding architectural principles, factory pattern flexibility, and entity organization. ## What? - Add Core Principles section with immutability and eventual consistency paradigm - Clarify Factory pattern is usually needed but not always required - Document entity hierarchy rationale (domain-driven organization) - Add example code for immutable entity pattern with optimistic locking - Include guidance on idempotency, event sourcing, and database operations ## Addresses - sbalabanov's comment: "add basic architectural principles around immutability and eventual consistency paradigm, in particular when working with the database" - sbalabanov's comment: "I do not think we always need a factory for each extension" - Entity organization clarification (hierarchical by domain vs flat) ## Test Plan - [x] Documentation changes reviewed for accuracy - [x] Examples align with existing codebase patterns
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why?
To document the repository structure, extension system, and development workflows for AI-assisted development and developer onboarding.
What?
Adds
CLAUDE.mdcovering:extensions/{type}/{impl}/) for pluggable backendsentities/{domain}/)