-
-
Case 001: a failed typecheck plus completion becomes one source-linked CONTRADICTED row; tour and legend explain the reviewer path.
-
Case 002: an exact successful retry prevents a false contradiction; the keyless CLI exports the same six-record, digest-bound ledger.
-
Build-continuity receipts for the v0.2 CLI baseline and final public explorer; they do not attest authorship or transcript authenticity.
Judge it in 60 seconds
- Open the keyless public demo on the default Case 001: Validation drift and read its reconstructed chain.
- Open the contradicted typecheck rule and inspect its exact source plus the linked failure and completion events.
- Switch to Case 002: Retry recovery and see why an exact successful retry prevents a false contradiction without becoming a compliance claim. Then export that case's digest-bound ledger.
No account, API key, upload, private repository, or rebuild is required. The review flow is covered by Chromium browser acceptance at desktop and mobile viewports.
Inspiration
An agent-produced diff can look ready while its supplied session evidence says
otherwise.
In the default demo, npm run typecheck fails and a completion event follows.
Rule Ledger turns that sequence into one CONTRADICTED row linking the
reconstructed instruction, failed command, and completion event.
Codex Rule Ledger turns an already-normalized launch-and-session bundle into a source-linked evidence ledger for staff engineers, platform teams, and security reviewers deciding whether to accept, investigate, or block the change. A rule audit can start by asking whether a rule passed. Rule Ledger first asks whether the supplied evidence makes any verdict admissible. Missing evidence is neither failure nor compliance.
What it does
Rule Ledger reconstructs the instruction chain described by the supplied launch capture, separates mechanically observable obligations from subjective prose, and returns four result states:
SUPPORTED: affirmative supplied evidence matches the rule;CONTRADICTED: affirmative supplied evidence conflicts with the rule;NOT_EVIDENCED: the capture does not contain enough evidence, which is not proof of non-action; andNOT_APPLICABLE: affirmative trigger evidence shows the conditional rule did not apply.
Non-observable instructions are declined rather than guessed into pass/fail.
Ambiguous or conflicting instructions are routed to HUMAN_REVIEW_REQUIRED;
declined and human-review dispositions stay outside the four mechanical result
states. Each row links to its instruction source and the supplied evidence or
search record behind its disposition. Export produces deterministic
SHA-256-bound JSON labeled LOCAL_CAPTURE_UNATTESTED; the hash binds the
supplied bytes, not their authenticity or time.
Confusing NOT_EVIDENCED with compliance can admit an unverified “done” claim.
Confusing it with failure can reject work that happened but was not captured.
Rule Ledger preserves that distinction for human review.
v0.2 reuses the same audit contract in a repo-local CLI for already-normalized
bundles. Recorded mode is keyless by default; explicit local --live mode uses
one GPT-5.6 semantic-analysis request. The public demo exposes both
repository-owned synthetic fixtures through a story-labeled, keyless selector.
Neither is a captured real session, and the explorer accepts no visitor-supplied
audit material, credential, or model request.
How judges can test it
Live demo: https://codex-rule-ledger.vercel.app. Use the 60-second flow above to inspect the product without rebuilding it.
Supported local judge platform: Ubuntu Linux with Node.js 24 and npm. The
package contract also supports Node.js ^22.13.0 || >=24.0.0; normalized POSIX
paths are supported, while Windows CLI behavior is not claimed.
git clone https://github.com/OrionArchitekton/codex-rule-ledger.git
cd codex-rule-ledger
npm ci
npm run --silent audit -- \
--bundle fixtures/synthetic-retry-recovery-v1 \
--out ledger.json
The command writes a private, no-clobber ledger and reports its digest on
stderr. For the complete release proof on fresh Ubuntu, run
npx playwright install --with-deps chromium once and then npm run verify.
Verification runs lint, typecheck, all 77 unit and contract tests, the
production build, and five Chromium E2E flows. Judges do not need --live; that
operator-only mode requires an environment key and is excluded from the public
test path.
How we built it
Working from the minimal event prompt, Codex independently selected the problem; scoped, designed, implemented, and tested v0.1; drove adversarial review and repair; deployed the keyless demo; and implemented the separately authorized v0.2 CLI and final public recorded-case explorer. Dan remained the sole entrant and retained release authorization, credentials, spend, eligibility, and publication decisions. The public repository and product work began inside the submission period.
The repository preserves 42 witnessed vertical RED-to-GREEN slices and 77 current tests. The architecture keeps each authority legible:
- Codex: selected and scoped the problem, implemented the vertical slices, drove review repair, deployment, and submission packaging.
- GPT-5.6: in live mode, maps complete instruction lines into typed, source-linked semantic proposals, routes ambiguous or conflicting language to human review, and declines subjective, unbounded, or non-observable language.
- Deterministic TypeScript: owns input validation, instruction discovery, hashes, evidence queries, semantic coverage, and every final ledger state.
GPT-5.6 does not own final verdicts, and deterministic validation rejects an unknown or fabricated source anchor before any ledger is produced. The public demo serves two repository-owned synthetic fixtures with recorded semantic analysis through the same typed analyzer contract, so keyless judging consumes no API budget and exposes no key.
Detailed /feedback, Git, CI, deployment, metadata-only Langfuse, and bounded
live-request receipts are linked in the v0.2 CLI baseline provenance card
and final release proof.
Together they corroborate build continuity across the disclosed workflow; they
do not independently attest authorship, transcript authenticity, or individual
edits.
Challenges
The hardest part was preserving epistemic honesty in the state model. “No test event exists” is not the same as “the test did not run,” and “the input bundle is structurally complete” is not the same as “the capture is authentic.” We therefore separated input readiness, obligation disposition, and evaluated result into different types and made contradictory evidence require an affirmative event.
The second challenge was keeping GPT-5.6 meaningful without delegating truth to the model. The model proposes typed semantics; deterministic application code adjudicates the complete evidence catalog and rejects unknown anchors, malformed output, refusal, or timeout.
Accomplishments
- A zero-login browser workflow turns Case 001's failed typecheck followed by completion into a source-linked contradiction, while Case 002 prevents an exact successful retry from becoming a false contradiction.
- One audit seam drives tests, the API, the UI, and the v0.2 normalized-bundle CLI.
- Both disclosed synthetic topologies are judge-visible in the browser and export through the same audit contract.
- The release has 77 unit and contract tests across seven files plus five Chromium acceptance flows, successful bounded GPT-5.6 proof requests, and a keyless public deployment.
What we learned
Reviewers do not need another green compliance badge. They need a compact explanation of what the supplied evidence supports, contradicts, and cannot decide. The second case also demonstrated why retry recovery matters: an earlier failure is not a contradiction when an exact successful retry precedes completion.
What's next
Next, we will package the deterministic core as an OSS library and version the capture/import contract so teams can integrate already-normalized bundles into review workflows. More disclosed fixtures come next. Private traces and signed provenance require separate authorization, retention, deletion, and attestation designs.
Built with
Codex, GPT-5.6, OpenAI Responses API, structured outputs, Next.js, React, TypeScript, Zod, Vitest, Playwright, GitHub Actions, and Vercel.
Built With
- codex
- github-actions
- gpt-5.6
- next.js
- openai-responses-api
- playwright
- react
- structured-outputs
- typescript
- vercel
- vitest
- zod
Log in or sign up for Devpost to join the conversation.