{
  "record": {
    "schema": "flowrs.registry.record/1",
    "package": {
      "name": "driver-bme280",
      "version": "0.1.0",
      "kind": "driver"
    },
    "hash": "sha256:c1b78ca02323a420486534c0ef7d612900c49fed0fc31696fb1e4534d2d2e896",
    "manifest": {
      "schema": "flowrs.package/1",
      "name": "driver-bme280",
      "version": "0.1.0",
      "kind": "driver",
      "licence": "Apache-2.0",
      "description": "Bosch BME280 humidity, pressure and temperature sensor over I2C: the BMP280 map flowRS ships, with the BME280's chip id, humidity control and reading, and config register.",
      "provides": [
        "BME280"
      ],
      "data": "bme280.json",
      "tests": [
        "the_map_is_valid_and_names_the_part",
        "every_bmp280_register_is_where_the_bmp280_has_it",
        "the_humidity_registers_are_the_bme280s",
        "a_virtual_bme280_reads_back_through_the_interpreter",
        "the_generated_driver_is_rust_with_a_humidity_reader"
      ],
      "needs": {
        "network": [],
        "filesystem": []
      },
      "ports": [
        {
          "of": "BME280",
          "port": "id",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "reset",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "ctrl_hum.osrs_h",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "status.measuring",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "status.im_update",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "ctrl_meas.osrs_t",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "ctrl_meas.osrs_p",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "ctrl_meas.mode",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "config.t_sb",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "config.filter",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "config.spi3w_en",
          "output": false,
          "unit": "none"
        },
        {
          "of": "BME280",
          "port": "temp",
          "output": true,
          "unit": "flowrs:LSB"
        },
        {
          "of": "BME280",
          "port": "press",
          "output": true,
          "unit": "flowrs:LSB"
        },
        {
          "of": "BME280",
          "port": "hum",
          "output": true,
          "unit": "flowrs:LSB"
        }
      ]
    },
    "conditions": [
      {
        "id": "compiles",
        "status": "passed",
        "how": [
          "observed"
        ],
        "detail": "it builds offline, confined, against flowRS's crates and lock (2 test binaries)"
      },
      {
        "id": "tests",
        "status": "passed",
        "how": [
          "observed"
        ],
        "detail": "5 passed, each binary confined (5 named in the manifest, all passed); 0 ignored; doc tests are not run"
      },
      {
        "id": "no_runtime_install",
        "status": "passed",
        "how": [
          "observed",
          "static"
        ],
        "detail": "no program started and nothing written outside its directories, built and run confined; every crate is one flowRS's lock pins; no process or library loading in its Rust (215 other denials, reads and lookups, recorded)"
      },
      {
        "id": "no_undeclared_network",
        "status": "passed",
        "how": [
          "observed",
          "static"
        ],
        "detail": "no socket and no name lookup, built and run with the network denied; no socket API or network crate in its Rust"
      },
      {
        "id": "units",
        "status": "passed",
        "how": [
          "observed",
          "static"
        ],
        "detail": "14 ports read from its code, each declared, each as the manifest says"
      }
    ],
    "toolchain": {
      "rustc": "rustc 1.99.1 (58cf8f9c3 2026-10-13)",
      "cargo": "cargo 1.99.1 (5f94df478 2026-08-27)",
      "host": "aarch64-apple-darwin",
      "sandbox": "seatbelt",
      "observation": "kernel reports read back (canary seen)"
    },
    "flowrs_commit": "448d1c56275905b7322e0eb9853a61ca0214ac67",
    "verified_at": "2026-10-31T13:55:16Z",
    "verifier": "flowrs-registry 0.1.0"
  },
  "signature": {
    "v": 2,
    "key": "dc5d537054e6ca29b068f7a4375d0e8140af371410bd357235a146ef44d94ed33b6dfbe9c7a7ac772ec9d9ddaae7ca7b8028c9e163e39bfef3192748d9dd4e9ec4e6a705462ab98fbf030e294f78eadadd10122b0bd93a146be65c19751d4ec6eabf441d7e841630c495b2d57f41283232c45b3b4bb774c41be1bce61d551264603a500f3f387950685e4576dc280247b88fcf4dec7ee268e4d487b127d0bf79fd7a9d337e51d2c29d981f3f1b89afffbabff3f20077a90af83de9b4e0c75793d7d988857556d556e7c137c3917468f1d3a09a2066145d371ddf0ac2c37372974741d4e442e02a3c5e4c5e41f7222a54b3b3727610118f93b3d5ffc2bd2d2f7f91c8335ec0f840bfc4de7a43575f3b2db7eecb6f9585a37fb5908493d024d74e63b2dc945ea2f18ce3c542cacc0d64abeea6cb301ca8b22dc8d3cc3b7ee1b0999b62d6e8221d2c6b7f527a16ddaf9a8fb8fd2d94d90f6f4e6738015d9fd0e9fd47ff80c3aea251b570ebd0f16cb917fa39d6adca0e5359ccae44a4f4668314c263d85c336bb01d981e87ba267655232b095ba02bfc402257a5a1832f2a55f18aa5e94a75add7c7b77ce763773d3f57e326e45a7aa5de1bd6e3ee0b2f87a565494732a5c9bc15f442358a44f5093f32b7e4ab176afde3af7eff0af88cf4ee1870616252e75c639b54e7f4ccda08c7139488356b71fedae03c6c30a767311a1a7170ee04423d3476c85102287cedfaa5935a3d69737903a479f3051b254e3e90b97802497ec4ce32a3798df2436a1ac684b41c661f395251a286ea179c6011b98fc6cf34fe2408a2968478e30bb06e62ac6477cd32d5d9d560f65c5ae9d0ff66721629f8c00f06ebd229b68ea17dfbedbc3f05cf6211e26c163eabd213127808fbef5ac91d7f7cf0da00a96a40af412860080c7c558ae1e820bd55b6be4dd2e2337bdd783a081863b89185e1d9c09595ad43b7a6aba9f37546ca8bcce7eb674e0077732839c9af8337c01f48b6b75faa9f3390052b3f8246b33140f88401adbaeaaf82f50c75cd6393c83f4e742888d6952dddca0114e114758c124dfb77121fd348bc83588155ff82ba1a5dea3cc9aeaee08c5d853b7ac6b6066efe849f731ceb5594027bf8d8dc7984924d901cee0e1dc3b097f7d4616c689f9b082bb8d88a13846afdd96206a09b6f208fb85d830d429da755e404a8d48d2d5df94ecfa19c1f7ac92b9f8e2d1fe515932571f96acb264209acc35ed3ae5ab790fbc9dcb2e30a7dfdd61c944e5e6930a0344b38697887dc68eed1574750003138fc181519a56598f53bb216e264d7a9ea990d87194798e62153189e7bb5c015bb4d0dca87d453a50b5cfe93e8929366d2f743c40074bbb88f9b62ce65676685db60a21ac41761b08e1d9a9604a10ac7e38cc90c7dd610c69d9751d77fb13b0eb91df5ecb145b48b85c039fecf576d65bb3c29ca5273e0d5bacf0c7ef1eb61a94cda9a1a2002ef69e62578069533d287d2efb01ded3e44961ae9ea096f90ecc95930c25a3db3e3a8a116b23e33126c932bd6f3e427d559d64272e03f94c1e3aeceed574aa4c2c5745ebe5ac61db1bc7b4ab199ec55fee156be6ae5ba44296074237f355e4df01d13a8a212fa731c6510d0c43a5fc338a3392272550a10a328cdb1409e9133bd0d79801bc6aa99e361930bee2946d2f7f705eb1be381fbdd6a0923cfc1778607577473344a3b85b67be5e31f5c2271abdccd74e7b149dece024919f358f6adbe46b76e74d8dc8a0ece0a0d278b1de87f67f0a7e6cf54f3cfd54c0a6a5b2143fd900d90c9be7626617ecabb8439c34ad2a4853a6593d51c48e11a31b442d18dab3b4bfec198115c0e1db747f1de7b708d0e95f3db3e8c2eb3baa23ad6d0312ee315a7c0de1bd852b1cb68d02334b8e3187ffe5cb5b6cd4b01a43329899db572f61d6e5dfe22c3862403bb5c836ecdee4206206ff549e1587f788a38c3af0a36db60e70bce08b7318470a0fc58efccf1e13a362b010a29df4c5ebbc8bbfeb26b35ab8aee6b46a223b9784467b9f5f864818e1d5d466d059a0cf7a3c41f5ac308d25a66c4c7611fcec595253a8159f0d0a2d34c7aaa1d6b27162046a95185b68121b81a618750f8ba84f401f217aeb664a66f6357bfc7b1702b6fd34ffe1a32010584c3a84468de88a92c93ab5bd840ba52cc8ea4e9a68ded4acfc624031ec2443287877886db6efc64af01f7bf80782f8c5b3dda3b4cb5c3425028d7ef7f8f4177d437a61787ad6b325cd79ddcc3bfd9e1092ef118524e6c7c745b28ba8407ced9055d48c7275e1caadb88ea67bfdbe66563603de244bd3740b82153df340cc70c6ca947d6da9eb126e627666370e266aab079582e633fbad606c1535e4a15a25acb5efd4ae0cfeb03eeeb01a52d1ac3a5486cde1a151f7950fd5b68df976e843ceaa4d1e7c1644fa82984ec7d8405c6950674c3c3eeeb8a28aba272a244b26a11e07935a1ae362b1b3ddf900006fccc7b798b1ee73c8d4ae2245fad870924c4ff82ca92befb3aa6c960a19983c77f9d563d6fd529600f19897359ff641cd8db26cf065375094b0508c822809dd888cb3de0248177825e042f759505459036177c9c2e38f81806fdd183579f135019492e1e05b64a28fee0a7f48903aa9bf4d3a5bc73f0b15db50e2ead4b03e09c84d5687a17b5f5dd59e84934a5793994d73f74ae58fdb78030888cf8bad5c6f22942b241d8ee50be649668b15571968c796afcb5f749787bced05678144b2185aee171244291d7caf3d6a3c89b82f0ba02166938",
    "key_id": "v2:fa1a50ef56073d416f25e62fa6c5e7ef069f20766a1ef48ea0ec91d241df89cf",
    "ed25519": "192ec1d1d5b83594558bfc8a7a8e0a6a9cc28cc6488da902cea5edbbae5388c1974a2acc042f42bcae9c7c9a23c149515b17fec49c35bd9d7471a955b8381706",
    "ml_dsa_65": "74fc2168125c70ae94661ee8ef232f911b1bd8bf900ffeb1048bad1988cc6b8c35a1fbf67229f464eae9f6680aadc40fb79eab59f2874f66f8f2273be250af5f45269110b452c4b3f7043073e49c2b8644cb0261107524055f7ac607299a3ad9e0f4d5800cb7a20846e87b7e2ef12a5806d9379847b3a9533de6796cb9b3dc9ab52cfb6640c3565b74665ed4060f3320dc1abf747fb9a2a5c51d085a96fd7b03b2f3665659a911912d7910d268461d806ceecc004fbe89379b2ff730e3f7b858da5e3aec5a874521600b4c3090bd567cd188aff1513b2e302cd728acd305ae705ae2b020273bc62f1f637c2ed56db2c75a49e63e6fe4c5ebb43a61fd0b52ff180c96de91ceddd455e4143fe4428db85867977dabaf55940b90df330851234e68defeb155fb477d1e55976d22c7931b45d0b98e418440b69c8e1b003697d832c08d7d469a80ed40baf601849ca17330ed74be6a77eb9e03a9711538620b096a743cf10295dafafbcf91d81b8be5f8aea18d9dea267fd14e25ed69c469b896ec5c5c115c657c8b8ec670dbc06576ef2f2acbe50135bd73e7a694d8a01fd6aee57e95ff83352ede9af4c4479226b1608dad4cd3fa1d24f75f185f779481c430473f0aa975dd51ccf9005aa4865194977069bc822ed4d108093105b9a5ea515508acc829c08f4c956c2912b30864ae026c9e5b41f21d5b278268ce0d82048975bb6a2b388d291eff1f30c6bfa065bf3f635f662a0ef8a1a62011cf27a6d48f714916fa3467a2f46ab265611a0b6fd96c5326e8c7b1a7a01179d72163a9c1f55ce6c76be24e6f9d2859cc668163a9703d059760f6ecd76136b95dfba8080d6330583a20009872dcec7d91633d14f2882d518fa17fe2baf53e53662b1798869a76d676e8f496fc511b98299c2e827331a6f388bf3c0cd118b24f8b30c11939a8bc5cb5066af91b729930829b9325dd8e71f32eef3b06ee3286beb07cd66751b02a6ec0c4ccc1df066a26e02721a5ab82b328b11992f21d5657b62517dd99890a6bec4aa38351a1a354fc4749203eb34ff3ef1e44470bdc677980f1d139486ab1986c5848933630cba8a85179aec7efe033dbbef1adcdd81ac0474490b75adc15bcd6698e26b2d37485fbd43f86b489145727ba76cef4d4914b55e38732f12728f68a7604190e1834966241ff2d9eef33dd68fd838e77c630cdfac850f9bedc880fa341f0068622e2c2a3f117cc284c21b091fbd2c70bdbf3510413c804413e68c9d283de4d5195407626e4a920fe937d3e12f705931c4a7676af1fcb05251d5740397c0904742b4afe2af55b330e1fc19407a8c9f924dd337827b5f4ddca77b0bca0803644170703efe8933e87daf88981adb2b3b769dcf362a5a58190566c700de484b22dcc849855a14f1d7a35e873b22dfa013cdc34d58aece854cca160b958326a13289dc872dacf9e014a64bd313c47bffddc886a6eb3824d8b2f411cd5240de0b58a9b1789adf953a1111283f2887ed6cca9363d493f9566c43ce8456a6525e791de6527229fbda10f2629f39d67122a098cee1d7eea31053e39743fe0f66341b254e18e285c9d8a4dd29272e1a7302ff08c795b1da8d1803d43eb2bb6079efd65a7c7f94f91d04cfed0a6dc2b277810d8e0a4758b62c22f4f6605e637829105c935d2920248f8d2b0821a3155ce4b46e245746007081a648c28f971e291b9fde4cad0e7690dcf83e53cf825cd9aac153c5b75d90958dd680a0ef081dce03d43058a4644af652389fbb3acd46d093389863f7aba43892fb8d56471c4a8031b0546e2b285b6bf007f25622d9a811b3f8107132f948c4ba8366bb4147947a0d324c2747ff4e2c8307dee88877c2853e67cd9f8f8dd77a84b35e46ad89eec8ed2d2cac75f4d7fc9e42cf06ac6fbee74d6df921486224b4cb2665b3edae7c65a87a7297b2c77f2259bcb6fef87df02bd712fe361e6081079ed2cb3cbf4363ffbf6bdcf27723cce9ac3bcaca7f7a353a4eb09eda5de89e88322d75552d46c4a81078a6d3bd053e405880b3bcf0da53cf3ba71548d6909bd78f072cf6f2dac3e51ba2ec3ef62b83fb89f5992143a466445949a13bd8d0608544c3fb6a03103e1352576ae8d506c9d1c7cfebeb34e5a79c6c5f1ff8e027672fc68da9c215d145b05b9d2a2f075b122888c2d82c45ee94fd378dc72fd2d3d49503d481c7f0d9b3a9f2c626bbb2125cd52e0a777dd2a99b8c513bbe1e768325ac423ba2ffe3e6caf87b3c877a0c9373950c0fdb826607778c25b1f4c0abc38b8e28c82336a2590e7a2db1395c902bd06f32942c1bf394758b611ffb03ad5e06e13abff0aaf44a48ce2416ca7560b09fdb88e9d06154fad20c1c7d6c52f51ad90dc5303f330be836faab7b729575bebe25274d2f43d7cf3b9d1e6d9f8a4db848d76af8b60c1509ca62bf9b249a90fdd97da9b3d98c3085be003471e04af7f06e40acb9866d9bd2316e630c6057de99f7e745d3a89f55625e01dd1ff253da7b4b7b26d1baa3af25a71b0204e0421ea2c86be8bec024d98939c5ae214e66904785df6ab6d6e0f38fd048849a2a8f90072b37667ce15e06dc77521fc4cf914eaab4e0b3bfe789099e5419a0c5b2993b38a7607422fa0336623cdfcc05b45ebcb420d7b8da5aef9d5950b790a468717b36cbb6d86fdee621d5acd19aa81f7ac763368bac0a1d0fee41a2b73a3ba6f230bf0fd228e11368c580dc6db802dd2b8832c9998ddd4e39122a8ac57436c6bc4c644a8bec848e9ed614203a7088231ed31169d895045d3245ade0ae96f25dac1667e6c1fecc5036b36e1675c451a9ba8d52c4727b4da02744a8027613646935b1ebbba94b4b231587de949b0c9d48fb561b56d52c7456e228aa6c19370989436f71b327f78a22b122f06cac6d5df51306ba8d48c3afb1ce9d695a7b358739659693c9894c2e567cc046fa272af4e74984cecfa5fb782a4fb0b0b12bde975df8dc021b957ec38263a6ad5a64e59c87f1b8341cf3c03851e9d18a5625e1688d3af47721be4dfa176f6d08ff898eac476c3fd44bbfecaa0d167dfa4ce6fc2df910b9c62333b824bd396c4e52aa38d8e52856abfa6fc0e7a661f97cf6acd3170006e78493a78677685953207876ed66a1e2ecb4d8eef398baaf399a32e7b453f30eec1f8f609a58e661388847b5ca372aca3627fc7b4b440f33ab4d99537c59178f150383ee71f901698615e2a35f4b2bf44a0cd6dc8f2832b8a5916671042004c6c1d84912f2cf6104f99eddb4d8ed4965fcb1db7cf08ac2fcaf613a649ae022fe054ae44bdbb6f6b26e62bb323d264916f4f6065392065b220f1fa2f536b15644bcdeb508b8aaa1b7f6aa5a2765df2d4c5b9829b4184620ab3ff29429eca0717586ad3740d766c83cc1226876a0d101ea7a74fe4774cb57f944283b0f8abb3c6b1d62c10179a62368da5b3a3f1459c29838481ac13bb384e9a0d64eabf7f3d80fdf03ae722b0e4731d441a9d7fd90c8022e9bcf7172e592e1624434ddd9a66250df429c06ca56b3295d9257d6c5f87ef7a0ab0d28d957267f0c40ccc65793aea7b0d84f9376145b4a8355726912a4fa3dde4efc08b96e5a7f2d7956f6ea4ecba97a11a468b421a331f9b91d4700a5360f083e483336f67c746033d88a0fdee1ede186f74de10a49fa14b9cc3d7cb4a232ef948819a614aa760add35fa5c70d8254dfff24259343138a080a7b60c314df56fc1077003a8f3b3aee8e4710f85698994ca633c8944799a105a2914435ac2697ede53759e4866419df00666568d329bd14d86e0728dc4e906ae362cd409de0c4a434ca168d15709ca74380d5151905bd76a98e39742561cfa8f658fccae627019cf7b3f38aee308fafb52bb6ac5729e77fe9a8fe8bf88efd6bdb692111b4a7fb77558c0695e28254bd6beda5e00d8fa78d726460240b6ef361f440f1d207bc6a7c1e2b392bdb22a778ac1c5654508ea2c365495d9ce91ed45795512a7e287a5003380bd3e2985d478f138e586fe37d3763d918e40d608c8b85d58016b417f132d3697c58cf0350c3b2586667e21803cfa32f813c1642bf4634734aa83fce254e2d9b356033aef2e5b5c771e27ef40f81092175c836c28e1489a39dab235819301ac98ba17bbef31eb2224e5900e806b93732c23b5113752c3de680fbfa44467f028e6883748529ea439d82fc2f19cb1f26903685f516eed7f2e68f579c5bfba7305bc3f443c2982d88c14bcb50f02a348d5891336b24f9800828668d13f9494a3bb3da8e9e8c81d58249494ae9f6a5acbc7363095282cafb38b59c1bd22cd9a6ba32ed621023b8208fe58513f3f4a78b160a9948e615ae33251eb37e21a38a0fd77bb55a63d2e85ed747c4e97076bf5ae7eef855f374f3040fb0f1183f4212393a5008d04f646130851db360bbcd3e6d1ccc0be1228ff5fb636670ebc6b296192ce49173dd62d417270d1b1d22c8f10700f4de82bd17a84bdabd700b96179b98e105907212b293cce3c30e0c10419a942bda9a9ad07ceccdf70085e793bfe9d9002be7c0f23fba84b3c5bc43d04dd2a1d1e7cd45712eb27fcf25063a5b5615244f528997adb816717b84d3d8fa27314c5dd8e5040c779fc7043693b2c1e1e3f2f40920282967797d8facc8dcf10000000000000000080f151a232f"
  }
}
