TITAN-GAP-<NN> so it can be cited, tracked, and closed.
How this differs from Divergences
A divergence has two answers competing. A gap has none.
How to use it
- Do not fill the gap. Say it is unspecified and cite the ID.
- Where a page’s guidance is a proposal rather than a decision, it says so and links here.
- Closing an entry means recording a decision, not deleting the row — entries stay with a resolution note so the reasoning survives.
Deferred by decision
TITAN-GAP-01
Color scheme and density are out of scope for now.
Until this closes, every value in this documentation is the light color scheme at
comfortable density, and no page states intent for any other mode.
Definitions and vocabulary
TITAN-GAP-02
112 of 244 tokens have nothing recorded about what they are for.
The coverage is inverted from what you would expect: the component-scoped tokens are
well documented, while the foundations everything is built on are not.
Step 1 — move the recovered definitions into code
44 definitions currently reach the documentation only through this transcription. Design recorded them; implementation never carried them across. While that stays true, the definitions depend on a snapshot of a spreadsheet rather than on the package.Step 2 — define what neither source defines
The remaining 112 have no definition in code and none in the specification. Four token families are entirely undefined and are the place to start, because they are what everything else is built from:
Writing these is a design decision each time, not a transcription — which is why this step is
second and larger than the first.
TITAN-GAP-03
The vocabulary is specified but was never surfaced.TITAN-GAP-04
Seven groups of distinct tokens resolve to one value, with no stated distinction.TITAN-GAP-05
Where two tokens both apply, nothing says which to pick.Accessibility
TITAN-GAP-06
The measured contrast failures are untriaged.TITAN-GAP-07
No token expresses dark text on a bold status fill.TITAN-GAP-08
Reduced motion is unimplemented in the token layer.TITAN-GAP-09
Focus Not Obscured is unaddressed.TITAN-GAP-10
No forced-colors guidance exists.TITAN-GAP-11
Contrast is not enforced in Titan’s own CI.Structure and layout
TITAN-GAP-12
No layout tokens exist at all.TITAN-GAP-13
Surfaces have no layering order.TITAN-GAP-14
The stacking ladder does not cover every layer.TITAN-GAP-15
The page-region model exists in code and was undocumented.TITAN-GAP-23
The frame measures its own layout from the DOM at runtime.TITAN-GAP-24
The region layer largely bypasses the spacing scale.TITAN-GAP-25
The footer’s leading slot is a convention, not a named slot.The convention itself is right. Left is where you came from, and that reading is worth
preserving. The gap is that the frame expresses it by arrangement rather than by name, so the
meaning lives in a story instead of in the API.
TITAN-GAP-26
No step indicator exists for multi-step flows.TITAN-GAP-27
Pagination has no home in the page frame, and three unreconciled implementations.Local reimplementation is the signal worth acting on. Neither app built a
PaginationBar
because it wanted a bespoke one. Both built one because nothing in the system covered the case,
and the second team could not discover that the first had already solved it.TITAN-GAP-29
Vertical tabs are a navigation rail with no region and no archetype.TITAN-GAP-30
A tab can show an error in design and cannot in code.The design library also carries two unreconciled notes on tabs, written by whoever built it:
hover and pressed states were added for consistency with other components and flagged for review
on the code side, and 2px of padding was removed and flagged for parity. Neither is recorded
anywhere in code, and both disappear when the library is rebuilt. They are listed here so the
questions survive the file.
TITAN-GAP-31
The most-used loading primitive carries no design decisions at all.Adoption is the argument here, not novelty. This is not a missing component; it is a shipped
one that 13 applications depend on and that the system has never made a decision about. The
duplicated loading files are the measurable cost, and they are the same signal as the two
independently built pagination bars in TITAN-GAP-27.
Per-foundation
TITAN-GAP-16
No design intent is recorded for any motion value.TITAN-GAP-17
Iconography has no meaning registry and no proposal process.TITAN-GAP-18
Typography has unresolved redundancy and no responsive scale.Contribution process
TITAN-GAP-19
Tokens have no lifecycle metadata and no deprecation path.The cost of this gap grows. Every token added without a lifecycle field is another one
that can only be removed abruptly. Adding the field costs roughly the same today as it will
next year; not having it costs more each time the token count rises.