Skip to content

Adversarial SDD proof: spec-sync docs

Comparisons

An SDD tool can preserve excellent knowledge without deterministically proving that code still matches it. This matrix separates those jobs.

Legend: Block = deterministic core check can fail automation; Agent = an agent, extension, or configured workflow can inspect it; Record = the artifact preserves the knowledge but does not itself parse implementation drift; --- = not a core capability.

Knowledge preservation

Adversarial questionSpecSync 5.0Spec Kit coreOpenSpec core
Why was the behavior requested?Record --- requirements/change artifactsRecord --- spec.mdRecord --- proposal and delta requirements
What architecture was chosen and why?Record --- context/designRecord --- plan/research/data modelRecord --- design/proposal
What work remains?Record --- tasksRecord --- tasksRecord --- tasks
What is current truth after several changes?Record + Block --- canonical requirements/module contractRecord under the team's chosen persistence modelRecord --- canonical domain specs
Can the exact approved change be audited later?Record --- digests, verification, archiveRecord --- feature/workflow history according to team conventionRecord --- archived change folder
Does editing tested inputs invalidate closing evidence?BlockAgent/workflow dependentAgent/workflow dependent

Implementation drift

Mutation introduced after the spec is writtenSpecSync 5.0Spec Kit coreOpenSpec core
Add an undocumented public exportBlock in strict modeAgent / extensionAgent
Delete or rename a documented exportBlockAgent / extensionAgent
Delete a source file named by the contractBlockAgent / custom workflowAgent
Remove a documented database table or columnBlockAgent / extensionAgent
Change a database column type without updating the specBlock in strict modeAgent / extensionAgent
Break a declared cross-module spec dependencyBlockAgent / extensionAgent
Leave a requirement without required test/API evidenceBlock at acceptanceAnalyze/checklist/workflow dependentValidate/verify workflow dependent
Make tests failBlock when configured for verification/CIConfigurable workflow commandAgent/tool execution
Corrupt or stale approval/verification evidenceBlockWorkflow implementation dependentWorkflow implementation dependent

Reproduce the SpecSync side

The repository ships executable examples rather than screenshots:

cargo build --release
SPECSYNC_BIN="$PWD/target/release/specsync" ./examples/sdd-lifecycle/run.sh
SPECSYNC_BIN="$PWD/target/release/specsync" ./examples/sdd-concurrent-changes/run.sh
SPECSYNC_BIN="$PWD/target/release/specsync" ./examples/sdd-five-epics/run.sh

The Rust test suite also injects phantom exports, undocumented exports, missing files, schema drift, stale evidence, malformed deltas, conflicting changes, unsafe paths, and cross-platform Git states. CI runs the same deterministic binary on Linux, macOS, Windows, and a packaged GitHub Action consumer.

Fair interpretation

This is not a claim that Spec Kit or OpenSpec cannot find drift. A capable coding agent, extension, or custom workflow can find many of these mutations. The narrower claim is testable: their core artifact workflows do not ship SpecSync's language-aware export and database-schema parser as a deterministic blocking contract checker. Conversely, SpecSync does not replace Spec Kit's orchestration ecosystem or OpenSpec's lightweight proposal experience.

Sources: Spec Kit workflow, Spec Kit persistence models, and OpenSpec artifact model. Verified 2026-07-11.