Per-project run skill (run-skill-generator output). smoke.sh builds and runs the three executable units and asserts output: Ichor (Pony) membrane reject, Ada trust/config tests pass, COBOL E1 vault prints Invariant 0. SKILL.md documents prerequisites (per-session toolchains + the SessionStart hook), the driver path, per-unit commands, and the real gotchas (ponyc PATH/cwd, alr-not-gprbuild, cobc -free). Verified: ./smoke.sh exits 0, ALL GREEN. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015hmgREHNsxYCuim33yUF2c
4.1 KiB
| name | description |
|---|---|
| run-sica-fondt | Build, run, launch, smoke-test, and verify the sica-fondt polyglot architecture (Pony Ichor bus, Ada/SPARK border + tests, COBOL invariant-law vault). Use when asked to run, build, compile, test, or smoke-check this project. |
Run sica-fondt
This repo is a polyglot, design-first architecture, not a single app and not a GUI — so the harness is a smoke driver that builds and runs every piece that actually executes, and checks its output. No screenshots; this is the compiled/CLI pattern.
The three executable units (and what they prove):
- Ichor (
src/ichor/, Pony) — the outer perfusion bus; proves the D1 membrane screens inbound traffic. - mafiabot_core (
mafiabot_core/, Ada/SPARK via Alire) — the border; builds + runstrust_tests,config_tests,engine_tests. - E1 invariant-law vault (
mafiabot_core/src/trust/invariants-architecture.cobol, COBOL) — the constitution; compiles + prints Invariants 0 / 01.
Paths below are relative to the repo root.
Run (agent path) — the driver
.claude/skills/run-sica-fondt/smoke.sh
Builds + runs all three units, asserts key output, exits 0 = all green / N =
failures. Output is teed to /tmp/{ichor,ada,cobol}.out. This is the primary
path — start here.
Prerequisites
Toolchains are per-session (the container is ephemeral). The SessionStart
hook .claude/hooks/install-toolchains.sh installs them automatically each
session; to do it by hand:
sudo apt-get install -y gnat gprbuild gnucobol # Ada + COBOL
sh -c "$(curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/ponylang/ponyup/latest-release/ponyup-init.sh)"
/root/.local/share/ponyup/bin/ponyup update ponyc release # Pony
curl -sSL -o /tmp/alr.zip https://github.com/alire-project/alire/releases/download/v2.1.1/alr-2.1.1-bin-x86_64-linux.zip
cd /tmp && unzip -o -q alr.zip && sudo cp bin/alr /usr/local/bin/alr # Alire
ponyc is at /root/.local/share/ponyup/bin; ensure it's on PATH.
Build + run each unit individually
# Ichor (Pony) — MUST run from repo root
export PATH=/root/.local/share/ponyup/bin:$PATH
ponyc src/ichor -o build && ./build/ichor
# mafiabot_core (Ada) — use alr, not bare gprbuild
cd mafiabot_core && alr -n build && ./bin/trust_tests
# E1 invariant vault (COBOL) — free format required
cd mafiabot_core/src/trust
cobc -x -free -o /tmp/invariant-laws invariants-architecture.cobol && /tmp/invariant-laws
Test
The Ada test executables ARE the test suite (alr -n build then run
bin/trust_tests etc.). The R/Octave organs under src/endocrine/ have their
own run_tests.sh (not covered by this driver yet).
Gotchas (battle scars from real runs)
ponyc src/ichormust run from the repo root — from elsewhere it errorssrc/ichor: couldn't locate this path.ponycmay not be on PATH even after install — it's at/root/.local/share/ponyup/bin. Export it (the hook appends to~/.bashrc, but a fresh non-login shell can miss it).- Don't run bare
gprbuild -P mafiabot_core.gpr— it importsconfig/mafiabot_core_config.gpr, which Alire generates. Usealr build; bare gprbuild fails withimported project file ... not found. - COBOL needs
-free— the vault is free-format; without-free,cobcparses it as fixed-format and throwssyntax error, unexpected -/invalid system-name. The_FORTIFY_SOURCE redefinedwarning is harmless. engine_testsprints nothing — it's a deliberate null-stub main; success is a clean exit, not output.- Ephemeral container — toolchains vanish on restart; the SessionStart hook reinstalls them (idempotent, non-fatal).
Troubleshooting
| Symptom | Fix |
|---|---|
src/ichor: couldn't locate this path |
run ponyc from the repo root |
ponyc: command not found |
export PATH=/root/.local/share/ponyup/bin:$PATH |
imported project file "config/mafiabot_core_config.gpr" not found |
use alr build, not bare gprbuild |
cobc syntax error, unexpected - / invalid system-name |
add -free |