Bump YamlDotNet from 18.0.0 to 18.1.0#206
Closed
dependabot[bot] wants to merge 903 commits into
Closed
Conversation
…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.
This reverts commit 64d5bbc.
…ated rtckid, rtid)
…ions when state is ERASE. Extended tests.
…oth row queries and aggregations
* 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
…DebugL at first build
…ored in DebugL configuration Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…is working correctly.
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>
…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>
39ab7d7 to
bcd5120
Compare
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 If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Commits viewable in compare view.
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 rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)