@operato/ops-contract 0.9.14 → 0.9.16

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 (2) hide show
  1. package/dist/contract.d.ts +35 -0
  2. package/package.json +1 -1
@@ -31,6 +31,41 @@ export interface CanonicalEnvelope<T = unknown> {
31
31
  * 표준 자리이고, EPCIS 핵심에는 없어 확장으로 갑니다.
32
32
  */
33
33
  description?: string;
34
+ /**
35
+ * **이 사실이 실제로 일어난 것인가** — 보내는 쪽만 답할 수 있다.
36
+ *
37
+ * ── 왜 필요한가 (2026-09-09 실측) ─────────────────────────────────────────
38
+ * 트윈 저널 1,134건이 전부 발생기가 만든 실적이었고, **저널에 그렇다고 말하는 자리가 없었다.**
39
+ * 화면의 성과·수율·가동률이 그 수로 계산되는데, 화면이 그 사실을 말할 방법이 없다.
40
+ *
41
+ * 가릴 수 있는 단서가 이름 규약뿐이었다 — 발생기가 `SIM-`·`WO-SIM-` 을 붙인다. 그런데 그 규약이
42
+ * 닿는 칸(`order_id`)이 절반은 비어 있어서 **1,134 중 558 만 갈렸다.** 규약은 보내는 쪽의 것이고,
43
+ * 받는 쪽이 그것에 기대면 규약이 바뀌는 날 조용히 틀린다.
44
+ *
45
+ * ── 왜 트윈이 스스로 판정하지 않나 ────────────────────────────────────────
46
+ * **판정할 근거가 없다.** 발생기는 실 시스템과 같은 문으로, 같은 모양으로 보낸다. 트윈이 아는 것은
47
+ * 「어느 연결로 들어왔나」까지이고, 그 연결이 실 공장을 읽는지 지어내는지는 그쪽만 안다.
48
+ *
49
+ * 그래서 이 값은 **선언**이다. 지어내는 쪽이 지어낸다고 말한다.
50
+ *
51
+ * ── 없음은 `actual` 이 아니다 ─────────────────────────────────────────────
52
+ * 비어 있으면 **선언되지 않았다**는 뜻이고, 「실제로 일어났다」가 아니다. 둘을 같게 읽으면 발생기가
53
+ * 이 칸을 잊는 순간 그 수가 실적으로 계산되고, 아무것도 그렇다고 말하지 않는다.
54
+ *
55
+ * 모든 실 원본에 `actual` 을 요구하지도 않는다 — 그러면 붙는 쪽마다 한 줄이 늘고, 잊은 곳이
56
+ * 「지어낸 것」으로 보인다. **선언하는 것은 예외뿐**이고, 읽는 쪽은 셋을 구별해 말한다:
57
+ * 지어낸 것 · 실제라고 선언된 것 · 선언되지 않은 것.
58
+ *
59
+ * ── 커널은 이 값으로 판단하지 않는다 ──────────────────────────────────────
60
+ * 나르기만 한다. 성과 계산에서 지어낸 것을 뺄지는 **읽는 쪽의 결정**이고, 커널이 미리 빼면
61
+ * 시뮬레이션으로 무엇을 예측하려던 사람의 답이 사라진다.
62
+ *
63
+ * ── 왜 봉투인가 ───────────────────────────────────────────────────────────
64
+ * `description` 과 같은 이유다 — **지난 사건에 대한 사실**이고 지금 상태에 대한 사실이 아니다.
65
+ * 그리고 EPCIS 사건 안에 넣지 않는다: 표준에 그 칸이 없고, 이름을 지어 넣으면 그 사건이 표준을
66
+ * 벗어난다. 봉투는 우리 것이고, 지난 기록에는 봉투가 그대로 남는다.
67
+ */
68
+ provenance?: 'actual' | 'simulated';
34
69
  data: T;
35
70
  }
36
71
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@operato/ops-contract",
3
- "version": "0.9.14",
3
+ "version": "0.9.16",
4
4
  "description": "Operations domain contract — the standard vocabulary that producers and readers agree on (EPCIS 2.0/GS1, ISA-95, IEC 61850/ISO 50001). Types, guards, validation. No state, no engine.",
5
5
  "type": "module",
6
6
  "main": "./dist-cjs/index.cjs",