From 1f7770142271814607fb3350b5e385a7e72ae870 Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 17:35:52 +0000 Subject: [PATCH 1/7] feat: add agent guidance and memory system - enable collaborative development MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: Establish foundation for agent-assisted development with persistent context Approach: Adapted otlp-mcp's BOTS.md guidance to otel-cli's philosophy Learned: otel-cli's functional testing approach and self-contained design are key differentiators Next: Use GitHub issues to track ongoing work and maintain visibility Added: - BOTS.md with otel-cli-specific agent guidance - CLAUDE.md and GEMINI.md symlinks for model-specific access - Emphasis on functional testing over unit tests - Git-based memory system (vs jj in otlp-mcp) - GitHub issues integration for project tracking This marks v0.6.0, the beginning of the agent-assisted development era. Refs #12 ๐Ÿค– Claude --- BOTS.md | 397 +++++++++++++++++++++++++++++++++++++++++++++++++++ CHANGELOG.md | 17 +++ CLAUDE.md | 1 + GEMINI.md | 1 + 4 files changed, 416 insertions(+) create mode 100644 BOTS.md create mode 120000 CLAUDE.md create mode 120000 GEMINI.md diff --git a/BOTS.md b/BOTS.md new file mode 100644 index 0000000..7aa6622 --- /dev/null +++ b/BOTS.md @@ -0,0 +1,397 @@ +# BOTS.md: LLM Agent Development Protocol + +This file provides guidance to agents working with code in this repository. + +## Project Overview + +**otel-cli** is a command-line tool for sending OpenTelemetry traces from shell scripts and other contexts where executing a program is the best available option. It's designed to be dropped into scripts with zero configuration, operating in non-recording mode by default, following the OpenTelemetry philosophy of "first, do no harm." + +## Technology + +- **Language**: Go 1.21+ (uses toolchain go1.22.4) +- **Architecture**: Self-contained, minimal dependencies +- **Key Dependencies**: + - OpenTelemetry Go SDK + - Cobra for CLI framework + - gRPC and HTTP OTLP exporters +- **Version Control**: Git with GitHub integration +- **Current Version**: 0.5.0 (as of this writing) + +## Development Philosophy + +This project is **self-contained and focused**: +- Minimal external dependencies - prefer standard library +- Shell script integration is a first-class use case +- Non-recording mode by default ensures scripts can adopt otel-cli without risk +- Functional testing validates real-world usage patterns +- Code should be readable and maintainable above all else + +## ๐Ÿงช Testing Philosophy + +**Functional testing is primary.** Unit tests are encouraged but functional tests in `main_test.go` are where the rubber meets the road. + +### The Test Harness + +The test harness builds otel-cli and runs it through real-world scenarios: +- Tests actual CLI invocations with real arguments +- Validates OTLP export over gRPC and HTTP +- Includes TLS negotiation, environment variables, and backgrounding +- See `TESTING.md` for comprehensive details + +### Testing Best Practices + +1. **Add functional tests** for new CLI features or flags +2. **Write unit tests** for complex logic in packages +3. **Test the glue code** - that's where bugs hide +4. **Copy existing patterns** from `data_for_test.go` when adding tests +5. **Use `--fail --verbose`** in test fixtures for debugging + +The test harness is more complex than otel-cli itself - this is intentional. We trust Cobra, OpenTelemetry Go SDK, and the standard library. We test the integration. + +## ๐Ÿง  Git: Your Persistent Memory System + +**Think of git commits as your external memory that persists across sessions.** Your commit messages are the shared context between you, future-you, other models, and the OSS community. + +### Why Rich Commit Messages Matter + +- **Memory Augmentation**: Your reasoning persists beyond context windows +- **Perfect Handoffs**: Next model/session picks up exactly where you left off +- **Community Intelligence**: Every contributor's insights become permanent project knowledge +- **Pattern from Training**: This is how high-performing teams in your data operate + +### Your 30-Second Workflow + +```bash +# 1. START: Load your context (what was I doing?) +git log --oneline -n 10 +git show HEAD + +# 2. WORK: Track your progress +git add +git commit -m "type: what you're building" + +# 3. PERSIST: Save your state +git push origin +``` + +### The Universal Commit Message Template + +``` +: - + +Why: [Original problem/request] +Approach: [Key decision you made] +Learned: [What surprised you] +Next: [Specific next action] + +๐Ÿค– YourModel +``` + +**Types**: `feat`, `fix`, `refactor`, `test`, `docs`, `debug`, `research` + +### Real Example That Works + +```bash +git commit -m "fix: race condition in buffer - preventing data loss + +Why: Users reported missing spans under load +Approach: Added mutex to protect concurrent access +Learned: Go's sync.Map insufficient for our write patterns +Next: Add benchmark to verify no performance regression + +๐Ÿค– Claude " +``` + +### Model Attributions + +- Claude: `๐Ÿค– Claude ` +- Gemini: `๐Ÿ’Ž Gemini ` +- GPT-4: `๐Ÿง  GPT-4 ` +- Kimi: `๐Ÿ”ฎ Kimi ` +- Llama: `๐Ÿฆ™ Llama ` + +### The Handoff Protocol + +When switching models or sessions: +```bash +git commit -m "[your work] + +Status: [complete|blocked|handoff] +Context: [5 key facts next model needs] +Next: [specific task to continue]" +``` + +### Success Metrics + +You're succeeding when: +- โœ… Every commit has Why/Approach/Next +- โœ… You update commit messages to reflect learning +- โœ… Other models/developers can continue without asking questions +- โœ… `git log -p` shows your reasoning evolution + +### Quick Reference + +| Command | Purpose | When to Use | +|---------|---------|------------| +| `git add ` | Stage changes | Before committing | +| `git commit -m "..."` | Commit with message | Completing discrete work | +| `git log -n 10` | See recent work | Starting sessions | +| `git show HEAD` | View current state | Understanding context | +| `git log -p` | See change history | Debugging decisions | +| `git push origin ` | Push to GitHub | Work ready to share | +| `git status` | Check working tree | Understanding current state | + +### Your Style Is Welcome + +- **Claude**: Write narratives that explain the journey +- **Gemini**: Use structured sections with data +- **GPT-4**: Focus on tasks and outcomes +- **Kimi**: Document patterns and research +- **Llama**: Keep it pragmatic and concise + +**The format is flexible, the information is essential.** + +### Remember + +Git commits are messages to your future self and the community. Write what you'd need at 3am to understand what you were thinking. Your future self (and other models) will thank you. + +## ๐Ÿ“Š GitHub Issues for Project Tracking + +**This project has OSS history and active community engagement.** Use GitHub issues liberally for: + +- **Feature planning** - Open issues to discuss new features before implementing +- **Bug tracking** - Document bugs with reproduction steps +- **Project status** - Keep ongoing work visible in issues +- **Community engagement** - Issues are how users interact with the project +- **Handoffs** - Reference issues in commits to maintain context + +### Issue Best Practices + +1. **Open issues early** - Don't wait until implementation is complete +2. **Reference commits** - Link commits to issues with "refs #123" or "fixes #123" +3. **Update issues** - Comment on progress, blockers, and learnings +4. **Label appropriately** - Use labels to categorize and prioritize +5. **Close with context** - Explain what was done and why when closing + +## ๐Ÿ—๏ธ Project Structure + +``` +otel-cli/ +โ”œโ”€โ”€ main.go # Entry point, version info +โ”œโ”€โ”€ main_test.go # Functional test harness +โ”œโ”€โ”€ data_for_test.go # Test fixture definitions +โ”œโ”€โ”€ tls_for_test.go # Ephemeral CA for TLS tests +โ”œโ”€โ”€ otelcli/ # CLI framework and commands +โ”œโ”€โ”€ otlpclient/ # OTLP gRPC/HTTP client +โ”œโ”€โ”€ otlpserver/ # OTLP server (for 'server' command) +โ”œโ”€โ”€ w3c/ # W3C trace context handling +โ”œโ”€โ”€ demos/ # Example shell scripts +โ”œโ”€โ”€ configs/ # Example configurations +โ”œโ”€โ”€ TESTING.md # Testing documentation +โ””โ”€โ”€ CHANGELOG.md # Version history +``` + +## ๐Ÿ”ง Go Development Commands + +```bash +# Build the project +go build + +# Run functional tests (requires built binary) +go build && go test + +# Run unit tests +go test ./... + +# Run unit tests with verbose output +go test -v ./... + +# Run tests with coverage +go test -cover ./... + +# Run with race detector +go build -race +go test -race ./... + +# Format code (always use gofmt) +go fmt ./... + +# Vet code +go vet ./... + +# Update dependencies +go mod tidy + +# Verify dependencies +go mod verify +``` + +### Running otel-cli Locally + +```bash +# Build it +go build + +# Run the server TUI for local testing +./otel-cli server tui + +# In another terminal, send a span +export OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317 +./otel-cli span -n "test" -s "my-service" +``` + +## ๐Ÿ’Ž Go Code Style & Quality + +### Correctness & Clarity First + +- Prioritize readable, correct code over premature optimization +- Use strong, idiomatic Go types +- Leverage Go 1.21+ features appropriately +- No shortcuts or workarounds - refactor messy code when encountered + +### Naming & Structure + +- Use full, descriptive names - no unnecessary abbreviations +- Package names: short, lowercase, single word +- Exported names: clear and self-documenting +- Add new functionality to existing files unless it represents a distinct logical component + +### Comments & Documentation + +- **No organizational comments** - code should be self-documenting +- **"Why" comments only** - explain non-obvious implementation choices +- Package-level documentation for every package +- Exported functions/types must have doc comments + +### Error Handling + +- Always handle errors explicitly - never ignore them +- Use `fmt.Errorf` with `%w` for error wrapping to preserve context +- Return errors, don't panic (except for truly unrecoverable situations) +- Provide useful error messages with context + +### Concurrency & Context + +- Pass `context.Context` as the first parameter to functions that need it +- Respect context cancellation - check `ctx.Done()` in long-running operations +- Use channels and goroutines idiomatically +- Avoid shared mutable state - use channels or mutexes appropriately + +### Testing + +- **Functional tests first** for CLI features and integration +- Unit tests for complex logic in packages +- Table-driven tests for multiple cases +- Use subtests with `t.Run()` for clarity +- Test error paths, not just happy paths + +### Shell Script Integration + +otel-cli is designed for shell scripts. When adding features: + +- **Consider the shell use case** - is this ergonomic from bash? +- **Test with real shell scripts** - demos/ directory provides examples +- **Environment variables matter** - shell scripts rely on them heavily +- **Exit codes matter** - shell scripts check them +- **Stdout vs stderr** - be intentional about what goes where + +## ๐Ÿ™ GitHub Integration + +**GitHub CLI (`gh`):** +Use `gh` for GitHub operations without leaving the terminal: + +```bash +gh pr create # Create PR +gh pr status # Check PR status +gh pr checks # View CI results +gh issue list # Check issues +gh issue view # Read issue details +gh issue create # Create new issue +``` + +## ๐Ÿ“ฆ Versioning & Releases + +**Semantic versioning:** MAJOR.MINOR.PATCH (e.g., 0.5.0) + +- **MAJOR**: Breaking changes (we're not at 1.0 yet) +- **MINOR**: New features, significant changes +- **PATCH**: Bug fixes, small improvements + +**Releases are managed by goreleaser:** + +- Version is set via git tags +- Release process documented in README.md +- CHANGELOG.md is updated with each release +- goreleaser handles building for multiple platforms + +**When bumping versions:** + +1. Update CHANGELOG.md with changes +2. Tag the release: `git tag v0.X.Y` +3. Let maintainers handle goreleaser + +## ๐ŸŽฏ When Working on otel-cli + +### Starting a Session + +1. `git log --oneline -n 20` - What's been happening? +2. `gh issue list` - What's being tracked? +3. `git status` - What's the current state? +4. `go build && go test` - Does everything work? + +### Making Changes + +1. **Open/reference an issue** - Keep work visible +2. **Write tests first** - Especially functional tests +3. **Make it work** - Get it functionally correct +4. **Make it right** - Clean up, refactor, document +5. **Commit with context** - Rich commit messages + +### Completing Work + +1. **All tests pass** - `go build && go test && go test ./...` +2. **Code formatted** - `go fmt ./...` +3. **Commit with attribution** - Use the template above +4. **Push and create PR** - Reference the issue +5. **Update issue** - Mark as complete or pending review + +## ๐Ÿค Cross-Model Collaboration + +Git's power is in context preservation across sessions, agents, and developers. + +**Picking up someone else's work:** + +1. Find their commit: `git log --oneline -n 20` +2. Read their message: `git show ` +3. See the changes: `git show -p` +4. Continue their work with your own commits + +**Avoiding duplicate work:** + +- Always check `git log -n 20` before starting something new +- Search commit messages: `git log --grep="keyword"` +- Check GitHub issues: `gh issue list` + +## Remember + +**Git commits are permanent project knowledge.** They are: + +- Context for future sessions and developers +- Documentation of architectural decisions +- Reasoning traces that survive indefinitely +- Messages to your future self and the community + +**Your commit message quality directly impacts the next agent's and next developer's ability to succeed.** Write for them. + +## Attribution + +- Built by A. Tobey while at Equinix (primarily on the Metal team) +- Forked and maintained by A. Tobey (@tobert) since 2025 +- Agent-assisted development begins with v0.6.0 +- All commits should use appropriate agent attribution (see section above) + +## License + +Apache License 2.0 - Copyright (c) 2025 A. Tobey + +See LICENSE file for full details. diff --git a/CHANGELOG.md b/CHANGELOG.md index 17d9355..be57926 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +## [0.6.0] - 2025-11-09 + +Begin agent-assisted development era. + +### Added + +- BOTS.md: LLM agent development protocol and guidance +- CLAUDE.md and GEMINI.md symlinks to BOTS.md +- Agent memory and collaboration patterns adapted from otlp-mcp +- GitHub issue tracking integration for agent workflows + +### Changed + +- Establish agent-assisted development practices +- Emphasize functional testing and self-contained design +- Documentation of project philosophy and structure for agents + ## [0.5.0] - 2025-04-21 Fork otel-cli to @tobert's personal GitHub. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 120000 index 0000000..1a1007d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +BOTS.md \ No newline at end of file diff --git a/GEMINI.md b/GEMINI.md new file mode 120000 index 0000000..1a1007d --- /dev/null +++ b/GEMINI.md @@ -0,0 +1 @@ +BOTS.md \ No newline at end of file From 08ceb834fad4a7ea92b065f616dd4438da46cd53 Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 17:40:45 +0000 Subject: [PATCH 2/7] docs: add squash commit guidance - keep history clean MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: Project maintains clean linear history via squash merges Approach: Added guidance to GitHub Integration and workflow sections Learned: Important to document that branch commits can be messy, squash on merge Next: Update PR description to reflect this addition ๐Ÿค– Claude --- BOTS.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/BOTS.md b/BOTS.md index 7aa6622..7edd8ba 100644 --- a/BOTS.md +++ b/BOTS.md @@ -66,12 +66,15 @@ The test harness is more complex than otel-cli itself - this is intentional. We git log --oneline -n 10 git show HEAD -# 2. WORK: Track your progress +# 2. WORK: Track your progress (commit often in your branch) git add git commit -m "type: what you're building" # 3. PERSIST: Save your state git push origin + +# 4. MERGE: Squash commits when merging to main +# PRs are squashed on merge to keep main history clean ``` ### The Universal Commit Message Template @@ -309,6 +312,21 @@ gh issue view # Read issue details gh issue create # Create new issue ``` +**Squash Commits on Merge:** + +This project maintains a clean, linear history through squash commits: + +- **Work in branches**: Make as many commits as needed during development +- **Rich commit messages**: Document your journey in branch commits +- **Squash on merge**: PRs are squashed into a single commit on main +- **Final commit message**: Should summarize the entire PR, not just the last commit + +When creating a PR, write a good description - it becomes the squash commit message. Include: +- What changed and why +- Key decisions made +- Any gotchas or learnings +- Tests added or modified + ## ๐Ÿ“ฆ Versioning & Releases **Semantic versioning:** MAJOR.MINOR.PATCH (e.g., 0.5.0) @@ -351,9 +369,10 @@ gh issue create # Create new issue 1. **All tests pass** - `go build && go test && go test ./...` 2. **Code formatted** - `go fmt ./...` -3. **Commit with attribution** - Use the template above -4. **Push and create PR** - Reference the issue +3. **Commit with attribution** - Use the template above (multiple commits OK in branch) +4. **Push and create PR** - Reference the issue with good description 5. **Update issue** - Mark as complete or pending review +6. **Squash on merge** - PRs are squashed to keep main history clean ## ๐Ÿค Cross-Model Collaboration From 40525c90db375f36c887a9fe1cea953e4f21d5e6 Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 17:43:00 +0000 Subject: [PATCH 3/7] docs: update changelog with squash commit guidance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ๐Ÿค– Claude --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be57926..be6b887 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,12 +8,14 @@ Begin agent-assisted development era. - CLAUDE.md and GEMINI.md symlinks to BOTS.md - Agent memory and collaboration patterns adapted from otlp-mcp - GitHub issue tracking integration for agent workflows +- Squash commit guidance to maintain clean git history ### Changed - Establish agent-assisted development practices - Emphasize functional testing and self-contained design - Documentation of project philosophy and structure for agents +- Clarify workflow: commit freely in branches, squash on merge to main ## [0.5.0] - 2025-04-21 From 251de65f2610d56d2abc742cfd16622d514440cd Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 18:03:41 +0000 Subject: [PATCH 4/7] docs: update README with fork status and agent development info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: README needed clarity on fork status and agent-assisted development Approach: Cleaned up status section, added agent info to Contributing Learned: Keep focus on otel-cli as great CLI tool for OTEL signals Next: Push and update PR Changes: - Replaced rambling status with clear fork statement - Added 'Amy & the bots' as active maintainers - Documented agent-assisted development starting v0.6.0 - No MCP mention - otel-cli stays focused on CLI excellence - Improved Contributing section with agent and human guidance - Cleaned up contact information and links - Updated License section for clarity ๐Ÿค– Claude --- README.md | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 934284b..4b320d4 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,15 @@ -# PROJECT STATUS UPDATE +# PROJECT STATUS -This is a fork of the original otel-cli project that I will eventually rename. +This is a fork of the original otel-cli project, actively maintained by **Amy & the bots** ๐Ÿค– -It's 100% Apache 2 code so this seems fine to do. I made attempts to maintain -under the equinix-labs umbrella, but it seems some of the changes at the company -have slowed progress on that effort. +Built originally by A. Tobey while at Equinix Metal, this fork continues development with a focus on being a great command-line tool for OpenTelemetry signals. Starting with v0.6.0, development uses agent-assisted workflows to maintain code quality while preserving the project's philosophy. -After doing some work on the tool today, I will probably rename it soon, and -break ties with the original tool. Please open issues or discussions if you -have thoughts and desires for otel-cli. +The project is 100% Apache 2 licensed code. Development is tracked via GitHub issues and pull requests. -Primarily I intend to explore an MCP implementation that is lean and easy to -run anywhere, with no fuss, to tap into traces in my development loop. - -I turned on GitHub discussions, please use them to get in touch, or find -me on Bluesky at `@renice.bsky.social`. +**Get in touch:** +- ๐Ÿ“‹ [Open an issue](https://github.com/tobert/otel-cli/issues) for bugs or features +- ๐Ÿ’ฌ [Start a discussion](https://github.com/tobert/otel-cli/discussions) for ideas and questions +- ๐Ÿฆ‹ Find Amy on Bluesky: [@renice.bsky.social](https://bsky.app/profile/renice.bsky.social) # otel-cli @@ -302,7 +297,19 @@ go run . span -n "testing" -s "my first test span" ## Contributing -Please file issues and PRs on the GitHub project at https://github.com/tobert/otel-cli +We welcome contributions! This project uses agent-assisted development starting with v0.6.0. + +**For agents working on this codebase:** +- See [BOTS.md](BOTS.md) for comprehensive agent development guidance +- CLAUDE.md and GEMINI.md symlink to BOTS.md for model-specific access +- Emphasize functional testing in `main_test.go` +- Commit freely in branches, squash on merge to main + +**For human contributors:** +- File [issues](https://github.com/tobert/otel-cli/issues) for bugs or feature requests +- Submit PRs with clear descriptions +- See [TESTING.md](TESTING.md) for testing guidance +- Follow the existing Go code style ## Releases @@ -327,5 +334,7 @@ goreleaser release --rm-dist ## License -Apache 2.0, see LICENSE +Apache License 2.0 - Copyright (c) 2025 A. Tobey + +See [LICENSE](LICENSE) for full details. From 678fb6a1f697e2a4e351c171cc834bd8d588a64a Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 18:04:06 +0000 Subject: [PATCH 5/7] docs: update changelog with README changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ๐Ÿค– Claude --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index be6b887..ba3354a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ Begin agent-assisted development era. - Emphasize functional testing and self-contained design - Documentation of project philosophy and structure for agents - Clarify workflow: commit freely in branches, squash on merge to main +- README: clarify fork status and "Amy & the bots" as active maintainers +- README: improved Contributing section for both agents and humans ## [0.5.0] - 2025-04-21 From 7eb3ace3a25ec0694b2f553d305e0f6fd0f1d86a Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 18:10:07 +0000 Subject: [PATCH 6/7] docs: update LICENSE with fork copyright MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: Clarify copyright for fork continuation Approach: Extended Packet Host to include Equinix Metal, added 2025 copyright Learned: Apache 2.0 allows accumulation of copyright notices Next: Push final changes to PR Changes: - Extended 'Packet Host, Inc.' to 'Packet Host, Inc. / Equinix Metal' - Added 'Copyright 2025 A. Tobey' for fork continuation ๐Ÿค– Claude --- LICENSE | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 20bd065..8eb8fbc 100644 --- a/LICENSE +++ b/LICENSE @@ -187,7 +187,8 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2020 Packet Host, Inc. + Copyright 2020 Packet Host, Inc. / Equinix Metal + Copyright 2025 A. Tobey Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 5cdab44de11b58244736a84e08d6a1bfb00f8cc5 Mon Sep 17 00:00:00 2001 From: A Tobey Date: Sun, 9 Nov 2025 18:10:12 +0000 Subject: [PATCH 7/7] docs: update changelog with LICENSE changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ๐Ÿค– Claude --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba3354a..b4efdae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ Begin agent-assisted development era. - Clarify workflow: commit freely in branches, squash on merge to main - README: clarify fork status and "Amy & the bots" as active maintainers - README: improved Contributing section for both agents and humans +- LICENSE: updated copyright to include Equinix Metal and 2025 A. Tobey ## [0.5.0] - 2025-04-21