@things-factory/headless-twin 10.1.205 → 10.1.208

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.
@@ -134,7 +134,7 @@ test('★ 시뮬 트윈에는 조치를 내지 않는다 — 지어낸 조건이
134
134
 
135
135
  assert.equal(out[0]!.proposed, 0)
136
136
  assert.equal(store.rows.size, 0)
137
- assert.match(out[0]!.skips[0]!.reason, /시뮬레이션이다/)
137
+ assert.match(out[0]!.skips[0]!.reason, /시뮬레이션 모드.*현장 지시를 생성하지 않습니다/)
138
138
  })
139
139
 
140
140
  test('★ 모드를 모르면 내지 않는다 — 모름을 「관측이다」로 읽지 않는다', async () => {
@@ -142,7 +142,7 @@ test('★ 모드를 모르면 내지 않는다 — 모름을 「관측이다」
142
142
  const out = await runRulesOnce(deps({ store, modeOf: () => undefined }))
143
143
 
144
144
  assert.equal(out[0]!.proposed, 0)
145
- assert.match(out[0]!.skips[0]!.reason, /알 수 없다/)
145
+ assert.match(out[0]!.skips[0]!.reason, /실행 모드를 확인할 수 없/)
146
146
  })
147
147
 
148
148
  /* ── 두 번 올리지 않는다 ─────────────────────────────────────────────────── */
@@ -200,7 +200,7 @@ test('★ 근거를 읽을 길이 없으면 아무것도 올리지 않고 말한
200
200
  test('★ 스냅샷이 없는 트윈은 「주의 0건」이 아니다 — 멈춘 트윈을 조건 없음으로 읽지 않는다', async () => {
201
201
  const out = await runRulesOnce(deps({ attentionsOf: () => undefined }))
202
202
  assert.equal(out[0]!.proposed, 0)
203
- assert.match(out[0]!.skips[0]!.reason, /멈춰 있거나 아직 서지 않았다/)
203
+ assert.match(out[0]!.skips[0]!.reason, /실행이 중지되었거나 아직 시작되지 않았을 수 있습니다/)
204
204
  })
205
205
 
206
206
  test('주의가 정말 0건이면 이유를 만들지 않는다 — 정상이다', async () => {
@@ -23,12 +23,12 @@ const row = (over: any = {}) => ({
23
23
  ...over
24
24
  })
25
25
 
26
- test('★ 비밀값이 꾸러미에 안 나간다 — 이름만 나간다', () => {
26
+ test('★ 비밀값이 패키지에 안 나간다 — 이름만 나간다', () => {
27
27
  const b = exportConnections([row()], { at: '2026-09-05T00:00:00.000Z' })
28
28
  const text = JSON.stringify(b)
29
29
 
30
- assert.ok(!text.includes('SECRET-VALUE'), '토큰이 꾸러미에 실렸다')
31
- assert.ok(!text.includes('ALSO-SECRET'), '훅 비밀값이 꾸러미에 실렸다')
30
+ assert.ok(!text.includes('SECRET-VALUE'), '토큰이 패키지에 실렸다')
31
+ assert.ok(!text.includes('ALSO-SECRET'), '훅 비밀값이 패키지에 실렸다')
32
32
  assert.deepEqual(b.connections[0].secretsRequired.sort(), ['hookSecret', 'token'], '무엇을 채워야 하는지 말하지 않는다')
33
33
  })
34
34
 
@@ -62,7 +62,7 @@ test('★ 없는 비밀값을 지어내지 않는다 — 이름을 대고 사람
62
62
  assert.deepEqual(needs!.keys.sort(), ['hookSecret', 'token'])
63
63
  })
64
64
 
65
- test('★ 이미 있는 연결의 비밀값을 꾸러미가 안 지운다', () => {
65
+ test('★ 이미 있는 연결의 비밀값을 패키지가 안 지운다', () => {
66
66
  const b = exportConnections([row()], { at: '2026-09-05T00:00:00.000Z' })
67
67
  const existing = [{ source: 'mes-miratek', connectionConfig: { token: 'LIVE-TOKEN' } }]
68
68
  const plan = planImport(b, existing, () => false)
@@ -72,7 +72,7 @@ test('★ 이미 있는 연결의 비밀값을 꾸러미가 안 지운다', () =
72
72
  assert.ok(a.keptSecrets?.includes('token'), '이미 있는 토큰을 지킨다고 말하지 않는다')
73
73
  })
74
74
 
75
- test('★ 꾸러미가 아닌 것을 받으면 아무것도 하지 않는다', () => {
75
+ test('★ 패키지가 아닌 것을 받으면 아무것도 하지 않는다', () => {
76
76
  for (const bad of [null, {}, { kind: 'something-else' }, 'text']) {
77
77
  const plan = planImport(bad, [], () => false)
78
78
  assert.equal(plan.actions.length, 0, `${JSON.stringify(bad)} 로 무언가를 하려 했다`)
@@ -82,6 +82,6 @@ test('★ 꾸러미가 아닌 것을 받으면 아무것도 하지 않는다', (
82
82
 
83
83
  test('★ 이 검사가 실제로 무언가를 잰다 — 견준 것이 0이면 빨강', () => {
84
84
  const b = exportConnections([row()], { at: '2026-09-05T00:00:00.000Z' })
85
- assert.equal(b.connections.length, 1, '꾸러미가 비었다 — 이 검사가 아무것도 안 잰다')
85
+ assert.equal(b.connections.length, 1, '패키지가 비었다 — 이 검사가 아무것도 안 잰다')
86
86
  assert.ok(planImport(b, [], () => true).actions.length > 0, '계획이 비었다')
87
87
  })
@@ -54,7 +54,7 @@ test('★ 저장의 문이 그 판정을 부르고, 거부하면 쓰기 전에
54
54
  /*
55
55
  * ★ **같은 충돌을 두 모양으로 건다** (ADR-0053 ②, 2026-09-16).
56
56
  *
57
- * 꾸러미는 `config`, `TwinReference` 행은 `connectionConfig` 다. 전에는 `config` 만 읽어서 행을 그대로
57
+ * 패키지는 `config`, `TwinReference` 행은 `connectionConfig` 다. 전에는 `config` 만 읽어서 행을 그대로
58
58
  * 넘기면 `[]` 였다 — 오류도 경고도 없이 저장이 통과했다. 부르는 둘이 마침 옮겨서 부른 덕에 멀쩡했는데,
59
59
  * 그건 계약이 아니라 우연이다(이 함수는 화면이 쓰라고 리졸버에서 다시 내보내진다).
60
60
  *
@@ -80,7 +80,7 @@ test('★ 두 모양이 같은 답을 낸다 — 옮기기가 갈리면 여기
80
80
  assert.deepEqual(asRow, asConfig)
81
81
  })
82
82
 
83
- test('섞여 들어와도 한 충돌로 본다 — 들여오기는 실제로 행과 꾸러미를 함께 넘긴다', () => {
83
+ test('섞여 들어와도 한 충돌로 본다 — 들여오기는 실제로 행과 패키지를 함께 넘긴다', () => {
84
84
  const mixed = intakeCollisions([
85
85
  { source: 'mes-line-a', connectionConfig: { ...intake } },
86
86
  { source: 'mes-line-b', config: { ...intake } }