hikoutei 0.5.10 → 0.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +6 -0
  2. package/dist/application/sync/outbound/reconciliation/CleanupScanner.d.ts +12 -6
  3. package/dist/application/sync/outbound/reconciliation/CleanupScanner.d.ts.map +1 -1
  4. package/dist/application/sync/outbound/reconciliation/CleanupScanner.js +12 -6
  5. package/dist/application/sync/outbound/reconciliation/CleanupScanner.js.map +1 -1
  6. package/dist/application/sync/outbound/reconciliation/cleanup.d.ts +39 -13
  7. package/dist/application/sync/outbound/reconciliation/cleanup.d.ts.map +1 -1
  8. package/dist/application/sync/outbound/reconciliation/cleanup.js +91 -25
  9. package/dist/application/sync/outbound/reconciliation/cleanup.js.map +1 -1
  10. package/dist/cli/args.d.ts +50 -0
  11. package/dist/cli/args.d.ts.map +1 -0
  12. package/dist/cli/args.js +139 -0
  13. package/dist/cli/args.js.map +1 -0
  14. package/dist/cli/confirm.d.ts +31 -0
  15. package/dist/cli/confirm.d.ts.map +1 -0
  16. package/dist/cli/confirm.js +29 -0
  17. package/dist/cli/confirm.js.map +1 -0
  18. package/dist/cli/errors.d.ts +47 -0
  19. package/dist/cli/errors.d.ts.map +1 -0
  20. package/dist/cli/errors.js +42 -0
  21. package/dist/cli/errors.js.map +1 -0
  22. package/dist/cli/gcloudRunner.d.ts +35 -0
  23. package/dist/cli/gcloudRunner.d.ts.map +1 -0
  24. package/dist/cli/gcloudRunner.js +40 -0
  25. package/dist/cli/gcloudRunner.js.map +1 -0
  26. package/dist/cli/setup.d.ts +13 -0
  27. package/dist/cli/setup.d.ts.map +1 -0
  28. package/dist/cli/setup.js +74 -0
  29. package/dist/cli/setup.js.map +1 -0
  30. package/dist/cli/setupFlow.d.ts +137 -0
  31. package/dist/cli/setupFlow.d.ts.map +1 -0
  32. package/dist/cli/setupFlow.js +443 -0
  33. package/dist/cli/setupFlow.js.map +1 -0
  34. package/dist/cli/sheetsFactory.d.ts +49 -0
  35. package/dist/cli/sheetsFactory.d.ts.map +1 -0
  36. package/dist/cli/sheetsFactory.js +71 -0
  37. package/dist/cli/sheetsFactory.js.map +1 -0
  38. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
  39. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +7 -5
  40. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
  41. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +13 -12
  42. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
  43. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +13 -12
  44. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
  45. package/package.json +4 -1
package/README.md CHANGED
@@ -125,6 +125,12 @@ an operation for each write. The sync runtime uses one Google Sheets API
125
125
  provider (the internal `googleSheetsApi` bootstrap option) with a service
126
126
  account — no Apps Script deployment.
127
127
 
128
+ **Fastest path:** install the gcloud CLI, run `gcloud auth login`, then
129
+ `npx hikoutei setup` — it creates the project, service account, key, and a
130
+ spreadsheet owned by that service account, and writes
131
+ `GOOGLE_APPLICATION_CREDENTIALS` plus `HIKOUTEI_SYNC_SPREADSHEET_URL` into
132
+ your `.env`. The manual steps below remain available for advanced setups.
133
+
128
134
  ### Env-driven sync auto-start
129
135
 
130
136
  Set the spreadsheet URL in the environment and `createTypedSheets()` starts
@@ -5,13 +5,19 @@
5
5
  * that surface is corrupted (duplicated business keys or anchors, empty-ID
6
6
  * rows, orphan rows) the scan rewrites the tab from SQLite canonical state:
7
7
  * bound rows get full-row candidate_reconcile rewrites carrying canonical
8
- * values (blocked by the existing candidate guard while a candidate is
9
- * durable), and every surplus row (duplicates beyond the kept row, empty-ID
8
+ * values, and every surplus row (duplicates beyond the kept row, empty-ID
10
9
  * rows, orphans) gets a `user_input_delete` effect carrying the full observed
11
- * row as its compare-and-set guard. All corrections flow through the durable
12
- * outbox and the effect worker's CAS-guarded slow path, so cleanup never
13
- * mutates the Sheet directly and can never touch a row that a human or
14
- * candidate pipeline changed concurrently.
10
+ * row as its compare-and-set guard. Bound-row corrections stream under the
11
+ * binding key (`projection-row:<sheet>:<binding>`) shared with flush
12
+ * projections and resolution reconciles, so the resolution's
13
+ * supersede-and-replan covers them; unbound rows keep the physical anchor as
14
+ * their stream key. A binding with an OPEN/NEEDS_REBASE conflict (durable
15
+ * active candidate pointer) is never planned: the candidate evidence is
16
+ * re-read after the snapshot and again before effect building, and the
17
+ * conflicted row converges exclusively through resolution. All corrections
18
+ * flow through the durable outbox and the effect worker's CAS-guarded slow
19
+ * path, so cleanup never mutates the Sheet directly and can never touch a
20
+ * row that a human or candidate pipeline changed concurrently.
15
21
  *
16
22
  * Duplicated-anchor groups are converged one row per scan because the real
17
23
  * provider only resolves the first row per anchor value; the group's rewrite
@@ -1 +1 @@
1
- {"version":3,"file":"CleanupScanner.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAWH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAC;AASrB,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACzD;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
1
+ {"version":3,"file":"CleanupScanner.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAWH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,aAAa,CAAC;AASrB,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACzD;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
@@ -5,13 +5,19 @@
5
5
  * that surface is corrupted (duplicated business keys or anchors, empty-ID
6
6
  * rows, orphan rows) the scan rewrites the tab from SQLite canonical state:
7
7
  * bound rows get full-row candidate_reconcile rewrites carrying canonical
8
- * values (blocked by the existing candidate guard while a candidate is
9
- * durable), and every surplus row (duplicates beyond the kept row, empty-ID
8
+ * values, and every surplus row (duplicates beyond the kept row, empty-ID
10
9
  * rows, orphans) gets a `user_input_delete` effect carrying the full observed
11
- * row as its compare-and-set guard. All corrections flow through the durable
12
- * outbox and the effect worker's CAS-guarded slow path, so cleanup never
13
- * mutates the Sheet directly and can never touch a row that a human or
14
- * candidate pipeline changed concurrently.
10
+ * row as its compare-and-set guard. Bound-row corrections stream under the
11
+ * binding key (`projection-row:<sheet>:<binding>`) shared with flush
12
+ * projections and resolution reconciles, so the resolution's
13
+ * supersede-and-replan covers them; unbound rows keep the physical anchor as
14
+ * their stream key. A binding with an OPEN/NEEDS_REBASE conflict (durable
15
+ * active candidate pointer) is never planned: the candidate evidence is
16
+ * re-read after the snapshot and again before effect building, and the
17
+ * conflicted row converges exclusively through resolution. All corrections
18
+ * flow through the durable outbox and the effect worker's CAS-guarded slow
19
+ * path, so cleanup never mutates the Sheet directly and can never touch a
20
+ * row that a human or candidate pipeline changed concurrently.
15
21
  *
16
22
  * Duplicated-anchor groups are converged one row per scan because the real
17
23
  * provider only resolves the first row per anchor value; the group's rewrite
@@ -1 +1 @@
1
- {"version":3,"file":"CleanupScanner.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CleanupScanner.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/CleanupScanner.ts"],"names":[],"mappings":"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"}
@@ -13,15 +13,27 @@
13
13
  * - Every physical row bound in SQLite (row_binding -> active entity ->
14
14
  * canonical user-owned fields) gets a full-row `candidate_reconcile`
15
15
  * rewrite carrying the canonical values with the row's observed cells as
16
- * compare-and-set evidence. When the binding has a durable active candidate
17
- * (sheet_visible_field_state pointer joined to an OPEN conflict) the
18
- * rewrite carries that candidate hash as `expectedCandidateHash`, so the
19
- * existing candidate guard (worker gate plus provider guard) blocks it and
20
- * the candidate/conflict evidence converges through resolution instead.
16
+ * compare-and-set evidence. A binding with a durable active candidate
17
+ * (sheet_visible_field_state pointer joined to an OPEN/NEEDS_REBASE
18
+ * conflict) is NEVER planned by this scan: the conflict/candidate evidence
19
+ * is re-read after the snapshot (and again right before effect building),
20
+ * and the binding is skipped while a candidate is durable, so a rewrite
21
+ * can never be enqueued into a conflicted row. The conflict converges
22
+ * exclusively through resolution, whose binding-keyed reconcile
23
+ * supersedes any earlier rewrite on the same stream.
21
24
  * - Every physical row NOT matching a bound binding (a duplicate of a bound
22
25
  * key beyond the kept row, empty-ID rows, and orphan rows) gets a
23
26
  * `user_input_delete` carrying the full observed row as its CAS guard.
24
27
  *
28
+ * Bound-row corrections stream under the BINDING key
29
+ * (`projection-row:<physicalSheetId>:<rowBindingId>`), the same target key
30
+ * flush projections and resolution reconciles use, so the resolution's
31
+ * supersede-and-replan covers any pending cleanup rewrite in the same
32
+ * transaction and an in-flight flush/reconcile head defers the scan. Only
33
+ * unbound rows (orphans, empty-ID rows without a binding) keep the physical
34
+ * anchor as their stream key, because no binding exists to own the stream;
35
+ * their deletes already write no projection confirmation.
36
+ *
25
37
  * Duplicated anchors are resolved the way the real provider resolves them:
26
38
  * its preflight anchor index keeps only the FIRST row per anchor value
27
39
  * (indexRows in preflightRows.ts; planEffectBatch mirrors the same rule), so
@@ -73,11 +85,6 @@ export interface CleanupTarget {
73
85
  * no projection confirmation for a binding that does not exist.
74
86
  */
75
87
  readonly rowBindingId?: string;
76
- /**
77
- * Rewrite-only: durable active candidate hash the rewrite must expect so
78
- * the existing candidate guard blocks it. Absent when no candidate exists.
79
- */
80
- readonly expectedCandidateHash?: string;
81
88
  }
82
89
  /** Durable evidence consulted before any row may be corrected. */
83
90
  export interface CleanupEvidence {
@@ -99,6 +106,21 @@ export interface CleanupCanonicalRow {
99
106
  readonly fields: Record<string, NormalizedCell>;
100
107
  readonly fieldRevisionHash: string;
101
108
  }
109
+ /**
110
+ * Stable binding-keyed stream target id shared with flush projections and
111
+ * resolution reconciles. Bound-row cleanup corrections must stream under the
112
+ * same key so the resolution's supersede-and-replan lookup and the durable
113
+ * stream predecessor guard cover them.
114
+ */
115
+ export declare function cleanupBindingStreamTargetId(physicalSheetId: string, rowBindingId: string): string;
116
+ /**
117
+ * Reads the set of row bindings carrying a durable active candidate pointer
118
+ * joined to an OPEN/NEEDS_REBASE conflict. The scan must never plan a
119
+ * rewrite/delete for one of these bindings: the conflict converges only
120
+ * through resolution, whose binding-keyed reconcile supersedes any pending
121
+ * rewrite on the same stream.
122
+ */
123
+ export declare function readCleanupProtectedBindingsWithSql(sql: SqlExecutor, physicalSheetId: string): Promise<ReadonlySet<string>>;
102
124
  /** Reads the durable binding/canonical/candidate evidence for one tab. */
103
125
  export declare function readCleanupEvidenceWithSql(sql: SqlExecutor, logicalSheetId: string, physicalSheetId: string): Promise<CleanupEvidence>;
104
126
  /** Reads cleanup evidence through a fresh adapter read context. */
@@ -149,14 +171,18 @@ export type CleanupBaseline = {
149
171
  /**
150
172
  * Resolves the outbox baseline for one cleanup stream.
151
173
  *
152
- * Streams are keyed by (logical sheet, projection_row, row anchor) so each
153
- * physical row owns an independent predecessor chain. An in-flight head
174
+ * Bound rows stream under the BINDING key
175
+ * (`projection-row:<physicalSheetId>:<rowBindingId>`, the same key flush
176
+ * projections and resolution reconciles use) so the cleanup correction joins
177
+ * the row's real predecessor chain and the resolution replan covers it;
178
+ * unbound rows (orphans, empty-ID rows without a binding) keep the physical
179
+ * anchor as their stream key. An in-flight head
154
180
  * (pending/processing/delivery_uncertain) defers the scan; a recoverable
155
181
  * failed head stays on the worker retry path; terminal heads (non-recoverable
156
182
  * failed, blocked_candidate, conflict) are superseded with the new correction
157
183
  * in the same transaction so the stream can never wedge.
158
184
  */
159
- export declare function resolveCleanupBaselineWithSql(sql: SqlExecutor, logicalSheetId: string, anchor: string): Promise<CleanupBaseline>;
185
+ export declare function resolveCleanupBaselineWithSql(sql: SqlExecutor, logicalSheetId: string, targetId: string): Promise<CleanupBaseline>;
160
186
  /** Effect-building input shared by the cleanup scan orchestrator. */
161
187
  export interface CleanupEffectContext {
162
188
  readonly storage: SqlStorageAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
@@ -13,15 +13,27 @@
13
13
  * - Every physical row bound in SQLite (row_binding -> active entity ->
14
14
  * canonical user-owned fields) gets a full-row `candidate_reconcile`
15
15
  * rewrite carrying the canonical values with the row's observed cells as
16
- * compare-and-set evidence. When the binding has a durable active candidate
17
- * (sheet_visible_field_state pointer joined to an OPEN conflict) the
18
- * rewrite carries that candidate hash as `expectedCandidateHash`, so the
19
- * existing candidate guard (worker gate plus provider guard) blocks it and
20
- * the candidate/conflict evidence converges through resolution instead.
16
+ * compare-and-set evidence. A binding with a durable active candidate
17
+ * (sheet_visible_field_state pointer joined to an OPEN/NEEDS_REBASE
18
+ * conflict) is NEVER planned by this scan: the conflict/candidate evidence
19
+ * is re-read after the snapshot (and again right before effect building),
20
+ * and the binding is skipped while a candidate is durable, so a rewrite
21
+ * can never be enqueued into a conflicted row. The conflict converges
22
+ * exclusively through resolution, whose binding-keyed reconcile
23
+ * supersedes any earlier rewrite on the same stream.
21
24
  * - Every physical row NOT matching a bound binding (a duplicate of a bound
22
25
  * key beyond the kept row, empty-ID rows, and orphan rows) gets a
23
26
  * `user_input_delete` carrying the full observed row as its CAS guard.
24
27
  *
28
+ * Bound-row corrections stream under the BINDING key
29
+ * (`projection-row:<physicalSheetId>:<rowBindingId>`), the same target key
30
+ * flush projections and resolution reconciles use, so the resolution's
31
+ * supersede-and-replan covers any pending cleanup rewrite in the same
32
+ * transaction and an in-flight flush/reconcile head defers the scan. Only
33
+ * unbound rows (orphans, empty-ID rows without a binding) keep the physical
34
+ * anchor as their stream key, because no binding exists to own the stream;
35
+ * their deletes already write no projection confirmation.
36
+ *
25
37
  * Duplicated anchors are resolved the way the real provider resolves them:
26
38
  * its preflight anchor index keeps only the FIRST row per anchor value
27
39
  * (indexRows in preflightRows.ts; planEffectBatch mirrors the same rule), so
@@ -34,7 +46,7 @@
34
46
  * the durable outbox and the worker's CAS-guarded slow path.
35
47
  */
36
48
  import { POSITIVE_SAFE_INTEGER_MINIMUM } from "../../../../domain/index.js";
37
- import { PRESENCE_KINDS, applicableValue, notApplicableValue, } from "../../../../shared/state/index.js";
49
+ import { PRESENCE_KINDS, } from "../../../../shared/state/index.js";
38
50
  import { isRecoverableEffectErrorCode } from "../../../../infrastructure/storage/index.js";
39
51
  import { computeSyncVisibleHash, } from "../../sheetsContract/syncSheets.js";
40
52
  import { SYNC_PROJECTIONS } from "../../sheetsContract/constants.js";
@@ -70,11 +82,21 @@ const READ_CLEANUP_CANONICAL_SQL = `
70
82
  WHERE entity.status = 'active'
71
83
  ORDER BY entity.entity_id, field.field_name
72
84
  `;
85
+ /**
86
+ * Stable binding-keyed stream target id shared with flush projections and
87
+ * resolution reconciles. Bound-row cleanup corrections must stream under the
88
+ * same key so the resolution's supersede-and-replan lookup and the durable
89
+ * stream predecessor guard cover them.
90
+ */
91
+ export function cleanupBindingStreamTargetId(physicalSheetId, rowBindingId) {
92
+ return `projection-row:${physicalSheetId}:${rowBindingId}`;
93
+ }
73
94
  /**
74
95
  * Durable active candidate hashes for user_input bindings. A binding is
75
96
  * candidate-protected when any of its fields carries an active candidate
76
- * pointer whose conflict is still open; the rewrite must then carry that hash
77
- * as its candidate expectation so the worker gate blocks it until resolution.
97
+ * pointer joined to an OPEN/NEEDS_REBASE conflict; the scan must never plan
98
+ * a rewrite/delete for such a binding (the conflict converges exclusively
99
+ * through resolution).
78
100
  */
79
101
  const READ_CLEANUP_CANDIDATE_HASHES_SQL = `
80
102
  SELECT visible.row_binding_id AS row_binding_id,
@@ -106,6 +128,17 @@ const READ_CLEANUP_LATEST_EFFECT_SQL = `
106
128
  ORDER BY stream_sequence DESC
107
129
  LIMIT 1
108
130
  `;
131
+ /**
132
+ * Reads the set of row bindings carrying a durable active candidate pointer
133
+ * joined to an OPEN/NEEDS_REBASE conflict. The scan must never plan a
134
+ * rewrite/delete for one of these bindings: the conflict converges only
135
+ * through resolution, whose binding-keyed reconcile supersedes any pending
136
+ * rewrite on the same stream.
137
+ */
138
+ export async function readCleanupProtectedBindingsWithSql(sql, physicalSheetId) {
139
+ const candidateRows = await sql.all(READ_CLEANUP_CANDIDATE_HASHES_SQL, [physicalSheetId]);
140
+ return new Set(candidateRows.map((row) => row.row_binding_id));
141
+ }
109
142
  /** Reads the durable binding/canonical/candidate evidence for one tab. */
110
143
  export async function readCleanupEvidenceWithSql(sql, logicalSheetId, physicalSheetId) {
111
144
  const [bindings, canonicalRows, candidateRows] = await Promise.all([
@@ -242,6 +275,15 @@ export function classifyCleanupRows(rows, evidence) {
242
275
  if (anchor === null)
243
276
  continue;
244
277
  const binding = bindingByAnchor.get(anchor);
278
+ if (binding !== undefined && evidence.candidateHashes.has(binding.rowBindingId)) {
279
+ // The duplicate group belongs to a binding with an OPEN/NEEDS_REBASE
280
+ // conflict: never plan the delete while the candidate is durable; the
281
+ // group converges after resolution. The whole group stays handled so
282
+ // no member is re-classified as a rewrite either.
283
+ for (const row of group)
284
+ handled.add(row.rowNumber);
285
+ continue;
286
+ }
245
287
  targets.push({
246
288
  kind: "duplicate",
247
289
  row: resolvable,
@@ -267,13 +309,17 @@ export function classifyCleanupRows(rows, evidence) {
267
309
  if (observedCanonicalHash(row, canonical.fields) === canonical.fieldRevisionHash) {
268
310
  continue;
269
311
  }
270
- const candidateHash = evidence.candidateHashes.get(canonical.rowBindingId);
312
+ // A binding with a durable active candidate (OPEN/NEEDS_REBASE
313
+ // conflict) is skipped entirely: the conflict converges through
314
+ // resolution, whose binding-keyed reconcile supersedes any pending
315
+ // rewrite, so a scan-planned rewrite can never race the resolution.
316
+ if (evidence.candidateHashes.has(canonical.rowBindingId))
317
+ continue;
271
318
  targets.push({
272
319
  kind: "rewrite",
273
320
  row,
274
321
  canonicalFields: canonical.fields,
275
322
  rowBindingId: canonical.rowBindingId,
276
- ...(candidateHash === undefined ? {} : { expectedCandidateHash: candidateHash }),
277
323
  });
278
324
  continue;
279
325
  }
@@ -282,7 +328,11 @@ export function classifyCleanupRows(rows, evidence) {
282
328
  // Candidate bindings without an entity are human rows pending
283
329
  // acceptance; tombstoned/ambiguous bindings are lifecycle-protected.
284
330
  // Only an empty-ID row can never bind, so only that shape is deleted.
285
- if (binding.state === "candidate" && row.identity === undefined) {
331
+ if (binding.state === "candidate" &&
332
+ row.identity === undefined &&
333
+ // An open conflict on the candidate binding means the row is a
334
+ // disputed human edit; the delete must wait for resolution.
335
+ !evidence.candidateHashes.has(binding.rowBindingId)) {
286
336
  targets.push({ kind: "empty_id", row, rowBindingId: binding.rowBindingId });
287
337
  }
288
338
  continue;
@@ -313,17 +363,21 @@ function lowestRow(rows) {
313
363
  /**
314
364
  * Resolves the outbox baseline for one cleanup stream.
315
365
  *
316
- * Streams are keyed by (logical sheet, projection_row, row anchor) so each
317
- * physical row owns an independent predecessor chain. An in-flight head
366
+ * Bound rows stream under the BINDING key
367
+ * (`projection-row:<physicalSheetId>:<rowBindingId>`, the same key flush
368
+ * projections and resolution reconciles use) so the cleanup correction joins
369
+ * the row's real predecessor chain and the resolution replan covers it;
370
+ * unbound rows (orphans, empty-ID rows without a binding) keep the physical
371
+ * anchor as their stream key. An in-flight head
318
372
  * (pending/processing/delivery_uncertain) defers the scan; a recoverable
319
373
  * failed head stays on the worker retry path; terminal heads (non-recoverable
320
374
  * failed, blocked_candidate, conflict) are superseded with the new correction
321
375
  * in the same transaction so the stream can never wedge.
322
376
  */
323
- export async function resolveCleanupBaselineWithSql(sql, logicalSheetId, anchor) {
377
+ export async function resolveCleanupBaselineWithSql(sql, logicalSheetId, targetId) {
324
378
  const latest = await sql.get(READ_CLEANUP_LATEST_EFFECT_SQL, [
325
379
  logicalSheetId,
326
- anchor,
380
+ targetId,
327
381
  ]);
328
382
  if (latest === undefined) {
329
383
  return { kind: "append", streamSequence: POSITIVE_SAFE_INTEGER_MINIMUM, supersedeEffectId: null };
@@ -361,17 +415,32 @@ export async function buildCleanupEffects(context, sheet, targets) {
361
415
  const plans = [];
362
416
  const commitId = "cleanup:" + context.createId();
363
417
  await context.storage.read(async ({ sql }) => {
418
+ // Re-read the durable candidate evidence right before effect building:
419
+ // a conflict that opened after the snapshot classification must also
420
+ // suppress the correction, so a rewrite can never be enqueued while a
421
+ // conflict is open (the resolution's binding-keyed reconcile supersedes
422
+ // anything that still slipped through as pending).
423
+ const protectedBindings = await readCleanupProtectedBindingsWithSql(sql, context.physicalSheetId);
364
424
  for (const target of targets) {
365
425
  const anchor = target.row.anchor;
366
426
  if (anchor === null)
367
427
  continue;
368
- const baseline = await resolveCleanupBaselineWithSql(sql, context.logicalSheetId, anchor);
428
+ if (target.rowBindingId !== undefined && protectedBindings.has(target.rowBindingId)) {
429
+ continue;
430
+ }
431
+ // Bound rows share the binding-keyed stream with flush projections and
432
+ // resolution reconciles so the supersede-on-resolution covers them;
433
+ // unbound rows keep the physical anchor as their stream key.
434
+ const streamTargetId = target.rowBindingId === undefined
435
+ ? anchor
436
+ : cleanupBindingStreamTargetId(context.physicalSheetId, target.rowBindingId);
437
+ const baseline = await resolveCleanupBaselineWithSql(sql, context.logicalSheetId, streamTargetId);
369
438
  if (baseline.kind === "defer")
370
439
  continue;
371
440
  const expectedVisibleRevision = await resolveCleanupExpectedVisibleRevisionWithSql(sql, context.physicalSheetId, target);
372
441
  const effect = target.kind === "rewrite"
373
- ? buildRewriteEffect(context, sheet, commitId, anchor, target, baseline.streamSequence, expectedVisibleRevision)
374
- : buildDeleteEffect(context, sheet, commitId, anchor, target, baseline.streamSequence, expectedVisibleRevision);
442
+ ? buildRewriteEffect(context, sheet, commitId, streamTargetId, anchor, target, baseline.streamSequence, expectedVisibleRevision)
443
+ : buildDeleteEffect(context, sheet, commitId, streamTargetId, anchor, target, baseline.streamSequence, expectedVisibleRevision);
375
444
  plans.push({ effect, supersedeEffectId: baseline.supersedeEffectId });
376
445
  }
377
446
  });
@@ -400,7 +469,7 @@ async function resolveCleanupExpectedVisibleRevisionWithSql(sql, physicalSheetId
400
469
  }
401
470
  return Math.max(target.row.visibleRevision, confirmedRevision);
402
471
  }
403
- function buildRewriteEffect(context, sheet, commitId, anchor, target, streamSequence, expectedVisibleRevision) {
472
+ function buildRewriteEffect(context, sheet, commitId, targetId, anchor, target, streamSequence, expectedVisibleRevision) {
404
473
  const canonicalFields = target.canonicalFields ?? {};
405
474
  return createCandidateReconcileEffect({
406
475
  effectId: "effect:" + context.createId(),
@@ -412,7 +481,7 @@ function buildRewriteEffect(context, sheet, commitId, anchor, target, streamSequ
412
481
  projection: SYNC_PROJECTIONS.USER_INPUT,
413
482
  schemaVersion: context.schemaVersion,
414
483
  targetKind: "projection_row",
415
- targetId: anchor,
484
+ targetId,
416
485
  rowBindingId: {
417
486
  kind: PRESENCE_KINDS.PRESENT,
418
487
  value: target.rowBindingId ?? anchor,
@@ -423,13 +492,10 @@ function buildRewriteEffect(context, sheet, commitId, anchor, target, streamSequ
423
492
  createIfMissing: false,
424
493
  expectedVisibleRevision,
425
494
  expectedVisibleHash: observedCanonicalHash(target.row, canonicalFields),
426
- expectedCandidateHash: target.expectedCandidateHash === undefined
427
- ? notApplicableValue()
428
- : applicableValue(target.expectedCandidateHash),
429
495
  streamSequence,
430
496
  });
431
497
  }
432
- function buildDeleteEffect(context, sheet, commitId, anchor, target, streamSequence, expectedVisibleRevision) {
498
+ function buildDeleteEffect(context, sheet, commitId, targetId, anchor, target, streamSequence, expectedVisibleRevision) {
433
499
  return createUserInputDeleteEffect({
434
500
  effectId: "effect:" + context.createId(),
435
501
  commitId,
@@ -440,7 +506,7 @@ function buildDeleteEffect(context, sheet, commitId, anchor, target, streamSeque
440
506
  projection: SYNC_PROJECTIONS.USER_INPUT,
441
507
  schemaVersion: context.schemaVersion,
442
508
  targetKind: "projection_row",
443
- targetId: anchor,
509
+ targetId,
444
510
  // Unbound rows carry no binding id: the worker candidate gate has
445
511
  // nothing to protect and the applied delete writes no projection
446
512
  // confirmation for a binding that does not exist.
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Pure command-line parsing for `hikoutei setup`.
3
+ *
4
+ * This module owns flag syntax and defaults only; it never touches gcloud,
5
+ * the filesystem, or the network. The result is an explicit union so the CLI
6
+ * entry can branch on help / valid / invalid without inspecting message text.
7
+ */
8
+ import { type SetupFailure } from "./errors.js";
9
+ /** Default service-account name when `--sa-name` is not given. */
10
+ export declare const DEFAULT_SA_NAME = "hikoutei-sa";
11
+ /** Default output file name (resolved against the current directory by main). */
12
+ export declare const DEFAULT_OUTPUT_FILE_NAME = ".env";
13
+ /** Parsed and defaulted setup options handed to the setup flow. */
14
+ export interface SetupOptions {
15
+ /** Existing Google Cloud project id; when absent the flow creates one. */
16
+ readonly projectId?: string;
17
+ /** Service-account name within the project. */
18
+ readonly saName: string;
19
+ /** Spreadsheet title; when absent the flow derives `hikoutei-sync-<project>`. */
20
+ readonly spreadsheetTitle?: string;
21
+ /** Output .env path (relative to the current directory). */
22
+ readonly output: string;
23
+ /** Skip interactive confirmation. */
24
+ readonly yes: boolean;
25
+ /** Print the planned command sequence without executing anything. */
26
+ readonly dryRun: boolean;
27
+ }
28
+ /** Discriminated result of `parseSetupArgs`. */
29
+ export type SetupArgsParseResult = {
30
+ readonly status: "help";
31
+ readonly helpText: string;
32
+ } | {
33
+ readonly status: "valid";
34
+ readonly options: SetupOptions;
35
+ } | {
36
+ readonly status: "invalid";
37
+ readonly failure: SetupFailure;
38
+ };
39
+ export declare const SETUP_HELP_TEXT: string;
40
+ /**
41
+ * Parses raw argv (without node/script) into setup options.
42
+ *
43
+ * `--flag value` and `--flag=value` are both accepted. A leading `setup`
44
+ * token is ignored so the npm bin works both as `hikoutei setup ...` and as
45
+ * `node dist/cli/setup.js ...`. Unknown flags, missing values, boolean flags
46
+ * given a value, and other positional arguments are rejected with
47
+ * `invalid_args`. `--help` short-circuits with the help text.
48
+ */
49
+ export declare function parseSetupArgs(argv: readonly string[]): SetupArgsParseResult;
50
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjF,kEAAkE;AAClE,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAE/C,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,gDAAgD;AAChD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC5D;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC;AAanE,eAAO,MAAM,eAAe,QAyBhB,CAAC;AAUb;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,oBAAoB,CA6E5E"}