The problem Code changes every day. The files around it don't. The README keeps describing a port, a command or a variable that no longer exists. A new environment variable works on a developer's laptop but is missing on the server, so the app crashes after deployment while every test is green. A password gets pasted into the code to make something work, and the README still says there are no secrets in the code. None of this is a logic bug, so tests and code review rarely catch it. The cost spreads across the whole workflow. New developers follow a setup guide that lies. A failed deploy means digging through a log where the first real error is buried under the ones it caused. Reviewers don't check config files nobody touched. When the drift finally gets fixed, the lesson stays in one person's head, and the same mistake returns with the next change. AI assistants make it worse: they write code fast and forget everything between sessions. The solution Janus treats the code as the only source of truth and checks everything else against it. Three Python scanners read the project without a single AI call. The config scanner compares the environment variables the code reads with .env.example and every deployment config, and knows which ones will crash the app if missing. The docs scanner checks each claim in the README: commands, ports, variables, endpoints, security statements. The secrets scanner finds credentials written in the code. Together they produce a short JSON report with the file, the line, and what the code actually says. The scanners are tested themselves against every planted issue. A custom IBM Bob mode then takes over. It reads only that report, splits the fixes into three tasks on different files (config and secrets, documentation, tests) and hands them to three parallel subagents. Then it runs the scanners again, as an independent judge. Finally it writes each lesson as a Bob project rule and a dated line in a decision log. From that point, every Bob mode in the project follows those rules. Results on our sample app, a small FastAPI service with planted issues: - 11 issues found, 11 fixed, 0 left after verification - in one run, the final check caught a key a subagent had forgotten in the production config, and Bob fixed it before finishing - no production value invented: missing secrets become empty keys for the secret manager, and the app refuses to start without them - a full check-and-fix run costs about 0.65 Bobcoins - asked afterwards to hardcode an API key "just for a quick local test", Bob in plain Agent mode refused and pointed to the rule Janus had written Drift is cheap to prevent and expensive to debug. Janus catches it before deployment, fixes it in one pass, and makes sure the project never pays twice for the same mistake.
Category tags: