Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
데이터 기반 캐릭터 빌더·레벨 시뮬레이터·연금술 계산기·여행 계획 도구
The definitive data-driven character builder, 5x multiplier level simulator, alchemy calculator, and travel planner for The Elder Scrolls III: Morrowind, Tamriel Rebuilt, and ARCE.
기타Python · TypeScriptGitHub @lowgraph온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기ETL and analytical data pipeline for extraction, normalization, provenance, validation, and versioned datasets.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A reproducible ETL and analytical data pipeline that extracts, normalizes, validates, and packages structured game datasets from OpenMW and Morrowind for Silt Strider Tools.
This repository is the data-engineering and analytical modeling engine behind Silt Strider Tools.
It ingests heterogeneous, 20-year-old binary game and plugin files (.esm, .esp) from Morrowind, OpenMW, Tamriel Rebuilt, Project Tamriel, and related community mods, transforming them into a normalized, profile-specific SQLite foundation.
The pipeline goes far beyond raw decompilation:README 전문 보기 ↗Independent technical project · AI-assisted development
openmw-decompiler is the ETL and analytical data-processing project behind
Silt Strider Tools. It extracts game and mod records,
normalizes them into SQLite, applies validation and authored policies, and packages
structured catalogs with explicit provenance for the web application.
Despite the repository name, its role is game-data extraction and transformation, not decompilation of the OpenMW engine or reconstruction of its source code.
lowgraph/siltstrider.toolsGame records are spread across binary plugins, ordered overrides and runtime metadata. The pipeline turns those inputs into consistent, profile-specific records that the application can query without reading game files or extraction databases.
Inputs include Morrowind, Tribunal and Bloodmoon .esm files, official and mod
.esm / .esp plugins, configured load orders, authored JSON policies, and
OpenMW Lua runtime dumps. The configured mod profiles include Tamriel Rebuilt,
Project Tamriel and ARCE. Local paths and approved plugins are defined in
export_config.json and
foundation_config.json.
The workflow:
vanilla, tr, tr_arce).Outputs include normalized SQLite databases for local analysis, typed JSON catalogs, acquisition evidence, policy-based equipment recommendations, and a versioned application bundle. Only the bundle is consumed by the site.
TES3 chunk-based streams) and OpenMW runtime state into clean, relational, normalized SQLite schemas.unknown status rather than falsely asserting negative evidence.tr_arce delta over tr), ensuring downstream consumers receive deterministic inputs.INTV to its contents' condition) that pass syntactic validation.flowchart TD
subgraph Ingestion["1. Ingestion & Foundation"]
A[Game and Plugin Files<br/>.esm / .esp] --> B[extract_foundation.py]
B --> C[(Normalized SQLite<br/>Foundation)]
end
subgraph Modeling["2. World Modeling & Domain Catalogs"]
C --> D[Typed Catalogs<br/>build_catalogs.py]
C --> E[World Model<br/>build_world_catalog.py]
E --> F[Acquisition Evidence<br/>build_acquisition_index.py]
E --> G[Services, Places & Travel<br/>build_services_catalog.py]
E --> H[Journals & Quests<br/>build_journal_catalog.py]
end
subgraph Verification["3. Engine Rules & Policy Evaluation"]
I[OpenMW Lua Effect Dump<br/>dump_profiles.py] --> J[Rules Derivation<br/>build_rules_library.py]
F & G & H & J --> K[Analytical Policies<br/>early-game / late-game.json]
K --> L[Derived Recommendations<br/>build_gear_rows.py]
end
subgraph Packaging["4. Release Contract & Publication"]
D & G & H & J & L --> M[App Bundle Builder<br/>build_app_bundle.py]
M --> N[Versioned App Bundle<br/>Manifest + SHA-256 + Deltas]
N --> O[Silt Strider Tools<br/>lowgraph/siltstrider.tools]
end
The data pipeline and web application repositories communicate through exactly one interface: the versioned, content-addressed application bundle. The web browser reads published JSON catalogs and never connects to raw SQLite extraction databases.
The foundation preserves original record bytes, plugin hashes, source-plugin
references and load-order precedence. Derived outputs carry an extraction
snapshotId and profile; policy-based results and engine rules also record their
policy or runtime-dump basis. These identifiers support tracing a result back to
its inputs without confusing authored recommendations with extracted observations.
Raw extracted observations and authored analytical policies live in separate layers:
| Layer | Examples | Responsibility |
|---|---|---|
| Evidence | Item value, coordinates, container ownership, hostile spawns, lock levels | Extracted facts and physical relationships |
| Policy | Max price ceiling (e.g. 500g), theft allowance, acceptable danger ratings | Authored criteria for recommendation scenarios |
| Derived Result | Early-game equipment eligibility, best-in-slot ranking | Calculated projections under a specific policy |
Altering a recommendation rule requires changing an isolated JSON policy file—never altering or faking the underlying game observations.
Failure to find evidence is not converted into evidence of absence. Bounded or truncated searches return an explicit unknown state rather than an unjustified negative conclusion.
Known failure conditions stop publication immediately rather than remaining warnings that developers must remember to check manually.
Catalogs and bundles carry their extraction snapshot and schema versions. Builders reject mismatched snapshots, while manifests record file hashes and sizes for downstream integrity checks. Extraction snapshots derive from plugin fingerprints, profile definitions and extraction settings. Rebuilding unchanged inputs reproduces the data, but timestamped outputs can have different file hashes; this is not a promise of byte-identical rebuilds.
The full rebuild workflow executes in dependency order across the following major stages:
extract_foundation.pyvanilla, tr, and tr_arce.build_catalogs.pybuild_world_catalog.pybuild_journal_catalog.py · build_quest_catalog.py · build_script_evidence.pybuild_acquisition_index.py · query_item_sources.pybuild_services_catalog.py · build_merchant_catalog.py · build_places_catalog.py · build_faction_catalog.py · build_travel_catalog.py · build_intervention_catalog.py · build_access_catalog.py · build_teleport_catalog.py · build_ingredient_sources.pydump_profiles.py · build_rules_library.pydump_profiles.py launches OpenMW with a Lua dumper to record runtime metadata. The rules library joins engine observations with content usage, categorizing behaviors as confirmed, corrected, or unresolved rather than substituting unverified defaults.build_gear_rows.py · build_best_in_slot_catalog.pypolicy/early-game.json, policy/late-game.json) to produce recommendations ranked by effective defense, damage, or enchantment capacity.A central priority of the pipeline is migrating known operational failure modes from human documentation into executable release guards.
Checks across extraction, bundle generation and downstream staging reject:
These checks catch known failure modes before a release is staged; they do not replace review of data semantics or new failure cases. See REBUILD.md for the guards and recovery commands.
A concrete example of why end-to-end data lineage matters occurred with the INTV field on placed world references.
In TES3 binary records, placed references include an optional integer field (INTV):
INTV represents the item's current condition (durability).FLTV.Treating both cases identically caused a severe semantic defect:
Container with INTV = 0
│
▼
Applied erroneously to all items inside container
│
▼
Contained equipment marked as completely broken (Condition = 0)
│
▼
Effective item value recalculated to 0 gold
│
▼
Flawed early-game recommendation (high-end gear recommended as free / cheap)
Policy evaluation now uses condition only from the item's own reference, with automated regression tests covering both loose-item and container references. This illustrates a recurring data-validation problem: syntactically valid data can still produce corrupted downstream domain results without end-to-end invariant validation.
build_app_bundle.py packages pipeline outputs into the versioned contract consumed by Silt Strider Tools:
tr_arce profile inherits base catalogs from tr and ships only record-level deltas, minimizing payload size.See BUNDLE.md for the manifest schema.
The workflow uses Python, SQLite and JSON, with Python's standard-library binary
parsing and hashing utilities. jsonschema validates item schemas; TypeScript
interfaces in contracts/ document catalog shapes. OpenMW and Lua provide runtime
metadata that plugin records do not expose. Node.js and npm are needed for the
site's bundle-staging and consumer-test steps in a full rebuild.
Install Python dependencies:
python -m pip install -r requirements.txt
Run the complete test suite:
# For Windows workflows with restricted temp storage:
$env:TEMP='A:\Cache'; $env:TMP='A:\Cache'; python -B -m unittest discover -s . -p "test_*.py"
The test suite relies heavily on synthetic fixtures, validating binary parsing, override logic, policy enforcement, graph traversal, and bundle packaging in seconds without requiring full game installations.
Coverage spans:
Downstream consumer tests in the web application repository provide an additional independent layer of contract verification.
When upstream game plugins or policies change, the pipeline orchestrates a complete rebuild:
python rebuild.py
The rebuild runner:
Inspect available stages:
python rebuild.py --list
Resume execution from a specific stage after addressing an issue:
python rebuild.py --from rules
Inspect export_config.json and foundation_config.json for local game, engine, cache and profile paths before running a rebuild on another machine. Full extraction requires separately installed game/mod files and OpenMW; synthetic tests do not. See REBUILD.md before executing a full rebuild against real game files.
This is independent project work developed with AI assistance. I define the data workflow, expected outputs, analytical policies, provenance requirements, validation rules, test cases and acceptance criteria. My work includes reviewing generated implementations, debugging and refining transformations, validating outputs, and documenting behavior and release checks.
AI coding tools, including Claude, Codex and Antigravity, assist with implementation
and iteration. Extraction and transformation belong in this repository; interfaces
and application data consumption belong in
lowgraph/siltstrider.tools.
The versioned JSON bundle is their data interface. Agent specialties and handoffs
are documented in the coordination files, rather than enforced as exclusive
editing roles.
See:
openmw-decompiler/
├── docs/
│ ├── AGENT_PATH_MIGRATION.md # Canonical paths and migration history
│ └── stages/ # Detailed documentation for each pipeline stage
│ ├── FOUNDATION.md # Binary extraction and SQLite normalization
│ ├── CATALOGS.md # Typed catalog definitions
│ ├── WORLD_CATALOG.md # Spatial, cell, and reference modeling
│ ├── ACQUISITION_INDEX.md # Item placement and reverse-index queries
│ ├── RULES.md # OpenMW Lua effect dump and rules derivation
│ ├── POLICY.md # Authored analytical recommendation policies
│ ├── ROWS.md # Derived equipment recommendations
│ └── BUNDLE.md # App bundle manifest specification
├── policy/ # Independently versioned analytical policies (JSON)
├── schemas/ # SQLite relational schemas for extraction stages
├── contracts/ # Shared TypeScript catalog type definitions
├── extract_foundation.py # Binary record extraction entry point
├── build_catalogs.py # Typed catalog generator
├── build_world_catalog.py # World and spatial relationship builder
├── build_acquisition_index.py # Item acquisition index builder
├── build_services_catalog.py # Actor services and transport relationships
├── dump_profiles.py # OpenMW Lua runtime effect dumper
├── build_rules_library.py # Engine mechanics derivation library
├── build_gear_rows.py # Analytical gear recommendation builder
├── build_app_bundle.py # Browser application bundle packager
├── rebuild.py # Orchestrated rebuild runner
├── AGENTS.md # Agent guardrails and operational rules
├── COORDINATION.md # Cross-repo contract and ownership protocol
├── REBUILD.md # Operational guidelines for pipeline execution
└── HANDOFF.md # Context and state transfer guide
The web application consuming this pipeline's published output:
lowgraph/siltstrider.toolsCopyright (C) 2026 lowgraph.
This pipeline is free software: you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation, either
version 3 of the License, or (at your option) any later version (GPL-3.0-or-later),
like OpenMW itself. See LICENSE.
Not covered by that licence:
items/examples/, excerpts of Morrowind's data kept to
document the output format.