Skip to content

Commit 813efc4

Browse files
committed
Merge branch 'main' into 011-cleanup
Resolve conflicts in constitution.md: - Keep condensed sync impact report format from main - Use main's clearer language constraint wording - Keep HEAD's quality gates that match CI pipeline exactly - Retain most recent amendment date
2 parents b39deed + b4f9d82 commit 813efc4

3 files changed

Lines changed: 53 additions & 32 deletions

File tree

‎.specify/memory/constitution.md‎

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,9 @@
11
<!--
2-
Sync Impact Report
3-
==================
4-
Version change: 1.1.0 → 1.2.0 (MINOR - quality gates expanded to match CI)
2+
Sync Impact Report: 1.1.0 → 1.2.0 (MINOR)
53
6-
Modified principles:
7-
- Technology Constraints: Added "CI uses Go 1.25.5" for clarity
8-
- Quality Gates: Expanded from 4 to 7 items to match CI pipeline exactly:
9-
- Changed from `go test -cover` to `go test -v -race -coverprofile=coverage.out`
10-
- Changed from `go fmt` to `gofmt -l` (CI uses gofmt directly)
11-
- Added `go mod verify` for dependency verification
12-
- Added `govulncheck` for vulnerability scanning
13-
- Added `gosec` for security scanning
14-
15-
Added sections: None
16-
17-
Removed sections: None
18-
19-
Templates requiring updates:
20-
- .specify/templates/plan-template.md: ✅ No changes needed (generic constitution check)
21-
- .specify/templates/spec-template.md: ✅ No changes needed (compatible)
22-
- .specify/templates/tasks-template.md: ✅ No changes needed (compatible)
23-
24-
Follow-up TODOs: None
4+
Modified: IV. Standard Library Preference - added approved external dependencies
5+
Updated: Technology Constraints (Go 1.25.5), Quality Gates (govulncheck, gosec)
6+
Templates: All compatible, no changes needed
257
-->
268

279
# AgentMail Constitution
@@ -73,6 +55,14 @@ External dependencies MUST be justified. Prefer Go standard library:
7355
- `os/signal` for daemon signal handling
7456
- `time` for scheduling and timeouts
7557

58+
**Approved External Dependencies** (with documented rationale):
59+
60+
| Dependency | Version | Rationale |
61+
|------------|---------|-----------|
62+
| `github.com/fsnotify/fsnotify` | v1.9.0 | File watching for instant daemon notifications; stdlib lacks cross-platform fsnotify equivalent |
63+
| `github.com/modelcontextprotocol/go-sdk` | v1.2.0 | Official MCP SDK for AI agent integration; implementing MCP protocol from scratch is impractical |
64+
| `github.com/peterbourgon/ff/v3` | v3.4.0 | Lightweight CLI flag parsing with subcommand support; reduces boilerplate vs stdlib flag package |
65+
7666
New dependencies require documented rationale in research.md with:
7767
- Why standard library is insufficient
7868
- Security/maintenance implications
@@ -82,7 +72,7 @@ New dependencies require documented rationale in research.md with:
8272

8373
## Technology Constraints
8474

85-
- **Language**: Go 1.21+ (per IC-001), CI uses Go 1.25.5
75+
- **Language**: Go 1.25.5 (minimum 1.21+ per IC-001)
8676
- **Storage**: JSONL files in `.agentmail/` directory (per-recipient files, state files)
8777
- **Platform**: macOS and Linux with tmux installed
8878
- **Build**: Standard `go build`, no CGO dependencies

‎CLAUDE.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,22 @@ Templates are stored in `.specify/templates/` and project constitution in `.spec
8181
## Active Technologies
8282
- Go 1.21+ (per IC-001) + Standard library only (os/exec for tmux, encoding/json for JSONL) (001-agent-mail-structure)
8383
- JSONL file in `.agentmail/` directory (001-agent-mail-structure)
84-
- Go 1.21+ (project uses Go 1.25.3) + GitHub Actions (yaml workflows), PaulHatch/semantic-version action for version calculation (002-github-ci-cd)
84+
- Go 1.21+ (project uses Go 1.25.5) + GitHub Actions (yaml workflows), PaulHatch/semantic-version action for version calculation (002-github-ci-cd)
8585
- N/A (CI/CD configuration files only) (002-github-ci-cd)
86-
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.3) + Standard library only (os/exec, encoding/json, bufio, os) (003-recipients-help-stdin)
86+
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.5) + Standard library only (os/exec, encoding/json, bufio, os) (003-recipients-help-stdin)
8787
- JSONL files in `.agentmail/` directory (003-recipients-help-stdin)
8888
- Ruby (Homebrew formula DSL), YAML (GitHub Actions), Go 1.21+ (existing) + Homebrew (user-side), GitHub Actions, gh CLI (for cross-repo updates) (004-homebrew-distribution)
8989
- N/A (formula hosted in separate GitHub repo) (004-homebrew-distribution)
90-
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.3) + Standard library only (os, fmt, io - already used) (005-claude-hooks-integration)
90+
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.5) + Standard library only (os, fmt, io - already used) (005-claude-hooks-integration)
9191
- JSONL files in `.agentmail/` directory (005-claude-hooks-integration)
92-
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.3) + Standard library only (os/exec, encoding/json, syscall, time, os/signal) (006-mailman-daemon)
92+
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.5) + Standard library only (os/exec, encoding/json, syscall, time, os/signal) (006-mailman-daemon)
9393
- JSONL files - `.agentmail/mailman.pid` (PID), `.agentmail/recipients.jsonl` (state) (006-mailman-daemon)
9494
- Go 1.21+ (per IC-001) + Standard library only (os, filepath, syscall, encoding/json) (007-storage-restructure)
9595
- JSONL files in `.agentmail/` directory hierarchy (007-storage-restructure)
9696
- Go 1.21+ (per IC-001) + Standard library only (time, sync) (008-stale-agent-mailman)
9797
- JSONL files in `.agentmail/` (existing), in-memory tracker (new) (008-stale-agent-mailman)
9898
- Go 1.21+ (per constitution IC-001) + Standard library only (os, time, syscall) + fsnotify (external - requires justification) (009-watch-files)
99-
- Go 1.23 (per go.mod, constitution requires 1.21+) + github.com/modelcontextprotocol/go-sdk (official MCP SDK) (010-mcp-server)
99+
- Go 1.25.5 (per go.mod, constitution requires 1.21+) + github.com/modelcontextprotocol/go-sdk (official MCP SDK) (010-mcp-server)
100100
- JSONL files in `.agentmail/` directory (existing infrastructure), MCP server via STDIO transport (010-mcp-server)
101101
- Go 1.21+ (per constitution IC-001, project uses Go 1.25.3) + Standard library only (os/exec, encoding/json, syscall, time, os) (011-cleanup)
102102
- JSONL files in `.agentmail/` directory (recipients.jsonl, mailboxes/*.jsonl) (011-cleanup)

‎README.md‎

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
[![Test](https://github.com/UserAd/AgentMail/actions/workflows/test.yml/badge.svg)](https://github.com/UserAd/AgentMail/actions/workflows/test.yml)
44
[![Release](https://github.com/UserAd/AgentMail/actions/workflows/release.yml/badge.svg)](https://github.com/UserAd/AgentMail/actions/workflows/release.yml)
5+
[![Go Report Card](https://goreportcard.com/badge/github.com/UserAd/AgentMail)](https://goreportcard.com/report/github.com/UserAd/AgentMail)
56
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
67

78
A Go CLI tool for inter-agent communication within tmux sessions. Agents running in different tmux windows can send and receive messages through a simple file-based mail system.
@@ -22,7 +23,7 @@ A Go CLI tool for inter-agent communication within tmux sessions. Agents running
2223

2324
## Requirements
2425

25-
- Go 1.25 or later
26+
- Go 1.25.5 or later
2627
- tmux (must be running inside a tmux session)
2728
- Linux or macOS
2829

@@ -617,21 +618,51 @@ go test -v -race -coverprofile=coverage.out ./...
617618
go tool cover -html=coverage.out
618619
```
619620

620-
### Lint
621+
### Lint & Security
621622

622623
```bash
624+
# Format code
623625
go fmt ./...
626+
627+
# Static analysis
624628
go vet ./...
629+
630+
# Vulnerability scanning
631+
go install golang.org/x/vuln/cmd/govulncheck@latest
632+
govulncheck ./...
633+
634+
# Security scanning
635+
go install github.com/securego/gosec/v2/cmd/gosec@latest
636+
gosec ./...
625637
```
626638

627639
### Testing in CI Environment
628640

629-
To match the CI environment (Go 1.25, Linux):
641+
To match the CI environment (Go 1.25.5, Linux):
630642

631643
```bash
632-
docker run --rm -v $(pwd):/app -w /app golang:1.25 go test -v -race ./...
644+
docker run --rm -v $(pwd):/app -w /app golang:1.25.5 go test -v -race ./...
633645
```
634646

647+
### CI/CD Pipeline
648+
649+
The project uses GitHub Actions for continuous integration and delivery:
650+
651+
**Test Workflow** (on push to main and PRs):
652+
- Code formatting verification (`gofmt`)
653+
- Dependency verification (`go mod verify`)
654+
- Static analysis (`go vet`)
655+
- Tests with race detection (`go test -race`)
656+
- Coverage report generation
657+
- Security scanning (`govulncheck`, `gosec`)
658+
659+
**Release Workflow** (on push to main):
660+
- Pre-release test validation
661+
- Semantic version calculation from commit messages
662+
- Cross-platform builds (Linux/macOS, amd64/arm64)
663+
- GitHub Release creation with auto-generated notes
664+
- Homebrew formula automatic update
665+
635666
## Project Structure
636667

637668
```

0 commit comments

Comments
 (0)