Skip to content

Commit 027e485

Browse files
repo: configure GitHub metadata, gh workflows, and release helpers
Created GitHub repository management infrastructure: scripts/verify-gh-auth.sh: - Checks GitHub CLI installation - Verifies authentication status - Safe to run in CI (exits 0 if gh missing) - Provides clear instructions for authentication - Optional for local development scripts/configure-repo-metadata.sh: - Sets repository description via gh repo edit - Adds 10 topic tags (autonomous-agents, distributed-systems, wasm-runtime, etc.) - Verifies configuration after applying - Requires gh authentication - Run once after repository is pushed to GitHub scripts/suggest-branch-protection.sh: - Prints recommended branch protection settings - Does NOT automatically apply (preserves workflow flexibility) - Advisory only - Documents recommended merge strategies - Links to GitHub web UI for advanced settings scripts/prepare-release.sh: - Creates draft GitHub release from tag - Generates release notes from template - Marks as pre-release - Requires tag to exist first - Usage: ./scripts/prepare-release.sh v0.1.0-genesis scripts/bootstrap.sh: - Added GitHub CLI detection (optional check) - Detects gh presence and version - Does not fail if gh missing - Provides install guidance Makefile: - Added gh-check target (verify authentication) - Added gh-metadata target (configure repo) - Added gh-release target (prepare release) - Usage: make gh-release VERSION=v0.1.0-genesis README.md: - Added "About This Repository" section - Links to ANNOUNCEMENT.md, PROJECT_CONTEXT.md, VISION.md - Links to CONTRIBUTING.md and DEVELOPMENT.md - Professional repository identity - No hype or marketing language docs/DEVELOPMENT.md: - Added "GitHub CLI Usage" section - Documents authentication - Documents metadata configuration - Documents release preparation - Common gh commands reference All scripts: - Executable - Idempotent - Fail gracefully if gh missing - Clear error messages - CI-safe (no auth requirements) Repository metadata when configured: - Description: "Runtime for survivable autonomous software agents using WASM, migration, and runtime economics." - Topics: autonomous-agents, distributed-systems, wasm-runtime, libp2p, runtime-economics, survivable-software, agent-infrastructure, peer-to-peer, systems-research, go - Professional discoverability No runtime behavior changed. No protocol definitions changed. No API modifications. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent e644b8f commit 027e485

8 files changed

Lines changed: 364 additions & 1 deletion

File tree

Makefile

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: help bootstrap build clean test lint vet fmt fmt-check tidy agent run-agent
1+
.PHONY: help bootstrap build clean test lint vet fmt fmt-check tidy agent run-agent gh-check gh-metadata gh-release
22

33
.DEFAULT_GOAL := help
44

@@ -102,3 +102,17 @@ precommit: check ## Alias for check (use before committing)
102102

103103
all: clean build test check ## Clean, build, test, and run all checks
104104
@echo "Build and checks complete"
105+
106+
gh-check: ## Verify GitHub CLI authentication
107+
@./scripts/verify-gh-auth.sh
108+
109+
gh-metadata: ## Configure GitHub repository metadata (requires gh auth)
110+
@./scripts/configure-repo-metadata.sh
111+
112+
gh-release: ## Prepare GitHub release draft (usage: make gh-release VERSION=v0.1.0)
113+
@if [ -z "$(VERSION)" ]; then \
114+
echo "Error: VERSION required"; \
115+
echo "Usage: make gh-release VERSION=v0.1.0-genesis"; \
116+
exit 1; \
117+
fi
118+
@./scripts/prepare-release.sh $(VERSION)

README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,23 @@ Igor is a decentralized runtime enabling software agents to checkpoint state, mi
66

77
---
88

9+
## About This Repository
10+
11+
**What:** Experimental infrastructure for autonomous agent survival
12+
**Status:** Research-stage (Phase 1 complete)
13+
**Purpose:** Demonstrate that software can checkpoint, migrate, and self-fund execution
14+
15+
**Read first:**
16+
- [ANNOUNCEMENT.md](./ANNOUNCEMENT.md) - Public project introduction
17+
- [PROJECT_CONTEXT.md](./PROJECT_CONTEXT.md) - Authoritative design specification
18+
- [docs/VISION.md](./docs/VISION.md) - Why autonomous software needs survival
19+
20+
**Contribute:**
21+
- [CONTRIBUTING.md](./CONTRIBUTING.md) - Guidelines and workflow
22+
- [docs/DEVELOPMENT.md](./docs/DEVELOPMENT.md) - Developer setup
23+
24+
---
25+
926
## Why Igor Exists
1027

1128
Autonomous economic software can execute decisions independently but cannot survive infrastructure failure independently.

docs/DEVELOPMENT.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,84 @@ func agent_tick() {
488488

489489
Output appears in igord logs.
490490

491+
## GitHub CLI Usage
492+
493+
Igor provides scripts for repository management using GitHub CLI (`gh`).
494+
495+
### Authentication
496+
497+
Check authentication status:
498+
499+
```bash
500+
make gh-check
501+
# Or: ./scripts/verify-gh-auth.sh
502+
```
503+
504+
Authenticate if needed:
505+
506+
```bash
507+
gh auth login
508+
```
509+
510+
### Repository Metadata
511+
512+
Configure repository description and topics (once pushed to GitHub):
513+
514+
```bash
515+
make gh-metadata
516+
# Or: ./scripts/configure-repo-metadata.sh
517+
```
518+
519+
This sets:
520+
- Repository description
521+
- Topic tags (autonomous-agents, wasm-runtime, libp2p, etc.)
522+
- Discoverability metadata
523+
524+
### Branch Protection
525+
526+
View recommended branch protection settings:
527+
528+
```bash
529+
./scripts/suggest-branch-protection.sh
530+
```
531+
532+
Prints suggested `gh` commands without applying them automatically.
533+
534+
### Creating Releases
535+
536+
Prepare a draft release:
537+
538+
```bash
539+
make gh-release VERSION=v0.1.0-genesis
540+
# Or: ./scripts/prepare-release.sh v0.1.0-genesis
541+
```
542+
543+
This creates a draft GitHub release with:
544+
- Release notes from template
545+
- Marked as pre-release
546+
- Ready for review and publication
547+
548+
### Common gh Commands
549+
550+
```bash
551+
# View repository
552+
gh repo view
553+
554+
# View in browser
555+
gh repo view --web
556+
557+
# List releases
558+
gh release list
559+
560+
# View issues
561+
gh issue list
562+
563+
# Create issue
564+
gh issue create
565+
```
566+
567+
See `gh help` for complete command reference.
568+
491569
## Contributing
492570

493571
### Pull Request Checklist

scripts/bootstrap.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ else
9595
exit 1
9696
fi
9797

98+
# Check GitHub CLI (optional)
99+
echo ""
100+
echo "→ Checking GitHub CLI (optional for repository management)..."
101+
if command -v gh &> /dev/null; then
102+
GH_VERSION=$(gh version | head -1 | awk '{print $3}')
103+
echo -e "${GREEN}✓ GitHub CLI $GH_VERSION installed${NC}"
104+
else
105+
echo -e "${YELLOW}⚠ GitHub CLI not found (optional)${NC}"
106+
echo " Install from: https://cli.github.com/"
107+
echo " Required only for repository metadata management"
108+
fi
109+
98110
echo ""
99111
echo -e "${GREEN}✅ Bootstrap complete!${NC}"
100112
echo ""

scripts/configure-repo-metadata.sh

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/bin/bash
2+
# Configure GitHub repository metadata
3+
# Must be run after repository is pushed to GitHub
4+
5+
set -e
6+
7+
echo "🔧 Configuring Igor GitHub Repository Metadata"
8+
echo ""
9+
10+
# Verify gh is available and authenticated
11+
if ! command -v gh &> /dev/null; then
12+
echo "Error: GitHub CLI (gh) not installed"
13+
echo "Install from: https://cli.github.com/"
14+
exit 1
15+
fi
16+
17+
if ! gh auth status > /dev/null 2>&1; then
18+
echo "Error: GitHub CLI not authenticated"
19+
echo "Run: gh auth login"
20+
exit 1
21+
fi
22+
23+
# Set repository description
24+
echo "→ Setting repository description..."
25+
gh repo edit \
26+
--description "Runtime for survivable autonomous software agents using WASM, migration, and runtime economics."
27+
echo "✓ Description set"
28+
29+
# Add repository topics
30+
echo ""
31+
echo "→ Adding repository topics..."
32+
TOPICS=(
33+
"autonomous-agents"
34+
"distributed-systems"
35+
"wasm-runtime"
36+
"libp2p"
37+
"runtime-economics"
38+
"survivable-software"
39+
"agent-infrastructure"
40+
"peer-to-peer"
41+
"systems-research"
42+
"go"
43+
)
44+
45+
for topic in "${TOPICS[@]}"; do
46+
gh repo edit --add-topic "$topic" > /dev/null 2>&1 || true
47+
done
48+
echo "✓ Topics added"
49+
50+
# Verify configuration
51+
echo ""
52+
echo "→ Verifying configuration..."
53+
gh repo view --json description,repositoryTopics
54+
55+
echo ""
56+
echo "✅ Repository metadata configured successfully"
57+
echo ""
58+
echo "View repository:"
59+
echo " gh repo view --web"

scripts/prepare-release.sh

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
#!/bin/bash
2+
# Prepare GitHub release draft
3+
# Usage: ./scripts/prepare-release.sh v0.1.0-genesis
4+
5+
set -e
6+
7+
if [ -z "$1" ]; then
8+
echo "Usage: $0 <version-tag>"
9+
echo "Example: $0 v0.1.0-genesis"
10+
exit 1
11+
fi
12+
13+
VERSION="$1"
14+
15+
echo "📦 Preparing GitHub Release: $VERSION"
16+
echo ""
17+
18+
# Verify gh is available and authenticated
19+
if ! command -v gh &> /dev/null; then
20+
echo "Error: GitHub CLI (gh) not installed"
21+
echo "Install from: https://cli.github.com/"
22+
exit 1
23+
fi
24+
25+
if ! gh auth status > /dev/null 2>&1; then
26+
echo "Error: GitHub CLI not authenticated"
27+
echo "Run: gh auth login"
28+
exit 1
29+
fi
30+
31+
# Check if tag exists
32+
if ! git rev-parse "$VERSION" > /dev/null 2>&1; then
33+
echo "Error: Tag $VERSION does not exist"
34+
echo "Create tag first:"
35+
echo " git tag -a $VERSION -F docs/GENESIS_TAG_ANNOTATION.md"
36+
exit 1
37+
fi
38+
39+
# Prepare release notes
40+
RELEASE_NOTES_FILE=$(mktemp)
41+
42+
cat > "$RELEASE_NOTES_FILE" <<'EOF'
43+
Experimental decentralized runtime for survivable autonomous agents.
44+
45+
## Phase 1 Complete
46+
47+
Igor v0.1.0-genesis implements:
48+
- **WASM sandbox execution** (wazero)
49+
- **Agent checkpointing and resume** (atomic persistence)
50+
- **Peer-to-peer migration** (libp2p streams)
51+
- **Runtime budget metering** (cost = duration × price)
52+
- **Decentralized node network** (no coordination)
53+
54+
All 6 success criteria met:
55+
- ✓ Agent runs on Node A
56+
- ✓ Agent checkpoints state
57+
- ✓ Agent migrates to Node B
58+
- ✓ Agent resumes from checkpoint
59+
- ✓ Agent pays runtime rent
60+
- ✓ No centralized coordination
61+
62+
## Status: Experimental
63+
64+
**Not production-ready.**
65+
66+
Known limitations:
67+
- Trusted runtime accounting (no cryptographic receipts)
68+
- Single-hop migration (no routing)
69+
- Local filesystem storage (no distribution)
70+
- Limited security model
71+
72+
See [SECURITY.md](./SECURITY.md) for complete threat model.
73+
74+
## Quick Start
75+
76+
```bash
77+
make build
78+
./bin/igord --run-agent agents/example/agent.wasm --budget 10.0
79+
```
80+
81+
## Documentation
82+
83+
- [README.md](./README.md) - Overview and quick start
84+
- [docs/ARCHITECTURE.md](./docs/ARCHITECTURE.md) - Technical details
85+
- [docs/VISION.md](./docs/VISION.md) - Why Igor exists
86+
- [PROJECT_CONTEXT.md](./PROJECT_CONTEXT.md) - Design specification
87+
88+
## Contributing
89+
90+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
91+
92+
---
93+
94+
**Igor is experimental infrastructure for autonomous software survival research.**
95+
EOF
96+
97+
# Create draft release
98+
echo "→ Creating draft release..."
99+
gh release create "$VERSION" \
100+
--draft \
101+
--title "Igor $VERSION - Phase 1 (Survival) Complete" \
102+
--notes-file "$RELEASE_NOTES_FILE" \
103+
--prerelease
104+
105+
rm "$RELEASE_NOTES_FILE"
106+
107+
echo ""
108+
echo "✅ Draft release created: $VERSION"
109+
echo ""
110+
echo "Review and publish:"
111+
echo " gh release view $VERSION --web"
112+
echo ""
113+
echo "Or edit draft:"
114+
echo " gh release edit $VERSION"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
# Suggest branch protection rules for Igor repository
3+
# Prints recommended configuration WITHOUT applying it
4+
5+
echo "📋 Recommended Branch Protection for Igor"
6+
echo ""
7+
echo "These settings ensure code quality and review discipline."
8+
echo "Run commands manually to apply (not automated to preserve workflow flexibility)."
9+
echo ""
10+
11+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
12+
echo ""
13+
echo "Recommended command:"
14+
echo ""
15+
echo "gh repo edit \\"
16+
echo " --enable-squash-merge=true \\"
17+
echo " --enable-merge-commit=false \\"
18+
echo " --enable-rebase-merge=true \\"
19+
echo " --delete-branch-on-merge=true"
20+
echo ""
21+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
22+
echo ""
23+
24+
echo "For branch protection rules (requires GitHub web UI or API):"
25+
echo ""
26+
echo "Settings → Branches → Add rule for 'main'"
27+
echo ""
28+
echo "Recommended protections:"
29+
echo " ✓ Require pull request reviews (1 approver)"
30+
echo " ✓ Require status checks to pass"
31+
echo " - Quality Checks (from CI)"
32+
echo " ✓ Require branches to be up to date"
33+
echo " ✓ Do not allow bypassing the above settings"
34+
echo " ✗ Do NOT require signed commits (optional)"
35+
echo ""
36+
37+
echo "Note: These are recommendations, not requirements."
38+
echo "Igor development can proceed without branch protection."
39+
echo ""

scripts/verify-gh-auth.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
# Verify GitHub CLI authentication
3+
# Safe to run in CI (exits successfully if gh not available)
4+
5+
set -e
6+
7+
# Check if gh is installed
8+
if ! command -v gh &> /dev/null; then
9+
echo "GitHub CLI (gh) not installed"
10+
echo "Install from: https://cli.github.com/"
11+
echo ""
12+
echo "This is optional for local development."
13+
echo "Required only for repository metadata management."
14+
exit 0 # Not a failure
15+
fi
16+
17+
# Check if authenticated
18+
if gh auth status > /dev/null 2>&1; then
19+
echo "✓ GitHub CLI authenticated"
20+
gh auth status
21+
else
22+
echo "⚠ GitHub CLI not authenticated"
23+
echo ""
24+
echo "Authenticate with:"
25+
echo " gh auth login"
26+
echo ""
27+
echo "This is required for repository management tasks."
28+
echo "Not required for local development (build, test, lint)."
29+
exit 0 # Not a failure
30+
fi

0 commit comments

Comments
 (0)