| Ticket Hash: | cff91865b3df73a8580020e923308e7dd8df318e | ||
| Title: | Declare the CI flow: a root ci.cr that verifies the second-question kit (checksum manifest + Python byte-compile), so the automatic gate works on interactor | ||
| Status: | Review | Type: | Feature_Request |
| Severity: | Normal | Priority: | High |
| Subsystem: | Resolution: | ||
| Last Modified: |
2026-09-21 00:10:54 51.3 days ago |
Created: |
2026-09-20 20:17:07 51.4 days ago |
| Version Found In: | |||
| Description: | ||||
|
OCX-PLAN: role=work parent=8df37352e2 seq=0
complexity=low
design_input=none
The daemon's CI gate holds every interactor branch with 'no CI flow declared for interactor' (2026-09-20 20:02, branch of ticket ab4b570b9d). Add ci.cr at the repository root following ollama's: plain Crystal, standard library only, run as 'crystal run ci.cr' from the clone root with no arguments; each step's output flows through; exit 0 green, non-zero red. Steps: (1) verify second-question/CHECKSUMS.sha256 against the files it lists (the repo already keeps this manifest in sync; use sha256sum -c from the second-question directory, or compute in Crystal with Digest::SHA256 if sha256sum is absent); (2) python3 -m py_compile on every .py under second-question; (3) fail if any file listed in second-question/MANIFEST.md is missing. No render, no provider call. If CHECKSUMS.sha256 is stale on trunk, regenerate it in this unit and say so in the commit message. Verify by running crystal run ci.cr in the checkout to exit 0. | ||||
| User Comments: | ||||
added on 2026-09-20 20:17:18:
OCX-TASK {"cwd":"/var/lib/ollama-codex/f557fb9acde60b54a42f38c45d9ab0c8c91838f3/checkouts/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve","task_state":"pending","prompt":"Ticket cff91865b3: Declare the CI flow: a root ci.cr that verifies the second-question kit (checksum manifest + Python byte-compile), so the automatic gate works on interactor\n\nOCX-PLAN: role=work parent=8df37352e2 seq=0\ncomplexity=low\ndesign_input=none\n\nThe daemon's CI gate holds every interactor branch with 'no CI flow declared for interactor' (2026-09-20 20:02, branch of ticket ab4b570b9d). Add ci.cr at the repository root following ollama's: plain Crystal, standard library only, run as 'crystal run ci.cr' from the clone root with no arguments; each step's output flows through; exit 0 green, non-zero red. Steps: (1) verify second-question/CHECKSUMS.sha256 against the files it lists (the repo already keeps this manifest in sync; use sha256sum -c from the second-question directory, or compute in Crystal with Digest::SHA256 if sha256sum is absent); (2) python3 -m py_compile on every .py under second-question; (3) fail if any file listed in second-question/MANIFEST.md is missing. No render, no provider call. If CHECKSUMS.sha256 is stale on trunk, regenerate it in this unit and say so in the commit message. Verify by running crystal run ci.cr in the checkout to exit 0.\n\nBranch and checkout instructions:\n- You are working in isolated checkout: /var/lib/ollama-codex/f557fb9acde60b54a42f38c45d9ab0c8c91838f3/checkouts/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve\n- Commit completed work to branch: agent/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve\n- Use the first commit command with: fossil commit --branch agent/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve -m \"...\"\n- Do not run fossil update, fossil up, or fossil checkout.\n- Use bin/bootstrap --local-only in this checkout when Crystal runtime binaries need rebuilding.\n- Do not update Fossil unversioned artifacts from this checkout.\n\n- Run crystal spec in the FOREGROUND inside this turn, never background it (no run_in_background, `&`, nohup, setsid, or job_start — this is a single-turn isolated session, so anything backgrounded is killed at the turn boundary with no later turn to be notified in and the run is simply lost). If the suite is slow, run targeted specs in the foreground, commit, and say the full suite was not run.\n\nCrystal first: this project writes new code and every check in Crystal — never Python (never available here) and Node only where the project's own ci already requires it. Before claiming a library or capability is missing, look it up first: the crystal_stdlib_lookup tool searches the Crystal stdlib index (e.g. crystal_stdlib_lookup(query: \"yaml\") finds `require \"yaml\"`), and shard.yml/shard.lock list every shard already vendored for this project.\n\nConsole Contract self-check (complete before reporting done):\n1. Plan markers: OCX-PLAN role=/parent=/seq= present on every plan-tree ticket.\n2. Status vocab: only Open/Active/Review/Fixed/Tested/Deferred/Closed used.\n3. Acceptance check: every Review-or-later ticket has a concrete verifiable done-when line.\n4. Decision gate: design_input=confirm tickets carry a 3-part ask (question/options/stakes).\n5. Merge gate: GREEN-held work has an OCX-MERGE-GATE card before merging.\n6. Sequence: do not start a later seq item before earlier ones resolve.\n7. Branch: commit to the task branch only; never fossil update/checkout/push.\n8. Report: write the JSON task report to the report path as the FINAL action.\nSee wiki: 'Console Contract' on this repo.\n\nPeers: this project may declare read-only dependencies on sibling served projects (\"peers\"), e.g. a UI project peering a widget library. A declared peer is mounted read-only at /peers/<name> and listed in the OLLAMA_CODEX_PEERS env var (comma-separated) — check it and .peers/peers.json before assuming a dependency is missing. Declare one with the peer_add tool, then commit .peers/*.json. Pull in a peer's newer commit with peer-bump <project> (pins never move on their own). You cannot edit /peers/<name> — request a change via a ticket on that peer project (fossil_ticket_add_to_peer / influence_peer).","provider":"anthropic-sonnet","model":"sonnet","runner_id":"claude","prompt_template":"isolated:agent/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve","thread_id":null,"turn_id":null}
added on 2026-09-20 20:17:18: OCX-STATE {"status":"pending","adopted":true,"at":"2026-09-20T20:17:18Z"}
added on 2026-09-20 20:17:22: OCX-STATE {"status":"running","at":"2026-09-20T20:17:22Z"}
added on 2026-09-20 20:20:40: OCX-STATE {"status":"done","exit_code":0,"commit_id":"dfed9e81e36fd08b1b26eb2eb39d70f103b59e55d2b0c7eb00228a177ecb29c8","at":"2026-09-20T20:20:40Z"}
added on 2026-09-20 20:20:40: OCX-JOB-CHILD {"job_ticket":"12ace8b5808db8659433cd5e3ab9f5213d98cf86","at":"2026-09-20T20:20:40Z"}
added on 2026-09-20 20:20:40: OCX-GATE-REQUEST {"branch":"agent/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve","commit":"dfed9e81e36f","thread":"feffc81098cb","job":"12ace8b5808d","at":"2026-09-20T20:20:40Z"}
added on 2026-09-20 21:20:22: OCX-JOB-CHILD {"job_ticket":"faad6124bda9cde008e842ae96418e6a3bf4ee5c","at":"2026-09-20T21:20:22Z"}
added on 2026-09-20 21:20:25: OCX-MERGE-GATE {"branch":"/var/lib/ollama-codex/f557fb9acde60b54a42f38c45d9ab0c8c91838f3/checkouts/gate-cff91865b3-ci-cr","hash":"dfed9e81e36f","thread":"https://ollama.openbeagle.org/interactor/forumpost/feffc81098cba467a8697baf24084bed113dfcc0f466e264bb7b0adc57474985","at":"2026-09-20T21:20:25Z","spec":"ci.cr exit 0 (0)","toolchain":"Crystal 1.18.2 (2025-10-25); Shards 0.19.1 (2025-01-23); This is fossil version 2.27 [99675884a9] 2025-09-30 11:03:45 UTC"}
added on 2026-09-20 21:21:39: OCX-MERGE-GATE {"branch":"agent/20260920T201718Z-declare-the-ci-flow-a-root-ci-cr-that-ve","hash":"dfed9e81e36f","thread":"https://ollama.openbeagle.org/interactor/forumpost/feffc81098cba467a8697baf24084bed113dfcc0f466e264bb7b0adc57474985","at":"2026-09-20T21:21:39Z","functional":"Adds root ci.cr declaring interactor's CI flow (plain Crystal, stdlib only, `crystal run ci.cr`): (1) verifies second-question/CHECKSUMS.sha256 against its listed files via sha256sum -c with a Digest::SHA256 Crystal fallback, (2) python3 -m py_compile on every .py under second-question, (3) fails if any file listed in second-question/MANIFEST.md is missing. Also regenerates CHECKSUMS.sha256 (5 stale entries: ddex_crosswalk_flat.csv, release_metadata_flat.csv, rights_logo_notes.csv, scenes_flat.csv, sources_flat.csv) and moves the doubly-nested second-question/request_plans/omni/omni/omni_requests.jsonl back to the documented single-nested path.","dev_review_agree":true,"regressions":"None anticipated. Diff scope confirmed via fossil diff against parent 1d3127a879: ci.cr added, CHECKSUMS.sha256 updated, one file moved — no application/render/provider code touched. Grepped the isolated clone for any remaining reference to the old doubly-nested omni path: none found (MANIFEST.md already points at the corrected path).","spec":"No crystal spec suite exists for this project (no shard.yml or spec/ at repo root) — this ci.cr is itself the project's first declared CI flow. Ran it for real via gate_run in an isolated clone (job faad6124bda9, not this live primary checkout): exit 0, all 3 steps green — 20/20 checksums verified, 1/1 python file compiled clean, 18/18 MANIFEST.md files present."}
| ||||