| index cb0f94155..51b5b1760 100644 |
| --- a/internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv |
| +++ b/internal/provision/testdata/plan14-root-reads-self-serve-moves-2.tsv |
| @@ -23,7 +23,7 @@ internal/console/templates/settings.html external legacy accepted-legacy accepte |
| internal/provision/offline_move.go offlineBegin legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=root-input (J4, as OfflineStart); the console (cmd/console serve under console.service, user carlos-console): self-serve moves 1 Task 7's body (OfflineStart's, the state a parameter; a direct start advances move_seq and stamps move.seq, refusing ErrLifetimeExhausted at MaxInt64 before any write), and it now also creates the self-serve move in offline-queued for OfflineQueue (queued_at, staged_at and precheck_at at the caller's stamp, move.seq set to the record's move_seq, no advance) and records return_of; a stage and a queue hold nothing; its one site is still rec.ActiveRun.Open(), a method on the record's run state (RunState.Open), not a file read; self-serve moves 2 Task 2 file:Open@208 0a9b432ddf2f39a977c0651e377258b35c1d05635e9979583eeac6253d6c0ec8 |
| @coverage internal/provision d018e5699137db933be2142f7526d0d1d10b08170525886bd9c424cde5578b55 |
| # Task 3 (per-box reservations with a legacy projection and a sentinel, the fenced reclaim and the operator doors' bound admission), rev3=PROPOSED-self-serve-moves-2: no root read, class or task is added and no accepted-legacy unit is re-pinned, so the seal does not move. The new units (moves.ParseOfflineActive, moves.OfflineActiveBody, the console's offlinereserve.go, the doors' offlineApplyBound and offlineAdvanceBound) read no file: their reads are the bucket's control/offline-moves/active.json and the instance record through the judged readers and fenceRecord. Envelopes re-pinned in place (Task 2's rows replaced): internal/console (offlinereserve.go, the start and stage doors, the Server's two evidence fields) and internal/moves (the reservation table in offline.go). |
| -@coverage internal/console 4dfa31277b9a3cbbae60c08f01c40d4adce75b1918719a165e05513f75133c73 |
| +@coverage internal/console ae4a1f3937058bf14cf053946321af10ef42abe6bc0d081c230011a4f8522475 |
| @coverage internal/moves 6a61fc2680d29b8998a383c7c65756f78a06ac312279148bdde752546686cd8d |
| # Task 4 (the journal, the events table, the console lease and the pass skeleton), rev3=PROPOSED-self-serve-moves-2: no root read, class or task is added. The console SQLite journal (selfserve_store.go) adds twenty-two units, each frozen accepted-legacy with a reviewed basis (console SQL as carlos-console, no bucket or root action), and the lease's console name adds one crypto/rand read (Server.selfServeConsoleID); serve (in place: the paging arm takes the store, the pass is started), NewServer (the row evidence and the recovery-mode scan) and Store.migrate (migrateSelfServe) are re-pinned. The seal moves. The lease and the pass read control/offline-moves/console.json and active.json from the bucket, not a file. Envelopes re-pinned in place: cmd/console, internal/console and internal/provision (WithWriteGuard in WriteRecord). |
| @legacy a8dd51a494ab3cd2ad371ded2850b6d78492569729527ea82cd8dd0f2b418a78 internal/console/selfserve_lease.go Server.selfServeConsoleID legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads crypto/rand once per process for the random console name the self-serve moves lease carries; randomness grants no root authority file:Read@110 3303b18ec5c77ccaf662064801f94276bfe947c31378cc1ecb8c4fe509d5d4d1 |
| @@ -37,8 +37,8 @@ internal/console/selfserve_store.go Store.AdmitSelfServeMove legacy accepted-leg |
| @legacy c2e1ad98b9e02efa012eee032c98c16b38efbc62b4ba9ff1b52bfb0822762cd2 internal/console/selfserve_store.go Store.AdvanceSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: advances one self-serve row's phase, predicated on the phase, the abort flag and an optional confirmed nonce it consumes, with the phase event in one SQLite transaction; no bucket or root action file:Exec@230 79b0ec7f50cf599f0661de8fbb273db6e20faf7adb95d9f6dd8e459c5a1de41e |
| @legacy bb4226610c6d82f9c7ca9a79e6e4132ad0150bfa1841fa8db3364c4793c97fbb internal/console/selfserve_store.go Store.ConfirmSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: marks a self-serve request confirmed, predicated on its nonce and unconsumed, unvoided, unconfirmed flags; no bucket or root action file:Exec@221 811edad437cdf69f10bd91c33daa7330bfdf92934ef10c9b7e61ba01b62e4f94 |
| internal/console/selfserve_store.go Store.ConfirmSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: marks a self-serve request confirmed, predicated on its nonce and unconsumed, unvoided, unconfirmed flags; no bucket or root action file:Exec@221 811edad437cdf69f10bd91c33daa7330bfdf92934ef10c9b7e61ba01b62e4f94 |
| -@legacy 95da6de389a580fa5c0802c37d9409f171f34d1b756765ffa962087687aa679b internal/console/selfserve_store.go Store.ConsumeSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: consumes a confirmed self-serve request with the next substep and deadline, predicated on its nonce; no bucket or root action file:Exec@122 56964152a1adc56490a602c9649b40affee2e11b86ee48200721e9e24ca95229 |
| -internal/console/selfserve_store.go Store.ConsumeSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: consumes a confirmed self-serve request with the next substep and deadline, predicated on its nonce; no bucket or root action file:Exec@122 56964152a1adc56490a602c9649b40affee2e11b86ee48200721e9e24ca95229 |
| +@legacy a68001a82e950a2786b2cf460cbdc621b440084eb0936ef9b77c6bd4afd0600c internal/console/selfserve_store.go Store.ConsumeSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: consumes a confirmed self-serve request with the next substep and deadline, predicated on its nonce; no bucket or root action; self-serve moves 2 Task 9: the UPDATE runs in one transaction with the decision's events (ssWithAlso), only when it wins file:Exec@199 8374e93bd9afe919729de068de0a45135e0f111bfeedaa1c555109903b4a8d11 |
| +internal/console/selfserve_store.go Store.ConsumeSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: consumes a confirmed self-serve request with the next substep and deadline, predicated on its nonce; no bucket or root action; self-serve moves 2 Task 9: the UPDATE runs in one transaction with the decision's events (ssWithAlso), only when it wins file:Exec@199 8374e93bd9afe919729de068de0a45135e0f111bfeedaa1c555109903b4a8d11 |
| @legacy 2af004d044f348306bcea936da03941d474ba305eb23a04687947890ad7e8d15 internal/console/selfserve_store.go Store.FinishSelfServeMove legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: records a self-serve row's outcome, consumes its confirmed request and inserts the terminal event in one SQLite transaction, only while the row has no outcome; no bucket or root action; self-serve moves 2 Task 8: the statement also sets phase done and clears open_record_pending, and refuses a row whose request is unconfirmed file:Exec@290,file:QueryRow@922 b8171ea50d77204a37e862edb065384ed466b9ed1191a3b17bf1b536d84ce550 |
| @legacy 888bde94f97959ae38336fc48530f9dd76532faea049743f1f57bee01550a20a internal/console/selfserve_store.go Store.HostHasIssuedRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: counts a host's self-serve rows with an issued request still in flight, for the reservation reclaim rule; no bucket or root action file:QueryRow@96 a0fef5ee78031bafdbebd06f2268011a2f2d4f700c01617d04da596ce40c8c89 |
| internal/console/selfserve_store.go Store.HostHasIssuedRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: counts a host's self-serve rows with an issued request still in flight, for the reservation reclaim rule; no bucket or root action file:QueryRow@96 a0fef5ee78031bafdbebd06f2268011a2f2d4f700c01617d04da596ce40c8c89 |
| @@ -59,8 +59,8 @@ internal/console/selfserve_store.go Store.SetSelfServeExpiry legacy accepted-leg |
| internal/console/selfserve_store.go Store.UnemittedSelfServeEvents legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: lists undelivered self-serve events from the console SQLite store; no bucket or root action file:Query@94 be88efeaf911708fdc26a7ab288ff49ac04768ce0a657f1107ceb4eb4fd65d2a |
| @legacy 319506acaa32df215a15bbdbac67c2da01be9ec85c9e06124052397c4665397e internal/console/selfserve_store.go Store.VoidSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: voids an unconfirmed, unconsumed self-serve request, predicated on its nonce; no bucket or root action file:Exec@74 a34f7e295861352741da1c27a13ab5185b4e900eedf597b05c391306d0603c57 |
| internal/console/selfserve_store.go Store.VoidSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: voids an unconfirmed, unconsumed self-serve request, predicated on its nonce; no bucket or root action file:Exec@74 a34f7e295861352741da1c27a13ab5185b4e900eedf597b05c391306d0603c57 |
| -@legacy 5dfb7814df4942c488984e6aa1a0e4872884468c735fb2e5217fe0f19148528c internal/console/selfserve_store.go Store.migrateSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: creates the self-serve journal tables (self_serve_moves with its open-row unique index, self_serve_events, self_serve_timings) and move_timings at unarmed store boot, idempotently; no bucket or root action file:Exec@4602 2738ade2f699608c3878071326acc0140d764ab5d21b036b28faa7add6e30f7b |
| -internal/console/selfserve_store.go Store.migrateSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: creates the self-serve journal tables (self_serve_moves with its open-row unique index, self_serve_events, self_serve_timings) and move_timings at unarmed store boot, idempotently; no bucket or root action file:Exec@4602 2738ade2f699608c3878071326acc0140d764ab5d21b036b28faa7add6e30f7b |
| +@legacy 751b7c962a859b4e6e90a8abed8e0166b5e1dfc5f7f20542b73a56595bd7067e internal/console/selfserve_store.go Store.migrateSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: creates the self-serve journal tables (self_serve_moves with its open-row unique index, self_serve_events, self_serve_timings) and move_timings at unarmed store boot, idempotently; no bucket or root action; self-serve moves 2 Task 9: adds self_serve_events.attempts idempotently (ALTER TABLE, a duplicate column tolerated) file:Exec@4602,file:Exec@4800 99afc5640823670ed81c1f33d6f1630e5c92028bf2bea2aa55d679aa6f60f652 |
| +internal/console/selfserve_store.go Store.migrateSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: creates the self-serve journal tables (self_serve_moves with its open-row unique index, self_serve_events, self_serve_timings) and move_timings at unarmed store boot, idempotently; no bucket or root action; self-serve moves 2 Task 9: adds self_serve_events.attempts idempotently (ALTER TABLE, a duplicate column tolerated) file:Exec@4602,file:Exec@4800 99afc5640823670ed81c1f33d6f1630e5c92028bf2bea2aa55d679aa6f60f652 |
| @legacy 8df4dff0cd99a5606cdc1197e88f0039ded580fa3043b7705de91ccf362bf435 internal/console/selfserve_store.go Store.selfServeMoves legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: lists self-serve move rows under a fixed predicate from the console SQLite store; no bucket or root action file:Query@99 3780495187ef409c945d603d2aabe9aeecd02044ba034ee9e349d2f38b551466 |
| internal/console/selfserve_store.go Store.selfServeMoves legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: lists self-serve move rows under a fixed predicate from the console SQLite store; no bucket or root action file:Query@99 3780495187ef409c945d603d2aabe9aeecd02044ba034ee9e349d2f38b551466 |
| @legacy 7696cdcbbb86d8e2adb5e1e896d4def7c4ffe6d62aeea4839f426e74c6f718f6 internal/console/selfserve_store.go Store.selfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads one self-serve row's request columns with cut_requested_at; no bucket or root action file:QueryRow@270 491bb9fe1c4b487f130d3a07c2a840995e408e86d6f8afaa561be57c61442dbb |
| @@ -160,8 +160,8 @@ internal/console/apiinstancemove_offline.go Server.participantIdentityFor legacy |
| internal/console/selfserve_door.go Server.selfServeEstimate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the estimate of a self-serve move not yet requested: reads the request's URL query (region), the console SQLite rows and the prepare's bucket evidence, writes nothing; no file read, no root action; fix round 1: the record checks before the journal read (selfServeOpenRow) file:Query@354 12c7adb0d9d0682fd3ae9ec9f80884cf53899891aa4cd38ce5a0a71eff62c8b4 |
| @legacy 00fcfd1a948069335f118cf07dd757b90d2020fad8caef0719eb75e8d3cc261c internal/console/selfserve_door.go selfServeBusy legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the prepare's record checks; its one site is rec.ActiveRun.Open(), a method of the record already read; no file read, no root action; fix round 1: the open row is checked after it, from the journal file:Open@144 b9949bc89e1ed588d04dbd042d2a3b8a530546b85e05bf6f7fd3daf4d97a47b1 |
| internal/console/selfserve_door.go selfServeBusy legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the prepare's record checks; its one site is rec.ActiveRun.Open(), a method of the record already read; no file read, no root action; fix round 1: the open row is checked after it, from the journal file:Open@144 b9949bc89e1ed588d04dbd042d2a3b8a530546b85e05bf6f7fd3daf4d97a47b1 |
| -@legacy c2b468656ad27a5c0d554d7505e736deb1fe015d9b1e383240f447622f5f16a7 internal/console/selfserve_estimate.go Server.estimate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: pure arithmetic over byte counts and the default terms; its sites are the estimate's Open term (a struct field named Open); no file read, no root action file:Open@259,file:Open@268,file:Open@356 9ce9332e764cb63574f16926dabf050a1429ceb10ff44b12c02447c08c0e5e09 |
| -internal/console/selfserve_estimate.go Server.estimate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: pure arithmetic over byte counts and the default terms; its sites are the estimate's Open term (a struct field named Open); no file read, no root action file:Open@259,file:Open@268,file:Open@356 9ce9332e764cb63574f16926dabf050a1429ceb10ff44b12c02447c08c0e5e09 |
| +@legacy 70448bf5407befd2ce8e6199738b27a86597b7ff6fd490e3fd0fb9768061a74d internal/console/selfserve_estimate.go Server.estimate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: pure arithmetic over byte counts and the default terms; its sites are the estimate's Open term (a struct field named Open); no file read, no root action; self-serve moves 2 Task 9: the terms' rules come from estimateRules (the region pair's medians, else the defaults) file:Open@251,file:Open@260,file:Open@348 914361754b7f03e34ef8bc534ebbe570ae8829b4a1623592c611fe616be01328 |
| +internal/console/selfserve_estimate.go Server.estimate legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: pure arithmetic over byte counts and the default terms; its sites are the estimate's Open term (a struct field named Open); no file read, no root action; self-serve moves 2 Task 9: the terms' rules come from estimateRules (the region pair's medians, else the defaults) file:Open@251,file:Open@260,file:Open@348 914361754b7f03e34ef8bc534ebbe570ae8829b4a1623592c611fe616be01328 |
| @legacy bbf40550e574bbb95012d6a817c3b71917311f71dba4061ddbad785072e61384 internal/console/selfserve_estimate.go type estimateTerms legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: a type declaration whose Open field is the open phase's duration; no file read, no root action file:Open@47 70ba8214af2db2b694d87c83750665856669faabb91359c20d6483503e69f77c |
| internal/console/selfserve_estimate.go type estimateTerms legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: a type declaration whose Open field is the open phase's duration; no file read, no root action file:Open@47 70ba8214af2db2b694d87c83750665856669faabb91359c20d6483503e69f77c |
| @legacy e7a1b4b8179de6b4d263f785208f5bad87eaa2ec4ff8eb07876e01f6034002a8 internal/console/selfserve_estimate.go var estimateDefaults legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the estimate's default terms, a literal whose Open field is the open phase's term; no file read, no root action file:Open@247,file:Open@49 e7c598c8e4a4fa1e4df207e463c6fd722f89d0955f896baa439ce328db821849 |
| @@ -175,10 +175,10 @@ internal/console/selfserve_apply.go newRequestNonce legacy accepted-legacy accep |
| internal/console/selfserve_checks.go targetDataPaths legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: names the instance's data paths under the data directory a target box's ready report uses (/data when the report names none), the fact set the job requires; reads no file and grants nothing (self-serve moves 2: the raw nested directory is named through internal/layout's RawInstanceDir) data-literal@84 71d187d02044fc424ce3e0022dfe9c3ce57315912de5f55053adab316d5fd577 |
| @legacy 3e7ecd729f078de5257e5e19082a91c34057267018b7e58abba3940332cdf896 internal/console/selfserve_job.go selfServePhaseDeadline legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: computes a phase's step deadline from the row's estimate terms (the matched Open is est.Open, the open term, a duration); reads no file file:Open@709 defa48814bd678c1ededf52d12176d2ddddc8a9096f91f1fb94153a6f76146f6 |
| internal/console/selfserve_job.go selfServePhaseDeadline legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: computes a phase's step deadline from the row's estimate terms (the matched Open is est.Open, the open term, a duration); reads no file file:Open@709 defa48814bd678c1ededf52d12176d2ddddc8a9096f91f1fb94153a6f76146f6 |
| -@legacy 9f0761052e7df8711c17427d8d66fde2ae6a36592d59c11ce95963e774202cdf internal/console/selfserve_store.go Store.AbortSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: records the job's own abort decision on one open self-serve row (abort_requested_at, outcome_reason, reason), predicated on no outcome and no abort yet; no bucket or root action file:Exec@207 165d536f9be74472c8f01e9a50b7a97d793c8f5731db091695202fe8eeaa8aeb |
| -internal/console/selfserve_store.go Store.AbortSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: records the job's own abort decision on one open self-serve row (abort_requested_at, outcome_reason, reason), predicated on no outcome and no abort yet; no bucket or root action file:Exec@207 165d536f9be74472c8f01e9a50b7a97d793c8f5731db091695202fe8eeaa8aeb |
| -@legacy a94ae18585d7d25c1e71868e1eef0ff3c88eaccac7bc6cd5130ad504c557236a internal/console/selfserve_store.go Store.AdvanceSelfServeToStep legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: AdvanceSelfServe's UPDATE and phase event with the substep a parameter (reconciliation's entry, the cut handoff's adopted or issue) and staging_started_at and next_maintenance_at in the same statement, in one SQLite transaction; no bucket or root action; self-serve moves 2 Task 8: the statement also requires outcome = '' (a finished row is never advanced) file:Exec@344 33ed2690b454b0406194b5cf27f677ebe0381e3e6d55fd27db8203f5904905d7 |
| -internal/console/selfserve_store.go Store.AdvanceSelfServeToStep legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: AdvanceSelfServe's UPDATE and phase event with the substep a parameter (reconciliation's entry, the cut handoff's adopted or issue) and staging_started_at and next_maintenance_at in the same statement, in one SQLite transaction; no bucket or root action; self-serve moves 2 Task 8: the statement also requires outcome = '' (a finished row is never advanced) file:Exec@344 33ed2690b454b0406194b5cf27f677ebe0381e3e6d55fd27db8203f5904905d7 |
| +@legacy 8a58458c808454c9071f4666695616d6408df679b112624a439a252fe28dd85e internal/console/selfserve_store.go Store.AbortSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: records the job's own abort decision on one open self-serve row (abort_requested_at, outcome_reason, reason), predicated on no outcome and no abort yet; no bucket or root action; self-serve moves 2 Task 9: the UPDATE runs in one transaction with its refusal event and the caller's events (ssWithAlso) file:Exec@353 a0906ed4afbb45b4f0630b6ee917a3e11fd2ff4d07a60a2ce49afd923e89fb94 |
| +internal/console/selfserve_store.go Store.AbortSelfServe legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: records the job's own abort decision on one open self-serve row (abort_requested_at, outcome_reason, reason), predicated on no outcome and no abort yet; no bucket or root action; self-serve moves 2 Task 9: the UPDATE runs in one transaction with its refusal event and the caller's events (ssWithAlso) file:Exec@353 a0906ed4afbb45b4f0630b6ee917a3e11fd2ff4d07a60a2ce49afd923e89fb94 |
| +@legacy d555ab86e6603cd297b46c090f8be25a94c770a1cfe4a4f764831fa5928857c3 internal/console/selfserve_store.go Store.AdvanceSelfServeToStep legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: AdvanceSelfServe's UPDATE and phase event with the substep a parameter (reconciliation's entry, the cut handoff's adopted or issue) and staging_started_at and next_maintenance_at in the same statement, in one SQLite transaction; no bucket or root action; self-serve moves 2 Task 8: the statement also requires outcome = '' (a finished row is never advanced); self-serve moves 2 Task 9: the caller's events and timing marks run in the advancing transaction before the phase event, only when the advance wins file:Exec@360 9d9e0258906848a66aa963afe50ac90e02d9553d5b4946bf633a101d8b51641f |
| +internal/console/selfserve_store.go Store.AdvanceSelfServeToStep legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: AdvanceSelfServe's UPDATE and phase event with the substep a parameter (reconciliation's entry, the cut handoff's adopted or issue) and staging_started_at and next_maintenance_at in the same statement, in one SQLite transaction; no bucket or root action; self-serve moves 2 Task 8: the statement also requires outcome = '' (a finished row is never advanced); self-serve moves 2 Task 9: the caller's events and timing marks run in the advancing transaction before the phase event, only when the advance wins file:Exec@360 9d9e0258906848a66aa963afe50ac90e02d9553d5b4946bf633a101d8b51641f |
| @legacy 9a71ef08171b8178280d1b13431a58e24c4f5a3a76e7fc752fad223c94e8bdd1 internal/console/selfserve_store.go Store.ConsumeSelfServeMaintenance legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: consumes one confirmed maintenance request back to idle, predicated on its nonce, its confirmation, no consumption and no cut; no bucket or root action file:Exec@119 0617bcf4892edf006203e3395fc30e5efc01d8c5654e63daf47c852dc3cb07c7 |
| internal/console/selfserve_store.go Store.ConsumeSelfServeMaintenance legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: consumes one confirmed maintenance request back to idle, predicated on its nonce, its confirmation, no consumption and no cut; no bucket or root action file:Exec@119 0617bcf4892edf006203e3395fc30e5efc01d8c5654e63daf47c852dc3cb07c7 |
| @legacy f3c0942345fb8194f311733b4eb48773240fbf054b7d7ae5ae2d01dc4fa0d90e internal/console/selfserve_store.go Store.ExpireSelfServeRequest legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: decides one self-serve request's expiry, predicated on its nonce, the deadline and the cut state the worker read, unconsumed and unexpired; no bucket or root action file:Exec@126 49d1e55948e9b1e8060997cd2bf530cce028d0c3da96e10cdcc1e68048786498 |
| @@ -206,3 +206,28 @@ internal/host/movesoffline_return.go movesWorker.returnLeftovers legacy accepted |
| @removed internal/console/selfserve_store.go Store.FinishSelfServeMove H3 census-ruling-PROPOSED-self-serve-moves-2;rev3=PROPOSED-self-serve-moves-2;basis=remains declared but has no direct read; its statement moved unchanged to finishSelfServeMove, classified below, which FinishSelfServeMove calls with release_pending 1; proposed removal only |
| @legacy 5fa093abea94ae2d7bd67ee3221e07eda12402fb56698c6455ad82c75108673e internal/console/selfserve_store.go Store.finishSelfServeMove legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: FinishSelfServeMove's statement moved here unchanged by Task 8 fix round 1, with release_pending set by its two callers (FinishSelfServeMove 1, YieldSelfServeMove 0, a move an operator took over); one predicated UPDATE of the console SQLite journal and its row count; no root input file:Exec@304,file:QueryRow@953 ccdea95c3714d983a25511eeb2801220b96b4dc8a5fe6892e1ec816c3ac33775 |
| internal/console/selfserve_store.go Store.finishSelfServeMove legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: FinishSelfServeMove's statement moved here unchanged by Task 8 fix round 1, with release_pending set by its two callers (FinishSelfServeMove 1, YieldSelfServeMove 0, a move an operator took over); one predicated UPDATE of the console SQLite journal and its row count; no root input file:Exec@304,file:QueryRow@953 ccdea95c3714d983a25511eeb2801220b96b4dc8a5fe6892e1ec816c3ac33775 |
| +# Task 9 (the estimate, the timings and the events), rev3=PROPOSED-self-serve-moves-2: no root read, class or task is added and no record write. Twelve accepted-legacy units are added, each console SQLite or a URL query, none a file: the timing marks and move_timings (ssMarkTx, MarkSelfServeTiming, SelfServeTimings, InsertMoveTiming, MoveTimings), the estimate's medians (estimateRules, whose sites are the Open term), the events (ssRowEventTx, SelfServeEvents, the dead-letter selfServeEventDeliveryFailed), RecordSelfServeHealth and SetSelfServeReason (now transactions with their events) and the operator status door (its ?log=1 query). Server.estimate, Store.AbortSelfServe, Store.AdvanceSelfServeToStep, Store.ConsumeSelfServeRequest and Store.migrateSelfServe are re-pinned in place. The seal moves. The internal/console envelope is re-pinned in place. |
| +@legacy 990c2a58e7657184add84d7aa4ba65124f5e45b13e68d06918e9a07de08c4b67 internal/console/apiinstancemove_offline.go Server.handleAPIInstanceOfflineStatus legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the operator offline status door; its site is the request URL's Query (the ?log=1 switch for the move's events, self-serve moves 2 Task 9), not a file; it reads the record through offlineGate and the console SQLite journal; no root action file:Query@213 2341180d34b7c3be07f910ab719c9ec40254de662d414c7ba4a4a7feb59b0b40 |
| +internal/console/apiinstancemove_offline.go Server.handleAPIInstanceOfflineStatus legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the operator offline status door; its site is the request URL's Query (the ?log=1 switch for the move's events, self-serve moves 2 Task 9), not a file; it reads the record through offlineGate and the console SQLite journal; no root action file:Query@213 2341180d34b7c3be07f910ab719c9ec40254de662d414c7ba4a4a7feb59b0b40 |
| +@legacy 610946fe48a8f52616660f3906324e42c79fef3a50b8a8720321d0ec3f7ca657 internal/console/selfserve_estimate.go Server.estimateRules legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the estimate's terms refined from the region pair's move_timings medians in the console SQLite; its sites are the Open term (a struct field named Open), not a file; no root action file:Open@1175,file:Open@74 8d9cb059e2e641c9d313e08034839663488651b18b1d99dd091be50bb2b980f6 |
| +internal/console/selfserve_estimate.go Server.estimateRules legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: the estimate's terms refined from the region pair's move_timings medians in the console SQLite; its sites are the Open term (a struct field named Open), not a file; no root action file:Open@1175,file:Open@74 8d9cb059e2e641c9d313e08034839663488651b18b1d99dd091be50bb2b980f6 |
| +@legacy 66f14cd5f12b609aa5a53aa4e9c9ca2a6f8de2deb410b7f4841e4145192b6c4e internal/console/selfserve_estimate.go Store.InsertMoveTiming legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: one INSERT ... ON CONFLICT DO NOTHING of a finished move's phase timing into the console SQLite move_timings; no bucket or root action file:Exec@208 cab08b1af56d4130e2c83e77d7324558c1e336edf3aefdc0455fad80d242f886 |
| +internal/console/selfserve_estimate.go Store.InsertMoveTiming legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: one INSERT ... ON CONFLICT DO NOTHING of a finished move's phase timing into the console SQLite move_timings; no bucket or root action file:Exec@208 cab08b1af56d4130e2c83e77d7324558c1e336edf3aefdc0455fad80d242f886 |
| +@legacy 0a99bf6b173528019e217c62566e3e9b7e0f9a0f695c962fa8425ff89977d87d internal/console/selfserve_estimate.go Store.MarkSelfServeTiming legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: one console SQLite transaction that checks the self-serve row exists and inserts its timing mark insert-only (ssMarkTx); no bucket or root action file:QueryRow@210 d67ab8a6b3d3144a9ea18be9d37c7053635cb8f01c2c52368193445ad0ab92db |
| +internal/console/selfserve_estimate.go Store.MarkSelfServeTiming legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: one console SQLite transaction that checks the self-serve row exists and inserts its timing mark insert-only (ssMarkTx); no bucket or root action file:QueryRow@210 d67ab8a6b3d3144a9ea18be9d37c7053635cb8f01c2c52368193445ad0ab92db |
| +@legacy 5eca6c14c25b5477a782de5cb2de4142b99a2af0e02729d710b144900040848e internal/console/selfserve_estimate.go Store.MoveTimings legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads the region pair's newest move_timings rows of one phase from the console SQLite for the estimate's medians; no bucket or root action file:Query@117 2e8cfbae053573fcf997e8d05d06ef3b2a3c200e19dda7278dbb5d24a8e902ec |
| +internal/console/selfserve_estimate.go Store.MoveTimings legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads the region pair's newest move_timings rows of one phase from the console SQLite for the estimate's medians; no bucket or root action file:Query@117 2e8cfbae053573fcf997e8d05d06ef3b2a3c200e19dda7278dbb5d24a8e902ec |
| +@legacy a7e744a590f3b1b2c98b2f3b295af0174401e4ceff23c352e789db74b97ba4be internal/console/selfserve_estimate.go Store.SelfServeTimings legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads one self-serve row's timing marks from the console SQLite; no bucket or root action file:Query@91 994cc662ff52770f6f54dbc1d89aa51dfb726e68174a797da9ad85d03aed6868 |
| +internal/console/selfserve_estimate.go Store.SelfServeTimings legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads one self-serve row's timing marks from the console SQLite; no bucket or root action file:Query@91 994cc662ff52770f6f54dbc1d89aa51dfb726e68174a797da9ad85d03aed6868 |
| +@legacy f24b99944010633cde8a38a952c9314c189649f432f65c8beb6c06fd23449d49 internal/console/selfserve_estimate.go ssMarkTx legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: inserts a timing mark into self_serve_timings insert-only (ON CONFLICT DO NOTHING) and, only when inserted, its timing event, inside the caller's console SQLite transaction; no bucket or root action file:Exec@114 437d4b8e5753538ece597200a6966104357062eb38c76fea2fabd371ba685882 |
| +internal/console/selfserve_estimate.go ssMarkTx legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: inserts a timing mark into self_serve_timings insert-only (ON CONFLICT DO NOTHING) and, only when inserted, its timing event, inside the caller's console SQLite transaction; no bucket or root action file:Exec@114 437d4b8e5753538ece597200a6966104357062eb38c76fea2fabd371ba685882 |
| +@legacy 410979f7381e4cafd5a5421f6634245f6270bfc0ca375649e47f115438b0a5dd internal/console/selfserve_events.go Store.SelfServeEvents legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads one self-serve row's events, delivered or not, oldest first, from the console SQLite for the operator status's ?log=1; no bucket or root action file:Query@85 fdea52d5fb1d88f49de765326210fc08221499ed754beda52d58b4f2e2bb0fca |
| +internal/console/selfserve_events.go Store.SelfServeEvents legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads one self-serve row's events, delivered or not, oldest first, from the console SQLite for the operator status's ?log=1; no bucket or root action file:Query@85 fdea52d5fb1d88f49de765326210fc08221499ed754beda52d58b4f2e2bb0fca |
| +@legacy e20db6358744d98959818125abfdf86dddca87b3f225ca2af08d7b5e6fcd3b11 internal/console/selfserve_events.go Store.selfServeEventDeliveryFailed legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: counts a failed event delivery and at the fifth dead-letters the event (emitted, detail prefixed undeliverable:) in one predicated console SQLite UPDATE, reading emitted back; no bucket or root action file:Exec@196,file:QueryRow@638 b081169849b4320304357c77fdb4aacd6a74c7043b99bfeee33b22f65bb36df7 |
| +internal/console/selfserve_events.go Store.selfServeEventDeliveryFailed legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: counts a failed event delivery and at the fifth dead-letters the event (emitted, detail prefixed undeliverable:) in one predicated console SQLite UPDATE, reading emitted back; no bucket or root action file:Exec@196,file:QueryRow@638 b081169849b4320304357c77fdb4aacd6a74c7043b99bfeee33b22f65bb36df7 |
| +@legacy 4a7bfc12f7114a102dc6a16f54af5fa908459ba05d61936c95cc1361aa17bb08 internal/console/selfserve_events.go ssRowEventTx legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads the self-serve row's phase inside the caller's console SQLite transaction to name a non-phase event; no bucket or root action file:QueryRow@145 0178919c9abe7899ec610cec24880fbe7e8f93b7483f3de4a2d0b534ead8688b |
| +internal/console/selfserve_events.go ssRowEventTx legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads the self-serve row's phase inside the caller's console SQLite transaction to name a non-phase event; no bucket or root action file:QueryRow@145 0178919c9abe7899ec610cec24880fbe7e8f93b7483f3de4a2d0b534ead8688b |
| +@legacy d25280e2618dba815899677401dcfe262c5f70fe4a4e1d9602a0685f0e17ae14 internal/console/selfserve_store.go Store.RecordSelfServeHealth legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: counts one health probe on a self-serve row and inserts its health:probe event in one console SQLite transaction (it used setSelfServe before self-serve moves 2 Task 9); no bucket or root action file:Exec@303 920990b6764563c6ee59d29d2df3c865663481fd4c18992af001d66ca5938b42 |
| +internal/console/selfserve_store.go Store.RecordSelfServeHealth legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: counts one health probe on a self-serve row and inserts its health:probe event in one console SQLite transaction (it used setSelfServe before self-serve moves 2 Task 9); no bucket or root action file:Exec@303 920990b6764563c6ee59d29d2df3c865663481fd4c18992af001d66ca5938b42 |
| +@legacy 67af16969da64c16d52ccf335bf04c93b29bed42fb4cd0d75e3f1a8b35358aac internal/console/selfserve_store.go Store.SetSelfServeReason legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads a self-serve row's reason and sets the new one, inserting a waiting event only when it changed, in one console SQLite transaction (it used setSelfServe before self-serve moves 2 Task 9); no bucket or root action file:Exec@398,file:QueryRow@168 2140c1c8be9cd230d807b93778faf146f025b5a1b2a533c935e6ddf9f55eda5b |
| +internal/console/selfserve_store.go Store.SetSelfServeReason legacy accepted-legacy accepted-legacy;rev3=PROPOSED-self-serve-moves-2;basis=console.service user carlos-console, J4 root-input: reads a self-serve row's reason and sets the new one, inserting a waiting event only when it changed, in one console SQLite transaction (it used setSelfServe before self-serve moves 2 Task 9); no bucket or root action file:Exec@398,file:QueryRow@168 2140c1c8be9cd230d807b93778faf146f025b5a1b2a533c935e6ddf9f55eda5b |