merge: add sabotage constraint parity
This commit is contained in:
@@ -8,14 +8,16 @@
|
|||||||
- 범위: 명령 결과, RNG 소비, 로그, 예약 턴 lifecycle, DB 영속화
|
- 범위: 명령 결과, RNG 소비, 로그, 예약 턴 lifecycle, DB 영속화
|
||||||
|
|
||||||
현재 ref MariaDB와 core memory를 잇는 공통 runner, 성공 경로 55개,
|
현재 ref MariaDB와 core memory를 잇는 공통 runner, 성공 경로 55개,
|
||||||
실행 중 확률 실패 9개, full constraint fallback 7개와 모략 확률 clamp
|
실행 중 확률 실패 9개, full constraint fallback 12개와 모략 확률 clamp
|
||||||
8개, 모략 결과값 경계 5개, 부상 경계 3개가 구현됐다.
|
8개, 모략 결과값 경계 5개, 부상 경계 3개가 구현됐다.
|
||||||
실패 9개는 내정 critical
|
실패 9개는 내정 critical
|
||||||
`주민선정/정착장려/상업투자/기술연구/물자조달`과 모략
|
`주민선정/정착장려/상업투자/기술연구/물자조달`과 모략
|
||||||
`화계/선동/파괴/탈취`이며 RNG 전체 trace, semantic state delta와 실패
|
`화계/선동/파괴/탈취`이며 RNG 전체 trace, semantic state delta와 실패
|
||||||
로그 본문을 비교한다. 제약 7개는 무소속, 방랑국, 타국 도시, 보급 단절,
|
로그 본문을 비교한다. 공통 제약 7개는 무소속, 방랑국, 타국 도시, 보급
|
||||||
금·쌀 부족과 민심 상한을 대표하며 휴식 fallback과 RNG/state delta를
|
단절, 금·쌀 부족과 민심 상한을 대표한다. 모략 제약 5개는 동일 도시,
|
||||||
비교한다. clamp 8개는 `화계/선동/파괴/탈취` 각각의 계산 확률 0과
|
중립 도시, 불가침국, 계략 비용 금·쌀 부족을 고정한다. 모두 휴식
|
||||||
|
fallback과 RNG/state delta를 비교한다. clamp 8개는
|
||||||
|
`화계/선동/파괴/탈취` 각각의 계산 확률 0과
|
||||||
0.5 경계에서 성공 판정 RNG의 무소비 또는 `nextBits(1)` 소비와 전체
|
0.5 경계에서 성공 판정 RNG의 무소비 또는 `nextBits(1)` 소비와 전체
|
||||||
state delta를 비교한다. 결과값 5개는 화계 농업·상업, 선동 치안·민심,
|
state delta를 비교한다. 결과값 5개는 화계 농업·상업, 선동 치안·민심,
|
||||||
파괴 수비·성벽의 0 바닥과 탈취의 대상 국가 자원 상한·미보급 도시 최종
|
파괴 수비·성벽의 0 바닥과 탈취의 대상 국가 자원 상한·미보급 도시 최종
|
||||||
|
|||||||
@@ -179,10 +179,12 @@ responses pass a separate reference trace and core resolver/API boundary.
|
|||||||
Nine general in-action failure cases now also pass the common differential:
|
Nine general in-action failure cases now also pass the common differential:
|
||||||
five domestic critical failures and four sabotage failures. They compare the
|
five domestic critical failures and four sabotage failures. They compare the
|
||||||
full command RNG trace, semantic state delta and the exact action-log body.
|
full command RNG trace, semantic state delta and the exact action-log body.
|
||||||
Seven full-constraint cases cover neutral status, wandering nation, city
|
Seven common full-constraint cases cover neutral status, wandering nation,
|
||||||
ownership, supply, gold, rice and trust-cap rejection. Both engines replace
|
city ownership, supply, gold, rice and trust-cap rejection. Five sabotage
|
||||||
the denied command with rest, consume the same RNG and produce the same
|
constraint cases add the occupied-city target, neutral target, non-aggression
|
||||||
semantic delta. Eight sabotage clamp cases cover probability zero and 0.5 for
|
status and insufficient sabotage gold or rice. Both engines replace the denied
|
||||||
|
command with rest, consume the same RNG and produce the same semantic delta.
|
||||||
|
Eight sabotage clamp cases cover probability zero and 0.5 for
|
||||||
fire attack, agitation, destruction and seizure. The zero boundary skips the
|
fire attack, agitation, destruction and seizure. The zero boundary skips the
|
||||||
success RNG primitive, while exactly 0.5 consumes `nextBits(1)`; the complete
|
success RNG primitive, while exactly 0.5 consumes `nextBits(1)`; the complete
|
||||||
RNG trace and semantic delta match. These cases also fixed fire-attack city
|
RNG trace and semantic delta match. These cases also fixed fire-attack city
|
||||||
|
|||||||
@@ -763,6 +763,40 @@ const constraintCases: GeneralConstraintCase[] = [
|
|||||||
action: 'che_주민선정',
|
action: 'che_주민선정',
|
||||||
fixturePatches: { cities: { 3: { trust: 100 } } },
|
fixturePatches: { cities: { 3: { trust: 100 } } },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'sabotage targets the occupied city',
|
||||||
|
action: 'che_화계',
|
||||||
|
args: { destCityID: 3 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'sabotage targets a neutral city',
|
||||||
|
action: 'che_화계',
|
||||||
|
args: { destCityID: 70 },
|
||||||
|
fixturePatches: { cities: { 70: { nationId: 0 } } },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'sabotage targets a non-aggression nation',
|
||||||
|
action: 'che_화계',
|
||||||
|
args: { destCityID: 70 },
|
||||||
|
fixturePatches: {
|
||||||
|
diplomacy: {
|
||||||
|
'1:2': { state: 7 },
|
||||||
|
'2:1': { state: 7 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'insufficient sabotage gold',
|
||||||
|
action: 'che_화계',
|
||||||
|
args: { destCityID: 70 },
|
||||||
|
actorPatch: { gold: 0 },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'insufficient sabotage rice',
|
||||||
|
action: 'che_화계',
|
||||||
|
args: { destCityID: 70 },
|
||||||
|
actorPatch: { rice: 0 },
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
integration('general command full-constraint fallback matrix', () => {
|
integration('general command full-constraint fallback matrix', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user