Skip to content

Commit 89c89f3

Browse files
committed
[docs] Bound GitHub requests and reconnect sessions
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 749ad85 commit 89c89f3

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

‎docs/decisions/0040-sha-pinned-connected-github-import.md‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,12 @@ the selected `.py` files sequentially to the current board directory.**
9999
7. **One connection session owns the commit.** The action captures the stable
100100
`Connection` facade's opaque local session stamp with `cwd`. The stamp must
101101
still be current before every board preflight and immediately before each
102-
`putFile`; attach or detach advances it, including reconnecting the same
103-
board. A mismatch stops the batch before the next board verb. This stamp is
104-
in-memory action consistency only—not identity, authentication, persisted
102+
`putFile`; attach or detach advances it. The facade also advances it once
103+
when an attached live connection leaves an established `ready`/`running`
104+
state for `connecting` or `disconnected`, so an in-place reconnect to the
105+
same board is a successor session; ordinary `ready` ↔ `running` transitions
106+
retain it. A mismatch stops the batch before the next board verb. This stamp
107+
is in-memory action consistency only—not identity, authentication, persisted
105108
provenance, or PBLE/1 wire data.
106109

107110
8. **The commit is sequential and honestly non-atomic.** After the entire
@@ -128,6 +131,9 @@ the selected `.py` files sequentially to the current board directory.**
128131
no tight or unbounded automatic retry. A positive supplied retry delay gates
129132
every network-producing action on the surface until its deadline; local
130133
navigation, selection, and review transitions cannot clear or bypass it.
134+
Every individual REST GET has one absolute wall-clock deadline spanning
135+
request send, response headers, and the complete bounded response body;
136+
arriving chunks do not extend it, and expiry aborts the request.
131137
Header-rejected HTTP responses have their body streams cancelled before the
132138
typed failure is returned so repeated failures do not strand resources.
133139

‎docs/specifications/App/TDD.md‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,10 @@ does not follow `download_url`, HTML links, or any arbitrary URL returned in a
769769
response. A response rejected from headers alone (including status or declared
770770
body length) has its body stream cancelled before the adapter publishes the
771771
typed failure, so repeated hostile responses cannot strand transport resources
772-
(SEC-10).
772+
(SEC-10). Each REST GET also owns one non-extending absolute wall-clock
773+
deadline that starts before the request is sent and covers both headers and the
774+
complete bounded body. Receiving a slow trickle never extends that deadline;
775+
expiry asks the transport to abort and maps to the neutral offline failure.
773776

774777
Resolution is a two-step logical operation:
775778

@@ -878,6 +881,12 @@ type-changed conflict invalidates consent and returns to review. This
878881
conservative recheck prevents the general Import tap or stale confirmation
879882
from authorizing an overwrite.
880883

884+
The stable facade rotates its opaque session stamp on attach/detach and once
885+
when an attached live connection leaves an established `ready`/`running`
886+
session for `connecting` or `disconnected`. A later in-place reconnect therefore
887+
uses the rotated successor stamp. Ordinary `ready` ↔ `running` transitions do
888+
not rotate it.
889+
881890
### 10.5 All-fetch validation and sequential commit
882891

883892
`GithubBoardImporter` constructs a candidate in two phases with a hard

0 commit comments

Comments
 (0)