You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bundle: config_binding names a field that the fields table does not list, for 73 percent of its rows #890
config_binding carries the field a configuration key binds to. fields is documented as
holding "all client fields and enum constants from the IR, plus every LIBRARY field some
field_access edge reaches". A library field that no field_access reaches is therefore
absent, and config_binding references it anyway, so the join loses the row silently.
Measured on 8 Spring Boot services solved with one shared starter as --library:
config_binding field ids
count
present in fields
42
absent, a LIBRARY field
104
absent, in neither IR
8
total
154
So 112 of 154, 73 percent, do not resolve. A consumer joining config_binding to fields to answer "which field does this key bind to" gets an answer for roughly a quarter
of the rows and no indication that the rest were dropped.
The 8 in neither IR are a separate, smaller question: those ids are in no all-fields.csv
on either side, so they are not explained by the library rule at all.
Why this shape rather than another
The library half is arguably working as documented: fields is deliberately not the whole
library, and a @Value field on a library type that nothing reads has no edge to justify
listing it. But config_binding is precisely the relation that says the field matters, and
it is exported. Two consistent options:
have a config_binding row count as a reason to list the field, the same way a field_access edge does. That is one clause and makes the join total.
or state on config_binding that its field column is not a foreign key into fields,
and give the key's binding site some other resolvable identity.
The first seems better: the whole point of the relation is that something binds to that
field, so the bundle already knows it is interesting.
Leaving this OPEN deliberately. Its fix, #902, is on hold at the repository owner's
direction, so closing the issue would retire the record of a measured defect while the
defect is still present on main.
Re-confirmed at a411ecd7: config_binding still names field ids that fields does not
list, so a consumer joining the two silently loses those rows.
Activity
swapnilpaliwal-sd commentedon Sep 18, 2026
Leaving this OPEN deliberately. Its fix, #902, is on hold at the repository owner's
direction, so closing the issue would retire the record of a measured defect while the
defect is still present on main.
Re-confirmed at
a411ecd7:config_bindingstill names field ids thatfieldsdoes notlist, so a consumer joining the two silently loses those rows.
When #902 is taken off hold, this closes with it.
bundle: a config_binding row is a reason to list the field (#890) (#945)
bundle: a config_binding row is a reason to list the field (#890)
bundle: a relation that names a field makes that field listed (#890)