standalone 209 -> 124 (closed 85); rule 24: never reuse a build directory across trees
This commit is contained in:
parent
9075f60f7b
commit
2d6184888f
5 changed files with 178 additions and 119 deletions
|
|
@ -1,37 +1,37 @@
|
|||
# SotS RE campaign — coverage dashboard
|
||||
|
||||
Generated 2026-09-08 19:49 UTC · `sots-re` @ 1b5553b,2026-09-08 · `sots-engine` @ 5d01c7c,2026-09-08 (176 commits) · regenerate with `tools/dashboard.py`
|
||||
Generated 2026-09-08 21:01 UTC · `sots-re` @ 9075f60,2026-09-08 · `sots-engine` @ 0117495,2026-09-08 (192 commits) · regenerate with `tools/dashboard.py`
|
||||
|
||||
> **North star:** A functional reimplementation of the engine — behavior-equivalent, NOT byte-for-byte
|
||||
|
||||
## 1. Map coverage (campaign/board.md)
|
||||
|
||||
292 targets · mapped-or-better **263/292** `[█████████░] 90%` · verified **223/292** `[████████░░] 76%`
|
||||
317 targets · mapped-or-better **284/317** `[█████████░] 90%` · verified **244/317** `[████████░░] 77%`
|
||||
|
||||
| Status | Count | % |
|
||||
|---|---:|---:|
|
||||
| verified | 223 | 76% |
|
||||
| mapped | 40 | 14% |
|
||||
| in-progress | 2 | 1% |
|
||||
| backlog | 25 | 9% |
|
||||
| verified | 244 | 77% |
|
||||
| mapped | 40 | 13% |
|
||||
| in-progress | 3 | 1% |
|
||||
| backlog | 28 | 9% |
|
||||
| blocked | 2 | 1% |
|
||||
|
||||
| Type | verified | mapped | in-progress | backlog | blocked | total |
|
||||
|---|---:|---:|---:|---:|---:|---:|
|
||||
| objects | 37 | 6 | 0 | 2 | 1 | 46 |
|
||||
| control-flow | 21 | 2 | 0 | 0 | 0 | 23 |
|
||||
| objects | 39 | 6 | 0 | 3 | 1 | 49 |
|
||||
| control-flow | 23 | 2 | 0 | 0 | 0 | 25 |
|
||||
| subsystems | 4 | 8 | 0 | 2 | 1 | 15 |
|
||||
| engine | 24 | 0 | 0 | 0 | 0 | 24 |
|
||||
| verify | 61 | 14 | 2 | 20 | 0 | 97 |
|
||||
| engine | 25 | 0 | 0 | 0 | 0 | 25 |
|
||||
| verify | 70 | 14 | 3 | 22 | 0 | 109 |
|
||||
| phase2 | 13 | 3 | 0 | 0 | 0 | 16 |
|
||||
| meta | 48 | 6 | 0 | 1 | 0 | 55 |
|
||||
| other | 15 | 1 | 0 | 0 | 0 | 16 |
|
||||
| meta | 53 | 6 | 0 | 1 | 0 | 60 |
|
||||
| other | 17 | 1 | 0 | 0 | 0 | 18 |
|
||||
|
||||
## 2. Binary understanding
|
||||
|
||||
- RTTI type descriptors: **1,924** (`Game::` 1,404, `Mars::` 194; serializable types 179)
|
||||
- Classes with recovered member layouts: **384** / 1,598 named classes `[██░░░░░░░░] 24%` — `objects/layouts.json` (serializer recovery) plus classes recovered by hand in `struct-recovery.md` + `schema-gaps-resolved.md`. Note 179 types are *serializable*; the recovery also reaches non-serializable ones, so this is not a subset of that
|
||||
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **1138**, verified **1057** `[█████████░] 93%`
|
||||
- Functions: **41,411** (parsed from `01-fingerprint.md`); named/annotated in the **address contract** (`ghidra/addresses.json`, not Ghidra's full rename count): **1188**, verified **1093** `[█████████░] 92%`
|
||||
|
||||
## 3. Data layer
|
||||
|
||||
|
|
@ -45,8 +45,8 @@ Generated 2026-09-08 19:49 UTC · `sots-re` @ 1b5553b,2026-09-08 · `sots-engine
|
|||
|
||||
| Module | LOC | Test files | Checks | Wired | Doc |
|
||||
|---|---:|---:|---:|---|---|
|
||||
| `app` | 3,409 | 8 | 169 | yes | N-output-term.md |
|
||||
| `game/ai` | 451 | 3 | 106 | yes | — |
|
||||
| `app` | 4,210 | 8 | 169 | yes | N-output-term.md |
|
||||
| `game/ai` | 1,197 | 5 | 206 | yes | — |
|
||||
| `game/combat` | 582 | 2 | 34 | yes | mars-parse.md |
|
||||
| `game/config` | 558 | 4 | 131 | yes | M1.md |
|
||||
| `game/data` | 2,077 | 12 | 462 | yes | game-data.md |
|
||||
|
|
@ -54,18 +54,18 @@ Generated 2026-09-08 19:49 UTC · `sots-re` @ 1b5553b,2026-09-08 · `sots-engine
|
|||
| `game/effects` | 973 | 3 | 231 | yes | game-effects.md |
|
||||
| `game/events` | 558 | 3 | 152 | yes | E-events.md |
|
||||
| `game/nav` | 581 | 2 | 113 | yes | — |
|
||||
| `game/sim` | 4,217 | 12 | 937 | yes | game-sim.md |
|
||||
| `game/sim` | 4,752 | 14 | 1034 | yes | game-sim.md |
|
||||
| `mars/parse` | 875 | 12 | 277 | yes | mars-parse.md |
|
||||
| `mars/rng` | 244 | 0 | 0 | yes | mars-rng.md |
|
||||
| `mars/stream` | 5,407 | 7 | 310 | yes | mars-stream.md |
|
||||
| `mars/text` | 899 | 8 | 245 | yes | mars-text.md |
|
||||
| `mars/vfs` | 788 | 9 | 140 | yes | mars-vfs.md |
|
||||
| `shim` | 13,026 | 0 | 0 | direct (WIN32) | H-probes.md |
|
||||
| `shim/hooks` | 9,973 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim` | 13,257 | 0 | 0 | direct (WIN32) | H-probes.md |
|
||||
| `shim/hooks` | 10,204 | 0 | 0 | direct (WIN32) | M0.md |
|
||||
| `shim/trace` | 2,258 | 9 | 273 | direct (WIN32) | shim-trace.md |
|
||||
| **total** | **48,076** | **113** | **3883** | | |
|
||||
| **total** | **50,620** | **117** | **4080** | | |
|
||||
|
||||
Board `engine:` rows: verified **24**, mapped 0, in flight 0 (of 24) — verified & merged `[██████████] 100%`
|
||||
Board `engine:` rows: verified **25**, mapped 0, in flight 0 (of 25) — verified & merged `[██████████] 100%`
|
||||
|
||||
## 5. Phase 2 milestones
|
||||
|
||||
|
|
@ -84,22 +84,22 @@ Turn-driver phases: **16/44** modelled (12 committed) `[████░░░░
|
|||
| | verified | implemented | partial | blocked | stub |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| turn drivers (44) | 0 | 4 | 8 | 4 | 28 |
|
||||
| post-combat tail (37) | 0 | 1 | 2 | 2 | 32 |
|
||||
| post-combat tail (37) | 0 | 1 | 4 | 1 | 31 |
|
||||
|
||||
Reference pair `turn1-state.sav` → `turn2-state.sav`, leaves localised by `state_checksum.py` (coverage proved by re-serialisation):
|
||||
|
||||
- baseline (a standalone that does nothing): **209** leaves diverge
|
||||
- after one standalone turn: **131** leaves diverge — closed 78, regressed 0
|
||||
- byte match: ❌ not yet `[████░░░░░░] 37%`
|
||||
- after one standalone turn: **124** leaves diverge — closed 85, regressed 0
|
||||
- byte match: ❌ not yet `[████░░░░░░] 41%`
|
||||
|
||||
Where the remaining divergence lives:
|
||||
|
||||
| Subsystem | Leaves |
|
||||
|---|---:|
|
||||
| `/Sim/players` | 55 |
|
||||
| `/Sim/systems` | 34 |
|
||||
| `/Sim/players` | 52 |
|
||||
| `/Sim/systems` | 32 |
|
||||
| `/Sim/turnstats` | 24 |
|
||||
| `/Sim/SvSctOb` | 8 |
|
||||
| `/Sim/SvSctOb` | 6 |
|
||||
| `/Sim/DesignIDs[]` | 1 |
|
||||
| `/Sim/FleetIDs[]` | 1 |
|
||||
| `/Sim/ModCount` | 1 |
|
||||
|
|
@ -132,11 +132,11 @@ Most recent open:
|
|||
|
||||
## 9. Delta since previous dashboard
|
||||
|
||||
- verified targets: 211 → 223 (+12) · mapped-or-better: 251 → 263 (+12)
|
||||
- engine LOC: 46,804 → 48,076 (+1,272) · test files: 111 → 113 (+2) · checks: 3,796 → 3,883 (+87)
|
||||
- addresses verified: 1,020 → 1,057 (+37) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
|
||||
- standalone leaves closed: 78 → 78 (+0) · leaves still diverging: 131 → 131 (+0)
|
||||
- verified targets: 223 → 244 (+21) · mapped-or-better: 263 → 284 (+21)
|
||||
- engine LOC: 48,076 → 50,620 (+2,544) · test files: 113 → 117 (+4) · checks: 3,883 → 4,080 (+197)
|
||||
- addresses verified: 1,057 → 1,093 (+36) · recovered layouts: 384 → 384 (+0) · open questions: 26 → 26 (+0)
|
||||
- standalone leaves closed: 78 → 85 (+7) · leaves still diverging: 131 → 124 (-7)
|
||||
|
||||
---
|
||||
warnings: board.md: unknown types subsystems; mars-rng.md: no oracle total row parsed; mars-stream.md: no oracle total row parsed; mars-vfs.md: no oracle total row parsed
|
||||
<!-- dashboard-metrics {"verified": 223, "mapped_plus": 263, "targets": 292, "loc": 48076, "tests": 113, "checks": 3883, "addr_verified": 1057, "addr_total": 1138, "layouts": 384, "open_q": 26, "sa_closed": 78, "sa_left": 131} -->
|
||||
<!-- dashboard-metrics {"verified": 244, "mapped_plus": 284, "targets": 317, "loc": 50620, "tests": 117, "checks": 4080, "addr_verified": 1093, "addr_total": 1188, "layouts": 384, "open_q": 26, "sa_closed": 85, "sa_left": 124} -->
|
||||
|
|
|
|||
|
|
@ -322,3 +322,4 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
|
|||
| trade/spy workload: ABSENCE MEASURED, not assumed | verify | verified | high | 100% | 2026-09-08 | Both containers read live: `trade routes count=0`, `spy programs count=0`, both managers non-null, **all three vector pointers ZERO - default-constructed, not emptied** - and zero traps on either _Mylast. Three lanes had failed to build this workload; now the absence is a measurement. The spy-UI question stays open because the vector never grew, **but the instrument that would name the UI now exists and is proven to arm** |
|
||||
| CORRECTION: layouts.md ServerSystem NVO rows are wrong | objects | backlog | — | 0% | 2026-09-08 | Lane W3: `Game::ServerSystem` rows `PID@0x274` and `NVO@0x278` are wrong - **+0x274 is _Myhead, +0x278 is _Mysize, and the "PID" tag belongs to the NODE KEY**. Same shape for the NVE/NVs rows. Documented but not fixed because it is a GENERATED file - the fix belongs in the recovery, not the output |
|
||||
| gen_addresses now detects SAME-ADDRESS duplicates | meta | verified | high | 100% | 2026-09-08 | Lane SV caught by hand what the tooling could not see: it reached 0x004271c0 independently and would have filed `RNG_NextIntInclusive`, but addresses.json already carries it as **RNG_NextInt** - and **the merger only checked duplicate NAMES**, so it would have merged silently and **forked the vocabulary for the campaign's most-used RNG primitive**. Fixed: gen_addresses.py now errors on same-address-different-name too (offsets excluded - they are only meaningful per owning struct). IT IMMEDIATELY FOUND **13 MORE across 8 lane fragments**, including two AI lanes naming one function differently, a boundary marker colliding with the function it bounds, and several lane-suffixed aliases of existing entries. All resolved with the agreement recorded in each fragment's _note. **AND THE SWEEP BROKE THE SHIM BUILD** - the engine referenced a dropped alias - which the CT111 cross-build caught and the host build could not. Rule 13 earning its keep again |
|
||||
| standalone: 209 -> 124, closed 85, regressed 0 | engine | verified | high | 100% | 2026-09-08 | Corrected figure after finding a stale-build error of mine (rule 24). Lanes PL and SV had each independently reported 126 from a 128 baseline while main also read 128 - arithmetically impossible, which is what exposed it. Both lanes' work was in the tree all along; the binary I measured predated both merges because the gate rsync excludes `build*` and rsync preserves mtimes, so cmake relinked nothing. **NO ERROR, NO WARNING, AND A PLAUSIBLE NUMBER** - the same shape as the build-dir race earlier today that looked exactly like engine nondeterminism. Fresh build dir per measurement from now on |
|
||||
|
|
|
|||
|
|
@ -289,3 +289,21 @@ exactly, an empty container.
|
|||
|
||||
**A float literal in this image is a widened `float`, not a `double`.** It has now bitten the money
|
||||
chain, the bankruptcy divisor and the gate constant. Read the four bytes; do not assume the decimal.
|
||||
|
||||
## 24. Never reuse a build directory across trees — a stale binary measures cleanly
|
||||
|
||||
The integrator's gate rsync excludes `build*` to save transfer time, so the remote build directory
|
||||
survived from an *earlier* tree. rsync preserves mtimes, so `cmake --build` saw objects newer than
|
||||
sources, relinked nothing, and produced a **stale binary that measured perfectly**.
|
||||
|
||||
The reported figure was 128 diverging leaves. The real figure for that tree was **124**. Two lanes'
|
||||
merged work was invisible, and both had independently reported the better number from their own
|
||||
branches — which is the only reason it was caught: two lanes reporting 126 from a 128 baseline while
|
||||
`main` also read 128 is arithmetically impossible.
|
||||
|
||||
The failure mode is the dangerous kind: **no error, no warning, and a plausible number.** It is the
|
||||
same shape as querying a build directory while a background job owns it (which also looked exactly
|
||||
like nondeterminism in the engine).
|
||||
|
||||
So: **a fresh build directory per measurement**, or `rm -rf` the build tree before building. And when
|
||||
a merged result does not reproduce a lane's own number, suspect the build before suspecting the lane.
|
||||
|
|
|
|||
|
|
@ -1,18 +1,22 @@
|
|||
# standalone vs the oracle
|
||||
|
||||
generated 2026-09-08T20:04:11Z binary /home/alex/sots-engine-pl/build-host/src/app/sots_turn
|
||||
generated 2026-09-08T21:01:53Z binary /srv/re-lab/build/eng-rep3/build-host/src/app/sots_turn
|
||||
|
||||
phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, partial 8, blocked 4, stub 28)
|
||||
5/37 of the post-combat tail modelled
|
||||
6/37 of the post-combat tail modelled
|
||||
|
||||
## turn1-state.sav -> turn2-state.sav (real End Turn)
|
||||
baseline (do nothing) 209 leaves diverge
|
||||
after one standalone turn 128 leaves diverge
|
||||
closed 81, regressed 0, byte match: no
|
||||
after one standalone turn 124 leaves diverge
|
||||
closed 85, regressed 0, byte match: no
|
||||
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
|
||||
closed:
|
||||
+ /Sim/Frame
|
||||
+ /Sim/SvSctOb/EncObj[3]/CDiff
|
||||
+ /Sim/SvSctOb/EncObj[6]/ini
|
||||
+ /Sim/players/Player[16 "re"]/BnkEl
|
||||
+ /Sim/players/Player[16 "re"]/Sav
|
||||
+ /Sim/players/Player[32 "Fane Lao"]/BnkEl
|
||||
+ /Sim/players/Player[496 "Singularity"]/dipstats/.
|
||||
+ /Sim/players/Player[496 "Singularity"]/dipstats/.[0]
|
||||
+ /Sim/players/Player[496 "Singularity"]/dipstats/.[1]
|
||||
|
|
@ -95,12 +99,17 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
|
|||
|
||||
## turn2-state.sav -> turn3-state.sav (real End Turn)
|
||||
baseline (do nothing) 108 leaves diverge
|
||||
after one standalone turn 69 leaves diverge
|
||||
closed 39, regressed 0, byte match: no
|
||||
after one standalone turn 63 leaves diverge
|
||||
closed 45, regressed 0, byte match: no
|
||||
coverage proved on all three saves: {'input': True, 'oracle': True, 'ours': True}
|
||||
closed:
|
||||
+ /Sim/Frame
|
||||
+ /Sim/SvSctOb/EncObj[5]/Hives/.[1]/NextQ
|
||||
+ /Sim/SvSctOb/EncObj[5]/Hives/.[2]/NextQ
|
||||
+ /Sim/players/Player[16 "re"]/BnkEl
|
||||
+ /Sim/players/Player[16 "re"]/PvSav
|
||||
+ /Sim/players/Player[16 "re"]/Sav
|
||||
+ /Sim/players/Player[32 "Fane Lao"]/BnkEl
|
||||
+ /Sim/players/Player[496 "Singularity"]/dipstats/.[1]/lastally
|
||||
+ /Sim/players/Player[512 "Singularity"]/dipstats/.[1]/lastally
|
||||
+ /Sim/players/Player[528 "Alien Menace"]/dipstats/.[1]/lastnap
|
||||
|
|
@ -112,6 +121,7 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
|
|||
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[1]/lastnap
|
||||
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[2]/lastnap
|
||||
+ /Sim/players/Player[560 "Von Neumann"]/dipstats/.[3]/lastnap
|
||||
+ /Sim/players/Player[576 "Independent Colony"]/PvSav
|
||||
+ /Sim/players/Player[576 "Independent Colony"]/Sav
|
||||
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[1]/lastnap
|
||||
+ /Sim/players/Player[576 "Independent Colony"]/dipstats/.[2]/lastnap
|
||||
|
|
@ -140,10 +150,10 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
|
|||
+ /Summary/Turn
|
||||
|
||||
## what still differs on the reference pair, by subsystem
|
||||
54 /Sim/players
|
||||
52 /Sim/players
|
||||
32 /Sim/systems
|
||||
24 /Sim/turnstats
|
||||
8 /Sim/SvSctOb
|
||||
6 /Sim/SvSctOb
|
||||
1 /Sim/DesignIDs[]
|
||||
1 /Sim/FleetIDs[]
|
||||
1 /Sim/ModCount
|
||||
|
|
@ -163,24 +173,20 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
|
|||
/Sim/NumFlts: 6 -> 7
|
||||
/Sim/RNG/.: '<raw 2503 B 9e6887688129a8f6>' -> '<raw 2503 B ef4d678696ed4c53>'
|
||||
/Sim/ShipIDs[]: removed [], added [1728] (15 -> 16 entries)
|
||||
/Sim/SvSctOb/EncObj[3]/CDiff: -1 -> 0
|
||||
/Sim/SvSctOb/EncObj[5]/Hives/.: only-in-A
|
||||
/Sim/SvSctOb/EncObj[5]/Hives/.[0]: only-in-B
|
||||
/Sim/SvSctOb/EncObj[5]/Hives/.[1]: only-in-B
|
||||
/Sim/SvSctOb/EncObj[5]/Hives/.[2]: only-in-B
|
||||
/Sim/SvSctOb/EncObj[6]/did: only-in-B
|
||||
/Sim/SvSctOb/EncObj[6]/didc: 0 -> 1
|
||||
/Sim/SvSctOb/EncObj[6]/ini: False -> True
|
||||
/Sim/cmbtid: 1 -> 2
|
||||
/Sim/fleets/Flt[1744 "Alpha Fleet"]: only-in-B
|
||||
/Sim/players/Player[16 "re"]/BnkEl: -1590613 -> -1594593
|
||||
/Sim/players/Player[16 "re"]/BnkPr: -787353 -> -789323
|
||||
/Sim/players/Player[16 "re"]/Events/EvNxID: 0 -> 2
|
||||
/Sim/players/Player[16 "re"]/Events/Events/.: only-in-A
|
||||
/Sim/players/Player[16 "re"]/Events/Events/.[0]: only-in-B
|
||||
/Sim/players/Player[16 "re"]/Events/Events/.[EvTurn=2]: only-in-B
|
||||
/Sim/players/Player[16 "re"]/Status: 0 -> 4
|
||||
/Sim/players/Player[32 "Fane Lao"]/BnkEl: -1811273 -> -1815833
|
||||
/Sim/players/Player[32 "Fane Lao"]/BnkPr: -896580 -> -898837
|
||||
/Sim/players/Player[32 "Fane Lao"]/Events/EvNxID: 0 -> 2
|
||||
/Sim/players/Player[32 "Fane Lao"]/Events/Events/.: only-in-A
|
||||
|
|
@ -196,3 +202,7 @@ phases: 16/44 of the two turn drivers modelled, 12 committed (implemented 4, par
|
|||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[0]: 0 -> 1
|
||||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srb[3]: only-in-B
|
||||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srbd: 0 -> 1
|
||||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/src: only-in-B
|
||||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/srd: only-in-B
|
||||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[0]: 0 -> 1
|
||||
/Sim/players/Player[32 "Fane Lao"]/ShipRecs/sri[3]: only-in-B
|
||||
|
|
|
|||
|
|
@ -1,21 +1,21 @@
|
|||
{
|
||||
"schema": "sots-standalone-status/1",
|
||||
"generated": "2026-09-08T20:04:11Z",
|
||||
"binary": "/home/alex/sots-engine-pl/build-host/src/app/sots_turn",
|
||||
"generated": "2026-09-08T21:01:53Z",
|
||||
"binary": "/srv/re-lab/build/eng-rep3/build-host/src/app/sots_turn",
|
||||
"engineArgs": [],
|
||||
"reference": {
|
||||
"input": "turn1-state.sav",
|
||||
"oracle": "turn2-state.sav",
|
||||
"baselineDiverging": 209,
|
||||
"divergingAfterTurn": 128,
|
||||
"closed": 81,
|
||||
"divergingAfterTurn": 124,
|
||||
"closed": 85,
|
||||
"regressed": 0,
|
||||
"byteMatch": false,
|
||||
"subsystems": {
|
||||
"/Sim/players": 54,
|
||||
"/Sim/players": 52,
|
||||
"/Sim/systems": 32,
|
||||
"/Sim/turnstats": 24,
|
||||
"/Sim/SvSctOb": 8,
|
||||
"/Sim/SvSctOb": 6,
|
||||
"/Sim/DesignIDs[]": 1,
|
||||
"/Sim/FleetIDs[]": 1,
|
||||
"/Sim/ModCount": 1,
|
||||
|
|
@ -42,11 +42,11 @@
|
|||
"total": 37,
|
||||
"verified": 0,
|
||||
"implemented": 1,
|
||||
"partial": 2,
|
||||
"blocked": 2,
|
||||
"stub": 32,
|
||||
"modelled": 5,
|
||||
"committed": 3
|
||||
"partial": 4,
|
||||
"blocked": 1,
|
||||
"stub": 31,
|
||||
"modelled": 6,
|
||||
"committed": 5
|
||||
},
|
||||
"rng": {
|
||||
"wordsModelled": 16,
|
||||
|
|
@ -60,7 +60,7 @@
|
|||
"engineArgs": [],
|
||||
"exit": 0,
|
||||
"stdout": [
|
||||
"load: /home/alex/sots-re/verify/results/saves/turn1-state.sav",
|
||||
"load: /srv/re-lab/build/sre4/verify/results/saves/turn1-state.sav",
|
||||
" 591376 inflated bytes, 0 error(s), 0 warning(s)",
|
||||
" turn 1, frame 1, modCount 0, 8 player(s), 28 system(s), 6 fleet(s)",
|
||||
"roundtrip (untouched): byte-identical (591376 bytes)",
|
||||
|
|
@ -69,12 +69,12 @@
|
|||
"phases",
|
||||
" turn drivers (the milestone's denominator): 16 of 44 modelled, 12 committed",
|
||||
" verified 0 implemented 4 partial 8 blocked 4 stub 28",
|
||||
" post-combat tail (written to the autosave, tracked separately): 5 of 37 modelled",
|
||||
" verified 0 implemented 1 partial 2 blocked 2 stub 32",
|
||||
" post-combat tail (written to the autosave, tracked separately): 6 of 37 modelled",
|
||||
" verified 0 implemented 1 partial 4 blocked 1 stub 31",
|
||||
"",
|
||||
"this run",
|
||||
" leaves written 89",
|
||||
" leaves NOT written by a blocked phase 98",
|
||||
" leaves written 93",
|
||||
" leaves NOT written by a blocked phase 96",
|
||||
" generator words consumed 16 (state loaded, left untouched)",
|
||||
" generator words NOT accounted (never netted off the above):",
|
||||
" - encounter detection draws one unit value and one bounded integer per turn on every turn measured (2 words), with no derived rule behind the count -- its bound is the product of the contact and detector counts, so it is left unmodelled",
|
||||
|
|
@ -83,8 +83,8 @@
|
|||
" ! the generator advanced during this run but the save keeps its original state (--commit-rng to write it)",
|
||||
" ! the modelled words are a LOWER BOUND on the turn's cost, so a committed generator is short by the unaccounted sites below and its drawn VALUES are not the game's",
|
||||
"",
|
||||
"wrote /tmp/tmpfmmdz_by/post-turn1-state.sav (65980 bytes gzipped, 595192 inflated)",
|
||||
"metric -> /tmp/tmpfmmdz_by/metric-turn1-state.sav.json"
|
||||
"wrote /tmp/tmpz2xrayx3/post-turn1-state.sav (65980 bytes gzipped, 595192 inflated)",
|
||||
"metric -> /tmp/tmpz2xrayx3/metric-turn1-state.sav.json"
|
||||
],
|
||||
"coverage": {
|
||||
"input": true,
|
||||
|
|
@ -94,15 +94,19 @@
|
|||
"roots": {
|
||||
"input": "64b836b966299d9b72fc02244ed31e31",
|
||||
"oracle": "4bed514f853332b9fa35b388c3aa5558",
|
||||
"ours": "0cf5b0cfe7dd11ab248eb4df2a1ea828"
|
||||
"ours": "9f767c16c83cfa6c653b51a3bd027659"
|
||||
},
|
||||
"baselineDiverging": 209,
|
||||
"divergingAfterTurn": 128,
|
||||
"closed": 81,
|
||||
"divergingAfterTurn": 124,
|
||||
"closed": 85,
|
||||
"regressed": 0,
|
||||
"closedPaths": [
|
||||
"/Sim/Frame",
|
||||
"/Sim/SvSctOb/EncObj[3]/CDiff",
|
||||
"/Sim/SvSctOb/EncObj[6]/ini",
|
||||
"/Sim/players/Player[16 \"re\"]/BnkEl",
|
||||
"/Sim/players/Player[16 \"re\"]/Sav",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/BnkEl",
|
||||
"/Sim/players/Player[496 \"Singularity\"]/dipstats/.",
|
||||
"/Sim/players/Player[496 \"Singularity\"]/dipstats/.[0]",
|
||||
"/Sim/players/Player[496 \"Singularity\"]/dipstats/.[1]",
|
||||
|
|
@ -192,24 +196,20 @@
|
|||
"/Sim/NumFlts: 6 -> 7",
|
||||
"/Sim/RNG/.: '<raw 2503 B 9e6887688129a8f6>' -> '<raw 2503 B ef4d678696ed4c53>'",
|
||||
"/Sim/ShipIDs[]: removed [], added [1728] (15 -> 16 entries)",
|
||||
"/Sim/SvSctOb/EncObj[3]/CDiff: -1 -> 0",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.: only-in-A",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[0]: only-in-B",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[1]: only-in-B",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[2]: only-in-B",
|
||||
"/Sim/SvSctOb/EncObj[6]/did: only-in-B",
|
||||
"/Sim/SvSctOb/EncObj[6]/didc: 0 -> 1",
|
||||
"/Sim/SvSctOb/EncObj[6]/ini: False -> True",
|
||||
"/Sim/cmbtid: 1 -> 2",
|
||||
"/Sim/fleets/Flt[1744 \"Alpha Fleet\"]: only-in-B",
|
||||
"/Sim/players/Player[16 \"re\"]/BnkEl: -1590613 -> -1594593",
|
||||
"/Sim/players/Player[16 \"re\"]/BnkPr: -787353 -> -789323",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/EvNxID: 0 -> 2",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/Events/.: only-in-A",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/Events/.[0]: only-in-B",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/Events/.[EvTurn=2]: only-in-B",
|
||||
"/Sim/players/Player[16 \"re\"]/Status: 0 -> 4",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/BnkEl: -1811273 -> -1815833",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/BnkPr: -896580 -> -898837",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Events/EvNxID: 0 -> 2",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Events/Events/.: only-in-A",
|
||||
|
|
@ -224,13 +224,17 @@
|
|||
"/Sim/players/Player[32 \"Fane Lao\"]/Sav: 298113 -> 92651",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srb[0]: 0 -> 1",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srb[3]: only-in-B",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srbd: 0 -> 1"
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srbd: 0 -> 1",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/src: only-in-B",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srd: only-in-B",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/sri[0]: 0 -> 1",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/sri[3]: only-in-B"
|
||||
],
|
||||
"byteMatch": false,
|
||||
"standalone": {
|
||||
"schema": "sots-standalone-metric/1",
|
||||
"input": "/home/alex/sots-re/verify/results/saves/turn1-state.sav",
|
||||
"output": "/tmp/tmpfmmdz_by/post-turn1-state.sav",
|
||||
"input": "/srv/re-lab/build/sre4/verify/results/saves/turn1-state.sav",
|
||||
"output": "/tmp/tmpz2xrayx3/post-turn1-state.sav",
|
||||
"spine": {
|
||||
"total": 44,
|
||||
"verified": 0,
|
||||
|
|
@ -245,15 +249,15 @@
|
|||
"total": 37,
|
||||
"verified": 0,
|
||||
"implemented": 1,
|
||||
"partial": 2,
|
||||
"blocked": 2,
|
||||
"stub": 32,
|
||||
"modelled": 5,
|
||||
"committed": 3
|
||||
"partial": 4,
|
||||
"blocked": 1,
|
||||
"stub": 31,
|
||||
"modelled": 6,
|
||||
"committed": 5
|
||||
},
|
||||
"run": {
|
||||
"leafWrites": 89,
|
||||
"blockedLeafWrites": 98,
|
||||
"leafWrites": 93,
|
||||
"blockedLeafWrites": 96,
|
||||
"rngWords": 16,
|
||||
"rngLoaded": true,
|
||||
"rngCommitted": false,
|
||||
|
|
@ -274,6 +278,16 @@
|
|||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
{
|
||||
"driver": "host turn sequence (outside the two turn drivers)",
|
||||
"id": "H03",
|
||||
"name": "ScriptHookTurnBegin",
|
||||
"status": "partial",
|
||||
"ran": 2,
|
||||
"writes": 1,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
{
|
||||
"driver": "host turn sequence (outside the two turn drivers)",
|
||||
"id": "H02",
|
||||
|
|
@ -289,7 +303,7 @@
|
|||
"id": "S00",
|
||||
"name": "SnapshotPreviousTurn",
|
||||
"status": "partial",
|
||||
"ran": 1,
|
||||
"ran": 9,
|
||||
"writes": 1,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
|
|
@ -928,9 +942,9 @@
|
|||
"driver": "StrategyServer::OnAllCombatDone_Tail",
|
||||
"id": "T20",
|
||||
"name": "ScriptHooksTurnEnd",
|
||||
"status": "stub",
|
||||
"ran": 0,
|
||||
"writes": 0,
|
||||
"status": "partial",
|
||||
"ran": 1,
|
||||
"writes": 1,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
|
|
@ -1038,10 +1052,10 @@
|
|||
"driver": "StrategyServer::OnAllCombatDone_Tail",
|
||||
"id": "T31",
|
||||
"name": "UpdateBankruptcyLimits",
|
||||
"status": "blocked",
|
||||
"status": "partial",
|
||||
"ran": 8,
|
||||
"writes": 0,
|
||||
"blockedWrites": 2,
|
||||
"writes": 2,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
{
|
||||
|
|
@ -1114,7 +1128,7 @@
|
|||
"engineArgs": [],
|
||||
"exit": 0,
|
||||
"stdout": [
|
||||
"load: /home/alex/sots-re/verify/results/saves/turn2-state.sav",
|
||||
"load: /srv/re-lab/build/sre4/verify/results/saves/turn2-state.sav",
|
||||
" 603360 inflated bytes, 0 error(s), 0 warning(s)",
|
||||
" turn 2, frame 2, modCount 12, 8 player(s), 28 system(s), 7 fleet(s)",
|
||||
"roundtrip (untouched): byte-identical (603360 bytes)",
|
||||
|
|
@ -1123,12 +1137,12 @@
|
|||
"phases",
|
||||
" turn drivers (the milestone's denominator): 16 of 44 modelled, 12 committed",
|
||||
" verified 0 implemented 4 partial 8 blocked 4 stub 28",
|
||||
" post-combat tail (written to the autosave, tracked separately): 5 of 37 modelled",
|
||||
" verified 0 implemented 1 partial 2 blocked 2 stub 32",
|
||||
" post-combat tail (written to the autosave, tracked separately): 6 of 37 modelled",
|
||||
" verified 0 implemented 1 partial 4 blocked 1 stub 31",
|
||||
"",
|
||||
"this run",
|
||||
" leaves written 45",
|
||||
" leaves NOT written by a blocked phase 74",
|
||||
" leaves written 57",
|
||||
" leaves NOT written by a blocked phase 72",
|
||||
" generator words consumed 16 (state loaded, left untouched)",
|
||||
" generator words NOT accounted (never netted off the above):",
|
||||
" - encounter detection draws one unit value and one bounded integer per turn on every turn measured (2 words), with no derived rule behind the count -- its bound is the product of the contact and detector counts, so it is left unmodelled",
|
||||
|
|
@ -1137,8 +1151,8 @@
|
|||
" ! the generator advanced during this run but the save keeps its original state (--commit-rng to write it)",
|
||||
" ! the modelled words are a LOWER BOUND on the turn's cost, so a committed generator is short by the unaccounted sites below and its drawn VALUES are not the game's",
|
||||
"",
|
||||
"wrote /tmp/tmpfmmdz_by/post-turn2-state.sav (66880 bytes gzipped, 603360 inflated)",
|
||||
"metric -> /tmp/tmpfmmdz_by/metric-turn2-state.sav.json"
|
||||
"wrote /tmp/tmpz2xrayx3/post-turn2-state.sav (66882 bytes gzipped, 603360 inflated)",
|
||||
"metric -> /tmp/tmpz2xrayx3/metric-turn2-state.sav.json"
|
||||
],
|
||||
"coverage": {
|
||||
"input": true,
|
||||
|
|
@ -1148,15 +1162,20 @@
|
|||
"roots": {
|
||||
"input": "4bed514f853332b9fa35b388c3aa5558",
|
||||
"oracle": "e9c161e311f8ef8fad6f1aa1903dcf3f",
|
||||
"ours": "853380c5c55cd7208c60afc2486c7e74"
|
||||
"ours": "abe565b26e6b52ac8ee006e34fc1a984"
|
||||
},
|
||||
"baselineDiverging": 108,
|
||||
"divergingAfterTurn": 69,
|
||||
"closed": 39,
|
||||
"divergingAfterTurn": 63,
|
||||
"closed": 45,
|
||||
"regressed": 0,
|
||||
"closedPaths": [
|
||||
"/Sim/Frame",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[1]/NextQ",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[2]/NextQ",
|
||||
"/Sim/players/Player[16 \"re\"]/BnkEl",
|
||||
"/Sim/players/Player[16 \"re\"]/PvSav",
|
||||
"/Sim/players/Player[16 \"re\"]/Sav",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/BnkEl",
|
||||
"/Sim/players/Player[496 \"Singularity\"]/dipstats/.[1]/lastally",
|
||||
"/Sim/players/Player[512 \"Singularity\"]/dipstats/.[1]/lastally",
|
||||
"/Sim/players/Player[528 \"Alien Menace\"]/dipstats/.[1]/lastnap",
|
||||
|
|
@ -1168,6 +1187,7 @@
|
|||
"/Sim/players/Player[560 \"Von Neumann\"]/dipstats/.[1]/lastnap",
|
||||
"/Sim/players/Player[560 \"Von Neumann\"]/dipstats/.[2]/lastnap",
|
||||
"/Sim/players/Player[560 \"Von Neumann\"]/dipstats/.[3]/lastnap",
|
||||
"/Sim/players/Player[576 \"Independent Colony\"]/PvSav",
|
||||
"/Sim/players/Player[576 \"Independent Colony\"]/Sav",
|
||||
"/Sim/players/Player[576 \"Independent Colony\"]/dipstats/.[1]/lastnap",
|
||||
"/Sim/players/Player[576 \"Independent Colony\"]/dipstats/.[2]/lastnap",
|
||||
|
|
@ -1203,26 +1223,21 @@
|
|||
"/Sim/NumFlts: 7 -> 8",
|
||||
"/Sim/RNG/.: '<raw 2503 B ef4d678696ed4c53>' -> '<raw 2503 B a80459bfd63a006b>'",
|
||||
"/Sim/ShipIDs[]: removed [], added [1760] (16 -> 17 entries)",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[1]/NextQ: 31 -> 32",
|
||||
"/Sim/SvSctOb/EncObj[5]/Hives/.[2]/NextQ: 29 -> 30",
|
||||
"/Sim/cmbtid: 2 -> 3",
|
||||
"/Sim/fleets/Flt[1744 \"Alpha Fleet\"]: only-in-A",
|
||||
"/Sim/fleets/Flt[1776 \"Gamma Fleet\"]: only-in-B",
|
||||
"/Sim/fleets/Flt[34 \"Beta Fleet\"]: only-in-B",
|
||||
"/Sim/players/Player[16 \"re\"]/BnkEl: -1594593 -> -1598566",
|
||||
"/Sim/players/Player[16 \"re\"]/BnkPr: -789323 -> -791290",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/EvNxID: 2 -> 3",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/Events/.[0]: 1 -> 2",
|
||||
"/Sim/players/Player[16 \"re\"]/Events/Events/.[EvTurn=3]: only-in-B",
|
||||
"/Sim/players/Player[16 \"re\"]/PvSav: 50000 -> 289688",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/BnkEl: -1815833 -> -1820206",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/BnkPr: -898837 -> -901002",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Events/EvNxID: 2 -> 4",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Events/Events/.[0]: 1 -> 2",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Events/Events/.[EvTurn=3]: only-in-B",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/FNG/FNGNum: 1 -> 3",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Maint: 500 -> 1000",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/PvSav: 38100 -> 80751",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/PvSav: 92651 -> 80751",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/Sav: 142379 -> 135486",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srb[0]: 1 -> 2",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/ShipRecs/srb[3]: 1 -> 2",
|
||||
|
|
@ -1232,17 +1247,22 @@
|
|||
"/Sim/players/Player[32 \"Fane Lao\"]/TechTree/Tbd[106]: 1 -> 2",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/lboid: 1 -> 2",
|
||||
"/Sim/players/Player[32 \"Fane Lao\"]/odes/.[1]/otnL: 2 -> 3",
|
||||
"/Sim/players/Player[576 \"Independent Colony\"]/PvSav: 0 -> 98871",
|
||||
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/PvPop2/PopG/PopC: 500000000 -> 520000000",
|
||||
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/RepCur: 336360.0 -> 336840.0 [15360 ulp]",
|
||||
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/RepMax: 336360.0 -> 336840.0 [15360 ulp]",
|
||||
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/TShn: 2 -> 3"
|
||||
"/Sim/systems/Sys[112 \"Gamma Cephei\"]/TShn: 2 -> 3",
|
||||
"/Sim/systems/Sys[224 \"Spica\"]/TShn: 2 -> 3",
|
||||
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/DefF: 1744 -> 1776",
|
||||
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/Flt: 1744 -> 1776",
|
||||
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/PvPop2/PopG/PopC: 500000000 -> 520000000",
|
||||
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/RepCur: 370000.0 -> 370520.0 [16640 ulp]",
|
||||
"/Sim/systems/Sys[288 \"Ke'Dolarra\"]/RepMax: 370000.0 -> 370520.0 [16640 ulp]"
|
||||
],
|
||||
"byteMatch": false,
|
||||
"standalone": {
|
||||
"schema": "sots-standalone-metric/1",
|
||||
"input": "/home/alex/sots-re/verify/results/saves/turn2-state.sav",
|
||||
"output": "/tmp/tmpfmmdz_by/post-turn2-state.sav",
|
||||
"input": "/srv/re-lab/build/sre4/verify/results/saves/turn2-state.sav",
|
||||
"output": "/tmp/tmpz2xrayx3/post-turn2-state.sav",
|
||||
"spine": {
|
||||
"total": 44,
|
||||
"verified": 0,
|
||||
|
|
@ -1257,15 +1277,15 @@
|
|||
"total": 37,
|
||||
"verified": 0,
|
||||
"implemented": 1,
|
||||
"partial": 2,
|
||||
"blocked": 2,
|
||||
"stub": 32,
|
||||
"modelled": 5,
|
||||
"committed": 3
|
||||
"partial": 4,
|
||||
"blocked": 1,
|
||||
"stub": 31,
|
||||
"modelled": 6,
|
||||
"committed": 5
|
||||
},
|
||||
"run": {
|
||||
"leafWrites": 45,
|
||||
"blockedLeafWrites": 74,
|
||||
"leafWrites": 57,
|
||||
"blockedLeafWrites": 72,
|
||||
"rngWords": 16,
|
||||
"rngLoaded": true,
|
||||
"rngCommitted": false,
|
||||
|
|
@ -1286,6 +1306,16 @@
|
|||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
{
|
||||
"driver": "host turn sequence (outside the two turn drivers)",
|
||||
"id": "H03",
|
||||
"name": "ScriptHookTurnBegin",
|
||||
"status": "partial",
|
||||
"ran": 2,
|
||||
"writes": 7,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
{
|
||||
"driver": "host turn sequence (outside the two turn drivers)",
|
||||
"id": "H02",
|
||||
|
|
@ -1301,8 +1331,8 @@
|
|||
"id": "S00",
|
||||
"name": "SnapshotPreviousTurn",
|
||||
"status": "partial",
|
||||
"ran": 1,
|
||||
"writes": 1,
|
||||
"ran": 9,
|
||||
"writes": 4,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
|
|
@ -1940,8 +1970,8 @@
|
|||
"driver": "StrategyServer::OnAllCombatDone_Tail",
|
||||
"id": "T20",
|
||||
"name": "ScriptHooksTurnEnd",
|
||||
"status": "stub",
|
||||
"ran": 0,
|
||||
"status": "partial",
|
||||
"ran": 1,
|
||||
"writes": 0,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
|
|
@ -2050,10 +2080,10 @@
|
|||
"driver": "StrategyServer::OnAllCombatDone_Tail",
|
||||
"id": "T31",
|
||||
"name": "UpdateBankruptcyLimits",
|
||||
"status": "blocked",
|
||||
"status": "partial",
|
||||
"ran": 8,
|
||||
"writes": 0,
|
||||
"blockedWrites": 2,
|
||||
"writes": 2,
|
||||
"blockedWrites": 0,
|
||||
"rng": 0
|
||||
},
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue