8 Commits

Author SHA1 Message Date
mvhutz 3806331768 revert: remove duplicate of analysis 2026-07-04 19:47:01 -04:00
mvhutz 2b610eaab6 chore: moved analysis over from contract adr 2026-07-04 19:42:41 -04:00
mvhutz 00ed7c8888 style: capitalization in status for adr template
CI / Check PR Title (pull_request) Successful in 43s
CI / Makefile Lint (pull_request) Successful in 1m14s
CI / Go Lint (pull_request) Successful in 1m24s
CI / Markdown Lint (pull_request) Successful in 47s
CI / Unit Tests (pull_request) Successful in 1m15s
CI / Fuzz Tests (pull_request) Successful in 1m41s
CI / Mutation Tests (pull_request) Successful in 1m22s
2026-07-03 21:41:42 -04:00
mvhutz b96d47fa1b style: no number in ADR title
CI / Check PR Title (pull_request) Successful in 43s
CI / Go Lint (pull_request) Successful in 1m26s
CI / Markdown Lint (pull_request) Successful in 46s
CI / Makefile Lint (pull_request) Successful in 1m10s
CI / Unit Tests (pull_request) Successful in 1m7s
CI / Mutation Tests (pull_request) Successful in 1m41s
CI / Fuzz Tests (pull_request) Successful in 1m42s
2026-07-03 21:30:35 -04:00
mvhutz df5a25d349 chore: move to docs/adr
CI / Check PR Title (pull_request) Successful in 43s
CI / Makefile Lint (pull_request) Successful in 1m19s
CI / Go Lint (pull_request) Successful in 1m25s
CI / Markdown Lint (pull_request) Successful in 46s
CI / Unit Tests (pull_request) Successful in 1m13s
CI / Fuzz Tests (pull_request) Successful in 1m39s
CI / Mutation Tests (pull_request) Successful in 1m40s
2026-07-03 21:29:04 -04:00
mvhutz 3f77e230a1 revert: no old adr
CI / Check PR Title (pull_request) Successful in 43s
CI / Makefile Lint (pull_request) Successful in 1m15s
CI / Go Lint (pull_request) Successful in 1m20s
CI / Markdown Lint (pull_request) Successful in 47s
CI / Unit Tests (pull_request) Successful in 1m21s
CI / Mutation Tests (pull_request) Successful in 1m52s
CI / Fuzz Tests (pull_request) Successful in 2m28s
2026-07-03 21:22:18 -04:00
mvhutz 7bc42e7101 style: worded consequences more as a checklist 2026-07-03 21:21:50 -04:00
mvhutz 56096bd83f feat: adr for design principles, template 2026-07-03 21:05:36 -04:00
3 changed files with 59 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
# Title
**Status**: <!-- Proposed, accepted, rejected, etc... -->
## Context
<!-- What is the issue that we're seeing that is motivating this decision or change? -->
## Decision
<!-- What is the change that we're proposing and/or doing? -->
## Consequences
<!-- What becomes easier or more difficult to do because of this change? -->
+44
View File
@@ -0,0 +1,44 @@
# Adopt Congruent and Familiar Design For `go-cuckoo`
**Status**: Proposed
## Context
I built `go-cuckoo`'s API interface without design intent.
Up until now, I paid more attention implementing the underlying functionality of the cuckoo hashing.
With the fundamentals of the algorithm built, I should revisit the interface.
The goal of this project was to create an implementation of cuckoo hashing, while adhering to Go's idioms, and being as usable as possible.
While the implementation does work, it lacks direction.
## Decision
To resolve this, I'm enforcing two new principles onto the contract of `go-cuckoo`:
- **Congruency**:
A `go-cuckoo` table should have the same core functionality as Go's built-in map.
- **Familiarity**:
A `go-cuckoo` table should behave similarly to Go's standard map, so users will intuitively know how to use it.
In effect, its users will carry less cognitive load.
These principles should _guide_ the public interface of `go-cuckoo`.
Neither should be treated absolutely, though.
The behavior of `go-cuckoo` is distinct from `map`.
Do not equate them.
## Consequences
1. The repository should support both design principles.
- [ ] Update the `README.md` and `doc.go` to reflect these principles.
- [ ] Update the contributing guide and pull request template to require these principles are met.
2. The repository should contain a living document, describing the interface differences between `go-cuckoo` and `map`.
I should prioritize limiting any incongruencies.
- [ ] Produce the first draft to uncover any current incongruencies.
- [ ] Link the document to the `README.md`.
3. Analyze the familiarity of `go-cuckoo`'s current interface.
Unlike the analysis of congruency, this should be a one time document.
Familiarity is implicit to users, and does not need to be referenced.
But, any rationale should be documented in commit messages, or future ADRs.
- [ ] Produce the analysis document.
- [ ] Resolve any issues found.