Skip to content

Bump YamlDotNet from 18.0.0 to 18.1.0#206

Closed
dependabot[bot] wants to merge 903 commits into
mainfrom
dependabot/nuget/src/ConstructionKit.Contracts/YamlDotNet-18.1.0
Closed

Bump YamlDotNet from 18.0.0 to 18.1.0#206
dependabot[bot] wants to merge 903 commits into
mainfrom
dependabot/nuget/src/ConstructionKit.Contracts/YamlDotNet-18.1.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 29, 2026

Copy link
Copy Markdown

Updated YamlDotNet from 18.0.0 to 18.1.0.

Release notes

Sourced from YamlDotNet's releases.

18.1.0

What's Changed

New Contributors

Full Changelog: aaubry/YamlDotNet@v18.0.0...v18.1.0

Breaking

  • Maximum depth of yaml files is now 130 by default. If you need higher you will need to adjust the maximum yaml depth. Going above 130 runs the risk of stack overflow exceptions when any exception happens inside of the deserialization

Commits viewable in compare view.

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

mmgerald and others added 30 commits November 11, 2025 14:20
…ystem catalog because github needs some time to cache.
…ithub client is used when a token is defined in all read operations, to prevent timing issues because of GitHub pages release process.
* AB#3076: New: System construction kit version 2 with breaking changes to system queries
* AB#3084: Fix: Ensure that test code with a system-2.0.0 construction kit is working
* AB#3090: New: Introduce blueprints for default data.
* AB#3150: New: Migration on level construction kit.

Introduce a dedicated Blueprint Manager tool (octo-bpm) parallel to octo-ckc,
containing only blueprint-related functionality with simplified command names.

Commands: new, validate, pack, list, status, preview, update, history, version, publish, get, and catalogs commands to enable:
- Publishing blueprints to catalogs
- Getting blueprints from catalogs
- Listing available catalogs
…ored in DebugL configuration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The blueprint creation command (octo-bpm -c new) was generating
seed-data/entities.yaml with an incorrect schema reference
'rt-model-root.schema.json' which returns 404. Changed to the
correct schema name 'runtime-model.schema.json' as defined in
RtModelRootTcDto.RtSchemaUri.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
mmgerald and others added 23 commits June 28, 2026 17:02
…d field in Run UI)

An empty-string parameter default ('') is rendered as a REQUIRED field in the
Azure DevOps "Run pipeline" panel, blocking manual runs (operator had to type a
version even for 0.1/main builds). Use a non-empty sentinel default 'auto'
instead, and strip it on the forward via replace(...,'auto','') so
update-build-number still sees "no override" (empty) for normal builds. The
release train keeps injecting the real version on r-tag (overrides 'auto').
No template change / re-pin needed (tpl-v0.4.11 already treats empty as
no-override).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… build

RollupValidator.ValidateActivation flagged CS8604 on the netstandard2.0
target because that framework's string.IsNullOrWhiteSpace lacks the
[NotNullWhen(false)] annotation, so the guard above the HashSet.Add was
not seen by nullable flow analysis. The value is already guarded; mark it
null-forgiving so the warnings-as-errors DebugL build stays clean on both
target frameworks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bump System.StreamData 1.5.0 -> 1.6.0 (additive, no migration script
needed via the no-migrations bridge) with the model surface for the
optimistic / atomic-swap recompute concept:

- Two informations on the Archive base (inherited by Raw/Rollup/TimeRange),
  all isRuntimeState so a blueprint re-apply never resets engine-owned
  state: DirtyWindows (A: retroactive-change signal), PendingRecomputeRanges
  (B: dirty-dependents work list) + observability fields RecomputeInProgress,
  LastRecomputeStartedAt/SuccessAt/FailureAt, LastRecomputeFailureReason.
- Records CkArchiveDirtyWindow, CkArchiveRecomputeRange.
- RecomputeJob entity (own type, not embedded) for a queryable, prunable
  per-run history surfaced later via recomputeJobsFor(archiveRtId).
- Enums CkRecomputeChangeKind, CkRecomputeChangeSource, CkRecomputeJobState,
  CkRecomputeTrigger.

Design captured in docs/concept-rollup-recompute.md (staging-table compute
+ per-window active-generation pointer flip for partial ranges, SWAP TABLE
for full; per-window-range scope with coalesce; manual + periodic triggers,
auto event-detection deferred to AB#4196; first-class monitoring). Foundation
for AB#4189 Phase 7 and AB#4196.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Pure-.NET engine layer for the optimistic recompute model — no I/O, no
clock, fully unit-tested.

Contracts (Runtime.Contracts/StreamData):
- RecomputeChangeKind / RecomputeChangeSource enums (mirror the CK enums).
- ArchiveDirtyWindow (Information A) and ArchiveRecomputeRange (Information B)
  records.
- IRollupDependencyGraph — resolves transitive rollup dependents of a source.

Engine (Runtime.Engine/StreamData):
- RollupDependencyGraph: builds source -> rollups adjacency from one store
  enumeration and walks it breadth-first, top-down, visiting each rollup once
  (diamond- and cycle-safe), so a base-archive change can propagate down a
  multi-level rollup-of-rollup chain.
- RecomputePlanner: turns a retroactive dirty window into one bucket-aligned
  ArchiveRecomputeRange per dependent (Append changes produce none), plus
  MergeIntervals for the coalesce policy. Bucket alignment reuses BucketBoundary.

Tests: 15 new cases — direct/chained/diamond/cycle dependents; sub-bucket,
on-boundary, empty, and calendar-day alignment; append-vs-retroactive range
building; overlapping/adjacent/degenerate interval merging.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Storage-facing abstractions in Runtime.Contracts that both the Mongo
persistence layer and the recompute orchestrator depend on:

- RecomputeTrigger / RecomputeJobState enums (mirror the CK enums).
- RecomputeJobSnapshot: read/write projection of a RecomputeJob entity
  (state, trigger, range, scope, counts, timings, error reason, staging
  table) — the debuggable per-run history record.
- IArchiveRecomputeStateStore: per-archive recompute state held on the
  archive entity — dirty-window ledger (A), pending recompute-range work
  list (B), and the in-progress / last-success / last-failure observability
  fields.
- IRecomputeJobStore: CRUD over RecomputeJob history entities, incl.
  GetForArchiveAsync (backs recomputeJobsFor) and GetActiveForArchiveAsync
  (backs the coalesce policy).

Interface-only; Mongo implementations land next (cross-repo), orchestrator
consumes these in Phase 4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The coordination core of the optimistic recompute model — pure .NET in the
engine, fully unit-tested against the Phase-2/3a interfaces with fakes; the
CrateDB compute+swap is abstracted behind IArchiveRecomputeExecutor (Phase 3c).

- IArchiveRecomputeExecutor + RecomputeExecutionResult: the storage-level
  staging-compute + atomic-swap operation the orchestrator delegates to.
- IArchiveAuditTrail: RecordRecomputeRunAsync / RecordRecomputeFailureAsync
  (+ forwarding and logging implementations) so every run/failure is audited.
- RecomputeOrchestrator:
  - RecomputeArchiveAsync: coalesce (park range + Coalesced record when a job
    is already active), else Running -> Completed/Failed with observability
    (MarkRecomputeStarted/Succeeded/Failed) and a persisted job record; on
    success propagates the range onto the rollup's direct dependents (chain).
  - PropagateDirtyWindowsAsync: Information A -> B — retroactive dirty windows
    fan out to direct dependents' pending ranges (Append ignored), then clear.
  - TickAsync: propagate all sources' dirty windows, then drain each activated
    rollup's pending ranges (MergeIntervals), re-enqueuing failed intervals.
  Multi-level chains converge over successive ticks (direct-dependent hops).

Tests: 10 cases — happy path, direct-vs-transitive propagation, coalesce,
executor-throws, not-a-rollup, source-missing, retroactive-vs-append
propagation, tick drain, non-activated skip.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Extract IRecomputeOrchestrator (TickAsync, RecomputeArchiveAsync,
PropagateDirtyWindowsAsync) in Runtime.Contracts so the per-tenant context and
the background service depend on the contract, not the engine implementation —
mirroring IRollupOrchestrator. RecomputeOrchestrator now implements it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Name / Formula / ResultType / ComputedState (added for computed columns in
System.StreamData 1.5.0) were mandatory with no default. An ingested column
supplies only Path / Required / Indexed, so inserting any RawArchive whose
Columns omit the computed-column fields failed CK mandatory-attribute
validation ("defines no default value ... and is therefore missing"). The
concept already specifies these are null for ingested columns and only
required for computed ones (enforced by ComputedColumnValidator, not CK
mandatory validation). Mark them isOptional: true.

Latent since 1.5.0; surfaced now because the AB#4184 1.6.0 bump pulled the
newer StreamData model into the asset-repo integration tests
(StreamDataFixture.CreateAndActivateArchiveAsync), turning 23 green tests red.
Making a mandatory attribute optional is backward compatible (no migration).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Runtime-state attributes (e.g. CommunicationStateTimestamp, CommunicationState,
DeploymentState, sync counters, last-error fields) are volatile per-tenant live
state and must not be carried in an exported runtime model, otherwise a re-import
overwrites live state with stale exported values. RtEntityToTcDtoConverter is the
export-only RtEntity -> transport-container converter, so it now drops attributes
flagged isRuntimeState=true (covers nested record attributes via the recursive
ConvertAttributes). Adds a regression test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ase 5 follow-up)

Extend RollupArchiveSnapshot with the engine-maintained recompute-state fields
(RecomputeInProgress, LastRecomputeStartedAt/SuccessAt/FailureAt,
LastRecomputeFailureReason, DirtyWindowsPending, PendingRecomputeRanges) as
init-only properties so the positional ctor used by the orchestrator/lifecycle
stays unchanged. Update the concept doc to mark the §7 RollupArchiveInfo
observability surface implemented.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The association cardinality guard in GraphRuleEngine only checked the
current DB state (currentMultiplicity == One), so a single mutation could
add multiple targets to a to-one role (e.g. multiple parents on a
TreeNode) when starting from an empty or already-corrupt state.

ValidateOrigin and ValidateTarget now validate the resulting cardinality
after applying the batch: a violation is reported when a to-one role
net-adds while already One/Many, or creates two or more from Zero.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ts-cardinality

AB#1922 Fix: Validate resulting cardinality for to-one associations
…e-table decision

§4/§6: the per-window generation pointer was implemented in a CrateDB side-table
(archive_<rtId>__genmap) rather than Mongo metadata as originally written — the
flip is then a single-row write co-located with the data, no CK-model bump. The
mechanism lives in octo-construction-kit-engine-mongodb's Runtime.Engine.CrateDb
layer. Status: implemented (live-CrateDB validation pending).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Mirror the CK-model catalog: LocalFileSystemBlueprintCatalogOptions.ApplyRootPath
relocates RootPath and co-locates the cache under it (prevents split-brain).
ConfigCommand now uses ApplyRootPath instead of a raw .ToLower() assignment,
preserving case on case-sensitive file systems. Adds BlueprintCatalogRootPathTests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
§10: the Refinery Studio surface is done — the archive-detail rollups panel now
shows recompute observability (in-progress / pending counts / last success+failure),
a from/to recompute trigger, and a per-rollup recompute-job history table.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e docs

Phase 6 residuals on the engine side:

(2) Rewind/genmap reconciliation: add
IStreamDataRepository.ClearRecomputeGenerationsAsync and call it from
RollupArchiveLifecycleService.RewindWatermarkAsync (via a new optional
IStreamDataRepository ctor dependency). When a rollup watermark is rewound
over a previously-recomputed range, the active-generation pointers would
otherwise keep readers on the stale recomputed generation; clearing them at
the rewind boundary lets the forward re-aggregation (generation 0) become
authoritative again. No-op when stream data is disabled.

(1) Per-rtId scoped recompute and (2) rewind reconciliation are now reflected
in docs/concept-rollup-recompute.md (§4 implementation note, §12 open items).

Tests: RollupArchiveLifecycleServiceTests gains coverage for the clear call
on rewind (with and without a stream-data repository).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-pointer swap)

AB#4184 is complete, unblocking Phase 7. Rewrite §8 to record the key design
decision from mapping the AB#4184 implementation: "reuse AB#4184" means reuse its
backfill orchestration / job model / observability — NOT its row-level generation
pointer. The two swap units differ in granularity (window range vs. whole column),
so computed-column backfill uses a column-name pointer in the archive Mongo
runtime-state, not the genmap side-table.

Adds §8.1 (two swap models), §8.2 (design decisions D-7.1..D-7.5: column pointer,
read-path projection gating, dual-write during formula change, dedicated backfill
executor, dependent-rollup invalidation via the AB#4184 ledger), §8.3 (triggers,
reader contract, removal), §8.4 (open items to verify during implementation).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…omputedVersion

Additive bump adding the engine-managed physical-column version pointer that lets a
computed column's formula change on an active archive (Phase 7, §8 D-7.1): 0 (default)
means the physical column carries the column's base name; a formula change backfills
into a versioned physical column ({base}__v{N}) and flips this pointer atomically on
completion, so readers keep seeing the previous formula's values until the swap.

Also marks CkArchiveColumn.ComputedState runtime-state (it is engine-managed and must
survive a blueprint re-apply — same rationale as the 1.6.0 recompute fields).

CkArchiveColumnSpec gains ComputedVersion (int, 0 for ingested columns); the snapshot
carries it through. Pre-1.6.1 computed columns resolve to version 0 via the
no-migrations bridge. Engine builds + unit suites green (CK engine 547, runtime 586).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…hestration

Engine-side control plane for adding / removing a computed column on an active archive
(§8), batched so the mongodb layer can be implemented after a single package propagation.

Contracts (Runtime.Contracts):
- IArchiveRuntimeStore: AddComputedColumnAsync, SetComputedColumnStateAsync,
  RemoveComputedColumnAsync (column-set + state mutations on the archive entity).
- IStreamDataRepository: ValidateComputedColumnsAsync (runs the validator over a
  prospective set, no storage touch), AddComputedColumnStorageAsync (ALTER ADD COLUMN,
  idempotent), BackfillComputedColumnAsync (exposes the Phase-7 backfill executor).
- IArchiveLifecycleService: AddComputedColumnAsync, RemoveComputedColumnAsync.

Orchestration (ArchiveLifecycleService — already wired through TenantContext, so the
GraphQL/REST/CLI surface needs no new plumbing):
- Add: require Activated; validate prospective set; persist Pending; ALTER ADD COLUMN;
  set Backfilling; backfill; set Active (the single state write is the atomic switch —
  the column is hidden by the read-path gate until then). On backfill failure the column
  is marked Failed and the previous archive state stays intact.
- Remove: validate the post-removal set (rejects a now-dangling reference from another
  computed column), then drop from the logical set; the physical column is left as a
  harmless orphan the read path no longer projects.

Formula-change (updateComputedColumnFormula) is deferred to the 1.6.2 step — its dual-write
needs a transient PendingFormula field. Engine builds + unit suites green (runtime 586).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…2 PendingFormula)

Engine-side control plane for changing a computed column's formula on an active archive
with optimistic / atomic semantics (§8), batched for a single package propagation.

Model: System.StreamData 1.6.1 -> 1.6.2 — additive CkArchiveColumn.PendingFormula (the
transient in-progress marker, runtime-state). CkArchiveColumnSpec gains PendingFormula +
HasPendingFormula.

Contracts:
- IArchiveRuntimeStore: SetPendingFormulaAsync (start), SwapComputedColumnFormulaAsync
  (Formula<-new, ComputedVersion<-N+1, PendingFormula<-null in one write = the atomic
  commit), ClearPendingFormulaAsync (revert on failure).
- IStreamDataRepository: AddPendingComputedColumnStorageAsync (ALTER ADD {base}__v{N+1}).
- IArchiveLifecycleService: UpdateComputedColumnFormulaAsync.

Orchestration (ArchiveLifecycleService): require Activated; reject unknown column; no-op
on unchanged formula; validate the prospective set (target's formula replaced); ALTER the
pending column BEFORE marking PendingFormula (so ingest dual-write never hits a missing
column); backfill the pending column; atomic version swap. Backfill failure clears
PendingFormula (revert to previous formula); the orphaned pending column is left in place.
The result type is unchanged (a formula edit cannot retype the column).

4 formula-change orchestration tests (10 computed-column lifecycle tests total); engine
unit suites green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ula-change MVP limitation)

Update the concept §8 status from "planned" to "implemented": add / remove / formula-change
land across engine + CrateDb data plane + GraphQL/REST/SDK/cli, with System.StreamData 1.6.1
(ComputedVersion) and 1.6.2 (PendingFormula). Document the formula-change MVP limitation — a
referenced computed column's formula change is rejected (versioned-rename would orphan the
reference), root fix (logical-name binding) deferred.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-trip

A TimeSpan CK attribute (e.g. TimeRangeArchive.Period) re-imported via ImportRt
was persisted as a bare-integer ticks string ("9000000000") instead of the
canonical BSON Int64. Reading it back via GetAttributeValueOrDefault<TimeSpan>
fell through to Convert.ChangeType(string, TimeSpan) and threw
InvalidCastException, surfacing as the generic ASSET1002 "An error occurred" on
enableArchive (the resolver then returned null for the non-null
ArchiveTransitionResult, logged as "Cannot return null ... enableArchive").

Make TimeSpan coercion accept a bare-integer ticks string (treated as ticks, not
handed to TimeSpan.Parse, which reads "9000000000" as 9-billion days and
overflows):
- AttributeValueConverter.ConvertAttributeValue: the import normalization point
  (ImportRtModelCommand.AssignAttributes -> SetAttributeValue), so future imports
  store a real TimeSpan and persist canonical Int64 ticks on write.
- RtTypeWithAttributes.TryCoerceTimeSpan: the read path behind the generated
  GetAttributeValueOrDefault<TimeSpan> accessor, healing already-imported data.

Tests: AttributeValueConverterTests (+4), new RtTimeSpanAttributeCoercionTests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
updated-dependencies:
- dependency-name: YamlDotNet
  dependency-version: 18.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Jun 29, 2026
@mmgerald mmgerald closed this Jun 30, 2026
@mmgerald mmgerald force-pushed the dependabot/nuget/src/ConstructionKit.Contracts/YamlDotNet-18.1.0 branch from 39ab7d7 to bcd5120 Compare June 30, 2026 07:37
@dependabot @github

dependabot Bot commented on behalf of github Jun 30, 2026

Copy link
Copy Markdown
Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/nuget/src/ConstructionKit.Contracts/YamlDotNet-18.1.0 branch June 30, 2026 07:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants