diff --git a/mercurial/pure/parsers.py b/mercurial/pure/parsers.py
index 252d2f3f0d173a1c86f2da351b021d382c7a6647_bWVyY3VyaWFsL3B1cmUvcGFyc2Vycy5weQ==..898de425bcd67571dcb983df3811b9140f974081_bWVyY3VyaWFsL3B1cmUvcGFyc2Vycy5weQ== 100644
--- a/mercurial/pure/parsers.py
+++ b/mercurial/pure/parsers.py
@@ -156,7 +156,7 @@
             if size == FROM_P2:
                 return cls(wc_tracked=True, p2_info=True)
             elif size == NONNORMAL:
-                return cls.new_possibly_dirty()
+                return cls(wc_tracked=True, p1_tracked=True)
             elif mtime == AMBIGUOUS_TIME:
                 instance = cls.new_normal(mode, size, 42)
                 instance._mtime = None
diff --git a/rust/hg-core/src/dirstate/entry.rs b/rust/hg-core/src/dirstate/entry.rs
index 252d2f3f0d173a1c86f2da351b021d382c7a6647_cnVzdC9oZy1jb3JlL3NyYy9kaXJzdGF0ZS9lbnRyeS5ycw==..898de425bcd67571dcb983df3811b9140f974081_cnVzdC9oZy1jb3JlL3NyYy9kaXJzdGF0ZS9lbnRyeS5ycw== 100644
--- a/rust/hg-core/src/dirstate/entry.rs
+++ b/rust/hg-core/src/dirstate/entry.rs
@@ -75,7 +75,11 @@
                         mtime: None,
                     }
                 } else if size == SIZE_NON_NORMAL {
-                    Self::new_possibly_dirty()
+                    Self {
+                        flags: Flags::WDIR_TRACKED | Flags::P1_TRACKED,
+                        mode_size: None,
+                        mtime: None,
+                    }
                 } else if mtime == MTIME_UNSET {
                     Self {
                         flags: Flags::WDIR_TRACKED | Flags::P1_TRACKED,