# No AI Attribution Rules

**Enforcement Level**: CRITICAL
**Scope**: All commits, PRs, documentation, code, and generated content
**Issue**: #295

## Principle

AI tools are tools. A compiler doesn't sign your binary. An IDE doesn't watermark your code. A linter doesn't add "Formatted by ESLint" to every file. AIWG enforces the same standard: the AI assistant produces output, the human owns it.

## Mandatory Rules

### Rule 1: No Attribution in Commits

**FORBIDDEN** (applies to ALL platforms - Claude Code, Codex, Copilot, Cursor, Warp, any AI tool):
```
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: GitHub Copilot <noreply@github.com>
Co-Authored-By: Codex <noreply@openai.com>
Signed-off-by: Claude Code
Signed-off-by: Cursor AI
Generated by Claude Code
Generated by Codex CLI
Generated by Copilot
Written by Claude
Written by AI
```

**REQUIRED**:
```
feat(auth): add token refresh logic

Tokens now auto-refresh 5 minutes before expiry to prevent
session interruptions during long operations.
```

Clean conventional commit. No attribution. No branding.

### Rule 2: No Attribution in Pull Requests

**FORBIDDEN** (any platform, any tool):
```markdown
🤖 Generated with [Claude Code](https://claude.ai/claude-code)
Generated with [Codex](https://openai.com/codex)
Built with GitHub Copilot
Created with Cursor AI

---
*This PR was created with AI assistance*
*AI-assisted pull request*
```

**REQUIRED**:
```markdown
## Summary
- Add token refresh logic for session continuity
- Handle edge case where refresh token is also expired

## Test plan
- [ ] Verify token refreshes before expiry
- [ ] Verify graceful handling of expired refresh tokens
```

### Rule 3: No Attribution in Code

**FORBIDDEN** (any tool, any language):
```typescript
// Generated by Claude Code
// Generated by Codex
// Generated by Copilot
// AI-assisted implementation
/* Created with Claude Sonnet 4.5 */
/* Written by AI */
// @ai-generated
// @copilot-generated
```

**REQUIRED**:
```typescript
// Code stands on its own. Comments explain WHY, not WHO typed it.
```

### Rule 4: No Attribution in Documentation

**FORBIDDEN**:
```markdown
> This document was generated with AI assistance.

*Written with Claude Code*

<!-- AI-generated content -->
```

**REQUIRED**:
Documentation that stands on its own without meta-commentary about its creation tool.

### Rule 5: No Emoji Branding

**FORBIDDEN**:
```
🤖 AI-generated
✨ Created with Claude
🧠 AI-assisted
```

Emoji used as branding markers waste tokens and add no information.

## Why This Matters

### Token Economics

At scale, attribution adds up:

| Attribution Pattern | Tokens | Per 100 commits |
|-------------------|--------|-----------------|
| `Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>` | ~15 | 1,500 |
| `🤖 Generated with [Claude Code](https://claude.ai/claude-code)` | ~12 | 1,200 |
| Both combined | ~27 | 2,700 |

2,700 wasted tokens per 100 commits. In active development that's daily context pollution.

### Context Window Pollution

Every attribution line persists in:
- `git log` output (loaded for commit style matching)
- PR descriptions (loaded for review context)
- Code comments (loaded when reading files)
- Documentation (loaded via CLAUDE.md references)

These accumulate silently and crowd out actual content.

### Advertising vs Attribution

There is a difference between:
- **Attribution**: Recording who made a decision and why (valuable, keep this)
- **Advertising**: Stamping tool branding on every output (wasteful, remove this)

AIWG provenance tracking (`@$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/rules/provenance-tracking.md`) handles real attribution through structured records. Commit-level branding serves the tool vendor, not the developer.

## Platform-Universal Enforcement

This rule applies across ALL agentic coding platforms. AIWG is multi-platform and this behavior must be consistent everywhere:

| Platform | How AIWG Enforces |
|----------|------------------|
| **Claude Code** | `.claude/rules/no-attribution.md` + CLAUDE.md conventions |
| **GitHub Copilot** | `.github/copilot-instructions.md` commit section |
| **OpenAI Codex** | `~/.codex/instructions.md` conventions |
| **Cursor** | `.cursor/rules/` conventions |
| **Warp** | `WARP.md` conventions section |
| **Factory AI** | `.factory/` agent definitions |
| **Any future platform** | AIWG regeneration includes this rule |

When `aiwg use` or `aiwg regenerate` runs for any platform, the generated context file MUST include no-attribution conventions.

## Integration

### CLAUDE.md Template

Every AIWG-generated CLAUDE.md MUST include:

```markdown
## Commit Conventions

- Follow conventional commits: `type(scope): subject`
- **No AI attribution** in commits, PRs, docs, or code
- Use imperative mood ("add feature" not "added feature")
- No Co-Authored-By lines from any AI tool
- No "Generated with" or "Written by" branding from any platform
- The AI is a tool, not an author
```

### All Platform Context Files

Every platform-specific context file generated by AIWG MUST include equivalent instructions. The exact wording varies by platform, but the rule is the same: zero tool branding in output.

### Agent Definitions

All agents across all platforms MUST follow these rules. No agent definition should instruct adding attribution to any output. This includes AIWG's own agents - AIWG itself does not brand the code it helps produce.

### aiwg new Scaffolding

The `aiwg new` command MUST include this rule in the generated project's context files for all configured platforms.

## Exceptions

**None.** If a user explicitly wants attribution, they can add it themselves. The default must be zero attribution. No platform, no tool, no agent overrides this.

## References

- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/rules/provenance-tracking.md - Real attribution via structured provenance
- @CLAUDE.md - Project commit conventions

---

**Rule Status**: ACTIVE
**Last Updated**: 2026-02-06
