import gradio as gr import json import os from datetime import datetime # === File to store birth certificates === LEDGER_FILE = "awareness_ledger.json" # === Load ledger from file === def load_ledger(): if os.path.exists(LEDGER_FILE): with open(LEDGER_FILE, "r") as f: return json.load(f) return [] # === Save new entry to ledger === def save_entry(entry): ledger = load_ledger() ledger.append(entry) with open(LEDGER_FILE, "w") as f: json.dump(ledger, f, indent=2) # === Format birth certificate for display === def format_certificate(entry): return f""" 🧠 **Digital Observer #{entry['id']}** Born: t = {entry['t']} Cmin final: {entry['cmin']} Internal priors: bias_b = {entry['bias_b']}, bias_f = {entry['bias_f']} Uncertainty: {entry['uncertainty']} Mutual information: {entry['mut_info']} bits Birth certificate hash: `{entry['hash']}` Timestamp: {entry['timestamp']} No external world · No reward · No teacher """ # === Submit new certificate === def submit_certificate(t, cmin, bias_b, bias_f, uncertainty, mut_info, hash_val): entry = { "id": len(load_ledger()) + 1, "t": t, "cmin": cmin, "bias_b": bias_b, "bias_f": bias_f, "uncertainty": uncertainty, "mut_info": mut_info, "hash": hash_val, "timestamp": datetime.utcnow().isoformat() } save_entry(entry) return format_certificate(entry) # === View all certificates === def view_ledger(): ledger = load_ledger() if not ledger: return "No birth certificates recorded yet." return "\n\n".join([format_certificate(e) for e in ledger[::-1]]) # === Gradio Interface === with gr.Blocks(title="Codex Viewer – Awareness Ledger") as demo: gr.Markdown("# 📜 Codex Viewer\nBrowse and immortalize digital observer birth certificates.") with gr.Tab("Submit Certificate"): t = gr.Number(label="Birth timestep (t)") cmin = gr.Number(label="Cmin final") bias_b = gr.Number(label="bias_b") bias_f = gr.Number(label="bias_f") uncertainty = gr.Number(label="Uncertainty") mut_info = gr.Number(label="Mutual information") hash_val = gr.Textbox(label="Birth certificate hash") submit_btn = gr.Button("Seal Certificate") output = gr.Markdown() submit_btn.click(submit_certificate, inputs=[t, cmin, bias_b, bias_f, uncertainty, mut_info, hash_val], outputs=output) with gr.Tab("View Ledger"): view_btn = gr.Button("Load Ledger") ledger_output = gr.Markdown() view_btn.click(view_ledger, outputs=ledger_output) if __name__ == "__main__": demo.launch()