FFF....F.F.                                                              [100%]
=================================== FAILURES ===================================
_________________________ test_llama3_is_still_unwired _________________________
upstream fixed defect ① → drop the corresponding override: vllm_ascend/utils.py now registers 'Llama3RotaryEmbedding' -> the fork is wired itself, so the llama3 override in rope_fix_plugin is dead code.
______________ test_triton_mrope_call_still_misses_is_neox_style _______________
upstream fixed defect ② → drop the corresponding override: forward_triton now passes is_neox_style (9 positional, keywords=[]) -> drop the mirrored forward_triton override.
__________________ test_yarn_truncate_default_is_still_false ___________________
upstream fixed defect ③ → drop the corresponding override: the fork's `truncate` default is now True (it must still be False for this override to be needed) -> drop the YaRN override.
______ test_worker_module_still_binds_the_registration_function_directly _______

    def test_worker_module_still_binds_the_registration_function_directly() -> None:
        """The wrapper rebinding list is not hypothetical.
    
        ``vllm_ascend/worker/worker.py`` does ``from vllm_ascend.utils import
        register_ascend_customop`` and calls it at ``NPUWorker.__init__`` time, so a
        carrier that only patched the ``vllm_ascend.utils`` attribute would miss the
        live call site entirely.  If upstream ever switches to
        ``vllm_ascend.utils.register_ascend_customop(...)``, the rebinding rationale
        (and HOST_CONTRACT.md's anchor note) has to be re-audited.
        """
>       tree = _parse(WORKER_PY)
               ^^^^^^^^^^^^^^^^^

tests/test_rope_fix_drift.py:470: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_rope_fix_drift.py:150: in _parse
    return ast.parse(Path(path).read_text(encoding="utf-8"))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/miniconda3/envs/hust/lib/python3.12/pathlib.py:1027: in read_text
    with self.open(mode='r', encoding=encoding, errors=errors) as f:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = PosixPath('/tmp/ropefix-drift-sim/vllm_ascend/worker/worker.py')
mode = 'r', buffering = -1, encoding = 'utf-8', errors = None, newline = None

    def open(self, mode='r', buffering=-1, encoding=None,
             errors=None, newline=None):
        """
        Open the file pointed to by this path and return a file object, as
        the built-in open() function does.
        """
        if "b" not in mode:
            encoding = io.text_encoding(encoding)
>       return io.open(self, mode, buffering, encoding, errors, newline)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/tmp/ropefix-drift-sim/vllm_ascend/worker/worker.py'

/opt/miniconda3/envs/hust/lib/python3.12/pathlib.py:1013: FileNotFoundError
_______ test_mirrored_forward_triton_is_the_host_body_plus_one_argument ________
upstream fixed defect ② → drop the corresponding override: the mirrored forward_triton no longer equals the host body plus the injected `self.is_neox_style` (the host call site now passes it).
host  : def forward_triton(self, positions: torch.Tensor, query: torch.Tensor, key: torch.Tensor | None=None, offsets: torch.Tensor | None=None):
    assert positions.ndim == 2
    assert key is not None
    self._match_cos_sin_cache_dtype(query)
    self.cos = None
    self.sin = None
    if self.cos is None and self.sin is None:
        cos_sin = self.cos_sin_cache[positions]
        cos, sin = cos_sin.chunk(2, dim=-1)
        self.cos = cos.contiguous()
        self.sin = sin.contiguous()
    query_shape = query.shape
    key_shape = key.shape
    assert self.mrope_section
    if query_shape[0] > self._ASCEND_TRITON_GRID_LIMIT and os.environ.get('TRITON_ALL_BLOCKS_PARALLEL') != '1':
        os.environ['TRITON_ALL_BLOCKS_PARALLEL'] = '1'
    q, k = triton_mrope(query, key, self.cos, self.sin, self.mrope_section, self.head_size, self.rotary_dim, self.mrope_interleaved, self.is_neox_style)
    return (q.reshape(query_shape), k.reshape(key_shape))
mirror: def forward_triton(self, positions: torch.Tensor, query: torch.Tensor, key: torch.Tensor | None=None, offsets: torch.Tensor | None=None):
    assert positions.ndim == 2
    assert key is not None
    self._match_cos_sin_cache_dtype(query)
    self.cos = None
    self.sin = None
    if self.cos is None and self.sin is None:
        cos_sin = self.cos_sin_cache[positions]
        cos, sin = cos_sin.chunk(2, dim=-1)
        self.cos = cos.contiguous()
        self.sin = sin.contiguous()
    query_shape = query.shape
    key_shape = key.shape
    assert self.mrope_section
    if query_shape[0] > self._ASCEND_TRITON_GRID_LIMIT and os.environ.get('TRITON_ALL_BLOCKS_PARALLEL') != '1':
        os.environ['TRITON_ALL_BLOCKS_PARALLEL'] = '1'
    q, k = triton_mrope(query, key, self.cos, self.sin, self.mrope_section, self.head_size, self.rotary_dim, self.mrope_interleaved, self.is_neox_style)
    return (q.reshape(query_shape), k.reshape(key_shape))
=========================== short test summary info ============================
FAILED tests/test_rope_fix_drift.py::test_llama3_is_still_unwired - Failed: u...
FAILED tests/test_rope_fix_drift.py::test_triton_mrope_call_still_misses_is_neox_style
FAILED tests/test_rope_fix_drift.py::test_yarn_truncate_default_is_still_false
FAILED tests/test_rope_fix_drift.py::test_worker_module_still_binds_the_registration_function_directly
FAILED tests/test_rope_fix_drift.py::test_mirrored_forward_triton_is_the_host_body_plus_one_argument
5 failed, 6 passed in 21.99s
