98d41298 Changed metafield namespaces to flow as data above the storage layer
Namespaces were half-introduced as a compile-time registry, which made every
future namespace a code event when they are going to arrive as data, with an
app that installs. The registry is gone: an unknown namespace is now the same
non-event as an unknown key. A browse of it is an empty collection, a filter
on it matches nobody, and a write into it is refused as an unknown field by
its full address, so a namespace gaining its first field starts working with
no change above the storage layer. Values travel keyed by field identity,
every admin filter id, column key, CSV column and value lookup derives from
the namespace each field carries, and the member payload nests by whatever
namespaces the backend serializes. The one hard-coded namespace left is at
the query boundaries, where storage that predates namespace storage
implicitly holds the publisher's fields: the definitions codec and scoping,
the values lookup and read grouping, the filter transformer's condition
mapping, and the checkout bindings store. Once a leaves view carries
namespace and key columns, each of those boundaries collapses into a column
condition. A side effect worth naming: a __proto__ key sent as a field name
is now refused loudly as an unknown field instead of being silently dropped,
which matches how every other unrecognised name is treated. 98d41298 Changed metafield namespaces to flow as data above the storage layer
Namespaces were half-introduced as a compile-time registry, which made every
future namespace a code event when they are going to arrive as data, with an
app that installs. The registry is gone: an unknown namespace is now the same
non-event as an unknown key. A browse of it is an empty collection, a filter
on it matches nobody, and a write into it is refused as an unknown field by
its full address, so a namespace gaining its first field starts working with
no change above the storage layer. Values travel keyed by field identity,
every admin filter id, column key, CSV column and value lookup derives from
the namespace each field carries, and the member payload nests by whatever
namespaces the backend serializes. The one hard-coded namespace left is at
the query boundaries, where storage that predates namespace storage
implicitly holds the publisher's fields: the definitions codec and scoping,
the values lookup and read grouping, the filter transformer's condition
mapping, and the checkout bindings store. Once a leaves view carries
namespace and key columns, each of those boundaries collapses into a column
condition. A side effect worth naming: a __proto__ key sent as a field name
is now refused loudly as an unknown field instead of being silently dropped,
which matches how every other unrecognised name is treated. 0c3035ec Changed metafield namespaces to flow as data above the storage layer
Namespaces were half-introduced as a compile-time registry, which made every
future namespace a code event when they are going to arrive as data, with an
app that installs. The registry is gone: an unknown namespace is now the same
non-event as an unknown key. A browse of it is an empty collection, a filter
on it matches nobody, and a write into it is refused as an unknown field by
its full address, so a namespace gaining its first field starts working with
no change above the storage layer. Values travel keyed by field identity,
every admin filter id, column key, CSV column and value lookup derives from
the namespace each field carries, and the member payload nests by whatever
namespaces the backend serializes. The one hard-coded namespace left is at
the query boundaries, where storage that predates namespace storage
implicitly holds the publisher's fields: the definitions codec and scoping,
the values lookup and read grouping, the filter transformer's condition
mapping, and the checkout bindings store. Once a leaves view carries
namespace and key columns, each of those boundaries collapses into a column
condition. A side effect worth naming: a __proto__ key sent as a field name
is now refused loudly as an unknown field instead of being silently dropped,
which matches how every other unrecognised name is treated. bb964fd2 Changed metafield namespaces to flow as data above the storage layer
Namespaces were half-introduced as a compile-time registry, which made every
future namespace a code event when they are going to arrive as data, with an
app that installs. The registry is gone: an unknown namespace is now the same
non-event as an unknown key. A browse of it is an empty collection, a filter
on it matches nobody, and a write into it is refused as an unknown field by
its full address, so a namespace gaining its first field starts working with
no change above the storage layer. Values travel keyed by field identity,
every admin filter id, column key, CSV column and value lookup derives from
the namespace each field carries, and the member payload nests by whatever
namespaces the backend serializes. The one hard-coded namespace left is at
the query boundaries, where storage that predates namespace storage
implicitly holds the publisher's fields: the definitions codec and scoping,
the values lookup and read grouping, the filter transformer's condition
mapping, and the checkout bindings store. Once a leaves view carries
namespace and key columns, each of those boundaries collapses into a column
condition. A side effect worth naming: a __proto__ key sent as a field name
is now refused loudly as an unknown field instead of being silently dropped,
which matches how every other unrecognised name is treated.