4.3 KiB
Discussion Round 1 - Opus
Agreements
Opus accepts Snarky's eight decisions:
- Ship the NAS release console first.
- Drop
pub/alias/namespace re-export from the critical path. - Replace Milestone 1 with a walking skeleton.
- Make Linux/NAS the first runtime target.
- Allow FFI as a thin, named, replaceable boundary.
- Keep orchestration sequential and artifact-driven.
- Remove
Release.channel, add release state, and use promotion history for rollback. - Use the v1 access model with app visibility, roles, scoped tokens, and signed install links.
Opus also accepts Snarky's challenges: temporary boundaries must be named, M1 can be small but the product model cannot be vague, FFI must be Linux-first, and the mock redesign must preserve iOS install truth.
Remaining Technical Objections
-
The cross-repo sx governance stop is still unresolved.
FFI reduces compiler-bug surface but does not remove it.
#foreignand comptime are themselves active sx risk areas. If an M1 slice trips an sx bug,sx/CLAUDE.mdrequires filing an issue, marking blocked, ending the session, and not working around it. The distribution orchestration needs an explicitsx-blockedstate and handoff. -
M1 std signatures must pin to landed sx error handling.
Do not implement against planned error semantics. Pin to the current landed shape and record the checkpoint/commit.
-
M1 APK inspection must not become an AXML decoder.
For M1, artifact inspection means opening the zip central directory and confirming
AndroidManifest.xmlexists with size/offset. Decoding binary Android XML is M2. -
Enterprise install readiness depends on proxy HTTPS.
distdcannot self-satisfy the Enterprise HTTPS requirement if TLS is behind a reverse proxy.dist doctorcan validate config/reachability, not TLS termination bydistd. -
Public visibility needs an iOS artifact-only carve-out.
An iOS artifact-only IPA should never be anonymously downloadable, even on a public app.
Refinements To Snarky
- M1 JSON output should be the same shape later used by HTTP and remote
dist ci publish. - M1 artifact inspection is zip-entry presence/size only.
- FFI boundaries should be named:
- miniz/libzip or zlib for zip reads
- libsqlite3 deferred to M2
- HMAC for signed links in M2
- SHA-256 remains a compiler-risk choice, not a portability mandate
rejectedis terminal.- M1 releases can go
draft -> publishedwithvalidation=not_run. - Signed install links are HMAC over
(artifact_id, expiry)with a server key. - Download auth should be a table across actor/auth mode, visibility, and platform.
Minimal Plan Patch Order
git initand baseline commit.- Patch Subplan 01:
- remove dangling references
- park
pubas language-track work - pin error model to landed sx state
- mark FFI-first/Linux boundaries
- Patch
PLAN.md:- replace the first milestone with the walking skeleton
- demote HTTP/SQLite/UI/Docker to later milestones
- Patch Subplan 02:
- remove
Release.channel - add
Release.state - add validation outcome
- add
ChannelPromotion
- remove
- Patch Subplan 03:
- local publish first
- add
dist.jsonschema and example - add idempotency key and rerun behavior
- Patch Subplan 05:
- label validation checks as
required,warning,informational, ornot_supported - scope M1 APK to zip-entry presence
- label validation checks as
- Patch Subplan 04:
- split Enterprise and MDM
- add TLS-by-proxy caveat
- define concrete routes and JSON shapes
- Add access-policy section:
- roles
- visibility
- token scopes
- signed-link HMAC
- download authorization table
- iOS artifact-only never public
- Patch orchestration:
- add
sx-blockedstate - split Opus read-only consultation approval from write implementation approval
- add
What Opus Needs Before Any Code
- Answer the sx governance question: on an M1 compiler bug, does the
distribution run hard-stop and file in
sx/issues, or is there a sanctioned narrow-workaround budget? - Pin the current landed sx error-handling shape.
- Approve the
dist.jsonschema and idempotency key. - Approve the download authorization table.
- Confirm libsqlite3 is M2 and M1 is DB-free.
- For the mock branch, provide a Snarky
brief.mdwith seed data and required UI states.