plan: re-evaluate against current sx (2026-06-11)
sx delivered most of the foundation since the plan was written: alias re-exports instead of pub, the modules/std.sx facade barrel, and native std fs/process/json/cli/hash/log/test/socket/mem. Replace the 'sx Foundation Work' section with as-built status + remaining gaps, mark Phase 0 done / Phase 1 partial, note the superseded subplan-01 slices, and drop the retired flow-harness execution contract (subplan 08, roles, checkpoint files).
This commit is contained in:
88
PLAN.md
88
PLAN.md
@@ -156,48 +156,53 @@ Deployment direction:
|
||||
- UGREEN NAS deployment through Docker/Container Manager is a first-version
|
||||
requirement.
|
||||
|
||||
## sx Foundation Work
|
||||
## sx Foundation Status
|
||||
|
||||
Before the product can be implemented well, `sx` needs a stronger language and
|
||||
standard library foundation.
|
||||
Re-evaluated 2026-06-11 against the current sx tree. The original foundation
|
||||
asks have largely landed, with one design difference: sx has no `pub` keyword.
|
||||
Visibility is import-scoped; aliases are the re-export mechanism
|
||||
(`print :: core.print`), and a module's namespace tail carries one level into
|
||||
flat importers. `modules/std.sx` is the curated barrel this plan asked for.
|
||||
|
||||
Language/module needs:
|
||||
Delivered in sx and used by this repo:
|
||||
|
||||
- `pub` exports so std modules do not leak private helpers.
|
||||
- Alias imports and curated namespace barrels.
|
||||
- Namespace member re-export syntax such as `pub print :: core.print`.
|
||||
- Error handling that follows the real sx model. `!` is an error channel, not a
|
||||
generic result wrapper.
|
||||
- Module system: alias imports, alias re-exports, namespace barrels,
|
||||
one-level carry, dir-vs-file ambiguity rejection.
|
||||
- Error handling: the `!` error channel with `raise`/`catch`/`onfail`
|
||||
(bindings take parens), `?T` optionals.
|
||||
- `std` modules under `modules/std/`: core, fmt, list, mem (typed allocator
|
||||
helpers over `alloc_bytes`/`dealloc_bytes`), fs, process, socket (raw TCP),
|
||||
json, xml, cli, hash (streaming SHA-256), log (leveled, no timestamps yet),
|
||||
test (bare assert).
|
||||
|
||||
Standard library needs, at overview level:
|
||||
Still missing from sx — the forward wishlist; each item either blocks a later
|
||||
subplan or has an explicit local workaround:
|
||||
|
||||
- Collections: extended `List`, `HashMap`
|
||||
- Collections: `HashMap` (linear scan over `List` pairs meanwhile).
|
||||
- Strings: validated UTF-8 `String`, `StringBuilder`, explicit Unicode model
|
||||
- Bytes and paths
|
||||
- Filesystem and process APIs
|
||||
- Time, random, hashing, and encoding
|
||||
- JSON, URL, MIME, config, CLI, and logging
|
||||
- HTTP server/client and TLS boundary
|
||||
- SQLite
|
||||
- Archive inspection
|
||||
- Testing helpers
|
||||
|
||||
Unicode must be specified precisely:
|
||||
|
||||
- `String` is validated UTF-8 bytes.
|
||||
- Byte length, scalar values, grapheme clusters, and display width are distinct.
|
||||
- APIs must clearly say which unit they operate on.
|
||||
- Invalid UTF-8 must not silently become a `String`.
|
||||
(byte length, scalar values, grapheme clusters, and display width are
|
||||
distinct; invalid UTF-8 must not silently become a `String`).
|
||||
- Bytes and a full path module (only `path_join`/`basename`/`dirname` today).
|
||||
- Time/clock (publish shims `time(2)` via FFI), random, encodings
|
||||
(base64url, percent).
|
||||
- HTTP server/client and TLS boundary — blocks subplan 04 and remote publish
|
||||
(subplan 03 Slice 3).
|
||||
- SQLite — blocks subplan 02 Slice 2 (`db.json` stands in).
|
||||
- Archive inspection — blocks deep IPA/APK validation (subplan 05).
|
||||
- Config layering (env/file/CLI) and richer testing helpers.
|
||||
|
||||
## Implementation Phases
|
||||
|
||||
Phase 0 - sx language/module prerequisites:
|
||||
Phase 0 - sx language/module prerequisites (done, as-built):
|
||||
|
||||
- Add `pub` support, alias imports, and namespace member re-exports.
|
||||
- Delivered in sx via alias re-exports and namespace barrels; there is no
|
||||
`pub` keyword.
|
||||
|
||||
Phase 1 - standard library foundation:
|
||||
Phase 1 - standard library foundation (partial):
|
||||
|
||||
- Build the std primitives needed for CLI, HTTP, storage, validation, and tests.
|
||||
- Delivered: fs, process, json, cli, hash, log, test, socket, mem.
|
||||
- Outstanding: HashMap, StringBuilder/Unicode model, time, random, encodings,
|
||||
HTTP/TLS, SQLite, archive (see "sx Foundation Status").
|
||||
|
||||
Phase 2 - product domain:
|
||||
|
||||
@@ -305,21 +310,10 @@ verifiable from the repo:
|
||||
|
||||
## Detailed Execution
|
||||
|
||||
`PLAN.md` is the overview. Detailed implementation breakdowns live in
|
||||
`.agents/subplans/`.
|
||||
`PLAN.md` is the overview. Slice breakdowns live in `.agents/subplans/`
|
||||
(01–07). The active milestone slice plan and step progress live in `current/`
|
||||
(`PLAN.md`, `CHECKPOINT-DISTRIBUTION.md`).
|
||||
|
||||
Before starting or resuming work, read:
|
||||
|
||||
- `.agents/ORCHESTRATION.md`
|
||||
- `.agents/CHECKPOINT.md`
|
||||
- `.agents/checkpoint.json`
|
||||
- the active `.agents/subplans/*.md` file
|
||||
|
||||
The workflow is sequential and branch-based:
|
||||
|
||||
- Codex manages orchestration and validation.
|
||||
- Snarky owns product briefs and final product acceptance.
|
||||
- Opus owns layout/design decisions.
|
||||
- Opus is the only role that writes code during Opus implementation phases.
|
||||
- Implementation uses git branches, not worktrees.
|
||||
- Checkpoints are updated after every completed slice and before stopping work.
|
||||
The multi-agent flow harness that originally executed this plan is retired;
|
||||
work proceeds directly in-session, branch-based, with `make test` green at
|
||||
each step boundary.
|
||||
|
||||
Reference in New Issue
Block a user