mons-web 0.1.123 → 0.1.125

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.
package/README.md CHANGED
@@ -7,35 +7,47 @@ or
7
7
 
8
8
  ## automove
9
9
 
10
- The active automove workflow lives here:
10
+ Canonical automove workflow:
11
11
 
12
- - canonical workflow: `HOW_TO_ITERATE_ON_AUTOMOVE.md`
13
- - ideas backlog: `AUTOMOVE_IDEAS.md`
14
- - compatibility entrypoint: `docs/automove-experiments.md`
12
+ - runbook: `HOW_TO_ITERATE_ON_AUTOMOVE.md`
13
+ - live board: `AUTOMOVE_IDEAS.md`
15
14
  - durable lessons: `docs/automove-knowledge.md`
16
- - retired profile archive: `docs/automove-archive.md`
17
-
18
- Useful scripts:
19
-
20
- - `./scripts/run-automove-experiment.sh guardrails <candidate>`
21
- - `./scripts/run-automove-experiment.sh runtime-preflight <candidate>`
22
- - `./scripts/run-automove-experiment.sh triage-calibrate [reply_risk|opponent_mana|supermana|all]`
23
- - `./scripts/run-automove-experiment.sh preflight <candidate>`
24
- - `SMART_TRIAGE_SURFACE=<surface> ./scripts/run-automove-experiment.sh triage <candidate>`
25
- - `SMART_PROMOTION_TARGET_MODE=<fast|normal> ./scripts/run-automove-experiment.sh audit-screen <candidate>`
26
- - `SMART_PROMOTION_TARGET_MODE=<fast|normal> ./scripts/run-automove-experiment.sh fast-screen <candidate>`
27
- - `SMART_PROMOTION_TARGET_MODE=<fast|normal> ./scripts/run-automove-experiment.sh progressive <candidate>`
28
- - `SMART_PROMOTION_TARGET_MODE=<fast|normal> ./scripts/run-automove-experiment.sh ladder <candidate>`
29
- - `SMART_TRIAGE_SURFACE=<opening_reply|primary_pro> ./scripts/run-automove-experiment.sh pro-triage <candidate>`
30
- - `./scripts/run-automove-experiment.sh pro-audit-screen <candidate>`
31
- - `./scripts/run-automove-experiment.sh pro-fast-screen <candidate>`
32
- - `./scripts/run-automove-experiment.sh pro-progressive <candidate>`
33
- - `./scripts/run-automove-experiment.sh pro-ladder <candidate>`
34
- - `./scripts/run-automove-experiment.sh pre-screen <candidate>`
35
- - `./scripts/run-automove-experiment.sh pro-pre-screen <candidate>`
36
- - `./scripts/clean-experiment-artifacts.sh`
37
-
38
- Run `triage-calibrate` before candidate work on `reply_risk`, `opponent_mana`, or `supermana`. Then use `guardrails -> triage -> runtime-preflight` so weak ideas die before the expensive CPU gate. `preflight` still exists as the old all-in-one wrapper. Most candidates should die at `triage`, `pro-triage`, or the first earned duel stage. For mode-specific `fast` or `normal` ideas, run duel stages with `SMART_PROMOTION_TARGET_MODE=<fast|normal>` so the target mode is the improvement bar and the other client mode is only a non-regression check. Use `audit-screen` or `pro-audit-screen` only as occasional spot checks for clean triage rejects. `pre-screen` and `pro-pre-screen` remain available only as legacy noise diagnostics. Unless documented otherwise, new candidates should be deltas on `runtime_current`.
15
+ - archive: `docs/automove-archive.md`
16
+
17
+ Active experiment stages:
18
+
19
+ - `guardrails`
20
+ - `pro-triage`
21
+ - `runtime-preflight`
22
+ - `pro-reliability`
23
+ - `pro-reliability-confirm`
24
+
25
+ Canonical commands:
26
+
27
+ - `./scripts/run-automove-experiment.sh guardrails runtime_pro_turn_engine_v30`
28
+ - `SMART_TRIAGE_SURFACE=primary_pro ./scripts/run-automove-experiment.sh pro-triage runtime_pro_turn_engine_v30`
29
+ - `./scripts/run-automove-experiment.sh runtime-preflight runtime_pro_turn_engine_v30`
30
+ - `./scripts/run-automove-experiment.sh pro-reliability runtime_pro_turn_engine_v30`
31
+ - `./scripts/run-automove-experiment.sh pro-reliability-confirm runtime_pro_turn_engine_v30`
32
+ - `./scripts/clean-experiment-artifacts.sh --dry-run`
33
+
34
+ Active retained profile surface:
35
+
36
+ - `runtime_current`
37
+ - `runtime_pro_turn_engine_v30`
38
+
39
+ Notes:
40
+
41
+ - Shipping runtime is `runtime_current`.
42
+ - `runtime_pro_turn_engine_v30` is the only retained Pro frontier for offline experiments.
43
+ - Archive profiles, including `runtime_pro_turn_engine_v1`, are not valid active experiment targets.
44
+ - Post-promotion maintenance runs may show `pro-triage` `0/0` for `runtime_pro_turn_engine_v30` vs `runtime_current`; that is the expected stable-equivalence result, not a failed challenger attempt.
45
+
46
+ Default artifact layout:
47
+
48
+ - logs: `target/experiment-runs/<candidate>/`
49
+ - workflow-only logs: `target/experiment-runs/misc/`
50
+ - runtime-preflight stamps: `target/experiment-stamps/`
39
51
 
40
52
  ## rules-tests runner
41
53
 
@@ -67,6 +79,38 @@ Pack a directory back into chunks:
67
79
 
68
80
  `./scripts/pack-rules-tests.sh --dir /tmp/rules-tests-work --chunks-dir ./rules-tests-chunks --chunk-size 100000`
69
81
 
82
+ ## repo cleanup
83
+
84
+ `./repo-clean.sh`
85
+
86
+ - switches back to a kept branch (`main`, `master`, or `keep/*`) before deleting disposable branches
87
+ - removes non-primary worktrees, clears stashes, deletes non-kept local branches, and prunes non-kept remote branches
88
+ - use `./repo-clean.sh --local-only` to skip remote branch deletion
89
+ - use `keep/<name>` for any branch you want to protect from cleanup
90
+
70
91
  ## publishing to npm
71
92
 
72
93
  `./publish.sh`
94
+
95
+ Release checklist:
96
+
97
+ - Review `git status` before publish and confirm only intentional committed changes are present.
98
+ - Confirm `runtime_current` is still the shipping automove path.
99
+ - Confirm `runtime_pro_turn_engine_v30` remains fenced off as an offline experiment frontier.
100
+ - Run `cargo test`.
101
+ - Run `cargo test --release --lib smart_automove_release_opening_black_reply_speed_gate -- --ignored --nocapture`.
102
+ - Run `cargo test --release --lib smart_automove_release_mixed_runtime_speed_gate -- --ignored --nocapture`.
103
+ - Commit valuable changes before version bump / publish.
104
+ - Clean disposable experiment artifacts after validation with `./scripts/clean-experiment-artifacts.sh`.
105
+
106
+ Production blockers:
107
+
108
+ - build/test failures
109
+ - release speed gate failures
110
+ - any regression that enables turn-engine in shipping `runtime_current`
111
+
112
+ Non-blocking retained experiment state:
113
+
114
+ - the retained `runtime_pro_turn_engine_v30` frontier plus ignored probes
115
+ - experiment workflow/logging helpers
116
+ - compressed automove backlog / knowledge / archive docs
package/mons-web.d.ts CHANGED
@@ -10,27 +10,13 @@
10
10
  export function winner(fen_w: string, fen_b: string, flat_moves_string_w: string, flat_moves_string_b: string): string;
11
11
  /**
12
12
  */
13
- export enum ItemModelKind {
14
- Mon = 0,
15
- Mana = 1,
16
- MonWithMana = 2,
17
- MonWithConsumable = 3,
18
- Consumable = 4,
19
- }
20
- /**
21
- */
22
- export enum Modifier {
23
- SelectPotion = 0,
24
- SelectBomb = 1,
25
- Cancel = 2,
26
- }
27
- /**
28
- */
29
- export enum OutputModelKind {
30
- InvalidInput = 0,
31
- LocationsToStartFrom = 1,
32
- NextInputOptions = 2,
33
- Events = 3,
13
+ export enum SquareModelKind {
14
+ Regular = 0,
15
+ ConsumableBase = 1,
16
+ SupermanaBase = 2,
17
+ ManaBase = 3,
18
+ ManaPool = 4,
19
+ MonBase = 5,
34
20
  }
35
21
  /**
36
22
  */
@@ -48,28 +34,6 @@ export enum AvailableMoveKind {
48
34
  }
49
35
  /**
50
36
  */
51
- export enum Color {
52
- White = 0,
53
- Black = 1,
54
- }
55
- /**
56
- */
57
- export enum Consumable {
58
- Potion = 0,
59
- Bomb = 1,
60
- BombOrPotion = 2,
61
- }
62
- /**
63
- */
64
- export enum MonKind {
65
- Demon = 0,
66
- Drainer = 1,
67
- Angel = 2,
68
- Spirit = 3,
69
- Mystic = 4,
70
- }
71
- /**
72
- */
73
37
  export enum EventModelKind {
74
38
  MonMove = 0,
75
39
  ManaMove = 1,
@@ -94,13 +58,35 @@ export enum EventModelKind {
94
58
  }
95
59
  /**
96
60
  */
97
- export enum SquareModelKind {
98
- Regular = 0,
99
- ConsumableBase = 1,
100
- SupermanaBase = 2,
101
- ManaBase = 3,
102
- ManaPool = 4,
103
- MonBase = 5,
61
+ export enum ItemModelKind {
62
+ Mon = 0,
63
+ Mana = 1,
64
+ MonWithMana = 2,
65
+ MonWithConsumable = 3,
66
+ Consumable = 4,
67
+ }
68
+ /**
69
+ */
70
+ export enum Consumable {
71
+ Potion = 0,
72
+ Bomb = 1,
73
+ BombOrPotion = 2,
74
+ }
75
+ /**
76
+ */
77
+ export enum Modifier {
78
+ SelectPotion = 0,
79
+ SelectBomb = 1,
80
+ Cancel = 2,
81
+ }
82
+ /**
83
+ */
84
+ export enum MonKind {
85
+ Demon = 0,
86
+ Drainer = 1,
87
+ Angel = 2,
88
+ Spirit = 3,
89
+ Mystic = 4,
104
90
  }
105
91
  /**
106
92
  */
@@ -117,6 +103,20 @@ export enum NextInputKind {
117
103
  }
118
104
  /**
119
105
  */
106
+ export enum OutputModelKind {
107
+ InvalidInput = 0,
108
+ LocationsToStartFrom = 1,
109
+ NextInputOptions = 2,
110
+ Events = 3,
111
+ }
112
+ /**
113
+ */
114
+ export enum Color {
115
+ White = 0,
116
+ Black = 1,
117
+ }
118
+ /**
119
+ */
120
120
  export class EventModel {
121
121
  free(): void;
122
122
  /**
@@ -519,26 +519,26 @@ export interface InitOutput {
519
519
  readonly verbosetrackingentitymodel_events: (a: number, b: number) => void;
520
520
  readonly verbosetrackingentitymodel_events_fen: (a: number, b: number) => void;
521
521
  readonly verbosetrackingentitymodel_fen: (a: number, b: number) => void;
522
+ readonly __wbg_set_nextinputmodel_location: (a: number, b: number) => void;
522
523
  readonly __wbg_get_nextinputmodel_location: (a: number) => number;
523
524
  readonly __wbg_squaremodel_free: (a: number) => void;
524
- readonly __wbg_set_nextinputmodel_location: (a: number, b: number) => void;
525
+ readonly __wbg_get_location_i: (a: number) => number;
526
+ readonly __wbg_get_location_j: (a: number) => number;
525
527
  readonly __wbg_get_mon_color: (a: number) => number;
526
- readonly __wbg_get_mon_cooldown: (a: number) => number;
527
528
  readonly __wbg_get_mon_kind: (a: number) => number;
529
+ readonly __wbg_location_free: (a: number) => void;
528
530
  readonly __wbg_mon_free: (a: number) => void;
531
+ readonly __wbg_set_location_i: (a: number, b: number) => void;
532
+ readonly __wbg_set_location_j: (a: number, b: number) => void;
529
533
  readonly __wbg_set_mon_color: (a: number, b: number) => void;
530
- readonly __wbg_set_mon_cooldown: (a: number, b: number) => void;
531
534
  readonly __wbg_set_mon_kind: (a: number, b: number) => void;
535
+ readonly location_new: (a: number, b: number) => number;
532
536
  readonly mon_decrease_cooldown: (a: number) => void;
533
537
  readonly mon_faint: (a: number) => void;
534
538
  readonly mon_is_fainted: (a: number) => number;
535
539
  readonly mon_new: (a: number, b: number, c: number) => number;
536
- readonly __wbg_get_location_i: (a: number) => number;
537
- readonly __wbg_get_location_j: (a: number) => number;
538
- readonly __wbg_location_free: (a: number) => void;
539
- readonly __wbg_set_location_i: (a: number, b: number) => void;
540
- readonly __wbg_set_location_j: (a: number, b: number) => void;
541
- readonly location_new: (a: number, b: number) => number;
540
+ readonly __wbg_set_mon_cooldown: (a: number, b: number) => void;
541
+ readonly __wbg_get_mon_cooldown: (a: number) => number;
542
542
  readonly winner: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
543
543
  readonly __wbindgen_malloc: (a: number, b: number) => number;
544
544
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
package/mons-web.js CHANGED
@@ -198,37 +198,37 @@ function handleError(f, args) {
198
198
  }
199
199
  /**
200
200
  */
201
- export const ItemModelKind = Object.freeze({ Mon:0,"0":"Mon",Mana:1,"1":"Mana",MonWithMana:2,"2":"MonWithMana",MonWithConsumable:3,"3":"MonWithConsumable",Consumable:4,"4":"Consumable", });
201
+ export const SquareModelKind = Object.freeze({ Regular:0,"0":"Regular",ConsumableBase:1,"1":"ConsumableBase",SupermanaBase:2,"2":"SupermanaBase",ManaBase:3,"3":"ManaBase",ManaPool:4,"4":"ManaPool",MonBase:5,"5":"MonBase", });
202
202
  /**
203
203
  */
204
- export const Modifier = Object.freeze({ SelectPotion:0,"0":"SelectPotion",SelectBomb:1,"1":"SelectBomb",Cancel:2,"2":"Cancel", });
204
+ export const ManaKind = Object.freeze({ Regular:0,"0":"Regular",Supermana:1,"1":"Supermana", });
205
205
  /**
206
206
  */
207
- export const OutputModelKind = Object.freeze({ InvalidInput:0,"0":"InvalidInput",LocationsToStartFrom:1,"1":"LocationsToStartFrom",NextInputOptions:2,"2":"NextInputOptions",Events:3,"3":"Events", });
207
+ export const AvailableMoveKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",Action:2,"2":"Action",Potion:3,"3":"Potion", });
208
208
  /**
209
209
  */
210
- export const ManaKind = Object.freeze({ Regular:0,"0":"Regular",Supermana:1,"1":"Supermana", });
210
+ export const EventModelKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",ManaScored:2,"2":"ManaScored",MysticAction:3,"3":"MysticAction",DemonAction:4,"4":"DemonAction",DemonAdditionalStep:5,"5":"DemonAdditionalStep",SpiritTargetMove:6,"6":"SpiritTargetMove",PickupBomb:7,"7":"PickupBomb",PickupPotion:8,"8":"PickupPotion",PickupMana:9,"9":"PickupMana",MonFainted:10,"10":"MonFainted",ManaDropped:11,"11":"ManaDropped",SupermanaBackToBase:12,"12":"SupermanaBackToBase",BombAttack:13,"13":"BombAttack",MonAwake:14,"14":"MonAwake",BombExplosion:15,"15":"BombExplosion",NextTurn:16,"16":"NextTurn",GameOver:17,"17":"GameOver",Takeback:18,"18":"Takeback",UsePotion:19,"19":"UsePotion", });
211
211
  /**
212
212
  */
213
- export const AvailableMoveKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",Action:2,"2":"Action",Potion:3,"3":"Potion", });
213
+ export const ItemModelKind = Object.freeze({ Mon:0,"0":"Mon",Mana:1,"1":"Mana",MonWithMana:2,"2":"MonWithMana",MonWithConsumable:3,"3":"MonWithConsumable",Consumable:4,"4":"Consumable", });
214
214
  /**
215
215
  */
216
- export const Color = Object.freeze({ White:0,"0":"White",Black:1,"1":"Black", });
216
+ export const Consumable = Object.freeze({ Potion:0,"0":"Potion",Bomb:1,"1":"Bomb",BombOrPotion:2,"2":"BombOrPotion", });
217
217
  /**
218
218
  */
219
- export const Consumable = Object.freeze({ Potion:0,"0":"Potion",Bomb:1,"1":"Bomb",BombOrPotion:2,"2":"BombOrPotion", });
219
+ export const Modifier = Object.freeze({ SelectPotion:0,"0":"SelectPotion",SelectBomb:1,"1":"SelectBomb",Cancel:2,"2":"Cancel", });
220
220
  /**
221
221
  */
222
222
  export const MonKind = Object.freeze({ Demon:0,"0":"Demon",Drainer:1,"1":"Drainer",Angel:2,"2":"Angel",Spirit:3,"3":"Spirit",Mystic:4,"4":"Mystic", });
223
223
  /**
224
224
  */
225
- export const EventModelKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",ManaScored:2,"2":"ManaScored",MysticAction:3,"3":"MysticAction",DemonAction:4,"4":"DemonAction",DemonAdditionalStep:5,"5":"DemonAdditionalStep",SpiritTargetMove:6,"6":"SpiritTargetMove",PickupBomb:7,"7":"PickupBomb",PickupPotion:8,"8":"PickupPotion",PickupMana:9,"9":"PickupMana",MonFainted:10,"10":"MonFainted",ManaDropped:11,"11":"ManaDropped",SupermanaBackToBase:12,"12":"SupermanaBackToBase",BombAttack:13,"13":"BombAttack",MonAwake:14,"14":"MonAwake",BombExplosion:15,"15":"BombExplosion",NextTurn:16,"16":"NextTurn",GameOver:17,"17":"GameOver",Takeback:18,"18":"Takeback",UsePotion:19,"19":"UsePotion", });
225
+ export const NextInputKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",MysticAction:2,"2":"MysticAction",DemonAction:3,"3":"DemonAction",DemonAdditionalStep:4,"4":"DemonAdditionalStep",SpiritTargetCapture:5,"5":"SpiritTargetCapture",SpiritTargetMove:6,"6":"SpiritTargetMove",SelectConsumable:7,"7":"SelectConsumable",BombAttack:8,"8":"BombAttack", });
226
226
  /**
227
227
  */
228
- export const SquareModelKind = Object.freeze({ Regular:0,"0":"Regular",ConsumableBase:1,"1":"ConsumableBase",SupermanaBase:2,"2":"SupermanaBase",ManaBase:3,"3":"ManaBase",ManaPool:4,"4":"ManaPool",MonBase:5,"5":"MonBase", });
228
+ export const OutputModelKind = Object.freeze({ InvalidInput:0,"0":"InvalidInput",LocationsToStartFrom:1,"1":"LocationsToStartFrom",NextInputOptions:2,"2":"NextInputOptions",Events:3,"3":"Events", });
229
229
  /**
230
230
  */
231
- export const NextInputKind = Object.freeze({ MonMove:0,"0":"MonMove",ManaMove:1,"1":"ManaMove",MysticAction:2,"2":"MysticAction",DemonAction:3,"3":"DemonAction",DemonAdditionalStep:4,"4":"DemonAdditionalStep",SpiritTargetCapture:5,"5":"SpiritTargetCapture",SpiritTargetMove:6,"6":"SpiritTargetMove",SelectConsumable:7,"7":"SelectConsumable",BombAttack:8,"8":"BombAttack", });
231
+ export const Color = Object.freeze({ White:0,"0":"White",Black:1,"1":"Black", });
232
232
 
233
233
  const EventModelFinalization = (typeof FinalizationRegistry === 'undefined')
234
234
  ? { register: () => {}, unregister: () => {} }
@@ -644,14 +644,14 @@ export class Mon {
644
644
  * @returns {number}
645
645
  */
646
646
  get cooldown() {
647
- const ret = wasm.__wbg_get_mon_cooldown(this.__wbg_ptr);
647
+ const ret = wasm.__wbg_get_location_i(this.__wbg_ptr);
648
648
  return ret;
649
649
  }
650
650
  /**
651
651
  * @param {number} arg0
652
652
  */
653
653
  set cooldown(arg0) {
654
- wasm.__wbg_set_mon_cooldown(this.__wbg_ptr, arg0);
654
+ wasm.__wbg_set_location_i(this.__wbg_ptr, arg0);
655
655
  }
656
656
  /**
657
657
  * @returns {boolean}
@@ -1416,10 +1416,6 @@ function __wbg_get_imports() {
1416
1416
  const ret = getStringFromWasm0(arg0, arg1);
1417
1417
  return addHeapObject(ret);
1418
1418
  };
1419
- imports.wbg.__wbg_eventmodel_new = function(arg0) {
1420
- const ret = EventModel.__wrap(arg0);
1421
- return addHeapObject(ret);
1422
- };
1423
1419
  imports.wbg.__wbg_nextinputmodel_new = function(arg0) {
1424
1420
  const ret = NextInputModel.__wrap(arg0);
1425
1421
  return addHeapObject(ret);
@@ -1428,6 +1424,10 @@ function __wbg_get_imports() {
1428
1424
  const ret = Location.__wrap(arg0);
1429
1425
  return addHeapObject(ret);
1430
1426
  };
1427
+ imports.wbg.__wbg_eventmodel_new = function(arg0) {
1428
+ const ret = EventModel.__wrap(arg0);
1429
+ return addHeapObject(ret);
1430
+ };
1431
1431
  imports.wbg.__wbg_location_unwrap = function(arg0) {
1432
1432
  const ret = Location.__unwrap(takeObject(arg0));
1433
1433
  return ret;
package/mons-web_bg.wasm CHANGED
Binary file
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "mons-web",
3
3
  "type": "module",
4
4
  "description": "super metal mons",
5
- "version": "0.1.123",
5
+ "version": "0.1.125",
6
6
  "license": "CC0-1.0",
7
7
  "repository": {
8
8
  "type": "git",