jason810496 opened a new issue, #71364:
URL: https://github.com/apache/airflow/issues/71364

   ### Context
   
   Follow-up from 
https://github.com/apache/airflow/pull/69757#discussion_r3728203900.
   
   That PR adds an optional per-task `_arg_bindings` property to the serialized 
Dag. Review split on whether an additive field warrants a `SERIALIZER_VERSION` 
bump, which surfaced the real gap: there is no written rule for when the 
version changes, so every PR touching serialization re-litigates it.
   
   ### Problem
   
   `SerializedDAG.SERIALIZER_VERSION` is `3` today, and `from_dict` chains 
`conversion_v1_to_v2` / `conversion_v2_to_v3` for older blobs. But:
   
   - No documented rule says when a bump is required, so "is this additive 
enough to skip it?" is argued case by case.
   - `conversion_v2_to_v3` is a comment plus `ser_obj["__version"] = 3` — it 
carries no conversion, so the number does not yet signal anything a reader can 
act on.
   - In Airflow 2 the version stayed at `1` for the whole major, so it never 
carried information. Repeating that in Airflow 3 wastes the mechanism.
   - `schema.json` is also weaker than it looks on the write path: 
`definitions.tasks` is `{"type": "array", "additionalProperties": {...}}`, and 
`additionalProperties` is inert for arrays, so `validate_schema` never checks 
task objects against `definitions.operator`. Any policy that leans on "the 
schema catches it" needs this fixed first.
   
   ### Scope
   
   Decide and document:
   
   1. What a bump *means* — a format-compat marker, or a promise that a 
`conversion_vN_to_vN+1` exists and does real work.
   2. Whether additive optional fields bump, or only removals / renames / 
semantic changes.
   3. What a bump obligates: conversion function, `from_dict` accept-list, 
`schema.json`, tests.
   4. How far back `from_dict` supports old versions, and when old conversions 
can be dropped.
   5. Whether to repair the inert `definitions.tasks` validation so 
`schema.json` is genuinely enforced.
   
   Record the outcome in-repo (contributing docs or a `serialized_objects.py` 
module docstring) so it stops being re-decided per PR.
   
   ### Acceptance criteria
   
   - [ ] Policy agreed and documented in-repo.
   - [ ] Version machinery in `serialized_objects.py` matches it.
   - [ ] `definitions.tasks` validation gap either fixed or split into its own 
issue.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to