{"number":45,"title":"flow: say when a pipeline may be newer than this flow (#43)","body":"Closes #43 (Metal Gear's feedback, 2026-10-11).\n\nA local flow built before the `report` output refused metalgear's pipeline as 'not valid … unknown output `report`', reading as an error in the pipeline. Now, when the problems name something unknown:\n\n    .flow/pipeline.kdl uses something this flow (0.1.0 (main-…)) does not know:\n    line 92: unknown output `report`; …\n    If the pipeline was written for a newer OxygenFlow, update flow (build it from oxygenflow main); otherwise fix the lines named.\n\nOther problems read as before. The issue's further ideas (a pipeline syntax version, per-job parsing) are not in this change.\n\nTest: `a_pipeline_newer_than_flow_is_named_as_such`. Gate green (55 tests, clippy, fmt). Bookmark is main's heads plus this change.","author":"andymccall","state":"landed","target":"main","source":{"kind":"bookmark","bookmark":"newer-pipeline"},"changes":[{"hash":"3b9dddc92057914023d77830272fd4f996331cfa20899c2977845b926275ada4","message":"flow: say when a pipeline may be newer than this flow\n\nA pipeline naming a node, output or event this flow does not know was\nrefused as 'not valid', reading as an error in the pipeline when a\nnewer one was simply ahead of an older flow. flow check and flow run now\nsay it uses something this flow (with its version) does not know, and\nthat a pipeline written for a newer OxygenFlow needs a newer flow.\n\ncloses #43","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"8bc05e0a32a86508708a7dffa1fdccee1f6601e8c8395275244a6c48a9684c8c","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1791764419720,"deps":["a72abeeedd783f8ba2aa1c93ba62956fb7d7225bed612628419c2497e63188f4","e0918b887850318bed4bbbc69e984e037b20bdff738ad75435012e75be400c40"],"head":false,"signature":{"status":"valid","key":"8bc05e0a32a86508708a7dffa1fdccee1f6601e8c8395275244a6c48a9684c8c","sealed":false,"revoked":false}}],"projected_heads":["1a1793bdfcc0947a2087336052330ea31bb43d0bb4f2b8efd6254bb2bc80de96","22007df200f30dd8e9c66979c132785fda99bbe3223cdaa8caec651d9bd54617","39dba8493cb076474a26e0ef752764053bde97678b581074594ca64f825c6185","3b9dddc92057914023d77830272fd4f996331cfa20899c2977845b926275ada4","59078d2b8d46ac771ab994acfee19435d59761da77c9738138e8f996d3299370","602ac9c8ed1ddee7f98e75b3fc3972df0c85625e8ac3d6dba5405f4e49657a63","630ee66034b2a27711318b21906453680d01c5fa58e43beb5e98560a30a0948a","6d53fb7d00eca0eeaf62fe6094a88849c03bd2e57846f9e747224566cf5b1001","701dcbc5d4688324d95fadf4968fdfad31d119e5bb516213e2485492b28f02cf","8f211e20bea5e995d04f82b9aab8961aea9b729aafe87a2894cadba90cd0c722","ab3204b9974bba7d93682a006d2d88fc713dd77052440e87687c16a344ae264c","acf7f363f19ec1f8bce05b82f6f447d758392ad36886b9a2f4c6498b21390c43","f2609cf795d80aae88e715e237d4ac48404454b2060e27bbb96dcdad5fbc97a6","f3b4fdeb2bc21583e58191fb9ea2314236f472de8d70333cbe2f8e45ee167b43","fad6152112b1a233d612513185a904d116fc9e83b25bfc96c418090f50a55eda"],"projected_state":"dcdb70bfa22947aa06abfcf6845a5a24bc0eb99fadd19fcbd6c8e66f5531d32e","conflicted":false,"approvals":[],"landable":false,"blockers":[],"created_ms":1791764423144,"updated_ms":1791788559149,"url":"https://oxygenhub.io/andymccall/oxygenflow/proposal/45","repository_url":"https://oxygenhub.io/andymccall/oxygenflow","source_url":null,"landed":{"by":"andymccall","via":"web","when_ms":1791788559149},"auto_land":null,"requested_reviewers":[],"labels":[{"name":"bug","colour":"#c62d47","description":"Something does not work"},{"name":"gap","colour":"#8592ad","description":"Found by using the platform for real"}]}