<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged xbox</title>
<link>https://coderlegion.com/tag/xbox</link>
<description>Powered by Question2Answer</description>
<item>
<title>I Tried to Build Persistent Compute on an Xbox SSD. The Failed Tests Changed the Architecture.</title>
<link>https://coderlegion.com/30863/tried-to-build-persistent-compute-on-an-xbox-ssd-the-failed-tests-changed-the-architecture</link>
<description>&lt;p&gt;The Xbox wrote 8 GiB of persistent data.&lt;/p&gt;
&lt;p&gt;I still couldn't call the experiment successful.&lt;/p&gt;
&lt;p&gt;The bytes were there, but the operation failed because a completely different part of the system had timed out. In another test, the worker correctly refused to allocate more storage even though its configuration technically allowed a much larger workload.&lt;/p&gt;
&lt;p&gt;Eventually, the experiment passed. But getting there required much more than writing files to an SSD.&lt;/p&gt;
&lt;p&gt;I had to investigate how Xbox processes share resources, build a separate coordination component, introduce a recoverable page store, survive real application restarts, and learn which failures were bugs and which were legitimate platform boundaries.&lt;/p&gt;
&lt;p&gt;This is one of the experiments behind XCP that I hadn't explored in the previous articles.&lt;/p&gt;
&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/danielecangi/series/44781&quot;&gt;five-part XCP series&lt;/a&gt; ended with the platform becoming open source. This bonus chapter goes back into the original Xbox research to explain how I approached persistent computation inside the Developer Mode sandbox.&lt;/p&gt;
&lt;h3 id=&quot;the-problem-wasn-t-just-memory-capacity&quot;&gt;The problem wasn't just memory capacity&lt;/h3&gt;
&lt;p&gt;In the earlier experiments, XCP measured an application memory budget of 5 GiB in one Xbox Series X Developer Mode configuration.&lt;/p&gt;
&lt;p&gt;That was useful. It gave us an actual resource boundary for the worker rather than a number inferred from the console's hardware specifications.&lt;/p&gt;
&lt;p&gt;But it also raised another question.&lt;/p&gt;
&lt;p&gt;What happens when the work I want to execute is larger than the memory I can keep resident?&lt;/p&gt;
&lt;p&gt;I wasn't trying to bypass the sandbox or convince the Xbox that its SSD was additional physical RAM.&lt;/p&gt;
&lt;p&gt;I wanted to build something different: an execution system that could keep data and completed work in persistent storage, bring bounded pieces into memory, process them, and continue from a valid checkpoint after an interruption.&lt;/p&gt;
&lt;p&gt;Before building the storage layer, though, I had another hypothesis to investigate.&lt;/p&gt;
&lt;p&gt;Could a second process help?&lt;/p&gt;
&lt;h3 id=&quot;first-i-investigated-the-xbox-process-model&quot;&gt;First, I investigated the Xbox process model&lt;/h3&gt;
&lt;p&gt;XCP already had a foreground worker capable of running CPU and GPU workloads.&lt;/p&gt;
&lt;p&gt;I wanted to understand whether another process inside the same UWP package could perform useful background coordination without consuming the worker's entire resource budget.&lt;/p&gt;
&lt;p&gt;The candidate was an out-of-process App Service.&lt;/p&gt;
&lt;p&gt;On desktop Windows, creating another process might seem straightforward. On Xbox Developer Mode, I wasn't going to assume that the desktop behavior applied unchanged.&lt;/p&gt;
&lt;p&gt;So I started measuring.&lt;/p&gt;
&lt;p&gt;The first live probes established that the worker and an auxiliary App Service could run with distinct process and activation identities. They exchanged messages, maintained independent heartbeat activity and retained touched, verified memory during overlapping execution windows.&lt;/p&gt;
&lt;p&gt;That was already useful.&lt;/p&gt;
&lt;p&gt;But it did not prove that we had discovered a second independent 5 GiB memory budget.&lt;/p&gt;
&lt;p&gt;To investigate properly, I built an eleven-phase matrix covering CPU execution, verified GPU execution, simultaneous activity, progressive memory pressure, bidirectional storage visibility, suspension, termination, restart, redeployment and cleanup.&lt;/p&gt;
&lt;p&gt;And this is where the testing started getting complicated.&lt;/p&gt;
&lt;h4 id=&quot;the-first-failures-weren-t-even-storage-failures&quot;&gt;The first failures weren't even storage failures&lt;/h4&gt;
&lt;p&gt;Worker &lt;code&gt;.150&lt;/code&gt; reached the Xbox but exposed incomplete measurement data. It could report IPC latency summaries, yet the acceptance contract required the underlying distribution, including median, p95 and bidirectional throughput.&lt;/p&gt;
&lt;p&gt;There was no legitimate way to reconstruct missing measurements afterward.&lt;/p&gt;
&lt;p&gt;So that run remained diagnostic.&lt;/p&gt;
&lt;p&gt;Worker &lt;code&gt;.151&lt;/code&gt; produced another interesting failure: &lt;strong&gt;79 of 81 preflight checks passed&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The two failures came from heartbeat validation.&lt;/p&gt;
&lt;p&gt;The foreground heartbeat ran at 25 ms intervals. The auxiliary broker used a 100 ms timer. During an approximately 935 ms observation window, the broker produced nine ticks.&lt;/p&gt;
&lt;p&gt;The test incorrectly expected 32 because it had reused the foreground count.&lt;/p&gt;
&lt;p&gt;The broker wasn't failing to run. Our expectation was wrong.&lt;/p&gt;
&lt;p&gt;That candidate stayed failed, and the next version corrected the measurement contract.&lt;/p&gt;
&lt;p&gt;Worker &lt;code&gt;.152&lt;/code&gt; passed the preflight, but memory-pressure testing exposed another gap. The Xbox refused a bounded allocation, yet the error didn't carry enough structured information to establish the responsible component, observed headroom, applied reserve and cleanup outcome.&lt;/p&gt;
&lt;p&gt;A text error saying that memory allocation failed wasn't sufficient to classify the platform behavior.&lt;/p&gt;
&lt;p&gt;Worker &lt;code&gt;.153&lt;/code&gt; added the missing observations.&lt;/p&gt;
&lt;p&gt;The completed matrix passed all eleven phases, retaining fourteen actual attempts in its evidence history.&lt;/p&gt;
&lt;p&gt;The separate classification step selected &lt;strong&gt;Case B: a distinct but resource-limited useful process&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;That result changed the design.&lt;/p&gt;
&lt;p&gt;I didn't have evidence for a second large compute process. But I had enough evidence for a small coordination service.&lt;/p&gt;
&lt;p&gt;That was what I built.&lt;/p&gt;
&lt;h3 id=&quot;the-second-process-became-a-coordinator&quot;&gt;The second process became a coordinator&lt;/h3&gt;
&lt;p&gt;Instead of creating another general-purpose worker, I gave the auxiliary process a narrower responsibility.&lt;/p&gt;
&lt;p&gt;It could participate in lifecycle observation, heartbeat management and storage reservations.&lt;/p&gt;
&lt;p&gt;The main worker still controlled execution admission, semantic verification, recovery authorization and final result publication.&lt;/p&gt;
&lt;p&gt;This separation mattered because the broker could disappear and restart independently.&lt;/p&gt;
&lt;p&gt;A reservation could not simply be assumed valid because some old record said it existed.&lt;/p&gt;
&lt;p&gt;The worker had to validate the reservation identity, generation and storage plan before accepting new work.&lt;/p&gt;
&lt;p&gt;Worker &lt;code&gt;.154&lt;/code&gt; tested this arrangement on the physical Xbox.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;55 of 55 checks passed, with zero violations.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The useful result wasn't more RAM.&lt;/p&gt;
&lt;p&gt;It was an operational coordination mechanism on which persistent computation could be built.&lt;/p&gt;
&lt;h3 id=&quot;next-i-needed-storage-that-could-survive-failure&quot;&gt;Next, I needed storage that could survive failure&lt;/h3&gt;
&lt;p&gt;Writing a file is easy compared with deciding whether that file represents completed computation.&lt;/p&gt;
&lt;p&gt;Imagine a workload producing hundreds of output pages.&lt;/p&gt;
&lt;p&gt;The application writes a page, updates some metadata, and then disappears.&lt;/p&gt;
&lt;p&gt;After restarting, which pages can be trusted?&lt;/p&gt;
&lt;p&gt;Did a page finish writing? Does its recorded hash match the bytes? Was its journal entry committed? Can the computation resume from that point without silently skipping or duplicating work?&lt;/p&gt;
&lt;p&gt;For XCP, I built the storage system around content-addressed data and an append-only journal.&lt;/p&gt;
&lt;p&gt;Each committed page had an identity derived from its content. The journal recorded ordered transitions, with records linked through hashes.&lt;/p&gt;
&lt;p&gt;A page was not considered committed just because its file existed.&lt;/p&gt;
&lt;p&gt;The system had to verify the relevant content and metadata before including it in the committed sequence.&lt;/p&gt;
&lt;p&gt;Recovery worked from the longest valid committed prefix. Anything beyond that boundary could not silently become trusted state.&lt;/p&gt;
&lt;p&gt;That approach allowed the runtime to distinguish a completed checkpoint from bytes left behind by an interrupted operation.&lt;/p&gt;
&lt;h4 id=&quot;then-i-tried-breaking-it&quot;&gt;Then I tried breaking it&lt;/h4&gt;
&lt;p&gt;Worker &lt;code&gt;.155&lt;/code&gt; exercised the page store and recovery system on Xbox.&lt;/p&gt;
&lt;p&gt;The tests included truncated journal entries, corrupted hashes, missing pages, incomplete root manifests, conflicting page identities, exhausted quotas, stale reservations and repeated cleanup.&lt;/p&gt;
&lt;p&gt;The live campaign also tested recovery after worker restart, auxiliary restart and package redeployment.&lt;/p&gt;
&lt;p&gt;One deployment experiment uncovered an unexpected problem.&lt;/p&gt;
&lt;p&gt;An in-place installation using the same package version left the application running, but Xbox Network Isolation silently dropped the inbound worker connection.&lt;/p&gt;
&lt;p&gt;The correction was not to pretend the storage operation had succeeded.&lt;/p&gt;
&lt;p&gt;We used a clean uninstall with application data preserved, reinstalled the exact package, restored connectivity and verified that the committed storage root had survived.&lt;/p&gt;
&lt;p&gt;The complete &lt;code&gt;.155&lt;/code&gt; campaign eventually passed &lt;strong&gt;248 of 248 checks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;At this point I had a storage substrate capable of preserving committed data through the tested failure and lifecycle scenarios.&lt;/p&gt;
&lt;p&gt;But I still hadn't demonstrated useful persistent computation.&lt;/p&gt;
&lt;p&gt;That required the next experiment.&lt;/p&gt;
&lt;h3 id=&quot;running-computation-through-persistent-storage&quot;&gt;Running computation through persistent storage&lt;/h3&gt;
&lt;p&gt;For the first workload, I reused an existing XCP test called &lt;em&gt;Provable Worlds&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;It produces a deterministic field of 1024 × 1024 unsigned 32-bit values.&lt;/p&gt;
&lt;p&gt;The complete result is only 4 MiB.&lt;/p&gt;
&lt;p&gt;That may sound small for an SSD experiment, but this test wasn't intended to prove beyond-RAM scale yet.&lt;/p&gt;
&lt;p&gt;I wanted to establish that computation could be divided into independently checked units, committed in order, interrupted and resumed correctly.&lt;/p&gt;
&lt;p&gt;The field was divided into &lt;strong&gt;256 tiles of 16 KiB each&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Each tile had a known global position in the output. The signed CPU Capsule could compute its bounded portion, and XCP compared that result against the CPU reference.&lt;/p&gt;
&lt;p&gt;The runtime used bounded output buffers rather than requiring the complete result to stay resident.&lt;/p&gt;
&lt;p&gt;The important condition was that the durable cursor advanced only after a page had been committed successfully.&lt;/p&gt;
&lt;h4 id=&quot;the-first-uninterrupted-runs-passed-restart-failed-&quot;&gt;The first uninterrupted runs passed. Restart failed.&lt;/h4&gt;
&lt;p&gt;Worker &lt;code&gt;.156&lt;/code&gt; completed two uninterrupted executions.&lt;/p&gt;
&lt;p&gt;Then I tested the restart path.&lt;/p&gt;
&lt;p&gt;Both real-restart resume attempts failed.&lt;/p&gt;
&lt;p&gt;The problem was the reservation lifecycle.&lt;/p&gt;
&lt;p&gt;After the foreground interruption, the system attempted to continue using the old coordinator lease. But that lease belonged to the previous activation.&lt;/p&gt;
&lt;p&gt;This contradicted what the earlier process-topology experiments had already shown.&lt;/p&gt;
&lt;p&gt;Persistent data could survive the interruption.&lt;/p&gt;
&lt;p&gt;A live process reservation could not be treated the same way.&lt;/p&gt;
&lt;p&gt;So I separated those two concepts.&lt;/p&gt;
&lt;p&gt;The committed journal retained its original storage identity and generation. A resumed worker had to obtain a &lt;strong&gt;fresh live reservation&lt;/strong&gt;, with a newer generation, and reauthorize the persisted work before continuing.&lt;/p&gt;
&lt;p&gt;Worker &lt;code&gt;.157&lt;/code&gt; implemented that correction.&lt;/p&gt;
&lt;p&gt;The test deliberately committed the first 128 tiles, computed the next tile without committing it, and interrupted execution.&lt;/p&gt;
&lt;p&gt;After the real restart, the worker verified the committed prefix, skipped those first 128 tiles and computed the remaining 128.&lt;/p&gt;
&lt;p&gt;It reproduced the expected final field hash.&lt;/p&gt;
&lt;p&gt;The uninterrupted tests, restart/resume path, cleanup and same-package regression checks passed.&lt;/p&gt;
&lt;p&gt;XCP admitted that specific bounded persistent-compute capability.&lt;/p&gt;
&lt;p&gt;One distinction is worth keeping: the tiled execution used the signed CPU Capsule, not a newly implemented GPU-tiled engine. The existing GPU path was checked separately. Nor did this test demonstrate performance gains from asynchronous I/O overlap.&lt;/p&gt;
&lt;p&gt;It demonstrated correct bounded computation and recovery.&lt;/p&gt;
&lt;p&gt;Now I wanted to investigate the storage scale.&lt;/p&gt;
&lt;h3 id=&quot;eight-gigabytes-and-another-failed-experiment&quot;&gt;Eight gigabytes, and another failed experiment&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/qnntqurx0dxo2jvtwvkc.png&quot; alt=&quot;Conceptual illustration of XCP persistent storage research on Xbox Series X, showing an 8 GiB SSD experiment, verified data pages, recovery tests and a successful result.&quot;&gt;&lt;/p&gt;
&lt;p&gt;For the scale test, I moved to a different page geometry.&lt;/p&gt;
&lt;p&gt;Instead of the 16 KiB computation tiles, the storage characterization used &lt;strong&gt;4 MiB pages&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The target was 8 GiB: exactly 2,048 pages.&lt;/p&gt;
&lt;p&gt;I also defined a progression through 256 MiB, 512 MiB, 1 GiB, 2 GiB, 4 GiB and finally 8 GiB.&lt;/p&gt;
&lt;p&gt;The data was generated deterministically, with page-specific content, so the test could verify distinct pages without treating a single repeated blob as proof of physical growth.&lt;/p&gt;
&lt;p&gt;And there was a safety condition: the operation had to preserve &lt;strong&gt;16 GiB of reported available storage&lt;/strong&gt; as a reserve.&lt;/p&gt;
&lt;p&gt;Then came worker &lt;code&gt;.158&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The worker materialized the full 8 GiB.&lt;/p&gt;
&lt;p&gt;But the operation failed.&lt;/p&gt;
&lt;p&gt;After more than 163 seconds of storage work, the coordinator attempted to release its reservation using an IPC deadline that had been established at the beginning of the operation.&lt;/p&gt;
&lt;p&gt;That deadline was only 30 seconds.&lt;/p&gt;
&lt;p&gt;The data had been written, but the protocol could no longer complete the operation correctly.&lt;/p&gt;
&lt;p&gt;This was not an accepted result.&lt;/p&gt;
&lt;p&gt;I corrected the lease-release timeout handling, added an explicit cleanup path for the failed run and tested again.&lt;/p&gt;
&lt;p&gt;Worker &lt;code&gt;.159&lt;/code&gt; successfully committed all 2,048 pages.&lt;/p&gt;
&lt;p&gt;The measured seed operation took approximately 164 seconds.&lt;/p&gt;
&lt;p&gt;That is an end-to-end operation time, including page generation, hashing, storage and journal work. It isn't a raw SSD throughput benchmark.&lt;/p&gt;
&lt;p&gt;But &lt;code&gt;.159&lt;/code&gt; was not the final success either.&lt;/p&gt;
&lt;h4 id=&quot;the-64-gib-attempt-was-refused&quot;&gt;The 64 GiB attempt was refused&lt;/h4&gt;
&lt;p&gt;The broader storage policy allowed much larger declared reservations, so I also tested what happened when the system attempted to continue beyond the 8 GiB seed.&lt;/p&gt;
&lt;p&gt;The remaining planned growth was 56 GiB.&lt;/p&gt;
&lt;p&gt;The platform-reported filesystem space was nowhere near sufficient for that growth plus the required 16 GiB safety reserve.&lt;/p&gt;
&lt;p&gt;The worker returned:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;STORAGE_SCALE_PLATFORM_HEADROOM_REFUSED&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And crucially, it refused &lt;strong&gt;before writing additional data&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The existing workspace remained unchanged. Cleanup subsequently removed the 8 GiB seed and a second cleanup confirmed that the namespace was already absent.&lt;/p&gt;
&lt;p&gt;This result did not establish that the Xbox SSD had a 64 GiB limit, or that the entire physical SSD was visible to the application.&lt;/p&gt;
&lt;p&gt;The application had observed a much smaller storage filesystem, approximately 32.2 billion bytes of reported capacity in that test.&lt;/p&gt;
&lt;p&gt;The configured storage quota was not the same as actual platform capacity.&lt;/p&gt;
&lt;p&gt;The refusal was correct.&lt;/p&gt;
&lt;p&gt;Instead of trying to force a larger allocation, I froze the demonstrated 8 GiB size as the target for the final characterization.&lt;/p&gt;
&lt;h3 id=&quot;the-result-worker-0-1-160-0&quot;&gt;The result: worker 0.1.160.0&lt;/h3&gt;
&lt;p&gt;Worker &lt;code&gt;.160&lt;/code&gt; was built and signed as a new exact package and tested on the physical Xbox.&lt;/p&gt;
&lt;p&gt;This time, the process completed the full storage lifecycle.&lt;/p&gt;
&lt;p&gt;It committed 2,048 distinct 4 MiB pages, totaling 8 GiB, then released the reservation.&lt;/p&gt;
&lt;p&gt;I returned to the Xbox Home screen and resumed the worker without power-cycling the console.&lt;/p&gt;
&lt;p&gt;The resumed worker obtained a fresh reservation generation, recovered the persisted namespace, reread and rehashed the complete 8 GiB, and committed the ordered root without allocating another storage rung.&lt;/p&gt;
&lt;p&gt;A separate verification operation then read the complete data again under another fresh lease and reproduced the same root identity.&lt;/p&gt;
&lt;p&gt;Finally, cleanup removed the 2,048 unreferenced blobs and all 8 GiB of their content.&lt;/p&gt;
&lt;p&gt;A second cleanup found nothing left to remove.&lt;/p&gt;
&lt;p&gt;The complete &lt;code&gt;.160&lt;/code&gt; lifecycle passed its checks.&lt;/p&gt;
&lt;p&gt;That was the accepted storage-scale result.&lt;/p&gt;
&lt;p&gt;Not 64 GiB. Not the console's full SSD. Not virtual RAM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eight GiB of bounded, recoverable, content-verified persistent storage, measured through the actual Xbox worker lifecycle.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-this-proves-and-what-it-doesn-t&quot;&gt;What this proves, and what it doesn't&lt;/h3&gt;
&lt;p&gt;The completed experiments establish two related capabilities.&lt;/p&gt;
&lt;p&gt;First, XCP demonstrated a persistent-compute workflow in which deterministic tiled execution could survive a real worker interruption, verify previous committed work and resume without recomputing the valid prefix.&lt;/p&gt;
&lt;p&gt;Second, it demonstrated an 8 GiB persistent storage namespace with recovery, full-root verification and cleanup on the physical Xbox.&lt;/p&gt;
&lt;p&gt;These were separate tests.&lt;/p&gt;
&lt;p&gt;The 4 MiB computation experiment did not prove that an arbitrary dataset larger than RAM could be processed end to end.&lt;/p&gt;
&lt;p&gt;The 8 GiB storage experiment did not prove an 8 GiB GPU or CPU workload, transparent paging, unrestricted SSD access or a performance-optimized streaming engine.&lt;/p&gt;
&lt;p&gt;In fact, the recorded streaming runtime exposed no measured prefetch/compute overlap advantage. The bounded buffers, ordered commits and recovery path were the capabilities being established.&lt;/p&gt;
&lt;p&gt;Combining those pieces into larger real workloads is further engineering work, not something I can claim was already completed.&lt;/p&gt;
&lt;p&gt;But the distinction between demonstrated components and future integration doesn't make the result less interesting.&lt;/p&gt;
&lt;p&gt;It tells me which parts of the problem are actually solved.&lt;/p&gt;
&lt;h3 id=&quot;why-the-failed-tests-mattered-more-than-the-number&quot;&gt;Why the failed tests mattered more than the number&lt;/h3&gt;
&lt;p&gt;Looking back, there wasn't one dramatic failure.&lt;/p&gt;
&lt;p&gt;There were several small, independent ones.&lt;/p&gt;
&lt;p&gt;The auxiliary process existed, but didn't prove an independent memory budget.&lt;/p&gt;
&lt;p&gt;The heartbeat worked, but the test expected the wrong number of ticks.&lt;/p&gt;
&lt;p&gt;Memory pressure produced a refusal, but not enough structured evidence to classify it.&lt;/p&gt;
&lt;p&gt;The storage layer survived, but an installation sequence disrupted the worker connection.&lt;/p&gt;
&lt;p&gt;Computation succeeded uninterrupted, but couldn't resume under the old lease.&lt;/p&gt;
&lt;p&gt;Eight gigabytes were written, but the IPC timeout invalidated the operation.&lt;/p&gt;
&lt;p&gt;And a larger storage request was refused because the available space could not satisfy the reserve.&lt;/p&gt;
&lt;p&gt;Each result forced a different correction.&lt;/p&gt;
&lt;p&gt;Some changed the implementation. Some changed the measurement contract. One changed the resource-topology decision. Another changed the scale we were prepared to claim.&lt;/p&gt;
&lt;p&gt;I think this is one of the most interesting aspects of XCP.&lt;/p&gt;
&lt;p&gt;It didn't become more capable by assuming the Xbox restrictions were irrelevant.&lt;/p&gt;
&lt;p&gt;It became more capable by discovering which capabilities could be combined reliably inside those restrictions.&lt;/p&gt;
&lt;p&gt;The result was not a magic way to make SSD behave like RAM.&lt;/p&gt;
&lt;p&gt;It was a storage and recovery architecture that allows computation to have a durable history independent of the process that produced it.&lt;/p&gt;
&lt;h3 id=&quot;the-code-is-now-open-source&quot;&gt;The code is now open source&lt;/h3&gt;
&lt;p&gt;The original Xbox experiments were performed in the historical XCP research environment.&lt;/p&gt;
&lt;p&gt;The public repository contains reconstructed reference implementations and the source needed to inspect the design, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox/blob/main/reference/xcompute-probe/src/XComputeProbe/runtime/WorkerContentAddressedStoreRecovery.cpp&quot;&gt;Content-addressed storage and recovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox/blob/main/reference/xcompute-probe/src/XComputeProbe/runtime/WorkerProvableWorldsStreamingRuntime.cpp&quot;&gt;Persistent tiled compute runtime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox/blob/main/reference/xcompute-probe/src/XComputeProbe/runtime/WorkerStorageScaleCharacterizationRuntime.cpp&quot;&gt;8 GiB storage characterization runtime&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The distinction between the original historical results and the newly reconstructed development packages remains important.&lt;/p&gt;
&lt;p&gt;The public source lets developers inspect and rebuild the relevant components. The historical hardware results belong to their original package versions and evidence records.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Newly reconstructed packages do not automatically inherit those physical-Xbox results.&lt;/strong&gt; They require their own device validation.&lt;/p&gt;
&lt;p&gt;That boundary is explained in the &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox/blob/main/docs/RECONSTRUCTION_AUDIT.md&quot;&gt;public reconstruction audit&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;beyond-the-ssd-experiment&quot;&gt;Beyond the SSD experiment&lt;/h3&gt;
&lt;p&gt;XCP started as an attempt to make an Xbox Series X a programmable execution target.&lt;/p&gt;
&lt;p&gt;The project eventually expanded into a virtual machine, CPU/GPU execution, agent-driven development, a desktop studio and tools for adapting and building software.&lt;/p&gt;
&lt;p&gt;The SSD experiments explored another necessary part of that picture.&lt;/p&gt;
&lt;p&gt;A useful execution target needs more than the ability to run a program once.&lt;/p&gt;
&lt;p&gt;It needs a way to preserve work, recover from interruption and continue under a new execution context without pretending that the old one still exists.&lt;/p&gt;
&lt;p&gt;The most valuable result of this experiment wasn't the eight-gigabyte figure by itself.&lt;/p&gt;
&lt;p&gt;It was the realization that &lt;strong&gt;the lifetime of a computation does not have to be identical to the lifetime of the process executing it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;On this particular Xbox, we demonstrated some concrete parts of that idea.&lt;/p&gt;
&lt;p&gt;And as with the rest of XCP, the next meaningful step is to take those capabilities into a more demanding workload and find out where they stop being sufficient.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;XCP is open source&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox&quot;&gt;https://github.com/Daniele-Cangi/xcp-xbox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;XCP Studio: &lt;a rel=&quot;nofollow&quot; href=&quot;https://xcpstudio.com/&quot;&gt;https://xcpstudio.com/&lt;/a&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30863/tried-to-build-persistent-compute-on-an-xbox-ssd-the-failed-tests-changed-the-architecture</guid>
<pubDate>Mon, 12 Oct 2026 21:54:26 +0000</pubDate>
</item>
<item>
<title>XCP: From an Xbox Experiment to an Open Development Platform</title>
<link>https://coderlegion.com/30262/xcp-from-an-xbox-experiment-to-an-open-development-platform</link>
<description>&lt;p&gt;XCP — Chapter 5&lt;br&gt;
In the previous chapters, I wrote about turning an Xbox Series X into a programmable execution target, building a virtual machine inside its sandbox, connecting AI coding agents to real hardware, and measuring the memory and GPU capabilities available in Developer Mode.&lt;/p&gt;
&lt;p&gt;Those articles explained individual parts of XCP. This final chapter is about what they were all leading toward.&lt;/p&gt;
&lt;p&gt;The goal was never simply to run AI-generated code on an Xbox. The goal was to build a development platform around the console, one that independent developers could eventually extend with familiar tools, engines and frameworks.&lt;/p&gt;
&lt;p&gt;That distinction matters because XCP now contains considerably more than the compute worker that started the experiment.&lt;/p&gt;
&lt;p&gt;It includes a programmable runtime, a desktop development environment, an execution and evidence system, Godot adaptation research, a native graphics pipeline and procedural worlds generated from WorldLoop.&lt;/p&gt;
&lt;p&gt;Each of those components grew out of a practical experiment. Together, they suggest a different way of approaching console development.&lt;/p&gt;
&lt;p&gt;From hardware research to a development platform&lt;br&gt;
The first question was relatively simple: how much useful computation could we perform on an Xbox Series X without bypassing its security model?&lt;/p&gt;
&lt;p&gt;XCP began inside the supported Developer Mode application sandbox. We explored memory allocation, persistent storage, CPU execution, GPU compute, graphics rendering and communication with a development PC.&lt;/p&gt;
&lt;p&gt;Those experiments produced measurable results, including a 5 GiB application memory budget in one tested configuration and more than 7.7 TFLOP/s in a bounded FP32 shader workload. We also built XVM, a verifiable execution environment capable of running admitted programs and returning structured execution evidence.&lt;/p&gt;
&lt;p&gt;But the more interesting possibility emerged after those foundations were working.&lt;/p&gt;
&lt;p&gt;We already had a console that could receive structured work, execute it, report its state and preserve a history of what happened. The next logical step was to use that infrastructure for complete software projects rather than isolated compute workloads.&lt;/p&gt;
&lt;p&gt;That decision changed XCP from a hardware research project into a creative-platform project.&lt;/p&gt;
&lt;p&gt;Three Godot games, three different problems&lt;br&gt;
One of the most important parts of the original XCP research was adapting existing Godot projects into bounded, playable experiences on the Xbox.&lt;/p&gt;
&lt;p&gt;Rather than using a single demonstration designed specifically for the platform, we worked with three substantially different games.&lt;/p&gt;
&lt;p&gt;Blokki — a 2D puzzle&lt;br&gt;
Blokki gave us a compact starting point for testing scene interpretation, grid interaction, controller input and gameplay feedback.&lt;/p&gt;
&lt;p&gt;The adaptation translated pointer-based interactions into a controller-driven grid, replaced some presentation elements with procedural drawing and preserved a bounded playable puzzle loop.&lt;/p&gt;
&lt;p&gt;The Xbox playability checks covered rendering, controller response, valid and invalid action feedback, and the usability of the interaction loop.&lt;/p&gt;
&lt;p&gt;Minedot — a 3D voxel-style sandbox&lt;br&gt;
Minedot introduced a different class of problems: a 3D environment, camera navigation, spatial interaction and mining or placing blocks.&lt;/p&gt;
&lt;p&gt;Its playable reconstruction used the left stick for movement, the right stick for looking around and bounded controller actions for interacting with the world.&lt;/p&gt;
&lt;p&gt;Some source dependencies were incomplete, so the Xbox implementation used declared substitutions rather than pretending that the original game had been reproduced completely.&lt;/p&gt;
&lt;p&gt;The resulting bounded experience was tested on physical hardware, including movement, camera control, interaction feedback and visual usability.&lt;/p&gt;
&lt;p&gt;Open RTS — a more complex 3D strategy game&lt;br&gt;
Open RTS pushed the experiment further.&lt;/p&gt;
&lt;p&gt;This time the adaptation involved a strategy environment with unit selection, movement, combat, interface visibility and a victory condition.&lt;/p&gt;
&lt;p&gt;The first physical test exposed presentation problems. Rather than simply accepting a successful launch, we corrected the interface behavior and performed another test.&lt;/p&gt;
&lt;p&gt;The revised version passed its bounded playability checks, including selection, movement, combat and victory feedback.&lt;/p&gt;
&lt;p&gt;Across these three projects, the research recorded 3/3 bounded playable reconstructions, 15/15 human playability checks and 17 captures.&lt;/p&gt;
&lt;p&gt;These results do not establish full source equivalence or universal Godot compatibility. The reconstructions used explicit substitutions, and additional work remains before an arbitrary Godot project can pass through the system without project-specific adaptation.&lt;/p&gt;
&lt;p&gt;What they do establish is that the approach was exercised across a 2D puzzle, a voxel-style 3D sandbox and a more complex 3D strategy game on real Xbox hardware.&lt;/p&gt;
&lt;p&gt;That is a useful foundation for developing reusable engine adapters instead of continuing to create isolated ports.&lt;/p&gt;
&lt;p&gt;Forge: when WorldLoop met Xbox&lt;br&gt;
Godot adaptation was not the only creative experiment.&lt;/p&gt;
&lt;p&gt;Another branch of the original research connected XCP with WorldLoop, my procedural CAD and world-generation project.&lt;/p&gt;
&lt;p&gt;WorldLoop was originally developed around procedural construction and scene generation. Buildings, structural relationships and larger environments could be generated from structured rules rather than manually assembled one object at a time.&lt;/p&gt;
&lt;p&gt;I wanted to see whether that same approach could produce content for a completely different execution environment.&lt;/p&gt;
&lt;p&gt;This led to Forge Protocol, a native Xbox graphics and gameplay experiment using Direct3D 11.&lt;/p&gt;
&lt;p&gt;The important architectural decision was to keep generation on the development PC. WorldLoop produced structured environments, which were then compiled into bounded native assets that the Xbox application could load and render.&lt;/p&gt;
&lt;p&gt;The console did not need to run the original generator or its development dependencies.&lt;/p&gt;
&lt;p&gt;The pipeline was approximately:&lt;/p&gt;
&lt;p&gt;WorldLoop procedural generation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;         |
         v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  Structured world + geometry&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;         |
         v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;   PC-side asset compilation&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;         |
         v
Forge scene bundle
         |
         v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;   Xbox native D3D11 runtime&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;         |
         v
Rendering + gameplay
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The experiments progressed beyond simple geometry.&lt;/p&gt;
&lt;p&gt;Orbital Forge Alpha demonstrated a WorldLoop-generated scene on Xbox, while Orbital Forge Beta expanded the environment into thousands of render parts, multiple placed structures, roads, structural relationships and a larger native scene bundle.&lt;/p&gt;
&lt;p&gt;The Beta world contained 2,364 render parts and compiled into 56,736 vertices and 28,368 triangles. It was installed and launched on the physical Xbox, with further iterations addressing scene scale, composition and gameplay readability.&lt;/p&gt;
&lt;p&gt;This mattered for a reason beyond the visual result.&lt;/p&gt;
&lt;p&gt;The same console execution target was receiving content from a procedural world generator that had not originally been designed for Xbox.&lt;/p&gt;
&lt;p&gt;Forge was not proof that every procedural engine could automatically run on the platform. It demonstrated one workable boundary between external generation and a native console runtime.&lt;/p&gt;
&lt;p&gt;For XCP, that boundary is important. Different authoring environments should not necessarily require completely separate execution infrastructures.&lt;/p&gt;
&lt;p&gt;XCP Studio: one project, shared by humans and agents&lt;br&gt;
The next part of the platform was the development experience.&lt;/p&gt;
&lt;p&gt;XCP Studio was designed as a Windows desktop environment where a developer, a visual interface and an AI coding agent can operate against the same project representation.&lt;/p&gt;
&lt;p&gt;Rather than giving each interface its own interpretation of the software, the project has a shared structure and explicit contracts.&lt;/p&gt;
&lt;p&gt;A project can declare its modules, assets, required capabilities and runtime configuration. XCP validates these declarations against the capabilities actually exposed by the execution target.&lt;/p&gt;
&lt;p&gt;The development cycle is:&lt;/p&gt;
&lt;p&gt;Developer / coding agent&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;       |
       v
Editable XCP project
       |
       v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;   Validate + build bundle&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;       |
       v
 Install on Xbox
       |
       v
Launch + interact
       |
       v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;   Observe + capture evidence&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;       |
       v
 Revise or rollback
       |
       +------&amp;gt; Next iteration
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The desktop environment is not merely a dashboard for a worker.&lt;/p&gt;
&lt;p&gt;It is intended to become the place where software is created, adapted, tested and evolved.&lt;/p&gt;
&lt;p&gt;The original research has already measured an end-to-end XCP Studio Technical Preview workflow on physical Xbox hardware, including project validation, installation, activation, launch, interaction and capture.&lt;/p&gt;
&lt;p&gt;The packaged preview still requires further clean-machine validation and release preparation. It should not be confused with a generally available finished product.&lt;/p&gt;
&lt;p&gt;Nevertheless, the essential development loop has been exercised.&lt;/p&gt;
&lt;p&gt;Why this could matter commercially&lt;br&gt;
There is a practical audience for a platform like this: independent developers, small studios, technical artists, researchers and people who want to experiment with interactive software on real console hardware.&lt;/p&gt;
&lt;p&gt;For many of them, the difficult part is not necessarily writing the first prototype. It is managing the gap between a familiar development environment and the constraints of a different execution target.&lt;/p&gt;
&lt;p&gt;A useful platform could reduce that gap.&lt;/p&gt;
&lt;p&gt;Imagine creating a small project with an existing engine, adapting it through a community-maintained integration, running it on an Xbox in Developer Mode and receiving structured feedback from the actual device.&lt;/p&gt;
&lt;p&gt;The developer could then revise the same project and repeat the cycle without rebuilding a separate workflow for every experiment.&lt;/p&gt;
&lt;p&gt;That would be particularly useful during early prototyping, when ideas change frequently and fast iteration is often more valuable than elaborate release infrastructure.&lt;/p&gt;
&lt;p&gt;There are already official development paths for engines such as Godot and Unreal Engine. XCP is not intended to replace Microsoft's commercial publishing programs, nor does it grant access to restricted console capabilities.&lt;/p&gt;
&lt;p&gt;Its proposed value is different: an open, reusable prototyping and execution environment built around the capabilities available to it.&lt;/p&gt;
&lt;p&gt;The long-term ambition is to support increasingly complex projects and established frameworks through reusable adapters and runtime components.&lt;/p&gt;
&lt;p&gt;Godot is a natural starting point because we have already conducted adaptation experiments. Unreal Engine and other major frameworks represent possible future integration work, not compatibility that XCP can currently claim.&lt;/p&gt;
&lt;p&gt;And I do not think this requires waiting until every feature of a major engine is supported before the platform becomes useful.&lt;/p&gt;
&lt;p&gt;A carefully defined subset that developers can actually build, execute and test may already provide value.&lt;/p&gt;
&lt;p&gt;Why I made XCP open source&lt;br&gt;
The original repository grew into a laboratory containing hardware probes, multiple generations of runtime experiments, creative projects, integration prototypes, successful tests and failed approaches.&lt;/p&gt;
&lt;p&gt;It was useful for research, but it was not a particularly good starting point for external contributors.&lt;/p&gt;
&lt;p&gt;That is why I extracted a separate public XCP repository around the reusable components: project contracts, XVM, source adapters, semantic infrastructure, execution evidence, conformance tests and development tools.&lt;/p&gt;
&lt;p&gt;The public repository is not a complete copy of the original laboratory. Third-party game sources and assets are excluded, and historical Xbox results must not be presented as fresh verification of newly reconstructed binaries.&lt;/p&gt;
&lt;p&gt;The next stage also cannot depend entirely on me building every integration.&lt;/p&gt;
&lt;p&gt;For XCP to become a genuine platform, the community needs to be able to extend it.&lt;/p&gt;
&lt;p&gt;That could mean implementing another source adapter, contributing rendering functionality, improving Godot support, building conformance tests, introducing a different runtime or exploring another execution target.&lt;/p&gt;
&lt;p&gt;The project deliberately separates source interpretation, execution contracts and target-specific capabilities because those are the areas in which independent contributions could eventually make the largest difference.&lt;/p&gt;
&lt;p&gt;I am not assuming that every abstraction is already general enough. In fact, one of the reasons to involve outside developers is to discover where the architecture still contains assumptions inherited from the original Xbox experiments.&lt;/p&gt;
&lt;p&gt;A platform becomes interesting when people can build things its original author did not anticipate.&lt;/p&gt;
&lt;p&gt;What remains to be done&lt;br&gt;
The historical research demonstrates several important capabilities, but turning those capabilities into a broadly usable development platform requires another kind of engineering.&lt;/p&gt;
&lt;p&gt;The public toolchain needs reproducible validation against the hardware. The desktop application needs a straightforward installation and onboarding experience. Framework adapters need to become more general, and new projects must be tested without relying on prior knowledge of their structure.&lt;/p&gt;
&lt;p&gt;That last point is especially important.&lt;/p&gt;
&lt;p&gt;We have demonstrated bounded playable reconstructions of three Godot games. The next significant result would be an independent developer taking a previously unseen project through the adaptation and execution process, with a clear record of which features work, which require substitutions and which remain unsupported.&lt;/p&gt;
&lt;p&gt;That would measure something different from the historical experiments: the usefulness of XCP as an extensible development tool.&lt;/p&gt;
&lt;p&gt;There is also substantial room for the community to explore beyond games. Interactive scenes, simulations, procedural environments, educational software and GPU-driven experiments all fit the same general direction.&lt;/p&gt;
&lt;p&gt;The platform should grow according to what can actually be implemented and measured, rather than a fixed list of promises.&lt;/p&gt;
&lt;p&gt;The bigger idea behind XCP&lt;br&gt;
Looking back, the development of XCP followed a somewhat unusual path.&lt;/p&gt;
&lt;p&gt;It started with an Xbox and a question about its computational capabilities.&lt;/p&gt;
&lt;p&gt;That led to memory and GPU experiments, a virtual machine, verified execution, AI-agent integration, a creative runtime, Godot adaptation, procedural worlds and finally a desktop development environment.&lt;/p&gt;
&lt;p&gt;None of those individual components tells the whole story.&lt;/p&gt;
&lt;p&gt;XVM is not the final product. GPU compute is not the final product. Forge and the Godot experiments are not separate destinations.&lt;/p&gt;
&lt;p&gt;They are different parts of a larger effort to make real hardware available as a practical, programmable and verifiable development target.&lt;/p&gt;
&lt;p&gt;The long-term vision is an open platform where developers can bring familiar tools, the community can expand the supported capabilities, and AI agents can participate in development without replacing the developer's authority over the project.&lt;/p&gt;
&lt;p&gt;The Xbox Series X is the first physical target because that is where the experiment began and where the current evidence exists.&lt;/p&gt;
&lt;p&gt;It does not have to be the last.&lt;/p&gt;
&lt;p&gt;And that is why I think XCP has a meaningful future beyond its original hardware research.&lt;/p&gt;
&lt;p&gt;Not because it already supports every engine or solves every problem in console development, but because it has established several working pieces of an environment that independent developers could help turn into something substantially larger.&lt;/p&gt;
&lt;p&gt;The next interesting result will not be another benchmark produced by me. It will be something built by somebody else using XCP.&lt;/p&gt;
&lt;p&gt;That is what I would like to see the project become.&lt;/p&gt;
&lt;p&gt;XCP is open source&lt;br&gt;
GitHub: &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox&quot;&gt;https://github.com/Daniele-Cangi/xcp-xbox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;XCP Studio: &lt;a rel=&quot;nofollow&quot; href=&quot;https://xcpstudio.com/&quot;&gt;https://xcpstudio.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The public repository contains the extracted platform, reference implementations, contracts and verification tooling. The original Xbox research provides historical hardware evidence, while new builds require validation against their own exact artifacts.&lt;/p&gt;
&lt;p&gt;Contributions, experiments and technical discussion are welcome.&lt;/p&gt;
&lt;p&gt;This is the final chapter of the XCP introduction series. The development itself continues.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30262/xcp-from-an-xbox-experiment-to-an-open-development-platform</guid>
<pubDate>Thu, 08 Oct 2026 10:54:36 +0000</pubDate>
</item>
<item>
<title>XCP Studio: One Project, Three Ways to Work With It</title>
<link>https://coderlegion.com/29639/xcp-studio-one-project-three-ways-to-work-with-it</link>
<description>&lt;p&gt;In the first two posts I wrote about the larger XCP idea: turning an Xbox Series X in Developer Mode into a programmable execution target, and keeping AI-assisted software inside a continuous build → execute → observe → correct loop.&lt;/p&gt;
&lt;p&gt;But most of that work has one place where it becomes visible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XCP Studio.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/Daniele-Cangi/xcp-xbox/main/assets/showcase/01-studio-workspace.webp&quot; alt=&quot;XCP Studio project workspace&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Recorded XCP Studio workspace from the public XCP repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;XCP Studio is the Windows development environment around XCP.&lt;/p&gt;
&lt;p&gt;The idea behind it is deliberately simple:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;the developer, the visual interface and the coding agent should not operate on three different versions of the project.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;They should work on the same project authority.&lt;/p&gt;
&lt;h3 id=&quot;one-project-three-ways-to-work-with-it&quot;&gt;One project, three ways to work with it&lt;/h3&gt;
&lt;p&gt;A project can be approached at different levels.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;                XCP PROJECT
                     │
          ┌──────────┼──────────┐
          │          │          │
       Guided      Expert      Agent
          │          │          │
          └──────────┼──────────┘
                     │
                 same state
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Guided&lt;/strong&gt; exposes higher-level project operations through the interface.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expert&lt;/strong&gt; gives direct access to the detailed development workflow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent&lt;/strong&gt; allows coding agents to work through the same project lifecycle and portable XCP tooling.&lt;/p&gt;
&lt;p&gt;The important part is not the existence of three interfaces.&lt;/p&gt;
&lt;p&gt;It is that they do not create three separate project models.&lt;/p&gt;
&lt;p&gt;If a developer changes the project, the agent works from that project.&lt;/p&gt;
&lt;p&gt;If an agent creates or adapts something, Studio works from the same authority.&lt;/p&gt;
&lt;p&gt;There is no hidden AI-only version of the software that has to be reconciled later.&lt;/p&gt;
&lt;p&gt;That becomes increasingly useful when development moves back and forth between humans and agents.&lt;/p&gt;
&lt;h3 id=&quot;studio-does-not-stop-at-generation&quot;&gt;Studio does not stop at generation&lt;/h3&gt;
&lt;p&gt;A lot of AI development tools effectively end here:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;prompt
   ↓
code
   ↓
files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;XCP Studio was built around a longer lifecycle.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;idea / source
     ↓
XCP Studio
     ↓
project
     ↓
validate
     ↓
build
     ↓
Xbox execution target
     ↓
result + evidence
     ↓
inspect / correct
     ↺
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Studio can create or open a project, validate it against the available contracts, build it, prepare execution and inspect the resulting evidence.&lt;/p&gt;
&lt;p&gt;The coding agent remains on the development side.&lt;/p&gt;
&lt;p&gt;The Xbox remains the execution target.&lt;/p&gt;
&lt;p&gt;The two are connected through XCP's admitted project and execution contracts rather than by giving an agent unrestricted access to the console.&lt;/p&gt;
&lt;p&gt;That distinction is important.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI builds and modifies software. Xbox executes admitted work. XCP records what happened.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The next iteration can then start from the result of a real execution instead of only from what the model expected to happen.&lt;/p&gt;
&lt;h3 id=&quot;why-i-wanted-studio-at-all&quot;&gt;Why I wanted Studio at all&lt;/h3&gt;
&lt;p&gt;Technically, much of XCP could have remained a collection of command-line tools.&lt;/p&gt;
&lt;p&gt;The portable repository already exposes operations such as:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;xcp project describe
xcp conformance all
xcp xvm verify ...
xcp xvm run ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But the larger system needed a place where the entire project lifecycle could remain understandable.&lt;/p&gt;
&lt;p&gt;Source, project state, target capabilities, validation, builds, execution and evidence are related.&lt;/p&gt;
&lt;p&gt;Once AI agents enter that lifecycle, keeping those relationships visible becomes even more important.&lt;/p&gt;
&lt;p&gt;So Studio is not intended to be an AI code generator with an &lt;strong&gt;&quot;Run on Xbox&quot;&lt;/strong&gt; button attached to it.&lt;/p&gt;
&lt;p&gt;It is the control surface around the lifecycle.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;developer ───────┐
                 │
coding agent ────┼──► XCP Studio / project
                 │             │
tools ───────────┘             │
                               ▼
                         admitted build
                               │
                               ▼
                         Xbox Series X
                               │
                               ▼
                            evidence
                               │
                               └────► next iteration
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The project survives every individual generation.&lt;/p&gt;
&lt;p&gt;That is the part I care about most.&lt;/p&gt;
&lt;h3 id=&quot;now-it-is-part-of-the-open-source-stack&quot;&gt;Now it is part of the open-source stack&lt;/h3&gt;
&lt;p&gt;XCP Studio is included in the public XCP source tree.&lt;/p&gt;
&lt;p&gt;The repository contains the portable XCP contracts, XVM, project tooling, evidence infrastructure, source adaptation work, the reconstructed Windows development stack and the native Xbox worker components.&lt;/p&gt;
&lt;p&gt;The portable parts can be explored without owning an Xbox.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/Daniele-Cangi/xcp-xbox.git
cd xcp-xbox

python -m pip install -e '.[test]'
python -m pytest -q
xcp conformance all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On Windows, the repository can also rebuild the development distribution containing XCP Studio and the supporting runtime components.&lt;/p&gt;
&lt;p&gt;One evidence boundary is worth keeping explicit: the preserved product path was exercised historically on a physical Xbox Series X, while the newly reconstructed public development packages are still marked &lt;code&gt;NOT_TESTED_ON_XBOX&lt;/code&gt; until independently reproduced on hardware.&lt;/p&gt;
&lt;p&gt;That separation is intentional.&lt;/p&gt;
&lt;p&gt;XCP treats a successful historical run and a newly rebuilt binary as two different claims.&lt;/p&gt;
&lt;h3 id=&quot;the-small-idea-behind-studio&quot;&gt;The small idea behind Studio&lt;/h3&gt;
&lt;p&gt;The UI is not really the interesting part.&lt;/p&gt;
&lt;p&gt;The interesting part is the shared object underneath it.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;human
  │
  ├─────────┐
  │         │
  ▼         ▼
Studio    agent
  │         │
  └────┬────┘
       ▼
   XCP project
       │
       ▼
 real execution
       │
       ▼
    evidence
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Humans and AI do not need separate development worlds.&lt;/p&gt;
&lt;p&gt;They need a shared project, explicit capabilities and evidence from the machine that actually executed the result.&lt;/p&gt;
&lt;p&gt;That is what XCP Studio is trying to provide.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;XCP is open source&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GitHub:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox&quot;&gt;https://github.com/Daniele-Cangi/xcp-xbox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;XCP Studio:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://xcpstudio.com/&quot;&gt;https://xcpstudio.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Previous chapters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/danielecangi/i-built-a-virtual-machine-inside-the-xbox-sandbox-then-i-let-ai-agents-build-on-top-of-it-ef0&quot;&gt;I Built a Virtual Machine Inside the Xbox Sandbox. Then I Let AI Agents Build on Top of It.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/danielecangi/a-system-that-lets-ai-work-directly-with-a-real-xbox-now-open-source-jlc&quot;&gt;A System That Lets AI Work Directly With a Real Xbox — Now Open Source&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;AI builds. Xbox executes. XCP verifies. Studio is where the loop stays visible.&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/29639/xcp-studio-one-project-three-ways-to-work-with-it</guid>
<pubDate>Sat, 03 Oct 2026 15:31:14 +0000</pubDate>
</item>
<item>
<title>A System That Lets AI Work Directly With a Real Xbox</title>
<link>https://coderlegion.com/28834/a-system-that-lets-ai-work-directly-with-a-real-xbox</link>
<description>&lt;p&gt;I wanted AI to work directly with a real Xbox.&lt;/p&gt;
&lt;p&gt;Not just generate code on a PC.&lt;/p&gt;
&lt;p&gt;I wanted the same software project to be created or adapted, sent to Xbox, executed there, observed, corrected, and then evolved again.&lt;/p&gt;
&lt;p&gt;That system became &lt;strong&gt;XCP&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And now it is &lt;strong&gt;open source&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox&quot;&gt;https://github.com/Daniele-Cangi/xcp-xbox&lt;/a&gt;&lt;br&gt;
👉 &lt;strong&gt;XCP Studio:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://xcpstudio.com/&quot;&gt;https://xcpstudio.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The simplest way to understand it is this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;AI / developer
      ↓
   project
      ↓
     XCP
      ↓
 Xbox Series
      ↓
 execute + observe
      ↓
   evidence
      ↓
 next version
      ↺
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;AI builds. Xbox executes. XCP observes. The project continues.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;what-it-already-looks-like&quot;&gt;What it already looks like&lt;/h3&gt;
&lt;p&gt;This is not only infrastructure.&lt;/p&gt;
&lt;p&gt;I wanted to see actual software cross that loop.&lt;/p&gt;
&lt;h4 id=&quot;forge&quot;&gt;Forge&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=11839698506530747895&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Forge — created through the XCP workflow and executed on Xbox.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The interesting part is not that AI can generate code.&lt;/p&gt;
&lt;p&gt;The interesting part is that the project can continue after generation: it can be executed on a real target, observed, changed, versioned, and executed again.&lt;/p&gt;
&lt;h4 id=&quot;minilens&quot;&gt;Minilens&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=16826184087320410706&quot; alt=&quot;&quot;&gt;&lt;br&gt;
&lt;strong&gt;Minilens — an authorized Godot project adapted through XCP and executed through the Xbox lifecycle.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This tested a different path.&lt;/p&gt;
&lt;p&gt;Instead of starting from a new idea, XCP had to begin with an existing software project, observe its structure and behaviour, adapt what could be represented on the target, execute it, and compare the result.&lt;/p&gt;
&lt;p&gt;I deliberately do not call this universal Godot compatibility.&lt;/p&gt;
&lt;p&gt;It demonstrates something narrower and more useful:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;A real codebase can cross from source software to Xbox execution and come back with evidence about what actually happened.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;the-project-survives-the-generation&quot;&gt;The project survives the generation&lt;/h3&gt;
&lt;p&gt;This is the part of XCP I care about most.&lt;/p&gt;
&lt;p&gt;A lot of AI-assisted development still behaves like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;prompt
  ↓
generate
  ↓
files
  ↓
done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I wanted this instead:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;create
  ↓
execute
  ↓
observe
  ↓
correct
  ↓
evolve
  ↓
execute again
  ↺
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The same project has an identity.&lt;/p&gt;
&lt;p&gt;Its versions have identities.&lt;/p&gt;
&lt;p&gt;Executions belong to those versions.&lt;/p&gt;
&lt;p&gt;Evidence belongs to particular executions.&lt;/p&gt;
&lt;p&gt;A later change does not erase what existed before.&lt;/p&gt;
&lt;p&gt;One lifecycle I exercised explicitly went:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;1.0.0 → 1.1.0 → 1.0.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Update and rollback are operations in the system, not an informal reconstruction of old files.&lt;/p&gt;
&lt;p&gt;That is why I describe XCP as a &lt;strong&gt;software lifecycle for AI-assisted development&lt;/strong&gt;, not simply an AI code generator.&lt;/p&gt;
&lt;h3 id=&quot;what-has-already-been-exercised&quot;&gt;What has already been exercised&lt;/h3&gt;
&lt;p&gt;Two paths were especially important:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Path &lt;/th&gt;&lt;th&gt;Result&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;New-project lifecycle &lt;/td&gt;&lt;td&gt;&lt;strong&gt;28 / 28 operations&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Existing-source lifecycle with Minilens &lt;/td&gt;&lt;td&gt;&lt;strong&gt;14 / 14 operations&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Declared semantic checks &lt;/td&gt;&lt;td&gt;&lt;strong&gt;passed for the published scenario&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Version evolution &lt;/td&gt;&lt;td&gt;&lt;strong&gt;1.0.0 → 1.1.0 → 1.0.0&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The creation path tested whether an agent could stay inside a project lifecycle beyond generation.&lt;/p&gt;
&lt;p&gt;The Minilens path tested whether existing software could enter that same loop.&lt;/p&gt;
&lt;p&gt;In both cases, the important boundary was the same:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;the software had to reach a real Xbox execution target.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;{% details Click to see more about the two paths %}&lt;/p&gt;
&lt;h4 id=&quot;creating-new-software&quot;&gt;Creating new software&lt;/h4&gt;
&lt;p&gt;An agent can create an explicit XCP project, validate it, prepare it for the target, execute it, inspect the result, correct it and continue from another version.&lt;/p&gt;
&lt;p&gt;The public creation programme completed &lt;strong&gt;28 out of 28 lifecycle operations&lt;/strong&gt; across an interactive project and a utility.&lt;/p&gt;
&lt;h4 id=&quot;adapting-existing-software&quot;&gt;Adapting existing software&lt;/h4&gt;
&lt;p&gt;Existing software is harder because a project is more than its files.&lt;/p&gt;
&lt;p&gt;It contains behaviour: input, state, collisions, scene transitions, timing, persistence and assumptions about the original engine.&lt;/p&gt;
&lt;p&gt;The Minilens programme completed &lt;strong&gt;14 out of 14 lifecycle operations&lt;/strong&gt; together with the declared semantic acceptance checks for the published scenario.&lt;/p&gt;
&lt;p&gt;That is why XCP treats adaptation closer to semantic reconstruction than file conversion.&lt;/p&gt;
&lt;p&gt;{% enddetails %}&lt;/p&gt;
&lt;h3 id=&quot;xbox-is-actually-inside-the-loop&quot;&gt;Xbox is actually inside the loop&lt;/h3&gt;
&lt;p&gt;Xbox is not just the screen at the end.&lt;/p&gt;
&lt;p&gt;It is an execution target that produces information for the next development step.&lt;/p&gt;
&lt;p&gt;Imagine an agent changes movement.&lt;/p&gt;
&lt;p&gt;XCP can prepare the candidate, execute it on Xbox, observe what happened, and return structured evidence.&lt;/p&gt;
&lt;p&gt;The next iteration can start from that evidence.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;change
  ↓
Xbox execution
  ↓
evidence
  ↓
next decision
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The AI itself does &lt;strong&gt;not&lt;/strong&gt; run unrestricted on the console.&lt;/p&gt;
&lt;p&gt;The agent remains on the development side.&lt;/p&gt;
&lt;p&gt;Xbox exposes bounded execution surfaces, and XCP mediates what reaches the target and what comes back.&lt;/p&gt;
&lt;p&gt;That separation is intentional.&lt;/p&gt;
&lt;h3 id=&quot;the-virtual-machine-that-made-this-possible&quot;&gt;The virtual machine that made this possible&lt;/h3&gt;
&lt;p&gt;The project actually started from a smaller experiment.&lt;/p&gt;
&lt;p&gt;I wanted to know how much programmable execution I could create inside the public Xbox application environment.&lt;/p&gt;
&lt;p&gt;That produced &lt;strong&gt;XVM&lt;/strong&gt;, a deterministic virtual machine.&lt;/p&gt;
&lt;p&gt;For XCP, XVM's most important property is simple:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;New bounded work can reach the Xbox execution target without every new behaviour becoming another native Xbox application.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That turned Xbox from a fixed endpoint into a programmable part of the loop.&lt;/p&gt;
&lt;p&gt;{% details Click to see what is inside XVM %}&lt;/p&gt;
&lt;p&gt;The current XVM v2 reference implementation includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;26 admitted opcodes&lt;/li&gt;
&lt;li&gt;16 registers&lt;/li&gt;
&lt;li&gt;typed memory&lt;/li&gt;
&lt;li&gt;structured control flow&lt;/li&gt;
&lt;li&gt;bounded loops and calls&lt;/li&gt;
&lt;li&gt;static execution budgets&lt;/li&gt;
&lt;li&gt;deterministic snapshot and resume&lt;/li&gt;
&lt;li&gt;canonical CPU execution&lt;/li&gt;
&lt;li&gt;GPU differential execution paths&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The target still decides whether submitted work belongs to its admitted execution contract.&lt;/p&gt;
&lt;p&gt;XVM does not remove the Xbox sandbox.&lt;/p&gt;
&lt;p&gt;It creates a programmable layer inside it.&lt;/p&gt;
&lt;p&gt;{% enddetails %}&lt;/p&gt;
&lt;h3 id=&quot;-it-ran-is-not-enough&quot;&gt;“It ran” is not enough&lt;/h3&gt;
&lt;p&gt;Getting software to execute was only half of the problem.&lt;/p&gt;
&lt;p&gt;A project can launch successfully and still be wrong.&lt;/p&gt;
&lt;p&gt;Movement may work while collision behaviour changed.&lt;/p&gt;
&lt;p&gt;A scene may appear correct while persistence is broken.&lt;/p&gt;
&lt;p&gt;So XCP separates:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;source behaviour
      ↓
semantic representation
      ↓
target implementation
      ↓
target observation
      ↓
evidence
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This produced a rule that now sits at the centre of the project:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;“It ran” is not the same claim as “it was preserved correctly.”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That difference is especially important when AI agents are involved.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Build succeeded&lt;/code&gt; gives an agent almost nothing to reason about.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Movement survived, but this collision consequence diverged&lt;/code&gt; gives it something concrete to fix.&lt;/p&gt;
&lt;p&gt;{% details Click to see the deeper architecture %}&lt;/p&gt;
&lt;p&gt;The broader pipeline is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;exact source
    ↓
source observation
    ↓
source model
    ↓
semantic IR
    ↓
capability admission
    ↓
target lowering
    ↓
execution
    ↓
observation
    ↓
differential evidence
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Today the concrete public reference path is:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;Godot → XCP → Xbox / XVM
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Other source systems and targets are architectural directions, not completed compatibility claims.&lt;/p&gt;
&lt;p&gt;{% enddetails %}&lt;/p&gt;
&lt;h3 id=&quot;now-it-is-open-source&quot;&gt;Now it is open source&lt;/h3&gt;
&lt;p&gt;This is the reason for this post.&lt;/p&gt;
&lt;p&gt;I did &lt;strong&gt;not&lt;/strong&gt; simply publish the original research repository.&lt;/p&gt;
&lt;p&gt;That repository was a laboratory: Xbox experiments, runtime probes, games, adaptation prototypes, failed paths and multiple generations of the system.&lt;/p&gt;
&lt;p&gt;Instead, I extracted XCP around the parts that should be reusable.&lt;/p&gt;
&lt;p&gt;The public repository contains the platform, XVM, project tooling, semantic infrastructure, evidence contracts, conformance tooling and examples.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox&quot;&gt;https://github.com/Daniele-Cangi/xcp-xbox&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;You can start with the portable parts:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/Daniele-Cangi/xcp-xbox.git
cd xcp-xbox

python -m pip install -e '.[test]'
python -m pytest -q
xcp conformance all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can also run the VM directly:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;xcp xvm verify src/xcp/conformance/vectors/xvm-v2-call-chain.json
xcp xvm run src/xcp/conformance/vectors/xvm-v2-call-chain.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or inspect the project contract:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;xcp project describe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;{% details Click to see what I want people to extend %}&lt;/p&gt;
&lt;p&gt;The first reference source adapter is &lt;strong&gt;Godot&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The first reference execution substrate is &lt;strong&gt;XVM&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The first real target is &lt;strong&gt;Xbox Series&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But the architecture intentionally separates those pieces.&lt;/p&gt;
&lt;p&gt;Interesting contributions could include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;another source adapter&lt;/li&gt;
&lt;li&gt;another runtime&lt;/li&gt;
&lt;li&gt;another execution target&lt;/li&gt;
&lt;li&gt;XVM tooling&lt;/li&gt;
&lt;li&gt;new conformance vectors&lt;/li&gt;
&lt;li&gt;evidence and verification tooling&lt;/li&gt;
&lt;li&gt;examples&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;or simply a case that breaks one of the abstractions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A broken abstraction is useful too.&lt;/p&gt;
&lt;p&gt;It tells us where XCP still contains assumptions that should not be there.&lt;/p&gt;
&lt;p&gt;{% enddetails %}&lt;/p&gt;
&lt;h3 id=&quot;the-next-important-result-should-not-come-from-me&quot;&gt;The next important result should not come from me&lt;/h3&gt;
&lt;p&gt;This is probably the biggest reason I wanted XCP open.&lt;/p&gt;
&lt;p&gt;So far, Xbox has been the forcing function.&lt;/p&gt;
&lt;p&gt;It forced the system to deal with a real target, a sandbox, bounded execution, hardware observation and the difference between “it ran” and “it behaved correctly”.&lt;/p&gt;
&lt;p&gt;Now I want to know what happens when other people push on the boundaries.&lt;/p&gt;
&lt;p&gt;Can somebody build another adapter without rewriting the platform?&lt;/p&gt;
&lt;p&gt;Can another runtime use the same contracts?&lt;/p&gt;
&lt;p&gt;Can another target preserve the evidence loop?&lt;/p&gt;
&lt;p&gt;Where does the abstraction fail?&lt;/p&gt;
&lt;p&gt;Those results are more interesting now than another feature I could add alone.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;XCP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GitHub:&lt;br&gt;
👉 &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/Daniele-Cangi/xcp-xbox&quot;&gt;https://github.com/Daniele-Cangi/xcp-xbox&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Studio:&lt;br&gt;
👉 &lt;a rel=&quot;nofollow&quot; href=&quot;https://xcpstudio.com/&quot;&gt;https://xcpstudio.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For the longer story of how the Xbox virtual machine evolved into this lifecycle, I wrote about that separately:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/28314/i-built-a-virtual-machine-inside-the-xbox-sandbox-then-i-let-ai-agents-build-on-top-of-it&quot;&gt;https://coderlegion.com/28314/i-built-a-virtual-machine-inside-the-xbox-sandbox-then-i-let-ai-agents-build-on-top-of-it&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The VM was the first piece.&lt;/p&gt;
&lt;p&gt;Now the platform is open for other people to build on top of it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AI builds. Xbox executes. XCP observes. The project continues.&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/28834/a-system-that-lets-ai-work-directly-with-a-real-xbox</guid>
<pubDate>Sun, 27 Sep 2026 19:52:46 +0000</pubDate>
</item>
</channel>
</rss>