iris-pressure-studio / docs /CODEX_LOG.md
Codex
Deploy submission links to Hugging Face Space
200cb0b
|
Raw
History Blame Contribute Delete
24.9 kB

Codex Log

This log tracks substantive Codex work on Iris. It is a human-readable companion to Git history, focused on what changed, what was tested, and whether the Iris quality gate passed.

2026-06-06

7819210 - first commit

  • Initialized the public iris repository with README.md.
  • Pushed main to GitHub.

Validation:

  • Git remote and branch tracking confirmed.

e9f54fc - Bootstrap project structure

  • Added project foundation docs and contributor workflow.
  • Added AGENTS.md, CONTRIBUTING.md, repo layout docs, scripts/check_repo.sh, and source/test anchors.

Validation:

  • ./scripts/check_repo.sh passed.

c788f8e - Add MiniCPM validation harness

  • Added the Python Iris engine, OpenAI-compatible client, parser, prompts, and CLI validation harness.
  • Added unit tests for parser and engine behavior.
  • Ran MiniCPM-V 4.6 Instruct validation and documented that it did not pass the Iris quality gate.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests passed.
  • ./scripts/check_repo.sh passed.
  • Quality gate: failed. Outputs were too generic and repetitive.

dd9aa4c - Keep handoff docs untracked

  • Removed local numbered handoff markdown files from Git tracking.
  • Added ignore and check-script guardrails so future local task docs stay out of commits.

Validation:

  • ./scripts/check_repo.sh passed.

601e3db - Validate local MiniCPM4.1 reasoning model

  • Pulled and ran openbmb/minicpm4.1 locally through Ollama.
  • Added local Ollama defaults, IRIS_ENABLE_THINKING, /think support, and a longer local timeout.
  • Documented Day 1b local MiniCPM4.1-8B validation results.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests passed.
  • ./scripts/check_repo.sh passed.
  • Quality gate: failed. Local reasoning output still repeated generic pressures and gave implementation advice at the center.

583618e - Harden prompt retry validation

  • Tightened the pressure prompt to require idea-grounded questions and removed examples that MiniCPM4.1 copied verbatim.
  • Added retry feedback for generic, repeated, unrelated, and solution-shaped pressure outputs.
  • Added a balanced first-JSON-object parser so multi-object model streams do not become one malformed field.
  • Added stricter center-step quality checks.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests passed.
  • ./scripts/check_repo.sh passed.
  • Quality gate: failed. Day 1c output was grounded but still repeated the same pressure across rings and returned center steps like Interview.

776e453 - Add deterministic pressure rings

  • Replaced loose depth lenses with deterministic ring profiles for Reality Contact, Real Actor, Existing Alternative, and Problem Truth.
  • Added retry feedback when model pressure does not start with the required ring opening.
  • Documented the Day 1d local MiniCPM4.1 validation run.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests passed.
  • ./scripts/check_repo.sh passed.
  • Quality gate: failed. Ring separation improved, but center outputs still collapsed to Interview and several why_it_bites fields drifted into advice.

fd0655f - Harden engine validation gate

  • Added stricter advice-language validation for why_it_bites with model retry feedback instead of code rewriting.
  • Changed center distillation so MiniCPM chooses actor, situation, and assumption_to_test, while Iris only validates and formats the final action.
  • Added shared seed/spiral modules and ./scripts/validate_gate.py to print spirals plus automated gate scores.
  • Documented the Day 1e local MiniCPM4.1 validation run.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests passed.
  • ./scripts/check_repo.sh passed.
  • ./scripts/validate_gate.py --all ran against local openbmb/minicpm4.1 and returned the expected gate failure code because only 2 of 3 seed spirals passed. Quality gate: failed. Medication and flashcards passed; tool rental still failed ring separation when Ring 3 repeated the safety-gear frame from Ring 1.

787293f - Harden existing alternative ring

  • Added a model-chosen alternative field for the Existing Alternative ring.
  • Added Ring 3 validation for missing, weak, product-shaped, copied, or failure-shaped alternatives while keeping MiniCPM responsible for the actual workaround choice.
  • Added forbidden prior-frame prompt context so Ring 3 avoids copying earlier pressure scenes.
  • Updated the gate with an existing_alternative_named criterion and documented the first full 3-seed automated gate pass.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests passed.
  • ./scripts/check_repo.sh passed.
  • ./scripts/validate_gate.py --all ran against local openbmb/minicpm4.1 and passed all 3 seed spirals. Quality gate: passed.

5241db6 - Add Gradio spiral UI shell

  • Added app.py as the Hugging Face Spaces / Gradio entrypoint.
  • Added iris.ui with a custom HTML/CSS concentric-ring stage, seed buttons, streaming ring reveal, and real IrisEngine wiring.
  • Added UI render tests for alternative display, center display, and HTML escaping.
  • Documented the Day 2a browser smoke test.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • ./scripts/check_repo.sh passed.
  • Gradio app built successfully in a local virtualenv.
  • Browser smoke test passed at http://127.0.0.1:7860: desktop and mobile layouts rendered without horizontal overflow, and a real UI run completed 4 rings plus center from local MiniCPM4.1.

0aef82c - Polish Gradio spiral reveal

  • Added named UI ring stages, live progress pills, and pending skeleton cards for ring and center model work.
  • Strengthened the center presentation as the final validation action while leaving engine judgment untouched.
  • Documented the Day 2b UI smoke pass.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke test passed at http://127.0.0.1:7860: desktop and mobile layouts had no horizontal overflow, center pending appeared during a real run, the run completed with 4 rings plus center, and browser console errors were empty.

e64f5cd - Add Stitch atomic UI design export

  • Added the Google Stitch atomic/infinite-zoom export under stitch_iris_atomic_infinite_zoom/.
  • Preserved the Stitch HTML/CSS references, screenshots, design tokens, and UX flow notes as the source of truth for the Day 2 spatial UI.

Validation:

  • Source export reviewed locally; .DS_Store stayed ignored.

9839374 - Build Stage 1 Stitch spatial canvas

  • Replaced the previous Gradio form/card shell with a full-bleed static spatial canvas matching the Stitch beginning state.
  • Added top navigation, left depth rail, faint orbit rings, stardust, glowing central nucleus, status/depth chips, and bottom hero copy.
  • Kept the validated Iris engine unchanged; Stage 2 will wire interaction back to the existing server-side engine path.
  • Added the Stage 1 screenshot and validation note.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860: desktop 1440x900 and mobile 390x844 rendered full-bleed with no horizontal overflow.

ea9a3f3 - Wire Stage 2 spatial UI flow

  • Added real Gradio controls over the Stitch-style nucleus and electrons so the spatial UI is clickable instead of static.
  • Added the idea modal, Proceed flow, server-side MiniCPM pressure calls, latest electron descent, and R4 center distillation.
  • Kept the validated engine unchanged and added a UI session/view bridge test.
  • Documented the Stage 2 core-flow validation run.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860: nucleus opened the modal, Proceed returned R1 from local MiniCPM, R1-R4 clicks advanced through the engine depths, R4 reached the center, and desktop/mobile layouts had no horizontal overflow.

d87b0da - Build UI v2 canvas card checkpoint

Date: 2026-06-08

  • Replaced the Day 2 circle visual layer with a static FigJam-style canvas and stacking idea/AI pressure cards.
  • Added the primary idea frame, three AI pressure cards, a next-iteration idea card, and a secondary frame preview.
  • Updated UI tests and docs for the v2 canvas/card checkpoint while leaving the validated engine unchanged.
  • Added the Stage 1 screenshot at docs/validation/day2-v2-stage1-canvas-static.png.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860: desktop screenshot captured at 1440x900; the rendered UI had 3 AI cards, 2 idea cards, no visible circle/electron labels, and no page-level horizontal overflow. A mobile screenshot check at 390x844 confirmed the frame remains inside a scrollable canvas.
  • Iris quality gate: not rerun for this visual-only checkpoint.

4cb4509 - Wire live canvas card interactions

Date: 2026-06-08

  • Replaced the static v2 canvas with a live in-memory canvas app: click-to-create frames, editable idea cards, Proceed actions, iteration cards, multiple independent frames, zoom controls, wheel zoom, and drag panning.
  • Added a named Gradio API bridge so browser JavaScript calls the server-side IrisEngine for live MiniCPM pressure cards and center distillation.
  • Added API-contract tests for live pressure payloads, prior-card constraint formatting, center payloads, and the empty interactive shell.
  • Kept the validated engine logic unchanged.
  • Added the live validation screenshot at docs/validation/day2-v2-live-interactive.png.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860 with local MiniCPM: created Frame 1, submitted a tool-rental idea, rendered a live Reality Contact card, submitted an Idea v2 refinement, rendered a live Real Actor card, created a second independent frame, used zoom controls, drag-panned, and confirmed no extra frame was created by the drag fallback.
  • Final smoke metrics: 2 frames, 2 live AI pressure cards, 4 idea cards, no old circle/electron labels, no page-level horizontal overflow.
  • Iris quality gate: not rerun for this visual/UI checkpoint.

b494dcc - Add live four-direction pressure cards

Date: 2026-06-08

  • Changed the live canvas Proceed flow from one AI pressure card to a four-card pressure set: Constraints, Limitations, Capabilities, and Reality Contact.
  • Added direction-specific prompts and engine parsing so each card is still authored by MiniCPM, with Python only enforcing format, risk-only bite language, repeat checks, and missing-field repairs through model re-prompts.
  • Updated the canvas UI to render pressure sets in a two-by-two card grid, keep depth as one round per pressure set, and pass all prior pressure cards back to the engine for later iterations.
  • Added tests for the four-direction payload, prior-card formatting, missing why_it_bites repair, and nested missing-pressure repair.
  • Added the Fix 1 validation note and screenshot at docs/validation/day2-v2-fix1-four-pressures.md and docs/validation/day2-v2-fix1-four-pressures.png.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860 with local MiniCPM: created Frame 1, submitted a tool-rental idea, rendered four live direction cards, and showed the next editable Idea v2 card below them.
  • Iris quality gate: not rerun for this UI checkpoint.

6cb6709 - Harden MiniCPM split JSON parsing

Date: 2026-06-08

  • Fixed a live MiniCPM failure where reasoning-mode output returned one JSON object with pressure_question, then a later final JSON object with why_it_bites.
  • Added targeted parser support for selecting the embedded JSON object that contains the requested key without changing the default first-object parser behavior.
  • Added pressure_question aliases across the direction engine and repair prompts.
  • Treated build as a generic grounding stop word so placeholder ideas like build idea do not fail only because the model did not repeat build.
  • Added parser and engine regression tests for split thinking/final JSON output and rough placeholder input.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860 with local MiniCPM: submitted build idea, rendered 4 live pressure cards, and avoided the previous why_it_bites parse failure.
  • Iris quality gate: not rerun for this UI parser bugfix.

b8d5c2f - Polish canvas navigation controls

Date: 2026-06-08

  • Added native-feeling canvas navigation: empty-space drag pan, wheel pan, Ctrl/Cmd-wheel and Alt-wheel zoom, keyboard zoom/focus shortcuts, toolbar pan arrows, and Focus active frame.
  • Made frame headers draggable handles so individual idea frames can move independently on the canvas.
  • Kept textareas and buttons as normal form controls while allowing pan/zoom around frame bodies.
  • Updated README, architecture notes, UI contract tests, and the validation screenshot/note at docs/validation/day2-v2-canvas-navigation.md.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860: created one frame, dragged the frame header, panned empty canvas without creating an extra frame, Ctrl-wheel zoomed over the frame, toolbar pan moved the world, and Focus recentered the active frame.
  • Iris quality gate: not rerun for this UI navigation checkpoint.

06bb36c - Add Build Small field guide

Date: 2026-06-08

  • Added docs/BUILD_SMALL_FIELD_GUIDE.md to preserve Khalid's hackathon guidance: Off-the-Grid, Custom UI, optional llama.cpp, Field Notes, Open Trace, demo video, social post, and Hugging Face Space submission needs.
  • Updated README, architecture notes, roadmap, and project brief so future work keeps local MiniCPM, custom canvas polish, load-bearing AI, and submission readiness in view.
  • No engine or UI runtime behavior changed.

Validation:

  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Iris quality gate: not rerun for this docs-only guidance update.

8e94961 - Keep canvas iterations contextual

Date: 2026-06-08

  • Changed the canvas engine bridge so each Proceed call sends the current iteration, original idea, and full idea history to MiniCPM.
  • Kept prior pressure cards as forbidden prior pressure context instead of idea text, reducing model copy/repeat loops while preserving model authorship.
  • Made canvas pressure rounds open-ended instead of switching to a center card after depth 4.
  • Added current-iteration grounding retries and a UI-only soft accept for the final model-authored card when repeat similarity is the only remaining issue.
  • Added docs/validation/day2-v2-infinite-context.md.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860: first idea returned 4 live pressure cards, a short second iteration returned 4 more, the frame reached Depth 02, and no model error card appeared.
  • Iris quality gate: not rerun for this UI iteration-context checkpoint.

05da4e9 - Keep canvas moving after grounding retries

Date: 2026-06-08

  • Fixed a second-iteration UI failure where the current-iteration grounding guard over-weighted weak words such as allows, amazing, and approach.
  • Let the canvas soft-accept a final model-authored card when current-iteration grounding is the only remaining retry failure, while preserving hard failures for malformed JSON, advice language, and wrong direction shape.
  • Added a regression test for the cheap-compute / vetted-data second-iteration case and documented the live local smoke in docs/validation/day2-v2-current-iteration-soft-pass.md.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Live local run_canvas_engine() smoke against MiniCPM4.1 passed for the reported second-iteration wording: ok: true, 4 pressure cards, Depth 02.
  • Iris quality gate: not rerun for this UI bugfix.

2026-06-10

c87d6d0 - Preserve deep canvas frame memory

  • Changed the canvas engine bridge so each model call includes a structured frame-memory prompt: frame continuity, current iteration, original idea, full user iteration history, and prior AI pressure trail with depth, direction, pressure, and why_it_bites.
  • Kept prior cards as separate forbidden pressure context so MiniCPM can stay synced with the idea's origin without copying earlier AI cards.
  • Added deep-frame regression coverage for later-depth ideations in one frame.
  • Added a UI soft-pass for broad idea-grounding retry exhaustion, while malformed JSON, advice language, and wrong direction shape still fail closed.
  • Updated README, architecture notes, and docs/validation/day2-v2-deep-frame-memory.md.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Live local run_canvas_engine() smoke against MiniCPM4.1 passed at Depth 06 with four user iterations and three prior AI pressure cards in one frame.
  • Iris quality gate: not rerun for this UI memory checkpoint.

2026-06-12

784e929 - Harden Hugging Face Space readiness

  • Added Docker Space frontmatter and submission-facing README notes for the Build Small track, target awards, demo link, social link, and Space URL.
  • Removed Iris frontend runtime dependencies on Google Fonts and jsDelivr; the final brief now uses the browser's local Save as PDF flow.
  • Added a deterministic Gradio template patch for the Docker image so Gradio's wrapper does not load Google preconnects, the iframe-resizer CDN script, or external Gradio social-card images.
  • Hardened .dockerignore so .env, .env.*, and .envrc stay out of the Docker build context.
  • Updated architecture and field-guide docs from the old canvas/circle language to the current pressure-studio product story.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py scripts/patch_gradio_templates.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Browser smoke passed at http://127.0.0.1:7860: pressure studio rendered, one active idea card was ready, default Gradio utility buttons were hidden, no horizontal overflow appeared, and the rendered page contained no fonts.googleapis.com, fonts.gstatic.com, cdnjs.cloudflare.com, cdn.jsdelivr.net, raw.githubusercontent.com, or html2pdf references after applying the Gradio template patch.
  • Iris quality gate: not rerun; this was a Hugging Face Space readiness and submission-polish pass, not an engine-output change.

2026-06-13

56b9212 - Guard model output against template-placeholder leaks

  • Added a template-leak guard so bracketed or angle-bracketed fill-in placeholders like [Constraint], [this], or <idea> trigger quality feedback instead of reaching the UI or CLI.
  • Kept soft canvas mode resilient by returning a clean honest fallback card when the local model keeps leaking template placeholders after retries.
  • Added regression coverage proving soft mode never surfaces placeholder cards.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Iris quality gate: not rerun; this was a model-output validation hardening change covered by targeted regression tests.

a0a1871 - Align README tags with Build Small submission format

  • Replaced freeform README frontmatter tags with the hackathon's namespaced track:, sponsor:, and achievement: tags so the submission tool can parse Iris correctly.
  • Added a submission-facing explanation of what Iris is, how it is built, why MiniCPM is load-bearing, and which target awards/badges the app should claim.
  • Left the demo video, social post, and Space URL TODO slots untouched for Khalid to fill after recording and posting.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Iris quality gate: not rerun; this was README submission metadata and narrative alignment.

c6cc4ac - Speed up Hugging Face Space Docker build

  • Replaced the source build of llama.cpp with a pinned prebuilt Ubuntu x64 CPU llama-server archive from the official llama.cpp releases.
  • Kept the runtime path on llama.cpp while avoiding a long C++ compile on the Hugging Face Space builder.
  • Updated README and deploy docs to describe the prebuilt llama-server path.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Space deployment: built and ran at https://build-small-hackathon-iris-pressure-studio.hf.space; logs showed MiniCPM loaded through llama-server, the model server became healthy, and Gradio launched on 0.0.0.0:7860.

2026-06-14

39be7ca - Fit Space model calls within CPU timeout budget

  • Raised the live UI engine-call abort window from 90 seconds to 4 minutes so CPU Basic MiniCPM rounds can complete instead of returning all-red timeout cards.
  • Set the Space default IRIS_MAX_TOKENS to 320 because pressure cards are short and CPU generation speed is the live bottleneck.
  • Kept README submission TODO links untouched.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • bash -n scripts/space_entrypoint.sh passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.
  • Space deployment: built and ran on https://build-small-hackathon-iris-pressure-studio.hf.space, but a live CPU Basic pressure round still exceeded the new 4-minute client budget. That prompted a follow-up change to collapse the four direction requests into one bounded model generation.

0be287b - Fit live Space pressure rounds on CPU Basic

  • Kept MiniCPM load-bearing while asking the live HTTP client for all four direction cards in one combined model call.
  • Preserved deterministic sequential behavior for tests and fake clients.
  • Raised the live browser/backend timeout budget to 10 minutes for CPU Basic cold runs while keeping IRIS_MAX_TOKENS capped.
  • Capped the combined live call at one attempt and tightened the prompt against generic "the idea" cards after the live Space returned four cards in about seven minutes but with weak generic wording.
  • No README submission TODO slots changed.

Validation:

  • python3 -m unittest discover -s tests passed.
  • python3 -m compileall iris tests app.py passed.
  • bash -n scripts/space_entrypoint.sh passed.
  • git diff --check passed.
  • ./scripts/check_repo.sh passed.

pending - Add demo, social, and Space links to README

  • Added the final Live Space, demo video, and social post links to the README submission section and top quick-links banner.
  • Removed the now-satisfied README TODO items for Space, demo video, and social post links.
  • Left the Build Small YAML frontmatter tags unchanged.

Validation:

  • ./scripts/check_repo.sh passed.
  • git diff --check passed.