Development status
SLYNET development status
Audited: 2026-08-27
Applies to: SLYNET 1.1.0 release line
This page describes the current development line. For the current 1.1.0 release
snapshot, see RELEASE_STATUS.md; the immutable v1.0.7 snapshot is preserved in
RELEASE_STATUS_1.0.7.md.
Current publication state
canonical_repository: https://github.com/fkr-0/slynet
latest_release: v1.1.0
next_target: unplanned
github_release_published: true
pages: deployed_https
pages_url: https://slynet.fkr.dev
pages_https_enforced: true
security_boundary: trusted_localhost_by_default
Corrected protocol inventory
The generated inventory is now schema 6 over the complete tracked reference
corpus of 284 operations. Schema 6 separates definition evidence, callable
registration, explicit per-test :covers ownership, and registration semantics.
A registered endpoint that only raises Not implemented or always reports
unsupported is therefore no longer counted as functional merely because it was
registered.
| State | Count | Meaning |
|---|---|---|
| implemented + directly tested | 70 | Functional callable registration plus explicit operation-level :covers evidence. |
| implemented, no direct mapping | 27 | Functional callable registration without direct :covers ownership yet. |
| defined but unwired | 10 | Janet implementation code exists but has no callable RPC registration. |
| registered stub | 5 | Registered, but classified truthfully as an error/unsupported stub. |
| missing | 172 | No Janet function definition or callable registration is found. |
Registration semantics contain 279 functional, 3 error-stub, and 2 unsupported-stub records. Support classification is 247 native, 35 emulated, and 2 explicitly unsupported compatibility operations. Support class answers what semantics are honest; state answers what is actually wired.
Release-critical stable subset
The 1.1 release gate declares a finite stable subset instead of pretending that all historical SLYNK operations are product commitments. Every declared surface requires 100% functional registration and explicit direct test mapping:
| Surface | Stable operations | Directly tested | Coverage | Gate |
|---|---|---|---|---|
| compile/load | 4 | 4 | 100% | pass |
| completion | 6 | 6 | 100% | pass |
| debugger | 7 | 7 | 100% | pass |
| inspector | 5 | 5 | 100% | pass |
| REPL | 3 | 3 | 100% | pass |
| transport | 4 | 4 | 100% | pass |
| xref | 2 | 2 | 100% | pass |
docs/generated/protocol-coverage.md is generated from the same source of truth
and freshness/threshold checks are part of make release-verify.
Full historical corpus by frontend surface
| Surface | Total | Tested functional | Functional / unmapped | Defined / unwired | Registered stub | Missing |
|---|---|---|---|---|---|---|
| backend | 124 | 8 | 9 | 7 | 3 | 97 |
| compile/load | 16 | 10 | 5 | 0 | 0 | 1 |
| completion | 12 | 6 | 2 | 0 | 0 | 4 |
| debugger | 56 | 11 | 3 | 0 | 0 | 42 |
| inspector | 24 | 14 | 2 | 0 | 0 | 8 |
| namespace | 14 | 3 | 2 | 2 | 2 | 5 |
| REPL | 15 | 6 | 3 | 0 | 0 | 6 |
| transport | 6 | 4 | 0 | 0 | 0 | 2 |
| xref | 17 | 8 | 1 | 1 | 0 | 7 |
These corpus numbers remain deliberately conservative. Historical operations outside the declared stable subset stay visible without becoming 1.1 compatibility claims.
Work that is already real
Stable development workflows
- local TCP transport, framing, UTF-8 validation, request lifecycle and teardown;
- Emacs connection/project lifecycle and MREPL workflows;
- evaluation, completion/autodoc, source index/xref, inspector, diagnostics;
- Janet debugger inspection facade, execution-unit registry and synthetic restart scopes;
- compile/load operations with structured diagnostics;
- wrapper-based profiling and source-linked trace/timing records in the core implementation.
Qualified 1.1.0 work
- canonical
slynet/api.janetembedding API v1 with owned lifecycle contexts; - complete API-v1 compatibility shim at
slynet/slynet-api.janet; - transport-independent
context-statuswithout invented client-session claims; - executable release-artifact embedding example;
- schema-6 protocol inventory with registration-stub truth and per-surface stable coverage gates;
- daily editor eval/compile/load/interrupt/cancel workflows and live TCP E2E;
- inspector back/forward/refresh/actions, wire-record normalization, and stale-session provenance/recovery;
- live timeout/late-reply recovery plus debugger -> restart -> xref -> compile diagnostics -> continued-eval E2E coverage;
- 21 additional editor-adjacent compatibility RPCs promoted only where SLYNET already has native or explicitly emulated Janet semantics; the generated inventory moved from 49 to 70 directly tested functional operations, while missing operations fell from 189 to 172 and unwired definitions from 14 to 10;
- parser-sourcemap-backed static xref compatibility for
who-calls,who-binds,who-sets, andlist-callers, with caller identity plus exact source coordinates; modified-file refresh replaces prior facts and project refresh prunes deleted-file facts;who-referencesremains deliberately unwired until variable-read analysis is precise; - Janet-1.40-correct source-index cache signatures use
os/stat :modified; a same-size rewrite regression proves cache invalidation does not accidentally depend on file-size changes; - explicit Janet-emulated
compiler-macroexpand-1andcompiler-macroexpandcompatibility records that report unsupported CL environment semantics; - bounded Emacs-readable wire serialization for rich Janet debugger payloads and file-aware compile diagnostics that preserve source provenance.
Debugger truth
SLYNET can inspect Janet errors, stack/frame data, execution-unit state, source maps, and synthetic restart scopes. It can also cooperatively interrupt managed execution units. This is not equivalent to a resumable Common Lisp debugger continuation.
The next implementation layer is an explicit debugger-session/checkpoint state machine for instrumented Janet code. Step-into/over/out will only be claimed for that cooperative capability tier. Native uninstrumented frame resumability stays unsupported until Janet exposes a substrate that can provide it.
Instrumentation truth
The instrumentation estate is mixed and must not be described as all-or-none:
profile,profile-reset,profile-package, andprofile-reportare callable and directly tested wrapper-based profiling operations;slynet-trace-eval,slynet-trace-report, andslynet-clear-trace-reportare directly tested source-linked trace/timing operations;- legacy trace-dialog includes concrete helper/wrapper implementations such as
dialog-trace, but several are not registered as RPCs and therefore appear asimplemented_unwired; - sticker registries/record structures exist, but compile-time Janet source
instrumentation (
compile-for-stickersand the complete record/inspect flow) is still missing.
Public API truth
SLYNET 1.1.0 contains slynet/api.janet API version 1.
It provides:
- version and capabilities;
- initialization that guarantees supported core RPC registration before return;
- RPC interface/implementation lookup;
- in-process RPC invocation for context-free operations;
- server start/stop with loopback-only TCP binding by default;
- owned lifecycle contexts and transport-independent context status;
- an explicit API-v1 compatibility/deprecation policy and legacy import shim.
The API is part of the 1.1.0 stable release surface and is not retroactively
part of v1.0.7. See EMBEDDING_API.md and MIGRATING_FROM_SLY.md.
Remaining product gaps
The highest-value remaining gaps are tracked in ../ROADMAP.md:
- cooperative debugger sessions and stepping for instrumented code;
- instrumentation consolidation, timing trees and real sticker injection;
- expansion of directly mapped tests beyond the declared release-critical subset;
- Windows and remote/multi-user qualification remain outside the current support claim.