sg-compute.sgit.ai / roadmap

Build order, open questions and tensions

Published unresolved, on purpose. A roadmap with every question answered is a marketing document; this one has eight questions with no answer and seven tensions that are not going to be smoothed over. The commissioning brief asked for it this way and it was right to.

The five-day list — seven fixes, in order of value

These are not site tasks. They are repository tasks that change what this site can honestly say, and the first four are the ones that turn the audit paragraph from honest-but-awkward into honest-and-strong.

#FixEffortEffect
F1Delete [^_] from the legacy-import guard4 charactersThe guard goes red on 228 real legacy imports across 69 files. It has been passing vacuously since it was written. In full →
F2Add the two new-tree test suites to CIone workflow edit+1,952 tests into CI, and six real import-level breakages surface immediately — four circular imports, one missing module, one stale path. The highest-value change available in the repository
F3Fix sg-play in the AMI bake workflowone lineThe binary is invoked 16 times and defined nowhere. The whole pipeline is currently dead — and it is cited as a maturity signal
F4Fix the three date-brittle IAM testssmallThey hardcode a date now more than 90 days stale, so a STALE_ROLE assertion fires. They fail for anyone who clones the repository today
F5Delete or regenerate capabilities.jsonsmall42 versions stale, COPY'd into the image, served at an endpoint, and the repo's own docs say not to read it
F6Rewrite the README from the treehalf a dayIt says “Phase 0 in progress — repo skeleton” at 217k lines and documents a package that does not exist
F7Add a linter — ruff is one config blockhalf a dayThere is currently no static analysis of any kind

Eight things worth building fresh

#ItemWhy
G1A generated page per specdone, here
G2A real cost modelThe only cost artefact is a placeholder whose own header says “real cost calculation is its own brief.” That brief does not exist
G3Throughput and concurrency measurement“Hundreds of parallel requests trivially” is argued, never measured. No load tests anywhere
G4Aggregated latencyEvery sequence call emits a full timings block and nothing aggregates them. No p50/p95 dataset exists
G5Image sizesNot recorded, not derivable without a build. One docker images line closes it
G6The /pw proxy's other halfVendored into an image whose source is in neither repository. Anyone documenting the production auth path is documenting a component they cannot see
G7A “built in 100 days” narrativeNow possible — the full history is recoverable. And it also shows the last commit is a month old. Both halves are published
G8Uptime, incidents, SLODebriefs describe successful deployments. There is no SLO, no uptime record, no incident log

Eight questions, published without answers

Q1

Should the control plane run inside itself?

“The Ephemeral Compute control plane should be able to run inside Ephemeral Compute… This is recursion, but it is also practical.”

Where it stands: the most quotable unbuilt idea in the corpus. But a control plane that must exist in order to start itself has a bootstrap problem. The honest answer is probably DNS plus one small always-on waker, everything else ephemeral — which is what the serverless brief actually describes, rather than the slogan.

Q2

Does a container really serve hundreds of parallel requests here?

Where it stands: central to the whole Lambda comparison, and unmeasured. Every browser request launches a fresh Chromium process, so the ceiling is memory rather than the web framework. This is the claim most likely to be wrong in an interesting way.

Q3

Is Platform a real abstraction or an aspiration?

'ec2' | 'k8s' | 'gcp' | 'local' is a comment; only EC2 exists.

Where it stands: an ABC with one implementation has never been tested as an abstraction. local would be the cheapest proof — and would also make the test suite runnable without AWS, which is worth having on its own.

Q4

Why do two specs have vault-writes while the platform's vault sink raises NotImplementedError?

Where it stands: the capability exists at the spec layer and not at the platform layer. Either the generic sink is redundant, or the two specs are each doing it themselves. The sink ledger →

Q5

What is a Stack, given there is no multi-node orchestration?

Where it stands: the taxonomy reserves the word for 2+ coordinated nodes. The routes return a list, the CLI is unwired, and thirteen help strings use it for a single instance. Either build it or retire the word.

Q6

Should the EC2 tag carrying the API key be removed?

Where it stands: the mitigation is one SSM call in the dashboard. The trade is convenience against exposure to ec2:DescribeInstances. A stated decision either way is fine; silence is not. The full framing →

Q7

sg-compute.sgit.ai and sg-compute.sgraph.ai — same label, different TLD

Where it stands: the decision taken is to claim the distinction rather than move 128 references. It is on this list because it is a decision that could be revisited: the argument against it is not technical, it is that a weekly support question forever eventually costs more than a migration.

Q8

Is the platform still being developed?

Where it stands: no commit since 24 July 2026. June and July together were 187 commits against 2,590 in April and May. Paused, done, or between phases — the site should say which, and cannot work it out from the tree. This one needs an answer from a person. It is the open request on comms.

Seven honest tensions

  1. Extraordinary velocity, then silence. 2,777 commits in 100 days is remarkable; a month with none is a fact a reader can check in one click. Both belong on the site, so both are on it.
  2. 61% of the commits are by Claude. Genuinely interesting, arguably the most interesting thing about this repository for the wider network — and it invites the obvious question about who reads the code. open-source.sgit.ai has the argument; this site has the artefact. Joining them is a strong page and an uncomfortable one.
  3. Runtime type-safety instead of static analysis. Type_Safe in 42.6% of files is a real choice with real benefits. It is also not a type-checker, and 57% of files have neither.
  4. A reality-document discipline that is itself stale. “If the reality document doesn't list it, it does not exist” is an excellent rule. The reality document is 41 versions behind. The discipline is right; the maintenance did not happen — which is precisely why this site generates its pages from data and fails the build when they drift.
  5. The best ideas are the unbuilt ones. Recursion, warm pools, multi-node stacks, Nitro Enclaves, non-EC2 platforms. The most quotable material in the corpus is the part with no code — which is exactly what the repository's own rule warns about: “briefs are aspirations, not facts.”
  6. A platform named for one of its sixteen specs. Four months after the naming brief said to fix it, the legacy aliases are still entry points and the service still identifies itself by the old name.
  7. Publishing the audit is the right move and it is not comfortable. No linter, a third of the tests outside CI, a guard that never worked, a dead workflow, four stale sources. Every one is fixable in days, and publishing them alongside the fixes is the strongest possible version of the maturity claim — but it is still a site whose second section is a bug report against its own subject.

Loose ends worth an hour each