Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
297 commits
Select commit Hold shift + click to select a range
bfedde9
Merge pull request #1173 from opsmill/stable
polmichel Jul 13, 2026
5e879b0
Merge pull request #1174 from opsmill/develop
polmichel Jul 13, 2026
a0803b9
feat(release): derive package version from git tags via hatch-vcs
fatih-acar Jul 10, 2026
2ee77a1
Merge pull request #1178 from opsmill/develop
infrahub-github-bot-app[bot] Jul 14, 2026
e27f5f0
Merge pull request #1177 from opsmill/stable
infrahub-github-bot-app[bot] Jul 14, 2026
b3f3912
Merge pull request #1179 from opsmill/develop
infrahub-github-bot-app[bot] Jul 14, 2026
aeaa5da
Merge pull request #1180 from opsmill/stable
infrahub-github-bot-app[bot] Jul 14, 2026
061d1d0
Merge pull request #1181 from opsmill/develop
infrahub-github-bot-app[bot] Jul 14, 2026
71323fd
Merge pull request #1182 from opsmill/stable
infrahub-github-bot-app[bot] Jul 14, 2026
0a40b07
docs(specs): add spec for SDK X-Priority request header (IHS-259)
dgarros Jul 10, 2026
dc71d07
docs(specs): add implementation plan for X-Priority header (IHS-259)
dgarros Jul 10, 2026
d23f4af
docs(specs): critique X-Priority spec/plan and apply refinements (IHS…
dgarros Jul 10, 2026
15c3abc
docs(specs): add dependency-ordered tasks for X-Priority header (IHS-…
dgarros Jul 10, 2026
0cc27ba
docs(specs): add spec/ask alignment check for X-Priority (IHS-259)
dgarros Jul 10, 2026
49d8109
chore(specs): mark T001 setup done (baseline 107 passed) [IHS-259]
dgarros Jul 11, 2026
ef329a0
feat(sdk): add Priority enum and Config.priority field [IHS-259]
dgarros Jul 11, 2026
bd8f32a
feat(sdk): emit X-Priority default header across transports [IHS-259]
dgarros Jul 11, 2026
84d61ba
test(sdk): assert no X-Priority header when unconfigured [IHS-259]
dgarros Jul 11, 2026
dfd0153
feat(sdk): add per-request priority override across client + node [IH…
dgarros Jul 11, 2026
8340e45
test(sdk): validate Config.priority accepts case-insensitive, rejects…
dgarros Jul 11, 2026
08cec2f
test(sdk): assert async/sync parity via priority resolution truth tab…
dgarros Jul 11, 2026
a8b963f
docs(sdk): docstrings, regenerated docs, and changelog for X-Priority…
dgarros Jul 11, 2026
578f8dd
fix(client): keep live auth header on relogin retry after priority me…
dgarros Jul 11, 2026
efadc96
test(sdk): cover node delete/update and all diff methods for priority…
dgarros Jul 11, 2026
7d82698
docs(specs): add opsmill implement report for X-Priority [IHS-259]
dgarros Jul 11, 2026
d54e38e
docs(sdk): regenerate SDK reference docs after rebase onto develop [I…
dgarros Jul 12, 2026
bfa085e
docs(specs): fix markdown lint in X-Priority critique doc [IHS-259]
dgarros Jul 12, 2026
8d9ce4c
chore: stop tracking .specify/feature.json [IHS-259]
dgarros Jul 12, 2026
0abf867
feat(sdk): thread priority through count and resource-pool peer fetch…
dgarros Jul 12, 2026
80f9aa2
docs(sdk): shrink changelog, fix contract/data-model, regenerate docs…
dgarros Jul 12, 2026
297502f
test(sdk): drop ty-ignore in Config.priority tests via dict[str, Any]…
dgarros Jul 12, 2026
98294d8
refactor(client): layer per-request header deltas over base headers […
dgarros Jul 14, 2026
162726f
chore(sdk): apply review nits — Priority import, docstrings, test cle…
dgarros Jul 14, 2026
432a99d
docs(sdk): regenerate SDK reference after rebase onto infrahub-develo…
dgarros Jul 14, 2026
8189087
Merge pull request #1167 from opsmill/dga/feat-x-priority-aa2nd
dgarros Jul 15, 2026
a2fee63
chore(ruff): adopt google docstring convention, enforce DOC102/DOC402
dgarros Jul 15, 2026
25cf939
Merge pull request #1183 from opsmill/develop
infrahub-github-bot-app[bot] Jul 15, 2026
f176345
chore(ruff): trim redundant comments around docstring convention config
dgarros Jul 16, 2026
3b385f4
feat(sdk): add task retry/cancel methods and expose available actions…
polmichel Jul 16, 2026
8c2c30f
feat(ctl): add `infrahubctl schema format` command
petercrocker Jul 19, 2026
3f724d2
refactor(ctl): use ruamel.yaml so schema format preserves comments
petercrocker Jul 19, 2026
7997dd3
feat: add IPAddress attribute kind support [INFP-551]
PhillSimonds Jul 19, 2026
9347074
Merge pull request #1184 from opsmill/dga/brain-doc-validate-jg0v6
dgarros Jul 20, 2026
5919fc4
ci(ctl): warn-only check for Infrahub JSON schema drift
petercrocker Jul 20, 2026
32dea57
fix(ctl): harden schema formatter against malformed sections and head…
petercrocker Jul 20, 2026
e5d7f1a
style(ctl): add blank line after last docstring section (ruff D413)
petercrocker Jul 20, 2026
170d0c1
Merge develop into schema-format-command
petercrocker Jul 20, 2026
0f1c3c0
docs: regenerate infrahubctl schema reference after develop merge
petercrocker Jul 20, 2026
607d778
fix(ctl): colour schema-format --diff via Rich style, not inline markup
petercrocker Jul 20, 2026
97fea86
Merge pull request #1194 from opsmill/stable
polmichel Jul 20, 2026
158ba25
Merge pull request #1198 from opsmill/develop
infrahub-github-bot-app[bot] Jul 20, 2026
b25c093
feat(sdk): expose task error and webhook delivery diagnostics (#1197)
polmichel Jul 21, 2026
68fb073
feat(ctl): add opt-in strip-defaults / sort / backfill flags to schem…
petercrocker Jul 21, 2026
f7f73d5
Merge pull request #1190 from opsmill/ipaddress-attribute-kind-infp-551
dgarros Jul 22, 2026
f9bbcd9
feat(client): carry request priority on RequestContext
dgarros Jul 16, 2026
522c870
refactor(priority): rename the middle tier NORMAL to MEDIUM
dgarros Jul 16, 2026
6722e43
perf(client): pass pagination offset and limit as GraphQL variables
Jul 23, 2026
05f8aba
feat(config): raise default rate_limit_max_retries from 5 to 10
Jul 24, 2026
c53ca2c
Merge pull request #1205 from opsmill/dga/feat-rate-limiting-api-zb38x
dgarros Jul 25, 2026
213cbec
feat(schema): generate user-facing write/read schema models [INFP-234]
dgarros Jul 3, 2026
a468662
feat(schema): offline write-contract validation + generated-model dri…
dgarros Jul 3, 2026
72d84c2
fix(schema): gate schema extensions through the write contract
dgarros Jul 3, 2026
ca901dd
refactor(schema): name generated models InfrahubSchema{Write,Read} + …
dgarros Jul 5, 2026
2b7a172
refactor(schema): validate against InfrahubSchemaWrite root instead o…
dgarros Jul 5, 2026
ecb646b
feat(schema): generate a typed ComputedAttribute model instead of dic…
dgarros Jul 5, 2026
af23c53
feat(schema): emit typed models for choices, parameters, and computed…
dgarros Jul 5, 2026
c0463b6
feat(schema): model generated attribute as a kind-discriminated union
dgarros Jul 5, 2026
5448c5d
feat(schema): add extensions to write model and profile/template read…
dgarros Jul 6, 2026
d4b2f19
feat(schema): type generated SDK schema fields with dedicated enums
dgarros Jul 6, 2026
c93e5a3
refactor(schema): back public SDK schema models with generated models…
dgarros Jul 6, 2026
392b75a
fix(schema): render generated enum-typed defaults as enum members
dgarros Jul 6, 2026
7e2321d
test(schema): suppress expected ty error for raw-string enum coercion…
dgarros Jul 7, 2026
6038db6
refactor(schema): move kind/hash onto generated read models [INFP-234]
dgarros Jul 7, 2026
7af6044
feat(schema): expose kind as a property on write schema nodes [INFP-234]
dgarros Jul 8, 2026
b02587f
chore(schema): regenerate SDK models and protocols after develop reba…
dgarros Jul 14, 2026
6a8de6b
fix(schema): normalize schema.load/check payloads to the write contra…
dgarros Jul 16, 2026
41b4ba2
Revert "normalize schema.load/check payloads to the write contract" […
dgarros Jul 16, 2026
b8d00e4
refactor(schema): address PR review on SDK schema models and tests [I…
dgarros Jul 22, 2026
bf9d0f9
refactor(schema): tolerate and drop extra fields on write/read models…
dgarros Jul 22, 2026
6e89520
docs(changelog): drop breaking label from SDK schema-models note [INF…
dgarros Jul 22, 2026
0e54e83
test(schema): skip IPAddress node tests pending backend attribute kin…
dgarros Jul 23, 2026
2692a06
fix(schema): require version on the generated write root [INFP-234]
dgarros Jul 24, 2026
973eaa9
chore(review): clarify schema model comments [INFP-234]
dgarros Jul 26, 2026
681b458
Merge pull request #1135 from opsmill/dga/user-schema-infp-234
dgarros Jul 27, 2026
b787d03
refactor(ctl): return an enum from schema-format helper; harden sort …
petercrocker Jul 29, 2026
52155dc
test(ctl): cover schema-format error paths and drift fetch/baseline IO
petercrocker Jul 29, 2026
31dbf19
fix(ctl): treat unparseable schema files as a per-file format error
petercrocker Jul 29, 2026
aa0cb26
Merge pull request #1189 from opsmill/schema-format-command
petercrocker Jul 30, 2026
c656727
Merge pull request #1221 from opsmill/develop
infrahub-github-bot-app[bot] Jul 30, 2026
204f169
feat(schema): add IPAddress to the generated attribute-kind models (#…
ajtmccarty Jul 31, 2026
0e909cc
feat: report the schema fields the write contract does not apply
dgarros Jul 31, 2026
83b52d2
fix: name a nested read-only field relative to its owner
dgarros Jul 31, 2026
c257f7c
refactor: look the read-only table up by class name alone
dgarros Aug 2, 2026
f9e28cf
Merge pull request #1223 from opsmill/dg-schema-load-extra-field-feed…
dgarros Aug 2, 2026
6d76a33
Merge branch 'stable' into 'develop' with resolved conflicts
ogenstad Aug 6, 2026
68aaa97
Merge pull request #1230 from opsmill/pog-stable-to-develop-20260806
ogenstad Aug 11, 2026
d3c987b
Merge pull request #1236 from opsmill/develop
infrahub-github-bot-app[bot] Aug 11, 2026
46e16db
Remove broken client.branch.diff_data() (#1229)
saltas888 Aug 11, 2026
3c833c6
Merge pull request #1238 from opsmill/stable
infrahub-github-bot-app[bot] Aug 11, 2026
c248995
Merge pull request #1239 from opsmill/develop
infrahub-github-bot-app[bot] Aug 12, 2026
1f846da
Merge pull request #1242 from opsmill/stable
ajtmccarty Aug 13, 2026
e609236
Merge pull request #1243 from opsmill/develop
infrahub-github-bot-app[bot] Aug 13, 2026
651e977
Merge pull request #1244 from opsmill/stable
infrahub-github-bot-app[bot] Aug 14, 2026
8f44e31
Merge pull request #1245 from opsmill/develop
infrahub-github-bot-app[bot] Aug 14, 2026
32fa981
Merge pull request #1246 from opsmill/stable
infrahub-github-bot-app[bot] Aug 14, 2026
4f78515
Merge pull request #1247 from opsmill/develop
infrahub-github-bot-app[bot] Aug 14, 2026
71e197c
feat: warn when a watch block is missing or incomplete in .infrahub.y…
ogenstad Aug 18, 2026
1f542f5
Merge pull request #1250 from opsmill/stable
ogenstad Aug 19, 2026
5a25f46
Merge pull request #1256 from opsmill/develop
infrahub-github-bot-app[bot] Aug 19, 2026
f210dde
Merge branch 'stable' into 'develop' with resolved conflicts
ogenstad Aug 20, 2026
a87df40
Merge pull request #1260 from opsmill/pog-stable-to-develop-20260820
ogenstad Aug 20, 2026
9a483d6
Merge pull request #1261 from opsmill/develop
infrahub-github-bot-app[bot] Aug 20, 2026
29fb29e
Merge pull request #1262 from opsmill/stable
ogenstad Aug 24, 2026
f65df4a
Merge pull request #1268 from opsmill/stable
ogenstad Aug 24, 2026
2c58b4b
chore(schema): add commit to the CoreGenericRepository protocol [IFC-…
ogenstad Aug 24, 2026
73899cb
Merge pull request #1267 from opsmill/develop
infrahub-github-bot-app[bot] Aug 24, 2026
9dbf5aa
Merge pull request #1272 from opsmill/pog-generic-repository-commit-I…
ogenstad Aug 25, 2026
6d4fb17
refactor(sdk): type group members access via _get_relationship_many (…
saltas888 Aug 26, 2026
b53d3a4
Merge pull request #1282 from opsmill/develop
infrahub-github-bot-app[bot] Aug 26, 2026
96acaa1
feat(protocols): support generating the SDK core protocols module [IF…
ogenstad Aug 26, 2026
0e11153
Merge pull request #1287 from opsmill/stable
infrahub-github-bot-app[bot] Aug 26, 2026
bbcb11a
Merge pull request #1288 from opsmill/develop
infrahub-github-bot-app[bot] Aug 27, 2026
49d47b8
feat(protocols): regenerate protocols with peer-typed relationships […
ogenstad Aug 28, 2026
99250d4
Merge pull request #1297 from opsmill/stable
ogenstad Aug 28, 2026
eb815c0
Merge pull request #1299 from opsmill/develop
infrahub-github-bot-app[bot] Aug 28, 2026
52f7c94
Merge pull request #1300 from opsmill/stable
infrahub-github-bot-app[bot] Aug 28, 2026
8ed76ea
Merge pull request #1301 from opsmill/develop
infrahub-github-bot-app[bot] Aug 28, 2026
7c9d15f
Merge pull request #1302 from opsmill/stable
infrahub-github-bot-app[bot] Aug 28, 2026
9b39ab4
chore(release): add release notes for 1.23.1
Aug 28, 2026
7bd5c94
ci: gate integration tests on unit-test success
ogenstad Aug 26, 2026
1f11b06
chore(release): add release notes for 1.23.1
Aug 28, 2026
de1ad7e
Merge pull request #1314 from opsmill/stable
infrahub-github-bot-app[bot] Sep 1, 2026
956c830
fix(packaging): correct declared dependencies and publish the tests e…
ogenstad Sep 2, 2026
546dc82
fix(packaging): split the testing extras and stop publishing testcont…
ogenstad Sep 2, 2026
ad71fb3
Merge pull request #1317 from opsmill/pog-testing-extras
ogenstad Sep 3, 2026
88e77c2
Merge remote-tracking branch 'origin/develop' into merge/develop-into…
polmichel Sep 4, 2026
2b66d9f
merge: resolve protocols.py by taking the regenerated core module
polmichel Sep 4, 2026
e912ca5
Merge pull request #1322 from opsmill/merge/develop-into-infrahub-dev…
polmichel Sep 4, 2026
2c921f5
Merge pull request #1327 from opsmill/stable
infrahub-github-bot-app[bot] Sep 6, 2026
9ddb834
Merge pull request #1329 from opsmill/develop
infrahub-github-bot-app[bot] Sep 7, 2026
cf4bcba
ci: test the declared dependency lower bounds and the install surface…
ogenstad Sep 7, 2026
59e1b44
chore(deps): upgrade ty to 0.0.74 (#1321)
ogenstad Sep 7, 2026
ac8a841
Merge pull request #1333 from opsmill/stable
infrahub-github-bot-app[bot] Sep 8, 2026
61197aa
Merge pull request #1335 from opsmill/develop
infrahub-github-bot-app[bot] Sep 8, 2026
784fb5d
chore(release): add release notes for 1.23.2
Sep 8, 2026
73bdb6b
fix(protocols): syncify all inherited bases with a Sync variant (#1331)
ogenstad Sep 9, 2026
21beff6
Merge pull request #1337 from opsmill/develop
ogenstad Sep 9, 2026
cd3db40
Merge pull request #1338 from opsmill/stable
ogenstad Sep 9, 2026
ff01ea4
Merge pull request #1339 from opsmill/develop
infrahub-github-bot-app[bot] Sep 9, 2026
5387c39
test: pin Rich colour and width so CLI-output tests stop failing outs…
saltas888 Sep 10, 2026
84d0cc8
Merge pull request #1343 from opsmill/stable
infrahub-github-bot-app[bot] Sep 10, 2026
008e81b
Merge pull request #1349 from opsmill/stable
infrahub-github-bot-app[bot] Sep 10, 2026
935dd2e
Merge pull request #1351 from opsmill/stable
infrahub-github-bot-app[bot] Sep 11, 2026
0dd9883
Merge develop into infrahub-develop
polmichel Sep 11, 2026
88be03b
test(meta): pin FORCE_COLOR="" semantics per Rich version instead of …
polmichel Sep 11, 2026
7f191f2
ci: hold ci-gate to the infrahub-develop-only dependency and install …
polmichel Sep 11, 2026
d6713b3
Merge pull request #1353 from opsmill/pmi-merge-develop-infrahub-develop
polmichel Sep 14, 2026
a805284
Merge pull request #1355 from opsmill/pmi-ci-lower-bounds-frozen-sync
polmichel Sep 14, 2026
0dcdd90
Merge pull request #1358 from opsmill/stable
infrahub-github-bot-app[bot] Sep 14, 2026
546530c
Merge pull request #1360 from opsmill/stable
infrahub-github-bot-app[bot] Sep 14, 2026
1734ee0
Merge develop into infrahub-develop
polmichel Sep 14, 2026
efe0a0d
merge: resolve pyproject.toml, port the rich 12.6 floor onto the rest…
polmichel Sep 14, 2026
79b1a00
merge: regenerate uv.lock after the pyproject resolution
polmichel Sep 14, 2026
075e0df
merge: align the rich upper-bound changelog fragment with the merged …
polmichel Sep 14, 2026
0f8935a
Merge pull request #1362 from opsmill/stable
infrahub-github-bot-app[bot] Sep 15, 2026
b75b44a
Merge pull request #1361 from opsmill/pmi-merge-develop-infrahub-deve…
polmichel Sep 15, 2026
3dc90ec
test: drop the pre-12.6 branch from the Rich rendering guard (#1364)
polmichel Sep 16, 2026
26acfed
Merge pull request #1367 from opsmill/stable
infrahub-github-bot-app[bot] Sep 16, 2026
02a0ba8
Merge pull request #1368 from opsmill/develop
infrahub-github-bot-app[bot] Sep 16, 2026
ff707a8
Merge pull request #1369 from opsmill/stable
infrahub-github-bot-app[bot] Sep 17, 2026
68f742b
Merge pull request #1370 from opsmill/develop
infrahub-github-bot-app[bot] Sep 17, 2026
15ca72f
Merge pull request #1376 from opsmill/stable
infrahub-github-bot-app[bot] Sep 20, 2026
3e47ec4
Merge pull request #1377 from opsmill/develop
infrahub-github-bot-app[bot] Sep 21, 2026
b724cb4
Merge pull request #1382 from opsmill/stable
infrahub-github-bot-app[bot] Sep 28, 2026
a27fda9
Merge pull request #1383 from opsmill/develop
infrahub-github-bot-app[bot] Sep 28, 2026
946b6f5
Merge pull request #1385 from opsmill/stable
infrahub-github-bot-app[bot] Oct 1, 2026
bd5c6e4
Merge pull request #1386 from opsmill/develop
infrahub-github-bot-app[bot] Oct 1, 2026
38e8f59
feat: typed exceptions for the server's error catalogue (#1266)
ogenstad Oct 6, 2026
1f4aff5
Merge pull request #1389 from opsmill/stable
infrahub-github-bot-app[bot] Oct 6, 2026
1a0de38
Merge pull request #1396 from opsmill/develop
infrahub-github-bot-app[bot] Oct 6, 2026
3fa07d2
fix: raise ValidationError for invalid object and menu files (#1397)
ogenstad Oct 6, 2026
0d75904
Add the rewrite record to the repository protocols
gmazoyer Oct 6, 2026
62f255a
feat: add the WORKER_TIMEOUT error code to the generated catalogue
ogenstad Oct 7, 2026
4327210
Add push state attributes to repository protocols
gmazoyer Oct 7, 2026
ec35a6e
Merge pull request #1406 from opsmill/stable
ogenstad Oct 7, 2026
3e4929c
Merge pull request #1410 from opsmill/develop
infrahub-github-bot-app[bot] Oct 7, 2026
2ac1179
Merge pull request #1401 from opsmill/gma-20261006-ifc-3284
gmazoyer Oct 7, 2026
aed8916
Merge branch 'infrahub-develop' into pog-worker-timeout-error-binding…
ogenstad Oct 8, 2026
1c3277b
chore: regenerate protocols for the number pool range kind (#1371)
polmichel Oct 8, 2026
1bd89c8
feat(schema): accept the number pool allocation_scope in the generate…
ajtmccarty Oct 8, 2026
7ed9b39
Merge pull request #1405 from opsmill/pog-worker-timeout-error-bindin…
ogenstad Oct 9, 2026
54b9890
Merge pull request #1416 from opsmill/stable
ogenstad Oct 14, 2026
2ca418f
Merge pull request #1419 from opsmill/develop
infrahub-github-bot-app[bot] Oct 14, 2026
be59e15
Merge pull request #1420 from opsmill/stable
infrahub-github-bot-app[bot] Oct 14, 2026
035d28a
Merge pull request #1421 from opsmill/develop
infrahub-github-bot-app[bot] Oct 14, 2026
13af0d2
Merge pull request #1400 from opsmill/gma-20261006-ifc-3313
gmazoyer Oct 14, 2026
b8efa53
Merge remote-tracking branch 'origin/infrahub-develop' into feature-n…
ajtmccarty Oct 14, 2026
305831a
Merge pull request #1412 from opsmill/feature-number-pools-1.12
ajtmccarty Oct 14, 2026
8a04839
fix(schema): leave number pool ranges unset in the write model when t…
polmichel Oct 15, 2026
583bc73
Merge pull request #1424 from opsmill/pmi-number-pool-write-ranges-un…
polmichel Oct 15, 2026
f244b65
feat(sdk): fetch only the named fields with only (#1423)
saltas888 Oct 19, 2026
89d078a
feat(client): send the W3C traceparent header when OpenTelemetry is i…
Oct 19, 2026
709e53f
Merge pull request #1433 from opsmill/stable
ogenstad Oct 20, 2026
1e63596
fix(client): send no trace context when OTEL_PROPAGATORS is invalid […
Oct 20, 2026
725adfe
Merge pull request #1438 from opsmill/develop
infrahub-github-bot-app[bot] Oct 20, 2026
5007af6
Merge pull request #1439 from opsmill/stable
infrahub-github-bot-app[bot] Oct 20, 2026
f48e57f
Merge pull request #1441 from opsmill/stable
infrahub-github-bot-app[bot] Oct 20, 2026
79997aa
fix(client): never import an OpenTelemetry API older than 1.33 [IFC-3…
Oct 20, 2026
8e3bafb
Merge pull request #1442 from opsmill/stable
infrahub-github-bot-app[bot] Oct 20, 2026
a793123
Merge pull request #1434 from opsmill/dp-20261015-trace-context-ifc-3419
danipl Oct 21, 2026
45cb1b1
Merge pull request #1445 from opsmill/stable
infrahub-github-bot-app[bot] Oct 21, 2026
8e4a455
feat(schema): accept number pool ranges without a start or an end (#1…
ajtmccarty Oct 21, 2026
51398c3
feat(ctl): add infrahubctl commands for the temporary trace sampling …
Oct 22, 2026
1488001
Merge remote-tracking branch 'origin/develop' into pmi-merge-develop-…
polmichel Oct 23, 2026
d4bd613
fix(merge): keep the peer identifier copy in RelatedNodeBase only
polmichel Oct 23, 2026
fc1e5d8
fix(merge): combine both _reload_kwargs into one method
polmichel Oct 23, 2026
ba9b26b
refactor(node): split two helpers out of RelatedNodeBase.__init__
polmichel Oct 23, 2026
1b2aacc
test(client): keep the imports both branches added
polmichel Oct 23, 2026
2cd998d
chore(deps): regenerate the lockfile for the merged pyproject
polmichel Oct 23, 2026
b81887c
docs(sdk-ref): regenerate the relationship reference
polmichel Oct 23, 2026
6b12640
ci: lock dependency versions that ship Python 3.15 wheels
polmichel Oct 23, 2026
8fdea99
ci: narrow the 3.15 lockfile fix to pyarrow
polmichel Oct 26, 2026
461372f
ci: upgrade the PyO3 packages that cannot build on 3.15
polmichel Oct 26, 2026
021597e
chore(deps): carry over the dependency upgrades develop had locked
polmichel Oct 26, 2026
68a7732
Merge pull request #1450 from opsmill/pmi-merge-develop-infrahub-deve…
polmichel Oct 26, 2026
e13a9a0
fix(ctl): reject a NaN sampling ratio and shorten the help and change…
Oct 26, 2026
6e206ec
feat(ctl): add infrahubctl commands for the temporary trace sampling …
danipl Oct 27, 2026
ef664ce
docs(agents): describe the SDK branches and how they sync [IFC-3497]
Oct 28, 2026
06f3291
docs(agents): describe the SDK branches and how they sync [IFC-3497]
danipl Oct 28, 2026
4847741
feat(node): number pool attach/detach, provenance and declared ranges…
ajtmccarty Oct 28, 2026
6c21920
fix(tracking): reconcile tracking groups on runs that save no nodes
ogenstad Oct 7, 2026
23386bd
Merge pull request #1278 from opsmill/po-tracking-group-zero-member-reap
ogenstad Oct 29, 2026
63e3bd6
fix(schema): make number_pool_id a read-only NumberPool parameter (#1…
ajtmccarty Oct 30, 2026
7bf7df0
feat(testing): let GitRepo give every user access to the repository i…
ogenstad Nov 2, 2026
c1cf8e2
fix(node): refuse adding or removing a number pool range through the …
polmichel Nov 3, 2026
a3c30b0
Merge pull request #1470 from opsmill/pog-em/gitrepo-shared-access
ogenstad Nov 3, 2026
53ace67
Merge pull request #1457 from opsmill/stable
infrahub-github-bot-app[bot] Nov 3, 2026
1e8b3bf
chore(changelog): deprecate Python 3.10 support
ogenstad Nov 4, 2026
3a8a9d6
Merge pull request #1478 from opsmill/pog-em/deprecate-python-310
ogenstad Nov 5, 2026
117950f
Merge remote-tracking branch 'origin/develop' into merge-develop-into…
ogenstad Nov 5, 2026
b73a4a4
fix(merge): keep develop's _clean_reference and release's inline peer…
ogenstad Nov 5, 2026
18e2751
Merge pull request #1484 from opsmill/stable
infrahub-github-bot-app[bot] Nov 5, 2026
1e22c98
Merge pull request #1482 from opsmill/merge-develop-into-infrahub-rel…
ogenstad Nov 6, 2026
aa6d9bf
Merge pull request #1492 from opsmill/stable
infrahub-github-bot-app[bot] Nov 6, 2026
41f4515
Merge pull request #1493 from opsmill/develop
infrahub-github-bot-app[bot] Nov 6, 2026
3981d06
Merge pull request #1494 from opsmill/stable
infrahub-github-bot-app[bot] Nov 6, 2026
ea426a5
Merge pull request #1496 from opsmill/develop
ogenstad Nov 6, 2026
2301ebe
Merge pull request #1500 from opsmill/stable
infrahub-github-bot-app[bot] Nov 9, 2026
1b19c28
Merge pull request #1501 from opsmill/develop
infrahub-github-bot-app[bot] Nov 9, 2026
53cdfdd
chore(release): add release notes for 1.24.0
Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .agents/rules/code-comments.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,11 @@ Do not reference specs, tasks, plans, tickets, issue numbers, user stories, or t

## Type-ignore comments

Use the standard `# type: ignore[<code>]` form (for example `# type: ignore[arg-type]`), never `# ty: ignore`. Only `# type: ignore[...]` is honored by mypy, pyright, and pytype, so a `# ty:` comment suppresses nothing and is dead.
Use the standard `# type: ignore[<code>]` form (for example `# type: ignore[arg-type]`), never `# ty: ignore`.
Inline comments carry mypy codes only.

`ty` does not read a bare mypy code as a suppression; it wants either `# ty: ignore[<code>]` or a
`ty:`-prefixed code inside the standard brackets (`# type: ignore[arg-type, ty:invalid-argument-type]`).
Do not use either form. Remaining `ty` violations belong in `[[tool.ty.overrides]]` in `pyproject.toml`,
scoped to the narrowest file or glob that covers them and annotated with the violation count so they can be
retired incrementally.
212 changes: 212 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,215 @@ jobs:
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

# ------------------------------------------ Dependency Bounds ------------------------------------------
# `unit-tests` installs what uv.lock pins, so it never exercises the ranges in pyproject.toml.
# Upper bounds are tracked separately: an upstream release could turn such a job red on its own.

# Deterministic enough to gate on, since floors only move when pyproject.toml does. Development
# dependencies mask some floors; `dependency-lower-bounds-no-harness` below reaches those.
dependency-lower-bounds:
env:
# workaround for Rich table column width
COLUMNS: 140
if: |
always() && !cancelled() &&
!contains(needs.*.result, 'failure') &&
!contains(needs.*.result, 'cancelled') &&
needs.files-changed.outputs.python == 'true'
needs: ["prepare-environment", "files-changed", "yaml-lint", "python-lint"]
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: "Check out repository code"
uses: "actions/checkout@v7"
# Oldest supported interpreter: pyarrow 14, pyyaml 6.0 and ujson 5.0 have no wheels past
# cp312, so a newer one would build them from source. Bump when requires-python changes.
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: "3.10"
- name: Install UV
uses: astral-sh/setup-uv@v7
with:
version: "${{ needs.prepare-environment.outputs.UV_VERSION }}"
python-version: "3.10"
# Rewrites uv.lock in the checkout, which is discarded with the runner.
- name: "Re-resolve at the declared lower bounds"
run: uv lock --resolution lowest-direct
- name: Install dependencies
run: uv sync --frozen --all-groups --all-extras
- name: "Report the resolved versions"
run: uv pip list
- name: Unit Tests
run: uv run --frozen pytest --cov infrahub_sdk tests/unit/

# Proves a plain install works on every supported interpreter, which the uv.lock-based jobs cannot.
install-matrix:
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The install matrix omits Python 3.15 even though the project supports it, so this new plain-wheel install check does not cover every supported interpreter. Add 3.15 to the matrix.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .github/workflows/ci.yml, line 359:

<comment>The install matrix omits Python 3.15 even though the project supports it, so this new plain-wheel install check does not cover every supported interpreter. Add 3.15 to the matrix.</comment>

<file context>
@@ -310,6 +310,215 @@ jobs:
+  install-matrix:
+    strategy:
+      matrix:
+        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
+    if: |
+      always() && !cancelled() &&
</file context>
Suggested change
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]

if: |
always() && !cancelled() &&
!contains(needs.*.result, 'failure') &&
!contains(needs.*.result, 'cancelled') &&
needs.files-changed.outputs.python == 'true'
needs: ["prepare-environment", "files-changed", "yaml-lint", "python-lint"]
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: "Check out repository code"
uses: "actions/checkout@v7"
with:
# hatch-vcs derives the version from git tags, and a shallow clone has none.
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
- name: Install UV
uses: astral-sh/setup-uv@v7
with:
version: "${{ needs.prepare-environment.outputs.UV_VERSION }}"
python-version: ${{ matrix.python-version }}
- name: "Build the wheel"
run: uv build --wheel --out-dir dist/
# Not `uv sync`: a fresh resolution of the built wheel is what a user actually gets.
- name: "Install the wheel with every extra"
run: |
uv venv --python ${{ matrix.python-version }} .venv-install
uv pip install --python .venv-install "$(echo dist/*.whl)[all]"
- name: "Report the resolved versions"
run: uv pip list --python .venv-install
# Run from elsewhere: `python -` puts the working directory on sys.path, so from the checkout
# this would import the source tree rather than the wheel.
- name: "Import every shipped module"
working-directory: ${{ runner.temp }}
run: |
${{ github.workspace }}/.venv-install/bin/python - <<'PY'
import importlib, pkgutil, sys
import infrahub_sdk

failures = []
for module in pkgutil.walk_packages(infrahub_sdk.__path__, "infrahub_sdk."):
try:
importlib.import_module(module.name)
except BaseException as exc: # noqa: BLE001
failures.append(f"{module.name}: {type(exc).__name__}: {exc}")
for failure in failures:
print(f"FAIL {failure}")
print(f"{len(failures)} module(s) failed to import")
sys.exit(1 if failures else 0)
PY
- name: "Run the CLI"
run: |
.venv-install/bin/infrahubctl --help
.venv-install/bin/infrahubctl schema --help
.venv-install/bin/infrahubctl branch --help

# With no dependency groups, nothing pulls pytest, pydantic, anyio or typing-extensions above
# their declared floors, so this is the only job that validates those four. httpx and
# graphql-core stay out of reach: ariadne-codegen requires httpx>=0.28 and graphql-core>=3.2.
# It cannot run the unit suite without the harness, so it checks the surface a user touches.
dependency-lower-bounds-no-harness:
if: |
always() && !cancelled() &&
!contains(needs.*.result, 'failure') &&
!contains(needs.*.result, 'cancelled') &&
needs.files-changed.outputs.python == 'true'
needs: ["prepare-environment", "files-changed", "yaml-lint", "python-lint"]
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: "Check out repository code"
uses: "actions/checkout@v7"
with:
# hatch-vcs derives the version from git tags, and a shallow clone has none.
fetch-depth: 0
# The oldest supported interpreter, for the same wheel-availability reason as the job above.
- name: Set up Python
uses: actions/setup-python@v7
with:
python-version: "3.10"
- name: Install UV
uses: astral-sh/setup-uv@v7
with:
version: "${{ needs.prepare-environment.outputs.UV_VERSION }}"
python-version: "3.10"
- name: "Build the wheel"
run: uv build --wheel --out-dir dist/
# From pyproject.toml, not the wheel: `--resolution lowest-direct` only lowers what is named
# on the command line, so asking for the wheel leaves its dependencies at their newest.
- name: "Resolve the extras at their declared lower bounds"
run: |
uv pip compile pyproject.toml --extra ctl --extra testing \
--resolution lowest-direct --python-version 3.10 -o floors.txt
- name: "Install the wheel against those floors, with no dependency groups"
run: |
uv venv --python 3.10 .venv-floors
uv pip install --python .venv-floors -r floors.txt
uv pip install --python .venv-floors --no-deps "$(echo dist/*.whl)"
- name: "Report the resolved versions"
run: uv pip list --python .venv-floors
# From outside the checkout, so this tests the wheel in site-packages and not the source tree.
- name: "Import every shipped module"
working-directory: ${{ runner.temp }}
run: |
${{ github.workspace }}/.venv-floors/bin/python - <<'PY'
import importlib, pkgutil, sys
import infrahub_sdk

# `testing.docker` needs the testcontainers extra, which is deliberately absent here.
skip = {"infrahub_sdk.testing.docker"}
failures = []
for module in pkgutil.walk_packages(infrahub_sdk.__path__, "infrahub_sdk."):
if module.name in skip:
continue
try:
importlib.import_module(module.name)
except BaseException as exc: # noqa: BLE001
failures.append(f"{module.name}: {type(exc).__name__}: {exc}")
for failure in failures:
print(f"FAIL {failure}")
print(f"{len(failures)} module(s) failed to import")
sys.exit(1 if failures else 0)
PY
- name: "Run the CLI"
run: |
.venv-floors/bin/infrahubctl --help
.venv-floors/bin/infrahubctl schema --help
.venv-floors/bin/infrahubctl branch --help
# Collection is where the plugin does its work; importing it would prove far less.
- name: "Collect a test through the bundled pytest plugin"
working-directory: ${{ runner.temp }}
run: |
rm -rf plugin-check && mkdir -p plugin-check/templates && cd plugin-check
cat > infrahub_config.yml <<'YAML'
---
jinja2_transforms:
- name: bgp_config
description: "Template for BGP config base"
query: "bgp_sessions"
template_path: "templates/bgp_config.j2"
YAML
cat > test_bgp.yml <<'YAML'
---
infrahub_tests:
- resource: "Jinja2Transform"
resource_name: "bgp_config"
tests:
- name: smoke
spec:
kind: "jinja2-transform-smoke"
YAML
printf 'router bgp {{ asn }}\n' > templates/bgp_config.j2
# The default shell is `bash -e` without pipefail, so a pytest failure would otherwise
# be reported as a grep failure.
set -o pipefail
${{ github.workspace }}/.venv-floors/bin/python -m pytest \
--infrahub-repo-config=infrahub_config.yml --strict-markers --collect-only -q \
| tee collected.txt
grep -q "infrahub_jinja2_transform__bgp_config__smoke" collected.txt

# ------------------------------------------ Integration Tests ------------------------------------------
integration-tests-latest-infrahub:
if: |
Expand Down Expand Up @@ -450,6 +659,9 @@ jobs:
- validate-documentation-style
- unit-tests
- integration-tests-latest-infrahub
- dependency-lower-bounds
- dependency-lower-bounds-no-harness
- install-matrix
runs-on: "ubuntu-latest"
timeout-minutes: 5
steps:
Expand Down
16 changes: 16 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,22 @@ infrahub_sdk/
└── pytest_plugin/ # Custom pytest plugin
```

## Branches

| Branch | Holds |
|--------|-------|
| `stable` | The released SDK and its fixes |
| `develop` | SDK features that work with the current Infrahub version |
| `infrahub-release-x.y` | The SDK that ships with Infrahub `x.y`; created from `infrahub-develop` when Infrahub cuts `release-x.y` |
| `infrahub-develop` | SDK changes that need the next Infrahub version |

The Infrahub repository pins `python_sdk` to the branch that matches its own: `stable` to `stable`,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The new Branches section says Infrahub pins python_sdk to the matching branch, but the release flow in this PR moves the infrahub-release-1.12 pin to the v1.24.0 tag. Add a note that pins move to the release tag after a final release.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At AGENTS.md, line 65:

<comment>The new Branches section says Infrahub pins `python_sdk` to the matching branch, but the release flow in this PR moves the `infrahub-release-1.12` pin to the `v1.24.0` tag. Add a note that pins move to the release tag after a final release.</comment>

<file context>
@@ -53,6 +53,22 @@ infrahub_sdk/
+| `infrahub-release-x.y` | The SDK that ships with Infrahub `x.y`; created from `infrahub-develop` when Infrahub cuts `release-x.y` |
+| `infrahub-develop` | SDK changes that need the next Infrahub version |
+
+The Infrahub repository pins `python_sdk` to the branch that matches its own: `stable` to `stable`,
+`release-x.y` to `infrahub-release-x.y`, `develop` to `infrahub-develop`.
+
</file context>

`release-x.y` to `infrahub-release-x.y`, `develop` to `infrahub-develop`.
Comment on lines +65 to +66

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: python_sdk is a git submodule, so Infrahub pins a commit rather than tracking an SDK branch; this wording can make readers expect branch-following behavior. Say that the submodule points to a commit from the matching SDK branch.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At AGENTS.md, line 65:

<comment>`python_sdk` is a git submodule, so Infrahub pins a commit rather than tracking an SDK branch; this wording can make readers expect branch-following behavior. Say that the submodule points to a commit from the matching SDK branch.</comment>

<file context>
@@ -53,6 +53,22 @@ infrahub_sdk/
+| `infrahub-release-x.y` | The SDK that ships with Infrahub `x.y`; created from `infrahub-develop` when Infrahub cuts `release-x.y` |
+| `infrahub-develop` | SDK changes that need the next Infrahub version |
+
+The Infrahub repository pins `python_sdk` to the branch that matches its own: `stable` to `stable`,
+`release-x.y` to `infrahub-release-x.y`, `develop` to `infrahub-develop`.
+
</file context>
Suggested change
The Infrahub repository pins `python_sdk` to the branch that matches its own: `stable` to `stable`,
`release-x.y` to `infrahub-release-x.y`, `develop` to `infrahub-develop`.
The Infrahub repository's `python_sdk` submodule points to a commit from the SDK branch that matches its own: `stable` to `stable`,
`release-x.y` to `infrahub-release-x.y`, `develop` to `infrahub-develop`.


A bot opens a pull request to sync each branch into the next one, in this order:
`stable` → `develop` → `infrahub-release-x.y` → `infrahub-develop`. The rules are in
[opsmill/infrahub-github-bot `config.yaml`](https://github.com/opsmill/infrahub-github-bot/blob/main/config.yaml).

## Markdown style

When editing `.md` or `.mdx` files (`uv run invoke lint-docs` enforces these):
Expand Down
Loading
Loading