| title | Adversarial SDD Proof |
|---|---|
| description | Separate knowledge preservation from deterministic API and schema drift detection. |
| section | Comparisons |
| order | 5 |
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.
| Adversarial question | SpecSync 6.0 | Spec Kit core | OpenSpec core |
|---|---|---|---|
| Why was the behavior requested? | Record — requirements/change artifacts | Record — spec.md |
Record — proposal and delta requirements |
| What architecture was chosen and why? | Record — context/design | Record — plan/research/data model | Record — design/proposal |
| What work remains? | Record — tasks | Record — tasks | Record — tasks |
| What is current truth after several changes? | Record + Block — canonical requirements/module contract | Record under the team's chosen persistence model | Record — canonical domain specs |
| Can the exact approved change be audited later? | Record — digests, verification, archive | Record — feature/workflow history according to team convention | Record — archived change folder |
| Does editing tested inputs invalidate closing evidence? | Block | Agent/workflow dependent | Agent/workflow dependent |
| Mutation introduced after the spec is written | SpecSync 6.0 | Spec Kit core | OpenSpec core |
|---|---|---|---|
| Add an undocumented public export | Block in strict mode | Agent / extension | Agent |
| Delete or rename a documented export | Block | Agent / extension | Agent |
| Delete a source file named by the contract | Block | Agent / custom workflow | Agent |
| Remove a documented database table or column | Block | Agent / extension | Agent |
| Change a database column type without updating the spec | Block in strict mode | Agent / extension | Agent |
| Break a declared cross-module spec dependency | Block | Agent / extension | Agent |
| Leave a requirement without required test/API evidence | Block at check / finalize | Analyze/checklist/workflow dependent | Validate/verify workflow dependent |
| Make tests fail | Block when configured for verification/CI | Configurable workflow command | Agent/tool execution |
| Corrupt or stale approval/verification evidence | Block | Workflow implementation dependent | Workflow implementation dependent |
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.shThe 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.
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.