ShadowSpec is a behavior firewall for changes to legacy code. It captures what a service does today, then checks every proposed patch against that record. A patch must do the new job without quietly changing the old one. Try it in the browser, with no keys or setup. The demo uses a Python order service and a small request: accept spaces around the SAVE10 discount code. Three patches show why the distinction matters: - A patch that trims spaces and uppercases the code passes the new case, but changes how lowercase codes behave. ShadowSpec rejects it and names the broken check. - A patch that only trims spaces passes both sets of checks. It is accepted. - The unchanged baseline leaves the request undone, so it is rejected. ShadowSpec keeps two test suites apart. Characterization checks protect existing behavior; acceptance checks test only the requested change. Both must pass. Each verdict exports a Markdown and JSON evidence pack with the diff, hashes, checks, risks, and rollback notes. Reviewers can sign off on evidence rather than a convincing demo. The same gate runs in CI on every pull request and blocks the bad merge. A native IBM Bob Skill and MCP integration also let Bob run it inside the IDE.
Category tags: