)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3fdce19bd65e774a69d75e27b21e1049ac722619","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6edaf24e_ddd93f9f","updated":"2025-12-09 12:50:15.000000000","message":"Thanks Sean, I agree with most of your points here, and answered some comments inline. The idea is to adapt the proposal based on these feedbacks to reach a better solution.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"18474073_394bc580","updated":"2025-12-08 21:27:10.000000000","message":"i dont think this approch work as presented.\n\nto me this is not a new stragy unles the exction of it resutl in an action plan.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"283c9559_67938f7e","updated":"2025-12-15 19:41:37.000000000","message":"Thank you Joan and Alfredo for all comments and considerations. After these discussions I see that a generic pipeline that would work for multiple strategies is almost impossible, we would need to define very specific combinations and build the Audit Pipeline Handler smart enough to operate the CDM. There is still the problem with Host Metrics and Updated CDM, which are conflicting at this point. Since metrics would not represent the CDM in use. \nAll of this make me believe that build 2 new strategies (zone_migration + workload_stabilization and node_consolidation + workload_stabilization) and reuse existing methods in a shared class seems more feasible other than all of this here. We can discuss more in the channel or in the weekly meeting. Thanks!","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d60ec3c328b41e4113923199cea0cd38eb8a96c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"88a57334_b9196be5","updated":"2025-12-16 12:57:12.000000000","message":"Thanks for the inputs from all. The scope and complexity is increasing as we discuss different aspects of this feature. I will propose an update to include all concerns raise here.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7af6a264_b9ae96f5","updated":"2025-12-22 18:58:20.000000000","message":"Note for reviewers: I think that we could make a PoC in this cycle, and finish the implementation in 2026.2, that would allow to better understand how it is going to behave.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"4d3800a974931ac1c0a3c7cbf7e0e20bcebafe38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"4d95d986_bf520c5b","updated":"2026-01-09 17:30:38.000000000","message":"I think this is becoming a good state to start producing an initial PoC. I only have some doubt about the path to follow wih relationship between AuditPipelines and AuditTriggers and if we need a new API element if we want to support other than 1:1 relationship.","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"84da6a20_87a4d08f","updated":"2026-01-13 07:51:08.000000000","message":"looks good overall!","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"386d09523a1ad0faa4af63528cb74043d7c77abd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5deb8c9a_82891ced","updated":"2026-02-25 19:58:05.000000000","message":"i need to make time to sitdown and read this end to end which i wont have time to do tonight but just resove a couple fo the bot comemns and pused som old ones","commit_id":"70a06027f951986cd0a6aed4424380227190822c"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"063a8141addbd74b508a1a72cfe78dc0502c450b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8c59bd4f_687acd05","updated":"2026-02-24 13:20:13.000000000","message":"recheck\n\nto get docs outputs again","commit_id":"70a06027f951986cd0a6aed4424380227190822c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8aea9eef5fed07c1f9dab55a11e3eed138406fdd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2ae172d5_900c0a8c","updated":"2026-03-27 17:10:25.000000000","message":"+0 as i really only skimmed this i have not really had time to read the proposl yet but ill see if i can make some in the next week or so.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d93224824909361db1e16976c704d95a90637325","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"04f7756d_6469c847","updated":"2026-03-27 12:14:45.000000000","message":"I think it\u0027s good go to. Just a minor doubt about the accepted PATCH calls for the Audit Pipeline. Other than that, I think this is good to start working on.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e61fd77e_78edc489","updated":"2026-04-29 14:27:07.000000000","message":"In the API section, it may be good to specify from which states an Auditi Pipeline can be deleted, although it\u0027s mentioned that it will have same states as Audits, so it can be understood from comparison. That\u0027s the reason for my +1 instead of +2. I can promote if we agree that this is fine as-is.\n\nOther than, LGTM","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e3c4c43c_9aa96efe","updated":"2026-04-29 19:17:31.000000000","message":"Thanks, I will address the comments in a new PS soon","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"7ce70c6b72edff52749649a3e0ca40cc4f036e3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"35e9f442_15332495","updated":"2026-05-06 15:59:06.000000000","message":"I think this is good to go, great work Doug! I\u0027m not +W yet to give @smooney@redhat.com a chance to review, but I think we can aim to merge the spec this week/early next week","commit_id":"2d72a76273a35c664345eca0e866886ca17954f2"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"62a0992d7c0960f2788e717f506db0d76896b18d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"24a61e9d_c9e1a991","updated":"2026-05-06 15:08:38.000000000","message":"Thanks for the work on this spec!","commit_id":"2d72a76273a35c664345eca0e866886ca17954f2"}],"specs/2026.1/approved/audit-pipeline.rst":[{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eb841e7b68cbf01ac620879a6899856dbfecdcc6","unresolved":true,"context_lines":[{"line_number":25,"context_line":"sequence, where each subsequent strategy operates on the expected state of the"},{"line_number":26,"context_line":"cluster after the previous strategy\u0027s actions are applied."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Cloud operators may need to combine optimization strategies to achieve their"},{"line_number":29,"context_line":"operational goals. For example, during maintenance windows, an operator"},{"line_number":30,"context_line":"may need to evacuate hosts and then rebalance workloads, or during off-peak"},{"line_number":31,"context_line":"hours, consolidate nodes and redistribute workloads optimally."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Currently, achieving these combined optimizations requires creating and"},{"line_number":34,"context_line":"executing multiple separate audits, waiting for each action plan to complete"}],"source_content_type":"text/x-rst","patch_set":2,"id":"88de83b7_e8b0c0d6","line":31,"range":{"start_line":28,"start_character":0,"end_line":31,"end_character":62},"updated":"2025-12-09 19:33:18.000000000","message":"I forgot to update this part here, should be more aligned with new use cases text.","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d213aca61b3cd32d1729bc64d199b2c2e5ba791","unresolved":false,"context_lines":[{"line_number":25,"context_line":"sequence, where each subsequent strategy operates on the expected state of the"},{"line_number":26,"context_line":"cluster after the previous strategy\u0027s actions are applied."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Cloud operators may need to combine optimization strategies to achieve their"},{"line_number":29,"context_line":"operational goals. For example, during maintenance windows, an operator"},{"line_number":30,"context_line":"may need to evacuate hosts and then rebalance workloads, or during off-peak"},{"line_number":31,"context_line":"hours, consolidate nodes and redistribute workloads optimally."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Currently, achieving these combined optimizations requires creating and"},{"line_number":34,"context_line":"executing multiple separate audits, waiting for each action plan to complete"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa307ef0_831e7246","line":31,"range":{"start_line":28,"start_character":0,"end_line":31,"end_character":62},"in_reply_to":"88de83b7_e8b0c0d6","updated":"2025-12-17 18:38:07.000000000","message":"Done","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eb841e7b68cbf01ac620879a6899856dbfecdcc6","unresolved":true,"context_lines":[{"line_number":49,"context_line":"This requires coordinating multiple optimization strategies in sequence, where"},{"line_number":50,"context_line":"each strategy needs to operate in an scoped and updated state of the cluster."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a cloud operator, I want to consolidate workloads of specific hosts"},{"line_number":53,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"},{"line_number":54,"context_line":"optimally balanced using workload balancing strategies. This requires"},{"line_number":55,"context_line":"coordinating multiple optimization strategies in sequence, where each strategy"},{"line_number":56,"context_line":"needs to operate in a scoped and updated state of the cluster."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c7ea8e16_146b95d8","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":62},"updated":"2025-12-09 19:33:18.000000000","message":"I may want to create a different ese case, since this one is very similar to the previous one.","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d213aca61b3cd32d1729bc64d199b2c2e5ba791","unresolved":false,"context_lines":[{"line_number":49,"context_line":"This requires coordinating multiple optimization strategies in sequence, where"},{"line_number":50,"context_line":"each strategy needs to operate in an scoped and updated state of the cluster."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a cloud operator, I want to consolidate workloads of specific hosts"},{"line_number":53,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"},{"line_number":54,"context_line":"optimally balanced using workload balancing strategies. This requires"},{"line_number":55,"context_line":"coordinating multiple optimization strategies in sequence, where each strategy"},{"line_number":56,"context_line":"needs to operate in a scoped and updated state of the cluster."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"790e0595_8fccb990","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"9a3dcf06_cccbd6aa","updated":"2025-12-17 18:38:07.000000000","message":"Done","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":49,"context_line":"This requires coordinating multiple optimization strategies in sequence, where"},{"line_number":50,"context_line":"each strategy needs to operate in an scoped and updated state of the cluster."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a cloud operator, I want to consolidate workloads of specific hosts"},{"line_number":53,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"},{"line_number":54,"context_line":"optimally balanced using workload balancing strategies. This requires"},{"line_number":55,"context_line":"coordinating multiple optimization strategies in sequence, where each strategy"},{"line_number":56,"context_line":"needs to operate in a scoped and updated state of the cluster."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a3dcf06_cccbd6aa","line":56,"range":{"start_line":52,"start_character":0,"end_line":56,"end_character":62},"in_reply_to":"c7ea8e16_146b95d8","updated":"2025-12-15 20:51:21.000000000","message":"```suggestion\nAs a cloud operator, I want to save energy by consolidate workloads while\nalso ensuring enough nodes are online to ensure new workloads can still be supported. To archive this first the workload need to be consolidated by the server or vm consolidation goals, then compute nodes can be powered off based on the Saving Energy Strategy\n```\n\n\n```\nAs a operator i would like to run the same strategy on different subset of hosts.\ne.g. define a pipeline audit to run the workload stabilisation strategy on each\ndata-center room/building.\n```","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"eb841e7b68cbf01ac620879a6899856dbfecdcc6","unresolved":true,"context_lines":[{"line_number":96,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":97,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":98,"context_line":"     Templates instead."},{"line_number":99,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":100,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":101,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"},{"line_number":102,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":103,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"c13447f8_48a202d5","line":103,"range":{"start_line":99,"start_character":5,"end_line":103,"end_character":78},"updated":"2025-12-09 19:33:18.000000000","message":"Here we can have or omit the idea of pipeline strategies. Adding them will allow different implementations of pipeline execution. But we could omit it in this spec and let this implementation for future work.","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d60ec3c328b41e4113923199cea0cd38eb8a96c4","unresolved":true,"context_lines":[{"line_number":96,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":97,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":98,"context_line":"     Templates instead."},{"line_number":99,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":100,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":101,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"},{"line_number":102,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":103,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"d1f74ac2_9e7ae3fa","line":103,"range":{"start_line":99,"start_character":5,"end_line":103,"end_character":78},"in_reply_to":"1f7d570a_660302b6","updated":"2025-12-16 12:57:12.000000000","message":"Yeah, both strategy and planner are already referencing to different procedures. Planner in watcher builds action plans from a input solution, so they don\u0027t actually interact with any strategy. Today the class that glues all together are the audit handler. We may need a different name like: pipeline mode or pipeline engine.","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":96,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":97,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":98,"context_line":"     Templates instead."},{"line_number":99,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":100,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":101,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"},{"line_number":102,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":103,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f7d570a_660302b6","line":103,"range":{"start_line":99,"start_character":5,"end_line":103,"end_character":78},"in_reply_to":"b691d8b5_21669ddb","updated":"2025-12-15 20:51:21.000000000","message":"so i think we need to use a different noun\n\ni have been thinking of using the term planner to refer to the configurable thing that compute how to combine the action plans and is the entiry that does the propagation of the action plans and data modeles to each stragey instance.","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":96,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":97,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":98,"context_line":"     Templates instead."},{"line_number":99,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":100,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":101,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"},{"line_number":102,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":103,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"b691d8b5_21669ddb","line":103,"range":{"start_line":99,"start_character":5,"end_line":103,"end_character":78},"in_reply_to":"c13447f8_48a202d5","updated":"2025-12-15 11:47:43.000000000","message":"I think it\u0027s good to mention although in short/mid term i see hard to do something different that \"linear\" strategy. WRT the `strategy` name, I\u0027m not sure if we could use a different term to avoid any confusion with the existing watcher strategies.","commit_id":"9b4573c9231e17544a433f389aec3c844f2933af"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"As a cloud operator, I need to migrate the workload of specific hosts for a"},{"line_number":37,"context_line":"scheduled maintenance. After migration, I want this workload to be optimally"},{"line_number":38,"context_line":"distributed across the functioning nodes, using workload balancing strategies."},{"line_number":39,"context_line":"This requires coordinating multiple optimization strategies in sequence, where"},{"line_number":40,"context_line":"each strategy needs to operate in an scoped and updated state of the cluster."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"As a cloud operator, I want to consolidate workloads of specific hosts"},{"line_number":43,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"}],"source_content_type":"text/x-rst","patch_set":3,"id":"05ab5e03_bfaef646","line":40,"range":{"start_line":36,"start_character":0,"end_line":40,"end_character":77},"updated":"2025-12-15 20:51:21.000000000","message":"```suggestion\nAs a cloud operator, I need to migrate the workload from specific hosts for scheduled maintenance. After migration, I want this workload to be optimally\ndistributed across the functioning nodes, using workload balancing strategies.\nThis requires coordinating multiple optimization strategies in sequence, where\neach strategy needs to operate on a scoped and updated state of the cluster based on future state created by the previous strategy.\n```","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d213aca61b3cd32d1729bc64d199b2c2e5ba791","unresolved":false,"context_lines":[{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"As a cloud operator, I need to migrate the workload of specific hosts for a"},{"line_number":37,"context_line":"scheduled maintenance. After migration, I want this workload to be optimally"},{"line_number":38,"context_line":"distributed across the functioning nodes, using workload balancing strategies."},{"line_number":39,"context_line":"This requires coordinating multiple optimization strategies in sequence, where"},{"line_number":40,"context_line":"each strategy needs to operate in an scoped and updated state of the cluster."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"As a cloud operator, I want to consolidate workloads of specific hosts"},{"line_number":43,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fe9f2d24_23e78301","line":40,"range":{"start_line":36,"start_character":0,"end_line":40,"end_character":77},"in_reply_to":"05ab5e03_bfaef646","updated":"2025-12-17 18:38:07.000000000","message":"Done","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a06f38a147f808dba1653c39adfe9efebfed4e14","unresolved":true,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This spec proposes the introduction of ``Audit Pipeline``, which allows"},{"line_number":53,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":54,"context_line":"This functionality will be implemented based on a new ``Audit Pipeline``"},{"line_number":55,"context_line":"resource with dedicated APIs, and an extension to the existing Audit Template"}],"source_content_type":"text/x-rst","patch_set":3,"id":"411dad5d_f02bf8fe","line":52,"in_reply_to":"338aa1f2_ab1d63f7","updated":"2025-12-18 18:29:27.000000000","message":"so one of my usecase for the linear pipelien\n is to defien 1 workload stablsition audit tempelste per cell\n \n the to defien one piplien that does stablisitoin for each nova cell indepently.\n \n i dont really have a prefernce on if it produced one or many action plans but i was orginlly thinkign of one.\n \n 1 per stage woudl also be fine.\n \n for compiste vs cascade i was not really sure if we neede both or which is better.\n \n cacacde is more work but i think better long term if each sage shoudl depend on the output of the previous one.\n \n \n the way im thinking about composing the stages is kind fo like ansibel execution stragies\n  \n https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_strategies.html\n \n you have the basic linear execution stragey that syconises the same opeatoin across all host beofre moving on to the next operation on any haost\n \n https://docs.ansible.com/projects/ansible/latest/collections/ansible/builtin/linear_strategy.html#linear-strategy\n \n and https://docs.ansible.com/projects/ansible/latest/collections/ansible/builtin/free_strategy.html#free-strategy\n \n which alowe each play to run to compelte on ay give host before movign onto the next play\n \n so i was thinking of a similar apprch\n \n linear woudl jsut execute each audit and protially each action plan one after the other in the very simple case.\n \n then cacade coudl take a differnte more intelegent arprpoch for audits that have depencies.\n \n we could even express decencies between stages instead of just having a list in the future if we had a need for that by extendign action planes with the idea fo depceices simialr to zuul jobs\n \n i.e. where you could appove a set of catrion plan and they would only progress if there depended action plans succeeded.\n \n but to reason and talk about them i needed names to label the concpet so \n \n `linear` and `cascade` were the two idea that i saw the most value in. composite was inpsred by the `free` stragy wehre we would not assum a depency but just caualte the action plan for each indepently and try and consolidate/optimise them after the fact.\nbasiclly applyign the painter algortirm so that the most recent selection operation for that vm is kept.\n\ni was not sure that woudl work but i think the other 2 can work.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This spec proposes the introduction of ``Audit Pipeline``, which allows"},{"line_number":53,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":54,"context_line":"This functionality will be implemented based on a new ``Audit Pipeline``"},{"line_number":55,"context_line":"resource with dedicated APIs, and an extension to the existing Audit Template"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5e92f2c0_0a802472","line":52,"in_reply_to":"411dad5d_f02bf8fe","updated":"2025-12-22 18:58:20.000000000","message":"I think that I should focus on the \u0027cascade\u0027 mode for this spec, which I see as the crucial one for the feature proposal. Other operational modes can be added in the future, or in a update of this spec for 2026.2. I will mention other possible modes, but not going into details on how they should work.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d213aca61b3cd32d1729bc64d199b2c2e5ba791","unresolved":true,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This spec proposes the introduction of ``Audit Pipeline``, which allows"},{"line_number":53,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":54,"context_line":"This functionality will be implemented based on a new ``Audit Pipeline``"},{"line_number":55,"context_line":"resource with dedicated APIs, and an extension to the existing Audit Template"}],"source_content_type":"text/x-rst","patch_set":3,"id":"60ad465d_1736adf3","line":52,"in_reply_to":"561757ea_a534e8e1","updated":"2025-12-17 18:38:07.000000000","message":"Yes, that was the idea around pipeline_strategy, to have different execution modes. Still don\u0027t have a great name that avoids confusion with existing concepts. I propose a very similar approach that can be discussed the proposed changes sections.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"386d09523a1ad0faa4af63528cb74043d7c77abd","unresolved":true,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This spec proposes the introduction of ``Audit Pipeline``, which allows"},{"line_number":53,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":54,"context_line":"This functionality will be implemented based on a new ``Audit Pipeline``"},{"line_number":55,"context_line":"resource with dedicated APIs, and an extension to the existing Audit Template"}],"source_content_type":"text/x-rst","patch_set":3,"id":"bbddefcb_37d63759","line":52,"in_reply_to":"5e92f2c0_0a802472","updated":"2026-02-25 19:58:05.000000000","message":"i was going to suggest doing linear first since its the simplest and allwos use to get the the infra fro supproting this working\n\nthen cascade next as that is more complext but those are the two i see the most value in\n\nwe can do cascade first if we prefer i just think ther eis more risk of bugs in that initally as it a larger chagne.\n\neither is ok and we can do both in either order.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This spec proposes the introduction of ``Audit Pipeline``, which allows"},{"line_number":53,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":54,"context_line":"This functionality will be implemented based on a new ``Audit Pipeline``"},{"line_number":55,"context_line":"resource with dedicated APIs, and an extension to the existing Audit Template"}],"source_content_type":"text/x-rst","patch_set":3,"id":"338aa1f2_ab1d63f7","line":52,"in_reply_to":"60ad465d_1736adf3","updated":"2025-12-18 16:24:01.000000000","message":"WRT `linear`, Would that provide a single ActionPlan or two independent ActionPlans that could be started/cancelled/deleted independently?\n\nIMO, that could work and make sense in some cases but only very independent cases. For the example case ` Maintenance moves VM A (Host 1→2). Stabilization moves VM A (Host 2→3)` , if we run those two strategies one after the other without any intermediate simulation, it may happen that Stabilization audit moves back VM from Host 2 to 1 given that Host 1 is still enabled in the model (no intermediate cluster data model is created). This would only work for auto-trigger audits and where 2nd one waits for the first action plan finish, what I understand is not the idea.\n\nIMO, this would work fine with totally independent audits, i.e. with non-overlapping scopes, but the added value would be limited. Just a way to \"run an audit after the other\" in one API element. Could be useful in some cases from an operational point of view.\n\nWRT the `composite` and `cascade` planner. We\u0027d need to very clear delimiting what is the difference and would be tricky to identify which audit combinations may work well, or to document the expected behavior of each combination for each planner mode. It may become confusing for users IMO.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This spec proposes the introduction of ``Audit Pipeline``, which allows"},{"line_number":53,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":54,"context_line":"This functionality will be implemented based on a new ``Audit Pipeline``"},{"line_number":55,"context_line":"resource with dedicated APIs, and an extension to the existing Audit Template"}],"source_content_type":"text/x-rst","patch_set":3,"id":"561757ea_a534e8e1","line":52,"in_reply_to":"68b2fe67_ffa8a879","updated":"2025-12-15 20:51:21.000000000","message":"\u003e Consider adding configuration options for: timeout between stages, conflict resolution preferences, and optimization levels for the pipeline planner.\n\n\ninteresting.\n\ni agree that the way the strategies are composed should be configurable via a parameter in the audit but not a config option.\n\nfor example we could have a basic `linear` strategy that literally just does one statargy then the next without any optimisations.\n\nthat woudl be useful for runing a set of unrelated autis sequetially.\n\ni.e. running workload stabilization automation on different subsets of nodes.\n\nYou could have a `cascade` or `composite`  strategy where output of the previous strategy is used to calculate the input state for the next and we compute the optimal set of actions to achieve the final state.\n\ni woudl defien the 3 planner mdoes as follows\n\n    Linear Planner (Append-Only):\n\n        Behavior: Merges action plans strictly in order without intermediate simulation.\n\n        Use Case: Independent actions where state overlap is irrelevant.\n\n        Example: Maintenance moves VM A (Host 1→2). Stabilization moves VM A (Host 2→3). Result: 1→2 then 2→3.\n\n    Composite Planner (Optimization):\n\n        Behavior: Executes strategies sequentially and caches metrics, but does not simulate complex resource math (CPU arithmetic). It analyzes the final combined action plan to collapse redundant operations.\n\n        Use Case: Reducing churn on the same resources.\n\n        Example: It detects the redundancy in 1→2 and 2→3 and collapses them into a single action: 1→3.\n\n    Cascade Planner (Simulated State):\n\n        Behavior: This is required for the Workload Balancing use case. It performs intermediate simulation.\n\n        Logic:\n\n            Strategy A (Host Maintenance) runs.\n\n            Planner takes the solution and simulates the moves (e.g., subtract CPU usage from Source, add to Destination) on the Data Model.\n\n            Strategy B (Stabilization) runs using this simulated model. It sees the predicted high load on the destination host and makes decisions based on that future state.\n\n        Scoping: The scope of Strategy B can be dynamically derived from the output of Strategy A.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   New field:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"   * ``parameters``: Optional dict of input parameters for the strategy"},{"line_number":73,"context_line":"     defined in the template."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"2. ``New Audit Pipeline Resource``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e6b00d77_4ca92604","line":72,"range":{"start_line":72,"start_character":7,"end_line":72,"end_character":17},"updated":"2025-12-15 20:51:21.000000000","message":"i would call it `default_parameters` if the intended semantic is to be that the parameter can be overridden in the audit request.\nif that is not the intent we shoudl return a 409 conflict if the same parameter is defined in the audit input_parameters with a different value.\n\n\nthe addition of this filed in either case should be accompanied by a new API micro-version.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d213aca61b3cd32d1729bc64d199b2c2e5ba791","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"   New field:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"   * ``parameters``: Optional dict of input parameters for the strategy"},{"line_number":73,"context_line":"     defined in the template."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"2. ``New Audit Pipeline Resource``"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6d0b31ff_da417051","line":72,"range":{"start_line":72,"start_character":7,"end_line":72,"end_character":17},"in_reply_to":"e6b00d77_4ca92604","updated":"2025-12-17 18:38:07.000000000","message":"Ack, makes sense. My idea is to let the user to override the default_parameters in the audit too. Adding also a mention to a new API microversion for this change.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"664eb54b_38906853","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"updated":"2025-12-15 11:47:43.000000000","message":"I think it will be hard to support any combination of goals/strategy in an audit pipeline. I\u0027d say we will need to do some kind of validation of the audits to be combined in an Audit Pipeline.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d60ec3c328b41e4113923199cea0cd38eb8a96c4","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"6b050d8f_d6fb5d91","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"in_reply_to":"169ef9cf_9a7559ed","updated":"2025-12-16 12:57:12.000000000","message":"i agree that we shouldn\u0027t block at API level, but we could document a set of combinations that are verified that generates a more solid output.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3d67bc91_33aa6b60","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"in_reply_to":"664eb54b_38906853","updated":"2025-12-15 19:41:37.000000000","message":"That\u0027s my feeling too, we would need to support just a few combinations, which we can test and guarantee that generate the expected output.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"169ef9cf_9a7559ed","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"in_reply_to":"664eb54b_38906853","updated":"2025-12-15 20:51:21.000000000","message":"so long term we shoudl be able to support any combination or that indelicate that this is not the correct design.\n\n\nnow weather the output of the audit produce an action plan that make sense is another matter but im not convince we shoudl restrict the combination at the API level.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"b05e997f_713ce537","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"in_reply_to":"6b050d8f_d6fb5d91","updated":"2025-12-19 15:08:59.000000000","message":"+1 to documenting which are the tested combinations","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"1c4557fe_6017e749","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"in_reply_to":"6b050d8f_d6fb5d91","updated":"2025-12-18 16:24:01.000000000","message":"I think that letting the users to do nonsense combination from a functional point of view will lead to misunderstandings and users expecting different and likely inconsistent behaviors. IMO this will require to document what combination works and the expected behavior as Doug mentioned but I would also validate at API level too.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":82,"context_line":"   Audit Pipeline will fundamentally have the same structure as the Audit"},{"line_number":83,"context_line":"   resource, with a few key differences:"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."}],"source_content_type":"text/x-rst","patch_set":3,"id":"4d631dd5_b9bd2909","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":2},"in_reply_to":"b05e997f_713ce537","updated":"2025-12-22 18:58:20.000000000","message":"ACK for documenting the validated/testes combinations. The API validation seems more problematic since 1) we may block combination that are valid but we didn\u0027t tested 2) would block custom strategies combinations. I think that, in general, for any user that would try this new feature, is to go through documentation for better understanding how it works, and combinations that are supported.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."},{"line_number":89,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":90,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":91,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2581d99f_ee6ea821","line":88,"updated":"2025-12-15 11:47:43.000000000","message":"What about audit scopes coming from the Audit Templates? How would it be managed? Each audit use the scope coming from its template? I have doubts about that, i think there should be a single scope idea for the entire pipeline (that may end up creating individual scopes for each audit, see my comment below about it).","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."},{"line_number":89,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":90,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":91,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"de364368_2105be9a","line":88,"in_reply_to":"2581d99f_ee6ea821","updated":"2025-12-15 19:41:37.000000000","message":"Yeah, from user, it should only support a single scope, which will be the initial one, after that, the scope is going to be mutate together with the solutions provided by each stage in the pipeline. I will update the spec to make this clear.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."},{"line_number":89,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":90,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":91,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d5a7c79f_648940e6","line":88,"in_reply_to":"2581d99f_ee6ea821","updated":"2025-12-15 20:51:21.000000000","message":"maybe.\n\nif we are adding pipelines im not convince we shoudl restrict the stages of the pipeline to strategies that only operate on the output of the previous stage.\n\ni think the association of scopes and the propagation fo stages is really a property of the planner that is going to combine the inputs and update the models.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d60ec3c328b41e4113923199cea0cd38eb8a96c4","unresolved":true,"context_lines":[{"line_number":85,"context_line":"   * It will accept a list of audit templates as input parameters, each entry"},{"line_number":86,"context_line":"     representing a stage in the pipeline. Audit\u0027s goal and strategy won\u0027t be"},{"line_number":87,"context_line":"     defined directly in the Audit Pipeline resource, but in each of the Audit"},{"line_number":88,"context_line":"     Templates instead."},{"line_number":89,"context_line":"   * It will support a single pipeline strategy, which will be the only"},{"line_number":90,"context_line":"     supported strategy for in this spec. This strategy will orchestrate the"},{"line_number":91,"context_line":"     execution of the pipeline, sequentially and mutating the cluster data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c147d9ce_e556c9e1","line":88,"in_reply_to":"d5a7c79f_648940e6","updated":"2025-12-16 12:57:12.000000000","message":"Ack, there could be different ways of executiong the pipeline, and the scope may or not be used in all stages. We shouldn\u0027t create an API that limits to a single execution method.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ba767dcd04f106cadacdee2cbc07e17824c3d138","unresolved":true,"context_lines":[{"line_number":92,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":93,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   All existing strategies will be extended to handle mutable cluster data"},{"line_number":98,"context_line":"   models. Since most of the model handling is implemented in the BaseStrategy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"50930fb9_d6fc04f1","line":95,"updated":"2025-12-12 15:59:19.000000000","message":"I think this will work for strategies that rely on instance metrics, but do we have any strategy that uses host-level metrics that could not account for the changes in the mutable model? I need to spend more time looking into this, but I think the VM Workload Consolidation Strategy https://docs.openstack.org/watcher/latest/strategies/vm_workload_consolidation.html could be affected?","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d60ec3c328b41e4113923199cea0cd38eb8a96c4","unresolved":true,"context_lines":[{"line_number":92,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":93,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   All existing strategies will be extended to handle mutable cluster data"},{"line_number":98,"context_line":"   models. Since most of the model handling is implemented in the BaseStrategy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2377e388_391a097b","line":95,"in_reply_to":"3938c051_0f9fd5cf","updated":"2025-12-16 12:57:12.000000000","message":"The metric caching has not been considered in this spec yet, but seems to align with the approach of the mutable CDM. Since all strategies interfaces with datasources through a defined interface, we may be able to include the cache retrieval in a less invasive way.\nBy reading your proposal here I see that we may need better names for pipeline implementations, since we already have strategies and planners doing specific procedures.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":92,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":93,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   All existing strategies will be extended to handle mutable cluster data"},{"line_number":98,"context_line":"   models. Since most of the model handling is implemented in the BaseStrategy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"efc5884f_4b217535","line":95,"in_reply_to":"50930fb9_d6fc04f1","updated":"2025-12-15 11:47:43.000000000","message":"Also the workload_stabilization uses host level metrics https://docs.openstack.org/watcher/latest/strategies/workload-stabilization.html .\n\nI think the mutable cluster data model solves part of the problem of providing to the second audit a \"fixed\" input data to calculate but there is still the problem of the metrics. i.e. if we have host_maintenance + workload_stabilization, when the second audit is executed will get real data from prometheus for the host metrics that are not representative for the mutated cluster model. We\u0027ll need a solution for that too.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":92,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":93,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   All existing strategies will be extended to handle mutable cluster data"},{"line_number":98,"context_line":"   models. Since most of the model handling is implemented in the BaseStrategy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0a461214_f35df4a3","line":95,"in_reply_to":"efc5884f_4b217535","updated":"2025-12-15 19:41:37.000000000","message":"Things that I don\u0027t plan in this spec are: 1) change current strategies and 2) Change how metrics are retrived/computed from datasources.\nBased on that I don\u0027t see how to avoid this problem, considering strategies that check host metrics. If we mutate the CDM to simulate instances in a different host, the host metrics will not represent that change. Also, workload_stabilization seems to be one of the most important strategies for this spec.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":92,"context_line":"     model between each stage. The concept of a pipeline strategy can be"},{"line_number":93,"context_line":"     omitted from this initial implementation, and then added later if needed."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   All existing strategies will be extended to handle mutable cluster data"},{"line_number":98,"context_line":"   models. Since most of the model handling is implemented in the BaseStrategy"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3938c051_0f9fd5cf","line":95,"in_reply_to":"efc5884f_4b217535","updated":"2025-12-15 20:51:21.000000000","message":"so to make this work i think each stage need to produce 2 outputs. \n\na Draft Action Plan and a Mutated Model (or a set of deltas/metrics associated with the workload actions).\n\nThis facilitates Metric Caching. Strategies should be modified to check if a relevant metric (e.g., RAM) is already cached on the resource (Instance/ComputeNode) in the passed model. They should only retrieve new metrics if they are not already present. This minimizes API calls as the model passes down the pipeline and ensures each stage uses the same data if it has already been retived.\n\nthat means changing the way the strategies work so that they only retrieve new metrics for a resource if it is not in the cache.\n\nthe host_maintenance stagey does not use metrics at all so it would not enrich the compute node object or instance object with metrics but it does disable compute nodes.\n\nthe caccade planner would mutate the deatamode to update the host as disabel before passing it to the next stage but the compistie and linear planner would not.\n\nwhen the workload_stabilization model runs it does need to use host and instance metrics. all strategies would be modified to check if the metric they need is cached on the resource (instance, compute node) and retrieve it only if not cached. The workload stabilisation strategy would enrich the data-model with the ram info and return the mutated model and a sperate action plan\n\nin terms of scoping that where it gets a little tricky because there are a few different approaches.\n\nthe cascade planner would compute a scope for the second strategy based on the output of the previous audit.\n\nthe linear or composite planner would not scope the next stage at all\nsince they do not assume each step is depentn on the other.\nin that case the scope woudl be defeined in the audit template for each step.\n\nThe pipeline planner would need to then combined those action plans form each audit step.\n\nim my mind a mutable model should not be mutated by the stragies beyond the caching of metrics. if we similate the actoin or not shoudl be done by theh planner.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   * Accept an optional pre-populated cluster data model, instead of getting"},{"line_number":103,"context_line":"     it from the collectors"},{"line_number":104,"context_line":"   * The mutable cluster data model will be updated after each strategy"},{"line_number":105,"context_line":"     execution, by the strategy pipeline implementation, based on the solution"},{"line_number":106,"context_line":"     returned on each stage."},{"line_number":107,"context_line":"   * In the mutable cluster data model, resources will be updated to reflect"},{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d56c4ca9_dc3519a7","line":106,"range":{"start_line":104,"start_character":0,"end_line":106,"end_character":28},"updated":"2025-12-15 11:47:43.000000000","message":"How would this manage the cases where the 1st strategy creates a vm migration with no destination (leaves nova to decide)? will it simply put the vm in any of the existing hosts?","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   * Accept an optional pre-populated cluster data model, instead of getting"},{"line_number":103,"context_line":"     it from the collectors"},{"line_number":104,"context_line":"   * The mutable cluster data model will be updated after each strategy"},{"line_number":105,"context_line":"     execution, by the strategy pipeline implementation, based on the solution"},{"line_number":106,"context_line":"     returned on each stage."},{"line_number":107,"context_line":"   * In the mutable cluster data model, resources will be updated to reflect"},{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"de46fa17_3157fccf","line":106,"range":{"start_line":104,"start_character":0,"end_line":106,"end_character":28},"in_reply_to":"4da56267_24f8f067","updated":"2025-12-22 18:58:20.000000000","message":"I think that not all scenarios will be covered here, but this is a good corner case to think about. I will add this Action was a noop to the next stage os the pipeline, which means that we can\u0027t do anything else other than include this migration in the final plan.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   * Accept an optional pre-populated cluster data model, instead of getting"},{"line_number":103,"context_line":"     it from the collectors"},{"line_number":104,"context_line":"   * The mutable cluster data model will be updated after each strategy"},{"line_number":105,"context_line":"     execution, by the strategy pipeline implementation, based on the solution"},{"line_number":106,"context_line":"     returned on each stage."},{"line_number":107,"context_line":"   * In the mutable cluster data model, resources will be updated to reflect"},{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"4da56267_24f8f067","line":106,"range":{"start_line":104,"start_character":0,"end_line":106,"end_character":28},"in_reply_to":"d56c4ca9_dc3519a7","updated":"2025-12-15 19:41:37.000000000","message":"The current proposal always consider that each VM has a destination, to properly update the CDM. In a second strategy in the pipeline, we would remove the maintanance node from the CDM, to avoid the workload balacing strategy to consider it as possible destination. This would reduce the scope of the strategies supported by this feature.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"},{"line_number":110,"context_line":"     previous solution."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"491c220c_a509e1d8","line":111,"updated":"2025-12-15 11:47:43.000000000","message":"I have doubts also about the scope of the strategies. My understanding of the pipeline, given one of the examples we are considering, host_maintenance + workload_consolidation (or workload_stabilization) is that the second audit should only affect to the VMs which are migrated by the first audit. However, by default if we run a workload_stabilization or a workload_consolidation with the mutated model, it will easily provide an action plan that includes other VMs migration to achieve the goal for the cluster (or the entire scope set in Audit Pipeline). I think that\u0027d be incorrect and the only way to manage that would be that the scope of the second audit would be set dynamically by the first one to ensure only the VMs being migrated would be taken into account (unless we explicitely decide that the behavior is correct).","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"},{"line_number":110,"context_line":"     previous solution."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"00bf4506_a3e1fb0c","line":111,"in_reply_to":"4519b08d_4525ca9f","updated":"2025-12-22 18:58:20.000000000","message":"This could be exlcusive to the pipeline executor, which could have its own configuration parameters, but these parameters are not part of this spec. We can document how the pipeline execution will handle scopes per execution mode, and that would be enough for now. Cascade can only consider an initial scope, and the rest will be up to the executor to build.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"},{"line_number":110,"context_line":"     previous solution."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"490f0b18_76f4b559","line":111,"in_reply_to":"491c220c_a509e1d8","updated":"2025-12-15 19:41:37.000000000","message":"We could fix a single initial scope from user (which could be from 1. first strategy-template or 2. from the new audit-template API), all others from audit-template would be ignored, or an error returned to the user, mentioning that all other stages don\u0027t support scope.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":108,"context_line":"     the expected results of a previous solution. The cluster model scope will"},{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"},{"line_number":110,"context_line":"     previous solution."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"4519b08d_4525ca9f","line":111,"in_reply_to":"491c220c_a509e1d8","updated":"2025-12-15 20:51:21.000000000","message":"so i htink that behvior need to be defiend in the spec but i dont think its an atibute of the pipeline or the stragey its an atribute fo the planner that orsctrates the pipeline.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":false,"context_lines":[{"line_number":109,"context_line":"     be used to restrict the scope to the resource that were affected by the"},{"line_number":110,"context_line":"     previous solution."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"715618eb_ae31a59b","line":112,"in_reply_to":"1ea0e972_56c05b37","updated":"2025-12-15 20:51:21.000000000","message":"\u003e Document how pipeline failures are handled: partial execution recovery, rollback strategies, and error reporting mechanisms for multi-stage failures.\n\nThis is important to document but we do not execute pipelines we execute action plans and currently we are proposing that we produce only a single action plan.\n\nso we are not changing the execution phase only the planning phase.\n\nwhat we could do is have a pipeline produce a set of action planes for each phase\nand introduce the idea of dependencies between action plans.\n\nthat would give cancellation point to abort later stages but it would only make sense for the linear planner where each stragey is basically independent other the the over all sequence of the stagues.\n\nwith that said i dont think rooback is in socpe of this spec and we do not do error recovery in genreal","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Merge the solutions from all stages into a single one"},{"line_number":117,"context_line":"   * Detect and eliminate redundant actions (e.g., migrate A→B then B→C"}],"source_content_type":"text/x-rst","patch_set":3,"id":"cc84d3d4_20e4ccd0","line":114,"range":{"start_line":114,"start_character":0,"end_line":114,"end_character":2},"updated":"2025-12-15 11:47:43.000000000","message":"You think that will be possible to have a common planner for any combination? I\u0027m asking because currently we have a couple of strategy-specific planners https://github.com/openstack/watcher/tree/master/watcher/decision_engine/planner so I\u0027m not entirely sure if it\u0027s feasible to create one that supports any combination.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"5. ``Pipeline Planner``"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Merge the solutions from all stages into a single one"},{"line_number":117,"context_line":"   * Detect and eliminate redundant actions (e.g., migrate A→B then B→C"}],"source_content_type":"text/x-rst","patch_set":3,"id":"09a98445_f5ab1bf5","line":114,"range":{"start_line":114,"start_character":0,"end_line":114,"end_character":2},"in_reply_to":"cc84d3d4_20e4ccd0","updated":"2025-12-15 19:41:37.000000000","message":"looking at the available ones, which are basically weighers and a \"keep original ordering\" planner, we could build one that works for a specific combination of strategies.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"c81e8cf3f626b763ed84c0335d363f0ef1981215","unresolved":true,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Merge the solutions from all stages into a single one"},{"line_number":117,"context_line":"   * Detect and eliminate redundant actions (e.g., migrate A→B then B→C"},{"line_number":118,"context_line":"     becomes A→C)"},{"line_number":119,"context_line":"   * Maintain action dependencies and parallelization opportunities"}],"source_content_type":"text/x-rst","patch_set":3,"id":"574dda7e_7c2cfa76","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":2},"updated":"2025-12-15 11:47:43.000000000","message":"How the efficacy indicators will be managed? they will also be merged into a single efficacy indicator list? or actionplans will have one lists of efficacy indicators per audit?","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"185a230377ecebf916e8b877e0173329839cc16a","unresolved":true,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Merge the solutions from all stages into a single one"},{"line_number":117,"context_line":"   * Detect and eliminate redundant actions (e.g., migrate A→B then B→C"},{"line_number":118,"context_line":"     becomes A→C)"},{"line_number":119,"context_line":"   * Maintain action dependencies and parallelization opportunities"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b843f992_2b8862de","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":2},"in_reply_to":"574dda7e_7c2cfa76","updated":"2025-12-15 19:41:37.000000000","message":"I was originally thinking on just merging all from all solutions, but I didn\u0027t stop to think how it will end up for user.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Merge the solutions from all stages into a single one"},{"line_number":117,"context_line":"   * Detect and eliminate redundant actions (e.g., migrate A→B then B→C"},{"line_number":118,"context_line":"     becomes A→C)"},{"line_number":119,"context_line":"   * Maintain action dependencies and parallelization opportunities"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e8958f9a_33664e82","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":2},"in_reply_to":"7988b985_45f4702f","updated":"2025-12-22 18:58:20.000000000","message":"We could build a new global efficacy indicator based on the final solution, or for now, just build a list with all, and merge values for keys that match. The value of total migration may be different from all in the action plan, since we can optimize, but still a value indicator.\n@Joan, yes, there will be different indicators since there are different goals, but I think that still works, since they will be a list of indicadors for a major goal.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"   A new planner will be created to optimize the combined action plan:"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Merge the solutions from all stages into a single one"},{"line_number":117,"context_line":"   * Detect and eliminate redundant actions (e.g., migrate A→B then B→C"},{"line_number":118,"context_line":"     becomes A→C)"},{"line_number":119,"context_line":"   * Maintain action dependencies and parallelization opportunities"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7988b985_45f4702f","line":116,"range":{"start_line":116,"start_character":0,"end_line":116,"end_character":2},"in_reply_to":"b843f992_2b8862de","updated":"2025-12-19 15:08:59.000000000","message":"I feel like the concept of the efficacy indicator looses value for a pipeline, since there likely won\u0027t be a single goal being optimized. IMO displaying the indicators for each stage is a reasonable solution","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":181,"context_line":"Data model impact"},{"line_number":182,"context_line":"-----------------"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"``Audit Template Extension``"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Add a new optional field to the Audit Template model, that will be used to pass"},{"line_number":187,"context_line":"parameters to the strategy::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"a21faeb4_209af568","line":184,"in_reply_to":"5d1b58aa_99da2546","updated":"2025-12-15 20:51:21.000000000","message":"\u003e Document how existing audits and audit templates will continue to work, and what changes (if any) existing users need to make when upgrading.\n\n\nso adding a new field like this need a new api microvvrion\n\nad the database level this will have to be a nullable filed and null by default\n\nbut we do need to sepcify the interaction of this new filed with a standard audit\nsepcific how we handel the same key being defiend in both the audit and audit template\n\ndoe the audit take precedence or is it a 400 bad request.\n\na 409 conflict is not quite correct semanticly but that woudl be the other option.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":195,"context_line":"* ``id``: Integer primary key"},{"line_number":196,"context_line":"* ``uuid``: UUID"},{"line_number":197,"context_line":"* ``name``: String"},{"line_number":198,"context_line":"* ``audit_type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":199,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":200,"context_line":"* ``stages``: List"},{"line_number":201,"context_line":"* ``interval``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5e8ae12c_1f265295","line":198,"updated":"2025-12-15 20:51:21.000000000","message":"the pipeline object feels like ti shoudl only have\n\n*  ``id``: Integer primary key\n* ``uuid``: UUID\n* ``name``: String\n* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)\n* ``stages``: List\n* ``auto_trigger``: Boolean\n* ``hostname``: String (nullable)\n\n\nwith the rest \n\n* ``audit_type``: String (ONESHOT, CONTINUOUS, EVENT)\n* ``interval``: String (nullable)\n* ``next_run_time``: DateTime (nullable)\n* ``start_time``: DateTime (nullable)\n* ``end_time``: DateTime (nullable)\n\n\ni understand why your propsoing this but i dislike that we are copuling the trigger with the logical pipeline object again.\n\nregarding `audit_type`\nan audit pipeline is not a audit it is a composition of audits\n\ni.e. its not an `is a` (inheritance) relationship  its a `has a` (compostion) relationship\n\na pipeline composes a series of audits to compute 1 or more action plans\npotentially with dependencies dependign on the planner used.\n\nso this shoudl be `pipeline_type`, `schedule_type`or just `type`\n\naudit_type implies the `IS A` relsationship which we shoudl aviod.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"d60ec3c328b41e4113923199cea0cd38eb8a96c4","unresolved":true,"context_lines":[{"line_number":195,"context_line":"* ``id``: Integer primary key"},{"line_number":196,"context_line":"* ``uuid``: UUID"},{"line_number":197,"context_line":"* ``name``: String"},{"line_number":198,"context_line":"* ``audit_type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":199,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":200,"context_line":"* ``stages``: List"},{"line_number":201,"context_line":"* ``interval``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fe02130b_2644421f","line":198,"in_reply_to":"5e8ae12c_1f265295","updated":"2025-12-16 12:57:12.000000000","message":"I agree that decloupling is a better approach, but at the same time it feels that we are introducing a new api that is misaligned with the existing one (unless we change both to have the same behavior). \nDespite from api, you mentioned about the composition of audits here, and this is a implementation detail that wasn\u0027t proposed here: 1) If internally, each stage will become a new Audit (and if yes, at which moment and which type of Audit - it may be a audit ONESHOT created at the moment that pipeline-audit starts) or 2) a single audit-pipeline object that holds a single state, status_message and one (or a list) of action-plans as results of its execution).\nWould user require to check individual \"stage\" audits from a pipeline-audit?","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":false,"context_lines":[{"line_number":273,"context_line":"* Normal response: 204 No Content"},{"line_number":274,"context_line":"* Error responses: 404 Not Found"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Security impact"},{"line_number":277,"context_line":"---------------"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3fe2ffec_0b82adb9","line":276,"in_reply_to":"5e212141_b0481182","updated":"2025-12-15 20:51:21.000000000","message":"not relevent","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"None"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"Performance Impact"},{"line_number":292,"context_line":"------------------"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"* Deep copies of cluster data models are created for each stage"}],"source_content_type":"text/x-rst","patch_set":3,"id":"efb8b5f8_c181de62","line":291,"in_reply_to":"995cdd4a_42c68ff5","updated":"2025-12-15 20:51:21.000000000","message":"\u003e Add specific performance requirements or benchmarks: acceptable execution time overhead, memory usage limits, and scaling considerations for large cluster models.\n\n\nso while i don\u0027t agree with the recommendation our data modesl are large and i agree with the scaling concern.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a52b2e227f8c4367bae4ac9ab169bcabd77c0f9a","unresolved":true,"context_lines":[{"line_number":291,"context_line":"Performance Impact"},{"line_number":292,"context_line":"------------------"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"* Deep copies of cluster data models are created for each stage"},{"line_number":295,"context_line":"* The pipeline planner optimization phase adds computational overhead but"},{"line_number":296,"context_line":"  results in more efficient action plan execution"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"6a664db3_8667c58c","line":294,"updated":"2025-12-15 20:51:21.000000000","message":"we likely cant afford to do that for each stage but we can do it once for the pipeline instance and reuse it i think.","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"5d213aca61b3cd32d1729bc64d199b2c2e5ba791","unresolved":false,"context_lines":[{"line_number":291,"context_line":"Performance Impact"},{"line_number":292,"context_line":"------------------"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"* Deep copies of cluster data models are created for each stage"},{"line_number":295,"context_line":"* The pipeline planner optimization phase adds computational overhead but"},{"line_number":296,"context_line":"  results in more efficient action plan execution"},{"line_number":297,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"bf67c0f9_b66fdabb","line":294,"in_reply_to":"6a664db3_8667c58c","updated":"2025-12-17 18:38:07.000000000","message":"Removing this part, it was proposed by the model, but it is an implementation detail tbd","commit_id":"eccc9d38df1ee83d5725225fe8bca42fc988c1d3"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":97,"context_line":"     that the next stage can be executed based on the expected state of the"},{"line_number":98,"context_line":"     cluster after the previous stage."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"3. ``Pipeline Execution Modes``"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   The pipeline execution mode will be handle the inputs and outputs to/from"},{"line_number":103,"context_line":"   each stage of the pipeline, which will define different strategies of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"76aecd7e_3f0ad47c","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":2},"updated":"2025-12-18 16:24:01.000000000","message":"So from here, I understand there will be something like a `Watcher audit pipeline executors` which will take care of triggering the audits and doing all the intermediate simulations, data cache, model transformations, etc... and calling the pipeline planner once it has all the solutions, right?","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":97,"context_line":"     that the next stage can be executed based on the expected state of the"},{"line_number":98,"context_line":"     cluster after the previous stage."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"3. ``Pipeline Execution Modes``"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   The pipeline execution mode will be handle the inputs and outputs to/from"},{"line_number":103,"context_line":"   each stage of the pipeline, which will define different strategies of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fc81b01e_2683ba3f","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":2},"in_reply_to":"76aecd7e_3f0ad47c","updated":"2025-12-22 18:58:20.000000000","message":"Correct, which can be select when creating the audit pipeline. The expected planner for now would be a single one, but it can also be linked to the pipeline executor as today we have strategy -\u003e planner.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a06f38a147f808dba1653c39adfe9efebfed4e14","unresolved":false,"context_lines":[{"line_number":107,"context_line":"     solutions for each stage. It can take advantage of the metric data cache"},{"line_number":108,"context_line":"     to avoid redundant calls to datasource APIs. In the end, it merges the"},{"line_number":109,"context_line":"     solutions from all stages into a single action plan, providing simple"},{"line_number":110,"context_line":"     optimizations."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"   * Cascade: runs each stage sequentially and simulates the expected state of"},{"line_number":113,"context_line":"     the cluster based on the previous stage solution, including metrics cache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8a9acd77_d5a58f7a","line":110,"updated":"2025-12-18 18:29:27.000000000","message":"ya it could be one action plan or one per stage.\n\nthat can even be configuable but im fine with the curent proposl","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":116,"context_line":"     executed."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":".. note::"},{"line_number":119,"context_line":"   The Cascade execution mode is the one that covers most of the use cases, and"},{"line_number":120,"context_line":"   will be the main focus of this specification. The Linear execution mode may"},{"line_number":121,"context_line":"   be added in the current one or in future implementations."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"4. ``Metric Data Cache``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a509fbec_ffdb3c29","line":120,"range":{"start_line":119,"start_character":3,"end_line":120,"end_character":47},"updated":"2025-12-18 16:24:01.000000000","message":"+1 I agree that cascade is the most useful part and should be the focus.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[{"line_number":116,"context_line":"     executed."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":".. note::"},{"line_number":119,"context_line":"   The Cascade execution mode is the one that covers most of the use cases, and"},{"line_number":120,"context_line":"   will be the main focus of this specification. The Linear execution mode may"},{"line_number":121,"context_line":"   be added in the current one or in future implementations."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"4. ``Metric Data Cache``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ce80128c_d9661fbb","line":120,"range":{"start_line":119,"start_character":3,"end_line":120,"end_character":47},"in_reply_to":"a509fbec_ffdb3c29","updated":"2025-12-22 18:58:20.000000000","message":"Acknowledged","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":120,"context_line":"   will be the main focus of this specification. The Linear execution mode may"},{"line_number":121,"context_line":"   be added in the current one or in future implementations."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"4. ``Metric Data Cache``"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"   The metric data cache will store resource metrics retrieved by previous"},{"line_number":126,"context_line":"   strategies within the same pipeline. It can be used to simulate an expected"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f9ba076_99e55f7a","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":2},"updated":"2025-12-18 16:24:01.000000000","message":"You removed the section for `Mutable Cluster Data Model` section. I\u0027d say it\u0027s worthy to keep, maybe together with the Metric Data Cache or independent.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[{"line_number":120,"context_line":"   will be the main focus of this specification. The Linear execution mode may"},{"line_number":121,"context_line":"   be added in the current one or in future implementations."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"4. ``Metric Data Cache``"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"   The metric data cache will store resource metrics retrieved by previous"},{"line_number":126,"context_line":"   strategies within the same pipeline. It can be used to simulate an expected"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c4a96fec_db37672f","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":2},"in_reply_to":"5f9ba076_99e55f7a","updated":"2025-12-22 18:58:20.000000000","message":"Ooops, it wasn\u0027t supposed to be removed. I blame claude for that","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"6. ``Strategy Scopes``"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"   Individual scopes for each strategy can be defined in the Audit Template,"},{"line_number":147,"context_line":"   althought not all Audit Pipeline modes will make use of all of them. For"},{"line_number":148,"context_line":"   example, the Cascade execution mode should only consider an initial scope,"},{"line_number":149,"context_line":"   from the first stage, which will be then updated based on following stage"}],"source_content_type":"text/x-rst","patch_set":4,"id":"95817be9_9f115075","line":146,"updated":"2025-12-19 15:08:59.000000000","message":"+1, when implementing this, if we want to work with the zone migration strategy we\u0027ll need to fix https://bugs.launchpad.net/watcher/+bug/2119957","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":146,"context_line":"   Individual scopes for each strategy can be defined in the Audit Template,"},{"line_number":147,"context_line":"   althought not all Audit Pipeline modes will make use of all of them. For"},{"line_number":148,"context_line":"   example, the Cascade execution mode should only consider an initial scope,"},{"line_number":149,"context_line":"   from the first stage, which will be then updated based on following stage"},{"line_number":150,"context_line":"   solutions, while a Linear execution mode should consider individual scopes"},{"line_number":151,"context_line":"   for each stage."},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2a992827_c2f009a3","line":149,"range":{"start_line":149,"start_character":3,"end_line":149,"end_character":23},"updated":"2025-12-18 16:24:01.000000000","message":"WFM, we could also have a scope field in the AuditPipeline for this case for clarity.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":146,"context_line":"   Individual scopes for each strategy can be defined in the Audit Template,"},{"line_number":147,"context_line":"   althought not all Audit Pipeline modes will make use of all of them. For"},{"line_number":148,"context_line":"   example, the Cascade execution mode should only consider an initial scope,"},{"line_number":149,"context_line":"   from the first stage, which will be then updated based on following stage"},{"line_number":150,"context_line":"   solutions, while a Linear execution mode should consider individual scopes"},{"line_number":151,"context_line":"   for each stage."},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ded95927_eaec2e71","line":149,"range":{"start_line":149,"start_character":3,"end_line":149,"end_character":23},"in_reply_to":"2a992827_c2f009a3","updated":"2025-12-22 18:58:20.000000000","message":"Hum, maybe, it seems already confusing for users. Sometimes it will be configured at the templates, sometimes at audit pipeline. Maybe if we keep only in the template and have an API validation, to guarantee that only one scope was provided (for cascade mode)","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"4d3800a974931ac1c0a3c7cbf7e0e20bcebafe38","unresolved":false,"context_lines":[{"line_number":146,"context_line":"   Individual scopes for each strategy can be defined in the Audit Template,"},{"line_number":147,"context_line":"   althought not all Audit Pipeline modes will make use of all of them. For"},{"line_number":148,"context_line":"   example, the Cascade execution mode should only consider an initial scope,"},{"line_number":149,"context_line":"   from the first stage, which will be then updated based on following stage"},{"line_number":150,"context_line":"   solutions, while a Linear execution mode should consider individual scopes"},{"line_number":151,"context_line":"   for each stage."},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"d8953bf0_e0e37ce0","line":149,"range":{"start_line":149,"start_character":3,"end_line":149,"end_character":23},"in_reply_to":"ded95927_eaec2e71","updated":"2026-01-09 17:30:38.000000000","message":"ack","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":216,"context_line":"  strategies one by one, which today is done by the operator. However, this"},{"line_number":217,"context_line":"  approach still requires each strategy solution to be executed before"},{"line_number":218,"context_line":"  computing the next strategy solution."},{"line_number":219,"context_line":"* Watcher could be extended to support Audit creation as a final Action from a"},{"line_number":220,"context_line":"  given Action Plan, which can be scheduler to run after a specific amount of"},{"line_number":221,"context_line":"  time."},{"line_number":222,"context_line":"* For each use case, a new strategy could be created to implement the"},{"line_number":223,"context_line":"  combination of the required strategies algorithms, reusing part of the code"},{"line_number":224,"context_line":"  that exists today."}],"source_content_type":"text/x-rst","patch_set":4,"id":"d95bf966_c020f8ee","line":221,"range":{"start_line":219,"start_character":0,"end_line":221,"end_character":7},"updated":"2025-12-18 16:24:01.000000000","message":"Actually, this may be an alternative for some use cases... it would depend on the execution of the 1st action plan to run the 2nd audit, but it may be an easy implementation for some of the cases. However, your proposal provides a single view of the resulting solution and can produce optimizations of the resulting solution which is nice).","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  strategies one by one, which today is done by the operator. However, this"},{"line_number":217,"context_line":"  approach still requires each strategy solution to be executed before"},{"line_number":218,"context_line":"  computing the next strategy solution."},{"line_number":219,"context_line":"* Watcher could be extended to support Audit creation as a final Action from a"},{"line_number":220,"context_line":"  given Action Plan, which can be scheduler to run after a specific amount of"},{"line_number":221,"context_line":"  time."},{"line_number":222,"context_line":"* For each use case, a new strategy could be created to implement the"},{"line_number":223,"context_line":"  combination of the required strategies algorithms, reusing part of the code"},{"line_number":224,"context_line":"  that exists today."}],"source_content_type":"text/x-rst","patch_set":4,"id":"a12cbb10_32b83deb","line":221,"range":{"start_line":219,"start_character":0,"end_line":221,"end_character":7},"in_reply_to":"d95bf966_c020f8ee","updated":"2025-12-22 18:58:20.000000000","message":"Ack, i can clarify that this proposal is not optmized as the on in the spec.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":219,"context_line":"* Watcher could be extended to support Audit creation as a final Action from a"},{"line_number":220,"context_line":"  given Action Plan, which can be scheduler to run after a specific amount of"},{"line_number":221,"context_line":"  time."},{"line_number":222,"context_line":"* For each use case, a new strategy could be created to implement the"},{"line_number":223,"context_line":"  combination of the required strategies algorithms, reusing part of the code"},{"line_number":224,"context_line":"  that exists today."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0dffad78_ffa315d2","line":223,"range":{"start_line":222,"start_character":21,"end_line":223,"end_character":51},"updated":"2025-12-18 16:24:01.000000000","message":"I\u0027d say to improve an existing strategy to cover the new use case, but it\u0027s not very different 😊","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[{"line_number":219,"context_line":"* Watcher could be extended to support Audit creation as a final Action from a"},{"line_number":220,"context_line":"  given Action Plan, which can be scheduler to run after a specific amount of"},{"line_number":221,"context_line":"  time."},{"line_number":222,"context_line":"* For each use case, a new strategy could be created to implement the"},{"line_number":223,"context_line":"  combination of the required strategies algorithms, reusing part of the code"},{"line_number":224,"context_line":"  that exists today."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Data model impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"eedb984d_43d64856","line":223,"range":{"start_line":222,"start_character":21,"end_line":223,"end_character":51},"in_reply_to":"0dffad78_ffa315d2","updated":"2025-12-22 18:58:20.000000000","message":"yeah, depends on the strategy I think. I was thinking like: move strategy execution to a base classe, and reuse in the original strategy, and in a new strategy that can be a combination of multiple ones. But I will add you comment to this alternative, yes.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":231,"context_line":"Add a new optional field to the Audit Template model, that will be used to pass"},{"line_number":232,"context_line":"parameters to the strategy::"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    parameters \u003d Dict (nullable)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``New Audit Pipeline Resource``"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"c3847d83_62ebfa44","line":234,"updated":"2025-12-19 15:08:59.000000000","message":"in the `Key Component` section this field is called `default_parameters`","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[{"line_number":231,"context_line":"Add a new optional field to the Audit Template model, that will be used to pass"},{"line_number":232,"context_line":"parameters to the strategy::"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    parameters \u003d Dict (nullable)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``New Audit Pipeline Resource``"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bd72fb0a_19b2a19e","line":234,"in_reply_to":"c3847d83_62ebfa44","updated":"2025-12-22 18:58:20.000000000","message":"yes, thanks!","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``New Audit Pipeline Resource``"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Create a new ``AuditPipeline`` model with the following fields:"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* ``id``: Integer primary key"},{"line_number":241,"context_line":"* ``uuid``: UUID"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2e9825e0_94a49dc0","line":238,"updated":"2025-12-19 15:08:59.000000000","message":"I got the impression from the Key Component sections that the user would be able to override the default_parameters when creating the audit pipeline, is that the intention?","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``New Audit Pipeline Resource``"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Create a new ``AuditPipeline`` model with the following fields:"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* ``id``: Integer primary key"},{"line_number":241,"context_line":"* ``uuid``: UUID"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c34bfdab_5c565129","line":238,"in_reply_to":"2e9825e0_94a49dc0","updated":"2025-12-22 18:58:20.000000000","message":"No, this approach is for Audits, not Audit Pipeline. If the user provides a audit-template with default_parameters, it can use the default or override them using current `input_parameters`","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"8669a7b6ef5ff99afd7fbdd1da6ab8affd892cba","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"``New Audit Pipeline Resource``"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Create a new ``AuditPipeline`` model with the following fields:"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"* ``id``: Integer primary key"},{"line_number":241,"context_line":"* ``uuid``: UUID"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a1885f06_14c8397f","line":238,"in_reply_to":"c34bfdab_5c565129","updated":"2026-01-05 11:27:32.000000000","message":"ack, that makes sense, thanks!","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":241,"context_line":"* ``uuid``: UUID"},{"line_number":242,"context_line":"* ``name``: String"},{"line_number":243,"context_line":"* ``execution_mode``: String (linear, cascade)"},{"line_number":244,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":245,"context_line":"* ``stages``: List of Audit Template UUIDs"},{"line_number":246,"context_line":"* ``auto_trigger``: Boolean"},{"line_number":247,"context_line":"* ``hostname``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"08cb3183_83ec04e7","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":2},"updated":"2025-12-18 16:24:01.000000000","message":"Whould this require a new state for an AuditPipeline which has no AuditTrigger? UNSCHEDULLED or similar?","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a06f38a147f808dba1653c39adfe9efebfed4e14","unresolved":true,"context_lines":[{"line_number":241,"context_line":"* ``uuid``: UUID"},{"line_number":242,"context_line":"* ``name``: String"},{"line_number":243,"context_line":"* ``execution_mode``: String (linear, cascade)"},{"line_number":244,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":245,"context_line":"* ``stages``: List of Audit Template UUIDs"},{"line_number":246,"context_line":"* ``auto_trigger``: Boolean"},{"line_number":247,"context_line":"* ``hostname``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6dc25c80_69f692ce","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":2},"in_reply_to":"08cb3183_83ec04e7","updated":"2025-12-18 18:29:27.000000000","message":"ya we could add that.\nor perhaps \"READY\"  as in the pipelien is ready to be triggere but not activly runing thoguh the state machicne","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":241,"context_line":"* ``uuid``: UUID"},{"line_number":242,"context_line":"* ``name``: String"},{"line_number":243,"context_line":"* ``execution_mode``: String (linear, cascade)"},{"line_number":244,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":245,"context_line":"* ``stages``: List of Audit Template UUIDs"},{"line_number":246,"context_line":"* ``auto_trigger``: Boolean"},{"line_number":247,"context_line":"* ``hostname``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"09778615_67494169","line":244,"range":{"start_line":244,"start_character":0,"end_line":244,"end_character":2},"in_reply_to":"6dc25c80_69f692ce","updated":"2025-12-22 18:58:20.000000000","message":"It think that will be needed yes, since it is a totally new state of the audit. It could IDLE, READY, not sure yet, I will come with something.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"``AuditTrigger``"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"A new ``AuditTrigger`` model, that will hold trigger information for an Audit"},{"line_number":252,"context_line":"Pipeline resource, and can be later used Audits too. It will have the"},{"line_number":253,"context_line":"following fields:"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2777f96f_2bb708f1","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":20},"updated":"2025-12-18 16:24:01.000000000","message":"This is interesting.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":271,"context_line":"* Method: POST, PATCH"},{"line_number":272,"context_line":"* URL: ``/v1/audit_templates``, ``/v1/audit_templates/{uuid}``"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Request body (create/update)::"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    {"},{"line_number":277,"context_line":"        \"name\": \"zone-migration-template\","}],"source_content_type":"text/x-rst","patch_set":4,"id":"496718ca_13a6a503","line":274,"updated":"2025-12-19 15:08:59.000000000","message":"do we support any update operation now for audit templates? I\u0027m not sure we want to add support for that, allowing changes to the template default parameters might make understanding the behaviour of earlier audits more difficult","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":271,"context_line":"* Method: POST, PATCH"},{"line_number":272,"context_line":"* URL: ``/v1/audit_templates``, ``/v1/audit_templates/{uuid}``"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Request body (create/update)::"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    {"},{"line_number":277,"context_line":"        \"name\": \"zone-migration-template\","}],"source_content_type":"text/x-rst","patch_set":4,"id":"a8d74b9e_71fca6b4","line":274,"in_reply_to":"496718ca_13a6a503","updated":"2025-12-22 18:58:20.000000000","message":"yes, it is supported today, you can update the strategy/goal for the template. We will additionally suport update for default parameters.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"8669a7b6ef5ff99afd7fbdd1da6ab8affd892cba","unresolved":false,"context_lines":[{"line_number":271,"context_line":"* Method: POST, PATCH"},{"line_number":272,"context_line":"* URL: ``/v1/audit_templates``, ``/v1/audit_templates/{uuid}``"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Request body (create/update)::"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"    {"},{"line_number":277,"context_line":"        \"name\": \"zone-migration-template\","}],"source_content_type":"text/x-rst","patch_set":4,"id":"b4994efd_bc498c87","line":274,"in_reply_to":"a8d74b9e_71fca6b4","updated":"2026-01-05 11:27:32.000000000","message":"ack, I didn\u0027t know that, thanks!","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"16cf7e2ab78e3376fd42fff307a41bf61201a0ae","unresolved":true,"context_lines":[{"line_number":304,"context_line":"            \"audit-template-uuid-2\""},{"line_number":305,"context_line":"        ],"},{"line_number":306,"context_line":"        \"execution_mode\": \"cascade\""},{"line_number":307,"context_line":"        \"auto_trigger\": false,"},{"line_number":308,"context_line":"    }"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"List Audit Pipelines:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e610c349_f5245238","line":307,"in_reply_to":"1633778e_acb62c97","updated":"2025-12-19 15:08:59.000000000","message":"\u003e Missing comma in JSON request body example for Audit Pipeline creation\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.9\n\u003e \n\u003e **Impact**: This could cause confusion for developers implementing the API, as invalid JSON will cause parsing errors\n\u003e \n\u003e **Suggestion**:\n\u003e Add a comma after the \u0027execution_mode\u0027: \u0027cascade\u0027 line to make the JSON valid\n\nyep, that\u0027s a valid issue","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":false,"context_lines":[{"line_number":304,"context_line":"            \"audit-template-uuid-2\""},{"line_number":305,"context_line":"        ],"},{"line_number":306,"context_line":"        \"execution_mode\": \"cascade\""},{"line_number":307,"context_line":"        \"auto_trigger\": false,"},{"line_number":308,"context_line":"    }"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"List Audit Pipelines:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"74acd2f7_d351d9d9","line":307,"in_reply_to":"e610c349_f5245238","updated":"2025-12-22 18:58:20.000000000","message":"Done","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":339,"context_line":"Create Audit Trigger:"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* Method: POST"},{"line_number":342,"context_line":"* URL: ``/v1/audit_triggers``"},{"line_number":343,"context_line":"* Normal response: 201 Created"},{"line_number":344,"context_line":"* Error responses: 400 Bad Request, 404 Not Found"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e41a794f_ada7f31e","line":342,"range":{"start_line":342,"start_character":9,"end_line":342,"end_character":29},"updated":"2025-12-18 16:24:01.000000000","message":"what about /v1/audit_pipeline/{audit_id}/audit_trigger ? that\u0027d represent the trigger and pipeline relationship at the API level.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":339,"context_line":"Create Audit Trigger:"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* Method: POST"},{"line_number":342,"context_line":"* URL: ``/v1/audit_triggers``"},{"line_number":343,"context_line":"* Normal response: 201 Created"},{"line_number":344,"context_line":"* Error responses: 400 Bad Request, 404 Not Found"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"920631b6_dac5c0c2","line":342,"range":{"start_line":342,"start_character":9,"end_line":342,"end_character":29},"in_reply_to":"6df69398_3bf9c813","updated":"2025-12-22 18:58:20.000000000","message":"my idea was to reuse the trigger also for audits in future, or any other resource that makes sense.\nWe could have multiple triggers, but it also depends on the state to be triggers. So we might need to move the \u0027state\u0027 to the AuditTrigger","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"4d3800a974931ac1c0a3c7cbf7e0e20bcebafe38","unresolved":true,"context_lines":[{"line_number":339,"context_line":"Create Audit Trigger:"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* Method: POST"},{"line_number":342,"context_line":"* URL: ``/v1/audit_triggers``"},{"line_number":343,"context_line":"* Normal response: 201 Created"},{"line_number":344,"context_line":"* Error responses: 400 Bad Request, 404 Not Found"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e09a620a_b83a701f","line":342,"range":{"start_line":342,"start_character":9,"end_line":342,"end_character":29},"in_reply_to":"920631b6_dac5c0c2","updated":"2026-01-09 17:30:38.000000000","message":"Yeah, top level seems better.\n\nActually if an AuditTrigger could be used for multiple AuditPipelines (or Audits in future) and multiple AuditTriggers may be assigned to the same AuditPipeline, it would require more changes in the API, the state should be assigned to each pair AuditPipeline-AuditTrigger (AuditExecution ?), i.e. the state may be SUCCESSFUL for an AuditPipeline with an assigned ONESHOT AuditTrigger while it may still be ONGOING for the same AuditPipeline with another AuditTrigger.\n\nI\u0027m fine with starting with 1:1 relationship so far, but if we plan to support N:N combinations, it\u0027d also may be a good time to implement from scratch.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"c05c1be9c358f37adfca682c1e9dbfced4abf487","unresolved":true,"context_lines":[{"line_number":339,"context_line":"Create Audit Trigger:"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* Method: POST"},{"line_number":342,"context_line":"* URL: ``/v1/audit_triggers``"},{"line_number":343,"context_line":"* Normal response: 201 Created"},{"line_number":344,"context_line":"* Error responses: 400 Bad Request, 404 Not Found"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"f67cdfc8_0ab0a2f7","line":342,"range":{"start_line":342,"start_character":9,"end_line":342,"end_character":29},"in_reply_to":"e09a620a_b83a701f","updated":"2026-01-13 11:09:53.000000000","message":"that\u0027s a good point, but what would be the use case of multiple triggers for the same audit? All examples I can think of can be done with a continuous audit adjusting start/end times and intervals. I can think however, of cases where an operator might want to trigger multiple audits/pipelines, so I agree with the suggestion above to support a list of audit uuids","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a06f38a147f808dba1653c39adfe9efebfed4e14","unresolved":true,"context_lines":[{"line_number":339,"context_line":"Create Audit Trigger:"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* Method: POST"},{"line_number":342,"context_line":"* URL: ``/v1/audit_triggers``"},{"line_number":343,"context_line":"* Normal response: 201 Created"},{"line_number":344,"context_line":"* Error responses: 400 Bad Request, 404 Not Found"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"6df69398_3bf9c813","line":342,"range":{"start_line":342,"start_character":9,"end_line":342,"end_character":29},"in_reply_to":"e41a794f_ada7f31e","updated":"2025-12-18 18:29:27.000000000","message":"it could be both.\n\nif the audit triger is a top levle resouce that can be sue with any audit temple eor pipeline or audit.\n\nthen havin git be a top elvel api makes sense\nwe can then obviouly have a help path that will provide the tirgger for a given audtin\n\nbut by ding it this wya we could have more hten one tirgger for the same pipelien\n\nso we could have a continus triger to run the pipeline weekly\nbut we coudl also have a event based triveer or a one shot tigger to run it on demand.\n\nsso i kind if prefer the idea of not making it a subfiled of the pipeline but making it top level since it give us more flexiblity.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":339,"context_line":"Create Audit Trigger:"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* Method: POST"},{"line_number":342,"context_line":"* URL: ``/v1/audit_triggers``"},{"line_number":343,"context_line":"* Normal response: 201 Created"},{"line_number":344,"context_line":"* Error responses: 400 Bad Request, 404 Not Found"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"e4835eb2_9aa503a7","line":342,"range":{"start_line":342,"start_character":9,"end_line":342,"end_character":29},"in_reply_to":"f67cdfc8_0ab0a2f7","updated":"2026-01-13 13:50:47.000000000","message":"One example of multiple triggers could be event-based trigger and time-based triggers. Any trigger could be decoupled from the audit spec ib the, they dont need to be within the same resource. But I think that this would require refactoring curren Audit resource. But we can start AuditTemplate already like that. My guess is that a PoC would help us here on building a better solution","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"1b1ea093ef0aaa46b2dae91f85154ec038f37c21","unresolved":true,"context_lines":[{"line_number":373,"context_line":"* Normal response: 200 OK"},{"line_number":374,"context_line":"* Error responses: 400 Bad Request, 404 Not Found, 409 Conflict"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Delete Audit Trigger:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"* Method: DELETE"},{"line_number":379,"context_line":"* URL: ``/v1/audit_triggers/{uuid}``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"df29bb96_9c3423d6","line":376,"range":{"start_line":376,"start_character":0,"end_line":376,"end_character":2},"updated":"2025-12-18 16:24:01.000000000","message":"Would it be allowed to delete the trigger from an ongoing AuditTemplate?. If so, that should lead to a state change (UNSCHEDULED ?).","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"35e8feb932e5d9aa3082199b895b43186e77f841","unresolved":true,"context_lines":[{"line_number":373,"context_line":"* Normal response: 200 OK"},{"line_number":374,"context_line":"* Error responses: 400 Bad Request, 404 Not Found, 409 Conflict"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Delete Audit Trigger:"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"* Method: DELETE"},{"line_number":379,"context_line":"* URL: ``/v1/audit_triggers/{uuid}``"}],"source_content_type":"text/x-rst","patch_set":4,"id":"65acee10_0cc063c2","line":376,"range":{"start_line":376,"start_character":0,"end_line":376,"end_character":2},"in_reply_to":"df29bb96_9c3423d6","updated":"2025-12-22 18:58:20.000000000","message":"In this case, we would need to validate against the AuditTempleta state, and return a 409 here too. We may need to discuss if isn\u0027t better to move the \u0027state\u0027 to the trigger instead.","commit_id":"43f9e06f71e21f9ccf26af5583ec124474c8e23f"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[{"line_number":118,"context_line":"     updates. It will merge the solutions from all stages into a single action"},{"line_number":119,"context_line":"     plan, providing optimization and reducing the number of actions to be"},{"line_number":120,"context_line":"     executed."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":".. note::"},{"line_number":123,"context_line":"   The Cascade execution mode is the one that covers most of the use cases, and"},{"line_number":124,"context_line":"   will be the main focus of this specification. The Composite execution mode"}],"source_content_type":"text/x-rst","patch_set":5,"id":"8cf6710c_d3a9de8b","line":121,"updated":"2026-01-13 07:51:08.000000000","message":"@viroel@gmail.com In this spec we are taking about 3 pipeline execution mode `linear`, `composite`, `cascade`. In `Data model impact` section under `AuditPipeline` execution mode, we are specifying linear mode. So,  Do we also want to document about `linear` execution mode here ?","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":118,"context_line":"     updates. It will merge the solutions from all stages into a single action"},{"line_number":119,"context_line":"     plan, providing optimization and reducing the number of actions to be"},{"line_number":120,"context_line":"     executed."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":".. note::"},{"line_number":123,"context_line":"   The Cascade execution mode is the one that covers most of the use cases, and"},{"line_number":124,"context_line":"   will be the main focus of this specification. The Composite execution mode"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e785cf33_55168c09","line":121,"in_reply_to":"8cf6710c_d3a9de8b","updated":"2026-01-13 13:50:47.000000000","message":"At some point in the spec I think that I mentioned that we would only focus on Cascade implementation for now, so I was not adding more details on other methods, since cascade is the one that covers the use cases presented.","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[{"line_number":191,"context_line":"The following diagram shows the sequence of processes that happen when an Audit"},{"line_number":192,"context_line":"Pipeline, using the Cascade execution mode, is triggered:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"::"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    +---------------------------+"},{"line_number":197,"context_line":"    |  Audit Pipeline           |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"08297f48_5533c266","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":2},"updated":"2026-01-13 07:51:08.000000000","message":"+1  for the proposing the flow diagram, it makes the understanding clear.","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"The following diagram shows the sequence of processes that happen when an Audit"},{"line_number":192,"context_line":"Pipeline, using the Cascade execution mode, is triggered:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"::"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    +---------------------------+"},{"line_number":197,"context_line":"    |  Audit Pipeline           |"}],"source_content_type":"text/x-rst","patch_set":5,"id":"0a26bf3e_269c3fc2","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":2},"in_reply_to":"08297f48_5533c266","updated":"2026-01-13 13:50:47.000000000","message":"Acknowledged","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[{"line_number":278,"context_line":"* ``id``: Integer primary key"},{"line_number":279,"context_line":"* ``uuid``: UUID"},{"line_number":280,"context_line":"* ``name``: String"},{"line_number":281,"context_line":"* ``execution_mode``: String (linear, cascade)"},{"line_number":282,"context_line":"* ``state``: String (CREATED, PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED,"},{"line_number":283,"context_line":"             SUSPENDED)"},{"line_number":284,"context_line":"* ``stages``: List of Audit Template UUIDs"}],"source_content_type":"text/x-rst","patch_set":5,"id":"920be9a2_767120e8","line":281,"range":{"start_line":281,"start_character":45,"end_line":281,"end_character":46},"updated":"2026-01-13 07:51:08.000000000","message":"I think we will add composite mode later once we are done with cascode mode implementation?","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":278,"context_line":"* ``id``: Integer primary key"},{"line_number":279,"context_line":"* ``uuid``: UUID"},{"line_number":280,"context_line":"* ``name``: String"},{"line_number":281,"context_line":"* ``execution_mode``: String (linear, cascade)"},{"line_number":282,"context_line":"* ``state``: String (CREATED, PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED,"},{"line_number":283,"context_line":"             SUSPENDED)"},{"line_number":284,"context_line":"* ``stages``: List of Audit Template UUIDs"}],"source_content_type":"text/x-rst","patch_set":5,"id":"41dd643e_8cb11830","line":281,"range":{"start_line":281,"start_character":45,"end_line":281,"end_character":46},"in_reply_to":"920be9a2_767120e8","updated":"2026-01-13 13:50:47.000000000","message":"Yes, if there are use cases and users interested","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"4d3800a974931ac1c0a3c7cbf7e0e20bcebafe38","unresolved":false,"context_lines":[{"line_number":279,"context_line":"* ``uuid``: UUID"},{"line_number":280,"context_line":"* ``name``: String"},{"line_number":281,"context_line":"* ``execution_mode``: String (linear, cascade)"},{"line_number":282,"context_line":"* ``state``: String (CREATED, PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED,"},{"line_number":283,"context_line":"             SUSPENDED)"},{"line_number":284,"context_line":"* ``stages``: List of Audit Template UUIDs"},{"line_number":285,"context_line":"* ``auto_trigger``: Boolean"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4ce10e82_22c2929f","line":282,"range":{"start_line":282,"start_character":21,"end_line":282,"end_character":28},"updated":"2026-01-09 17:30:38.000000000","message":"CREATED works for me (READY would also be fine, IMO).","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"4d3800a974931ac1c0a3c7cbf7e0e20bcebafe38","unresolved":true,"context_lines":[{"line_number":292,"context_line":"following fields:"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"* ``id``: Integer primary key"},{"line_number":295,"context_line":"* ``audit_uuid``: UUID of the Audit Pipeline resource (can represent an"},{"line_number":296,"context_line":"    Audit in future changes)."},{"line_number":297,"context_line":"* ``type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":298,"context_line":"* ``interval``: String (nullable)"},{"line_number":299,"context_line":"* ``next_run_time``: DateTime (nullable)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"0f626741_6001c555","line":296,"range":{"start_line":295,"start_character":0,"end_line":296,"end_character":29},"updated":"2026-01-09 17:30:38.000000000","message":"we want to support a list of UUIDs or start with a 1:1 relationship?","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":292,"context_line":"following fields:"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"* ``id``: Integer primary key"},{"line_number":295,"context_line":"* ``audit_uuid``: UUID of the Audit Pipeline resource (can represent an"},{"line_number":296,"context_line":"    Audit in future changes)."},{"line_number":297,"context_line":"* ``type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":298,"context_line":"* ``interval``: String (nullable)"},{"line_number":299,"context_line":"* ``next_run_time``: DateTime (nullable)"}],"source_content_type":"text/x-rst","patch_set":5,"id":"6bf662fd_eb63a844","line":296,"range":{"start_line":295,"start_character":0,"end_line":296,"end_character":29},"in_reply_to":"0f626741_6001c555","updated":"2026-01-13 13:50:47.000000000","message":"We can start with 1:1 i think. And in future releases, the field could accept a single uuid or a list of uuid. I think that if we dont support a relation other than 1:1, the api should not be a list, otherwise would be more confusing for users","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"* Extend Audit Template model with ``default_parameters`` field"},{"line_number":473,"context_line":"* Update Audit Template API with new micro-version"},{"line_number":474,"context_line":"* Adapt Audit to accept ``default_parameters`` from Audit Template"},{"line_number":475,"context_line":"* Update python-watcherclient with Audit Template changes"},{"line_number":476,"context_line":"* Add unit tests and update documentation"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c134304b_6d1849a8","line":474,"updated":"2026-01-13 07:51:08.000000000","message":"Can we also add \"Audit parameters should override the Audit Template default parameters\"?","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"* Extend Audit Template model with ``default_parameters`` field"},{"line_number":473,"context_line":"* Update Audit Template API with new micro-version"},{"line_number":474,"context_line":"* Adapt Audit to accept ``default_parameters`` from Audit Template"},{"line_number":475,"context_line":"* Update python-watcherclient with Audit Template changes"},{"line_number":476,"context_line":"* Add unit tests and update documentation"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"59fa1feb_bb6ba005","line":474,"in_reply_to":"c134304b_6d1849a8","updated":"2026-01-13 13:50:47.000000000","message":"We can, but I also think that Audit Template Extension explain these details already","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[{"line_number":505,"context_line":"* Add migration merging optimization"},{"line_number":506,"context_line":"* Add conflict detection and resolution"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"``Phase 5: Integration and Testing``"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"* Update python-watcherclient with Audit Pipeline and Audit Trigger commands"},{"line_number":511,"context_line":"* Add unit tests for all new components"}],"source_content_type":"text/x-rst","patch_set":5,"id":"cb42607a_6bcaf6cd","line":508,"range":{"start_line":508,"start_character":8,"end_line":508,"end_character":9},"updated":"2026-01-13 07:51:08.000000000","message":"s/5/6","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":505,"context_line":"* Add migration merging optimization"},{"line_number":506,"context_line":"* Add conflict detection and resolution"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"``Phase 5: Integration and Testing``"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"* Update python-watcherclient with Audit Pipeline and Audit Trigger commands"},{"line_number":511,"context_line":"* Add unit tests for all new components"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5b0c5b05_3a4ade5b","line":508,"range":{"start_line":508,"start_character":8,"end_line":508,"end_character":9},"in_reply_to":"cb42607a_6bcaf6cd","updated":"2026-01-13 13:50:47.000000000","message":"Oops, I will update in a follow up","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"7c13e49e25b00f2224e7a86e7e9d39085ee4e1ca","unresolved":true,"context_lines":[{"line_number":512,"context_line":"* Add tempest scenario tests for full pipeline audit flow"},{"line_number":513,"context_line":"* Update documentation"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"Dependencies"},{"line_number":517,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"d92d7b72_daad9c47","line":515,"updated":"2026-01-13 07:51:08.000000000","message":"Since this spec does not mention about watcher-dashboard changes. Do we want to add a new phase to cover dashboard changes for Audit Pipeline and Audit Trigger UI pages?","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c209eea8d88173abfc15b59941b6be5c2f287d1b","unresolved":true,"context_lines":[{"line_number":512,"context_line":"* Add tempest scenario tests for full pipeline audit flow"},{"line_number":513,"context_line":"* Update documentation"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":""},{"line_number":516,"context_line":"Dependencies"},{"line_number":517,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":518,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"74c42e63_50a03d63","line":515,"in_reply_to":"d92d7b72_daad9c47","updated":"2026-01-13 13:50:47.000000000","message":"I think that is too early for dashboard changes. Once we building a more concret solution, we could asd it or propose a new spec to cover.","commit_id":"3cfcd4136a342b2d982b1d5fbbc2cf3dc9b16d34"}],"specs/2026.1/approved/strategy-pipeline.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"---------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**Use Case 1: Maintenance with Workload Balancing**"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As a cloud operator, I need to evacuate specific hosts for scheduled"},{"line_number":49,"context_line":"maintenance. After evacuation, I want the remaining workload to be optimally"}],"source_content_type":"text/x-rst","patch_set":1,"id":"64ba5b13_d478bb91","line":46,"updated":"2025-12-08 21:27:10.000000000","message":"nit: i woudl remove these headings personally","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"905cad09e54e34e946841c99c0e9b369e6c4aa2f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"---------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**Use Case 1: Maintenance with Workload Balancing**"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As a cloud operator, I need to evacuate specific hosts for scheduled"},{"line_number":49,"context_line":"maintenance. After evacuation, I want the remaining workload to be optimally"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e54ac36d_999c60b5","line":46,"in_reply_to":"64ba5b13_d478bb91","updated":"2025-12-09 19:30:11.000000000","message":"Acknowledged","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**Use Case 1: Maintenance with Workload Balancing**"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As a cloud operator, I need to evacuate specific hosts for scheduled"},{"line_number":49,"context_line":"maintenance. After evacuation, I want the remaining workload to be optimally"},{"line_number":50,"context_line":"distributed across the functioning nodes. Currently, I must run zone_migration,"},{"line_number":51,"context_line":"wait for completion, then run workload_balance separately. With Strategy"},{"line_number":52,"context_line":"Pipeline, I can define both as stages in a single pipeline, and the workload"},{"line_number":53,"context_line":"balancing strategy will see the expected post-evacuation state, producing an"},{"line_number":54,"context_line":"optimized combined action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Use Case 2: Node Consolidation with Workload Balancing**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As a cloud operator during off-peak hours, I want to consolidate workloads"}],"source_content_type":"text/x-rst","patch_set":1,"id":"509eb993_4d9d325d","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":1},"updated":"2025-12-08 21:27:10.000000000","message":"so this seams incorrect firstly we shoudl nto use the term evacuation in this context\nthat has a very specific meaning and watcher does not supprot evacuateion.\n\n\n\n```suggestion\nAs a cloud operator, I need to drain specific hosts for scheduled\nmaintenance. As part of moving the worklaod, I want the optimally\nredistribute the workload over the functioning nodes.\n```\n\nthe use case is just the why not the how so we shoudl not detail how it is done today in this section\n\nthe ohter thing is we shoudl only optimize the workload we are moving as part fo the zone migration rather then optimising all node not part of the zone migration","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3fdce19bd65e774a69d75e27b21e1049ac722619","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**Use Case 1: Maintenance with Workload Balancing**"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As a cloud operator, I need to evacuate specific hosts for scheduled"},{"line_number":49,"context_line":"maintenance. After evacuation, I want the remaining workload to be optimally"},{"line_number":50,"context_line":"distributed across the functioning nodes. Currently, I must run zone_migration,"},{"line_number":51,"context_line":"wait for completion, then run workload_balance separately. With Strategy"},{"line_number":52,"context_line":"Pipeline, I can define both as stages in a single pipeline, and the workload"},{"line_number":53,"context_line":"balancing strategy will see the expected post-evacuation state, producing an"},{"line_number":54,"context_line":"optimized combined action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Use Case 2: Node Consolidation with Workload Balancing**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As a cloud operator during off-peak hours, I want to consolidate workloads"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a199f51b_82999d25","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":1},"in_reply_to":"509eb993_4d9d325d","updated":"2025-12-09 12:50:15.000000000","message":"ack, yes evacuation is not a suitable word to use here, since it already has a different context in nova.\n I will improve this writing, thanks!","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"905cad09e54e34e946841c99c0e9b369e6c4aa2f","unresolved":true,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"**Use Case 1: Maintenance with Workload Balancing**"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"As a cloud operator, I need to evacuate specific hosts for scheduled"},{"line_number":49,"context_line":"maintenance. After evacuation, I want the remaining workload to be optimally"},{"line_number":50,"context_line":"distributed across the functioning nodes. Currently, I must run zone_migration,"},{"line_number":51,"context_line":"wait for completion, then run workload_balance separately. With Strategy"},{"line_number":52,"context_line":"Pipeline, I can define both as stages in a single pipeline, and the workload"},{"line_number":53,"context_line":"balancing strategy will see the expected post-evacuation state, producing an"},{"line_number":54,"context_line":"optimized combined action plan."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Use Case 2: Node Consolidation with Workload Balancing**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As a cloud operator during off-peak hours, I want to consolidate workloads"}],"source_content_type":"text/x-rst","patch_set":1,"id":"d3e8f039_2a0a5ef9","line":55,"range":{"start_line":48,"start_character":0,"end_line":55,"end_character":1},"in_reply_to":"a199f51b_82999d25","updated":"2025-12-09 19:30:11.000000000","message":"ack, check the new text in the new audit-pipeline proposal. Thanks","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Use Case 2: Node Consolidation with Workload Balancing**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As a cloud operator during off-peak hours, I want to consolidate workloads"},{"line_number":59,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"},{"line_number":60,"context_line":"optimally balanced. The consolidation strategy identifies which nodes can be"},{"line_number":61,"context_line":"emptied, and the workload balancing strategy (operating on the expected"},{"line_number":62,"context_line":"post-consolidation state) ensures optimal resource distribution before nodes"},{"line_number":63,"context_line":"are powered down."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Proposed change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"61746165_cf747b0d","line":64,"range":{"start_line":58,"start_character":0,"end_line":64,"end_character":1},"updated":"2025-12-08 21:27:10.000000000","message":"so this woudl just be \n\n```suggestion\nAs a cloud operator during off-peak hours, I want to consolidate workloads\nonto fewer nodes to save energy, then ensure the consolidated workload is\noptimally balanced.\n```\n\nhowever im not sure i agree with this usecase as phased.\n\nlive migration is too costly to do at datacenter scale on an hourly basis like \"off peak\" load.\n\n\nThis is something that might be reasonable to do on a monthly basis or other long time interval that is indepened of the workload utilisation but it not something you woudl do in the diaurnal cycle. even doing it at the weekend is qustiobable","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"905cad09e54e34e946841c99c0e9b369e6c4aa2f","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**Use Case 2: Node Consolidation with Workload Balancing**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"As a cloud operator during off-peak hours, I want to consolidate workloads"},{"line_number":59,"context_line":"onto fewer nodes to save energy, then ensure the consolidated workload is"},{"line_number":60,"context_line":"optimally balanced. The consolidation strategy identifies which nodes can be"},{"line_number":61,"context_line":"emptied, and the workload balancing strategy (operating on the expected"},{"line_number":62,"context_line":"post-consolidation state) ensures optimal resource distribution before nodes"},{"line_number":63,"context_line":"are powered down."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Proposed change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"83f6abd9_fedd930e","line":64,"range":{"start_line":58,"start_character":0,"end_line":64,"end_character":1},"in_reply_to":"61746165_cf747b0d","updated":"2025-12-09 19:30:11.000000000","message":"Trying to improve this in the new audit-pipeline proposal. They are very similar in the end, I may replace with a different one in future PSs.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":66,"context_line":"Proposed change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This spec proposes the introduction of **Strategy Pipeline**, which allows"},{"line_number":70,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":71,"context_line":"This functionality will be implemented based on a new type of different"},{"line_number":72,"context_line":"resources: audit, goal, strategy and planner."}],"source_content_type":"text/x-rst","patch_set":1,"id":"60fafa73_c1caa6dc","line":69,"range":{"start_line":69,"start_character":39,"end_line":69,"end_character":60},"updated":"2025-12-08 21:27:10.000000000","message":"nit: \nai like to generate `**` but we don\u0027t really use that in openstack docs or spec much. we generally prefer using doble backticks to encode literals and provide emphasise \n\n```suggestion\nThis spec proposes the introduction of ``Strategy Pipeline``, which allows\n```","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"905cad09e54e34e946841c99c0e9b369e6c4aa2f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Proposed change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This spec proposes the introduction of **Strategy Pipeline**, which allows"},{"line_number":70,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":71,"context_line":"This functionality will be implemented based on a new type of different"},{"line_number":72,"context_line":"resources: audit, goal, strategy and planner."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dd4ad2aa_1086b058","line":69,"range":{"start_line":69,"start_character":39,"end_line":69,"end_character":60},"in_reply_to":"60fafa73_c1caa6dc","updated":"2025-12-09 19:30:11.000000000","message":"Done","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"905cad09e54e34e946841c99c0e9b369e6c4aa2f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":71,"context_line":"This functionality will be implemented based on a new type of different"},{"line_number":72,"context_line":"resources: audit, goal, strategy and planner."},{"line_number":73,"context_line":"Different from the existing strategies, the new strategy will be able to"},{"line_number":74,"context_line":"execute multiple strategies in sequence, and manage the generated solutions."},{"line_number":75,"context_line":"A new planner will be created to combined all solutions into a single and"},{"line_number":76,"context_line":"optimized action plan."}],"source_content_type":"text/x-rst","patch_set":1,"id":"b53c0536_318e27b7","line":73,"in_reply_to":"0b63282d_54a32c75","updated":"2025-12-09 19:30:11.000000000","message":"Done","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":70,"context_line":"multiple strategies to execute sequentially on a mutable cluster data model."},{"line_number":71,"context_line":"This functionality will be implemented based on a new type of different"},{"line_number":72,"context_line":"resources: audit, goal, strategy and planner."},{"line_number":73,"context_line":"Different from the existing strategies, the new strategy will be able to"},{"line_number":74,"context_line":"execute multiple strategies in sequence, and manage the generated solutions."},{"line_number":75,"context_line":"A new planner will be created to combined all solutions into a single and"},{"line_number":76,"context_line":"optimized action plan."}],"source_content_type":"text/x-rst","patch_set":1,"id":"0b63282d_54a32c75","line":73,"in_reply_to":"3b1932a5_4af7e6ea","updated":"2025-12-08 21:27:10.000000000","message":"rith you ment to say \n\n```suggestion\nDifferent from the existing audit types, the new audit type will be able to\n```","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e19216ed137abcd0f5e8eada33e9f614a8b56bd9","unresolved":true,"context_lines":[{"line_number":82,"context_line":"Key Components"},{"line_number":83,"context_line":"--------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. **New Audit Type: STAGE**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"   A new ``STAGE`` audit type will be introduced. Stage audits cannot be"},{"line_number":88,"context_line":"   executed directly; they serve as building blocks for strategy pipelines."}],"source_content_type":"text/x-rst","patch_set":1,"id":"b590827c_ff6f6de2","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":28},"updated":"2025-12-05 12:38:03.000000000","message":"The idea is that all input parameters will be the same. But this audit would not accept start/end times, auto_trigger or interval. Since it is not going to run by itself. We could created a new Audit Object in without these parameters, but would need a different API, objects, etc.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"09dd66d316094ea5b91e96945d9e7050e74d20fb","unresolved":true,"context_lines":[{"line_number":82,"context_line":"Key Components"},{"line_number":83,"context_line":"--------------"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"1. **New Audit Type: STAGE**"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"   A new ``STAGE`` audit type will be introduced. Stage audits cannot be"},{"line_number":88,"context_line":"   executed directly; they serve as building blocks for strategy pipelines."}],"source_content_type":"text/x-rst","patch_set":1,"id":"f1eb9e56_ed9f0cd3","line":85,"range":{"start_line":85,"start_character":0,"end_line":85,"end_character":28},"in_reply_to":"b590827c_ff6f6de2","updated":"2025-12-05 18:28:20.000000000","message":"Also note that this Audit would have a different state machine, a much more simple one. So in the end it could be a different Object, that would be used by other pipeline-based audits (time-based/event-based audits). Or maybe it doesn\u0027t need any state at all, like a audit-template.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":92,"context_line":"   state will represent a fixed state of the stage audit, which can be directly"},{"line_number":93,"context_line":"   archived or deleted by the operator."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"2. **New Strategy and Goal**"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   A new goal and strategy will be created to represent strategy pipelines. The"},{"line_number":98,"context_line":"   goal ``strategy_pipeline`` will have the ``basic_pipeline`` as its default"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a23e7_ee80688f","line":95,"updated":"2025-12-08 21:27:10.000000000","message":"if we can us the exisng goals and stragies with teh new audit type i think this fails to meet the stated objective of being able to combine the existing stragies and goals.\n\ni dont think this logic holds together.\n\ni think if we take this approch you need 2 new auit types\na pipeline audit and pipline stage audit type.\n\nim not sure that is the right modelign either but your dscibing as a goal/strage in this section does not fit with my mental model of a goal ro stargy in teh context of the watcher api.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"26436d8bf4a6c2ad8ced7039bf0fda9f08eeb86a","unresolved":true,"context_lines":[{"line_number":92,"context_line":"   state will represent a fixed state of the stage audit, which can be directly"},{"line_number":93,"context_line":"   archived or deleted by the operator."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"2. **New Strategy and Goal**"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   A new goal and strategy will be created to represent strategy pipelines. The"},{"line_number":98,"context_line":"   goal ``strategy_pipeline`` will have the ``basic_pipeline`` as its default"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f33ebc4a_c807566c","line":95,"in_reply_to":"27ae9fe3_a11f4483","updated":"2025-12-09 14:09:06.000000000","message":"After some discussions, we came with the idea of extending the audit-template resource to also include input-parameters for the selected strategy. This would allow us to better use audit-template, for both Audits and a new Audit Pipeline.\nInstead of having a new Goal and strategies to handle audit pipelines, it also seems more resonable to propose a new resource/api for audit pipelines.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3fdce19bd65e774a69d75e27b21e1049ac722619","unresolved":true,"context_lines":[{"line_number":92,"context_line":"   state will represent a fixed state of the stage audit, which can be directly"},{"line_number":93,"context_line":"   archived or deleted by the operator."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"2. **New Strategy and Goal**"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   A new goal and strategy will be created to represent strategy pipelines. The"},{"line_number":98,"context_line":"   goal ``strategy_pipeline`` will have the ``basic_pipeline`` as its default"}],"source_content_type":"text/x-rst","patch_set":1,"id":"27ae9fe3_a11f4483","line":95,"in_reply_to":"9f6a23e7_ee80688f","updated":"2025-12-09 12:50:15.000000000","message":"correct, and I was expecting this reaction for this proposal. This proposal tries to not create new resources and reuse the code, but at the same time, it breaks some base concepts from watcher, like Goals/Strategies initial proposal.\nNot sure if the pipeline audit would fit as a new Audit type today, I think that we would need a new resource/api for it. Since we may want to still have ONESHOT/CONTINUOUS audit types working with the pipeline execution.\nSo the proposal may follow an Audit-Pipeline resource, which accepts multiple stage audits as input, and also support ONESHOT/CONTINUOUS/EVENT types.\nThe STAGE audit still may work as a new type of audit and resource the audit resource.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b94486bdaf2a550169115c9f089ddd84ed9d0b7b","unresolved":true,"context_lines":[{"line_number":101,"context_line":"   * Accept a list of STAGE audit UUIDs as input parameters"},{"line_number":102,"context_line":"   * Execute the strategies in the order"},{"line_number":103,"context_line":"   * Handle mutable cluster data model updates between strategies execution"},{"line_number":104,"context_line":"   * Handle multiple solutions from different strategies executions"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"3. **Mutable Cluster Data Model**"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"b8ae6eb9_91d8e902","line":104,"updated":"2025-12-08 21:27:10.000000000","message":"so wathcer shoudl not be calling its own api and unless we are goign to add a new action to create audit this does not fit with how audits and strages work.\n\nthe stragies are inputs to audits and the output of an audit is an action plan.\n\nfor your propsoal to work the output of and audit with audit_type\u003dONESHOT, goal\u003dstrategy_pipeline woudl have to be an action plan to define stage audits.\nyou woudl then have to review and accpat that action plan for them to created and run.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"3fdce19bd65e774a69d75e27b21e1049ac722619","unresolved":true,"context_lines":[{"line_number":101,"context_line":"   * Accept a list of STAGE audit UUIDs as input parameters"},{"line_number":102,"context_line":"   * Execute the strategies in the order"},{"line_number":103,"context_line":"   * Handle mutable cluster data model updates between strategies execution"},{"line_number":104,"context_line":"   * Handle multiple solutions from different strategies executions"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"3. **Mutable Cluster Data Model**"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"6e3af9d2_039d5e2d","line":104,"in_reply_to":"b8ae6eb9_91d8e902","updated":"2025-12-09 12:50:15.000000000","message":"the original idea was to have a handler that calls strategies and process the outputs, in a single execution, and not multiple calls of its api. This still can be implemented, but this handler seems to fits better as a new Audit Handler instead, which can execute multiple strategy algorithms and process the mutable model.","commit_id":"e7019b42ae429b38a0b3778d7fd5022078c2d217"}],"specs/2026.2/approved/audit-pipeline.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"386d09523a1ad0faa4af63528cb74043d7c77abd","unresolved":true,"context_lines":[{"line_number":30,"context_line":"may need to migrate workloads from specific hosts and then rebalance workloads,"},{"line_number":31,"context_line":"or to save energy, consolidate nodes and redistribute workloads optimally."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"},{"line_number":34,"context_line":"---------"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"As a cloud operator, I need to migrate the workload from specific hosts for a"}],"source_content_type":"text/x-rst","patch_set":6,"id":"694bb00a_7a4ba5db","line":33,"in_reply_to":"e81537f5_bb77c0ba","updated":"2026-02-25 19:58:05.000000000","message":"not in the usecase section. but that would not be bad to add later","commit_id":"70a06027f951986cd0a6aed4424380227190822c"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"8a0ea9465f5049dac3e402f4fd5bab779936a02c","unresolved":true,"context_lines":[{"line_number":96,"context_line":"     the cluster data model and the metric data cache between each stage, so"},{"line_number":97,"context_line":"     that the next stage can be executed based on the expected state of the"},{"line_number":98,"context_line":"     cluster after the previous stage."},{"line_number":99,"context_line":"   * Decouple the resource from the trigger, with the addition of a new"},{"line_number":100,"context_line":"     AuditTrigger resource, which will support all current Audit trigger types"},{"line_number":101,"context_line":"     and states, and will allow in the future, multiple triggers to be"},{"line_number":102,"context_line":"     associated to the same Audit Pipeline resource."}],"source_content_type":"text/x-rst","patch_set":6,"id":"9a2040ef_20208671","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":71},"updated":"2026-03-02 18:25:15.000000000","message":"Decoupling resource from the trigger can be more challenging and we should discuss if isn\u0027t better to have another spec to cover this functionality","commit_id":"70a06027f951986cd0a6aed4424380227190822c"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b5c6efcc0ca6d4235b479ad325c36d29b67f2a97","unresolved":false,"context_lines":[{"line_number":96,"context_line":"     the cluster data model and the metric data cache between each stage, so"},{"line_number":97,"context_line":"     that the next stage can be executed based on the expected state of the"},{"line_number":98,"context_line":"     cluster after the previous stage."},{"line_number":99,"context_line":"   * Decouple the resource from the trigger, with the addition of a new"},{"line_number":100,"context_line":"     AuditTrigger resource, which will support all current Audit trigger types"},{"line_number":101,"context_line":"     and states, and will allow in the future, multiple triggers to be"},{"line_number":102,"context_line":"     associated to the same Audit Pipeline resource."}],"source_content_type":"text/x-rst","patch_set":6,"id":"451b1a33_129ea041","line":99,"range":{"start_line":99,"start_character":0,"end_line":99,"end_character":71},"in_reply_to":"9a2040ef_20208671","updated":"2026-04-29 12:47:52.000000000","message":"Done","commit_id":"70a06027f951986cd0a6aed4424380227190822c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"386d09523a1ad0faa4af63528cb74043d7c77abd","unresolved":false,"context_lines":[{"line_number":261,"context_line":"  support additional processing to propose a unified solution for a given use"},{"line_number":262,"context_line":"  case."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Data model impact"},{"line_number":265,"context_line":"-----------------"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"``Audit Template Extension``"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fc208aa5_cfdc7209","line":264,"in_reply_to":"2a576b0e_cf5d0b43","updated":"2026-02-25 19:58:05.000000000","message":"no this is overkill for the sepc","commit_id":"70a06027f951986cd0a6aed4424380227190822c"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Cloud operators may need to combine optimization strategies to achieve their"},{"line_number":29,"context_line":"operational goals. For example, for maintenance purposes, an operator"},{"line_number":30,"context_line":"may need to migrate workloads from specific hosts and then rebalance workloads,"},{"line_number":31,"context_line":"or to save energy, consolidate nodes and redistribute workloads optimally."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":7,"id":"e451ce1d_61b45241","line":30,"in_reply_to":"549871f9_9a574e02","updated":"2026-04-07 20:01:45.000000000","message":"\u003e Typo \u0027metric chache\u0027 in commit message should be \u0027metric cache\u0027\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.9\n\u003e \n\u003e **Impact**: Typographical error in specification document reduces professionalism and may cause confusion for implementers.\n\u003e \n\u003e **Suggestion**:\n\u003e Fix typo \u0027metric chache\u0027 to \u0027metric cache\u0027 on line 30 (also present in commit message body).","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":79,"context_line":"2. ``New Audit Pipeline Resource``"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   A new ``Audit Pipeline`` resource will be introduced. Audit Pipeline works"},{"line_number":82,"context_line":"   similarly to the current Audit resource, supporting all existing audit"},{"line_number":83,"context_line":"   trigger (ONESHOT, CONTINUOUS, EVENT) and states (PENDING, ONGOING,"},{"line_number":84,"context_line":"   SUCCEEDED, FAILED, CANCELLED, SUSPENDED)."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"e4ecb242_258aefd9","line":82,"in_reply_to":"84849020_5690b22a","updated":"2026-04-07 20:01:45.000000000","message":"\u003e Specify behavior for CONTINUOUS and EVENT audit types with pipelines\n\u003e \n\u003e **Severity**: SUGGESTION | **Confidence**: 0.8\n\u003e \n\u003e **Benefit**: While ONESHOT is straightforward, CONTINUOUS and EVENT types with multi-stage pipelines have complex lifecycle implications that should be documented.\n\u003e \n\u003e **Recommendation**:\n\u003e Add subsection on \u0027Continuous and Event Pipeline Behavior\u0027 addressing: (1) Are all stages re-executed on each trigger? (2) How are in-flight pipelines handled when new triggers arrive? (3) Is the mutable CDM reset between iterations? (4) Recommended patterns for continuous optimization pipelines.\n\nI think that is clear that it works as Audits today, which means that every trigger will start the pipeline from scratch, not reusing any structure.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d93224824909361db1e16976c704d95a90637325","unresolved":true,"context_lines":[{"line_number":113,"context_line":"     solutions from all stages into a single action plan, providing simple"},{"line_number":114,"context_line":"     optimizations."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Cascade: runs each stage sequentially and simulates the expected state of"},{"line_number":117,"context_line":"     the cluster based on the previous stage solution, including metrics cache"},{"line_number":118,"context_line":"     updates. It will merge the solutions from all stages into a single action"},{"line_number":119,"context_line":"     plan, providing optimization and reducing the number of actions to be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"c3d22732_58a2d6ca","line":116,"in_reply_to":"67609d0f_02c2c259","updated":"2026-03-27 12:14:45.000000000","message":"Not really. The state is handled at the Audit Pipeline level and if anything fails in the middle no ActionPlan is created and the Audit Pipeline will be set to FAILED.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":113,"context_line":"     solutions from all stages into a single action plan, providing simple"},{"line_number":114,"context_line":"     optimizations."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"   * Cascade: runs each stage sequentially and simulates the expected state of"},{"line_number":117,"context_line":"     the cluster based on the previous stage solution, including metrics cache"},{"line_number":118,"context_line":"     updates. It will merge the solutions from all stages into a single action"},{"line_number":119,"context_line":"     plan, providing optimization and reducing the number of actions to be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"adad5dbc_38108c6b","line":116,"in_reply_to":"c3d22732_58a2d6ca","updated":"2026-04-07 20:01:45.000000000","message":"Right, as Audit works today, if one stratagy fails, the Audit is set to Failed. Same is valid for Audit Pipeline. There is no rollback or shared CDM between executions.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":124,"context_line":"   will be the main focus of this specification. The Composite execution mode"},{"line_number":125,"context_line":"   may be added in the current one or in future implementations."},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   The Pipeline Handler will manage CDM mutation between stages depending on"},{"line_number":130,"context_line":"   the execution mode selected. In Cascade execution mode, before each"}],"source_content_type":"text/x-rst","patch_set":7,"id":"de284045_122aedde","line":127,"in_reply_to":"ccbf793a_6210594b","updated":"2026-04-07 20:01:45.000000000","message":"\u003e Mutable Cluster Data Model simulation limitations are underspecified\n\u003e \n\u003e **Severity**: WARNING | **Confidence**: 0.8\n\u003e \n\u003e **Impact**: The note mentions some actions cannot be simulated but does not enumerate which action types are supported vs. ignored, making it difficult to predict pipeline behavior.\n\u003e \n\u003e **Suggestion**:\n\u003e Create explicit table or list of: (1) Action types that are fully simulated (migrate with destination), (2) Action types partially simulated (migrate without destination), (3) Action types ignored in CDM updates, (4) Expected behavior when unsupported actions are encountered.\n\nThese full analysis was not made yet, but the most important actions for the use case are expected to work. A more detailed documentation will list the supported and unsupported scenarios.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d93224824909361db1e16976c704d95a90637325","unresolved":true,"context_lines":[{"line_number":139,"context_line":"   still be added to the final action plan."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. note::"},{"line_number":142,"context_line":"   Some strategies fetch data directly from service clients (e.g., Nova,"},{"line_number":143,"context_line":"   Cinder) instead of using the cluster data model, which may invalidate"},{"line_number":144,"context_line":"   simulated states. These strategies will require additional changes to"},{"line_number":145,"context_line":"   properly function with the Audit Pipeline Cascade execution mode."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"5. ``Metric Data Cache``"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"44acb49f_dd605fdb","line":145,"range":{"start_line":142,"start_character":3,"end_line":145,"end_character":68},"updated":"2026-03-27 12:14:45.000000000","message":"IMO that\u0027s a bug on those and yep, we should fix it anyway. BTW, it\u0027d be good to have that policy in the architecture or contribution guide of the doc (unrelated to this spec).","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8aea9eef5fed07c1f9dab55a11e3eed138406fdd","unresolved":true,"context_lines":[{"line_number":139,"context_line":"   still be added to the final action plan."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. note::"},{"line_number":142,"context_line":"   Some strategies fetch data directly from service clients (e.g., Nova,"},{"line_number":143,"context_line":"   Cinder) instead of using the cluster data model, which may invalidate"},{"line_number":144,"context_line":"   simulated states. These strategies will require additional changes to"},{"line_number":145,"context_line":"   properly function with the Audit Pipeline Cascade execution mode."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"5. ``Metric Data Cache``"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"f78a5102_106d678e","line":145,"range":{"start_line":142,"start_character":3,"end_line":145,"end_character":68},"in_reply_to":"44acb49f_dd605fdb","updated":"2026-03-27 17:10:25.000000000","message":"+1","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":139,"context_line":"   still be added to the final action plan."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":".. note::"},{"line_number":142,"context_line":"   Some strategies fetch data directly from service clients (e.g., Nova,"},{"line_number":143,"context_line":"   Cinder) instead of using the cluster data model, which may invalidate"},{"line_number":144,"context_line":"   simulated states. These strategies will require additional changes to"},{"line_number":145,"context_line":"   properly function with the Audit Pipeline Cascade execution mode."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"5. ``Metric Data Cache``"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"61884fc9_b34b2e78","line":145,"range":{"start_line":142,"start_character":3,"end_line":145,"end_character":68},"in_reply_to":"f78a5102_106d678e","updated":"2026-04-07 20:01:45.000000000","message":"I will amend to make clear that is out of the scope of this spec.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d93224824909361db1e16976c704d95a90637325","unresolved":true,"context_lines":[{"line_number":144,"context_line":"   simulated states. These strategies will require additional changes to"},{"line_number":145,"context_line":"   properly function with the Audit Pipeline Cascade execution mode."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"5. ``Metric Data Cache``"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"   The metric data cache will store resource metrics retrieved by strategies"},{"line_number":150,"context_line":"   within the same pipeline or by the Pipeline Handler to simulate the mutable"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a0d7eacc_a48d05a2","line":147,"in_reply_to":"3807892a_dc9e0c86","updated":"2026-03-27 12:14:45.000000000","message":"iiuc the lifecycle of the cache is tied to the audit pipeline (or audit if we also leverage if for audits). Will be created as part of the audit pipeline and deleted when finishes. I don\u0027t think we need a mechanism to manage eviction, purge or cache invalidation at this point.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8aea9eef5fed07c1f9dab55a11e3eed138406fdd","unresolved":true,"context_lines":[{"line_number":144,"context_line":"   simulated states. These strategies will require additional changes to"},{"line_number":145,"context_line":"   properly function with the Audit Pipeline Cascade execution mode."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"5. ``Metric Data Cache``"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"   The metric data cache will store resource metrics retrieved by strategies"},{"line_number":150,"context_line":"   within the same pipeline or by the Pipeline Handler to simulate the mutable"}],"source_content_type":"text/x-rst","patch_set":7,"id":"e6e93941_b1a41af3","line":147,"in_reply_to":"a0d7eacc_a48d05a2","updated":"2026-03-27 17:10:25.000000000","message":"its trigging on the word Cache since caches typicly have a indepent lifecycle form operatoin that usese them\n\nin this case its less of a cache in that sense and more a internal data stcucture  of the pipeline.\n\nwe cloud note that explcity that this is an inmemory cache in the pipeline object that will not be presited to the db.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":144,"context_line":"   simulated states. These strategies will require additional changes to"},{"line_number":145,"context_line":"   properly function with the Audit Pipeline Cascade execution mode."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"5. ``Metric Data Cache``"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"   The metric data cache will store resource metrics retrieved by strategies"},{"line_number":150,"context_line":"   within the same pipeline or by the Pipeline Handler to simulate the mutable"}],"source_content_type":"text/x-rst","patch_set":7,"id":"d1b02bf0_9b04bec4","line":147,"in_reply_to":"e6e93941_b1a41af3","updated":"2026-04-07 20:01:45.000000000","message":"Ack, maybe it isn\u0027t clear enough in the spec that the cache lifecycle end with the audit pipeline execution. So makes sense to add that here. I still would like to continue with this naming too.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":168,"context_line":"   datasource API calls when calculating solutions. Its initial implementation"},{"line_number":169,"context_line":"   can be made without any Audit Pipeline resource proposed in this spec."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"6. ``Pipeline Planner``"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"   A new planner will be created to optimize and combine all solutions"},{"line_number":174,"context_line":"   into a single action plan. It will be responsible for:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"83d0a3cd_6463ff3b","line":171,"in_reply_to":"587bfabf_5a6631a1","updated":"2026-04-07 20:01:45.000000000","message":"Acknowledged","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d93224824909361db1e16976c704d95a90637325","unresolved":true,"context_lines":[{"line_number":168,"context_line":"   datasource API calls when calculating solutions. Its initial implementation"},{"line_number":169,"context_line":"   can be made without any Audit Pipeline resource proposed in this spec."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"6. ``Pipeline Planner``"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"   A new planner will be created to optimize and combine all solutions"},{"line_number":174,"context_line":"   into a single action plan. It will be responsible for:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"587bfabf_5a6631a1","line":171,"in_reply_to":"8315b90e_9560191c","updated":"2026-03-27 12:14:45.000000000","message":"out of the scope. ActionPlans execution is not modified by this spec. We will be able to SKIP actions in the plan, and behavior on failures is unaffected,","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":180,"context_line":"   * Maintain action dependencies and parallelization opportunities"},{"line_number":181,"context_line":"   * Concatenate efficacy indicators from all stages"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"7. ``Strategy Scopes``"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"   Individual scopes for each strategy can be defined in the Audit Template,"},{"line_number":186,"context_line":"   although not all Audit Pipeline modes will make use of all of them. For"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1e9507b6_667ca0e0","line":183,"in_reply_to":"ed8b8bc7_40607f24","updated":"2026-04-07 20:01:45.000000000","message":"The use of scopes for composite, or any other execution mode, will not be covered in the initial implementation, so it is not covered in details here.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":189,"context_line":"   solutions, while a Composite execution mode could consider individual"},{"line_number":190,"context_line":"   scopes for each stage."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"8. ``Efficacy Indicators``"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"   The efficacy indicators list for the final action plan will be the"},{"line_number":195,"context_line":"   concatenation of the efficacy indicators lists of all stages, where"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9992aeb8_399a23cb","line":192,"in_reply_to":"c9c64aae_07fb2bc3","updated":"2026-04-07 20:01:45.000000000","message":"Needs to be investigate one by one. Most of the indicators defined (if not all) are numeric indicators. Most of them are also counters, which would be summed at the end. Some other values could be replaced by its latest value in the pipeline.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3359641a22c77ddcf26530aa76daf3cde8e52f4f","unresolved":true,"context_lines":[{"line_number":316,"context_line":"* ``hostname``: String (nullable)"},{"line_number":317,"context_line":"* ``status_message``: String (nullable)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"``Action Plan Changes``"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Update the existing ``ActionPlan`` model to support references to Audit"},{"line_number":322,"context_line":"Pipeline:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"97b9f56f_2473b12f","line":319,"in_reply_to":"46031e41_9ea071f3","updated":"2026-04-10 09:52:24.000000000","message":"IIUC, currently in the action_plans table, strategy_id and audit_id are not nullable with ForeignKeyConstraint. I understand we are making those nullable and adding the new audit_pipeline_id also as nullable with foreignkey.\n\nI think it would be good to create a constraint to make sure that any new actionplan has one and only one of audit_id or audit_pipeline_id not null.\n\nI think those changes are doable via alembic migrations and will not require special migration procedure, right?","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":true,"context_lines":[{"line_number":316,"context_line":"* ``hostname``: String (nullable)"},{"line_number":317,"context_line":"* ``status_message``: String (nullable)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"``Action Plan Changes``"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Update the existing ``ActionPlan`` model to support references to Audit"},{"line_number":322,"context_line":"Pipeline:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"10095674_66e31ebf","line":319,"in_reply_to":"97b9f56f_2473b12f","updated":"2026-04-10 19:19:18.000000000","message":"ack, I think that makes sense, but I need to check how to implement it only. We may spend a bit more time in this table to figure it out the best way of implementing this, and avoid more breakable changes.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":316,"context_line":"* ``hostname``: String (nullable)"},{"line_number":317,"context_line":"* ``status_message``: String (nullable)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"``Action Plan Changes``"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"Update the existing ``ActionPlan`` model to support references to Audit"},{"line_number":322,"context_line":"Pipeline:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"46031e41_9ea071f3","line":319,"in_reply_to":"e26f743d_6ee9816a","updated":"2026-04-07 20:01:45.000000000","message":"All existing Action Plans will maintain their audit/strategy values after migration. Old clients would not receive a list of action plans from audit pipelines (with nullable strategy_id) based on the microversion requested. Adding this as a note in this section.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":353,"context_line":"``default_parameters`` field, which may not include other new APIs defined"},{"line_number":354,"context_line":"in this spec."},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"``Audit Pipeline - New Resource APIs``"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"Create Audit Pipeline:"},{"line_number":359,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"8d7c95a5_33155256","line":356,"in_reply_to":"82574a84_24cca2ae","updated":"2026-04-07 20:01:45.000000000","message":"Not sure, it would be nice, but also extend a lot in the spec.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"d93224824909361db1e16976c704d95a90637325","unresolved":true,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Update Audit Pipeline:"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"* Method: PATCH"},{"line_number":393,"context_line":"* URL: ``/v1/audit_pipelines/{uuid}``"},{"line_number":394,"context_line":"* Normal response: 200 OK"},{"line_number":395,"context_line":"* Error responses: 400 Bad Request, 404 Not Found, 409 Conflict"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"Delete Audit Pipeline:"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"14a2cb28_c18daf20","line":395,"range":{"start_line":392,"start_character":0,"end_line":395,"end_character":63},"updated":"2026-03-27 12:14:45.000000000","message":"It may be good to limit the fields of the Audit Pipeline that we will allow to modify. i.e. only the interval and time related parameters, but not the type, execution_mode or stages. I think for those case it\u0027d be better to remove and create a new one or history of ActionPlans may be missleding.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":true,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Update Audit Pipeline:"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"* Method: PATCH"},{"line_number":393,"context_line":"* URL: ``/v1/audit_pipelines/{uuid}``"},{"line_number":394,"context_line":"* Normal response: 200 OK"},{"line_number":395,"context_line":"* Error responses: 400 Bad Request, 404 Not Found, 409 Conflict"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"Delete Audit Pipeline:"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"9c90deae_2a4eaa2c","line":395,"range":{"start_line":392,"start_character":0,"end_line":395,"end_character":63},"in_reply_to":"14a2cb28_c18daf20","updated":"2026-04-07 20:01:45.000000000","message":"True, not all fields are expected to be modified and this info is missing here. Going to update that in the next PS.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":false,"context_lines":[{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Update Audit Pipeline:"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"* Method: PATCH"},{"line_number":393,"context_line":"* URL: ``/v1/audit_pipelines/{uuid}``"},{"line_number":394,"context_line":"* Normal response: 200 OK"},{"line_number":395,"context_line":"* Error responses: 400 Bad Request, 404 Not Found, 409 Conflict"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"Delete Audit Pipeline:"},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"a3d7d58a_0a8927e9","line":395,"range":{"start_line":392,"start_character":0,"end_line":395,"end_character":63},"in_reply_to":"9c90deae_2a4eaa2c","updated":"2026-04-10 19:19:18.000000000","message":"Done","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8aea9eef5fed07c1f9dab55a11e3eed138406fdd","unresolved":true,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"A new API micro-version will be introduced to support Audit Pipeline."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"Security impact"},{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":7,"id":"a4c90d9d_bccc0b7e","line":406,"in_reply_to":"a2bd2b83_4510c5e7","updated":"2026-03-27 17:10:25.000000000","message":"this is fair. we do need to specify the api policy which in this case is simple\nall apis are curretly project scroped and admin only but we shoudl state that explciyt.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":true,"context_lines":[{"line_number":403,"context_line":""},{"line_number":404,"context_line":"A new API micro-version will be introduced to support Audit Pipeline."},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"Security impact"},{"line_number":407,"context_line":"---------------"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a18182a_07cdf142","line":406,"in_reply_to":"a4c90d9d_bccc0b7e","updated":"2026-04-10 19:19:18.000000000","message":"Added policy file and rules needs.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Notifications impact"},{"line_number":412,"context_line":"--------------------"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"New notifications will be introduced to notify the end user about the creation,"},{"line_number":415,"context_line":"update, deletion and state changes of Audit Pipeline."},{"line_number":416,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5b5c259e_c67acec3","line":413,"in_reply_to":"7bf7d04a_5de9d6cc","updated":"2026-04-07 20:01:45.000000000","message":"they are very similar to current audit notification, and will be properly documented afterwards.","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"c7d6d7ee9f74dfd20ce2896a4eb9f024ee54434f","unresolved":false,"context_lines":[{"line_number":420,"context_line":"Users will be able to define default parameters for Audit Templates, which may"},{"line_number":421,"context_line":"simplify the creation of Audits, depending on the use case."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"Performance Impact"},{"line_number":424,"context_line":"------------------"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"* The pipeline planner optimization phase adds computational overhead but"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7f6fda3d_10613a18","line":423,"in_reply_to":"5f84cc6b_eda67e1c","updated":"2026-04-07 20:01:45.000000000","message":"We still don\u0027t have those numbers","commit_id":"158eb3838a62a1a44b07fe09fff80e9b7ade6aeb"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":true,"context_lines":[{"line_number":76,"context_line":"     defined in the template. The default parameters can still be overridden"},{"line_number":77,"context_line":"     by the operator when creating an audit from the template."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"2. ``New Audit Pipeline Resource``"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   A new ``Audit Pipeline`` resource will be introduced. Audit Pipeline works"},{"line_number":82,"context_line":"   similarly to the current Audit resource, supporting all existing audit"}],"source_content_type":"text/x-rst","patch_set":8,"id":"cac67f83_ef0dad78","line":79,"in_reply_to":"ab744ed5_b648dfd9","updated":"2026-04-10 19:19:18.000000000","message":"Indeed, for this fist version of the feature, I\u0027m not expecting a pipeline with less than 2 stages, so at least a min value of 2 should be good to add. For a single stage pipeline, user can make use of the current Audit implementation.\nA maximum value of stages can aslo be a good thing to add, since big pipelines may affect too much the performance and their time to complete.","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"2fac6b44f19bd655e0caba6ac4582572a5f594d4","unresolved":true,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   The Pipeline Handler will manage CDM mutation between stages depending on"},{"line_number":130,"context_line":"   the execution mode selected. In Cascade execution mode, before each"},{"line_number":131,"context_line":"   stage (except the first), a copy of the CDM is updated based on the"},{"line_number":132,"context_line":"   previous stage\u0027s solution. Strategies will accept an optional pre-populated"}],"source_content_type":"text/x-rst","patch_set":8,"id":"117bb7e5_9b91949f","line":129,"updated":"2026-04-10 09:12:50.000000000","message":"based on the diagram from the next section, I understand this `Pipeline Handler` will be responsible from invoking the subsequent strategies and updating the  mutable model and metric cache between calls, is that correct? I think it might be useful to add a short description of it in this section","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":true,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   The Pipeline Handler will manage CDM mutation between stages depending on"},{"line_number":130,"context_line":"   the execution mode selected. In Cascade execution mode, before each"},{"line_number":131,"context_line":"   stage (except the first), a copy of the CDM is updated based on the"},{"line_number":132,"context_line":"   previous stage\u0027s solution. Strategies will accept an optional pre-populated"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ff6b4999_54452c1b","line":129,"in_reply_to":"117bb7e5_9b91949f","updated":"2026-04-10 19:19:18.000000000","message":"ack, It can be added as a new Item yes.","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"7ce70c6b72edff52749649a3e0ca40cc4f036e3a","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   The Pipeline Handler will manage CDM mutation between stages depending on"},{"line_number":130,"context_line":"   the execution mode selected. In Cascade execution mode, before each"},{"line_number":131,"context_line":"   stage (except the first), a copy of the CDM is updated based on the"},{"line_number":132,"context_line":"   previous stage\u0027s solution. Strategies will accept an optional pre-populated"}],"source_content_type":"text/x-rst","patch_set":8,"id":"0d2ece68_2f4d813f","line":129,"in_reply_to":"e88a63cc_40d5d94f","updated":"2026-05-06 15:59:06.000000000","message":"Acknowledged","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"b5c6efcc0ca6d4235b479ad325c36d29b67f2a97","unresolved":true,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"4. ``Mutable Cluster Data Model``"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"   The Pipeline Handler will manage CDM mutation between stages depending on"},{"line_number":130,"context_line":"   the execution mode selected. In Cascade execution mode, before each"},{"line_number":131,"context_line":"   stage (except the first), a copy of the CDM is updated based on the"},{"line_number":132,"context_line":"   previous stage\u0027s solution. Strategies will accept an optional pre-populated"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e88a63cc_40d5d94f","line":129,"in_reply_to":"ff6b4999_54452c1b","updated":"2026-04-29 12:47:52.000000000","message":"Actually the update of CDM and Cache depend on the execution mode selected. In the composite mode we  may not need to update CDM for instance.","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"3359641a22c77ddcf26530aa76daf3cde8e52f4f","unresolved":true,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"PATCH restrictions:"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"* The following fields are **updatable**: ``name``, ``state``, ``interval``,"},{"line_number":418,"context_line":"  ``auto_trigger``, ``start_time``, ``end_time``"},{"line_number":419,"context_line":"* The following fields **cannot be updated**:"},{"line_number":420,"context_line":"  ``execution_mode``, ``stages``, ``audit_type``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"43683f87_c4feb6c1","line":417,"range":{"start_line":417,"start_character":44,"end_line":417,"end_character":48},"updated":"2026-04-10 09:52:24.000000000","message":"LGTM, just a minor doubt about name. I\u0027m not entirely sure we should be able to change it. Anyway, not a big problem.","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":true,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"PATCH restrictions:"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"* The following fields are **updatable**: ``name``, ``state``, ``interval``,"},{"line_number":418,"context_line":"  ``auto_trigger``, ``start_time``, ``end_time``"},{"line_number":419,"context_line":"* The following fields **cannot be updated**:"},{"line_number":420,"context_line":"  ``execution_mode``, ``stages``, ``audit_type``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fd85633_a275b04d","line":417,"range":{"start_line":417,"start_character":44,"end_line":417,"end_character":48},"in_reply_to":"43683f87_c4feb6c1","updated":"2026-04-10 19:19:18.000000000","message":"ack, correct, need to double check because Audit name cannot be update IIRC.","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"2fac6b44f19bd655e0caba6ac4582572a5f594d4","unresolved":true,"context_lines":[{"line_number":492,"context_line":"  implementation of the Cascade execution mode."},{"line_number":493,"context_line":"* One of the proposed use cases will be tested to validate the proof of"},{"line_number":494,"context_line":"  concept."},{"line_number":495,"context_line":"* Additional changes may be proposed to this specification for the next cycle,"},{"line_number":496,"context_line":"  when the completed feature is expected to be implemented."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"``Phase 2: Audit Template Enhancement``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9b3b6b37_a466561e","line":495,"updated":"2026-04-10 09:12:50.000000000","message":"is this still accurate or a leftover from initial versions of the spec? do we plan to start the implementation in 2026.2 or defer it to 2027.1?","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"debc362f05c634e4426528d12b23a388125f2406","unresolved":true,"context_lines":[{"line_number":492,"context_line":"  implementation of the Cascade execution mode."},{"line_number":493,"context_line":"* One of the proposed use cases will be tested to validate the proof of"},{"line_number":494,"context_line":"  concept."},{"line_number":495,"context_line":"* Additional changes may be proposed to this specification for the next cycle,"},{"line_number":496,"context_line":"  when the completed feature is expected to be implemented."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"``Phase 2: Audit Template Enhancement``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"cf4921bb_f941bf81","line":495,"in_reply_to":"9b3b6b37_a466561e","updated":"2026-04-10 19:19:18.000000000","message":"you are correct, this is a leftover from gazpacho proposal, i will fix, thanks!","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"7ce70c6b72edff52749649a3e0ca40cc4f036e3a","unresolved":false,"context_lines":[{"line_number":492,"context_line":"  implementation of the Cascade execution mode."},{"line_number":493,"context_line":"* One of the proposed use cases will be tested to validate the proof of"},{"line_number":494,"context_line":"  concept."},{"line_number":495,"context_line":"* Additional changes may be proposed to this specification for the next cycle,"},{"line_number":496,"context_line":"  when the completed feature is expected to be implemented."},{"line_number":497,"context_line":""},{"line_number":498,"context_line":"``Phase 2: Audit Template Enhancement``"}],"source_content_type":"text/x-rst","patch_set":8,"id":"31e86d31_b909a631","line":495,"in_reply_to":"cf4921bb_f941bf81","updated":"2026-05-06 15:59:06.000000000","message":"Done","commit_id":"716cd71d3635a3b6c7541c87f98af33ffefda3c6"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":false,"context_lines":[{"line_number":76,"context_line":"     defined in the template. The default parameters can still be overridden"},{"line_number":77,"context_line":"     by the operator when creating an audit from the template."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"2. ``New Audit Pipeline Resource``"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"   A new ``Audit Pipeline`` resource will be introduced. Audit Pipeline works"},{"line_number":82,"context_line":"   similarly to the current Audit resource, supporting all existing audit"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9d1b5951_82ec5d01","line":79,"in_reply_to":"2b100c85_8030abb2","updated":"2026-04-29 14:27:07.000000000","message":"Actually, the doc mentions the mutable cdm and caches are not reused even for the same resource, as in continuous audits.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":false,"context_lines":[{"line_number":150,"context_line":"   documentation shall list the supported and unsupported strategies and"},{"line_number":151,"context_line":"   actions."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. note::"},{"line_number":154,"context_line":"   Some strategies fetch data directly from service clients (e.g., Nova,"},{"line_number":155,"context_line":"   Cinder) instead of using the cluster data model, which may invalidate"},{"line_number":156,"context_line":"   simulated states. These strategies will require additional changes to"}],"source_content_type":"text/x-rst","patch_set":9,"id":"b6d0734e_7be5cf87","line":153,"in_reply_to":"83e2de09_d6f48ee9","updated":"2026-04-29 14:27:07.000000000","message":"That\u0027s separated issue, and considered a bug to be fixed. Out of the scope of the spec.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01e4d585bacd88ee8c798debe4760f7b56e9084a","unresolved":false,"context_lines":[{"line_number":324,"context_line":"* ``name``: String (nullable)"},{"line_number":325,"context_line":"* ``execution_mode``: String (CASCADE, COMPOSITE)"},{"line_number":326,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":327,"context_line":"* ``stages``: List of Audit Template UUIDs (minimum 2, maximum defined by"},{"line_number":328,"context_line":"  configuration option ``max_pipeline_stages``, defaults to 5)"},{"line_number":329,"context_line":"* ``audit_type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":330,"context_line":"* ``interval``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d537ff9a_e0ecfbcc","line":327,"in_reply_to":"7f628ca7_a95b3c91","updated":"2026-05-05 14:57:56.000000000","message":"Done","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":true,"context_lines":[{"line_number":324,"context_line":"* ``name``: String (nullable)"},{"line_number":325,"context_line":"* ``execution_mode``: String (CASCADE, COMPOSITE)"},{"line_number":326,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":327,"context_line":"* ``stages``: List of Audit Template UUIDs (minimum 2, maximum defined by"},{"line_number":328,"context_line":"  configuration option ``max_pipeline_stages``, defaults to 5)"},{"line_number":329,"context_line":"* ``audit_type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":330,"context_line":"* ``interval``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7f628ca7_a95b3c91","line":327,"in_reply_to":"cdd443e4_c46f107a","updated":"2026-04-29 19:17:31.000000000","message":"Agreed, in composite mode can even be the same goal/strategy but with different scopes. I prefer to let this open and we can discuss in the implementation.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":324,"context_line":"* ``name``: String (nullable)"},{"line_number":325,"context_line":"* ``execution_mode``: String (CASCADE, COMPOSITE)"},{"line_number":326,"context_line":"* ``state``: String (PENDING, ONGOING, SUCCEEDED, FAILED, CANCELLED, SUSPENDED)"},{"line_number":327,"context_line":"* ``stages``: List of Audit Template UUIDs (minimum 2, maximum defined by"},{"line_number":328,"context_line":"  configuration option ``max_pipeline_stages``, defaults to 5)"},{"line_number":329,"context_line":"* ``audit_type``: String (ONESHOT, CONTINUOUS, EVENT)"},{"line_number":330,"context_line":"* ``interval``: String (nullable)"}],"source_content_type":"text/x-rst","patch_set":9,"id":"cdd443e4_c46f107a","line":327,"in_reply_to":"ebe5c934_7b8956ae","updated":"2026-04-29 14:27:07.000000000","message":"We don\u0027t want to validate content of stages in code to keep the feature usage open to users cases.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":true,"context_lines":[{"line_number":351,"context_line":"  strategy audits will continue to be supported; this change only affects"},{"line_number":352,"context_line":"  the action plan data model."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"A check constraint can be added to ensure data integrity: exactly one of"},{"line_number":355,"context_line":"``audit_id`` or ``audit_pipeline_id`` must be set (both cannot be null, and"},{"line_number":356,"context_line":"both cannot be set simultaneously). This ensures that every action plan is"},{"line_number":357,"context_line":"associated with either an Audit or an Audit Pipeline, but not both."}],"source_content_type":"text/x-rst","patch_set":9,"id":"c967a84d_a827cba2","line":354,"in_reply_to":"55d2e301_90489455","updated":"2026-04-29 19:17:31.000000000","message":"ack, we don\u0027t need to provide this details here, can be discussed during the review.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":351,"context_line":"  strategy audits will continue to be supported; this change only affects"},{"line_number":352,"context_line":"  the action plan data model."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"A check constraint can be added to ensure data integrity: exactly one of"},{"line_number":355,"context_line":"``audit_id`` or ``audit_pipeline_id`` must be set (both cannot be null, and"},{"line_number":356,"context_line":"both cannot be set simultaneously). This ensures that every action plan is"},{"line_number":357,"context_line":"associated with either an Audit or an Audit Pipeline, but not both."}],"source_content_type":"text/x-rst","patch_set":9,"id":"55d2e301_90489455","line":354,"in_reply_to":"88503f98_821313be","updated":"2026-04-29 14:27:07.000000000","message":"I\u0027d say existing content is enough. Specially thinking that the current content of the table is backwards compatible with the new constraint.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01e4d585bacd88ee8c798debe4760f7b56e9084a","unresolved":false,"context_lines":[{"line_number":351,"context_line":"  strategy audits will continue to be supported; this change only affects"},{"line_number":352,"context_line":"  the action plan data model."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"A check constraint can be added to ensure data integrity: exactly one of"},{"line_number":355,"context_line":"``audit_id`` or ``audit_pipeline_id`` must be set (both cannot be null, and"},{"line_number":356,"context_line":"both cannot be set simultaneously). This ensures that every action plan is"},{"line_number":357,"context_line":"associated with either an Audit or an Audit Pipeline, but not both."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ed6e543_543c60d8","line":354,"in_reply_to":"c967a84d_a827cba2","updated":"2026-05-05 14:57:56.000000000","message":"Done","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":382,"context_line":"        }"},{"line_number":383,"context_line":"    }"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"A new API micro-version will be introduced to support the new"},{"line_number":386,"context_line":"``default_parameters`` field, which may not include other new APIs defined"},{"line_number":387,"context_line":"in this spec."},{"line_number":388,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5334d09c_48516482","line":385,"in_reply_to":"51f6f84f_90852fae","updated":"2026-04-29 14:27:07.000000000","message":"No need to define in the spec","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        }"},{"line_number":383,"context_line":"    }"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"A new API micro-version will be introduced to support the new"},{"line_number":386,"context_line":"``default_parameters`` field, which may not include other new APIs defined"},{"line_number":387,"context_line":"in this spec."},{"line_number":388,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"e89513be_4d8cf49b","line":385,"in_reply_to":"5334d09c_48516482","updated":"2026-04-29 19:17:31.000000000","message":"Done","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":true,"context_lines":[{"line_number":446,"context_line":"* State updates must follow valid state machine transitions"},{"line_number":447,"context_line":"* Attempting to update immutable fields returns 400 Bad Request"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"Delete Audit Pipeline:"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Method: DELETE"},{"line_number":452,"context_line":"* URL: ``/v1/audit_pipelines/{uuid}``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5315f551_fae6f79b","line":449,"in_reply_to":"357fb970_b8eeb19b","updated":"2026-04-29 19:17:31.000000000","message":"Correct, it should behaves as Audit state machine, but I can also include this information here in my next PS","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01e4d585bacd88ee8c798debe4760f7b56e9084a","unresolved":true,"context_lines":[{"line_number":446,"context_line":"* State updates must follow valid state machine transitions"},{"line_number":447,"context_line":"* Attempting to update immutable fields returns 400 Bad Request"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"Delete Audit Pipeline:"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Method: DELETE"},{"line_number":452,"context_line":"* URL: ``/v1/audit_pipelines/{uuid}``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"14b46e31_c9247662","line":449,"in_reply_to":"5315f551_fae6f79b","updated":"2026-05-05 14:57:56.000000000","message":"Added state machine and acceptable states in PATCH and DELETE operations","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":446,"context_line":"* State updates must follow valid state machine transitions"},{"line_number":447,"context_line":"* Attempting to update immutable fields returns 400 Bad Request"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"Delete Audit Pipeline:"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Method: DELETE"},{"line_number":452,"context_line":"* URL: ``/v1/audit_pipelines/{uuid}``"}],"source_content_type":"text/x-rst","patch_set":9,"id":"357fb970_b8eeb19b","line":449,"in_reply_to":"63598911_f8c212ff","updated":"2026-04-29 14:27:07.000000000","message":"This is a valid point. The spec mentions that Audit Pipelines have similar states as Audits so I expect the same state transitions as Audits https://docs.openstack.org/watcher/latest/architecture.html . Only Audit Pipelines in SUCCEEDED, FAILED, CANCELLED and SUSPENDED can be Deleted.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":486,"context_line":"  increases the memory footprint by caching metric values during the audit"},{"line_number":487,"context_line":"  pipeline execution."},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"Other deployer impact"},{"line_number":490,"context_line":"---------------------"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":9,"id":"4c52ad01_c33e67a5","line":489,"in_reply_to":"8654d2b8_f45b46be","updated":"2026-04-29 14:27:07.000000000","message":"Watcher will provide safe defaults. The new option in the config will be automatically added to watcher docs in watcher.conf.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"None"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"Developer impact"},{"line_number":495,"context_line":"----------------"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":9,"id":"10a22634_31ea29f0","line":494,"in_reply_to":"0aa27b39_79253be8","updated":"2026-04-29 14:27:07.000000000","message":"That\u0027s described in the entire spec, no need to add it here, imo.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":true,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"None"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"Developer impact"},{"line_number":495,"context_line":"----------------"},{"line_number":496,"context_line":""},{"line_number":497,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":9,"id":"22f96c0b_2be2bc3e","line":494,"in_reply_to":"10a22634_31ea29f0","updated":"2026-04-29 19:17:31.000000000","message":"Ack, I think that I can add something in this section, but the proposed changes should not affect third-party plugins as long as they use the correct interfaces :)","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"b8b0956fdc786ecf53dd8b2527e6239a9cb5a218","unresolved":true,"context_lines":[{"line_number":557,"context_line":"* Update python-watcherclient with Audit Pipeline commands"},{"line_number":558,"context_line":"* Add unit tests for all new components"},{"line_number":559,"context_line":"* Add tempest scenario tests for full pipeline audit flow"},{"line_number":560,"context_line":"* Update documentation"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":9,"id":"ee27f204_180c0848","line":560,"range":{"start_line":560,"start_character":0,"end_line":560,"end_character":2},"updated":"2026-04-29 14:27:07.000000000","message":"We want to mention adding support in watcher-dashboard?","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"01e4d585bacd88ee8c798debe4760f7b56e9084a","unresolved":false,"context_lines":[{"line_number":557,"context_line":"* Update python-watcherclient with Audit Pipeline commands"},{"line_number":558,"context_line":"* Add unit tests for all new components"},{"line_number":559,"context_line":"* Add tempest scenario tests for full pipeline audit flow"},{"line_number":560,"context_line":"* Update documentation"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":9,"id":"d175ea14_98497e8f","line":560,"range":{"start_line":560,"start_character":0,"end_line":560,"end_character":2},"in_reply_to":"088d5d81_a569761b","updated":"2026-05-05 14:57:56.000000000","message":"Done","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"e99cfeb4ca7c4f27b92a25062c58a9f6ab384cfd","unresolved":true,"context_lines":[{"line_number":557,"context_line":"* Update python-watcherclient with Audit Pipeline commands"},{"line_number":558,"context_line":"* Add unit tests for all new components"},{"line_number":559,"context_line":"* Add tempest scenario tests for full pipeline audit flow"},{"line_number":560,"context_line":"* Update documentation"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":9,"id":"088d5d81_a569761b","line":560,"range":{"start_line":560,"start_character":0,"end_line":560,"end_character":2},"in_reply_to":"533af0f7_1c670103","updated":"2026-04-30 07:53:37.000000000","message":"works for me. I agree to not make this spec to depends on the watcher-dashboard part.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"},{"author":{"_account_id":30002,"name":"Douglas Viroel","email":"viroel@gmail.com","username":"dviroel"},"change_message_id":"e3e604769f00c2f555f51a5708cd925e6b4b7136","unresolved":true,"context_lines":[{"line_number":557,"context_line":"* Update python-watcherclient with Audit Pipeline commands"},{"line_number":558,"context_line":"* Add unit tests for all new components"},{"line_number":559,"context_line":"* Add tempest scenario tests for full pipeline audit flow"},{"line_number":560,"context_line":"* Update documentation"},{"line_number":561,"context_line":""},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":9,"id":"533af0f7_1c670103","line":560,"range":{"start_line":560,"start_character":0,"end_line":560,"end_character":2},"in_reply_to":"ee27f204_180c0848","updated":"2026-04-29 19:17:31.000000000","message":"It is not planned to be implemented as part of this spec, which means that after implementing the feature i would like to move this spec to *implemented* even without the dashboard piece.\nI think that we can have a new spec or a blueprint for the dashboard effort.\nBut if you folks disagree with that approach, I can add it here too.","commit_id":"063ef86d0a7413f502242f305ee18a258b85e893"}]}
