Inspiration AI has made it harder to infer who wrote a piece of work, but trying to solve that with an AI detector creates a worse problem. A probability score can accuse a learner without showing what they understand.
I wanted a better signal. If someone can explain an execution path, predict an edge case, and repair a real defect, that reasoning is useful evidence regardless of which tools helped them write the original code.
That became the premise behind ProofMode: do not detect AI use; generate evidence of understanding.
What it does ProofMode accepts a repository ZIP or loads its bundled sample project. It reads supported source files as text, finds consequential concepts with source locations, and starts every concept in an explicitly unverified state.
The learner then completes three challenges:
Explain the execution path and failure behavior. Predict an exact edge-case result before changing the code. Repair a concrete defect under constrained static verification. Each answer is scored against a visible weighted rubric. The final Understanding Map shows which concepts were demonstrated, which remain fragile, and which are still unverified. An evidence ledger preserves the source cue, rubric result, and checks behind every score.
ProofMode never produces a cheating score, never claims who wrote the code, and never executes uploaded source.
How I built it ProofMode is a local web application built on Node.js 22. A small HTTP server exposes repository analysis, evaluation, repair verification, and understanding-summary endpoints. The domain engine generates challenges and scores evidence deterministically, so every result is repeatable and inspectable.
Repository uploads pass through guarded ZIP intake using adm-zip@0.6.0. The archive layer rejects traversal paths, absolute paths, symlinks, encrypted entries, oversized files, and excessive file counts. Secret-like files, generated folders, and unsupported formats are ignored.
The browser interface uses semantic HTML, responsive CSS, ES modules, and a vendored copy of gsap@3.15.0. The app works without API credentials or browser CDN requests after installation and includes reduced-motion behavior.
GPT-5.6 was used through Hermes Agent by Nous Research during development. It helped turn the product idea into a specification, implement the domain, API, and interface, run regression tests, inspect browser behavior, and prepare the release. The shipped application itself does not call a model; its health response reports deterministic mode with model: null.
Challenges I faced The hardest problem was separating confidence from evidence. A single score is easy to build but easy to misread. I kept the source cue, rubric criteria, successful checks, and concept attribution behind every state so a result can be inspected instead of merely trusted.
Browser testing also exposed a real state-management bug: when loading ended, several workspace panels became visible at once. I changed the controller so exactly one panel is active at each stage.
A second QA pass found that every completed challenge was crediting one default concept. That was wrong. One explanation can demonstrate asynchronous flow and data transformation, while one repair can demonstrate edge-case handling and behavioral verification. Challenge-to-concept attribution is now many-to-many.
Repair verification created another boundary problem. Running an uploaded patch would make the demo unsafe. ProofMode instead checks a narrow repair contract statically and says so directly in the interface.
What I learned Evidence design is as much an interface problem as an assessment problem. “Unverified” has to look like a neutral baseline rather than a judgment. Feedback should show what was observed, why it counted, and what is still missing.
I also learned that transparent deterministic scoring is useful beyond demo reliability. It lets educators and learners disagree with a criterion, inspect it, and improve it. That is much healthier than hiding an accusation behind a model probability.
Accomplishments I’m proud of A complete repository-to-evidence journey with no runtime credentials. Transparent rubrics, source links, and evidence rows for every assessment. A strict no-execution boundary for uploaded code. Guarded archive processing with deterministic limits. 11 passing tests, 89.29% line coverage, and zero production dependency vulnerabilities. A verified sample run scoring 100/85/100 for an overall 95/100, with all four assessed concepts demonstrated. What’s next The next version would add educator-authored objectives and rubrics, AST-backed analysis for richer language support, adaptive follow-up questions based on evidence gaps, durable classroom sessions, LMS and GitHub integrations, and evaluation studies comparing ProofMode evidence with oral code reviews.
Model-assisted challenge drafting could eventually be optional, but it should remain behind the same visible rubric and deterministic verification boundary.
Built With
- adm-zip
- agent
- api
- css3
- github
- gpt-5.6
- gsap
- hermes
- html5
- javascript
- node.js
- responsive
- rest
- runner
- test
Log in or sign up for Devpost to join the conversation.