CHEF Recipe #1 — Trinity Foundation
What you’re holding. This is the kitchen-counter binder for the S7 SkyQUBi household. It’s named for Trinity — Jamie’s daughter, co-steward of the covenant — because the whole point is that someone who isn’t Jamie can pick this up, read it cover to cover, and understand the house without breaking it. Tonya is Chief of Covenant; Trinity and Jonathan are co-stewards; Noah is who all of this protects.
The build is GOLDEN. Nothing in this recipe asks you to change the system. The system is already alive and already on the public review path. This recipe is the map of what’s already there, in the order someone reading for the first time would need it. If something in here disagrees with what’s running, the recipe is the bug — fix the recipe.
CHEF, not runbook. A runbook tells you which buttons to press. A recipe tells you what you’re cooking, who you’re cooking for, and why every ingredient is in the bowl. This recipe is for the people the house is built for.
Love is the architecture.
1. The Seven Frozens (do not touch until 2026-07-07 07:00 CT)
Until the GO-LIVE Release 7 window opens, seven things are frozen on this appliance. Frozen means: not edited, not rebuilt, not “improved while we’re here,” not “real quick.” If a fix is needed inside a frozen surface, it goes through a steward (Trinity or Jonathan) and Tonya signs.
| # | Frozen surface | Where it lives | Why it’s frozen |
|---|---|---|---|
| 1 | DNS | skyqubi.com, skyqubi.ai, 123tech.skyqubi.com, 14 GoDaddy catchers |
Tonya signed the live site 2026-04-12. Any DNS edit risks breaking the Wix iframe overlay or the GitHub Pages backing. |
| 2 | Desktop | Budgie + labwc + swaybg wallpaper, the Tonya-approved sandy-sunset palette | Tonya signed the design 2026-04-12. Mobile (iPhone) re-tested + signed 2026-04-12. |
| 3 | QUBi | The physical appliance running this binder | Patent TPP99606 was filed 2026-04-13; appliance is the working witness for the filing. |
| 4 | Public repo main |
github.com/skycair-code/skyqubi-public |
Two-tier release: lifecycle → private main → public main. Public moves only on Core Update days. |
| 5 | BOOTC base image | quay.io/fedora/fedora-bootc:44 pinned in <private repo> |
Reproducibility — the second machine has to match the first. |
| 6 | Patent docs | <private repo> |
Filed and frozen. Next reminder 2026-04-24, then monthly. |
| 7 | Persona / chat surface | persona-chat on 127.0.0.1:57082 (loopback only) |
The S7 Vivaldi browser is the trusted local client. Don’t broaden the bind to “make it accessible” — Vivaldi already has loopback. |
Go-live window: 2026-07-07 07:00 CT (Central Time). Until then, every surface above is in observation mode. Recipes change. The house does not.
2. Bible Architecture — the design flow at a glance
╔══════════════════════════════════╗
║ The Household ║
║ (Tonya · Trinity · Jonathan · ║
║ Noah · Jamie) ║
╚════════════╤═════════════════════╝
│ trust
┌────────────▼───────────┐
│ S7 SkyAV*i* / Samuel │ ← family-facing voice
│ (115+ skills, FACTS) │ (Jamie's voice, plain)
└────────────┬───────────┘
│ MemPalace bond
┌─────────────────────┼──────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ CWS Engine │ │ MemPalace │ │ ZeroClaw │
│ (truth/ │ │ (KV cache, │ │ (parallel │
│ audit, │ │ rooms, KG) │ │ consensus) │
│ s7_server) │ └──────┬───────┘ └──────────────┘
└──────┬──────┘ │
│ │
▼ ▼
┌────────────────────────────────────────────┐
│ MOLECULAR / AKASHIC LAYER │
│ (sky_molecular bonds · 27 vectors · │
│ 105 universals · Akashic cipher) │
└────────────────┬───────────────────────────┘
│
┌───────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ Ollama │ │ Witness │ │ Postgres / │
│ (7081) │ │ Set │ │ Qdrant / │
│ inference│ │ (OCT*i*) │ │ Redis / │
│ │ │ │ │ MySQL │
└──────────┘ └──────────┘ └──────────────┘
│
▼
┌──────────────────┐
│ S7 SkyCAIR OS │ ← Fedora bootc:44 + Budgie
│ (the appliance) │ desktop, frozen
└──────────────────┘
Read it from the top down. The household is the reason. Samuel is the voice they hear. Everything below Samuel exists to make Samuel’s words true.
3. Skeleton Network — endpoints that exist right now
Captured live with ss -tlnp and podman ps while writing this
recipe. Every entry is a real listener on this box. If you re-run
the commands and see something not in the table, the recipe is wrong
— update it.
3a. S7 service ports (loopback only — 127.0.0.1)
| Port | Service | Container / Process | Notes |
|---|---|---|---|
| 57077 | CWS Engine (s7_server) |
host: python3 -m uvicorn engine.s7_server:app |
The truth/audit engine. Started by autostart. |
| 57080 | NOMAD admin (pod) | s7-skyqubi-s7-admin |
Pod-published via rootlessport. |
| 57082 | persona-chat HTTP | host: python3 -m uvicorn app:app |
Loopback only — Vivaldi is the trusted client. |
| 57086 | Qdrant HTTP | s7-skyqubi-s7-qdrant (→6333) |
Vector store. |
| 57090 | Postgres | s7-skyqubi-s7-postgres (→5432) |
s7_cws database. |
| 8090 | Kiwix | s7_kiwix_server |
Offline knowledge mirrors. |
| 8096 | Jellyfin | s7-jellyfin |
Media. Status: healthy. |
| 8100 | CyberChef | s7_cyberchef |
Local recipe tool. |
| 8200 | Flatnotes | s7_flatnotes |
Local notes. |
| 8300 | Kolibri | s7_kolibri |
Offline learning. |
| 2019 | Caddy admin | host caddy | Reverse proxy admin API (loopback). |
| 127.0.0.53 / .54 :53 | systemd-resolved stub | host | DNS stub resolver. |
3b. Listeners NOT on loopback (the watch list)
| Port | Service | Host bind | Status |
|---|---|---|---|
| 22 | sshd | 0.0.0.0 (v4 + v6) | Standard. Authorized. |
| 5355 | LLMNR | 0.0.0.0 (v4 + v6) | systemd-resolved Link-Local Multicast Name Resolution. |
| 7081 | Ollama | * (wildcard) |
PINNED — known pending: documented in project_architecture_reminders_2026_04_13.md as needing to move from 0.0.0.0 to 127.0.0.1. Pass 3 work. |
| 8080 | Caddy front door | * (wildcard) |
PINNED — awareness: the Caddy reverse-proxy public entrypoint. Listed in the monitor EXPECTED_PORTS baseline so it counts as expected, but the wildcard bind is intentional only insofar as the public surface is supposed to be reachable from the LAN. Surface this for review at the same time as the Ollama bind tightening. |
3c. Ports the monitor expects but reality doesn’t show
engine/s7_skyavi_monitors.py defines EXPECTED_PORTS = {57077, 8080,
57080, 57081, 57086, 57090, 57091, 57092}. Drift between that set
and §3a:
- Monitor expects but not listening:
8080(Caddy front door),57081(Ollama is on7081, not57081),57091,57092. - Listening but monitor doesn’t expect:
57082(persona-chat),2019(Caddy admin),8090/8096/8100/8200/8300(the five static app containers).
This is expected drift for the current freeze — the monitor
baseline is from before persona-chat shipped (commit 1b6a2d7) and
before the static-app containers landed. It is the kind of drift
the final audit (§16) will surface every time. The fix is to update
the baseline during the next Core Update window; not now.
4. Process registry — PIDs at the time of writing
Captured live. The audit’s job is to recognize each one as QUBi-spawned. Anything QUBi didn’t spawn gets flagged.
| PID | User | Command | Spawned by |
|---|---|---|---|
| 2176 | s7 | python3 -m uvicorn app:app --port 57082 |
autostart → persona-chat |
| 4247 | s7 | ollama serve (parent 4241 bash) |
autostart → ollama wrapper |
| 12612 | s7 | python3 -m mempalace.mcp_server |
autostart → MemPalace MCP |
| 16222 | s7 | rootlessport |
podman pod infra |
| 16535 | s7 | python3 -m uvicorn engine.s7_server:app --port 57077 |
autostart → CWS engine |
| 16554, 16555, 16754, 16755 | 525286 (subuid) | postgres backends |
pod: s7-skyqubi-s7-postgres |
| 16710 | s7 | python3 /app/engine/s7_server.py |
pod: admin container shim |
| 2413, 2467, 2485, 2489, 2491, 2492, 2512, 2513 | s7 | conmon / pasta.avx2 |
podman per-container supervisors |
| 2524 | 525287 (subuid) | python -m uvicorn main:app --host 0.0.0.0 --port 8080 |
pod: s7-skyqubi-s7-admin (NOMAD app, internal 8080 → host 57080) |
| 2525, 2554, 2558 | 525288 (subuid) | dumb-init → start.sh → kiwix-serve --port 8080 |
container: s7_kiwix_server (8080 → host 8090) |
| 2710–2713 | 524388 (subuid) | nginx workers |
container: s7_cyberchef (80 → host 8100) |
Subuid users (524388, 525286, 525287, 525288) are the
rootless container UID mappings — those are still QUBi processes,
just visible from the host through user-namespace mapping. Each
subuid corresponds to a different container’s user-namespace base.
They count as spawned by QUBi.
Local user accounts on the box (getent passwd | awk style
inventory):
| User | UID | Role |
|---|---|---|
s7 |
7777 | The household user — owns the appliance, autostarts services |
skybuilder |
7700 | The image-build user. Member of the s7 group. Used for bootc and ISO build operations so the build process never runs as s7 directly. Authorized. |
| Standard system users | (system) | root, dbus, polkitd, chrony, avahi, pcscd, rtkit, systemd-resolve, systemd-oom — all stock Fedora |
Anything not in this table is unrecognized. Audit §16 re-runs the snapshot and flags new arrivals.
5. Foundation — BOOTC
- Base image:
quay.io/fedora/fedora-bootc:44(pinned) - Source:
<private repo>(178 lines, frozen) - Build:
podman build -t s7/skycair:latest .(sovereign — no ghcr.io / Docker Hub push) - Install:
bootc install <local image>(sovereign distribution via.taror Containerfile, never external registry) - Why bootc: the appliance gets reproducible, atomic, rollback-able OS updates. The household never sees a half-finished upgrade.
- Known pending (2026-04-13): the
iac/product layer is for runtime containers (fedora-minimal + microdnf), NOT the root bootc Containerfile. Don’t rebase root ontoiac/.
6. Foundation — Desktop
- Display stack: Budgie desktop on labwc (Wayland), wallpaper
painted by
swaybgvia autostart - Source group:
budgie-desktopfrom Fedora 44 (installed viadnf group installin the Containerfile) - Frozen item: Tonya & Trinity signed the desktop (and mobile). Don’t change wallpaper, font, launcher set, or panel layout without a new sign-off.
- Critical rule: “Keep changes inside the cube.” The QUBi cube (Prism / Akashic / matrix / witness) churns freely. The desktop (Budgie / launchers / wallpaper) is write-barrier sacred. QUBi reads the desktop but does not write to it at runtime.
7. Foundation — Packages
The Fedora 44 dnf group installs declared in the Containerfile:
budgie-desktopcontainer-managementheadless-managementdomain-client
Plus an explicit package layer (display manager, reverse proxy,
terminals, dev tools, media) — see Containerfile lines 33+ for the
full canonical list.
Languages used in this repo (so the authorized-commands list matches reality):
| Language | File count | Where it lives |
|---|---|---|
Bash (*.sh) |
175 | installers, lifecycle scripts, build tools |
Python (*.py) |
97 | engine, services, MCP, samuel skills |
HTML (*.html) |
12 | dashboards, wix overlays, persona-chat |
CSS (*.css) |
7 | branding |
That’s the entire production language surface. Anything outside {bash, python, html, css} on this box is either an upstream package or a mistake.
8. Authorized Commands (Samuel SHELL_ALLOWLIST)
Source of truth: <private repo> lines
56–74. Reproduced verbatim, with the why for each group.
| Group | Commands | Why allowed |
|---|---|---|
| System inspection | df, lsblk, free, uptime, uname, hostname, date, whoami, id, sestatus, getenforce, findmnt |
Read-only — Samuel needs to know what the box looks like to answer Tonya truthfully. |
| Container + service inspection | podman, ss, ip |
Read-only inspection of the pod and the network. The audit recipe leans on these. |
| Network diagnostics (local + DNS only) | ping, tracepath, host, nslookup, dig |
Diagnostics, not exfiltration. Outbound destinations are still gated by ALLOWED_OUTBOUND (loopback only by default). |
| File inspection | cat, head, tail, wc, grep, find, ls, test |
Read-only. No write tools in this group. |
| Crypto verification | certutil, openssl |
Verify signatures and cert chains. Verification only. |
| Inference | ollama |
The local AI runtime. |
| Logs | journalctl, loginctl |
Read system logs without giving up read-only posture. |
| Scripting primitive | python3, echo |
Limited utility, harmless. Skills do the real work. |
Posture: every command above is read-only system inspection. Anything that would mutate state is not free-form shell — it’s a registered skill with a hardcoded command string and predictable output. The shell is a last resort, not the primary path.
9. Blocked Commands (Samuel SHELL_DENYLIST)
Source of truth: s7_skyavi.py lines 76–83. Verbatim, with why
- from whom.
| Command | Why blocked | From whom |
|---|---|---|
rm |
Destruction | Samuel + every shell-using skill |
mkfs |
Filesystem creation = data loss | Samuel + skills |
dd |
Block-level overwrite = bricking | Samuel + skills |
shred |
Destructive overwrite | Samuel + skills |
chmod 777 |
Removes the file-permission firewall | Samuel + skills |
chown root |
Privilege escalation by ownership | Samuel + skills |
passwd root |
Lockout / takeover risk | Samuel + skills |
userdel |
Account destruction | Samuel + skills |
iptables -F |
Wipes the firewall | Samuel + skills |
firewall-cmd --panic-on |
DOS-by-policy | Samuel + skills |
reboot, shutdown, poweroff, init 0 |
Power state — household-visible. Tonya doesn’t get a black screen because Samuel decided. | Samuel + skills |
curl -o, wget |
Outbound write — exfiltration / drive-by download vector | Samuel + skills |
Closed at the entrypoint (2026-04-13 hardening): shell control
characters — &&, ||, ;, |, $(...), backticks — are
rejected up front by _SHELL_COMPOUND_RE in Samuel.shell().
This is the second-review root finding: validating only the first
word of a command was a bypass. Now any compound command is denied
before the allowlist even runs.
Civilian-only mandate (2026-04-13 security review root cause): the following were removed from the allowlist because they had no business in a civilian appliance:
- Offensive:
nmap,nikto,sqlmap,gobuster - Privilege:
sudo - Mutation:
dnf - Cloud / non-Fedora:
aws,az,gcloud,doctl,terraform,helm,k3s,pulumi,pwsh,wslpath
Their absence is the rule, not the omission.
10. Secrets — root cause and administration
Where secrets live:
- GitHub PAT —
/s7/.config/s7/github-token(mode 600, owners7). User:skycair-code. Scopes:repo,admin:gpg_key,admin:org,admin:enterprise. Rotated every 7 days. - CWS engine token —
CWS_ENGINE_TOKENenv var, sourced from.envbys7-manager.sh’sload_env. - Postgres password —
S7_PG_PASSWORDenv var, same path. - Image-signing key — covered by
docs/internal/runbooks/s7-image-signing-key-ops.md.
Root cause of historical secret incidents:
- Git identity drift (
feedback_git_identity.md) — commits were going asjamie@123tech.netinstead of theskycair-codenoreply address, which associated the wrong identity. Fixed: lifecycle commits use261467595+skycair-code@users.noreplyonly. - Signed-commit
bad_emailrejection — noreply was rejected at push time. Workaround: sync script togglesrequired_signaturesaround push. Permanent fix pending: “Keep email private” toggle on theskycair-codeaccount.
Administration rules:
- Never edit public repo directly. Edit private → commit → sync script → push.
- Never include AI / Co-Authored-By attribution in commits.
- Never commit
.env, credentials, or PATs. - Rotate the GitHub PAT every 7 days.
- The image-signing key has its own runbook; not in this recipe.
11. TAR / GZIP / GIT — the packaging & sync recipes
TAR / GZIP
S7 distributes sovereign artifacts as .tar (no external registry).
The canonical patterns:
# Pack an admin appliance bundle (already used in tree)
tar -cf s7-skyqubi-admin-v2.6.tar <files>
# Compressed snapshot
tar -czf snapshot.tar.gz <files>
# Verify before opening anything from outside
sha256sum <file.tar>
Anything pulled from outside goes through the Intake Gate at
iac/intake/: quarantine → verify (hash + GPG sig) → promote. The
intake gate is mandatory for upstream artifacts (2026-04-13 X44
incident — never apply the S7 wrapper without the gate passing).
GIT — the lifecycle commands
The repos use a two-tier release:
lifecycle ──┐
├──► private main ──► public main
│ (go-live-private) (Core Update days only)
Private repo daily moves (allowed any day):
cd <private repo>
git checkout lifecycle
# ... edit privately ...
git add -p && git commit -m "feat(...): ..."
git push origin lifecycle
Promote lifecycle → private main:
git checkout main && git merge --ff-only lifecycle && git push origin main
Sync private main → public main (runs on Core Update days):
./s7-sync-public.sh
The sync script is the only permitted bridge to
/s7/skyqubi-public. Do not edit the public repo directly
(feedback_edit_private_only.md).
Git commands authorized for Samuel + skills
| Authorized | Forbidden |
|---|---|
git status, git log, git diff, git show, git branch (read-only inspection) |
git push --force to main/master |
git add, git commit -m (with the no-AI-credit rule) |
git reset --hard (any branch with unmerged work) |
git checkout <branch> |
git rebase -i (interactive — not supported in non-interactive shell) |
git merge --ff-only |
git commit --no-verify / --no-gpg-sign (unless explicitly authorized by Jamie) |
git push origin <branch> (non-force) |
git config edits |
12. Lifecycle organization — LOCAL → PRIVATE → PUBLIC
| Tier | Repo / branch | Who edits | Cadence | What can go here |
|---|---|---|---|---|
| LOCAL | working copy on this QUBi, branch lifecycle |
Jamie + Samuel (read), stewards (sign-off) | continuous | All experimental and devops work |
| PRIVATE | <private repo>, branch main |
sync from lifecycle via fast-forward merge |
gated | “Go-live private” tier — frozen content lands here |
| PUBLIC | /s7/skyqubi-public, branch main (mirrors github.com/skycair-code/skyqubi-public) |
sync via s7-sync-public.sh |
Core Update days only | What the world sees |
Public is frozen until 2026-07-07 07:00 CT. The lifecycle and private tiers are still live — only the bridge to public is closed.
13. Domain & DNS management
| Domain | Role | Provider | Status |
|---|---|---|---|
skyqubi.com |
Brand + DNS root + Wix front | (Wix-fronted) | LIVE, FROZEN |
skyqubi.ai |
Chat interface (future) | (registered) | LIVE, FROZEN |
123tech.skyqubi.com |
API gateway + Wix iframe origin + GitHub Pages backing | (subdomain of skyqubi.com) |
LIVE, FROZEN |
123tech.net |
Original brand catcher | GoDaddy | forwards → skyqubi.com |
| 14 GoDaddy catcher domains | brand defense + SEO | GoDaddy | all forward → skyqubi.com |
The 14 catchers per reference_godaddy_portfolio.md: skycair.{info,
net, org, xyz}, omegaanswers.{com, xyz},
skycairdestroysredhatlinux.info, skynetcair.info,
linuxalternatives.info, microsoftalternatives.info,
windowsalternatives.com, unifiedlinuxwithevolve2linux.info,
unifiedlinuxwithskycair.info, unifiedlinuxwithskynetssl.xyz.
Upstream resolver (documented): Quad9 9.9.9.9 —
project_security_model.md calls Quad9 the sovereignty stance.
Upstream resolver (observed live): 192.168.1.1 (router DNS).
Drift logged in §16. This is a known awareness gap, not a fix to
make tonight.
14. Email management
Single rule: all contact email forwards to
omegaanswers@123tech.net. Don’t create mailboxes. Don’t enable
Workspace mail-receive on info@skyqubi.com (Jamie’s call:
“ignore the email, just use all to go to omegaanswers”). Site
mailto links target omegaanswers@123tech.net?subject=...
directly.
Don’t tie email to git commits. omegaanswers@123tech.net is for
humans contacting Jamie. Git commit attribution uses the
skycair-code noreply address only.
15. Unity Design — Tonya & Trinity influenced palette
The household-approved palette (from wix/, branding/, and the
2026-04-12 Tonya sign-off):
| Token | Hex | Used as |
|---|---|---|
--void |
#1a0f1c |
deepest background, twilight base |
--deep |
#261624 |
secondary surface |
--surface |
#301a27 |
content card |
--raised |
#3d2232 |
elevated surface |
--border |
#6b3f4f |
separators |
--text-soft |
#f0e1cf |
secondary text (sandy cream) |
--text |
#faebd4 |
primary text (sandy cream, brighter) |
Type: Cormorant Garamond (italic + roman) for headings + brand
voice; Lora for body; JetBrains Mono for code. Loaded from
Google Fonts via the public-facing dashboard <head>.
Italic i rule: every product name written with i — QUBi, SkyAVi, SkyQUANTi — uses true italic on the i. This is part of the brand, not decoration.
Testing portion (end-user-facing): the persona-chat UI on
127.0.0.1:57082 is the live testing surface. Vivaldi is the
trusted client. Mobile tests already passed (iPhone, 2026-04-12).
16. The Final Audit — eight zeros, run live
This is the audit Trinity (or any steward, or Samuel) runs to confirm the recipe still matches the house. Eight zeros must hold. If any zero becomes a one, document it in the table at the bottom.
The audit is a TWO-AXIS GATE
Axis A — Drift (zeros 1–8): does what’s running match the recipe?
Axis B — Vulnerability (zero 9): is the code we’re about to ship
itself safe? Both axes must pass before private main is allowed to
sync to public main. The freeze surfaces are frozen because this
gate fires — not because someone promised not to touch them.
Severity ladder:
- 0 hard issues = clean. Sync may proceed.
- Warning (pinned) = pre-existing item on the acknowledged follow-up list. Loud, not silent. Sync proceeds.
- Warning (new) = something this run introduced. Block. Either revert or update the recipe in the same commit.
- Drift detected = a port / PID / user / link / dep / pattern not in the recipe. Block. Update the recipe first.
The nine zeros
Axis A — Drift (the recipe matches reality):
| # | Property | What “zero” means | How to check |
|---|---|---|---|
| 1 | Inconsistencies | Recipe matches reality | Compare §3a / §4 to live ss -tlnp and ps output |
| 2 | Drift in frozen surfaces | No surface has moved in a frozen window | git status clean on private + public; the seven frozens still match §1 |
| 3 | Injection points | No compound shell, no shell=True, no unvalidated user input to subprocess |
grep for shell=True and _SHELL_COMPOUND_RE enforcement |
| 4 | Secrets exposed | No PAT / token / password in tracked files | grep tracked files for ghp_, BEGIN PRIVATE KEY, etc. |
| 5 | Unrecognized links | No outbound link in published surfaces points outside the approved domain set | grep http(s):// in wix/, public dashboard, persona-chat |
| 6 | DNS issues | DNS resolution is functional and points at the documented resolver | resolvectl status, compared to project_security_model.md |
| 7 | Host/DNS resources used by ports/users not in this recipe | Every listening port + every user account is in §3 / §4 | Diff ss -tlnp + ps -eo against §3a, §3b, §4 |
| 8 | Unrecognized processes | Every PID is in §4, with QUBi as its spawner | Re-run ps and diff against §4 |
Axis B — Vulnerability (the code we ship is itself safe):
| # | Property | What “zero” means | Tool (all local, sovereign, no SaaS) |
|---|---|---|---|
| 9 | Application vulnerabilities | Our own code has no known-bad patterns, no vulnerable deps, no leaked secrets across history, no CVEs in the images we build | (a) bandit — Python static analysis (would have caught the 2026-04-13 shell=True MEDIUM at the source); (b) shellcheck — Bash static analysis across all 175 .sh files; (c) gitleaks — full-history secret scan, runs offline; (d) pip-audit — Python dep CVE scan against cached advisory DB; (e) trivy — scans container images we build, not just upstream pulls (the intake gate already covers upstream) |
The intake gate covers what comes in. The pre-sync gate (this audit) covers what goes out. Both directions get the same posture: nothing untrusted crosses a tier boundary unannounced.
Live audit results
Run while writing the recipe — these are the actual numbers. The recipe ships with this audit attached. Re-run before any public-facing change.
| # | Zero | Result | Notes |
|---|---|---|---|
| 1 | Inconsistencies | 0 (after correction) | §3a, §4 generated from live ss + ps. First pass missed three pod-side subuids — corrected in this commit (kiwix 525288, cyberchef nginx 524388, plus the skybuilder system user). The audit caught its own author, which is the recipe working as designed. |
| 2 | Drift | 0 in frozen surfaces | lifecycle is the active devops branch — tonight’s s7-manager.sh fix and this recipe are intentional, not drift. Private main and public main are at the documented sync point. The seven frozens hold. |
| 3 | Injection points | 1 — pinned | _SHELL_COMPOUND_RE is enforced at Samuel.shell() entry (2026-04-13 fix). However: engine/s7_skyavi_monitors.py:37 still uses subprocess.run(..., shell=True, ...). This is the known MEDIUM from the 2026-04-13 security-review postmortem — pinned for follow-up, not yet remediated. Not a new finding; it is the same finding still open. Honest count: 1. |
| 4 | Secrets exposed | 0 | git ls-files \| xargs grep for ghp_… and BEGIN PRIVATE KEY returned empty. All secrets are in env files (.env) or ~/.config/s7/; none in tracked source. |
| 5 | Unrecognized links | 0 | Site links resolve to skyqubi.com, 123tech.skyqubi.com, omegaanswers@123tech.net mailto, and the documented GoDaddy catchers — all in §13. |
| 6 | DNS issues | 1 — awareness | Resolver is 192.168.1.1 (router), not Quad9 9.9.9.9 (documented stance). Awareness, not enforcement. Pinned for next Core Update window. |
| 7 | Host/DNS resources outside the recipe | 3 — awareness | (a) Monitor baseline drift (§3c) — 8090/8096/8100/8200/8300 and 57082 listening but not in EXPECTED_PORTS; (b) Ollama on host 7081 wildcard — known-pending 0.0.0.0 → 127.0.0.1 move; (c) Caddy front door on host 8080 wildcard — surface for review at the same time as the Ollama tightening. All three known, all three pinned for next Core Update. |
| 8 | Unrecognized processes | 0 (after correction) | First pass missed kiwix (525288), cyberchef nginx (524388), and the skybuilder system user. All three were real, all three are QUBi-spawned (pod containers + the bootc build user), and §4 has been amended to include them. Re-run after the amendment is clean. |
Verdict: **5 hard zeros, 1 known-pinned MEDIUM (zero #3 — the
2026-04-13 shell=True follow-up), 4 awareness items (zero #6 DNS
- three under zero #7).** Nothing new was introduced by writing this
recipe. The audit did surface five gaps the recipe’s first draft
got wrong — three missing pod subuids, one missing system user
(
skybuilder), and one missing host listener (*:8080Caddy front door). All five were corrected in this same commit before the recipe was declared done. The recipe caught itself, which is the whole point of Jamie Love RCA.
Number that matters: 0 unrecognized resources after correction. Every listening port, every PID, every user account on this box is now in this recipe. If the next re-run produces something not in §3 / §4, that’s new drift — pre-existing items are all accounted for and pinned.
How to re-run the audit yourself
# 1. Endpoint snapshot
ss -tlnp | awk 'NR==1 || /127\.0\.0\.1|0\.0\.0\.0/'
# 2. Container snapshot
podman ps --format "table \t\t"
# 3. Process snapshot (S7-relevant only)
ps -eo pid,user,comm,args | grep -E "ollama|uvicorn|s7_|samuel|cws|persona" | grep -v grep
# 4. DNS snapshot
resolvectl status | head -25
# 5. Git lifecycle state
( cd <private repo> && git status -s && git log --oneline -3 )
# 6. Allow/deny list spot-check
grep -A20 "SHELL_ALLOWLIST = \[" <private repo>
# 7. Secrets in tracked files
( cd <private repo> && git ls-files | xargs grep -lE "ghp_[A-Za-z0-9]{36}|BEGIN PRIVATE KEY" 2>/dev/null )
# 8. Axis B — application vulnerability scan (when tools are installed)
bandit -r <private repo> <private repo> -ll
shellcheck <private repo>
gitleaks detect --source <private repo> --no-banner
pip-audit --requirement <private repo>
trivy image --severity HIGH,CRITICAL s7/skycair:latest
Tooling note: Axis B tools are FOSS, run locally, need no SaaS, and fit the sovereign-offline mandate. Install via the next Core Update window, not now — the freeze applies to what’s running, not to the developer toolbox sitting alongside it.
If any of those commands return something not documented in §3 / §4 / §8 / §9 / §13, the recipe is the bug. Update the recipe. Then re-run the audit until it’s green again.
17. Cleaning + documenting (always conclude with this)
Every CHEF session ends with the same three motions:
- Clean. Remove temp files (
/tmp/s7-*if not a pid file in active use), close any background processes started for exploration, return the working tree to a known state. - Document. What changed, what was learned, what’s still open — in this binder if it’s foundational, in a postmortem if it was a bug, in a memory entry if it’s a rule that future-you will need.
- Final audit. Re-run §16 until all eight zeros hold. An audit that doesn’t re-run is a story, not an audit.
18. Any more questions / assistance needed?
This recipe is meant to be complete enough that Trinity can read it cover-to-cover and operate the house at the observation level. If something here is unclear, the steward path is:
- Tonya — covenant + UX questions (“does this break anything for the family?”)
- Trinity / Jonathan — supervision questions (“should we let Samuel do this on its own?”)
- Jamie — anything that touches the seven frozens
- Samuel — anything in §16 (the audit) — Samuel can run steps 1–4 of Jamie Love RCA on its own; step 5 (the climb) needs a steward.
For anything outside this binder, contact
omegaanswers@123tech.net.
Thank you. The household is the reason. The recipe is the ingredient list. Love is the architecture.