Propose resolutions for detected drift. AI generates spec updates or code changes.
Generate resolution proposals for each drift item. The AI analyzes each divergence and proposes either a spec update (backfill) or code change (align).
$ARGUMENTS
Run speckit.sync.analyze first to generate the drift report.
Read the drift report:
.specify/sync/drift-report.jsonRead the drift report from the previous analysis. If it doesn't exist, instruct the user to run speckit.sync.analyze first.
Analyze the drift and determine resolution direction:
Recommend when:
Generate:
Recommend when:
Generate:
Flag when:
Generate:
Propose a new spec:
Determine:
Propose accordingly.
Output format:
# Drift Resolution Proposals
Generated: [timestamp]
Based on: drift-report from [timestamp]
## Summary
| Resolution Type | Count |
|-----------------|-------|
| Backfill (Code → Spec) | X |
| Align (Spec → Code) | X |
| Human Decision | X |
| New Specs | X |
| Remove from Spec | X |
## Proposals
### Proposal 1: [spec-id]/[requirement]
**Direction**: BACKFILL | ALIGN | HUMAN_DECISION
**Current State**:
- Spec says: "[spec text]"
- Code does: "[actual behavior]"
**Proposed Resolution**:
[For BACKFILL: new spec text]
[For ALIGN: code change description]
[For HUMAN: questions and options]
**Rationale**: [why this direction]
**Confidence**: HIGH | MEDIUM | LOW
**Action**:
- [ ] Approve
- [ ] Reject
- [ ] Modify
---
### Proposal 2: New Spec for [feature]
**Direction**: NEW_SPEC
**Feature**: [feature name]
**Location**: [code path]
**Draft Spec**:
# Feature Specification: [title]
## User Scenarios
### User Story 1 - [story]
[generated from code behavior]
## Requirements
- **FR-001**: [extracted from code]
**Confidence**: MEDIUM
**Action**:
- [ ] Approve and create spec
- [ ] Reject
- [ ] Modify
Write to:
.specify/sync/proposals.md (human-readable).specify/sync/proposals.json (machine-readable)When run with --interactive, present each proposal one at a time and prompt for approval:
Proposal 1/15: spec-011/FR-001
Direction: BACKFILL (Code → Spec)
Spec says: "one row per document"
Code does: "supports split transactions with multiple rows"
Proposed update:
- FR-001: System MUST append one or more rows per extracted document.
For split transactions, multiple rows share a LinkID.
Confidence: HIGH
[A]pprove / [R]eject / [M]odify / [S]kip / [Q]uit?
/speckit.sync.propose
/speckit.sync.propose --interactive
/speckit.sync.propose --strategy backfill-all
```43:["$","$L4a",null,{"content":"$4b","frontMatter":{"name":"speckit-sync-propose","description":"Propose resolutions for detected drift. AI generates spec updates or code changes.","compatibility":"Requires spec-kit project structure with .specify/ directory","metadata":{"author":"github-spec-kit","source":"sync:commands/propose.md"},"user-invocable":true,"disable-model-invocation":true}}]