The following is a set of syntax-directed rules to typing a dependently type system with self types. This is hopefully decidable given decidable conversion checking.
The main innovation is that all introduction rules propagate the self
due to the new type of checking rule. This allows the fixpoint to be transparent to introductions, when combined with pairs, this leads to mutual recursion and the inductive types.
This doesn't define any universe or restriction to fixpoints, as those are more or less orthogonal to the typing issues here.