This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# Phase 1.0Z: offline passive batch contract
|
||||
|
||||
Status: `PASSIVE_LF_BATCH_CONTRACT_COMPLETE_LIVE_TRANSPORT_BLOCKED`
|
||||
|
||||
Date: 2026-07-22
|
||||
|
||||
Phase 1.0Z defines and tests a target-free host model only. It creates no
|
||||
socket, address, sender CLI, target code or artifact. No PS5 action occurred.
|
||||
|
||||
## Contract
|
||||
|
||||
An already validated Phase-1.0W `SessionPlan` can produce exactly one immutable
|
||||
outbound batch:
|
||||
|
||||
| Window | Exact byte shape | Bound |
|
||||
|---|---|---|
|
||||
| `T2_GREETING_AND_HELP` | `help` followed by LF | 5 bytes |
|
||||
| `T3_ONE_EXACT_PATH` | `stat PATH` LF, then `sum PATH` LF | 1,035 bytes |
|
||||
|
||||
The path is the existing normalized absolute-path alphabet, ASCII-encoded and
|
||||
at most 512 bytes. NUL, CR, IAC (`0xff`), whitespace inside the path and shell
|
||||
metacharacters cannot enter the batch. The contract retains no target address.
|
||||
It permits one outbound batch, no retry, no reconnect and no resume.
|
||||
|
||||
Plain LF is accepted by both audited official source families. The legacy
|
||||
v0.7-v0.8 server passes it through; v0.9-v0.19 `libtelnet` also passes plain LF
|
||||
to `sh_readline`. The model does not select a deployed family.
|
||||
|
||||
## Passive receive and completion
|
||||
|
||||
The accumulator accepts only bytes already supplied by a synthetic caller. It
|
||||
does not own a transport or clock. Any incoming IAC is rejected because this
|
||||
passive contract emits no negotiation and both audited families send none
|
||||
proactively. That fail-closed rule avoids silently adding Telnet replies or
|
||||
signal semantics.
|
||||
|
||||
Prompt text and remote EOF are never completion events. Only the explicit
|
||||
`seal_at_hard_deadline(true)` model event can request sealing. This is a
|
||||
synthetic boundary, not a working timer or proof that a future blocking receive
|
||||
can be preempted.
|
||||
|
||||
Sealing is successful only when:
|
||||
|
||||
- T2 contains a complete help listing matching the known v0.7 or v0.19 source
|
||||
family fingerprint;
|
||||
- T3 contains `stat` metadata including size and a non-cryptographic BSD
|
||||
rotate-16 `sum` for the one exact allowed path.
|
||||
|
||||
Partial output, unknown help, missing stat, missing sum, invalid UTF-8,
|
||||
unexpected firmware metadata, IAC and a missing deadline event all fail closed.
|
||||
The sanitized result never proves an exact binary or device behavior.
|
||||
|
||||
## Effects and limitations
|
||||
|
||||
The offline model has no side effects. A future real T2/T3 session would still
|
||||
need explicit acceptance of the automatic model/serial/firmware/temperature/
|
||||
frequency greeting, shell process and connection state. T3 reads one file;
|
||||
that may cause low-level effects such as atime, cache, accounting and scheduler
|
||||
activity. Those effects are not claimed absent.
|
||||
|
||||
Unresolved blockers remain:
|
||||
|
||||
- exact deployed shsrv identity and family;
|
||||
- a real bounded adapter and preemptible hard deadline;
|
||||
- single-write/short-write behavior in current shsrv;
|
||||
- live chunking, disconnect, cleanup and restart behavior on firmware 9.60;
|
||||
- physical erasure of sensitive bytes from host memory;
|
||||
- directory durability for exclusive evidence inherited from Phase 1.0X.
|
||||
|
||||
## Decision
|
||||
|
||||
The offline passive batch contract is complete. Live transport remains blocked
|
||||
and unauthorized. The next permitted step is an offline fake-adapter
|
||||
integration that injects the exact batch and synthetic deadline without adding
|
||||
a socket, address, device client or device action.
|
||||
Reference in New Issue
Block a user