# Release Notes: v3.10.0

**Release Date**: 2026-03-21
**Type**: Minor
**Theme**: Structural Enforcement

---

## Executive Summary

v3.10.0 converts behavioral governance enforcement to structural governance enforcement. Where v3.9.0 codified governance *rules*, v3.10.0 makes those rules *structurally unavoidable*. FLEET-UPG-006 revealed 4 human step-back interventions in a single session — all caused by agents choosing ungoverned paths when governed ones exist. This release targets the root cause at 3 enforcement layers.

This is the first multi-plan coordinated release in AGET history, integrating 3 component PROJECT_PLANs (D71, D69, #480) through a coordination plan (REL-040).

---

## Highlights

### 3-Layer Structural Enforcement (D71)

The core innovation: governance enforcement at 3 layers, all at ADR-008 Strict level.

**Layer 1 — Skill Invocation**: MUST-invoke directives in CLAUDE.md for `/aget-create-project` and `/aget-file-issue`. Direct creation of project plans or direct `gh issue create` is now structurally prohibited. Includes a Structural Skill Routing table and Governance Bypass Detection table.

**Layer 2 — Gate Boundary**: Gate Execution Discipline strengthened with MUST update + MUST commit. Gate completion is now defined as *plan update + commit*, not just deliverable execution. A 6-item Gate Boundary Protocol added to SOP_release_process.md.

**Layer 3 — Skill Step**: Skill Completion Signal pattern added to `/aget-create-project` and `/aget-enhance-spec`. Signal absence = incomplete execution. This makes skill execution completeness structurally visible.

### Dual-Repo Sync Governance (D69/GOV-040)

New SOP Phase -0.5 governs private→public content synchronization before any version bump. Includes R-SYNC-002 spec (6 EARS requirements, 4 artifact types), two validators (`validate_content_sync.py`, `validate_changelogs.py`), and SYNC_MANIFEST tracking per release.

This closes the highest-risk ungoverned release milestone: content that drifts between private and public repos now has structural detection.

### Skill Naming Reconciliation (#480)

3 skill renames across 633 references and 30 directories in 14 repos:
- `aget-capture-observation` → `aget-record-observation`
- `aget-capture-nugget` → `aget-record-nugget`
- `aget-study-up` → `aget-study-topic`

The `capture` verb is retired from the Learning family. This resolves CS-002 (verb conformance) and unifies the Learning family under `record` + `study`.

---

## What's New

### Added

- **MUST-invoke directives** for `/aget-create-project` and `/aget-file-issue` in CLAUDE.md
- **Structural Skill Routing table** and **Governance Bypass Detection** in CLAUDE.md
- **Gate Boundary Protocol** (6-item checklist) in SOP_release_process.md
- **Skill Completion Signal** pattern in 2 skills
- **Structural Trigger Conditions** in PATTERN_step_back_review_kb
- **SOP Phase -0.5: Content Sync** in SOP_release_process.md
- **R-SYNC-002** spec (6 EARS requirements)
- **validate_content_sync.py** — private/public sync validator
- **validate_changelogs.py** — cross-repo CHANGELOG consistency validator
- **SYNC_MANIFEST** template for release sync tracking
- **SKILL_SPEC_TEMPLATE.yaml** in all 12 templates (#439)

### Changed

- **3 skill renames** across 14 repos (#480)
- **`capture` verb retired** from Learning family
- **Gate Execution Discipline (L001)** strengthened with structural requirements
- **wind_down.py** improvements: smarter status detection, `scan_nuggets()` function

### Fixed

- **Template hygiene** (#574): VERSION, setup.py classifier, SECURITY.md in 4 templates

---

## Migration Guide

### Skill Rename Migration

Agents upgrading from v3.9.0 must update any references to renamed skills:

| Old Name | New Name |
|----------|----------|
| `aget-capture-observation` | `aget-record-observation` |
| `aget-capture-nugget` | `aget-record-nugget` |
| `aget-study-up` | `aget-study-topic` |

Old skill directories will continue to work until the fleet upgrades, but agents should update their references at upgrade time.

### New Governance Requirements

After upgrading:
1. Project plans MUST be created via `/aget-create-project` — direct file creation is prohibited
2. GitHub issues MUST be filed via `/aget-file-issue` — direct `gh issue create` is prohibited
3. Gate completions MUST include plan update + commit as structural proof

---

## Technical Notes

### Compatibility

| Requirement | Version |
|-------------|---------|
| AGET Framework | 3.10.0 |
| Python | 3.8+ |
| Claude Code | Any current version |

### Component Plan Velocities

| Component | Estimated | Actual | Velocity |
|-----------|-----------|--------|----------|
| #480 Skill Naming v2 | 5.0h | 1.55h | 0.31x |
| D69 Dual-Repo Sync | 4.25h | 0.80h | 0.19x |
| D71 Structural Enforcement | 4.75h | 0.75h | 0.16x |

### Known Issues

- Hook adoption (0/40 agents) — D71 Layer 1 uses CLAUDE.md directives (Strict), not hooks (Generator). Hook support deferred to #505.
- ADR-008 Generator level not achieved — all enforcement is Strict (validator exit code). Generator requires hooks infrastructure.

---

## Upgrade Path

```bash
# From v3.9.0
cd template-xxx-aget
git pull origin main
# Verify version
cat version.json  # should show 3.10.0
# Verify skill renames
ls .claude/skills/  # should show aget-record-observation, aget-record-nugget, aget-study-topic
```

---

## Related

- CHANGELOG.md entry: v3.10.0
- REL-040: PROJECT_PLAN_v3.10.0_release_v1.0.md
- Component plans: D71, D69/GOV-040, #480
- Issues: #437, #439, #440, #480, #574
- VERSION_SCOPE: v4.0.0 (SCOPE LOCKED)

---

*Release notes for AGET Framework v3.10.0*
*"The system can predict because it persists sense."*
*First multi-plan coordinated release in AGET history.*
