iconDreamine
← 목록

Dreamine.Gem300

stablev1.0.0

Carrier·Substrate·Job·Object·Event 워크플로를 무결성 안전하게 제공하는 GEM300 도메인 런타임.

#dreamine#gem300#gem#runtime#equipment
TFM net8.0Package Dreamine.Gem300참조 Dreamine.Gem300.Abstractions, Dreamine.Gem.Abstractions, Dreamine.Gem
설치 dotnet add package Dreamine.Gem300 --version 1.0.0

Dreamine.Gem300

Dreamine.Gem300은 현대 .NET 애플리케이션을 위한 hardened 프로세스 내 GEM300 도메인 경계를 구현합니다.

➡️ English Version

증거 상태

기능 상태 증거
E39/E40/E87/E90/E94 메모리 내 도메인 경계 PASS 모델·Manager·Workflow·무결성·동시성·취소·회귀 집중 테스트
E39.1/E40.1/E87.1/E90.1/E94.1 표준 wire binding BLOCKED_STANDARD 필요한 mapping 원문을 로컬에서 확보하지 못함
E116/E116.1, E42 및 E139 주장 BLOCKED_STANDARD 필요한 규범 원문을 확보하지 못함
외부 상호운용 및 현장 증거 NOT_RUN 독립 counterpart 또는 생산 장비 증거를 실행하지 않음
영속 저장, 재시작 복구 및 프로세스 간 소유권 INTENTIONALLY_EXCLUDED 이 제품화 Gate는 프로세스 내 메모리 범위로 명시함

PASS는 구현한 로컬 base Revision 도메인 경계에만 적용됩니다. 현재판 적합성, 인증, 표준 wire 지원 또는 벤더 상호운용을 의미하지 않습니다.

구현한 도메인 경계

  • E39 방식 객체 Identity, 형식화된 RO/RW 속성, 취소 가능한 Action 및 애플리케이션 선언 Manager Projection
  • Projection Key 예약, Source-of-truth 읽기, raw mutation/removal 차단 및 typed application action routing
  • 원자적 Carrier/Substrate 수락·반출을 포함한 E87 Load Port와 Carrier 상태
  • E90 Substrate 위치 점유, 체류 이력, 처리 상태 및 참조 Lease
  • 보존 Process Program Identity와 Material Lease를 포함한 E40 Process Job 생명주기
  • 중앙 Process Job 소유권과 공유 Execution Claim을 포함한 E94 직렬 Control Job Queue
  • 애플리케이션이 명시하는 Carrier Slot↔Substrate 연결(순서나 위치 문자열을 Slot Index로 추론하지 않음)
  • 안정적 Snapshot과 공유 Graph Identity 검증(호환되지 않는 built-in Manager Graph는 fail-fast)
  • Journal Identity와 Drop/Retention Health 및 공유 비투척 Publisher를 제공하는 제한 용량 프로세스 내 Event Journal
  • 실패 정리에서 전진 가능한 상태 전이만 사용하는 Experimental Carrier→Process→반출 Coordinator(Stopped/Aborted Process Job을 성공 Substrate 또는 Control Job 완료로 승격하지 않음)

안전한 조립

구체 Dreamine.Gem.GemRuntime을 사용할 때는 두 계층이 같은 Process Program Store를 사용하도록 해당 Runtime에서 GEM300을 생성합니다.

var gem300 = Gem300Runtime.CreateFromGemRuntime(gemRuntime);
gemRuntime.ProcessPrograms.Put(new GemProcessProgram("RECIPE-1", [0x01]));

gem300.Carriers.RegisterLoadPort("PORT-1");
gem300.Carriers.SetInService("PORT-1");
gem300.Workflow.AcceptCarrier(new CarrierArrivalPlan(
    "PORT-1",
    "CARRIER-1",
    [CarrierSlotState.CorrectlyOccupied],
    [new SubstrateArrivalPlan("SUBSTRATE-1", "SOURCE-1", "DESTINATION-1")],
    [new CarrierSubstrateSlotAssignment(0, "SUBSTRATE-1")]));

호환 조립을 위해 기존 Gem300Runtime(IGemRuntime, IGemProcessProgramService, ...) Constructor를 유지했습니다. 호출자는 GEM 계층이 사용하는 것과 동일한 논리 Process Program Service를 전달해야 합니다. QuickStart는 한 Service Instance를 명시적으로 공유하며, 생산용 구체 Runtime에서는 CreateFromGemRuntime을 권장합니다.

명시적 Slot 연결과 Object Projection Key는 애플리케이션 통합 메타데이터입니다. 발명한 .1 wire mapping이 아닙니다.

문서

라이선스

MIT.

구조 다이어그램

flowchart LR
    Runtime["Dreamine.Gem300"] --> Contracts["Dreamine.Gem300.Abstractions"]
    Runtime --> GemContracts["Dreamine.Gem.Abstractions"]
    Runtime --> Modules["Object / Carrier / Substrate / Jobs"]
    Modules --> Events["Bounded Domain Event Journal"]

API 문서

타입

CarrierManager

\if KO E87-0312의 포트별 상태와 Carrier 병렬 상태를 원자적으로 관리합니다. \endif \if EN Atomically manages E87-0312 per-port and orthogonal carrier states. \endif

ControlJobManager

\if KO E94-0314의 직렬 Control Job Queue와 상태 전이를 관리합니다. \endif \if EN Manages the E94-0314 serial control-job queue and state transitions. \endif

Gem300AssemblyMarker

\if KO Dreamine GEM300 구현 어셈블리를 검색하거나 등록할 때 사용하는 표식입니다. \endif \if EN Marks the assembly boundary used to discover or register Dreamine GEM300 implementations. \endif

Gem300EventJournal

\if KO 주입 시간과 제한 용량을 사용하는 스레드 안전 프로세스 내 이벤트 저널입니다. \endif \if EN Provides a thread-safe, process-local event journal with injected time and bounded capacity. \endif

Gem300EventPublisher

\if KO 도메인 변경 이후 저널 장애를 호출자에게 다시 던지지 않고 상태로 관찰 가능하게 만드는 게시기입니다. \endif \if EN Publishes post-mutation events without rethrowing journal failures and exposes their health. \endif

Gem300ObjectService

\if KO E39 ObjType·ObjID와 공개 RO/RW 속성을 관리하는 스레드 안전 저장소입니다. Wire 서비스는 구현하지 않습니다. \endif \if EN Provides a thread-safe E39 ObjType/ObjID and public RO/RW attribute store without wire services. \endif

Gem300Runtime

\if KO E39/E40/E87/E90/E94 기반 독립 모듈을 조립하는 GEM300 런타임입니다. \endif \if EN Composes independent E39/E40/E87/E90/E94-based GEM300 modules. \endif

Gem300WorkflowCoordinator

\if KO 검증된 모듈 경계를 조합하는 Experimental Carrier→Job→반출 조정자입니다. 표준 wire 서비스를 구현하지 않습니다. \endif \if EN Provides an experimental carrier-to-job-to-removal coordinator over verified module boundaries; it does not implement standard wire services. \endif

ProcessJobManager

\if KO E40-0312 Process Job leaf 상태와 Recipe·Material 존재 조건을 관리합니다. \endif \if EN Manages E40-0312 process-job leaf states and recipe/material existence conditions. \endif

SubstrateTracker

\if KO E90-0312의 기판 병렬 상태, 위치 점유 및 체류 이력을 원자적으로 관리합니다. \endif \if EN Atomically manages E90-0312 substrate orthogonal states, occupancy, and residence history. \endif

CarrierManager

#ctor Method

\if KO 이벤트 저널로 Carrier 관리자를 만듭니다. \endif \if EN Creates the carrier manager with an event journal. \endif

AcceptId Method
AcceptSlotMap Method
BeginAccess Method
BeginLoad Method
BeginUnload Method
Bind Method
CancelReservation Method
ChangeAccessMode Method
CompleteAccess Method
CompleteLoad Method
CompleteUnload Method
GetCarrier Method
GetCarriers Method

\if KO Carrier 스냅샷을 ID 순서로 반환합니다. \endif \if EN Returns carrier snapshots in stable ID order. \endif

GetLoadPort Method
GetLoadPorts Method

\if KO Load Port 스냅샷을 ID 순서로 반환합니다. \endif \if EN Returns load-port snapshots in stable ID order. \endif

PrepareUnload Method
RegisterLoadPort Method
RejectId Method
RejectSlotMap Method
Reserve Method
SetInService Method
SetOutOfService Method
StopAccess Method
WaitForIdDecision Method
WaitForSlotMapDecision Method
EventHealth Property

\if KO 이 관리자가 사용하는 비차단 이벤트 게시기 상태입니다. \endif \if EN Gets the non-throwing event-publisher health used by this manager. \endif

ControlJobManager

#ctor Method

\if KO Process Job과 이벤트 경계로 관리자를 만듭니다. \endif \if EN Creates the manager with process-job and event boundaries. \endif

Abort Method
Advance Method
Complete Method
Create Method
Delete Method
Get Method
GetSnapshot Method

\if KO Control Job 스냅샷을 ID 순서로 반환합니다. \endif \if EN Returns control-job snapshots in stable ID order. \endif

Pause Method
Ready Method
Resume Method
Select Method
Start Method
EventHealth Property

\if KO 이 관리자가 사용하는 비차단 이벤트 게시기 상태입니다. \endif \if EN Gets the non-throwing event-publisher health used by this manager. \endif

Gem300EventJournal

#ctor Method

\if KO 시간 공급자와 양의 용량으로 저널을 만듭니다. \endif \if EN Creates a journal with a time provider and positive capacity. \endif

GetHealth Method

\if KO 저널의 용량, 보존 구간 및 드롭 누계를 조회합니다. \endif \if EN Gets journal capacity, retained range, and cumulative drop metadata. \endif

GetSnapshot Method
GetSnapshot Method

\if KO 지정 순서 이후의 이벤트를 안정적인 순서로 제한 조회합니다. \endif \if EN Queries a bounded, stably ordered event snapshot after a sequence. \endif

Record Method
Record Method

\if KO 객체 유형과 ID를 각각 보존하여 객체 이벤트를 기록합니다. \endif \if EN Records an object event while preserving object type and ID separately. \endif

Gem300EventPublisher

#ctor Method

\if KO 기존 저널과 선택적 시간 공급자로 게시기를 만듭니다. \endif \if EN Creates a publisher over an existing journal and optional time provider. \endif

GetHealth Method

\if KO 누적 기록 실패 상태를 안정적으로 조회합니다. \endif \if EN Gets a stable snapshot of cumulative recording failures. \endif

TryRecord Method

\if KO 문자열 Aggregate 이벤트를 비차단 방식으로 기록합니다. \endif \if EN Records a string-aggregate event without propagating journal failures. \endif

TryRecord Method

\if KO 객체 유형과 ID를 모두 보존하여 이벤트를 비차단 방식으로 기록합니다. \endif \if EN Records an object event without propagating failures while preserving both type and ID. \endif

Gem300ObjectService

#ctor Method

\if KO 이벤트 저널로 객체 서비스를 만듭니다. \endif \if EN Creates the object service with an event journal. \endif

#ctor Method

\if KO 이벤트 저널, 시간 공급자 및 객체별 동작 용량으로 객체 서비스를 만듭니다. \endif \if EN Creates the object service with an event journal, time provider, and per-object action capacity. \endif

ExecuteActionAsync Method
GetAttributes Method
GetObjectKeys Method

\if KO 등록 객체 키를 유형과 ID 순서로 반환합니다. \endif \if EN Returns registered object keys ordered by type and ID. \endif

Register Method
RegisterAction Method
RegisterProjection Method

\if KO 애플리케이션이 명시한 객체 키를 manager 원본 상태 projection으로 예약합니다. 표준 객체 유형 이름을 추정하지 않습니다. \endif \if EN Reserves an application-declared object key as a projection over manager source-of-truth state without inferring standard object-type names. \endif

Remove Method
TryGetAttribute Method
TrySetAttribute Method
UnregisterAction Method

\if KO 객체 동작을 명시적으로 제거합니다. 실행 중인 호출은 캡처한 처리기를 계속 사용합니다. \endif \if EN Explicitly removes an object action; an in-flight invocation continues with its captured handler. \endif

UnregisterProjection Method

\if KO projection 예약을 명시적으로 해제합니다. detach 이후 취소 callback과 이벤트를 모든 객체 lock 밖에서 실행합니다. \endif \if EN Explicitly releases a projection reservation; cancellation callbacks and events run outside all object locks after detach. \endif

EventHealth Property

\if KO 이 서비스가 사용하는 비차단 이벤트 게시기 상태입니다. \endif \if EN Gets the non-throwing event-publisher health used by this service. \endif

Gem300Runtime

#ctor Method

\if KO 기반 GEM 런타임, 공정 프로그램 경계, 시간 및 이벤트 용량으로 런타임을 만듭니다. \endif \if EN Creates a runtime with a GEM runtime, process-program boundary, time, and event capacity. \endif

CreateFromGemRuntime Method

\if KO 구체 GEM 런타임이 소유한 동일 Process Program 저장소를 사용하여 GEM300 런타임을 만듭니다. \endif \if EN Creates a GEM300 runtime using the same process-program store owned by a concrete GEM runtime. \endif

Carriers Property

\if KO Carrier 관리자입니다. \endif \if EN Gets the carrier manager. \endif

ControlJobs Property

\if KO Control Job 관리자입니다. \endif \if EN Gets the control-job manager. \endif

EventHealth Property

\if KO 공유 이벤트 게시기의 현재 실패 상태입니다. \endif \if EN Gets the current shared event-publisher failure health. \endif

EventPublisher Property

\if KO 모든 기본 모듈이 공유하는 비차단 이벤트 게시기입니다. \endif \if EN Gets the non-throwing event publisher shared by all built-in modules. \endif

Events Property

\if KO 제한 용량 도메인 이벤트 저널입니다. \endif \if EN Gets the bounded domain-event journal. \endif

GemRuntime Property
Objects Property

\if KO 객체 서비스 저장소입니다. \endif \if EN Gets the object service store. \endif

ProcessJobs Property

\if KO Process Job 관리자입니다. \endif \if EN Gets the process-job manager. \endif

Substrates Property

\if KO Substrate 추적기입니다. \endif \if EN Gets the substrate tracker. \endif

Workflow Property

\if KO Experimental 통합 조정자입니다. \endif \if EN Gets the experimental workflow coordinator. \endif

Gem300WorkflowCoordinator

#ctor Method

\if KO 독립 모듈들로 조정자를 만듭니다. \endif \if EN Creates the coordinator from independent modules. \endif

AcceptCarrier Method

\if KO 명시적 애플리케이션 Slot 연결을 검증한 뒤 Carrier와 기판을 하나의 built-in 트랜잭션으로 수락합니다. \endif \if EN Validates explicit application slot associations and accepts the carrier and substrates in one built-in transaction. \endif

ExecuteControlJobAsync Method

\if KO Control Job의 Process Job을 단일 실행 claim 아래 순서대로 실행합니다. 실패 정리는 현재 상태에서 전진 가능한 전이만 적용합니다. \endif \if EN Executes a control job's process jobs under a single execution claim and performs only forward-valid cleanup transitions. \endif

GetCoordinatedCarrierIds Method

\if KO 현재 조정 중인 Carrier ID를 안정적인 순서로 반환합니다. \endif \if EN Returns currently coordinated carrier IDs in stable order. \endif

GetCoordinatedSlotAssignments Method

\if KO Carrier 계획에 애플리케이션이 명시한 Slot↔Substrate 연결의 안정적인 스냅샷을 반환합니다. \endif \if EN Returns a stable snapshot of application-declared slot/substrate associations for a coordinated carrier. \endif

ReleaseCarrier Method

\if KO 모든 연계 기판이 목적지에서 최종 처리 상태인지 확인하고 built-in 트랜잭션으로 객체와 Carrier를 반출합니다. \endif \if EN Verifies terminal destination state and removes substrates and carrier in one built-in transaction. \endif

ProcessJobManager

#ctor Method

\if KO 기판, 공정 프로그램 및 이벤트 경계로 관리자를 만듭니다. \endif \if EN Creates the manager with substrate, process-program, and event boundaries. \endif

Abort Method
Allocate Method
Complete Method
CompleteSetup Method
ConfirmAborted Method
ConfirmPaused Method
ConfirmStopped Method
Create Method
Delete Method
Get Method
GetSnapshot Method

\if KO Process Job 스냅샷을 ID 순서로 반환합니다. \endif \if EN Returns process-job snapshots in stable ID order. \endif

Pause Method
Resume Method
Start Method
Stop Method
EventHealth Property

\if KO 이 관리자가 사용하는 비차단 이벤트 게시기 상태입니다. \endif \if EN Gets the non-throwing event-publisher health used by this manager. \endif

SubstrateTracker

#ctor Method

\if KO 이벤트 저널과 시간 공급자로 추적기를 만듭니다. \endif \if EN Creates the tracker with an event journal and time provider. \endif

BeginProcessing Method
CompleteProcessing Method
ConfirmId Method
Get Method
GetLeaseOwners Method

\if KO 기판의 현재 lease 소유자를 안정적인 순서로 반환합니다. \endif \if EN Returns current substrate-lease owners in stable order. \endif

GetLocationState Method
GetSnapshot Method

\if KO 기판 스냅샷을 ID 순서로 반환합니다. \endif \if EN Returns substrate snapshots in stable ID order. \endif

MarkLost Method
Move Method
Register Method
RejectId Method
Remove Method
TryGet Method
EventHealth Property

\if KO 이 관리자가 사용하는 비차단 이벤트 게시기 상태입니다. \endif \if EN Gets the non-throwing event-publisher health used by this manager. \endif