betterwithage commited on
Commit
d17c121
·
verified ·
1 Parent(s): b7c7a28

sync(space): Dockerfile COPY fix so parity endpoints register (CTO)

Browse files
Files changed (1) hide show
  1. Dockerfile +246 -9
Dockerfile CHANGED
@@ -1,12 +1,249 @@
1
- # a11oy Space - minimal proxy to canonical GHCR image
2
- # Workaround for HF builder exit-128 on the full source tree (corrupted repo storage).
3
- # The real image is built/signed/SLSA-attested in szl-holdings/a11oy CI.
4
  #
5
- # CLOSEOUT 2026-06-03 (A11oy Full-Stack Team): pinned to the IMMUTABLE digest of
6
- # main @ 87b5d4bc, which includes: Cross-Harness Receipt Bridge runtime (#232),
7
- # the Formulas SPA section (#233), and the Formulas Try-it endpoint path fix (#234).
8
- # SLSA L2 build-provenance attested + cosign keyless-signed.
9
- FROM ghcr.io/szl-holdings/a11oy@sha256:8aaea251609104b554baaac161a0e44cb59a909296e0b37d25ba94b3ab921530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
- # HF Spaces requires the app to listen on port 7860 (image already binds 0.0.0.0:7860)
12
  EXPOSE 7860
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # syntax=docker/dockerfile:1
2
+ # SPDX-License-Identifier: Apache-2.0
3
+ # © 2026 Lutar, Stephen P. SZL Holdings · ORCID 0009-0001-0110-4173 · Doctrine v11
4
  #
5
+ # a11oy HF Docker Space RESET build (Brand Orchestration Layer at /).
6
+ #
7
+ # RESET 2026-05-31 (Yachay CTO): a11oy is NOT a /console/ admin panel.
8
+ # Per Replit .replit-artifact/artifact.toml: BASE_PATH="/", serve="static" from dist/public,
9
+ # rewrite /* -> /index.html (SPA history fallback). The React SPA IS the Brand
10
+ # Orchestration Layer; its HomePage (Vessels-DNA / investor-facing landing) renders at /.
11
+ #
12
+ # Serves:
13
+ # / — SPA front door (Brand Orchestration Layer landing)
14
+ # /assets/* — SPA JS/CSS chunks (vite base="/")
15
+ # /boardroom, /investor-demo, /sovereign, /fabric, /nexus, /command, ... — SPA routes (history fallback)
16
+ # /api/a11oy/* — a11oy serve endpoints (health, gates, reason, policy/evaluate, proxy)
17
+ #
18
+ # HF Space requirement: listen on PORT 7860.
19
+
20
+ FROM python:3.12-slim
21
+
22
+ WORKDIR /app
23
+
24
+ # Install Node 22 (for a11oy serve TypeScript runner)
25
+ RUN apt-get update && apt-get install -y --no-install-recommends \
26
+ curl ca-certificates gnupg git && \
27
+ curl -fsSL https://deb.nodesource.com/setup_22.x | bash - && \
28
+ apt-get install -y --no-install-recommends nodejs && \
29
+ apt-get clean && rm -rf /var/lib/apt/lists/*
30
+
31
+ # Install Python dependencies
32
+ # ADDITIVE (Yachay): huggingface_hub + openai power the a11oy.code orchestrator's
33
+ # unified open-LLM router (HF Router inference). python-multipart is required by
34
+ # FastAPI UploadFile for the Whisper /voice/stt endpoint. None of these change the
35
+ # existing SPA / gates runtime; the orchestrator import is try/except-guarded in serve.py.
36
+ RUN pip install --no-cache-dir \
37
+ "fastapi>=0.111.0,<1.0.0" \
38
+ "uvicorn[standard]>=0.29.0,<1.0.0" \
39
+ "httpx>=0.27.0,<1.0.0" \
40
+ "starlette>=0.37.0" \
41
+ "huggingface_hub>=0.25.0" \
42
+ "openai>=1.40.0" \
43
+ "python-multipart>=0.0.9" \
44
+ "cryptography>=42.0.0" \
45
+ "lmdb>=1.4.0"
46
+ # BE hardening: slowapi rate limiter (60/min/IP). pydantic+fastapi already present.
47
+ RUN pip install --no-cache-dir "slowapi>=0.1.9"
48
+
49
+ # sqlite-vss removed from build: no pre-built wheel for python:3.12-slim;
50
+ # szl_khipu_lmdb.py and szl_unay.py already have honest try/except fallback
51
+ # to cosine similarity if the sqlite-vss .so cannot load. (P0 CI fix, Dev1 Rumi)
52
+
53
+ # a11oy source for the serve runtime (receipt-substrate + policy gates only).
54
+ # FIX (2026-06-03, HF Verification Squad): the previous `git clone` of the PRIVATE
55
+ # github.com/szl-holdings/a11oy repo failed in the HF build sandbox (no GitHub creds)
56
+ # with exit code 128, leaving the Space stuck in BUILD_ERROR. The required source is
57
+ # already vendored in THIS Space repo under packages/, so we COPY it locally to the
58
+ # exact path serve.py expects (/app/a11oy-src/packages/...). No network, no auth.
59
+ # Doctrine v11 LOCKED 749/14/163. ADDITIVE-equivalent: same files, same runtime path.
60
+ COPY packages/receipt-substrate/src /app/a11oy-src/packages/receipt-substrate/src
61
+ COPY packages/policy/src/gates /app/a11oy-src/packages/policy/src/gates
62
+
63
+ # Copy the pre-built SPA (Brand Orchestration Layer) to the static root.
64
+ # index.html + assets/* are served directly at / and /assets/*; unknown GET -> index.html.
65
+ COPY console/ ./static/
66
+
67
+ # Copy serve orchestrator and gates manifest
68
+ COPY szl_parity_gaps.py ./szl_parity_gaps.py
69
+ COPY serve.py ./serve.py
70
+ COPY gates_manifest.json ./gates_manifest.json
71
+ # ADDITIVE: a11oy.code conversational orchestrator module (imported by serve.py).
72
+ COPY a11oy_code_orchestrator.py ./a11oy_code_orchestrator.py
73
+ # ADDITIVE (WAYRA organ): explicit per-file COPY (this Dockerfile does not use COPY . .).
74
+ # serve.py mounts wayra_serve.router -> /wayra, /wayra-digest, /api/a11oy/v1/wayra/*.
75
+ COPY wayra_serve.py ./wayra_serve.py
76
+ COPY wayra_snapshot.json ./wayra_snapshot.json
77
+ COPY wayra_digests_7d.json ./wayra_digests_7d.json
78
+ # ADDITIVE (KHIPU-OS agentic DAG organ, 2026-06-01, Yachay): explicit per-file COPY
79
+ # (this Dockerfile does not use COPY . .). serve.py imports szl_khipu_os_routes and
80
+ # mounts GET/POST /api/a11oy/v1/khipu-os/{stats,verify,checkpoint,archive}. Self-driving
81
+ # Merkle DAG + Reed-Solomon erasure (reedsolo optional; honest, NOT holographic/quantum).
82
+ COPY szl_khipu_os_routes.py ./szl_khipu_os_routes.py
83
+ # ADDITIVE (PURIQ Agentic Formulas, 2026-06-01, Yachay): explicit per-file COPY
84
+ # (this Dockerfile does not use COPY . .). serve.py imports szl_puriq_formulas and
85
+ # calls .register(app) -> GET /formulas + /api/a11oy/v1/puriq/formulas*. Doctrine v11 LOCKED.
86
+ COPY szl_puriq_formulas.py ./szl_puriq_formulas.py
87
+
88
+ # ADDITIVE (Yachay / AYNI-OS, 2026-06-01): reciprocity organism + event-sourced replay
89
+ # + Tinkuy (Kuramoto) flow. Explicit per-file COPY (this Dockerfile does not use COPY . .).
90
+ # serve.py imports ayni_os_serve.router -> /v1/ayni, /v1/replay, /v1/tinkuy and serves the
91
+ # /ayni tab from /app/pages/ayni.html. HONEST: replay=event-sourcing (NOT time-travel);
92
+ # Ayni=game-theory primitive (Axelrod-Hamilton 1981, NOT mystical); Tinkuy=Kuramoto 1975.
93
+ # LOCKED preserved: 749/14/163, 13-axis yuyay_v3, replay bacf5443…631fc5. Pure additive.
94
+ COPY ayni_os_serve.py ./ayni_os_serve.py
95
+ COPY ayni_os/ ./ayni_os/
96
+ COPY pages/ ./pages/
97
+
98
+ # ADDITIVE (Live 3D Wires / PURIQ Doctrine v12, Yachay): explicit per-file COPY.
99
+ # This Dockerfile uses per-file COPY (no `COPY . .`), so the live-wires module +
100
+ # its static assets must be copied explicitly or `import szl_live_wires` 404s and
101
+ # /live-wires falls through to the SPA shell. serve.py registers these FIRST.
102
+ COPY szl_live_wires.py ./szl_live_wires.py
103
+ COPY live_wires.html ./live_wires.html
104
+ COPY live_wires_3d.js ./live_wires_3d.js
105
+
106
+ # ADDITIVE (Provenance Hardening / Wire D + DSSE Cosign REAL signing, 2026-06-01, Yachay):
107
+ # explicit per-file COPY (this Dockerfile does not use `COPY . .`). serve.py imports
108
+ # szl_provenance (which imports szl_dsse) and calls register_provenance(app, "a11oy") ->
109
+ # GET /api/a11oy/wires/D, POST /khipu/sign, POST /khipu/verify, GET /khipu/ledger,
110
+ # GET /api/a11oy/provenance. Without these COPYs the import fails and the routes fall
111
+ # through to the Node :8081 proxy (503). cryptography (added above) backs the real
112
+ # ECDSA-P256-SHA256 cosign signatures. Real signatures only when SZL_COSIGN_PRIVATE_PEM
113
+ # runtime secret is present (else honestly UNSIGNED). SLSA L1 honest (signing live); L2 roadmap via Wire D; L3 NOT claimed.
114
+ COPY szl_dsse.py ./szl_dsse.py
115
+ COPY szl_provenance.py ./szl_provenance.py
116
+
117
+ ENV PORT=7860
118
+ # BE hardening (Greene) — per-file COPY (this Dockerfile uses per-file COPY).
119
+ COPY szl_be_hardening.py ./szl_be_hardening.py
120
 
 
121
  EXPOSE 7860
122
+
123
+ # ADDITIVE (UNAY + Khipu-LMDB v2, 2026-06-01, Yachay / Perplexity Computer Agent):
124
+ # explicit per-file COPY (this Dockerfile does not use `COPY . .`). serve.py imports
125
+ # szl_unay_routes and calls .register(app, ns="a11oy") -> /api/a11oy/v2/unay/* +
126
+ # /api/a11oy/v2/khipu/lmdb/*. Real durable lmdb + real sqlite-vss (honest cosine-
127
+ # fallback if the .so cannot load in the slim image). a11oy carries Khipu-LMDB PRIMARY.
128
+ COPY szl_unay.py ./szl_unay.py
129
+ COPY szl_khipu_lmdb.py ./szl_khipu_lmdb.py
130
+ COPY szl_khipu_replicate.py ./szl_khipu_replicate.py
131
+ COPY szl_unay_routes.py ./szl_unay_routes.py
132
+ # ADDITIVE (Warhacker aliases, Yachay 2026-06-01): top-level /healthz + /khipu/* + /wires/D.
133
+ # Per-file COPY (no `COPY . .`) — without this `import szl_warhacker_aliases` fails.
134
+ COPY szl_warhacker_aliases.py ./szl_warhacker_aliases.py
135
+ # ADDITIVE (Hickok dual-stream ingest, 2026-06-01, Yachay / Perplexity Computer Agent):
136
+ # explicit per-file COPY (this Dockerfile does not use `COPY . .`). serve.py imports
137
+ # a11oy_v4_hickok and calls .register(app, ns="a11oy") -> POST /api/a11oy/v4/{dorsal,
138
+ # ventral,spt,when,what} + GET /api/a11oy/v4/stream (SSE) + GET /brain, plus the
139
+ # dual-stream router middleware on /agent/ask + /predict. Without this COPY the import
140
+ # fails and the routes fall through to the Node :8081 proxy (503). Every receipt carries
141
+ # neuro_citations[]. Anchors A36/A37/A38 (ts-only, honest `sorry` proofs). The three Lean
142
+ # anchor files (DualStreamRouting/InternalFeedback/HierarchicalLinearization.lean) arrive
143
+ # via the sparse-checkout of packages/policy/src/gates above (no explicit COPY needed).
144
+ # Grounded in Hickok & Poeppel 2007 (DOI 10.1038/nrn2113). Doctrine v11 LOCKED 749/14/163.
145
+ COPY a11oy_v4_hickok.py ./a11oy_v4_hickok.py
146
+
147
+ # ADDITIVE (Anatomy 3D + live formula wiring, 2026-06-02, Yachay / Perplexity
148
+ # Computer Agent): explicit per-file COPY (this Dockerfile does not use `COPY . .`).
149
+ # serve.py imports a11oy_v4_formulas (38-formula manifest + 15 live evaluators) and
150
+ # szl_anatomy_3d (7 sovereign Three.js r128 anatomy surfaces + 6 live JSON endpoints).
151
+ # szl_anatomy_3d self-serves Three.js at /anatomy-three.min.js from static-vendor/.
152
+ # Receipts sign via szl_dsse (already COPYed) using szl_khipu + szl_formulas. Without
153
+ # these COPYs the imports fail and the pages/endpoints fall through to the SPA shell.
154
+ # Doctrine v11 LOCKED 749/14/163. Lambda = Conjecture 1 (NOT a theorem). NO external CDN.
155
+ COPY szl_khipu.py ./szl_khipu.py
156
+ COPY szl_formulas.py ./szl_formulas.py
157
+ COPY a11oy_v4_formulas.py ./a11oy_v4_formulas.py
158
+ COPY web/formulas.html ./web/formulas.html
159
+ COPY static-vendor/three.min.js ./static-vendor/three.min.js
160
+ COPY szl_anatomy_3d.py ./szl_anatomy_3d.py
161
+
162
+ # ADDITIVE (V4 Fleet Panel + /api/health fix, 2026-06-02, Dev2 Inti):
163
+ # explicit per-file COPY (this Dockerfile does not use COPY . .).
164
+ # Signed-off-by: Yachay <yachay@szlholdings.ai>
165
+ # Co-Authored-By: Perplexity Computer Agent <agent@perplexity.ai>
166
+ # szl_v4_fleet.py: /api/health + /api/a11oy/v4/fleet[/doctrine] + /fleet + /thesis
167
+ # v4_fleet_panel.html: canonical fleet panel served at /fleet
168
+ # operator_shell_v4.py: Unified Operator Shell v4 endpoints (fix import failure)
169
+ # web/operator.html: operator shell desktop cockpit HTML
170
+ COPY szl_v4_fleet.py ./szl_v4_fleet.py
171
+ COPY web/v4_fleet_panel.html ./web/v4_fleet_panel.html
172
+ COPY operator_shell_v4.py ./operator_shell_v4.py
173
+ COPY web/operator.html ./web/operator.html
174
+
175
+ # ADDITIVE (Cross-Harness Receipt Bridge — Hermes + OpenClaw; 2026-06-01, Yachay /
176
+ # Perplexity Computer Agent; closeout PR superseding #198 runtime files). serve.py
177
+ # already imports szl_bridge + a11oy_v4_agent and calls .register(app) BEFORE the
178
+ # /api/a11oy/{path} Node proxy + SPA catch-all, but the bridge runtime modules were
179
+ # never COPY'd, so `import szl_bridge` failed at boot and POST /api/a11oy/v4/bridge/
180
+ # {hermes,openclaw} + GET /api/a11oy/v4/bridge/receipt/{id} + GET /bridge fell through
181
+ # to the SPA (404). Explicit per-file COPY (this Dockerfile never uses `COPY . .`).
182
+ # szl_bridge imports szl_bridge_schemas (JSON Schema 2020-12 tool registry) and reuses
183
+ # the already-COPY'd szl_dsse + szl_receipt_substrate signing/ledger modules. Doctrine
184
+ # v11 LOCKED 749/14/163 UNCHANGED.
185
+ COPY szl_bridge.py ./szl_bridge.py
186
+ COPY szl_bridge_schemas.py ./szl_bridge_schemas.py
187
+ COPY agent.html ./agent.html
188
+ # a11oy-bridge CLI (sign --from hermes/openclaw, verify --receipt-id). Standalone
189
+ # operator tool; not imported at boot but shipped so it is runnable in-container.
190
+ COPY a11oy_bridge_cli.py ./a11oy_bridge_cli.py
191
+
192
+
193
+ # ADDITIVE (SZL Ken Agent Pattern v1, CTO Yachay Convergence Cycle 1, 2026-06-03):
194
+ # Explicit per-file COPY of szl_ken.py (this Dockerfile never uses `COPY . .`).
195
+ # serve.py tries `import szl_ken` at startup; without this COPY the import fails
196
+ # silently and /v1/agent/loop + /v1/mcp/tools return 404 instead of 200.
197
+ # ADDITIVE ONLY — zero existing routes touched. Doctrine v11 LOCKED 749/14/163.
198
+ # Signed-off-by: Yachay <yachay@szlholdings.ai>
199
+ # Co-Authored-By: Perplexity Computer Agent <agent@perplexity.ai>
200
+ COPY szl_ken.py ./szl_ken.py
201
+
202
+
203
+ # ADDITIVE (Formulas → Ecosystem instillation, Opus 4.8, 2026-06-03):
204
+ # Per-file COPY of the a11oy.formulas package (this Dockerfile never uses `COPY . .`).
205
+ # serve.py imports a11oy_formula_endpoints, which imports a11oy.formulas.* — without
206
+ # these COPYs the import fails and /api/a11oy/v1/formula/* fall through to the SPA shell.
207
+ # Real implementations of PAC-Bayes, BLS12-381 aggregate, Welford, Byzantine quorum,
208
+ # Holevo, Bloom, Kalman, HNSW (amaru-delegate), Reidemeister. Each cites thesis_v22.pdf
209
+ # + a real Lean theorem/obligation. Λ = Conjecture 1 (NEVER a theorem). SLSA L1 honest
210
+ # + L2 attested (public Sigstore + Rekor verified for a11oy image).
211
+ # Signed-off-by: Yachay <yachay@szlholdings.ai>
212
+ # Co-Authored-By: Perplexity Computer Agent <agent@perplexity.ai>
213
+ COPY src/a11oy/__init__.py ./src/a11oy/__init__.py
214
+ COPY src/a11oy/formulas/__init__.py ./src/a11oy/formulas/__init__.py
215
+ COPY src/a11oy/formulas/pac_bayes.py ./src/a11oy/formulas/pac_bayes.py
216
+ COPY src/a11oy/formulas/bls_aggregate.py ./src/a11oy/formulas/bls_aggregate.py
217
+ COPY src/a11oy/formulas/welford.py ./src/a11oy/formulas/welford.py
218
+ COPY src/a11oy/formulas/byzantine_quorum.py ./src/a11oy/formulas/byzantine_quorum.py
219
+ COPY src/a11oy/formulas/holevo_bound.py ./src/a11oy/formulas/holevo_bound.py
220
+ COPY src/a11oy/formulas/bloom_filter.py ./src/a11oy/formulas/bloom_filter.py
221
+ COPY src/a11oy/formulas/kalman.py ./src/a11oy/formulas/kalman.py
222
+ COPY src/a11oy/formulas/hnsw_retrieval.py ./src/a11oy/formulas/hnsw_retrieval.py
223
+ COPY src/a11oy/formulas/reidemeister.py ./src/a11oy/formulas/reidemeister.py
224
+ COPY a11oy_formula_endpoints.py ./a11oy_formula_endpoints.py
225
+ # ADDITIVE (Formulas SECTION page — closeout): serve.py imports a11oy_formulas_page
226
+ # and calls .register(app) BEFORE the SPA catch-all, mounting GET /formulas/wired
227
+ # (premium Inca-palette list of every live formula + thesis citation + Lean permalink
228
+ # + "Try it") and GET /api/a11oy/v1/formulas/page-manifest. Per-file COPY (never
229
+ # `COPY . .`); without it the import fails and the route falls through to the SPA.
230
+ COPY a11oy_formulas_page.py ./a11oy_formulas_page.py
231
+
232
+ # ADDITIVE (Missing modules fix, 2026-06-04, Perplexity Computer Agent):
233
+ # The following .py files exist in the repo and are imported via try/except
234
+ # in serve.py, but were never COPY'd into the Docker image. Without them the
235
+ # imports fail silently and the associated routes/tabs are unavailable.
236
+ # Per-file COPY (this Dockerfile never uses `COPY . .`).
237
+ # Signed-off-by: Stephen P. Lutar Jr. <stephenlutar2@gmail.com>
238
+ COPY a11oy_frontier_patch.py ./a11oy_frontier_patch.py
239
+ COPY a11oy_v4_agent.py ./a11oy_v4_agent.py
240
+ COPY szl_brain.py ./szl_brain.py
241
+ COPY szl_wire.py ./szl_wire.py
242
+ COPY szl_hub.py ./szl_hub.py
243
+ COPY szl_rosie_companion.py ./szl_rosie_companion.py
244
+
245
+ CMD ["python", "serve.py"]
246
+
247
+
248
+ # Build cache-bust 2026-06-03T18:37Z (HF Real Verify Squad): force fresh build after
249
+ # adding web/v4_fleet_panel.html so the 38-tab consolidated SPA bundle finally deploys.