Repository navigation
v1.7.7
Fact filtering works. v1.7.6 shipped it doing nothing at all.
Fixed
The facts parameter reaches the query (#246). It was dropped in four places between the browser and the PQL. Unknown query parameters are ignored, so the request succeeded and returned the unfiltered estate — the filter appeared to work, and filtered nothing. If you tried "which nodes are Ubuntu 22.04" on v1.7.6 and got your whole estate back, this is why.
The value field offers the values it is sent. /fact-paths already returned a list of observed values per fact; the input only ever read the fact name. Knowing the fact is called os.name does not tell you whether this estate spells it Ubuntu or ubuntu — and a misspelt value renders identically to an empty estate. High-cardinality facts like networking.ip stay free text, deliberately.
The dev PuppetDB stand-in no longer hides this class of bug. Its query evaluator ended in default: return true, so any operator it did not implement matched every row — and fact filters compile to a subquery it had never implemented. Staging reported 48 of 48 nodes matching os.name = Nonsense, which reads as a broken feature and was a broken test fixture. An unknown operator is now a 400, the way real PuppetDB rejects one. Affects local development and CI only.
Verified
Checked on staging before tagging, with negative controls:
os.name is Ubuntu 10
os.name is Nonsense (MUST be 0) 0
nosuchfact is reported (MUST be 0) 0
Ubuntu AND major 24.04 10
Ubuntu AND major 9 (MUST be 0) 0
malformed facts JSON http 400
Upgrading
No migrations. No configuration changes.
Full changelog: v1.7.6...v1.7.7