/** * Decision syncer * * Writes approved decisions into OpenSpec spec.md files (append-only) * and creates ADR files for architectural decisions. * Never rewrites existing content. */ import type { PendingDecision, DecisionStore, SpecMap } from '../../types/index.js'; export interface SyncOptions { rootPath: string; openspecPath: string; specMap: SpecMap; dryRun?: boolean; /** * Also sync `auto-approved` decisions (decision autopilot). Unlike `approved` * decisions — which transition to `synced` and purge — an auto-approved * decision keeps its status after the spec write (it stays in the store as the * human review queue) and its spec entry carries the * "Auto-accepted (unreviewed)" marker. (change: add-decision-autopilot) */ includeAutoApproved?: boolean; } export interface SyncResult { synced: PendingDecision[]; errors: Array<{ id: string; error: string; }>; modifiedSpecs: string[]; } export declare function syncApprovedDecisions(store: DecisionStore, options: SyncOptions): Promise<{ store: DecisionStore; result: SyncResult; }>; /** Human-visible status label for a spec Decisions entry. Auto-accepted * decisions are always marked unreviewed until a human promotes them — * provenance is disclosed, never silently upgraded. (add-decision-autopilot) */ export declare const AUTO_ACCEPTED_STATUS_LABEL = "Auto-accepted (unreviewed)"; /** * Rewrite the status marker of an already-synced decision across the spec/ADR * files it landed in. Used when a human reviews an auto-accepted decision: * - promote → "Approved" (the unreviewed marker is dropped) * - reject → "Rejected (auto-acceptance reverted )" — a supersession- * style annotation, never a deletion: the entry (and its git history, for * asOf queries) stays in place, only its authority label changes. A synced * requirement block is annotated with a rejection line for the same reason. * * Returns the repo-relative paths actually modified. Missing files or absent * markers are skipped silently — the ledger, not the spec text, is the * authoritative trail; this is presentation-layer honesty. */ export declare function rewriteSyncedDecisionStatus(rootPath: string, decision: PendingDecision, disposition: 'promoted' | 'rejected'): Promise; //# sourceMappingURL=syncer.d.ts.map