From 3a890c27ffab979bad3da889ac78a0c9a5bc2d11 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 11:18:46 +0200 Subject: [PATCH 01/13] feat(coord): add bounded original-operation attention observer --- .../work-board/references/observation.md | 76 +++++ .../work-board/references/observation.md | 76 +++++ ...2026-10-05-programme-context-efficiency.md | 27 ++ src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj | 2 + .../OperationObservationApplication.fs | 276 ++++++++++++++++++ .../OperationObservationApplication.fsi | 16 + src/FS.GG.Coord.Cli/Program.fs | 3 + src/FS.GG.Coord.Core/FS.GG.Coord.Core.fsproj | 2 + src/FS.GG.Coord.Core/OperationObservation.fs | 172 +++++++++++ src/FS.GG.Coord.Core/OperationObservation.fsi | 46 +++ .../FS.GG.Coord.GitHub.fsproj | 2 + .../OperationObservationReads.fs | 160 ++++++++++ .../OperationObservationReads.fsi | 13 + .../FS.GG.Coord.Cli.Tests.fsproj | 1 + .../OperationObservationApplicationTests.fs | 91 ++++++ .../FS.GG.Coord.Core.Tests.fsproj | 1 + .../OperationObservationTests.fs | 94 ++++++ .../FS.GG.Coord.GitHub.Tests.fsproj | 1 + .../OperationObservationReadsTests.fs | 117 ++++++++ 19 files changed, 1176 insertions(+) create mode 100644 src/FS.GG.Coord.Cli/OperationObservationApplication.fs create mode 100644 src/FS.GG.Coord.Cli/OperationObservationApplication.fsi create mode 100644 src/FS.GG.Coord.Core/OperationObservation.fs create mode 100644 src/FS.GG.Coord.Core/OperationObservation.fsi create mode 100644 src/FS.GG.Coord.GitHub/OperationObservationReads.fs create mode 100644 src/FS.GG.Coord.GitHub/OperationObservationReads.fsi create mode 100644 tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs create mode 100644 tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs create mode 100644 tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs diff --git a/.agents/skills/work-board/references/observation.md b/.agents/skills/work-board/references/observation.md index 8115a8385..c47573ac2 100644 --- a/.agents/skills/work-board/references/observation.md +++ b/.agents/skills/work-board/references/observation.md @@ -133,3 +133,79 @@ clocks, report time, lineage/attribution coverage and omissions. Historical gaps configready, helper success and updated dashboards cannot certify operational recovery or cost/efficiency compliance. See `docs/reference/local-telemetry-store.md` for the existing commands and concrete recipe. No automatic reviewer, provider interception or backfill follows. + +## Finite original-operation attention + +The additive `observe-operation` source route observes one explicitly admitted, already-running +GitHub Actions run and attempt. Use it only after its source, coherent publication, physically +verified installed caller and instruction discovery have been qualified for the selected scope. +Source availability alone does not activate the route. Root retains operation/resource admission, +Status reconciliation and full acceptance. The observer performs bodyless REST GETs; it does not +schedule, dispatch, retry, cancel, release reservations, mutate planning or evaluate merge readiness. + +Prepare one private `fsgg.operation-observation-input/1` JSON object with exactly `schema`, `identity` +and `seconds` (1–600). `identity` has exactly `issue` (`OWNER/REPO#NUMBER`), `slice`, `attempt`, `owner`, +`sourceRevision` (40 lowercase hex), `issueUpdatedAt` (exact native value), `issueBodySha256` (SHA256 +of the exact UTF8 native body), `repository` (`OWNER/REPO`), `pullRequest`, `head` (40 lowercase hex), +`runId`, `runAttempt`, `populationRevision` and `unknowns` (the retained original Unknown identifiers). +These are attributed root inputs, never authentication or a new execution grant. Preserve all original +effects and reservations, including obligations outside the selected run. Missing identity is a gap; +do not reconstruct unavailable originals or replace them with a fresh attempt. + +Invoke the genuine qualified installed caller once for the admitted attention window: + +```bash +fsgg-coord-engine observe-operation start --input /PRIVATE/operation-input.json --cursor /PRIVATE/original-observer.json +``` + +The private parent directory must already exist and remain in the original operation's custody. +`GITHUB_TOKEN`, falling back to `GH_TOKEN`, supplies read credentials. The live adapter uses +`https://api.github.com`; other hosts and non-Linux clock continuation are unsupported. It binds the +owning issue's native body digest/update revision before and after each sample, PR head barriers, +selected run/attempt barriers, two complete job-population sweeps, and every job's original run/attempt/head. Empty or incomplete jobs, +ambiguous native PR association, count drift, missing continuation, duplicate fields/identities and +unsupported native states produce attention rather than success. Jobs are the complete selected-run +population, at most128 across two explicit100-item pages; this is not all PR checks or required checks. + +The invocation retains pending observations internally and prints one JSON result, at most4096bytes, +when a terminal observation, PR control change, identity/population drift, native-read gap, interruption +or deadline requires attention. Unchanged ticks and ordinary pending job progress cause no model callback or stdout record. The result +contains the original PR/head/run/attempt, stable attention identity, semantic revision, remaining +request budget, retained Unknown count and private cursor/evidence references. `completed` describes +native selected-run/job observations only. Readiness remains `not-evaluated`; no observation releases +Unknowns or establishes source/publication/installed/native acceptance. + +The original window is at most600seconds including a500ms cleanup reserve, at most384 requests, +30seconds per request and4MiB total accepted evidence/result output. Each accepted response page is +at most256KiB before parsing; the reused transport may transiently acquire up to4MiB before this +adapter rejects an oversized page. This differs from the Python watcher's256KiB acquisition bound. +Ordinary samples cost eight GETs for up to100jobs, or ten for101–128jobs, with a maximum5second +internal wait. Owning issue revisions and source timestamps are not renewed by local observation. +Filesystem calls and the hosting process are not a separately qualified process-tree supervisor. + +Resume the same cursor and exact input after interruption: + +```bash +fsgg-coord-engine observe-operation resume --input /PRIVATE/operation-input.json --cursor /PRIVATE/original-observer.json +``` + +The checksum-protected cursor retains Linux boot/tick clock identity, original absolute work/cleanup +deadlines, remaining request/output budgets, population and semantic revision. Its checksum detects +accidental corruption, not hostile modification or authority. Missing, corrupt, changed-clock, +identity-drifted or expired custody refuses before native IO. Every request is charged and persisted +before sending; a crash can lose allowance but cannot renew it. Terminal attention replays its stable +identity within the original window. This does not promise exactly-once crash delivery. An attention is terminal for its original invocation; resume replays that result. A new +`start` refuses an existing cursor. Never delete custody to bypass expiry or a refusal. + +Private files are created with owner read/write permissions and one process holds the cursor lock. +The cursor is replaced through a flushed temporary file; directory durability and disk-loss recovery +are not established by this source. On cancellation, an in-flight read may consume its remaining +bounded allowance before the interruption result. A hard-killed observer leaves the original cursor, +Unknowns and reservations intact. Root reconciles the original operation independently. + +Rollback keeps the existing `tools/routine-delivery.py --watch-checks` route for an independently +admitted remaining observation. That helper cannot consume this cursor or renew its deadline. After +an observer failure, retain its original custody and use fresh bounded native readback; do not start +a fresh600second watcher for the same expired window. Report actual parent/worker/reviewer usage, +coverage omissions and native request costs. Zero unchanged-tick model invocations follows from the +finite code path; measured whole-family savings and installed acceptance require their own evidence. diff --git a/.claude/skills/work-board/references/observation.md b/.claude/skills/work-board/references/observation.md index 8115a8385..c47573ac2 100644 --- a/.claude/skills/work-board/references/observation.md +++ b/.claude/skills/work-board/references/observation.md @@ -133,3 +133,79 @@ clocks, report time, lineage/attribution coverage and omissions. Historical gaps configready, helper success and updated dashboards cannot certify operational recovery or cost/efficiency compliance. See `docs/reference/local-telemetry-store.md` for the existing commands and concrete recipe. No automatic reviewer, provider interception or backfill follows. + +## Finite original-operation attention + +The additive `observe-operation` source route observes one explicitly admitted, already-running +GitHub Actions run and attempt. Use it only after its source, coherent publication, physically +verified installed caller and instruction discovery have been qualified for the selected scope. +Source availability alone does not activate the route. Root retains operation/resource admission, +Status reconciliation and full acceptance. The observer performs bodyless REST GETs; it does not +schedule, dispatch, retry, cancel, release reservations, mutate planning or evaluate merge readiness. + +Prepare one private `fsgg.operation-observation-input/1` JSON object with exactly `schema`, `identity` +and `seconds` (1–600). `identity` has exactly `issue` (`OWNER/REPO#NUMBER`), `slice`, `attempt`, `owner`, +`sourceRevision` (40 lowercase hex), `issueUpdatedAt` (exact native value), `issueBodySha256` (SHA256 +of the exact UTF8 native body), `repository` (`OWNER/REPO`), `pullRequest`, `head` (40 lowercase hex), +`runId`, `runAttempt`, `populationRevision` and `unknowns` (the retained original Unknown identifiers). +These are attributed root inputs, never authentication or a new execution grant. Preserve all original +effects and reservations, including obligations outside the selected run. Missing identity is a gap; +do not reconstruct unavailable originals or replace them with a fresh attempt. + +Invoke the genuine qualified installed caller once for the admitted attention window: + +```bash +fsgg-coord-engine observe-operation start --input /PRIVATE/operation-input.json --cursor /PRIVATE/original-observer.json +``` + +The private parent directory must already exist and remain in the original operation's custody. +`GITHUB_TOKEN`, falling back to `GH_TOKEN`, supplies read credentials. The live adapter uses +`https://api.github.com`; other hosts and non-Linux clock continuation are unsupported. It binds the +owning issue's native body digest/update revision before and after each sample, PR head barriers, +selected run/attempt barriers, two complete job-population sweeps, and every job's original run/attempt/head. Empty or incomplete jobs, +ambiguous native PR association, count drift, missing continuation, duplicate fields/identities and +unsupported native states produce attention rather than success. Jobs are the complete selected-run +population, at most128 across two explicit100-item pages; this is not all PR checks or required checks. + +The invocation retains pending observations internally and prints one JSON result, at most4096bytes, +when a terminal observation, PR control change, identity/population drift, native-read gap, interruption +or deadline requires attention. Unchanged ticks and ordinary pending job progress cause no model callback or stdout record. The result +contains the original PR/head/run/attempt, stable attention identity, semantic revision, remaining +request budget, retained Unknown count and private cursor/evidence references. `completed` describes +native selected-run/job observations only. Readiness remains `not-evaluated`; no observation releases +Unknowns or establishes source/publication/installed/native acceptance. + +The original window is at most600seconds including a500ms cleanup reserve, at most384 requests, +30seconds per request and4MiB total accepted evidence/result output. Each accepted response page is +at most256KiB before parsing; the reused transport may transiently acquire up to4MiB before this +adapter rejects an oversized page. This differs from the Python watcher's256KiB acquisition bound. +Ordinary samples cost eight GETs for up to100jobs, or ten for101–128jobs, with a maximum5second +internal wait. Owning issue revisions and source timestamps are not renewed by local observation. +Filesystem calls and the hosting process are not a separately qualified process-tree supervisor. + +Resume the same cursor and exact input after interruption: + +```bash +fsgg-coord-engine observe-operation resume --input /PRIVATE/operation-input.json --cursor /PRIVATE/original-observer.json +``` + +The checksum-protected cursor retains Linux boot/tick clock identity, original absolute work/cleanup +deadlines, remaining request/output budgets, population and semantic revision. Its checksum detects +accidental corruption, not hostile modification or authority. Missing, corrupt, changed-clock, +identity-drifted or expired custody refuses before native IO. Every request is charged and persisted +before sending; a crash can lose allowance but cannot renew it. Terminal attention replays its stable +identity within the original window. This does not promise exactly-once crash delivery. An attention is terminal for its original invocation; resume replays that result. A new +`start` refuses an existing cursor. Never delete custody to bypass expiry or a refusal. + +Private files are created with owner read/write permissions and one process holds the cursor lock. +The cursor is replaced through a flushed temporary file; directory durability and disk-loss recovery +are not established by this source. On cancellation, an in-flight read may consume its remaining +bounded allowance before the interruption result. A hard-killed observer leaves the original cursor, +Unknowns and reservations intact. Root reconciles the original operation independently. + +Rollback keeps the existing `tools/routine-delivery.py --watch-checks` route for an independently +admitted remaining observation. That helper cannot consume this cursor or renew its deadline. After +an observer failure, retain its original custody and use fresh bounded native readback; do not start +a fresh600second watcher for the same expired window. Report actual parent/worker/reviewer usage, +coverage omissions and native request costs. Zero unchanged-tick model invocations follows from the +finite code path; measured whole-family savings and installed acceptance require their own evidence. diff --git a/docs/roadmaps/2026-10-05-programme-context-efficiency.md b/docs/roadmaps/2026-10-05-programme-context-efficiency.md index ced94c967..9fced7d03 100644 --- a/docs/roadmaps/2026-10-05-programme-context-efficiency.md +++ b/docs/roadmaps/2026-10-05-programme-context-efficiency.md @@ -718,3 +718,30 @@ Canonical work-board now explicitly includes missing-Status/classification/enrol unfiltered intake and records their disposition in existing owning issues. This repairs the omission without adding an intake queue, Ready fallback or retrospective cards. Source guidance delivery and any later installed consumer update remain distinct; no fleet adoption is inferred from this edit. + +## Selected finite F# observer source — 2026-10-20 + +[Delivery4731](https://github.com/FS-GG/.github/issues/4731), under +[Outcome4730](https://github.com/FS-GG/.github/issues/4730), adds a finite attention invocation to +`FS.GG.Coord.Core`, `FS.GG.Coord.GitHub` and the existing engine CLI. The pure reducer preserves exact +issue/body revision, source, owner, slice/original attempt, PR/head, run/attempt and population identity. +The read-only adapter checks the complete bounded selected-run jobs between owning-issue, run and PR +barriers. `ObserveOriginal`, `AwaitWithinDeadline` and `ReturnAttention` keep unchanged pending ticks +inside deterministic code. The [canonical observation instructions](../../.agents/skills/work-board/references/observation.md#finite-original-operation-attention) +define the closed input, private original-clock continuation, output and rollback semantics. + +This source candidate is not publication, installed adoption or full Delivery acceptance. Relevant +F# tests, one independent source review, exact-head required CI, coherent publication, physically +verified installed caller/instruction discovery and one necessary ordinary exact-head CI observation +remain required. That real window retains positive, changed-head/failure, interruption/restart/deadline +and rollback evidence; no unrelated workload is replayed for acceptance. All439 inherited and46later +Unknown original effects and reservations remain intact and unreleased. + +The selected native population is one Actions run/attempt, not all required checks or a whole-board +read. A normal sample costs eight GETs (ten above100jobs), bounded by384requests and600seconds +including cleanup. The existing deadline transport may transiently read4MiB; the observer accepts at +most256KiB per page before parsing. This explicitly differs from the Python watcher's acquisition cap. +Linux boot/tick continuation, local cursor checksum/locking and flushed replacement do not establish +cross-host/disk-loss recovery, process containment or exactly-once result delivery. Actual native +coverage, whole-family usage and economics remain observed/Unknown according to available evidence; +no saving percentage is inferred from a language port or from unchanged-tick suppression. diff --git a/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj b/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj index f4f967535..e46b706dc 100644 --- a/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj +++ b/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj @@ -273,6 +273,8 @@ the standing safety advisories carry forward. + + diff --git a/src/FS.GG.Coord.Cli/OperationObservationApplication.fs b/src/FS.GG.Coord.Cli/OperationObservationApplication.fs new file mode 100644 index 000000000..c952762a0 --- /dev/null +++ b/src/FS.GG.Coord.Cli/OperationObservationApplication.fs @@ -0,0 +1,276 @@ +namespace FS.GG.Coord.Cli + +module OperationObservationApplication = + open System + open System.IO + open System.Collections.Generic + open System.Text + open System.Text.Json + open System.Security.Cryptography + open FS.GG.Coord.OperationObservation + open FS.GG.Coord.GitHub + open FS.GG.Coord.GitHub.Transport + + type Input = { Identity: Identity; Seconds: int } + + let private closed (names: string list) (node: JsonElement) = + if node.ValueKind <> JsonValueKind.Object then invalidArg "json" "expected object" + let fields = node.EnumerateObject() |> Seq.map _.Name |> Seq.toList + if fields.Length <> names.Length || Set.ofList fields <> Set.ofList names then invalidArg "json" "unknown/missing/duplicate fields" + let private field name (node: JsonElement) = node.GetProperty(name: string) + let private text name node = (field name node).GetString() + let private number name node = (field name node).GetInt32() + let private long name node = (field name node).GetInt64() + let private nullable name node = + let value = field name node + if value.ValueKind = JsonValueKind.Null then None + elif value.ValueKind = JsonValueKind.String then Some(value.GetString()) + else invalidArg "json" "expected nullable text" + let private identity (node: JsonElement) : Identity = + closed [ "issue"; "slice"; "attempt"; "owner"; "sourceRevision"; "issueUpdatedAt"; "issueBodySha256"; "repository"; "pullRequest"; "head" + "runId"; "runAttempt"; "populationRevision"; "unknowns" ] node + let unknowns = field "unknowns" node + if unknowns.ValueKind <> JsonValueKind.Array || unknowns.GetArrayLength() > 512 then invalidArg "json" "bounded Unknown array required" + let result = + { Issue = text "issue" node; Slice = text "slice" node; Attempt = text "attempt" node; Owner = text "owner" node + SourceRevision = text "sourceRevision" node; IssueUpdatedAt = text "issueUpdatedAt" node; IssueBodySha256 = text "issueBodySha256" node; Repository = text "repository" node; PullRequest = number "pullRequest" node + Head = text "head" node; RunId = long "runId" node; RunAttempt = number "runAttempt" node + PopulationRevision = text "populationRevision" node + Unknowns = unknowns.EnumerateArray() |> Seq.map _.GetString() |> Seq.toList } + match validateIdentity result with Ok result -> result | Error message -> invalidArg "json" message + let private identityWire (value: Identity) = + {| issue = value.Issue; slice = value.Slice; attempt = value.Attempt; owner = value.Owner + sourceRevision = value.SourceRevision; issueUpdatedAt = value.IssueUpdatedAt; issueBodySha256 = value.IssueBodySha256; repository = value.Repository; pullRequest = value.PullRequest; head = value.Head + runId = value.RunId; runAttempt = value.RunAttempt; populationRevision = value.PopulationRevision; unknowns = value.Unknowns |} + let private decode decoder (json: string) = + try + if Encoding.UTF8.GetByteCount json > 262144 then invalidArg "json" "input exceeds256KiB" + use document = JsonDocument.Parse(json, JsonDocumentOptions(MaxDepth = 8)) + Ok(decoder document.RootElement) + with + | :? ArgumentException | :? JsonException | :? InvalidOperationException | :? KeyNotFoundException | :? FormatException | :? OverflowException -> + Error "missing, corrupt or unsupported observation input" + + let parseInput json = + decode (fun root -> + closed [ "schema"; "identity"; "seconds" ] root + if text "schema" root <> "fsgg.operation-observation-input/1" then invalidArg "json" "unsupported input schema" + let seconds = number "seconds" root + if seconds < 1 || seconds > 600 then invalidArg "json" "seconds must be1..600" + { Identity = identity (field "identity" root); Seconds = seconds }) json + + let private encodeCursorBody (cursor: Cursor) = + let budget = cursor.Budget + JsonSerializer.Serialize + {| schema = "fsgg.operation-observation-cursor/1"; identity = identityWire cursor.Identity + clockDomain = budget.ClockDomain; started = budget.Started; workDeadline = budget.WorkDeadline + cleanupDeadline = budget.CleanupDeadline; lastClock = budget.LastClock + requestsRemaining = budget.RequestsRemaining; outputBytesRemaining = budget.OutputBytesRemaining + population = Option.toObj cursor.Population; semantic = Option.toObj cursor.Semantic; control = Option.toObj cursor.Control; revision = cursor.Revision + terminal = cursor.Terminal |> Option.map attentionName |> Option.toObj; evidence = Option.toObj cursor.Evidence; gap = Option.toObj cursor.Gap |} + + let private decodeCursorBody json = + decode (fun root -> + closed [ "schema"; "identity"; "clockDomain"; "started"; "workDeadline"; "cleanupDeadline"; "lastClock" + "requestsRemaining"; "outputBytesRemaining"; "population"; "semantic"; "control"; "revision"; "terminal"; "evidence"; "gap" ] root + if text "schema" root <> "fsgg.operation-observation-cursor/1" then invalidArg "json" "unsupported cursor schema" + let terminal = nullable "terminal" root |> Option.map (fun name -> + [ Completed; Failed; PullRequestClosed; HeadChanged; RunChanged; PopulationChanged; MaterialChange + Unknown; Deadline; BudgetExhausted; Interrupted; ObservationFailure ] + |> List.tryFind (fun attention -> attentionName attention = name) + |> Option.defaultWith (fun () -> invalidArg "json" "unsupported attention")) + { Identity = identity (field "identity" root) + Budget = { ClockDomain = text "clockDomain" root; Started = long "started" root; WorkDeadline = long "workDeadline" root + CleanupDeadline = long "cleanupDeadline" root; LastClock = long "lastClock" root + RequestsRemaining = number "requestsRemaining" root; OutputBytesRemaining = number "outputBytesRemaining" root } + Population = nullable "population" root; Semantic = nullable "semantic" root; Control = nullable "control" root + Revision = number "revision" root; Terminal = terminal; Evidence = nullable "evidence" root; Gap = nullable "gap" root }) json + + let private checksum (value: string) = + SHA256.HashData(Encoding.UTF8.GetBytes value) |> Convert.ToHexString |> _.ToLowerInvariant() + + let encodeCursor cursor = + let body = encodeCursorBody cursor + JsonSerializer.Serialize {| schema = "fsgg.operation-observation-custody/1"; cursorJson = body; sha256 = checksum body |} + + let decodeCursor json = + decode (fun root -> + closed [ "schema"; "cursorJson"; "sha256" ] root + let body = text "cursorJson" root + if text "schema" root <> "fsgg.operation-observation-custody/1" || checksum body <> text "sha256" root then + invalidArg "json" "corrupt cursor custody" + body) json |> Result.bind decodeCursorBody + + let observe transport clock sleep persist evidence initial = + let mutable current = initial + let mutable answer = None + let retain cursor = persist cursor; current <- cursor + let stop attention = + if attention = Deadline && current.Terminal.IsSome && current.Terminal <> Some Deadline then + current <- { current with Gap = Some("original-deadline-before-" + attentionName current.Terminal.Value + "-delivery") } + match finish attention current with + | ReturnAttention(cursor, _, _) as decision -> retain cursor; answer <- Some decision + | _ -> invalidOp "attention reducer invariant" + try + while answer.IsNone do + match decide (clock()) None current with + | ReturnAttention(cursor, attention, _) as decision -> + retain cursor + if attention <> Deadline && clock() >= cursor.Budget.WorkDeadline then stop Deadline + else answer <- Some decision + | AwaitWithinDeadline _ -> invalidOp "empty sample cannot wait" + | ObserveOriginal _ -> + let beforeRequest () = + match chargeRequest (clock()) current with + | Error reason -> Error reason + | Ok cursor -> retain cursor; Ok () + match OperationObservationReads.collect transport current.Identity clock current.Budget.WorkDeadline beforeRequest with + | Error reason -> + current <- { current with Gap = Some reason } + if clock() >= current.Budget.WorkDeadline then stop Deadline + elif current.Budget.RequestsRemaining <= 0 then stop BudgetExhausted + else stop ObservationFailure + | Ok sample -> + match decide (clock()) (Some sample) current with + | ObserveOriginal _ -> invalidOp "native sample cannot request another read directly" + | AwaitWithinDeadline(cursor, delay) -> + retain cursor + sleep delay + | ReturnAttention(cursor, attention, id) -> + let reference, bytes, write = evidence sample + match chargeOutput bytes cursor with + | Error _ -> current <- cursor; stop BudgetExhausted + | Ok charged -> + retain charged + if clock() >= charged.Budget.WorkDeadline then stop Deadline + else + write() + let retained = { charged with Evidence = Some reference } + retain retained + if clock() >= retained.Budget.WorkDeadline then stop Deadline + else answer <- Some(ReturnAttention(retained, attention, id)) + with :? OperationCanceledException -> stop Interrupted + answer.Value + + let private readBounded path = + use stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read) + let bytes = Array.zeroCreate 262145 + let mutable size = 0 + let mutable ended = false + while not ended && size < bytes.Length do + let read = stream.Read(bytes, size, bytes.Length - size) + if read = 0 then ended <- true else size <- size + read + if size > 262144 then invalidArg "path" "file exceeds256KiB" + UTF8Encoding(false, true).GetString(bytes, 0, size) + + let private privateOptions mode = + let options = FileStreamOptions(Mode = mode, Access = FileAccess.ReadWrite, Share = FileShare.None) + if not (OperatingSystem.IsWindows()) then options.UnixCreateMode <- UnixFileMode.UserRead ||| UnixFileMode.UserWrite + options + let private save path content = + let temporary = path + ".tmp-" + Guid.NewGuid().ToString("N") + try + use stream = new FileStream(temporary, privateOptions FileMode.CreateNew) + let bytes = Encoding.UTF8.GetBytes(content: string) + stream.Write bytes + stream.Flush true + stream.Close() + File.Move(temporary, path, true) + finally + if File.Exists temporary then File.Delete temporary + + let private clockDomain () = + if not (OperatingSystem.IsLinux()) then invalidOp "original clock continuation currently supports Linux only" + let boot = File.ReadAllText("/proc/sys/kernel/random/boot_id").Trim() + match Guid.TryParse boot with + | true, _ -> "linux-boot-tickcount64/1:" + boot + | _ -> invalidOp "original boot clock identity unavailable" + + let private result cursorPath (cursor: Cursor) attention id = + JsonSerializer.Serialize + {| schema = "fsgg.operation-observation-result/1"; attention = attentionName attention; terminalIdentity = id + repository = cursor.Identity.Repository; pullRequest = cursor.Identity.PullRequest; head = cursor.Identity.Head + runId = cursor.Identity.RunId; runAttempt = cursor.Identity.RunAttempt; revision = cursor.Revision + requestsRemaining = cursor.Budget.RequestsRemaining; unknownsRetained = cursor.Identity.Unknowns.Length + cursor = cursorPath; evidence = Option.toObj cursor.Evidence; gap = Option.toObj cursor.Gap + readiness = "not-evaluated"; effects = "read-only"; exactlyOnceDelivery = false |} + + let tryRun arguments = + match arguments with + | "observe-operation" :: rest -> + Some( + try + let mode, inputPath, cursorPath = + match rest with + | [ ("start" | "resume") as mode; "--input"; input; "--cursor"; cursor ] -> mode, input, cursor + | _ -> invalidArg "arguments" "observe-operation start|resume --input PRIVATE_INPUT --cursor PRIVATE_CURSOR" + if not (Path.IsPathFullyQualified inputPath && Path.IsPathFullyQualified cursorPath) + || cursorPath.Length > 1024 || inputPath = cursorPath then invalidArg "path" "distinct absolute private paths required" + let input = match parseInput (readBounded inputPath) with Ok input -> input | Error reason -> invalidArg "input" reason + // The original cursor is local recovery state, never an admission or authenticated grant. + use ownership = new FileStream(cursorPath + ".lock", privateOptions FileMode.OpenOrCreate) + let domain = clockDomain() + let now = Environment.TickCount64 + let original = + if mode = "start" then + if File.Exists cursorPath then invalidOp "original cursor already exists; use resume" + match start input.Identity domain now input.Seconds with Ok cursor -> cursor | Error reason -> invalidArg "input" reason + else + let cursor = match decodeCursor (readBounded cursorPath) with Ok cursor -> cursor | Error reason -> invalidArg "cursor" reason + match resume input.Identity domain now cursor with + | Error reason -> invalidArg "cursor" reason + | Ok cursor -> cursor + let persist cursor = + let content = encodeCursor cursor + if Encoding.UTF8.GetByteCount content > 262144 then invalidOp "cursor custody exceeds256KiB" + save cursorPath content + persist original + let token = + let primary = Environment.GetEnvironmentVariable "GITHUB_TOKEN" + if String.IsNullOrWhiteSpace primary then Environment.GetEnvironmentVariable "GH_TOKEN" else primary + if String.IsNullOrWhiteSpace token then invalidOp "native read credential unavailable" + use transport = new HttpTransport("https://api.github.com", token) + let evidence sample = + let path = cursorPath + ".evidence-" + Guid.NewGuid().ToString("N") + ".json" + // Cursor retains all original identity/Unknowns; the evidence is a bounded native sample. + let checks = sample.Checks |> List.map (fun check -> + {| id = check.Id; name = check.Name; status = check.Status; conclusion = Option.toObj check.Conclusion + startedAt = Option.toObj check.StartedAt; completedAt = Option.toObj check.CompletedAt |}) + let content = JsonSerializer.Serialize + {| head = sample.Head; runId = sample.RunId; runAttempt = sample.RunAttempt + runStatus = sample.RunStatus; runConclusion = Option.toObj sample.RunConclusion + state = sample.PullRequestState; merged = sample.Merged; draft = sample.Draft + complete = sample.Complete; gaps = sample.Gaps; checks = checks |} + if Encoding.UTF8.GetByteCount content > 262144 then invalidOp "private evidence exceeds256KiB" + path, Encoding.UTF8.GetByteCount content, (fun () -> save path content) + let mutable cancelled = false + let cancellation = ConsoleCancelEventHandler(fun _ event -> event.Cancel <- true; cancelled <- true) + Console.CancelKeyPress.AddHandler cancellation + let decision = + try + observe (transport :> IDeadlineSinglePageGitHubTransport) + (fun () -> if cancelled then raise (OperationCanceledException()) else Environment.TickCount64) + (fun delay -> System.Threading.Thread.Sleep delay) persist evidence original + finally Console.CancelKeyPress.RemoveHandler cancellation + let rec emit decision = + match decision with + | ReturnAttention(cursor, attention, id) -> + let document = result cursorPath cursor attention id + let size = Encoding.UTF8.GetByteCount document + 1 + if size > 4096 then invalidOp "compact attention exceeds4096bytes" + match chargeOutput size cursor with + | Error reason -> invalidOp reason + | Ok cursor -> + persist cursor + if attention <> Deadline && Environment.TickCount64 >= cursor.Budget.WorkDeadline then + emit (finish Deadline { cursor with Gap = Some("original-deadline-before-" + attentionName attention + "-delivery") }) + else + printfn "%s" document + if attention = Completed then 0 else 3 + | _ -> invalidOp "finite observer must return attention" + emit decision + with + | :? IOException | :? UnauthorizedAccessException | :? ArgumentException | :? InvalidOperationException | :? DecoderFallbackException -> + printfn "{\"schema\":\"fsgg.operation-observation-result/1\",\"attention\":\"refusal\",\"reason\":\"missing-corrupt-drifted-expired-or-unavailable-original\",\"effects\":\"read-only\",\"readiness\":\"not-evaluated\"}" + 3) + | _ -> None diff --git a/src/FS.GG.Coord.Cli/OperationObservationApplication.fsi b/src/FS.GG.Coord.Cli/OperationObservationApplication.fsi new file mode 100644 index 000000000..6a5ea9d61 --- /dev/null +++ b/src/FS.GG.Coord.Cli/OperationObservationApplication.fsi @@ -0,0 +1,16 @@ +namespace FS.GG.Coord.Cli + +module OperationObservationApplication = + type Input = { Identity: FS.GG.Coord.OperationObservation.Identity; Seconds: int } + val parseInput: string -> Result + val encodeCursor: FS.GG.Coord.OperationObservation.Cursor -> string + val decodeCursor: string -> Result + /// Synchronous finite loop. Persist is called before each native request and before returning attention. + /// Unchanged samples produce no emit/model callback. Clock and sleep share the original clock domain. + val observe: + transport: FS.GG.Coord.GitHub.Transport.IDeadlineSinglePageGitHubTransport -> + clock: (unit -> int64) -> sleep: (int -> unit) -> + persist: (FS.GG.Coord.OperationObservation.Cursor -> unit) -> + evidence: (FS.GG.Coord.OperationObservation.Sample -> string * int * (unit -> unit)) -> + initial: FS.GG.Coord.OperationObservation.Cursor -> FS.GG.Coord.OperationObservation.Decision + val tryRun: string list -> int option diff --git a/src/FS.GG.Coord.Cli/Program.fs b/src/FS.GG.Coord.Cli/Program.fs index d26e1db56..e4ffcd965 100644 --- a/src/FS.GG.Coord.Cli/Program.fs +++ b/src/FS.GG.Coord.Cli/Program.fs @@ -701,6 +701,9 @@ let main argv = let arguments = List.ofArray argv match arguments with + | "observe-operation" :: _ -> + invoked <- "observe-operation" + OperationObservationApplication.tryRun arguments |> Option.defaultValue ExitError | "board-v2" :: _ -> invoked <- "board-v2-refresh" BoardV2Application.tryRun arguments |> Option.defaultValue ExitError diff --git a/src/FS.GG.Coord.Core/FS.GG.Coord.Core.fsproj b/src/FS.GG.Coord.Core/FS.GG.Coord.Core.fsproj index 5a308ff45..3b5a2a9a4 100644 --- a/src/FS.GG.Coord.Core/FS.GG.Coord.Core.fsproj +++ b/src/FS.GG.Coord.Core/FS.GG.Coord.Core.fsproj @@ -184,6 +184,8 @@ + + diff --git a/src/FS.GG.Coord.Core/OperationObservation.fs b/src/FS.GG.Coord.Core/OperationObservation.fs new file mode 100644 index 000000000..b9cd52bcc --- /dev/null +++ b/src/FS.GG.Coord.Core/OperationObservation.fs @@ -0,0 +1,172 @@ +namespace FS.GG.Coord + +/// A read-only attention reducer for one already admitted original CI operation. +module OperationObservation = + open System + open System.Security.Cryptography + open System.Text + open System.Text.RegularExpressions + + type Identity = + { Issue: string; Slice: string; Attempt: string; Owner: string + SourceRevision: string; IssueUpdatedAt: string; IssueBodySha256: string; Repository: string; PullRequest: int; Head: string + RunId: int64; RunAttempt: int; PopulationRevision: string; Unknowns: string list } + + type Budget = + { ClockDomain: string; Started: int64; WorkDeadline: int64; CleanupDeadline: int64 + LastClock: int64; RequestsRemaining: int; OutputBytesRemaining: int } + + type Check = + { Id: int64; Name: string; Status: string; Conclusion: string option + StartedAt: string option; CompletedAt: string option } + + type Sample = + { Head: string; RunId: int64; RunAttempt: int; RunStatus: string + RunConclusion: string option; PullRequestState: string; Merged: bool; Draft: bool + Checks: Check list; Complete: bool; Gaps: string list } + + type Attention = + | Completed | Failed | PullRequestClosed | HeadChanged | RunChanged + | PopulationChanged | MaterialChange | Unknown | Deadline | BudgetExhausted + | Interrupted | ObservationFailure + + type Cursor = + { Identity: Identity; Budget: Budget; Population: string option; Semantic: string option; Control: string option + Revision: int; Terminal: Attention option; Evidence: string option; Gap: string option } + + type Decision = + | ObserveOriginal of Cursor + | AwaitWithinDeadline of Cursor * milliseconds: int + | ReturnAttention of Cursor * Attention * terminalIdentity: string + + let private digest (value: string) = + SHA256.HashData(Encoding.UTF8.GetBytes value) |> Convert.ToHexString |> _.ToLowerInvariant() + + let private hash value = not (isNull value) && Regex.IsMatch(value, "\\A[0-9a-f]{64}\\z") + let private sha value = not (isNull value) && Regex.IsMatch(value, "\\A[0-9a-f]{40}\\z") + let private text value = not (String.IsNullOrWhiteSpace value) && value.Length <= 512 && not (value.Contains '\u0000') + + let validateIdentity (identity: Identity) = + if not ([ identity.Issue; identity.Slice; identity.Attempt; identity.Owner; identity.PopulationRevision; identity.IssueUpdatedAt ] |> List.forall text) + || not (Regex.IsMatch(identity.Issue, "\\A[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+#[1-9][0-9]*\\z")) + || not (text identity.IssueBodySha256) || not (Regex.IsMatch(identity.IssueBodySha256, "\\A[0-9a-f]{64}\\z")) + || not (sha identity.SourceRevision && sha identity.Head) + || not (text identity.Repository) || not (Regex.IsMatch(identity.Repository, "\\A[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+\\z")) + || identity.Repository.Length > 256 || identity.PullRequest <= 0 || identity.RunId <= 0L || identity.RunAttempt <= 0 + || identity.Unknowns.Length > 512 || not (identity.Unknowns |> List.forall text) + || Set.count (Set.ofList identity.Unknowns) <> identity.Unknowns.Length then + Error "invalid original operation identity or retained Unknown population" + else Ok identity + + let start identity domain now seconds = + match validateIdentity identity with + | Error reason -> Error reason + | Ok _ when not (text domain) || now < 0L || seconds < 1 || seconds > 600 || now > Int64.MaxValue - 600000L -> + Error "unsupported clock or observation allowance (1..600 seconds)" + | Ok _ -> + Ok { Identity = identity + Budget = { ClockDomain = domain; Started = now; LastClock = now + WorkDeadline = now + int64 seconds * 1000L - 500L + CleanupDeadline = now + int64 seconds * 1000L + RequestsRemaining = 384; OutputBytesRemaining = 4194304 } + Population = None; Semantic = None; Control = None; Revision = 0; Terminal = None; Evidence = None; Gap = None } + + let resume expected domain now (cursor: Cursor) = + match validateIdentity cursor.Identity with + | Error reason -> Error reason + | Ok _ -> + let budget = cursor.Budget + if cursor.Identity <> expected then Error "original operation identity drift" + elif domain <> budget.ClockDomain || now < budget.LastClock then Error "original clock domain changed or moved backwards" + elif budget.Started < 0L || budget.LastClock < budget.Started || budget.WorkDeadline <= budget.Started + || budget.CleanupDeadline - budget.WorkDeadline <> 500L + || budget.CleanupDeadline - budget.Started > 600000L + || budget.LastClock > budget.CleanupDeadline + || budget.RequestsRemaining < 0 || budget.RequestsRemaining > 384 + || budget.OutputBytesRemaining < 0 || budget.OutputBytesRemaining > 4194304 + || cursor.Revision < 0 || cursor.Revision > 384 + || not (cursor.Population |> Option.forall hash) || not (cursor.Semantic |> Option.forall hash) + || not (cursor.Control |> Option.forall hash) + || not (cursor.Gap |> Option.forall text) + || not (cursor.Evidence |> Option.forall (fun path -> not (String.IsNullOrWhiteSpace path) && path.Length <= 2048)) + || Option.isSome cursor.Population <> Option.isSome cursor.Semantic + || Option.isSome cursor.Population <> Option.isSome cursor.Control then Error "corrupt original continuation" + elif now >= budget.WorkDeadline then Error "original continuation expired; no renewed allowance" + else Ok { cursor with Budget = { budget with LastClock = now } } + + let attentionName = function + | Completed -> "completed" | Failed -> "failed" | PullRequestClosed -> "pull-request-closed" + | HeadChanged -> "head-changed" | RunChanged -> "run-changed" | PopulationChanged -> "population-changed" + | MaterialChange -> "material-change" | Unknown -> "unknown" | Deadline -> "deadline" + | BudgetExhausted -> "budget-exhausted" | Interrupted -> "interrupted" | ObservationFailure -> "observation-failure" + + let private attentionIdentity (cursor: Cursor) attention = + // Unambiguous canonical fields: length-prefixed strings, including every original Unknown. + let fields = [ cursor.Identity.Issue; cursor.Identity.Slice; cursor.Identity.Attempt; cursor.Identity.Owner + cursor.Identity.SourceRevision; cursor.Identity.Repository; string cursor.Identity.PullRequest + cursor.Identity.Head; string cursor.Identity.RunId; string cursor.Identity.RunAttempt + cursor.Identity.PopulationRevision; cursor.Budget.ClockDomain; string cursor.Budget.Started + string cursor.Budget.WorkDeadline; string cursor.Revision; attentionName attention + Option.defaultValue "" cursor.Population; Option.defaultValue "" cursor.Semantic + cursor.Identity.IssueUpdatedAt; cursor.Identity.IssueBodySha256 ] @ cursor.Identity.Unknowns + fields |> List.map (fun field -> string field.Length + ":" + field) |> String.concat "" |> digest + + let finish attention (cursor: Cursor) = + let retained = { cursor with Terminal = Some attention } + ReturnAttention(retained, attention, attentionIdentity retained attention) + + let private canonicalChecks (checks: Check list) = + checks |> List.sortBy _.Id |> List.map (fun check -> + [ string check.Id; check.Name; check.Status; Option.defaultValue "" check.Conclusion + Option.defaultValue "" check.StartedAt; Option.defaultValue "" check.CompletedAt ] + |> List.map (fun field -> string field.Length + ":" + field) |> String.concat "") |> String.concat "" + + let decide now (sample: Sample option) (cursor: Cursor) = + let backwards = now < cursor.Budget.LastClock + let cursor = { cursor with Budget = { cursor.Budget with LastClock = now } } + match cursor.Terminal with + | _ when backwards || now < cursor.Budget.Started || now >= cursor.Budget.WorkDeadline -> finish Deadline cursor + | Some attention -> finish attention cursor + | None when cursor.Budget.RequestsRemaining <= 0 || cursor.Budget.OutputBytesRemaining < 4096 -> finish BudgetExhausted cursor + | None -> + match sample with + | None -> ObserveOriginal cursor + | Some sample when sample.Head <> cursor.Identity.Head -> finish HeadChanged cursor + | Some sample when sample.RunId <> cursor.Identity.RunId || sample.RunAttempt <> cursor.Identity.RunAttempt -> finish RunChanged cursor + | Some sample when not sample.Complete || not sample.Gaps.IsEmpty || sample.Checks.IsEmpty || sample.Checks.Length > 128 + || Set.count (sample.Checks |> List.map _.Id |> Set.ofList) <> sample.Checks.Length -> finish Unknown cursor + | Some sample -> + let population = sample.Checks |> List.map _.Id |> List.sort |> List.map string |> String.concat "," |> digest + let semantic = + [ sample.Head; string sample.RunId; string sample.RunAttempt; sample.RunStatus + Option.defaultValue "" sample.RunConclusion; sample.PullRequestState; string sample.Merged; string sample.Draft + canonicalChecks sample.Checks ] |> String.concat "\n" |> digest + let control = [ sample.PullRequestState; string sample.Merged; string sample.Draft ] |> String.concat ":" |> digest + let controlChanged = cursor.Control.IsSome && cursor.Control <> Some control + let changed = cursor.Semantic <> Some semantic + let next = { cursor with Population = Some population; Semantic = Some semantic; Control = Some control + Revision = cursor.Revision + (if changed then 1 else 0) } + let failed _status = function + | Some ("failure" | "cancelled" | "timed_out" | "action_required" | "startup_failure" | "stale") -> true + | _ -> false + let knownStatus status = List.contains status [ "queued"; "in_progress"; "completed"; "waiting"; "pending"; "requested" ] + let successful status conclusion = status = "completed" && List.contains conclusion [ Some "success"; Some "neutral"; Some "skipped" ] + if not (knownStatus sample.RunStatus) || (sample.Checks |> List.exists (fun check -> not (knownStatus check.Status))) then finish Unknown next + elif cursor.Population.IsSome && cursor.Population <> Some population then finish PopulationChanged next + elif sample.PullRequestState = "closed" then finish PullRequestClosed next + elif sample.PullRequestState <> "open" then finish Unknown next + elif failed sample.RunStatus sample.RunConclusion || (sample.Checks |> List.exists (fun check -> failed check.Status check.Conclusion)) then finish Failed next + elif successful sample.RunStatus sample.RunConclusion && (sample.Checks |> List.forall (fun check -> successful check.Status check.Conclusion)) then finish Completed next + elif sample.RunStatus = "completed" || (sample.Checks |> List.exists (fun check -> check.Status = "completed" && not (successful check.Status check.Conclusion))) then finish Unknown next + elif controlChanged then finish MaterialChange next + else AwaitWithinDeadline(next, int (min 5000L (max 0L (next.Budget.WorkDeadline - now)))) + + /// Charge before issuing a request; a crash can lose allowance, never replenish it. + let chargeRequest now cursor = + if now < cursor.Budget.LastClock || now >= cursor.Budget.WorkDeadline || cursor.Budget.RequestsRemaining <= 0 then + Error "original request allowance exhausted" + else Ok { cursor with Budget = { cursor.Budget with LastClock = now; RequestsRemaining = cursor.Budget.RequestsRemaining - 1 } } + + let chargeOutput bytes cursor = + if bytes < 0 || bytes > cursor.Budget.OutputBytesRemaining then Error "original output allowance exhausted" + else Ok { cursor with Budget = { cursor.Budget with OutputBytesRemaining = cursor.Budget.OutputBytesRemaining - bytes } } diff --git a/src/FS.GG.Coord.Core/OperationObservation.fsi b/src/FS.GG.Coord.Core/OperationObservation.fsi new file mode 100644 index 000000000..fd3707aa1 --- /dev/null +++ b/src/FS.GG.Coord.Core/OperationObservation.fsi @@ -0,0 +1,46 @@ +namespace FS.GG.Coord + +/// A read-only attention reducer for one already admitted original CI operation. +module OperationObservation = + open System + + type Identity = + { Issue: string; Slice: string; Attempt: string; Owner: string + SourceRevision: string; IssueUpdatedAt: string; IssueBodySha256: string; Repository: string; PullRequest: int; Head: string + RunId: int64; RunAttempt: int; PopulationRevision: string; Unknowns: string list } + + type Budget = + { ClockDomain: string; Started: int64; WorkDeadline: int64; CleanupDeadline: int64 + LastClock: int64; RequestsRemaining: int; OutputBytesRemaining: int } + + type Check = + { Id: int64; Name: string; Status: string; Conclusion: string option + StartedAt: string option; CompletedAt: string option } + + type Sample = + { Head: string; RunId: int64; RunAttempt: int; RunStatus: string + RunConclusion: string option; PullRequestState: string; Merged: bool; Draft: bool + Checks: Check list; Complete: bool; Gaps: string list } + + type Attention = + | Completed | Failed | PullRequestClosed | HeadChanged | RunChanged + | PopulationChanged | MaterialChange | Unknown | Deadline | BudgetExhausted + | Interrupted | ObservationFailure + + type Cursor = + { Identity: Identity; Budget: Budget; Population: string option; Semantic: string option; Control: string option + Revision: int; Terminal: Attention option; Evidence: string option; Gap: string option } + + type Decision = + | ObserveOriginal of Cursor + | AwaitWithinDeadline of Cursor * milliseconds: int + | ReturnAttention of Cursor * Attention * terminalIdentity: string + + val validateIdentity: Identity -> Result + val start: Identity -> domain: string -> now: int64 -> seconds: int -> Result + val resume: expected: Identity -> domain: string -> now: int64 -> Cursor -> Result + val attentionName: Attention -> string + val finish: Attention -> Cursor -> Decision + val decide: now: int64 -> Sample option -> Cursor -> Decision + val chargeRequest: now: int64 -> Cursor -> Result + val chargeOutput: bytes: int -> Cursor -> Result diff --git a/src/FS.GG.Coord.GitHub/FS.GG.Coord.GitHub.fsproj b/src/FS.GG.Coord.GitHub/FS.GG.Coord.GitHub.fsproj index fd8b56a43..276da338b 100644 --- a/src/FS.GG.Coord.GitHub/FS.GG.Coord.GitHub.fsproj +++ b/src/FS.GG.Coord.GitHub/FS.GG.Coord.GitHub.fsproj @@ -103,6 +103,8 @@ + + diff --git a/src/FS.GG.Coord.GitHub/OperationObservationReads.fs b/src/FS.GG.Coord.GitHub/OperationObservationReads.fs new file mode 100644 index 000000000..94252119a --- /dev/null +++ b/src/FS.GG.Coord.GitHub/OperationObservationReads.fs @@ -0,0 +1,160 @@ +namespace FS.GG.Coord.GitHub + +module OperationObservationReads = + open System + open System.Text + open System.Text.Json + open System.Security.Cryptography + open FS.GG.Coord.OperationObservation + open Transport + + exception private ReadFailure of string + + let collect (transport: IDeadlineSinglePageGitHubTransport) (identity: Identity) clock workDeadline beforeRequest = + let refuse message = raise (ReadFailure message) + let property name (node: JsonElement) = + if node.ValueKind <> JsonValueKind.Object then refuse "native object missing" + match node.TryGetProperty(name: string) with + | true, value -> value + | _ -> refuse "native field missing" + let str name node = + let value = property name node + if value.ValueKind <> JsonValueKind.String then refuse "native text missing" + value.GetString() + let integer name node = + let value = property name node + match value.TryGetInt64() with true, number when number > 0L -> number | _ -> refuse "native positive identity missing" + let optional name node = + let value = property name node + match value.ValueKind with + | JsonValueKind.Null -> None + | JsonValueKind.String -> Some(value.GetString()) + | _ -> refuse "native nullable text malformed" + let boolean name node = + let value = property name node + match value.ValueKind with JsonValueKind.True -> true | JsonValueKind.False -> false | _ -> refuse "native boolean missing" + let rec unique (node: JsonElement) = + match node.ValueKind with + | JsonValueKind.Object -> + let fields = node.EnumerateObject() |> Seq.toList + Set.count (fields |> List.map _.Name |> Set.ofList) = fields.Length && fields |> List.forall (fun field -> unique field.Value) + | JsonValueKind.Array -> node.EnumerateArray() |> Seq.forall unique + | _ -> true + let request path query = + if clock() >= workDeadline then refuse "original work deadline reached" + match beforeRequest() with Error _ -> refuse "original request allowance unavailable" | Ok () -> () + let remaining = min 30000L (workDeadline - clock()) + if remaining <= 0L then refuse "original work deadline reached" + let query = { Method = "GET"; Path = path; Query = query; Body = NoBody; Budget = Rest + IfNoneMatch = None; Subject = "original-operation-observation" } + match transport.SendSingleWithin(query, TimeSpan.FromMilliseconds(float remaining)) with + | Error _ -> refuse "native read unavailable; original effects remain Unknown" + | Ok response -> + if clock() >= workDeadline then refuse "native response after original work deadline" + if response.Status <> 200 then refuse "native read did not return200" + if Encoding.UTF8.GetByteCount response.Body > 262144 then refuse "native page exceeds accepted256KiB bound" + use document = JsonDocument.Parse(response.Body, JsonDocumentOptions(MaxDepth = 24)) + if not (unique document.RootElement) then refuse "duplicate native JSON fields" + document.RootElement.Clone(), response.NextLink + let noNext (value, next) = + if Option.isSome next then refuse "unexpected native continuation" + value + try + match validateIdentity identity with Error _ -> refuse "invalid original operation identity" | Ok _ -> () + let root = "repos/" + identity.Repository + let prPath = root + "/pulls/" + string identity.PullRequest + let issueParts = identity.Issue.Split '#' + let issuePath = "repos/" + issueParts[0] + "/issues/" + issueParts[1] + let checkIssue () = + let issue = request issuePath [] |> noNext + let bodyDigest = SHA256.HashData(Encoding.UTF8.GetBytes(str "body" issue)) |> Convert.ToHexString |> _.ToLowerInvariant() + if str "updated_at" issue <> identity.IssueUpdatedAt || bodyDigest <> identity.IssueBodySha256 + || str "state" issue <> "open" || string (integer "number" issue) <> issueParts[1] then + refuse "owning issue revision or original ownership changed" + checkIssue() + let before = request prPath [] |> noNext + let prHead node = property "head" node |> str "sha" + let head = prHead before + let empty observedHead runId attempt : Sample = + { Head = observedHead; RunId = runId; RunAttempt = attempt; RunStatus = "unknown" + RunConclusion = None; PullRequestState = "unknown"; Merged = false; Draft = false + Checks = []; Complete = false; Gaps = [ "native identity changed" ] } + if head <> identity.Head then Ok(empty head identity.RunId identity.RunAttempt) + else + let runPath = root + "/actions/runs/" + string identity.RunId + let run = request runPath [] |> noNext + let runId = integer "id" run + let attempt = integer "run_attempt" run + let runHead = str "head_sha" run + if attempt > int64 Int32.MaxValue then refuse "unsupported native attempt" + if runId <> identity.RunId || int attempt <> identity.RunAttempt then Ok(empty runHead runId (int attempt)) + elif runHead <> identity.Head then Ok(empty runHead runId (int attempt)) + else + // Native run relation must name this exact PR, including repo, head and source branch. + let relations = property "pull_requests" run + if relations.ValueKind <> JsonValueKind.Array then refuse "native PR association unavailable" + let matches = relations.EnumerateArray() |> Seq.filter (fun relation -> integer "number" relation = int64 identity.PullRequest) |> Seq.toList + if matches.Length <> 1 then refuse "native run/PR association missing or ambiguous" + let relationHead = property "head" matches.Head + if str "sha" relationHead <> identity.Head then refuse "native run/PR head association differs" + let currentHead = property "head" before + if (property "repo" relationHead |> integer "id") <> (property "repo" currentHead |> integer "id") + || (property "repository" run |> str "full_name") <> identity.Repository then + refuse "native run/PR repository association differs" + let jobsPath = runPath + "/attempts/" + string identity.RunAttempt + "/jobs" + let parseJobs page = + let totalValue = property "total_count" page + let total = match totalValue.TryGetInt32() with true, count when count >= 0 && count <= 128 -> count | _ -> refuse "native jobs population exceeds bound or is missing" + let values = property "jobs" page + if values.ValueKind <> JsonValueKind.Array then refuse "native jobs missing" + let jobs = values.EnumerateArray() |> Seq.toList + if jobs.Length > 100 then refuse "native page exceeds requested population" + let checks = jobs |> List.map (fun job -> + if integer "run_id" job <> identity.RunId || integer "run_attempt" job <> int64 identity.RunAttempt + || str "head_sha" job <> identity.Head then refuse "native job identity differs" + { Id = integer "id" job; Name = str "name" job; Status = str "status" job + Conclusion = optional "conclusion" job; StartedAt = optional "started_at" job + CompletedAt = optional "completed_at" job }) + total, checks + let readJobs () = + let first, firstNext = request jobsPath [ "per_page", "100"; "page", "1" ] + let total, firstJobs = parseJobs first + let checks = + if total > 100 then + if firstJobs.Length <> 100 || firstNext.IsNone then refuse "native jobs first page incomplete" + // Construct the sole allowed second page; never follow a provider-supplied URL. + let second, next = request jobsPath [ "per_page", "100"; "page", "2" ] + let secondTotal, secondJobs = parseJobs second + if next.IsSome || secondTotal <> total || firstJobs.Length + secondJobs.Length <> total then refuse "native jobs continuation incomplete or changed" + firstJobs @ secondJobs + else + if firstNext.IsSome || firstJobs.Length <> total then refuse "native jobs page incomplete" + firstJobs + if checks |> List.map _.Id |> Set.ofList |> Set.count <> checks.Length then refuse "duplicate native job identities" + checks + let firstChecks = readJobs() + let checks = readJobs() + if (firstChecks |> List.map _.Id |> Set.ofList) <> (checks |> List.map _.Id |> Set.ofList) then + refuse "native jobs population changed between complete sweeps" + // Re-read run metadata to fence reruns that race jobs acquisition, then PR head. + let afterRun = request runPath [] |> noNext + let after = request prPath [] |> noNext + checkIssue() + if integer "run_attempt" afterRun > int64 Int32.MaxValue then refuse "unsupported native final attempt" + if integer "run_attempt" afterRun <> int64 identity.RunAttempt then + Ok(empty (prHead after) identity.RunId (int (integer "run_attempt" afterRun))) + elif integer "id" afterRun <> identity.RunId || str "head_sha" afterRun <> identity.Head then + refuse "native run identity changed at final barrier" + else + Ok { Head = prHead after; RunId = identity.RunId; RunAttempt = identity.RunAttempt + RunStatus = str "status" afterRun; RunConclusion = optional "conclusion" afterRun + PullRequestState = str "state" after; Merged = boolean "merged" after; Draft = boolean "draft" after + Checks = checks + Complete = str "status" afterRun <> "completed" || str "status" run = "completed" + Gaps = if str "status" afterRun = "completed" && str "status" run <> "completed" + then [ "native run completed across jobs barrier; root reconciliation required" ] else [] } + with + | ReadFailure message -> Error message + | :? JsonException -> Error "malformed native JSON" + | :? InvalidOperationException -> Error "malformed native field kind" + | :? ArgumentException -> Error "malformed native value" diff --git a/src/FS.GG.Coord.GitHub/OperationObservationReads.fsi b/src/FS.GG.Coord.GitHub/OperationObservationReads.fsi new file mode 100644 index 000000000..15432faf5 --- /dev/null +++ b/src/FS.GG.Coord.GitHub/OperationObservationReads.fsi @@ -0,0 +1,13 @@ +namespace FS.GG.Coord.GitHub + +/// One complete bounded native sample for an explicitly selected original Actions run. +module OperationObservationReads = + /// The caller charges and persists original request allowance before every GET. + /// The transport physically caps transient bodies at4MiB; accepted pages are at most256KiB. + /// No mutation interface, retry, redirect, implicit pagination or branch readiness is used. + val collect: + transport: Transport.IDeadlineSinglePageGitHubTransport -> + identity: FS.GG.Coord.OperationObservation.Identity -> + clock: (unit -> int64) -> workDeadline: int64 -> + beforeRequest: (unit -> Result) -> + Result diff --git a/tests/FS.GG.Coord.Cli.Tests/FS.GG.Coord.Cli.Tests.fsproj b/tests/FS.GG.Coord.Cli.Tests/FS.GG.Coord.Cli.Tests.fsproj index 151bfd87c..6a8e7b1be 100644 --- a/tests/FS.GG.Coord.Cli.Tests/FS.GG.Coord.Cli.Tests.fsproj +++ b/tests/FS.GG.Coord.Cli.Tests/FS.GG.Coord.Cli.Tests.fsproj @@ -51,6 +51,7 @@ + diff --git a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs new file mode 100644 index 000000000..4bc3b8108 --- /dev/null +++ b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs @@ -0,0 +1,91 @@ +module FS.GG.Coord.Cli.Tests.OperationObservationApplicationTests + +open System +open Xunit +open FS.GG.Coord.OperationObservation +open FS.GG.Coord.Cli +open FS.GG.Coord.GitHub +open FS.GG.Coord.GitHub.Transport + +let private identity : Identity = + { Issue = "o/r#1"; Slice = "source"; Attempt = "original"; Owner = "owner"; SourceRevision = String.replicate 40 "b"; IssueUpdatedAt = "native-revision" + IssueBodySha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + Repository = "o/r"; PullRequest = 7; Head = String.replicate 40 "a"; RunId = 42L; RunAttempt = 1 + PopulationRevision = "population-1"; Unknowns = [ "unknown-original" ] } +let private original () = start identity "boot-domain" 1000L 11 |> Result.defaultWith failwith +let private issue = """{"number":1,"body":"","state":"open","updated_at":"native-revision"}""" +let private pr = $"""{{"head":{{"sha":"{identity.Head}","repo":{{"id":8}}}},"state":"open","merged":false,"draft":false}}""" +let private run = $"""{{"id":42,"run_attempt":1,"head_sha":"{identity.Head}","status":"in_progress","conclusion":null,"repository":{{"full_name":"o/r"}},"pull_requests":[{{"number":7,"head":{{"sha":"{identity.Head}","repo":{{"id":8}}}}}}]}}""" +let private jobs = $"""{{"total_count":1,"jobs":[{{"id":3,"run_id":42,"run_attempt":1,"head_sha":"{identity.Head}","name":"build","status":"in_progress","conclusion":null,"started_at":null,"completed_at":null}}]}}""" +type private Unchanged() = + let mutable calls = 0 + member _.Calls = calls + interface IDeadlineSinglePageGitHubTransport with + member _.SendSingleWithin(request, _) = + calls <- calls + 1 + let body = if request.Path.Contains("/issues/") then issue elif request.Path.Contains("/pulls/") then pr elif request.Path.EndsWith("/jobs") then jobs else run + Ok { Status = 200; Body = body; Headers = Map.empty; ETag = None; NextLink = None } + +[] +let ``finite application coalesces unchanged ticks into one deadline result with retained spend`` () = + let transport = Unchanged() + let mutable now = 1000L + let saved = ResizeArray() + let mutable evidenceCalls = 0 + let decision = OperationObservationApplication.observe (transport :> IDeadlineSinglePageGitHubTransport) (fun () -> now) + (fun delay -> now <- now + int64 delay) saved.Add (fun _ -> evidenceCalls <- evidenceCalls + 1; "private-evidence", 1, ignore) (original()) + match decision with + | ReturnAttention(cursor, Deadline, _) -> + Assert.Equal(24, transport.Calls) + Assert.Equal(360, cursor.Budget.RequestsRemaining) + Assert.Equal(1, cursor.Revision) + Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) + Assert.Equal(0, evidenceCalls) + Assert.Equal((original()).Budget.WorkDeadline, cursor.Budget.WorkDeadline) + Assert.True(saved.Count > transport.Calls) + | other -> failwithf "expected one bounded deadline attention: %A" other + +[] +let ``interruption retains original allowance and continuation roundtrip`` () = + let transport = Unchanged() + let mutable saved = original() + let result = OperationObservationApplication.observe (transport :> IDeadlineSinglePageGitHubTransport) (fun () -> 1000L) + (fun _ -> raise (OperationCanceledException())) (fun cursor -> saved <- cursor) (fun _ -> "evidence", 1, ignore) saved + match result with + | ReturnAttention(cursor, Interrupted, id) -> + Assert.Equal(376, cursor.Budget.RequestsRemaining) + let decoded = OperationObservationApplication.encodeCursor cursor |> OperationObservationApplication.decodeCursor |> Result.defaultWith failwith + Assert.Equal(cursor, decoded) + match decide 1001L None decoded with + | ReturnAttention(_, Interrupted, replay) -> Assert.Equal(id, replay) + | other -> failwithf "lost original attention: %A" other + | other -> failwithf "expected interruption: %A" other + +[] +let ``corrupt missing unknown and duplicate cursor properties refuse before native IO`` () = + let raw = OperationObservationApplication.encodeCursor (original()) + Assert.True((OperationObservationApplication.decodeCursor "{}") |> Result.isError) + Assert.True((OperationObservationApplication.decodeCursor (raw.Replace("unknown-original", "changed-original"))) |> Result.isError) + Assert.True((OperationObservationApplication.decodeCursor (raw.Replace("{\"schema\":", "{\"schema\":\"duplicate\",\"schema\":"))) |> Result.isError) + Assert.True((OperationObservationApplication.parseInput "{\"schema\":\"unsupported\"}") |> Result.isError) + +[] +let ``late evidence or terminal persistence cannot emit completed observation`` () = + let mutable now = 1000L + let mutable saves = 0 + let completed = + { new IDeadlineSinglePageGitHubTransport with + member _.SendSingleWithin(request, _) = + let body = + if request.Path.Contains("/issues/") then issue + elif request.Path.Contains("/pulls/") then pr + elif request.Path.EndsWith("/jobs") then jobs + else run + let body = body.Replace("\"in_progress\"", "\"completed\"").Replace("\"conclusion\":null", "\"conclusion\":\"success\"") + Ok { Status = 200; Body = body; Headers = Map.empty; ETag = None; NextLink = None } } + let result = OperationObservationApplication.observe completed (fun () -> now) ignore + (fun cursor -> saves <- saves + 1; if cursor.Evidence.IsSome then now <- cursor.Budget.WorkDeadline) + (fun _ -> "private-evidence", 10, (fun () -> ())) (original()) + match result with + | ReturnAttention(_, Deadline, _) -> Assert.True(saves > 8) + | other -> failwithf "late evidence accepted a positive result: %A" other diff --git a/tests/FS.GG.Coord.Core.Tests/FS.GG.Coord.Core.Tests.fsproj b/tests/FS.GG.Coord.Core.Tests/FS.GG.Coord.Core.Tests.fsproj index 4bc960d43..8b3d3a613 100644 --- a/tests/FS.GG.Coord.Core.Tests/FS.GG.Coord.Core.Tests.fsproj +++ b/tests/FS.GG.Coord.Core.Tests/FS.GG.Coord.Core.Tests.fsproj @@ -81,6 +81,7 @@ field by field. Same rule as every line above it: the list carries no globs, and an unlisted file is a suite that runs nowhere. --> + diff --git a/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs b/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs new file mode 100644 index 000000000..253c6e3d7 --- /dev/null +++ b/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs @@ -0,0 +1,94 @@ +namespace FS.GG.Coord.Tests + +open Xunit +open FS.GG.Coord.OperationObservation + +module OperationObservationTests = + let private identity = + { Issue = "FS-GG/.github#4731"; Slice = "observer"; Attempt = "original-1"; Owner = "/root/source" + SourceRevision = String.replicate 40 "b"; IssueUpdatedAt = "native-revision"; IssueBodySha256 = String.replicate 64 "0"; Repository = "o/r"; PullRequest = 7; Head = String.replicate 40 "a" + RunId = 42L; RunAttempt = 1; PopulationRevision = "enrolled43"; Unknowns = [ "original-unknown" ] } + let private cursor () = start identity "boot-1" 1000L 60 |> Result.defaultWith failwith + let private sample = + { Head = identity.Head; RunId = 42L; RunAttempt = 1; RunStatus = "in_progress"; RunConclusion = None + PullRequestState = "open"; Merged = false; Draft = false; Complete = true; Gaps = [] + Checks = [ { Id = 5L; Name = "build"; Status = "in_progress"; Conclusion = None; StartedAt = Some "native-start"; CompletedAt = None } ] } + let private waiting () = + match decide 1100L (Some sample) (cursor()) with + | AwaitWithinDeadline(cursor, _) -> cursor + | other -> failwithf "expected bounded wait: %A" other + let private attention expected decision = + match decision with + | ReturnAttention(cursor, actual, id) -> + Assert.Equal(expected, actual) + Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) + Assert.Equal(64, id.Length) + cursor, id + | other -> failwithf "expected attention: %A" other + + [] + let ``unchanged native ticks preserve revision and produce only a bounded wait`` () = + let original = waiting() + for now in [ 1200L; 2200L; 3200L ] do + match decide now (Some sample) original with + | AwaitWithinDeadline(next, delay) -> + Assert.Equal(original.Revision, next.Revision) + Assert.Equal(original.Budget.WorkDeadline, next.Budget.WorkDeadline) + Assert.InRange(delay, 1, 5000) + | other -> failwithf "unchanged tick woke caller: %A" other + + [] + let ``successful selected run and complete jobs return observation without readiness`` () = + let success = { sample with RunStatus = "completed"; RunConclusion = Some "success" + Checks = sample.Checks |> List.map (fun check -> { check with Status = "completed"; Conclusion = Some "success" }) } + attention Completed (decide 1200L (Some success) (waiting())) |> ignore + + [] + let ``head and rerun changes fence the original identity before completeness`` () = + attention HeadChanged (decide 1200L (Some { sample with Head = String.replicate 40 "c"; Complete = false }) (waiting())) |> ignore + attention RunChanged (decide 1200L (Some { sample with RunAttempt = 2; Complete = false }) (waiting())) |> ignore + + [] + let ``missing population partial failed and unsupported conclusions retain attention`` () = + attention Unknown (decide 1200L (Some { sample with Checks = [] }) (waiting())) |> ignore + attention Unknown (decide 1200L (Some { sample with Complete = false }) (waiting())) |> ignore + attention Failed (decide 1200L (Some { sample with RunStatus = "completed"; RunConclusion = Some "failure" }) (waiting())) |> ignore + attention Unknown (decide 1200L (Some { sample with RunStatus = "completed"; RunConclusion = Some "foreign" }) (waiting())) |> ignore + + [] + let ``population changes and semantic changes are distinct original attention`` () = + attention PopulationChanged (decide 1200L (Some { sample with Checks = [ { sample.Checks.Head with Id = 6L } ] }) (waiting())) |> ignore + let changed = { sample with Draft = true } + let retained, id = attention MaterialChange (decide 1200L (Some changed) (waiting())) + let replay, replayId = attention MaterialChange (decide 1300L None retained) + Assert.Equal(id, replayId) + Assert.Equal(retained.Identity, replay.Identity) + + [] + let ``restart cannot renew original clock deadline identity or budgets`` () = + let original = waiting() + Assert.True((resume identity "boot-2" 1200L original) |> Result.isError) + Assert.True((resume identity "boot-1" 1099L original) |> Result.isError) + Assert.True((resume identity "boot-1" original.Budget.WorkDeadline original) |> Result.isError) + Assert.True((resume { identity with Owner = "/root/foreign" } "boot-1" 1200L original) |> Result.isError) + let resumed = resume identity "boot-1" 1200L original |> Result.defaultWith failwith + Assert.Equal(original.Budget.WorkDeadline, resumed.Budget.WorkDeadline) + Assert.Equal(original.Budget.RequestsRemaining, resumed.Budget.RequestsRemaining) + Assert.True((resume identity "boot-1" 1200L { original with Budget = { original.Budget with RequestsRemaining = 385 } }) |> Result.isError) + + [] + let ``deadline and exhausted requests cannot issue another observation`` () = + let original = waiting() + attention Deadline (decide original.Budget.WorkDeadline None original) |> ignore + attention BudgetExhausted (decide 1200L None { original with Budget = { original.Budget with RequestsRemaining = 0 } }) |> ignore + let charged = chargeRequest 1200L original |> Result.defaultWith failwith + Assert.Equal(383, charged.Budget.RequestsRemaining) + Assert.True((chargeRequest original.Budget.WorkDeadline original) |> Result.isError) + Assert.True((chargeOutput 4194305 original) |> Result.isError) + + [] + let ``pending job progress changes remain internal until actionable`` () = + let progressed = { sample with Checks = [ { sample.Checks.Head with Status = "completed"; Conclusion = Some "success" } ] } + match decide 1200L (Some progressed) (waiting()) with + | AwaitWithinDeadline(cursor, _) -> Assert.Equal(2, cursor.Revision) + | other -> failwithf "pending job progress woke caller: %A" other diff --git a/tests/FS.GG.Coord.GitHub.Tests/FS.GG.Coord.GitHub.Tests.fsproj b/tests/FS.GG.Coord.GitHub.Tests/FS.GG.Coord.GitHub.Tests.fsproj index 9e4689937..ec4e2265e 100644 --- a/tests/FS.GG.Coord.GitHub.Tests/FS.GG.Coord.GitHub.Tests.fsproj +++ b/tests/FS.GG.Coord.GitHub.Tests/FS.GG.Coord.GitHub.Tests.fsproj @@ -47,6 +47,7 @@ + diff --git a/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs b/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs new file mode 100644 index 000000000..6565b2ca6 --- /dev/null +++ b/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs @@ -0,0 +1,117 @@ +module FS.GG.Coord.GitHub.Tests.OperationObservationReadsTests + +open System +open System.Collections.Generic +open Xunit +open FS.GG.Coord.OperationObservation +open FS.GG.Coord.GitHub +open FS.GG.Coord.GitHub.Transport + +let private identity : Identity = + { Issue = "o/r#1"; Slice = "source"; Attempt = "original"; Owner = "owner"; SourceRevision = String.replicate 40 "b"; IssueUpdatedAt = "native-revision" + IssueBodySha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + Repository = "o/r"; PullRequest = 7; Head = String.replicate 40 "a"; RunId = 42L; RunAttempt = 1 + PopulationRevision = "original-population"; Unknowns = [ "unknown-1" ] } +let private response body next : Errors.IoResult = + Ok { Status = 200; Body = body; Headers = Map.empty; ETag = None; NextLink = next } +let private issue = """{"number":1,"body":"","state":"open","updated_at":"native-revision"}""" +let private pr head = $"""{{"head":{{"sha":"{head}","repo":{{"id":8}}}},"state":"open","merged":false,"draft":false}}""" +let private run attempt = $"""{{"id":42,"run_attempt":{attempt},"head_sha":"{identity.Head}","status":"in_progress","conclusion":null,"repository":{{"full_name":"o/r"}},"pull_requests":[{{"number":7,"head":{{"sha":"{identity.Head}","repo":{{"id":8}}}}}}]}}""" +let private jobs = $"""{{"total_count":1,"jobs":[{{"id":3,"run_id":42,"run_attempt":1,"head_sha":"{identity.Head}","name":"build","status":"in_progress","conclusion":null,"started_at":"native-start","completed_at":null}}]}}""" +type private Fake(responses: Errors.IoResult list) = + let queue = Queue<_>(responses) + let calls = ResizeArray() + member _.Calls = calls |> Seq.toList + interface IDeadlineSinglePageGitHubTransport with + member _.SendSingleWithin(request, remaining) = calls.Add(request, remaining); queue.Dequeue() +let private collect fake = + let mutable charged = 0 + let result = OperationObservationReads.collect (fake :> IDeadlineSinglePageGitHubTransport) identity (fun () -> 1000L) 61000L (fun () -> charged <- charged + 1; Ok ()) + result, charged +let private complete () = + [ response issue None; response (pr identity.Head) None; response (run 1) None; response jobs None; response jobs None; response (run 1) None; response (pr identity.Head) None; response issue None ] + +[] +let ``complete selected sample uses only charged bounded GETs and double identity barriers`` () = + let fake = Fake(complete()) + let result, charged = collect fake + let sample = result |> Result.defaultWith failwith + Assert.True(sample.Complete) + Assert.Equal(1, sample.Checks.Length) + Assert.Equal(8, charged) + Assert.Equal(8, fake.Calls.Length) + for request, remaining in fake.Calls do + Assert.Equal("GET", request.Method) + Assert.Equal(NoBody, request.Body) + Assert.InRange(remaining.TotalSeconds, 0.001, 30.0) + +[] +let ``head change after checks and rerun before final barrier remain original changes`` () = + let moved = complete() |> List.mapi (fun index value -> if index = 6 then response (pr (String.replicate 40 "c")) None else value) + let result, _ = collect (Fake moved) + Assert.NotEqual(identity.Head, (result |> Result.defaultWith failwith).Head) + let rerun = complete() |> List.mapi (fun index value -> if index = 5 then response (run 2) None else value) + let result, _ = collect (Fake rerun) + Assert.Equal(2, (result |> Result.defaultWith failwith).RunAttempt) + +[] +let ``missing pages oversize duplicate fields and missing association never become complete`` () = + let badBodies = + [ jobs.Replace("\"total_count\":1", "\"total_count\":2") + jobs.Replace("\"total_count\":1", "\"total_count\":1,\"total_count\":1") + String.replicate 262145 " " ] + for body in badBodies do + let fake = Fake [ response issue None; response (pr identity.Head) None; response (run 1) None; response body None ] + let result, _ = collect fake + Assert.True(result |> Result.isError) + let fake = Fake [ response issue None; response (pr identity.Head) None; response ((run 1).Replace("\"pull_requests\":[", "\"unsupported\":[")) None ] + Assert.True((collect fake |> fst) |> Result.isError) + +[] +let ``exhausted allowance and elapsed deadline issue no native request`` () = + let fake = Fake [] + let denied = OperationObservationReads.collect (fake :> IDeadlineSinglePageGitHubTransport) identity (fun () -> 1000L) 61000L (fun () -> Error "spent") + let expired = OperationObservationReads.collect (fake :> IDeadlineSinglePageGitHubTransport) identity (fun () -> 61000L) 61000L (fun () -> Ok ()) + Assert.True(Result.isError denied && Result.isError expired) + Assert.Empty fake.Calls + +[] +let ``two complete128job sweeps charge exact explicit pages and reject bad second page`` () = + let job id = $"""{{"id":{id},"run_id":42,"run_attempt":1,"head_sha":"{identity.Head}","name":"build","status":"in_progress","conclusion":null,"started_at":null,"completed_at":null}}""" + let page ids = "{\"total_count\":128,\"jobs\":[" + (ids |> List.map job |> String.concat ",") + "]}" + let first = response (page [1..100]) (Some "provider-next-page") + let second = response (page [101..128]) None + let prefix = [ response issue None; response (pr identity.Head) None; response (run 1) None ] + let suffix = [ response (run 1) None; response (pr identity.Head) None; response issue None ] + let fake = Fake(prefix @ [first;second;first;second] @ suffix) + let result, charged = collect fake + Assert.Equal(128, (result |> Result.defaultWith failwith).Checks.Length) + Assert.Equal(10, charged) + let pages = fake.Calls |> List.filter (fun (request, _) -> request.Path.EndsWith("/jobs")) + Assert.Equal([ "1"; "2"; "1"; "2" ], pages |> List.map (fun (request, _) -> request.Query |> List.find (fst >> (=) "page") |> snd)) + let badSeconds = + [ response ((page [101..128]).Replace("\"total_count\":128", "\"total_count\":127")) None + response (page [100..127]) None + response "{" None + response (page [101..128]) (Some "unexpected-third-page") ] + for badSecond in badSeconds do + Assert.True((collect (Fake(prefix @ [first;badSecond])) |> fst) |> Result.isError) + +[] +let ``native read failure and response arriving after original deadline cannot become success`` () = + Assert.True((collect (Fake [ Error(Errors.Transport "native unavailable") ]) |> fst) |> Result.isError) + let mutable now = 1000L + let mutable calls = 0 + let late = + { new IDeadlineSinglePageGitHubTransport with + member _.SendSingleWithin(_, _) = calls <- calls + 1; now <- 2000L; response issue None } + let result = OperationObservationReads.collect late identity (fun () -> now) 1500L (fun () -> Ok ()) + Assert.True(result |> Result.isError) + Assert.Equal(1, calls) + +[] +let ``owning issue revision changes and jobs population changes preserve explicit gaps`` () = + let changedIssue = complete() |> List.mapi (fun index value -> if index = 7 then response (issue.Replace("native-revision", "changed-revision")) None else value) + Assert.True((collect (Fake changedIssue) |> fst) |> Result.isError) + let changedJobs = complete() |> List.mapi (fun index value -> if index = 4 then response (jobs.Replace("\"id\":3", "\"id\":4")) None else value) + Assert.True((collect (Fake changedJobs) |> fst) |> Result.isError) From 0375596317a64e30a430520f1fe7e79634568b90 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 11:20:29 +0200 Subject: [PATCH 02/13] fix(coord): retain evidence before replayable observer result --- .../OperationObservationApplication.fs | 4 +- .../OperationObservationApplicationTests.fs | 58 +++++++++++++++---- 2 files changed, 51 insertions(+), 11 deletions(-) diff --git a/src/FS.GG.Coord.Cli/OperationObservationApplication.fs b/src/FS.GG.Coord.Cli/OperationObservationApplication.fs index c952762a0..100cc0ac1 100644 --- a/src/FS.GG.Coord.Cli/OperationObservationApplication.fs +++ b/src/FS.GG.Coord.Cli/OperationObservationApplication.fs @@ -141,7 +141,9 @@ module OperationObservationApplication = match chargeOutput bytes cursor with | Error _ -> current <- cursor; stop BudgetExhausted | Ok charged -> - retain charged + // A crash before evidence custody must resume native observation, + // never replay a terminal result whose sample was not retained. + retain { charged with Terminal = None; Evidence = None } if clock() >= charged.Budget.WorkDeadline then stop Deadline else write() diff --git a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs index 4bc3b8108..83ef5321a 100644 --- a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs +++ b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs @@ -26,6 +26,17 @@ type private Unchanged() = let body = if request.Path.Contains("/issues/") then issue elif request.Path.Contains("/pulls/") then pr elif request.Path.EndsWith("/jobs") then jobs else run Ok { Status = 200; Body = body; Headers = Map.empty; ETag = None; NextLink = None } +let private completedTransport () = + { new IDeadlineSinglePageGitHubTransport with + member _.SendSingleWithin(request, _) = + let body = + if request.Path.Contains("/issues/") then issue + elif request.Path.Contains("/pulls/") then pr + elif request.Path.EndsWith("/jobs") then jobs + else run + let body = body.Replace("\"in_progress\"", "\"completed\"").Replace("\"conclusion\":null", "\"conclusion\":\"success\"") + Ok { Status = 200; Body = body; Headers = Map.empty; ETag = None; NextLink = None } } + [] let ``finite application coalesces unchanged ticks into one deadline result with retained spend`` () = let transport = Unchanged() @@ -73,19 +84,46 @@ let ``corrupt missing unknown and duplicate cursor properties refuse before nati let ``late evidence or terminal persistence cannot emit completed observation`` () = let mutable now = 1000L let mutable saves = 0 - let completed = - { new IDeadlineSinglePageGitHubTransport with - member _.SendSingleWithin(request, _) = - let body = - if request.Path.Contains("/issues/") then issue - elif request.Path.Contains("/pulls/") then pr - elif request.Path.EndsWith("/jobs") then jobs - else run - let body = body.Replace("\"in_progress\"", "\"completed\"").Replace("\"conclusion\":null", "\"conclusion\":\"success\"") - Ok { Status = 200; Body = body; Headers = Map.empty; ETag = None; NextLink = None } } + let completed = completedTransport() let result = OperationObservationApplication.observe completed (fun () -> now) ignore (fun cursor -> saves <- saves + 1; if cursor.Evidence.IsSome then now <- cursor.Budget.WorkDeadline) (fun _ -> "private-evidence", 10, (fun () -> ())) (original()) match result with | ReturnAttention(_, Deadline, _) -> Assert.True(saves > 8) | other -> failwithf "late evidence accepted a positive result: %A" other + +[] +let ``crash before evidence custody leaves only charged nonterminal continuation`` () = + let mutable saved = original() + let mutable evidenceWrites = 0 + let staged = ResizeArray() + let persist cursor = saved <- cursor; staged.Add cursor + Assert.Throws(fun () -> + OperationObservationApplication.observe (completedTransport()) (fun () -> 1000L) ignore persist + (fun _ -> "private-evidence", 10, (fun () -> + evidenceWrites <- evidenceWrites + 1 + invalidOp "injected stop before evidence custody")) (original()) |> ignore) |> ignore + Assert.Equal(1, evidenceWrites) + Assert.True(staged |> Seq.forall (fun cursor -> cursor.Terminal <> Some Completed)) + Assert.True(saved.Terminal.IsNone) + Assert.True(saved.Evidence.IsNone) + Assert.Equal(376, saved.Budget.RequestsRemaining) + Assert.Equal((original()).Budget.OutputBytesRemaining - 10, saved.Budget.OutputBytesRemaining) + let recovered = saved |> OperationObservationApplication.encodeCursor |> OperationObservationApplication.decodeCursor |> Result.defaultWith failwith + let resumed = resume identity "boot-domain" 1001L recovered |> Result.defaultWith failwith + match decide 1001L None resumed with + | ObserveOriginal _ -> () + | other -> failwithf "pre-evidence crash left a replayable terminal: %A" other + let mutable evidenceRetained = false + let accepted = OperationObservationApplication.observe (completedTransport()) (fun () -> 1001L) ignore + (fun cursor -> + if cursor.Terminal = Some Completed then Assert.True(evidenceRetained && cursor.Evidence = Some "recovered-evidence") + saved <- cursor) + (fun _ -> "recovered-evidence", 10, (fun () -> evidenceRetained <- true)) resumed + match accepted with + | ReturnAttention(cursor, Completed, _) -> + Assert.True(evidenceRetained) + Assert.Equal(368, cursor.Budget.RequestsRemaining) + Assert.Equal((original()).Budget.WorkDeadline, cursor.Budget.WorkDeadline) + Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) + | other -> failwithf "fresh original observation did not establish custody: %A" other From 4f4f460a3a1552ce8103ad19df053bd31bb5ddc4 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:01:19 +0200 Subject: [PATCH 03/13] fix(coord): disambiguate list assertions in observer controls --- .../OperationObservationApplicationTests.fs | 4 ++-- tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs | 2 +- .../OperationObservationReadsTests.fs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs index 83ef5321a..cd9821811 100644 --- a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs +++ b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs @@ -50,7 +50,7 @@ let ``finite application coalesces unchanged ticks into one deadline result with Assert.Equal(24, transport.Calls) Assert.Equal(360, cursor.Budget.RequestsRemaining) Assert.Equal(1, cursor.Revision) - Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) + Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) Assert.Equal(0, evidenceCalls) Assert.Equal((original()).Budget.WorkDeadline, cursor.Budget.WorkDeadline) Assert.True(saved.Count > transport.Calls) @@ -125,5 +125,5 @@ let ``crash before evidence custody leaves only charged nonterminal continuation Assert.True(evidenceRetained) Assert.Equal(368, cursor.Budget.RequestsRemaining) Assert.Equal((original()).Budget.WorkDeadline, cursor.Budget.WorkDeadline) - Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) + Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) | other -> failwithf "fresh original observation did not establish custody: %A" other diff --git a/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs b/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs index 253c6e3d7..003581b9e 100644 --- a/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs +++ b/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs @@ -21,7 +21,7 @@ module OperationObservationTests = match decision with | ReturnAttention(cursor, actual, id) -> Assert.Equal(expected, actual) - Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) + Assert.Equal(identity.Unknowns, cursor.Identity.Unknowns) Assert.Equal(64, id.Length) cursor, id | other -> failwithf "expected attention: %A" other diff --git a/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs b/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs index 6565b2ca6..60889c9e0 100644 --- a/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs +++ b/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs @@ -88,7 +88,7 @@ let ``two complete128job sweeps charge exact explicit pages and reject bad secon Assert.Equal(128, (result |> Result.defaultWith failwith).Checks.Length) Assert.Equal(10, charged) let pages = fake.Calls |> List.filter (fun (request, _) -> request.Path.EndsWith("/jobs")) - Assert.Equal([ "1"; "2"; "1"; "2" ], pages |> List.map (fun (request, _) -> request.Query |> List.find (fst >> (=) "page") |> snd)) + Assert.Equal([ "1"; "2"; "1"; "2" ], pages |> List.map (fun (request, _) -> request.Query |> List.find (fst >> (=) "page") |> snd)) let badSeconds = [ response ((page [101..128]).Replace("\"total_count\":128", "\"total_count\":127")) None response (page [100..127]) None From f2562639682bc8f3aa57824a641dbd61c458a421 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:05:32 +0200 Subject: [PATCH 04/13] fix(coord): bind observer callbacks to declared concrete types --- src/FS.GG.Coord.Cli/OperationObservationApplication.fs | 3 ++- src/FS.GG.Coord.GitHub/OperationObservationReads.fs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/FS.GG.Coord.Cli/OperationObservationApplication.fs b/src/FS.GG.Coord.Cli/OperationObservationApplication.fs index 100cc0ac1..c70f9be43 100644 --- a/src/FS.GG.Coord.Cli/OperationObservationApplication.fs +++ b/src/FS.GG.Coord.Cli/OperationObservationApplication.fs @@ -101,7 +101,8 @@ module OperationObservationApplication = invalidArg "json" "corrupt cursor custody" body) json |> Result.bind decodeCursorBody - let observe transport clock sleep persist evidence initial = + let observe transport clock sleep (persist: Cursor -> unit) + (evidence: Sample -> string * int * (unit -> unit)) initial = let mutable current = initial let mutable answer = None let retain cursor = persist cursor; current <- cursor diff --git a/src/FS.GG.Coord.GitHub/OperationObservationReads.fs b/src/FS.GG.Coord.GitHub/OperationObservationReads.fs index 94252119a..522177f85 100644 --- a/src/FS.GG.Coord.GitHub/OperationObservationReads.fs +++ b/src/FS.GG.Coord.GitHub/OperationObservationReads.fs @@ -10,7 +10,7 @@ module OperationObservationReads = exception private ReadFailure of string - let collect (transport: IDeadlineSinglePageGitHubTransport) (identity: Identity) clock workDeadline beforeRequest = + let collect (transport: IDeadlineSinglePageGitHubTransport) (identity: Identity) clock workDeadline (beforeRequest: unit -> Result) = let refuse message = raise (ReadFailure message) let property name (node: JsonElement) = if node.ValueKind <> JsonValueKind.Object then refuse "native object missing" From 084dfc53c166f6e599febc20976740a1bf885884 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:08:54 +0200 Subject: [PATCH 05/13] fix(coord): disambiguate string assertions across observer controls --- .../OperationObservationApplicationTests.fs | 2 +- tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs | 2 +- .../OperationObservationReadsTests.fs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs index cd9821811..c3f4a645b 100644 --- a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs +++ b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs @@ -68,7 +68,7 @@ let ``interruption retains original allowance and continuation roundtrip`` () = let decoded = OperationObservationApplication.encodeCursor cursor |> OperationObservationApplication.decodeCursor |> Result.defaultWith failwith Assert.Equal(cursor, decoded) match decide 1001L None decoded with - | ReturnAttention(_, Interrupted, replay) -> Assert.Equal(id, replay) + | ReturnAttention(_, Interrupted, replay) -> Assert.Equal(id, replay) | other -> failwithf "lost original attention: %A" other | other -> failwithf "expected interruption: %A" other diff --git a/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs b/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs index 003581b9e..ee509d68e 100644 --- a/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs +++ b/tests/FS.GG.Coord.Core.Tests/OperationObservationTests.fs @@ -61,7 +61,7 @@ module OperationObservationTests = let changed = { sample with Draft = true } let retained, id = attention MaterialChange (decide 1200L (Some changed) (waiting())) let replay, replayId = attention MaterialChange (decide 1300L None retained) - Assert.Equal(id, replayId) + Assert.Equal(id, replayId) Assert.Equal(retained.Identity, replay.Identity) [] diff --git a/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs b/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs index 60889c9e0..7e6e8b436 100644 --- a/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs +++ b/tests/FS.GG.Coord.GitHub.Tests/OperationObservationReadsTests.fs @@ -41,7 +41,7 @@ let ``complete selected sample uses only charged bounded GETs and double identit Assert.Equal(8, charged) Assert.Equal(8, fake.Calls.Length) for request, remaining in fake.Calls do - Assert.Equal("GET", request.Method) + Assert.Equal("GET", request.Method) Assert.Equal(NoBody, request.Body) Assert.InRange(remaining.TotalSeconds, 0.001, 30.0) @@ -49,7 +49,7 @@ let ``complete selected sample uses only charged bounded GETs and double identit let ``head change after checks and rerun before final barrier remain original changes`` () = let moved = complete() |> List.mapi (fun index value -> if index = 6 then response (pr (String.replicate 40 "c")) None else value) let result, _ = collect (Fake moved) - Assert.NotEqual(identity.Head, (result |> Result.defaultWith failwith).Head) + Assert.NotEqual(identity.Head, (result |> Result.defaultWith failwith).Head) let rerun = complete() |> List.mapi (fun index value -> if index = 5 then response (run 2) None else value) let result, _ = collect (Fake rerun) Assert.Equal(2, (result |> Result.defaultWith failwith).RunAttempt) From 7478705a4841750833a7237469f79251f69c71ea Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:10:39 +0200 Subject: [PATCH 06/13] fix(coord): ensure duplicate cursor field fixture changes root --- .../OperationObservationApplicationTests.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs index c3f4a645b..65a212dc4 100644 --- a/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs +++ b/tests/FS.GG.Coord.Cli.Tests/OperationObservationApplicationTests.fs @@ -77,7 +77,7 @@ let ``corrupt missing unknown and duplicate cursor properties refuse before nati let raw = OperationObservationApplication.encodeCursor (original()) Assert.True((OperationObservationApplication.decodeCursor "{}") |> Result.isError) Assert.True((OperationObservationApplication.decodeCursor (raw.Replace("unknown-original", "changed-original"))) |> Result.isError) - Assert.True((OperationObservationApplication.decodeCursor (raw.Replace("{\"schema\":", "{\"schema\":\"duplicate\",\"schema\":"))) |> Result.isError) + Assert.True((OperationObservationApplication.decodeCursor (raw.Insert(1, "\"schema\":\"duplicate\","))) |> Result.isError) Assert.True((OperationObservationApplication.parseInput "{\"schema\":\"unsupported\"}") |> Result.isError) [] From bd58fcfdecd6676a09fd6f338d095b5d67b41611 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:16:05 +0200 Subject: [PATCH 07/13] Capture finite original-operation observer source boundary --- .agents/skills/atlas/assets/seed/catalog.json | 2 +- ...061e97863697df44f43b093d6e8b84ba67b5838f2fb.json | 1 + .claude/skills/atlas/assets/seed/catalog.json | 2 +- ...061e97863697df44f43b093d6e8b84ba67b5838f2fb.json | 1 + docs/atlas/catalog.json | 2 +- ...061e97863697df44f43b093d6e8b84ba67b5838f2fb.json | 1 + registry/driver-skill-manifest.json | 13 +++++++++---- 7 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 .agents/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json create mode 100644 .claude/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json create mode 100644 docs/atlas/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json diff --git a/.agents/skills/atlas/assets/seed/catalog.json b/.agents/skills/atlas/assets/seed/catalog.json index b4485a4ce..4476dcf8e 100644 --- a/.agents/skills/atlas/assets/seed/catalog.json +++ b/.agents/skills/atlas/assets/seed/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/.agents/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json b/.agents/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json new file mode 100644 index 000000000..3d56d699e --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json @@ -0,0 +1 @@ +{"citations":[{"path":"src/FS.GG.Coord.Core/OperationObservation.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"44e047443bd8cff3b06c5004088bfaf19ecf1a555991965de7ddb6de5002bfc8"},{"path":"src/FS.GG.Coord.Core/OperationObservation.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"d7887574e43963f7f4b8405375700656c1eecfa3eadfa20e62cb2f7eeed23269"},{"path":"src/FS.GG.Coord.GitHub/OperationObservationReads.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"6c7be70de4fc56303147b84ebb650e634c3a8fd3615056d2aa90739fae771ba0"},{"path":"src/FS.GG.Coord.GitHub/OperationObservationReads.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"271f309420c9ee509353e03cc3caa4ee3f321a47a7215b4f6b5f3c869c00c5bc"},{"path":"src/FS.GG.Coord.GitHub/Transport.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"ae98e9b164642e9c664de8096c60815d39e296fa53f9dce1e1b8fbc566972aae"},{"path":"src/FS.GG.Coord.Cli/OperationObservationApplication.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"7975391b55f710dfbad5f61e505a1cf6eaf6e7600c92eb360cde21c214539f1c"},{"path":"src/FS.GG.Coord.Cli/OperationObservationApplication.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"3d5e0fb2377b963144bc623ba520347ff9d63ab5788f8ce22825d1e3fcd00c86"},{"path":".agents/skills/work-board/references/observation.md","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"829dd0cb8b0e19e4715f3cbf23402e472ac9138e35f75a7e1f249683b821a261"},{"path":"docs/roadmaps/2026-10-05-programme-context-efficiency.md","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"c4caf355fb6026011e2341268fb3ac2a69c9db495036f1d5865e37e4010132df"}],"conflictsWith":[],"id":"coordination/original-operation-observation-boundary","kind":"boundary","recordedAt":"2026-10-20T10:14:16Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"The selected F# source adds one finite read-only attention invocation for an explicitly identified, already-running GitHub Actions run/attempt. Core reduces observations; the GitHub adapter reads native facts; the existing engine CLI owns local continuation. Exact input retains owning issue/body update and digest, source, owner, slice/original attempt, PR/head, run/attempt, population revision and original Unknown identifiers. These attributed inputs and the cursor confer no authority. No scheduler, model callback per pending tick, arbitrary command recipe, dispatch, retry, Status write, reservation release or merge-readiness decision is added.\nThe original 1–600-second window includes a 500ms cleanup reserve; it starts with 384 requests and 4MiB accepted evidence/result output. Linux boot identity and monotonic ticks bind continuation. Resume retains absolute work/cleanup deadlines and remaining budgets, refusing changed identity/clock, backwards time, corrupt or expired custody before native reads. Requests are charged and persisted before sending; a crash may spend allowance without progress but cannot replenish it. Pending progress stays internal, with waits at most five seconds; actionable change, terminal observation, gap or deadline returns one compact attention result.\nAn ordinary complete sample uses two owning-issue reads, two PR reads, two run reads and two complete selected-attempt job sweeps: eight GETs through 100 jobs, ten for 101–128. Pages are constructed explicitly, complete counts and unique identities are checked, and each job binds run/attempt/head. Population disagreement, incomplete/unsupported observations or completion across the run/jobs barrier cannot become positive completion. This is the selected run population, not every required PR check. Each GET uses at most 30 seconds within remaining work time. The reused transport may transiently acquire 4MiB; only pages of at most 256KiB are accepted before parsing. The latter is not an acquisition cap or a process memory bound.\nFor a sample-derived terminal, output charge is persisted with Terminal/Evidence cleared, then evidence is written, then the terminal and evidence reference are persisted. A hard interruption before evidence custody resumes native observation from the retained pending cursor; it cannot replay an unretained positive sample. Durable terminal attention replays its stable identity only within the original window. Deadline checks after evidence/persistence and before final output prevent late completion delivery. Local checksum, exclusive lock and flushed file replacement do not establish hostile-tamper protection, directory/disk-loss durability or exactly-once delivery.\nThe original Unknowns and reservations remain untouched. Existing Python observation remains a separate bounded rollback route and cannot consume this cursor or renew an expired window. Source review is distinct from required CI, coherent publication, verified installed caller/instruction discovery and necessary real observation/restart/deadline/rollback acceptance. No native acceptance, whole-family economic benefit or current operational permission follows from this record.","supersedes":[],"tags":["coordination","observer","deadline","recovery","cursor","budget","unknown","source"],"title":"Finite original-operation observation retains clocks, budgets and uncertainty without execution authority"} diff --git a/.claude/skills/atlas/assets/seed/catalog.json b/.claude/skills/atlas/assets/seed/catalog.json index b4485a4ce..4476dcf8e 100644 --- a/.claude/skills/atlas/assets/seed/catalog.json +++ b/.claude/skills/atlas/assets/seed/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/.claude/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json b/.claude/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json new file mode 100644 index 000000000..3d56d699e --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json @@ -0,0 +1 @@ +{"citations":[{"path":"src/FS.GG.Coord.Core/OperationObservation.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"44e047443bd8cff3b06c5004088bfaf19ecf1a555991965de7ddb6de5002bfc8"},{"path":"src/FS.GG.Coord.Core/OperationObservation.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"d7887574e43963f7f4b8405375700656c1eecfa3eadfa20e62cb2f7eeed23269"},{"path":"src/FS.GG.Coord.GitHub/OperationObservationReads.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"6c7be70de4fc56303147b84ebb650e634c3a8fd3615056d2aa90739fae771ba0"},{"path":"src/FS.GG.Coord.GitHub/OperationObservationReads.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"271f309420c9ee509353e03cc3caa4ee3f321a47a7215b4f6b5f3c869c00c5bc"},{"path":"src/FS.GG.Coord.GitHub/Transport.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"ae98e9b164642e9c664de8096c60815d39e296fa53f9dce1e1b8fbc566972aae"},{"path":"src/FS.GG.Coord.Cli/OperationObservationApplication.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"7975391b55f710dfbad5f61e505a1cf6eaf6e7600c92eb360cde21c214539f1c"},{"path":"src/FS.GG.Coord.Cli/OperationObservationApplication.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"3d5e0fb2377b963144bc623ba520347ff9d63ab5788f8ce22825d1e3fcd00c86"},{"path":".agents/skills/work-board/references/observation.md","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"829dd0cb8b0e19e4715f3cbf23402e472ac9138e35f75a7e1f249683b821a261"},{"path":"docs/roadmaps/2026-10-05-programme-context-efficiency.md","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"c4caf355fb6026011e2341268fb3ac2a69c9db495036f1d5865e37e4010132df"}],"conflictsWith":[],"id":"coordination/original-operation-observation-boundary","kind":"boundary","recordedAt":"2026-10-20T10:14:16Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"The selected F# source adds one finite read-only attention invocation for an explicitly identified, already-running GitHub Actions run/attempt. Core reduces observations; the GitHub adapter reads native facts; the existing engine CLI owns local continuation. Exact input retains owning issue/body update and digest, source, owner, slice/original attempt, PR/head, run/attempt, population revision and original Unknown identifiers. These attributed inputs and the cursor confer no authority. No scheduler, model callback per pending tick, arbitrary command recipe, dispatch, retry, Status write, reservation release or merge-readiness decision is added.\nThe original 1–600-second window includes a 500ms cleanup reserve; it starts with 384 requests and 4MiB accepted evidence/result output. Linux boot identity and monotonic ticks bind continuation. Resume retains absolute work/cleanup deadlines and remaining budgets, refusing changed identity/clock, backwards time, corrupt or expired custody before native reads. Requests are charged and persisted before sending; a crash may spend allowance without progress but cannot replenish it. Pending progress stays internal, with waits at most five seconds; actionable change, terminal observation, gap or deadline returns one compact attention result.\nAn ordinary complete sample uses two owning-issue reads, two PR reads, two run reads and two complete selected-attempt job sweeps: eight GETs through 100 jobs, ten for 101–128. Pages are constructed explicitly, complete counts and unique identities are checked, and each job binds run/attempt/head. Population disagreement, incomplete/unsupported observations or completion across the run/jobs barrier cannot become positive completion. This is the selected run population, not every required PR check. Each GET uses at most 30 seconds within remaining work time. The reused transport may transiently acquire 4MiB; only pages of at most 256KiB are accepted before parsing. The latter is not an acquisition cap or a process memory bound.\nFor a sample-derived terminal, output charge is persisted with Terminal/Evidence cleared, then evidence is written, then the terminal and evidence reference are persisted. A hard interruption before evidence custody resumes native observation from the retained pending cursor; it cannot replay an unretained positive sample. Durable terminal attention replays its stable identity only within the original window. Deadline checks after evidence/persistence and before final output prevent late completion delivery. Local checksum, exclusive lock and flushed file replacement do not establish hostile-tamper protection, directory/disk-loss durability or exactly-once delivery.\nThe original Unknowns and reservations remain untouched. Existing Python observation remains a separate bounded rollback route and cannot consume this cursor or renew an expired window. Source review is distinct from required CI, coherent publication, verified installed caller/instruction discovery and necessary real observation/restart/deadline/rollback acceptance. No native acceptance, whole-family economic benefit or current operational permission follows from this record.","supersedes":[],"tags":["coordination","observer","deadline","recovery","cursor","budget","unknown","source"],"title":"Finite original-operation observation retains clocks, budgets and uncertainty without execution authority"} diff --git a/docs/atlas/catalog.json b/docs/atlas/catalog.json index b4485a4ce..4476dcf8e 100644 --- a/docs/atlas/catalog.json +++ b/docs/atlas/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/docs/atlas/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json b/docs/atlas/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json new file mode 100644 index 000000000..3d56d699e --- /dev/null +++ b/docs/atlas/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json @@ -0,0 +1 @@ +{"citations":[{"path":"src/FS.GG.Coord.Core/OperationObservation.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"44e047443bd8cff3b06c5004088bfaf19ecf1a555991965de7ddb6de5002bfc8"},{"path":"src/FS.GG.Coord.Core/OperationObservation.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"d7887574e43963f7f4b8405375700656c1eecfa3eadfa20e62cb2f7eeed23269"},{"path":"src/FS.GG.Coord.GitHub/OperationObservationReads.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"6c7be70de4fc56303147b84ebb650e634c3a8fd3615056d2aa90739fae771ba0"},{"path":"src/FS.GG.Coord.GitHub/OperationObservationReads.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"271f309420c9ee509353e03cc3caa4ee3f321a47a7215b4f6b5f3c869c00c5bc"},{"path":"src/FS.GG.Coord.GitHub/Transport.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"ae98e9b164642e9c664de8096c60815d39e296fa53f9dce1e1b8fbc566972aae"},{"path":"src/FS.GG.Coord.Cli/OperationObservationApplication.fs","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"7975391b55f710dfbad5f61e505a1cf6eaf6e7600c92eb360cde21c214539f1c"},{"path":"src/FS.GG.Coord.Cli/OperationObservationApplication.fsi","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"3d5e0fb2377b963144bc623ba520347ff9d63ab5788f8ce22825d1e3fcd00c86"},{"path":".agents/skills/work-board/references/observation.md","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"829dd0cb8b0e19e4715f3cbf23402e472ac9138e35f75a7e1f249683b821a261"},{"path":"docs/roadmaps/2026-10-05-programme-context-efficiency.md","repository":"FS-GG/.github","revision":"7478705a4841750833a7237469f79251f69c71ea","sha256":"c4caf355fb6026011e2341268fb3ac2a69c9db495036f1d5865e37e4010132df"}],"conflictsWith":[],"id":"coordination/original-operation-observation-boundary","kind":"boundary","recordedAt":"2026-10-20T10:14:16Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"The selected F# source adds one finite read-only attention invocation for an explicitly identified, already-running GitHub Actions run/attempt. Core reduces observations; the GitHub adapter reads native facts; the existing engine CLI owns local continuation. Exact input retains owning issue/body update and digest, source, owner, slice/original attempt, PR/head, run/attempt, population revision and original Unknown identifiers. These attributed inputs and the cursor confer no authority. No scheduler, model callback per pending tick, arbitrary command recipe, dispatch, retry, Status write, reservation release or merge-readiness decision is added.\nThe original 1–600-second window includes a 500ms cleanup reserve; it starts with 384 requests and 4MiB accepted evidence/result output. Linux boot identity and monotonic ticks bind continuation. Resume retains absolute work/cleanup deadlines and remaining budgets, refusing changed identity/clock, backwards time, corrupt or expired custody before native reads. Requests are charged and persisted before sending; a crash may spend allowance without progress but cannot replenish it. Pending progress stays internal, with waits at most five seconds; actionable change, terminal observation, gap or deadline returns one compact attention result.\nAn ordinary complete sample uses two owning-issue reads, two PR reads, two run reads and two complete selected-attempt job sweeps: eight GETs through 100 jobs, ten for 101–128. Pages are constructed explicitly, complete counts and unique identities are checked, and each job binds run/attempt/head. Population disagreement, incomplete/unsupported observations or completion across the run/jobs barrier cannot become positive completion. This is the selected run population, not every required PR check. Each GET uses at most 30 seconds within remaining work time. The reused transport may transiently acquire 4MiB; only pages of at most 256KiB are accepted before parsing. The latter is not an acquisition cap or a process memory bound.\nFor a sample-derived terminal, output charge is persisted with Terminal/Evidence cleared, then evidence is written, then the terminal and evidence reference are persisted. A hard interruption before evidence custody resumes native observation from the retained pending cursor; it cannot replay an unretained positive sample. Durable terminal attention replays its stable identity only within the original window. Deadline checks after evidence/persistence and before final output prevent late completion delivery. Local checksum, exclusive lock and flushed file replacement do not establish hostile-tamper protection, directory/disk-loss durability or exactly-once delivery.\nThe original Unknowns and reservations remain untouched. Existing Python observation remains a separate bounded rollback route and cannot consume this cursor or renew an expired window. Source review is distinct from required CI, coherent publication, verified installed caller/instruction discovery and necessary real observation/restart/deadline/rollback acceptance. No native acceptance, whole-family economic benefit or current operational permission follows from this record.","supersedes":[],"tags":["coordination","observer","deadline","recovery","cursor","budget","unknown","source"],"title":"Finite original-operation observation retains clocks, budgets and uncertainty without execution authority"} diff --git a/registry/driver-skill-manifest.json b/registry/driver-skill-manifest.json index f1c87e48b..4d378c3a2 100644 --- a/registry/driver-skill-manifest.json +++ b/registry/driver-skill-manifest.json @@ -5,7 +5,7 @@ "id": "atlas", "scope": "driver", "sha256": "c18e56fcc56abf80903e2fc6829cd94b44f42947724a26318ebcbf1ac5e1b35b", - "tree-sha256": "c8f846491e8e0f8b28779c2348e95815780eb48a2a56d98fe1969d445f4c8228", + "tree-sha256": "f344a969b8ceb7b3b890260f38f42f72427314f952b4b4e955ec3c973a05b4fc", "files": [ { "path": "SKILL.md", @@ -24,7 +24,7 @@ }, { "path": "assets/seed/catalog.json", - "sha256": "5946d84cec66b9dbb0123b67216e49c9d29e51bff02b1e8575720708941d9dbf", + "sha256": "3c8ddc0dbbd9255d4bc0e4be0c726c923a93d13e7cb648b5076baaece9b48bb1", "executable": false }, { @@ -1387,6 +1387,11 @@ "sha256": "d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f", "executable": false }, + { + "path": "assets/seed/records/d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb.json", + "sha256": "d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb", + "executable": false + }, { "path": "assets/seed/records/d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947.json", "sha256": "d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947", @@ -1965,7 +1970,7 @@ "id": "work-board", "scope": "driver", "sha256": "998d4ad5b7592fa3579d58acbb786b3ff8b3f716b1116c0f468b3871cc9b5422", - "tree-sha256": "af908e8c0dc45c1b03a40136db8e09db4dfd7fe147bcc9f599fa0a8854b87ddc", + "tree-sha256": "1bac7fde5598ceda1a2292d5d3935269652f6fb8af108f2281fe5b8132996e63", "files": [ { "path": "SKILL.md", @@ -2044,7 +2049,7 @@ }, { "path": "references/observation.md", - "sha256": "16d1340893041aca701eadade6c88a711ff71b93c89e9852ae9c2e781a4714f0", + "sha256": "829dd0cb8b0e19e4715f3cbf23402e472ac9138e35f75a7e1f249683b821a261", "executable": false }, { From a7fd4c246b52de6c7d7b8f3a13b68f001b00d3bb Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:26:37 +0200 Subject: [PATCH 08/13] fix(coord): keep observer XML contracts in signature --- src/FS.GG.Coord.Core/OperationObservation.fs | 2 -- src/FS.GG.Coord.Core/OperationObservation.fsi | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/FS.GG.Coord.Core/OperationObservation.fs b/src/FS.GG.Coord.Core/OperationObservation.fs index b9cd52bcc..8bb3d2481 100644 --- a/src/FS.GG.Coord.Core/OperationObservation.fs +++ b/src/FS.GG.Coord.Core/OperationObservation.fs @@ -1,6 +1,5 @@ namespace FS.GG.Coord -/// A read-only attention reducer for one already admitted original CI operation. module OperationObservation = open System open System.Security.Cryptography @@ -161,7 +160,6 @@ module OperationObservation = elif controlChanged then finish MaterialChange next else AwaitWithinDeadline(next, int (min 5000L (max 0L (next.Budget.WorkDeadline - now)))) - /// Charge before issuing a request; a crash can lose allowance, never replenish it. let chargeRequest now cursor = if now < cursor.Budget.LastClock || now >= cursor.Budget.WorkDeadline || cursor.Budget.RequestsRemaining <= 0 then Error "original request allowance exhausted" diff --git a/src/FS.GG.Coord.Core/OperationObservation.fsi b/src/FS.GG.Coord.Core/OperationObservation.fsi index fd3707aa1..21641034c 100644 --- a/src/FS.GG.Coord.Core/OperationObservation.fsi +++ b/src/FS.GG.Coord.Core/OperationObservation.fsi @@ -42,5 +42,6 @@ module OperationObservation = val attentionName: Attention -> string val finish: Attention -> Cursor -> Decision val decide: now: int64 -> Sample option -> Cursor -> Decision + /// Charge before issuing a request; a crash can lose allowance, never replenish it. val chargeRequest: now: int64 -> Cursor -> Result val chargeOutput: bytes: int -> Cursor -> Result From dca4a041894ef8cda45ce08b5008504ab1226bdf Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:40:29 +0200 Subject: [PATCH 09/13] Describe additive original-operation observer in source110 release notes --- src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj b/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj index e46b706dc..8d7c194a0 100644 --- a/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj +++ b/src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj @@ -130,7 +130,7 @@ bytes under 0.52.0 would make the same version identify different artifacts. Ado coherent set cut from corrected source. All three partial sets are recorded in `registry/dependencies.yml`. - 0.110.0 — Require current root-owned board Status at canonical lifecycle boundaries. + 0.110.0 — Require current root-owned board Status at canonical lifecycle boundaries. Adds a finite read-only observer for one explicit original CI operation, preserving its identity, deadlines and remaining request/output budgets. Reconcile observed acceptance and blockers before selection, after dispatch and before handoff; Delivery decisions precede whole-parent Outcome decisions. Use the six existing statuses with guarded native preimages, preservation and verified readback; inspection stays read-only and Status grants no operation or closure authority. Kit and Drivers inherit the mandatory lifecycle. Source preparation is distinct from publication and installed adoption. From ea4d1e7bcd9010bdaae9beb3462cd8de7b05bd1b Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:44:01 +0200 Subject: [PATCH 10/13] Isolate hosted SDK setup while retaining strict custody guards --- .github/workflows/telemetry-host-package.yml | 46 +++++++++- .../test_private_native_qualification.py | 86 ++++++++++++++++++- 2 files changed, 128 insertions(+), 4 deletions(-) diff --git a/.github/workflows/telemetry-host-package.yml b/.github/workflows/telemetry-host-package.yml index 20709fe3b..426aae7b0 100644 --- a/.github/workflows/telemetry-host-package.yml +++ b/.github/workflows/telemetry-host-package.yml @@ -133,7 +133,33 @@ jobs: FSGG_LEARN_CUSTODY_CORE_IMAGE_SOURCE_20261018: b4067e48bd9bd803e958bfe1503ea0a06a3a127f steps: - uses: actions/checkout@v7 + - name: Retain the image SDK tree before exact SDK setup + env: + HOSTED_RUNNER_CUSTODY: ${{ runner.environment }} + run: | + set -euo pipefail + # BEGIN hosted runner SDK isolation + sdk_isolation_refuse() { printf 'hosted-sdk-isolation-refused stage=%s\n' "$1" >&2; exit 1; } + test "$HOSTED_RUNNER_CUSTODY" = github-hosted || sdk_isolation_refuse runner-environment + [[ "$GITHUB_RUN_ID" =~ ^[1-9][0-9]*$ && "$GITHUB_RUN_ATTEMPT" =~ ^[1-9][0-9]*$ ]] || sdk_isolation_refuse run-identity + sdk_root=/usr/share/dotnet + retained_sdk="${sdk_root}-preinstalled-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" + test -d "$sdk_root" && test ! -L "$sdk_root" || sdk_isolation_refuse source-type + test "$(readlink -f -- "$sdk_root")" = "$sdk_root" || sdk_isolation_refuse source-placement + test ! -e "$retained_sdk" && test ! -L "$retained_sdk" || sdk_isolation_refuse destination-present + original_identity="$(stat -c '%d:%i' -- "$sdk_root")" || sdk_isolation_refuse source-stat + source_device="$(stat -c %d -- "$sdk_root")" || sdk_isolation_refuse source-device + parent_device="$(stat -c %d -- /usr/share)" || sdk_isolation_refuse parent-device + test "$source_device" = "$parent_device" || sdk_isolation_refuse different-filesystem + sudo mv --no-clobber -T -- "$sdk_root" "$retained_sdk" || sdk_isolation_refuse retain-rename + test ! -e "$sdk_root" && test ! -L "$sdk_root" || sdk_isolation_refuse source-still-present + test -d "$retained_sdk" && test ! -L "$retained_sdk" || sdk_isolation_refuse retained-type + test "$(stat -c '%d:%i' -- "$retained_sdk")" = "$original_identity" || sdk_isolation_refuse retained-identity + printf 'hosted-sdk-isolation retained=%s identity=%s active-root=%s\n' "$retained_sdk" "$original_identity" "$sdk_root" + # END hosted runner SDK isolation - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6 + env: + DOTNET_INSTALL_DIR: /usr/share/dotnet with: dotnet-version: 10.0.401 - name: Refuse stale Host schema candidate and verifier bindings early @@ -262,7 +288,15 @@ jobs: test "$sdk_root" = /usr/share/dotnet || sdk_refuse dotnet-root-placement test "$resolved_dotnet" = "$sdk_root/dotnet" || sdk_refuse usr-bin-dotnet-placement test "$path_dotnet" = "$resolved_dotnet" || sdk_refuse path-dotnet-placement - test "$("$resolved_dotnet" --version)" = 10.0.401 || sdk_refuse dotnet-version-before-normalization + sdk_version_evidence="$(umask 077; mktemp -d "$RUNNER_TEMP/host-binding-sdk-version.XXXXXX")" || sdk_refuse version-evidence-directory + if "$resolved_dotnet" --version >"$sdk_version_evidence/stdout" 2>"$sdk_version_evidence/stderr"; then + sdk_version_exit=0 + else + sdk_version_exit=$? + fi + printf '%s\n' "$sdk_version_exit" >"$sdk_version_evidence/exit" + printf 'hosted-sdk-version-evidence path=%s exit=%s\n' "$sdk_version_evidence" "$sdk_version_exit" + test "$sdk_version_exit" = 0 && test "$(cat "$sdk_version_evidence/stdout")" = 10.0.401 || sdk_refuse dotnet-version-before-normalization sudo chown -hR root:root -- "$sdk_root" || sdk_refuse dotnet-tree-chown sudo chmod -R go-w -- "$sdk_root" || sdk_refuse dotnet-tree-chmod usr_share_uid="$(stat -c %u -- /usr/share)" || sdk_refuse usr-share-stat-before-normalization @@ -355,9 +389,17 @@ jobs: PY python3 -m unittest tests/telemetry-collector-container/test_private_native_qualification.py \ 2>&1 | tee "$RUNNER_TEMP/host-binding-python-tests.log" - grep -F 'Ran 38 tests' "$RUNNER_TEMP/host-binding-python-tests.log" + grep -F 'Ran 42 tests' "$RUNNER_TEMP/host-binding-python-tests.log" grep -F 'OK' "$RUNNER_TEMP/host-binding-python-tests.log" ! grep -F 'skipped=' "$RUNNER_TEMP/host-binding-python-tests.log" + - name: Retain hosted SDK version diagnostics + if: ${{ always() }} + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: hosted-sdk-version-${{ github.sha }} + path: ${{ runner.temp }}/host-binding-sdk-version.*/ + if-no-files-found: warn + retention-days: 7 - name: Check out the exact published HOST recipe for attempt-producer tests uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with: diff --git a/tests/telemetry-collector-container/test_private_native_qualification.py b/tests/telemetry-collector-container/test_private_native_qualification.py index a4e1384d9..364bf113a 100644 --- a/tests/telemetry-collector-container/test_private_native_qualification.py +++ b/tests/telemetry-collector-container/test_private_native_qualification.py @@ -134,7 +134,7 @@ def test_template_is_manual_private_exact_and_never_logs_secret(self): block=block.replace('sdk_path_guard usr-share /usr/share',f'sdk_path_guard usr-share {system}/usr/share') block=block.replace('sdk_path_guard usr /usr',f'sdk_path_guard usr {system}/usr') block=block.replace('sdk_path_guard filesystem-root /',f'sdk_path_guard filesystem-root {system}') - env=dict(os.environ,DOTNET_ROOT=str(sdk),HOSTED_RUNNER_CUSTODY='github-hosted',PATH=str(sdk)+':/usr/bin:/bin') + env=dict(os.environ,DOTNET_ROOT=str(sdk),HOSTED_RUNNER_CUSTODY='github-hosted',RUNNER_TEMP=str(root),PATH=str(sdk)+':/usr/bin:/bin') marker_path=root/'sudo-called'; fake=root/'fake'; fake.mkdir() (fake/'sudo').write_text(f'#!/bin/sh\ntouch "{marker_path}"\nexit 0\n'); (fake/'sudo').chmod(0o755) fake_path=str(fake)+':'+env['PATH'] @@ -170,7 +170,7 @@ def test_rendered_workflow_parses_and_each_shell_block_has_valid_syntax(self): if importlib.util.find_spec('yaml') is None: self.skipTest('PyYAML unavailable') import yaml workflows=((ROOT/'deployment/telemetry-collector/private-native-qualification.yml.in',2), - (ROOT/'.github/workflows/telemetry-host-package.yml',10)) + (ROOT/'.github/workflows/telemetry-host-package.yml',11)) for path,count in workflows: with self.subTest(workflow=path.name): rendered=path.read_text().replace('@@RECIPE_SOURCE_SHA@@','a'*40).replace('@@QUALIFICATION_REF@@','qualification-v1') @@ -766,4 +766,86 @@ def test_seal_roundtrip_and_wrong_aad_refusal(self): self.assertEqual(b'private-custody\n',(t/'clear').read_bytes()); self.assertEqual(0o600,(t/'capsule').stat().st_mode&0o777) bad=subprocess.run(['node',script,'unseal',t/'capsule',t/'private.pem',t/'bad',run,'c'*40,profile],capture_output=True) self.assertNotEqual(0,bad.returncode); self.assertFalse((t/'bad').exists()) +class HostedSdkIsolationTests(unittest.TestCase): + """Pure temporary-filesystem/shell controls; this class never builds or runs .NET.""" + @staticmethod + def block(begin,end): + text=(ROOT/'.github/workflows/telemetry-host-package.yml').read_text() + body=text.split(begin,1)[1].split(end,1)[0] + return '\n'.join(row[10:] if row.startswith(' ') else row for row in body.splitlines())+'\n' + @classmethod + def isolate(cls,root,case='valid'): + share=root/'usr/share'; share.mkdir(parents=True); sdk=share/'dotnet'; sdk.mkdir() + (sdk/'original-sdk').write_bytes(b'original image SDK bytes\n'); original=sdk.stat() + retained=share/'dotnet-preinstalled-123-1'; fake=root/'fake'; fake.mkdir(); log=root/'sudo-called'; setup=root/'setup-called' + sudo='#!/bin/sh\nprintf "called\n" >> "$SDK_TEST_LOG"\n' + if case=='rename-failure': sudo+='exit 17\n' + elif case=='destination-race': sudo+='for destination in "$@"; do :; done\nmkdir "$destination"\nprintf "racing owner\n" > "$destination/racing-owner"\nexec "$@"\n' + else: sudo+='exec "$@"\n' + (fake/'sudo').write_text(sudo); (fake/'sudo').chmod(0o755) + if case=='different-filesystem': + (fake/'stat').write_text('#!/bin/sh\nfor target in "$@"; do :; done\nif [ "$target" = "$SDK_TEST_PARENT" ]; then printf "999\n"; else exec /usr/bin/stat "$@"; fi\n'); (fake/'stat').chmod(0o755) + if case=='source-file': shutil.rmtree(sdk); sdk.write_bytes(b'not a directory') + if case=='source-symlink': sdk.rename(share/'actual-sdk'); sdk.symlink_to(share/'actual-sdk',target_is_directory=True) + if case=='missing-source': shutil.rmtree(sdk) + if case=='destination-directory': retained.mkdir(); (retained/'owner').write_bytes(b'existing') + if case=='destination-file': retained.write_bytes(b'existing') + if case=='destination-symlink': retained.symlink_to(share/'absent') + env=dict(os.environ,PATH=str(fake)+':/usr/bin:/bin',GITHUB_RUN_ID='123',GITHUB_RUN_ATTEMPT='1',HOSTED_RUNNER_CUSTODY='self-hosted' if case=='wrong-runner' else 'github-hosted',SDK_TEST_LOG=str(log),SDK_TEST_PARENT=str(share)) + body=cls.block('# BEGIN hosted runner SDK isolation','# END hosted runner SDK isolation').replace('/usr/share',str(share)) + result=subprocess.run(['bash','-e','-u','-o','pipefail'],input=body+'printf "setup permitted\n" > "'+str(setup)+'"\n',env=env,text=True,capture_output=True) + return result,sdk,retained,original,log,setup + def test_same_filesystem_retains_exact_tree_before_allowing_setup(self): + with tempfile.TemporaryDirectory() as td: + result,sdk,retained,original,log,setup=self.isolate(pathlib.Path(td)) + self.assertEqual(0,result.returncode,result.stderr); self.assertFalse(sdk.exists()); self.assertTrue(setup.exists()); self.assertTrue(log.exists()) + self.assertEqual((original.st_dev,original.st_ino),(retained.stat().st_dev,retained.stat().st_ino)) + self.assertEqual(b'original image SDK bytes\n',(retained/'original-sdk').read_bytes()) + def test_refusals_preserve_existing_inputs_and_prevent_setup(self): + cases={'wrong-runner':'runner-environment','source-file':'source-type','source-symlink':'source-type','missing-source':'source-type', + 'destination-directory':'destination-present','destination-file':'destination-present','destination-symlink':'destination-present', + 'different-filesystem':'different-filesystem','rename-failure':'retain-rename','destination-race':'source-still-present'} + for case,stage in cases.items(): + with self.subTest(case=case), tempfile.TemporaryDirectory() as td: + result,sdk,retained,original,log,setup=self.isolate(pathlib.Path(td),case) + self.assertNotEqual(0,result.returncode); self.assertIn('hosted-sdk-isolation-refused stage='+stage,result.stderr); self.assertFalse(setup.exists()) + if case not in ('source-file','source-symlink','missing-source'): + self.assertEqual((original.st_dev,original.st_ino),(sdk.stat().st_dev,sdk.stat().st_ino)); self.assertEqual(b'original image SDK bytes\n',(sdk/'original-sdk').read_bytes()) + if case not in ('rename-failure','destination-race'): self.assertFalse(log.exists()) + if case=='destination-directory': self.assertEqual(b'existing',(retained/'owner').read_bytes()) + if case=='destination-file': self.assertEqual(b'existing',retained.read_bytes()) + if case=='destination-symlink': self.assertTrue(retained.is_symlink()) + if case=='destination-race': self.assertEqual(b'racing owner\n',(retained/'racing-owner').read_bytes()) + def test_actual_workflow_orders_exact_setup_before_existing_qualification(self): + import yaml + workflow=yaml.safe_load((ROOT/'.github/workflows/telemetry-host-package.yml').read_text()); job=workflow['jobs']['package']; steps=job['steps'] + index=next(i for i,step in enumerate(steps) if '# BEGIN hosted runner SDK isolation' in step.get('run','')) + isolate=steps[index]; install=steps[index+1] + self.assertNotIn('continue-on-error',isolate); self.assertNotIn('if',isolate) + self.assertNotIn('continue-on-error',install); self.assertNotIn('if',install) + self.assertEqual('actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68',install['uses']) + self.assertEqual('10.0.401',install['with']['dotnet-version']); self.assertEqual('/usr/share/dotnet',install['env']['DOTNET_INSTALL_DIR']) + qualify=next(i for i,step in enumerate(steps) if step.get('name')=='Qualify the typed HOST binding and private template') + self.assertLess(index+1,qualify); self.assertEqual(20,job['timeout-minutes']) + diagnostic=next(step for step in steps if step.get('name')=='Retain hosted SDK version diagnostics') + self.assertEqual('${{ always() }}',diagnostic['if']); self.assertEqual('${{ runner.temp }}/host-binding-sdk-version.*/',diagnostic['with']['path']) + body=steps[qualify]['run'] + for command in ('test "$(dotnet --version)" = 10.0.401','test "$(/usr/bin/dotnet --version)" = 10.0.401', + 'test "$DOTNET_ROOT" = /usr/share/dotnet','test "$resolved_dotnet" = "$sdk_root/dotnet"', + 'sudo chown -hR root:root -- "$sdk_root"','sudo chmod -R go-w -- "$sdk_root"'): + self.assertIn(command,body) + def test_wrong_version_or_failed_probe_retains_original_streams_before_custody_changes(self): + for version,code in (('10.0.402',0),('10.0.401',17)): + with self.subTest(version=version,code=code), tempfile.TemporaryDirectory() as td: + root=pathlib.Path(td); sdk=root/'usr/share/dotnet'; sdk.mkdir(parents=True); binary=sdk/'dotnet' + binary.write_text('#!/bin/sh\nprintf "'+version+'\n"\nprintf "original probe stderr\n" >&2\nexit '+str(code)+'\n'); binary.chmod(0o755) + usr_bin=root/'usr/bin'; usr_bin.mkdir(); (usr_bin/'dotnet').symlink_to(binary) + fake=root/'fake'; fake.mkdir(); log=root/'sudo-called'; (fake/'sudo').write_text('#!/bin/sh\nprintf "called\n" > "'+str(log)+'"\nexit 0\n'); (fake/'sudo').chmod(0o755) + env=dict(os.environ,PATH=str(fake)+':'+str(sdk)+':/usr/bin:/bin',DOTNET_ROOT=str(sdk),HOSTED_RUNNER_CUSTODY='github-hosted',RUNNER_TEMP=str(root)) + body=self.block('# BEGIN hosted runner SDK custody normalization','# END hosted runner SDK custody normalization').replace('/usr/share/dotnet',str(sdk)).replace('/usr/bin/dotnet',str(usr_bin/'dotnet')) + result=subprocess.run(['bash','-e','-u','-o','pipefail'],input=body,env=env,text=True,capture_output=True) + self.assertNotEqual(0,result.returncode); self.assertIn('stage=dotnet-version-before-normalization',result.stderr); self.assertFalse(log.exists()) + evidence=list(root.glob('host-binding-sdk-version.*')); self.assertEqual(1,len(evidence)); self.assertEqual(0o700,evidence[0].stat().st_mode&0o777) + self.assertEqual((version+'\n').encode(),(evidence[0]/'stdout').read_bytes()); self.assertEqual(b'original probe stderr\n',(evidence[0]/'stderr').read_bytes()); self.assertEqual(str(code)+'\n',(evidence[0]/'exit').read_text()) + if __name__=='__main__': unittest.main(verbosity=2) From 91cf2cb123cb965d79bfcf0304dea2d579ddd3cb Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:41:54 +0200 Subject: [PATCH 11/13] fix(release): select prospective coherent110 readiness over accepted109 --- .../workflows/release-successor-candidate.yml | 22 +++--- .../release-successor-feed-readiness.yml | 6 +- docs/roadmaps/utel-release-successor.md | 79 +++++++++++++++++++ scripts/release_successor_journal.py | 13 +-- tests/release-successor-candidate/run.py | 36 ++++++--- tests/release-successor-recovery/run.py | 62 ++++++++++----- 6 files changed, 169 insertions(+), 49 deletions(-) diff --git a/.github/workflows/release-successor-candidate.yml b/.github/workflows/release-successor-candidate.yml index b5137ad04..3bcd889b5 100644 --- a/.github/workflows/release-successor-candidate.yml +++ b/.github/workflows/release-successor-candidate.yml @@ -1,6 +1,6 @@ name: release-successor-candidate -# Source/byte qualification for coherent set 0.109.0 only. This route has no tag, release, +# Source/byte qualification for coherent set 0.110.0 only. This route has no tag, release, # journal, package-feed, OIDC or promotion write. Its retained Actions artifact # is an unpromoted candidate, not a published release or an admission receipt. on: @@ -43,7 +43,7 @@ jobs: test "$(git rev-parse HEAD)" = "$SOURCE_SHA" test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA" version="$(dotnet msbuild src/FS.GG.Coord.Cli/FS.GG.Coord.Cli.fsproj -getProperty:Version | tr -d '[:space:]')" - test "$version" = 0.109.0 + test "$version" = 0.110.0 echo "version=$version" >> "$GITHUB_OUTPUT" - name: Verify the stable predecessor and unused package version env: @@ -53,24 +53,24 @@ jobs: run: | set -euo pipefail mkdir -p artifacts/predecessor artifacts/packages - gh release download coherent-set/v0.108.0 --repo "$GITHUB_REPOSITORY" \ + gh release download coherent-set/v0.109.0 --repo "$GITHUB_REPOSITORY" \ --pattern stable-channel.json --dir artifacts/predecessor python3 scripts/release-saga.py predecessor \ --channel artifacts/predecessor/stable-channel.json \ - --release-tag coherent-set/v0.108.0 \ - --tag-source f984a3619129c5e9ab68e1291fd080ef77ef9337 \ + --release-tag coherent-set/v0.109.0 \ + --tag-source 0d85830e7329a2718ee57ff0f1a16e6c751a469c \ > artifacts/predecessor/identity.json - test "$(jq -r .version artifacts/predecessor/identity.json)" = 0.108.0 + test "$(jq -r .version artifacts/predecessor/identity.json)" = 0.109.0 python3 scripts/check-release-candidate-uniqueness.py \ - --version "$VERSION" --predecessor 0.108.0 + --version "$VERSION" --predecessor 0.109.0 release_status="$(curl --silent --show-error --location -o /dev/null -w '%{http_code}' \ -H "Authorization: Bearer $GH_TOKEN" \ -H 'Accept: application/vnd.github+json' \ - "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/coherent-set/v0.109.0")" + "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/tags/coherent-set/v0.110.0")" test "$release_status" = 404 test -z "$(git ls-remote --tags origin \ - 'refs/tags/coherent-set/v0.109.0' 'refs/tags/kit/v0.109.0' \ - 'refs/tags/drivers/v0.109.0' 'refs/tags/coord-engine/v0.109.0')" + 'refs/tags/coherent-set/v0.110.0' 'refs/tags/kit/v0.110.0' \ + 'refs/tags/drivers/v0.110.0' 'refs/tags/coord-engine/v0.110.0')" - name: Test the telemetry producer and prepare the browser fixture run: | set -euo pipefail @@ -183,7 +183,7 @@ jobs: set -euo pipefail test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA" python3 scripts/check-release-candidate-uniqueness.py \ - --version "$VERSION" --predecessor 0.108.0 + --version "$VERSION" --predecessor 0.109.0 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: release-successor-candidate-${{ github.sha }}-${{ github.run_id }} diff --git a/.github/workflows/release-successor-feed-readiness.yml b/.github/workflows/release-successor-feed-readiness.yml index 23c9806a4..cb9ea7cf0 100644 --- a/.github/workflows/release-successor-feed-readiness.yml +++ b/.github/workflows/release-successor-feed-readiness.yml @@ -1,6 +1,6 @@ name: release-successor-feed-readiness -# Informational freshness observation for a prospective 0.109.0 coherent set. +# Informational freshness observation for a prospective 0.110.0 coherent set. # This does not select a release, qualify source bytes, or authorize publication. on: workflow_dispatch: @@ -35,10 +35,10 @@ jobs: test "$(git rev-parse HEAD)" = "$SOURCE_SHA" test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA" python3 tests/release-successor-candidate/run.py - - name: Observe both feeds for 0.109.0 against published 0.108.0 + - name: Observe both feeds for 0.110.0 against published 0.109.0 env: GITHUB_TOKEN: ${{ github.token }} run: | set -euo pipefail python3 scripts/check-release-candidate-uniqueness.py \ - --version 0.109.0 --predecessor 0.108.0 + --version 0.110.0 --predecessor 0.109.0 diff --git a/docs/roadmaps/utel-release-successor.md b/docs/roadmaps/utel-release-successor.md index 77d9501ff..78f6c0f30 100644 --- a/docs/roadmaps/utel-release-successor.md +++ b/docs/roadmaps/utel-release-successor.md @@ -1958,3 +1958,82 @@ profiles are unchanged; a020 candidate cannot be published through019. An indepe bounded020 publisher successor and fresh effect admission remain required before publication, followed by actual installed fresh/retained Rendering and selected Game receiver acceptance. Source package qualification does not establish those later effects or widen the product binding. + + +### Accepted coherent109 and prospective110 operating window — 2026-10-20 + +Coherent109 is genuinely promoted from producer source +`0d85830e7329a2718ee57ff0f1a16e6c751a469c`, content +`sha256:a3ff6fd1f998e32a750efe25bbb4255c5bd9d9b28ff5b21af441194d44e128ce`. +Its original candidate is [run39302112260](https://github.com/FS-GG/.github/actions/runs/39302112260), +artifact12210674422, raw archive SHA256 +`2791d7009e469bd2e5a1325ed907522e64ac895118525dff3396ec6f26bc2b68`. +The final same-journal publisher [39317658813](https://github.com/FS-GG/.github/actions/runs/39317658813) +accepted generation33/all16 effects and [release417623644](https://github.com/FS-GG/.github/releases/tag/coherent-set/v0.109.0). +Logical head is `bd0848b1e5c8318adbe840b411e69b431f75c724` under completed +`utel-rel-27`; the final publisher's `699f60851288f5f817b98856bdd3d220cf27dd09` is +an executor descendant, not the package producer. Original failed/forward runs, archives, +channel and completed journal remain immutable. + +[Delivery4731](https://github.com/FS-GG/.github/issues/4731), under +[Outcome4730](https://github.com/FS-GG/.github/issues/4730), retains its full source, +publication, installed caller/instruction and ordinary native-observer acceptance. +Programme/root remains sole integrator/publisher and the existing observer code owner +is retained. This source readiness selects coherent110 over accepted109 for the accumulated +mandatory Status lifecycle and finite read-only operation observer. It does not complete +that Delivery or independently publish [Creator021](https://github.com/FS-GG/.github/issues/4727). + +The closed current tuple is version0.110.0, predecessor0.109.0, the genuine109 source/content +above, logical ref `refs/heads/fsgg/v2/journal/release/coord110-observer-20261020-01` and +protected-main directory `state/releases/coord110-observer-20261020-01`. This is a prospective +root-chosen source identifier only: no namespace absence, allocation, reservation, journal +creation or native authority has been observed or granted. Runtime must freshly authenticate +selected Authority repository/main, protection, logical-ref/directory state, competing entries, +both feeds and all selected tag/release identities before any first effect. Unknown or +conflicting observations refuse; another namespace cannot bypass an unresolved write. + +The candidate and informational readiness workflow now bind110/109. Candidate qualification +retains the45-minute existing graph, actual isolated install, standalone/causal receiver checks, +separate packaged-V2 evidence and exact seven-member publisher archive. Its opening read checks +predecessor/channel, both feeds and candidate tag/release eligibility; retention rechecks main +and feed uniqueness. Source controls use inert external ports and preserve completed109/journal27 +state/head beside the real current ordinary-caller fixture. They are neither namespace/feed +observations nor a genuine110 archive, hosted timing result or publication receipt. +The readiness checks passed19 candidate controls and202 recovery cases:200 passed, with +two explicit private-original census skips. The synthetic cold ordinary caller completed +all16 effects with1222 Authority entries under the unchanged1500 ceiling, preserving the +completed109 sibling state/head. These counts and virtual waits do not establish native +network timing, hosted fit or availability. + +Integrate the accepted observer and Wizard source compositions, and any selected readiness +source, before choosing the exact combined protected main candidate. Hold main stable only +through that actual candidate qualification, publish=false preflight and first publication. +Authenticate a successful first-attempt candidate/run/artifact/raw digest; use the same exact +source and inputs for preflight and separately admitted publish=true. Existing EHotwagner, +environment and single-operator restrictions, coherent-tag-only and all16 durable effect/both-feed +readbacks remain unchanged. No candidate, pack, dispatch, credential, feed write, replay or +installed update follows from this source window. + +Ordinary publication retains1500 Authority entries, quota floor1800,2700-second inner deadline, +135 visibility probes and the60-minute hard publisher job. Candidate remains45 minutes; +no budget, deadline or profile is renewed by this source successor. Historical102/103/104 +selectors and immutable authentication/recovery closures stay original. Completed109, all439 +inherited and46 later Unknowns, and every known source/runtime hold remain distinct/unreleased. +The SDD1113 Commands2.3 occupancy Unknown remains scoped to its own effects; this window neither +probes/retries it nor claims availability elsewhere. + +After genuine110 promotion, derive complete actual public package/instruction closures and +qualify the intended installed110 caller before any activation or ordinary native observer use. +The old109 SDK install deadline/cleanup uncertainty remains preserved separately from its later +accepted existing82-member payload/version check. Source acceptance cannot establish installed +adoption or the observer's declared changed-head/failure/interruption/restart/deadline/rollback +acceptance, and Status grants no operation, release or closure authority. + +Creator021 currently qualifies normal source against coherent110; its retained020 genuine108 +published-dependency and consumed effect identities remain unchanged. A future021 public route +must obtain actual promoted110 release/source/archive/manifest/member identities and a separately +reviewed021 candidate/publication binding. No future pin is invented, no020/108 receipt becomes +021 evidence, and coherent publication alone does not publish Creator or qualify its receivers. +Registry published versions and consumer pins advance only after their actual promotion/adoption +boundaries; no new scalar bump, current-public inventory claim or shared projection rewrite is +required by this prospective source preparation. diff --git a/scripts/release_successor_journal.py b/scripts/release_successor_journal.py index 058658ca4..464e81dfb 100644 --- a/scripts/release_successor_journal.py +++ b/scripts/release_successor_journal.py @@ -29,12 +29,13 @@ PATH = "release-state.json" SCHEMA = "fsgg.release-successor-journal/1" -# One selected current source composition, independent of frozen original cuts. -CURRENT_RELEASE = {"version": "0.109.0", "predecessor": "0.108.0", - "logicalRef": "refs/heads/fsgg/v2/journal/release/utel-rel-27", - "directory": "state/releases/utel-rel-27", - "predecessorSource": "f984a3619129c5e9ab68e1291fd080ef77ef9337", - "predecessorContentId": "sha256:36d93d38dff7a00a7781eb313191918a5c847288d7f743b878351eb0e800429e"} +# One prospective root-selected source composition; no namespace allocation or effect authority. +# Completed109/journal27 and frozen original cuts remain immutable. +CURRENT_RELEASE = {"version": "0.110.0", "predecessor": "0.109.0", + "logicalRef": "refs/heads/fsgg/v2/journal/release/coord110-observer-20261020-01", + "directory": "state/releases/coord110-observer-20261020-01", + "predecessorSource": "0d85830e7329a2718ee57ff0f1a16e6c751a469c", + "predecessorContentId": "sha256:a3ff6fd1f998e32a750efe25bbb4255c5bd9d9b28ff5b21af441194d44e128ce"} diff --git a/tests/release-successor-candidate/run.py b/tests/release-successor-candidate/run.py index ee7ef4bd1..0d949c337 100644 --- a/tests/release-successor-candidate/run.py +++ b/tests/release-successor-candidate/run.py @@ -128,6 +128,24 @@ def test_prospective_0104_probe_requires_exact_0102_frontier_on_both_feeds(self) with self.assertRaisesRegex(gate.GateError, "403"): gate.check("0.104.0", "0.102.0", "read-token") + def test_selected110_requires_exact109_on_all_six_feed_coordinates(self) -> None: + self.github_read.return_value = ["0.109.0"] + self.nuget_read.return_value = ["0.109.0"] + rows = gate.check("0.110.0", "0.109.0", "inert-token") + self.assertEqual(len(rows), 6) + for feed in (self.github_read, self.nuget_read): + with self.subTest(feed=feed): + feed.return_value = ["0.109.0", "0.110.0"] + with self.assertRaisesRegex(gate.GateError, "already exists"): + gate.check("0.110.0", "0.109.0", "inert-token") + feed.return_value = ["0.109.0"] + self.nuget_read.return_value = ["0.108.0"] + with self.assertRaisesRegex(gate.GateError, "not predecessor"): + gate.check("0.110.0", "0.109.0", "inert-token") + self.github_read.side_effect = gate.GateError("HTTP 403: occupancy Unknown") + with self.assertRaisesRegex(gate.GateError, "occupancy Unknown"): + gate.check("0.110.0", "0.109.0", "inert-token") + def test_an_occupied_version_on_either_feed_refuses(self) -> None: for feed in (self.github_read, self.nuget_read): with self.subTest(feed=feed): @@ -222,7 +240,7 @@ def test_prospective_feed_probe_has_only_main_read_permissions_and_no_release_ef self.assertIn('test "$(git ls-remote origin refs/heads/main | cut -f1)" = "$SOURCE_SHA"', workflow) self.assertIn("python3 tests/release-successor-candidate/run.py", workflow) self.assertIn("python3 scripts/check-release-candidate-uniqueness.py", workflow) - self.assertIn("--version 0.109.0 --predecessor 0.108.0", workflow) + self.assertIn("--version 0.110.0 --predecessor 0.109.0", workflow) for forbidden in ( "packages: write", "contents: write", "id-token:", "environment:", "secrets.", "release-successor-publish.py", "release-saga.py", "dotnet pack", @@ -233,21 +251,21 @@ def test_prospective_feed_probe_has_only_main_read_permissions_and_no_release_ef def test_candidate_binds_the_next_version_and_exact_predecessor(self) -> None: workflow = (ROOT / ".github/workflows/release-successor-candidate.yml").read_text() - self.assertIn('test "$version" = 0.109.0', workflow) - self.assertIn("gh release download coherent-set/v0.108.0", workflow) - self.assertIn("--tag-source f984a3619129c5e9ab68e1291fd080ef77ef9337", workflow) - self.assertEqual(workflow.count("--predecessor 0.108.0"), 2) - self.assertIn("--release-tag coherent-set/v0.108.0", workflow) + self.assertIn('test "$version" = 0.110.0', workflow) + self.assertIn("gh release download coherent-set/v0.109.0", workflow) + self.assertIn("--tag-source 0d85830e7329a2718ee57ff0f1a16e6c751a469c", workflow) + self.assertEqual(workflow.count("--predecessor 0.109.0"), 2) + self.assertIn("--release-tag coherent-set/v0.109.0", workflow) for namespace in ("coherent-set", "kit", "drivers", "coord-engine"): - self.assertIn(f"refs/tags/{namespace}/v0.109.0", workflow) + self.assertIn(f"refs/tags/{namespace}/v0.110.0", workflow) for project in ("FS.GG.Coord.Cli", "FS.GG.Kit", "FS.GG.Drivers"): self.assertEqual(workflow.count(f"dotnet pack src/{project}/"), 1) initial=workflow.split(' - name: Verify the stable predecessor and unused package version',1)[1].split(' - name: Test the telemetry producer',1)[0] retention=workflow.split(' - name: Refuse a changed main or newly occupied version before retention',1)[1].split(' - uses: actions/upload-artifact',1)[0] - self.assertIn('releases/tags/coherent-set/v0.109.0',initial) + self.assertIn('releases/tags/coherent-set/v0.110.0',initial) self.assertIn('git ls-remote',initial) self.assertIn('refs/heads/main',retention) - self.assertIn('--predecessor 0.108.0',retention) + self.assertIn('--predecessor 0.109.0',retention) self.assertNotIn('releases/tags/',retention) self.assertNotIn('refs/tags/',retention) self.assertIn('timeout-minutes: 45',workflow) diff --git a/tests/release-successor-recovery/run.py b/tests/release-successor-recovery/run.py index 079f1a2a9..bb1e1bc21 100644 --- a/tests/release-successor-recovery/run.py +++ b/tests/release-successor-recovery/run.py @@ -1609,23 +1609,34 @@ def test_primary_upload_uncertainty_survives_report_failure(self): class SelectedReleaseBindingTests(unittest.TestCase): - def test_current_default_has_109_108_and_distinct27(self): + def test_current_default_has_110_109_and_selected_observer_identity(self): args = types.SimpleNamespace(recovery_checkpoint=False, repeat_original_nuget_kit_intent=False, recover_original_runtime_intent=False) self.assertEqual(publisher.selected_release_binding(args), - ("0.109.0", "0.108.0", "refs/heads/fsgg/v2/journal/release/utel-rel-27")) - - def test_current_profile_binds_promoted108_and_cannot_claim_old_journals(self): - self.assertEqual(publisher.CURRENT_RELEASE['predecessorSource'],'f984a3619129c5e9ab68e1291fd080ef77ef9337') - self.assertEqual(publisher.CURRENT_RELEASE['predecessorContentId'],'sha256:36d93d38dff7a00a7781eb313191918a5c847288d7f743b878351eb0e800429e') - self.assertEqual(publisher.CURRENT_RELEASE['directory'],'state/releases/utel-rel-27') - for suffix in ('utel-rel-23','utel-rel-24','utel-rel-25','utel-rel-26'): + ("0.110.0", "0.109.0", "refs/heads/fsgg/v2/journal/release/coord110-observer-20261020-01")) + + def test_current_profile_binds_promoted109_and_cannot_claim_old_journals(self): + self.assertEqual(set(publisher.CURRENT_RELEASE), {'version','predecessor','logicalRef','directory','predecessorSource','predecessorContentId'}) + self.assertEqual(publisher.CURRENT_RELEASE['predecessorSource'],'0d85830e7329a2718ee57ff0f1a16e6c751a469c') + self.assertEqual(publisher.CURRENT_RELEASE['predecessorContentId'],'sha256:a3ff6fd1f998e32a750efe25bbb4255c5bd9d9b28ff5b21af441194d44e128ce') + self.assertEqual(publisher.CURRENT_RELEASE['directory'],'state/releases/coord110-observer-20261020-01') + for suffix in ('utel-rel-23','utel-rel-24','utel-rel-25','utel-rel-26','utel-rel-27'): authority=MemoryAuthority() with self.subTest(prior=suffix),self.assertRaisesRegex(JournalRefused,'different owner or profile'): ProtectedReleaseJournal(authority,'refs/heads/fsgg/v2/journal/release/'+suffix, main_directory=True,ordinary_forward=True) self.assertFalse(any(method in {'post','patch'} for method,_ in authority.calls)) + def test_current110_cannot_initialize_completed109_journal27(self): + authority=MemoryAuthority() + journal=ProtectedReleaseJournal(authority,'refs/heads/fsgg/v2/journal/release/utel-rel-27',main_directory=True) + authority.calls.clear() + intent={'version':'0.110.0','sourceSha':'b'*40,'contentId':'sha256:'+'b'*64, + 'candidateArchiveSha256':'c'*64,'operator':'EHotwagner'} + with self.assertRaisesRegex(JournalRefused,'different journal identity'): + journal.initialize(intent) + self.assertFalse(any(method in {'post','patch'} for method,_ in authority.calls)) + def test_explicit_original103_selectors_do_not_follow_current_default(self): for flag in ('original_0103_candidate','recover_original_0103_tag_intent'): self.assertEqual(publisher.selected_release_binding(types.SimpleNamespace(**{flag:True})), @@ -2402,7 +2413,7 @@ def test_precredential_workflow_order_and_candidate_binding(self): self.assertLess(fence,workflow.index(name)) self.assertNotIn('disposition_json:',workflow) candidate = (ROOT/'.github/workflows/release-successor-candidate.yml').read_text() - self.assertIn('test "$version" = 0.109.0',candidate) + self.assertIn('test "$version" = 0.110.0',candidate) self.assertNotIn('-p:Version=',candidate) self.assertIn('name: release-successor-candidate-${{ github.sha }}-${{ github.run_id }}',candidate) self.assertIn('Separate evidence: never add a member to the exact seven-member publisher archive.',candidate) @@ -2413,8 +2424,8 @@ class LiteralForwardControls(SuspensionFixture): def context(self): if not hasattr(self,'_forward_base'):self._forward_base=copy.deepcopy(self.authority) self.authority=copy.deepcopy(self._forward_base) - self.install();self.authority.logical_ref=publisher.CURRENT_RELEASE['logicalRef'];self.authority.directory_suffix='utel-rel-27';self.authority.calls.clear() - candidate=manifest();candidate['descriptor'].update(version='0.109.0',previousStableVersion='0.108.0') + self.install();self.authority.logical_ref=publisher.CURRENT_RELEASE['logicalRef'];self.authority.directory_suffix='coord110-observer-20261020-01';self.authority.calls.clear() + candidate=manifest();candidate['descriptor'].update(version='0.110.0',previousStableVersion='0.109.0') candidate['contentId']='sha256:'+hashlib.sha256(json.dumps(candidate['descriptor'],sort_keys=True,separators=(',',':')).encode()).hexdigest() counted=publisher.CountedAuthorityAPI(self.authority,ceiling=1500,quota_floor=1800);counted.admit_quota() shared=self.mod.ReleaseSuspension(counted);rows=report();native=MemoryPublisher() @@ -2431,7 +2442,7 @@ def visibility(effect): if observation.state=='matched' and observation.observed_digest==effect.target_digest:return 'potential' raise publisher.Refused('inert pending witness '+observation.state) provider.ordinary_visibility=visibility - intent={'contentId':candidate['contentId'],'sourceSha':'b'*40,'version':'0.109.0','candidateArchiveSha256':'c'*64,'operator':'EHotwagner'} + intent={'contentId':candidate['contentId'],'sourceSha':'b'*40,'version':'0.110.0','candidateArchiveSha256':'c'*64,'operator':'EHotwagner'} publisher.prepare_release_journal(journal,counted,admission,provider,native,candidate,intent,'b'*40,'b'*40,False,lambda:None) journal.capture();ticks=[0];sleeps=[] def sleep(seconds):sleeps.append(seconds);ticks[0]+=seconds @@ -2499,7 +2510,7 @@ def get(path): if '/actions/runs/' in path:row['status']='cancelled' return row native.get=get - elif mode=='suspension':self.add_file('state/releases/utel-rel-27/release-state.json',canonical(journal._observed.state)+b' ') + elif mode=='suspension':self.add_file('state/releases/coord110-observer-20261020-01/release-state.json',canonical(journal._observed.state)+b' ') else:next(iter(self.authority.controls.values()))['enforcement']='disabled' with self.assertRaises(RuntimeError):run(sleep=sleep) self.assertEqual(provider.dispatched,['tag']);self.assertEqual(sleeps,[5]) @@ -3499,12 +3510,21 @@ def prepare_caller(self, *, history=0, delays=0, target='channel-asset', ceiling self.promoted108_fixture=b'preserved synthetic consumed108 journal bytes\n' self.add_file('state/releases/utel-rel-26/release-state.json',self.promoted108_fixture) self.add_file('state/releases/utel-rel-26/release-head.txt',b'preserved prior108 logical head\n') - self.authority.directory_suffix='utel-rel-27';self.authority.logical_ref=publisher.CURRENT_RELEASE['logicalRef'] + # Synthetic completed109 sibling: its bytes/head must survive the real110 caller. + # These fixture identities are not native109 publication/history evidence. + self.promoted109_fixture=canonical({'schema':self.mod.SCHEMA,'version':'0.109.0', + 'sourceSha':'9'*40,'contentId':'sha256:'+'9'*64,'candidateArchiveSha256':'9'*64, + 'operator':'EHotwagner','generation':33, + 'effects':{effect.identity:'verified' for effect in ordered_effects(manifest())}}) + self.promoted109_head=b'9999999999999999999999999999999999999999\n' + self.add_file('state/releases/utel-rel-27/release-state.json',self.promoted109_fixture) + self.add_file('state/releases/utel-rel-27/release-head.txt',self.promoted109_head) + self.authority.directory_suffix='coord110-observer-20261020-01';self.authority.logical_ref=publisher.CURRENT_RELEASE['logicalRef'] for n in range(history):self.add_file('state/ordinary/cold-history.json',canonical({'generation':n})) - self.native=Literal104ProviderFixture(self.root,None,version="0.109.0") + self.native=Literal104ProviderFixture(self.root,None,version="0.110.0") stream=io.BytesIO() with zipfile.ZipFile(stream,'w') as archive: - for name in [*(f'{package}.0.109.0.nupkg' for package in PACKAGES), + for name in [*(f'{package}.0.110.0.nupkg' for package in PACKAGES), 'release-manifest.json','previous-stable-channel.json', 'standalone-telemetry-evidence.json','standalone-telemetry-runtime-evidence.json']: archive.writestr(name,(self.root/name).read_bytes()) @@ -3541,7 +3561,7 @@ def get(path,_original_get=original): if '/releases?' in path:return [] if hidden=='promote' and '/releases/tags/' in path:value['draft']=True if hidden and '/assets?per_page=100' in path: - name={**{f'archive-asset:{package}':f'{package}.0.109.0.nupkg' for package in PACKAGES}, + name={**{f'archive-asset:{package}':f'{package}.0.110.0.nupkg' for package in PACKAGES}, 'qualification-asset:evidence':'standalone-telemetry-evidence.json', 'qualification-asset:runtime':'standalone-telemetry-runtime-evidence.json', 'channel-asset':'stable-channel.json','manifest-asset':'release-manifest.json'}.get(hidden) @@ -3611,7 +3631,7 @@ def process(argv,**kwargs): return types.SimpleNamespace(returncode=0) if len(argv)>1 and argv[1].endswith('check-release-candidate-uniqueness.py'): self.local_ports.append('uniqueness-external-port') - self.assertEqual(argv[2:],['--version','0.109.0','--predecessor','0.108.0']) + self.assertEqual(argv[2:],['--version','0.110.0','--predecessor','0.109.0']) self.assertFalse(self.native.feeds);self.assertIsNone(self.native.release) return types.SimpleNamespace(returncode=0) self.local_ports.append('inert-nuget-send' if argv[:3]==['dotnet','nuget','push'] else 'saga:'+argv[2]) @@ -3679,6 +3699,8 @@ def assert_complete(self): self.assertEqual(reader.file(self.authority.head,'state/releases/utel-rel-25/release-state.json'),self.promoted107_fixture) self.assertEqual(reader.file(self.authority.head,'state/releases/utel-rel-26/release-state.json'),self.promoted108_fixture) self.assertEqual(reader.file(self.authority.head,'state/releases/utel-rel-26/release-head.txt'),b'preserved prior108 logical head\n') + self.assertEqual(reader.file(self.authority.head,'state/releases/utel-rel-27/release-state.json'),self.promoted109_fixture) + self.assertEqual(reader.file(self.authority.head,'state/releases/utel-rel-27/release-head.txt'),self.promoted109_head) self.assertEqual(reader.file(self.authority.head,'state/releases/utel-rel-24/release-head.txt'),b'preserved prior106 logical head\n') if self.history:self.assertEqual(reader.file(self.authority.head,'state/ordinary/cold-history.json'),canonical({'generation':self.history-1})) self.assertEqual(sum(self.rows['authorityCounter'].attempted.values()),counted_entries) @@ -3804,7 +3826,7 @@ def get(path): return row self.native.get=get elif mode=='protection':next(iter(self.authority.controls.values()))['enforcement']='disabled' - else:self.external_file('state/releases/utel-rel-27/release-state.json',canonical(self.rows['lastObservedJournal'])+b' ') + else:self.external_file('state/releases/coord110-observer-20261020-01/release-state.json',canonical(self.rows['lastObservedJournal'])+b' ') self.on_sleep=change with self.assertRaises(RuntimeError):self.invoke_caller() self.assertEqual(self.dispatches,['tag']) @@ -3898,7 +3920,7 @@ def prepare(effect): name='release-state.json' if mode=='state' else 'release-head.txt' expected=self.providers[0]._ordinary_expected_journal raw=expected[1]+b' ' if mode=='state' else ('e'*40+'\n').encode() - self.external_file('state/releases/utel-rel-27/'+name,raw) + self.external_file('state/releases/coord110-observer-20261020-01/'+name,raw) self.on_prepare=prepare with self.assertRaises(RuntimeError):self.invoke_caller() self.assertIsNone(self.native.tag);self.assertEqual(self.publisher_ports.count('post'),0) From ee9c72cc70c766c4ddd75d22c25d1e9926516b95 Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:48:38 +0200 Subject: [PATCH 12/13] docs(atlas): retain hosted exact SDK isolation boundary --- .agents/skills/atlas/assets/seed/catalog.json | 2 +- ...6c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json | 1 + .claude/skills/atlas/assets/seed/catalog.json | 2 +- ...6c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json | 1 + docs/atlas/catalog.json | 2 +- ...6c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json | 1 + registry/driver-skill-manifest.json | 9 +++++++-- 7 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 .agents/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json create mode 100644 .claude/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json create mode 100644 docs/atlas/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json diff --git a/.agents/skills/atlas/assets/seed/catalog.json b/.agents/skills/atlas/assets/seed/catalog.json index a81752500..6f8fc8188 100644 --- a/.agents/skills/atlas/assets/seed/catalog.json +++ b/.agents/skills/atlas/assets/seed/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/.agents/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json b/.agents/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json new file mode 100644 index 000000000..5599566ed --- /dev/null +++ b/.agents/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json @@ -0,0 +1 @@ +{"citations":[{"path":".github/workflows/telemetry-host-package.yml","repository":"FS-GG/.github","revision":"4c39f34110ae98ced402d7ddcc39822b35011296","sha256":"0fd1410a5a7be6d64f6dae520089c446d5446bc6468cebf82eda9c4cfb28bcf8"},{"path":"tests/telemetry-collector-container/test_private_native_qualification.py","repository":"FS-GG/.github","revision":"4c39f34110ae98ced402d7ddcc39822b35011296","sha256":"8d9ed1f67249a16665ab08ee7f16e65b015b0090a03adb445f1ea325a1b104e2"}],"conflictsWith":[],"id":"github/hosted-exact-sdk-isolation","kind":"lesson","recordedAt":"2026-10-20T10:47:26Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Installing an exact SDK into a multi-SDK root does not itself establish exact CLI selection under latestFeature policy. The maintained hosted workflow now preserves the image SDK tree by a guarded no-clobber same-filesystem sibling rename before the pinned setup action installs SDK10.0.401 into the unchanged /usr/share/dotnet root. Provider, real-directory/path, destination-absence and device checks precede rename; source absence and retained device/inode identity are read back before setup proceeds. Existing trusted-image/C-toolchain custody, exact SDK/path checks, normalization, native flags and job budgets remain. The pre-normalization probe requires successful exit plus exact10.0.401 and retains original stdout/stderr/exit in a fresh private directory, with a separate always-run diagnostic artifact route. Pure controls exercise preserved identity/content, refusal without clobber including a racing destination, exact setup ordering and wrong-version/failed-probe evidence before custody changes. This is source preparation with pure filesystem/shell validation only: no .NET/runtime execution, actual hosted CI success, published or installed adoption is established by this record. The original hosted refusal discarded its selected-version stdout, so that original version remains Unknown; later setup/image/source observations do not reconstruct it. Root owns exact final integration, required CI, final source/closure qualification and any applicable effects. No new SDK/image allowance, global policy change, reservation release, native activation or measured saving follows.","supersedes":[],"tags":["ci","hosted","sdk","isolation","custody","diagnostics","preflight"],"title":"Exact hosted SDK setup requires isolation from preinstalled resolver candidates"} diff --git a/.claude/skills/atlas/assets/seed/catalog.json b/.claude/skills/atlas/assets/seed/catalog.json index a81752500..6f8fc8188 100644 --- a/.claude/skills/atlas/assets/seed/catalog.json +++ b/.claude/skills/atlas/assets/seed/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/.claude/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json b/.claude/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json new file mode 100644 index 000000000..5599566ed --- /dev/null +++ b/.claude/skills/atlas/assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json @@ -0,0 +1 @@ +{"citations":[{"path":".github/workflows/telemetry-host-package.yml","repository":"FS-GG/.github","revision":"4c39f34110ae98ced402d7ddcc39822b35011296","sha256":"0fd1410a5a7be6d64f6dae520089c446d5446bc6468cebf82eda9c4cfb28bcf8"},{"path":"tests/telemetry-collector-container/test_private_native_qualification.py","repository":"FS-GG/.github","revision":"4c39f34110ae98ced402d7ddcc39822b35011296","sha256":"8d9ed1f67249a16665ab08ee7f16e65b015b0090a03adb445f1ea325a1b104e2"}],"conflictsWith":[],"id":"github/hosted-exact-sdk-isolation","kind":"lesson","recordedAt":"2026-10-20T10:47:26Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Installing an exact SDK into a multi-SDK root does not itself establish exact CLI selection under latestFeature policy. The maintained hosted workflow now preserves the image SDK tree by a guarded no-clobber same-filesystem sibling rename before the pinned setup action installs SDK10.0.401 into the unchanged /usr/share/dotnet root. Provider, real-directory/path, destination-absence and device checks precede rename; source absence and retained device/inode identity are read back before setup proceeds. Existing trusted-image/C-toolchain custody, exact SDK/path checks, normalization, native flags and job budgets remain. The pre-normalization probe requires successful exit plus exact10.0.401 and retains original stdout/stderr/exit in a fresh private directory, with a separate always-run diagnostic artifact route. Pure controls exercise preserved identity/content, refusal without clobber including a racing destination, exact setup ordering and wrong-version/failed-probe evidence before custody changes. This is source preparation with pure filesystem/shell validation only: no .NET/runtime execution, actual hosted CI success, published or installed adoption is established by this record. The original hosted refusal discarded its selected-version stdout, so that original version remains Unknown; later setup/image/source observations do not reconstruct it. Root owns exact final integration, required CI, final source/closure qualification and any applicable effects. No new SDK/image allowance, global policy change, reservation release, native activation or measured saving follows.","supersedes":[],"tags":["ci","hosted","sdk","isolation","custody","diagnostics","preflight"],"title":"Exact hosted SDK setup requires isolation from preinstalled resolver candidates"} diff --git a/docs/atlas/catalog.json b/docs/atlas/catalog.json index a81752500..6f8fc8188 100644 --- a/docs/atlas/catalog.json +++ b/docs/atlas/catalog.json @@ -1 +1 @@ -{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} +{"records":["000ada42299601fba29016e5c0e0d4012876fb42670bb10fa0b1315477254ba4","003893cc49855d17a15295d7adbe57ee301ea20281dff216461baee0810853ff","00641d046d6869fdd0023ab3df99e0e67a6ea28f0dcb701f622b1cec8b3e07c6","0066d4a624c02398f21b4d7a736a9fb5101ed8b6b13ceeab46907e9401af98ff","026a241141ee10eb829aa6ce461969242d5c1d45fe9ca19f08ef4ea880877676","026b08fb343aefe19177e95b759560d340d372def4b71acf613fefee3438ade2","0357495d23fac4fad210b6dd7ed7cc57dd33d107e1659a81f085cad78300797f","036c148f6d0e89858c9bf4cf380272ca6904bb4ca277a909fb71c47f5450cef7","04e404d89dca295564813149472b1de8e6c43357e2f6d91d169ded7600ed3a02","0509e5c6fdbd2dde0c0db8558647080560714804d00e4f9268342f2e84858a3d","06ad2c8aa0ff3b862edf3ba99e0e4e8801ee163709e66333cd06c3fc61232b05","0a6d7dc5b64970bfdadc9049ace95e8bc163fc421beea70129ff0eaa692c6d06","0a862ee40916522f8ae5f14b3e084bf5f2e6488185583346db96ced16ce7619e","0a9df276d42b56d98a7802befc2404204e0e5ee8bc7f5c032f7bb29aa4ae2091","0ad4403c8f4078dbfa543310c69bd1dfc768e305987214ffc37d7b2600c4687c","0c22360d4653eb0f450e4d3d34564875f1660cfcb2d546095d98b3faa3967cbc","0da4d093b49c0a1f654b38008bb01195e816829279ca1989bd2448194e15361b","0e560af7d9dd2e0f2f588a74cd35512973747f20bdfe0bee0bc889105ea53dc9","0ea7107c2c8edaab3ff2bae32f63cfbef6903a51cdaff257278f757ed5ef429d","0eef4d717eb03f0906aa3be7336aa71f831726afabe8a56077b76f6e82fd08e1","11fe30832d93706c60efd836b09f35f049c4a715ad6144cf277ca240c5780704","1244d27db0cf5075353bcc622d0fb3b5ca6a7d08526e2c5754e8b745c250bf3f","126c817ad25ca9cbac2a0f7446e76c79852459ac7b9c61e3ba5d5cbfe5d37dfb","13824d6bce0f961c89eef4bd3c8a72ae6ecf7a1339b9e06eec964dc5c12dc544","14156f1c6bf0fa8dfcb5cfafac09e012db446d528dad0e4301404fd693b9bed3","155fe673b8ae12549c978e1bf1d5c43e360937fcf2135cdcd5aea6f6c771da44","1945f527afc3c2930ec4d7fa57ebb2ef7dd6321c0dd3ab9233c9963e9e613165","19d657b67672257ece127f3b957674b7fb4780843148db0a36a0b329c2a418ba","1a24f6ef0c08a898f309c1b925fc19b29526f913a61a1dfe4b1a4308ebdd97ac","1b5351b2dc647aba864e387168db5128435cb80da94fc42581cd60a05fc34b9a","1cfd18d1b12b25604d818389a34bbaa746f450e70246c7f4242fc4e215fc46a4","1da011289116fe88fe92cb8f0e83ed7ccbbca251681d4e136c5a61c40364f8d3","1ec9445b242d2a2e149fe71c67bf13d8c0e4ebe5a6ed7b022656b9941973909d","1edc36731a9c76ad07d269d8b4fd84c8c956bb43d6f56de17d6208164856ffbe","1fec5a63a7b2b212e3e5d5222e49061f3b924966c9741294f5630836be8a3925","20901b579f69cc97eb56b492938864667576e1c9bfacf13f8a529c4f6e543448","21338155cb4f52c49e5072c877771be67c75590d9b238ea025fba5209fd6e018","23af79bd1e7995fc8162ddc4d830318acb054bbfcc9c7d5cb141ec306da67386","24d4f2730d94d1b7f149771ef0e59192f4936d142b21f4a56b1a391e4514d38d","252de742c26409c837ef491f55eb03ffcc99da13fb1a2f8ab66efbfb0c081a2f","253bb17320020b6a5ef8f0958856f6c565a239b4dc246d9e825f8b14da9ca8de","2591526ddabbea03fbdc38bf172bc54f42df9bc51eba7ad2b70d6e67215f08f1","26259abc7fe745f52e06f2aa2abb0e50f189bc7608065f04d5c669a0a99941cd","26290a0990d6dac0ce9448e05eb934210603356043dcf14a5d80585288e2aa92","26d6b31965013079d4db67a2c403e01f21e3c30ae65953400dbed92e289a0925","288daf614247c260cb673d8674e8b3874ccc4e269347836851f702d7ac8e2f7c","28abfaf6d50ca38af0b88aa50524200c17af9000da83ddbab3d8f9e06e020fa5","291d3db272eae084d34c04bc1305f2abb26a7e7acbc5515208469b46719a4ed1","2a38ddebfe3380232e35d5a24f9cb9f7c38abbc9c68add4ea5952c1e65d328d2","2c76ce93500601e281a41f5985fe4e3926fc8bc9d01ee687f14052cb553ad2d2","2d599c722a08306b98f2d833fb3e4a7acb9dea92e6a58820caa2f65c09803fb8","2e1bc31ff6b6fb14d0ca8703a02833db749b03e172f2e91f9423f0751e88c256","2ecd502add2d801eebed39411fadc9a80098ba9ce04a5f4b728a0e4e331232d6","2f7357367d921995f4c6fdaa693392adcd2df4860ef4d25c8dc47f7ddea8c755","2fb2ed7902a8e35dc36489a23245d963026d688008c92fed6fdc1f6bc27198a6","3018f389f6928af5830bdd081c9d03530a379f37d1c2f9196e6fb3c44eb337d5","310bfb5b2d061bb733771e5cb7b3b7d25db43af5eda9f806169b7ef9330c2fe7","32f69a7b8997ae98b9305ee578145d795dbcd39ca4469bf2465e57a0295cda51","335683e33b94cb86b5e426b4faed200673bf850151191a08458136ceb164fd4e","3407ec53a884d3945d86a88d6b9a883419dd426e96b1108a8e6686f30397a629","34463778cf2d29e3896a65613cf9e3eb3e9f2d8946d17f12b609e70eec63d128","348ba129b7b9c94e24fa8ddb81024e777c60448d1b5d49f7b2075591b23c13b1","35da3938b72cf3520e126ad595157104b69ab748904c7b4e12f563d6b103172b","37c8908ea2a349cd3034018027160ad810b28ad1fc203a9a353971e1f7396b4c","37e39faee019bb041627510f1f02746ba9a85696417a083b438eb4974b72c2bf","38a75fd804821f4836f0a7ba8d41af3d3a3a5f5d7dcea68487009297824258d9","38c6396e645750efcb2f187c36c383471b3b0b59290e3b42cfcb9668594cd0c3","397476cf107b48e7a662264f8fea9f880231fd3d1e0401622650f214cfaa35c7","3ad8b0398ba6c354c9e31b7438b2515579fc0b1f17de4b35a914c862a3a11e3b","3b3c6cf083b12a840565e00458e2fd4ee8a61f97cda452703a6b13d7776b6c13","3b4af144afed3d52dd2e1f64e23bc25b3475eee5f7af3bde9886761b15c33dfd","3b5d82795e9f5d1992ab67e078fcf1108247ab9b6d1baeac944d3ec0294cec5d","3d0274f77576abdbdf442c8843e955e1bbc91e9f8cbfe3646b119337cdb13c96","3dbf6d1c2c8db1a7e3988e2a84b67a4e1d7c8304661652ffa94db3b7eee08edb","3e2f66baa16c7ea936eba34720a55897438f60b343cbe8fda4eab1e5dde044eb","40de9f41f9a9f56ef6a51d065270e875b4a85cf043b7c4a0173b2510de4979ea","41c768ea17144c6ec225e9a65d4c3c127fdd7264dcba1a89aa17b20fd5d7e3ee","42aeb46fcc3d10b95e4067bc9cda875fa933b4102873f67c7bf1f8ca6799a598","4320b92712bc14dbe10b56f1cd3d1bdc093fc4be6016732839d0be4dd4d027d3","46cdf2c207f79d388001f6636dfb7a98bb2ba72b9d1c6df4938f0a27691e07a6","480f1ede18ae031b164d49d676feeb1090fb33932676ff52e1e2eb24e8d154cd","4855e1947afc954cb1b20bb45e7af10b098fa34714bd32e9bc77941cf58fdaaa","48797c44c92cb34fd9a57a08020b45c6920b2268dc8ad616c0f814a3710d5316","48d094622ada1806cb30335926007c1abc476b1f7b45a2e250c490afa25e847b","49e8cf09e38acefd3a0fa62d048028286d3b47b5ceccd8f51f10022978c47820","4a724a6a842a132c2185279513f341b79f9be93e42660f1255770eeae3b1323c","4b364ecb35ad02b06b6b0f32b6a29202f2c835e1ac0d70b89fd0278271799dbb","4be7778c4f491d55154a028d9a9dbb35059953fbcd243e0206902a6e64645efb","4c8c327dacf345e184042092e96ad3ea02ed4cece57dac5fa68ea52fbb5a6adf","4d5a44ba07fafeab823b54a21846269330ce35b4c190f3ddd5434bc8530d9b41","4d86a2764c55b5c5f675fddad8850ce4ceab160ac5c164a299fc098899d31aa9","4da0a5be70e8af9c39623deac83822749482187f6a0fc3d186dcfddaa7111576","4f1e58fc658a4ceda181e2a7fa249305b09b573ffd68c2489f204f4957224957","4f2750b974c1404acb721ffc84cbd1d0756a24211dd6f6503c10ea74dbc45676","509ec9c08864b9dd0029f32ffeac85fbac863e2dad459994c65b7cb5264faffa","50fd7e982eb2d2813634b7c44e102788a1a1cd4910a27acbcf219f76314fa322","52049cc9cee43bb27229e6b3e983e02c6aa20dd7d153b13e3c74bc6d2b47cf92","5382c901d160ca2d79888d8acd7a690a5349826b5da486274b0800c9d7513f11","540879695d41205515aaabe5466971014cb43b960a26b8e5958e37fed63df762","548d237f42167af5cf5caa0ba20f0e7a6387deb6f27765637f078325172396a7","5560616d1e72f0a539f9ebbfea3b7d195c1ef5622f97994af1963748d4f97533","556ee783d8e2e4ca50f656c095758be613983f904d998a6534fb155510114f21","55a4711e799294d06988ab4acf77eacd7d424123082bba3ec987dff0ae13999c","55ae095961d78a1514c4dd1e63d477c60179a8662571ab5a90abd3eb2b83eb10","56e7158313357bb145bd98c5f790e569be2203fb2601565a30091a597a7e7ff5","5962dd14d3923433cf723d698d1af19ac37a270b6e88445643fc56a646faab5b","5a2064cdf51026eed65457c05f34bec919b31d96d35c29498d298685965f0b5a","5b77bd6dfa81cc339e729e4195e258facbfeb64b9c680512f742e3fb1961fdd5","5c3527e43fe24c5aa171c6fa4a3de7fe5e78f2527aed0dd19cb21d154d43da21","5c79c77f00167ca140127b00f1a79e1ffac621e46fc461089594206a7df8d7cc","5ca67643d5111fffd21deb18569162733e846965bf05fe6eb33ccd37c964025a","5d015880319af666943e68169ca906bf2f0c813d8bf2c5c0262aeb5a40366350","5f2a75b89983d1005a38afa2cabccc3a39f31989807120281d8505ffd564e0c6","5f43c837f39d207c35a58e9b36fe3144017b2012ac7da334714247606f1906d2","5f4fa6dde5930fe1b42f805895f0f5fb135c2b3ff9830f2bd30ae7526a3295a1","630fdcff1f227b5baf5d10bd78ef0fde68791ac0cd8a15f65065f5cc4501b17b","63113617f2e4ee6b827a69bce6afb3949190a282f5feaaa9e2c9f82372623bb8","63544fa69b09916d52b305700eb9816305ff22b77162a44edd13897acea3a655","6385459222fba2c3302d3f2e38c57fcfe0f1829679fead6cffa1964248767d5e","63a4394e689acf4a4762cfb4df691d05f923fdf592fd2f8ea41e6a54f98d1136","65d5b7eff9d03761c8206218159bb34883c09052d6a1959d040f711a881b4d4f","66d414618d4283838bddb6b9fd4b5221c280a7f6a715b622143d3bea76bfe1f6","69ebfc7eb8427db3c5c59bdde652d0cb269426126f8540b1b58caa29ccf130e2","69edc4285578313d1dd2f914d69add075a7b354f7fba717606d1abe15292576b","6a34d9279cae58765d6ee4a980192c0e15f3ca217b9f1815861d472a281b3cf8","6c3c592efe9c684ada5661b8cc88a5c3f6e57c841db06b9e070687504cbf6236","6ce6d164c3e31463fb9e144fdf91413e55d077cfc4f25092bb02923fb538a84f","6e08a638e1e28020923effd4c65fc517dbe7b06100ff76cde74e427191503b84","6f3a7020233cd77cfe59eefec0a277f6dda323743c8d80e4e54a95cd3cbc23cf","6fccc6f0c5fa71c43211785dced8abd0f3295040eab56063f4e8d77f1c09b8ef","700cd21af9ed7e81900fad9d52de2fb11db48e64b038e4293168f85e5dd0e043","702d1dfa75e92a916a446429f474d4c296e6ea4e8c487995852d0525e8440659","704cf778db6086c3e282c81249fb0ef09c1d7c2043335ef74c7ecb69bb3e84ad","71ef1ed2d5e4bc7eebe7a73bb3e9423e5bc2f8319186380fe8b38334952d3b01","7256ba00af1cf759b95b7bf8ae3b9943f31349bd10a7652a26bb419b368d73a3","7369b339daca0fcf46ac7fe82d65ae95c75d7dbcaaae51209e6d90b6587a014e","73ec844fb3e2b9febd00ba37508b284fad141630f03cb9f74e36a195180f5054","7410de003c7b582e30470d1209eefc796a70c76fe8d61dd9ccfe01ecfa41310c","741c27b54c49167abef1d8633e3743b0e98f82a73731e744b6671e119a1c6310","75aaecf53db10459d768a6873f6783e7d7110aa510c2894378df027c1b03584c","76bf5a9c126db6eb466287a7c0d823327ee9882a70eaaa6efb03d169b5dba808","781a64598efb2a11156f07271ba1c14c4f6b3d73aa2943b26eae02063df7af70","799abc1e8d381b8d97349479139985e383bb49179b5a80f39807cb35a3ee78ce","79faec494bdd6d098c9d2a9d8559f822938c6b2104188db95321d89e7a732979","79fb2e6e6a91117b6aefbdaabda23ccfa596620f548ee5075993a8dc7a8b872f","7a032dbf0351aa32c77c8d187f7eb697500ff186c88c5946ecc15adc972246a6","7a134e7f1822183ed1c0ded720971539350feaaf92612761210cfc3ccdc55870","7aa52373f2721dd76fc8eeb3d6061794f27ea8d11e96bcb1ff25a97994a77d5c","7ad4ef4b8d3221758a9e7f9577750ee03f6cba11c8eae8bf25f74a3131bd21a2","7baa35131ece7ed9860607157d2531d4d70a061bdc9bb9876e20328f127cec53","7cbf970a11bdb91a40e248eee97ef789205910ebc913349698fc75ed35e82fdf","7d6133667f81aa66a98755d253ea43301b45ada338225df034d2ffdfc79829e7","7e89b59b456dde4bbbdbf8079665bd82c51d8e500018472981c15618b3893959","7ead0c68ffa0ced241af74dde58b3831343dff3f7eaab64bddb9954545b7ba12","7f8188b57ad3b0c28210c95954e5623376a4262dd5e75f002700c6094b8d6b6c","7f91dfc2ea1a3131c4090375db0f489c2a572e245ade6cda4ebd440446d6d60e","7fcb8cba3ed0ee9c342947aa88f0f699bb4f5c23244d21c6c739c9b66d7c6101","800060d7b4934508d0277f90a464e3112fd2fc99af4ef23825d09b0ff53f91c3","800a802a4ce9e597a102f0a566535c1f9f7adfc60c41af6bd2db4fb7fe3c0d0e","820c12fcbded9048a363b9e0ebbc48b24f85fd4a68131b5dfc1b19057bf09ddb","824bff7541ec2a4b0be126f0b0791314d568a0eb4e29073de4f9dbe0ee4918b8","82c419e5de083e423330432c9d45c744043d1bccd8eeccb41e3014ce9ae3c32f","8343a4211a4d0ffdb320d5a4305174d85bb707d15dad978f6436297d022daa11","83a97b9ebb29f5cd014ef5e178970a601ee92c44678f05d1860b383c5f63b79d","85a962a7c23c14dff8d683e738b53f422221697b213cafeb616d3a172a6c4223","8629fddeb4f273b35df69d4d28923adc14eff59d919b1a495d1a68818137c561","872ab2b2d65fe685b91e355f5af051c85b79569ece16448160d01fef38039624","87f2b3634baa504f2ed9508c6cf6a47bbfb36214a177eb13d70d6a987706818c","88b615ef6a31bd9958e98b8ea522f49f0360ccac5d9fa8deb9e3ef3fe3147d9d","89cafbb20d6029656266d8cb0f85103fa519c8032598282fea58c94cc59c4125","89f2105745b3a7cfd30e7d7c598d6c8fdde0a599f30fd0db7382cba50412445e","8b3eec010d1eae43a28c88434f2410a751f790a9d6ec4a08e75e68c171629ab2","8cecfa09651c40be4d7c11c117c80e1911dc75bf6f1cc34be64706823cc024c3","8d250acd40c8a24ba0d51cc73e65bba6856509b5fbf4c7d7a435897a01c6e764","8df1420c27503370db9382f68a0af8d2b4d56f9dbc94b24ffae450a905083a79","8e7371228a726f381fb811d1d812c39917788a3df7e53dba1a3c364e755a0c03","8fae27ba5117e202afbd523b249fc454912571900fc909f5419b8ac96c773c44","902b958b4db7d8d8bf73a82a8aa86e5485b39477047c8ad60175d118fe31d987","91c9ced5e9ab8da897b7f69166a7d0bade5c58d511b42d60d5430d536da45d09","941f70c384905ab77cb9a88e2671301117e4df553da6fc7a09210710deb9b6ca","9442788fa51227044803f1d3efdfc1c2b2da372871a85f0f7a6bb3596a5c003f","947a1cdd43831936480167169d30334f818bb5d882650a3547827c05204af111","95f0c5f3b9071db39fd72b88ec9fb2079ce7553fd5884fa527bc9216777d7c10","96c4c83df72e9d860e2ee51f1a74bc867c4a45efc8bf11bf88aa82e368b89aa4","971f59cc197732d0c0b6b8aabbbefca4550fb8fb04f8522bdb4257c05a28848a","98a097d6ebb754334250dfd3ccc5f3dfaf5966524758cbfc9e10adf4a0229693","98c7e4bc2f05e9b4ca703db4a02347db7355a44f04e3a4003e26c46a56bded2c","9944d1a9674e555a41d31d069d136461eb06dd4052d40f2e4ea4368dd978e01b","9b466e8fcabe551bb6292d23a359be3ea15b7627a6ad9c9e6a4ff11444c20860","9bac7daf255467f47b83723095f93fa4b574d5fc08593f48825a2b2ebb8e2dd8","9bbd03293bf53e9db51401d157b3eb2aa51e9c70449350e98b9a0a3fc9a684ce","9cef1feab6841836dc20527fcc8ad9979671fe811ff80a5a33bae113fcbebb97","9cf90b3aa59f3ca0e40fd9e1fec9703428752d63bded6b091d28f614c9ba99ae","9d8637e5adebaca208f21af0a254e80712988867411be560031f4b7a23cc04f6","9eb67ea41c5bcb9557ba51bbbd1b321a78f16335cadebbed848d8e6c1fc68bab","9ed400941ed49b2d90ebe3cc111d90d8bc966608ca61fe9bc315a3c1dbe8bc1b","a0ff0d0bb3a3c801b637d091293f2eeaac68e934274e4116d298ba60ec3461cc","a1baa1f699fd4ce19e8ef6cdfe346e1b0be63e16d5c5cd5feddcccb16a62f269","a3c84d76be9d891812e795dd46470c2978dceeff928d729c0d5dd6def599923b","a514a8c0898b6697696ca6f0ed9a43bf8993085b2db4299e3e9f8e3419c4a5ee","a64e8aee389ae696d0d4b045c0153092113fa522ed5a0fd9b5658b8418db4ded","a6c531ed9bbafabfdd649f3030daf2f24461163aaf99dc73bb24dddb77bbcb90","a7ff7302e668dcea1cd1db2241ff95c0d73534539bd03fdefebbfb57f60d3849","a8b4a33078335d2811bffb78eee49aab5fcb31597dae366d43e20c7f7800994b","a91a47fb4fa5c1b1a834fa602030e435ad641240e6ceeb99eeeab7341ca09dec","a91c8a1431a4120667cd523cf56bac004794fc5b8b24275ad2f9c8a15c75fba1","a986593807953215f834ba73e7d2565659b32aa849986013f8614bb1c61ea8cf","aa131e74e695292adab9f57b3ccc5a503a836dd4b95a3b2b107c69f35dba3637","aa4103342641899dc00c22207c13ac31c0c73afd97771b0a9b249187d979625d","aa70263d079788757f176da269e554fef9240845706f87a93101591f8114e807","acd7884bca46ea9422503cead985691da05cca25bd5ed52a199783cae7b8b01f","ae69fe306bf5db346ddfa4367cda24c95e44213baca27b0ee7d7167bcdd85af6","ae8c200dbcea29f43b29974cc247d70647c80d5d76385396f1c82ee9f669e2f1","aec13a075b84253397fb97e1c93a23e1aaee6d6bff2a9161bfd00a5b1d7611de","af12215a96963c1e7e5d766ed994695e423e4780ed0b3007aed87b150d090c05","af6b60ae365a6cbeb140430b030bdb667f53a2a97508ae92dfc9ed91ca73b54a","b09355a97e3aef396f681943b37a404a98fccc6bcb97781eddb2fc000d1d985d","b0ecfca0d114bae34ffa62ac3ea05159a4415fc6eb73ab1fcc4d79f657268f19","b25c41f19ba40e646fd9b6f82051ee4c38985539e445b26bd628eae98537df53","b262187aa66e8a97083bf7f79b91595bf7a4077abe7f8be5b00b4998f4579d20","b4091f93c3d96e36b0708f5dcd46e0e7a0a48f098036ccef6164e4a6429ed94c","b4093c67a9195ee7d28d2575e967ac80057b92339489c244243c7c504c669ff0","b44352445272089cf90967d4d413cf7009bed0ac19f3fa95cb831d5ebad081c3","b4ce73bea5219f1b27bffb36c6a9dee14447a710a8938db807770083db4552ac","b5102ef50e7d4ed1925af5a8b45192e737df02fafb75d7065995a2bb93d2e8e1","b5428b5775526a00645566822530fb969b82247ba83f2c80c06d34151e1f9061","b6cf3b02f36e0efa93b04667cdc5701340033a09e41a7196277cf6756999a666","b77c6669bcd54e0fa949faf2f7205f2631acfbc1ccf79f93f8dab5c5717f0e93","b7ffd6cddb12384224772e8de79aec89d8f4bca966a3c2a05763889f92a6db5c","b8abe10a2a92bf537a49e8dee92baf8de3ed591848a1b25151dab0d7ab3134e5","b96cea09313d481dfff1ed1a2c552ea29e8fe68f52139458996a4e36157748d2","b96f9beb6d6d8fbf88c4b8b2b807a362f2640479cab6173cf64c7710817785a0","b9ad2510d8249ec4c8e7fd8b2471727aa1bd0ce8f3dde78e545fb2f8f2985a1d","ba7d7464da8e13722232c8f86273774054693681becc450a68aea21a5a0e9b91","ba87e5d43ddb10937bb17941f055f80a223d0981fbba44107aeec8530e3a7774","bac3431138e986d6426c1e81bdfe0a968394896c0751cbbcc8f36002fd0ed069","bb230236c4ab6353afb4147014c93204d3d1eb8a6d18558075df5fe79ed7f392","bb7fa81e41820d63d58313460f5a3999a1f9fc2cd2fb10cbb5b41a931d8be6a2","bd714f38c881208f1190ad714bf8fa5aa63adf302bdaa8ad8810ff279e43459e","be75cc1ee935f783be39978de91ae196c16141d4096e16eb6d07f59583296b4b","be8c3cb2d8d67e63c8b069920b74c6272922febbc6a0a2c4a0072a7a213681d2","beed0f36d9b1b9a20bfbf89c96862482b8d5b9d4284bc89539efe9c9b11f000d","bfd21b5c8eb26e9d475868bb30d66ee08f20876e9df5cd06aa8fec01ffe666df","bfe97e65f2cbe6bcd0f14ff57ea4dc1dedb2e5f0db92d04d0982cf1932ac1c3e","c112d36ba38c362da1c022945db5b6bbdc3014685ca9bb7d940f5086f00a675c","c23cf45c1dcb748145d87f5c173dd3c8becaf9e3f6fdcb3e2ca91d6726b0842a","c29b8d250a7b5e73f4ef675329da2251b8de032501e4836445b6aafd90c645fa","c329c9df0dae8a036da9be440432d045be3ee13cf5664cfa6ccf11576ed11acb","c4600cd5358b5798a075beb54539d952f200def1c9a573bd237c795fd33ba36f","c6752cc3c7ad06d1e9f127365f078919ac46b77f8a8fe413650094d914838ec3","c6867ec30530fd3feca89a4e968522f783b636b165ef74f288c42dd50bd51a3d","c6bfbb004af355e96ed5b4c8c9b8b7a96d1c08d24bcde7c666728eb9497d6d71","c77c4d3f536cda10a71fe6a9cd17ea7c1408200e2f7aa7c5325d6915ff250c85","c8bd340e6fc7fa3e97415f7ad4c22c51d88c6e77f782c12923e841c04d3f882b","cad13b6653fd9f811e67d13c5f01f9dec047f8c384097cee01dd2e2db39e539f","cc24c3770587f2421514fa399d2617201752bdca145ac39058de91d45d3d19c1","cd2da00f6f1bad8fb7c1b87cff80e122eb017e44a471cdea769efc67db369038","cdbb7338988f2fd35fd92f21909b7801d9954d1c7ca78401f52c9313f21fb6dc","ce887fb65b6977a2046e7583d704863624e55909ebcc9c3ed065b3d13079a410","cf9223c369b6fb7baa52f301f904352ba8e8d5e4c2a06f70de6ef1cf76fe1b84","cfc3b5044af37ae7485fba8067dcb22b2438bdaa6e3a30c22ce0f9e2c00aa597","d0481d9b6111ab4afba0462e88970b863284807ff44ca97364c84952e3f88583","d0973a1aca6a118375b466d6e91821f8450110fdf042ac848ee16912012d2b0f","d0df3068db679e24d9487ee09a6462ac5cf3df30f46ee466b66feb6dd5ff71e2","d227e0a73e3c5452bc5ab41ea2c695dfc0ff9b0c1c81e59ab3173f796a4157cf","d2cba4dbbfe3d026f825a8b470a2f6011f9b8e245cf042ae8889afbb17dac6b2","d2e4c515093f8a2aa824c8b542a016e5c321065f4525931b2fac4f8af2fe52c6","d31e8aa21d1498f2d4a07c4cc89ea6f5a6d3ce54d334dbff230e0f55db35c85e","d37de74aadd5916eeae243decf347821c4e946356b9f70471658638ac3092f91","d3cf9b1433fd9a083c60baf6ade1df7f2a33e0cc7d519f491f9d6a93139a41e4","d49d02cad8bbfeac607457b08aac6068916ef45d8f6c980279d6e654407cc7be","d4f51c31a454d9abac29457cbbc21e1b5767c0eac1b37c41ee787a3efb05c80f","d52ca358246f638d0e11a061e97863697df44f43b093d6e8b84ba67b5838f2fb","d581443d0b6b42c76b816edc6946ce01a639ae42653ddc8cc2d6a89ce14fe947","d5c084e12da4a5111487c166b879042a21a056f761ee22d9237cb4f65f366341","d6077d547aa21ea10a9bdf6c752b8d1a0a6382b4b43a0fdf790f245e66a609fc","d67e8c1aaab1ce6ec1755599ecde153c47c6b90dd4c301663abe9057bc31af57","d6abcc1484c3df45bde915abf48324af1e995c3266a3c6c069e98e94c8d9a4d7","d84489933b19a8b073c65a0386e39e5067830facdc365ced6efe1948c7201771","d8ca8e025e226ad6bdd32a6a9fceae2982b0413a0ad09314558b54bdc724bf99","d8d03142030c11a0aa1012102fce2b202baf88e424a1236832937e87450dc579","d9823dfddf6c507ec030fce4bd2d98fbda18e595c2ebc563574d9196cc7a5e33","d9b0972f3406075b860ba7cd2e71d4492c826960319b10389c2c2820e2981254","da37a61fab07ec8856b725854e4064f55a59149aa69cad1bcbf89ec478b9f578","dad01e5bfb13a6c4419f4d24fa8dbb424e93a1c4be656b0e5dd48ac546e0a0d9","db049e7abb7c75b608ae25cc8a9f95959f7aedaa53e22390290319cc2eed3977","db21a75b4fa6165f75268963474f3262124795d816ba80f685bab2c6eaedb028","dc8c31e3075adeb63113852569b83dcd432485621eb77fef62cf3cce5c84a214","dd97ab52fd89f42352c595ce137684cc519c473fa17969e8a6adcde7322a4748","dda0a34d6704887eb36bbc0173334b49d755cac8cea3bbd17bfa972f04183dd4","ddbda9408727a19a4a55d516bed99331edf67d8301de9c78564716465c949619","de0f295bd0e46f29db1167d6c21bda624887c8543545d0c37d662e5b1b312341","de9a46da1f4605525b484a228f8bf356a9d900ecd16473faf77944b22575c141","e0288c94ca9c16a6de217e6baeed720fcf83e401bec45bd15ca47ba8fc9b44dd","e1667469384ec775a3df665679cb3fef057dc84dcb18ed8db8b9c5723835968a","e16c328504278cfe520d6d99990f2a4370cc48159aba86694d0f7598fd4b0611","e24df071f5325bb3a5b20f355143556bc7712535ee8b6ce4c426598f06fd2448","e28d8e6b71264d0bfab853e63178f2c151367cce0dbd16125596ff3604b6658d","e2c734504d211580b4e6674eb1c7d31fb6fb730c037210c34c980a96f9098269","e39ee882667ef28feb4971b73f9a01d3d72c557e1e56d59487af8e0f1b21edbd","e3f19c383354cdf45311f92f00b90fed25dfba7e9892ab2f5f3aa4885876b75f","e409fbfe439455330c0fe003de860e30f7093cc3cc83a32f886c9b539a29f60b","e6300ee8e6c2c4ce6d7ab02b7b06fd1cabe3c5c52b99a6ea3ea8b5acd5092e0b","e65e28b172b77d093f5425112bdae7ab93756487226fd7363057f85bb2a2556d","e734d068446591aba283d136c21b4fb0209f91352cb4fc6589bd651cdbfec163","e7556cd0bdd06760602ef78c5e3b30b4dbe175f96b7147b56ee2ec181a4c5ea3","e7a333109a7aaec2b71048868500c15e721900628eb48790dfeaa1fd4c2dabc3","e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b","e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671","e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932","ea1b8a251ecc1fd96697d0c602d3e14ec46383d27bb9485a0326cea5576ffacb","ea311dca2ef14e02b9aae563bb28dc737b04b7f01c1ceb2be3d92007d2c74ac6","ea8e5b79bbe5329ae8437677c8316f2f9fd75bb1d40c88308c269140a7e564c7","eb996138bc91c0ee63bafe1ba10b130ff5a2fc82aa4918296222e0a831a569fe","eba6e8e5a12a86f17fade41bef365aa95491c469e18aa91aef64908a4263c905","edc160a11c07dda8072748b66db7f27b6cd8efbd1faa3f6c826a0fe445859c17","edfcbe4773eac1fe2964179a4ad21294efede89568f2efd8e283ac18bc5693b1","f0f90dee84db760cc1bb0f6e6983d4de0e3d5d9f4adf7b2b52f0d3dbe6d585a4","f1d4a6e98f41ab3f6cfd67cddeab9d0ed287b92cb3dbe575e3ce61925510a792","f21c3a9267110e469f224ac7eb76ca5bb084fc90df014f1ca6791d5770483944","f379a1b9e29aa7fc25c4c0c897eaa3c0e90d66a201a0ade8cbf523a5cdc8cf50","f3e04891c79b604f9235f438adfa49ee27db43d25c7be0d1cc06ae53b8f6d2d8","f46904e701174fe2850798d9e1b077bdac42fcac01dbc385298da01118c82aa6","f53265f53af0b0856911ab08b373736964d0c443e8ba61d7f1d45f5e5b04edf3","f686173d310f41e26e3fe8a7c1dbf4313e4d793323335348badbcf4633f5d699","f6f5046c1263095a69e774716b0cd0907f6795af8ad683c5f41846d4c54a3449","f704c9c9e2cab1ed44578f48d161320b5fb4384ecdd8b40a5e22c4078a8594da","f89156489d35f9992d5971a52a6e03a7d7f095e15c2c782e85efb1408a2bd6be","f99ef6fa3c9c6bf572ec69eb6eeea9f88ce6590d3a5565bec62b001b6f2a376a","fa2dfc22b4fdbcf402a822e8dd376925655d997a0f96284a60f10665ba3581ba","fa3df5f8349aec4805bbcd279b88697def63f2462d8ada0b5fe1d9983d9a6daa","fa6b97cbca1d4f09662e706293b0aec1eb76b8e2277441f54ab6c548b5423236","faac0c3fa7cdf67b452d407e9a1db5cbe1e9140ecfe300200b0b0a6279c97c66","fbc8b53b5c6f3727c084e5e0429e410a3fed5a17e1a0144692fd196d9836a4bb","fd04d7588bb9e6ca0a8b65ed0c9635082a9ee5f46b2d1b5b25866a072236c1fc","fd60f2a432086c6fc4a4c39d8d2d6edf5794c763c05a6401db2bb5fa2c601775","fd618761103380d690cb98804e8f116b6c66ef049fbf67c1a059ce49188658b3","ff532716738e2fc716c10797d9717f324cca3a1234320a84a73a0b89569f11ab","ffd0fe3449e449c7b9fcdcc7e2c1ffb677e57ad935a252de88a0122d437efa67","ffde5c700732beac27a9b5162213d387422ce199400e56d9cefe550005b6a542"],"schema":"fsgg.atlas/1"} diff --git a/docs/atlas/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json b/docs/atlas/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json new file mode 100644 index 000000000..5599566ed --- /dev/null +++ b/docs/atlas/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json @@ -0,0 +1 @@ +{"citations":[{"path":".github/workflows/telemetry-host-package.yml","repository":"FS-GG/.github","revision":"4c39f34110ae98ced402d7ddcc39822b35011296","sha256":"0fd1410a5a7be6d64f6dae520089c446d5446bc6468cebf82eda9c4cfb28bcf8"},{"path":"tests/telemetry-collector-container/test_private_native_qualification.py","repository":"FS-GG/.github","revision":"4c39f34110ae98ced402d7ddcc39822b35011296","sha256":"8d9ed1f67249a16665ab08ee7f16e65b015b0090a03adb445f1ea325a1b104e2"}],"conflictsWith":[],"id":"github/hosted-exact-sdk-isolation","kind":"lesson","recordedAt":"2026-10-20T10:47:26Z","repository":"FS-GG/.github","schema":"fsgg.atlas/1","status":"recorded","summary":"Installing an exact SDK into a multi-SDK root does not itself establish exact CLI selection under latestFeature policy. The maintained hosted workflow now preserves the image SDK tree by a guarded no-clobber same-filesystem sibling rename before the pinned setup action installs SDK10.0.401 into the unchanged /usr/share/dotnet root. Provider, real-directory/path, destination-absence and device checks precede rename; source absence and retained device/inode identity are read back before setup proceeds. Existing trusted-image/C-toolchain custody, exact SDK/path checks, normalization, native flags and job budgets remain. The pre-normalization probe requires successful exit plus exact10.0.401 and retains original stdout/stderr/exit in a fresh private directory, with a separate always-run diagnostic artifact route. Pure controls exercise preserved identity/content, refusal without clobber including a racing destination, exact setup ordering and wrong-version/failed-probe evidence before custody changes. This is source preparation with pure filesystem/shell validation only: no .NET/runtime execution, actual hosted CI success, published or installed adoption is established by this record. The original hosted refusal discarded its selected-version stdout, so that original version remains Unknown; later setup/image/source observations do not reconstruct it. Root owns exact final integration, required CI, final source/closure qualification and any applicable effects. No new SDK/image allowance, global policy change, reservation release, native activation or measured saving follows.","supersedes":[],"tags":["ci","hosted","sdk","isolation","custody","diagnostics","preflight"],"title":"Exact hosted SDK setup requires isolation from preinstalled resolver candidates"} diff --git a/registry/driver-skill-manifest.json b/registry/driver-skill-manifest.json index 1ab217f26..5ae266416 100644 --- a/registry/driver-skill-manifest.json +++ b/registry/driver-skill-manifest.json @@ -5,7 +5,7 @@ "id": "atlas", "scope": "driver", "sha256": "c18e56fcc56abf80903e2fc6829cd94b44f42947724a26318ebcbf1ac5e1b35b", - "tree-sha256": "c61fcd6e5c331bb3f588c8c8904d8fbd72047b1183ea002f514bb6514352189a", + "tree-sha256": "c9ec6ef7cd8f0ff4cbb58a9c47e7bf9a90afe0a34590becdd719415996c95e16", "files": [ { "path": "SKILL.md", @@ -24,7 +24,7 @@ }, { "path": "assets/seed/catalog.json", - "sha256": "546f8425cbde70c00ce43872163c3a9dc82227620a578a66811cb8fdcf584e73", + "sha256": "0262c948fa8a9c31fb29e8c075749f239a89f66a2de791d46b32c0c231da0bc4", "executable": false }, { @@ -1567,6 +1567,11 @@ "sha256": "e7c9175fbfd9fd84bed95d552bc0a439b07a233c3e91fb39ae2f23197ee53f1b", "executable": false }, + { + "path": "assets/seed/records/e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671.json", + "sha256": "e7ed299ecf44d4a96c228e9aa30312f405df34d6bea99d4b0f7074c79705a671", + "executable": false + }, { "path": "assets/seed/records/e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932.json", "sha256": "e8bc1b4f162c4066d74e5d1b3dcbe344742279b6856736c2e1690dbaa7bcf932", From 28a4fa875d645f525e6cf2b63939d490c88a70ea Mon Sep 17 00:00:00 2001 From: EHotwagner Date: Tue, 20 Oct 2026 12:54:05 +0200 Subject: [PATCH 13/13] Accept guarded GNU mv race refusals across hosted versions --- .../test_private_native_qualification.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/telemetry-collector-container/test_private_native_qualification.py b/tests/telemetry-collector-container/test_private_native_qualification.py index 364bf113a..5519ee76c 100644 --- a/tests/telemetry-collector-container/test_private_native_qualification.py +++ b/tests/telemetry-collector-container/test_private_native_qualification.py @@ -808,7 +808,11 @@ def test_refusals_preserve_existing_inputs_and_prevent_setup(self): for case,stage in cases.items(): with self.subTest(case=case), tempfile.TemporaryDirectory() as td: result,sdk,retained,original,log,setup=self.isolate(pathlib.Path(td),case) - self.assertNotEqual(0,result.returncode); self.assertIn('hosted-sdk-isolation-refused stage='+stage,result.stderr); self.assertFalse(setup.exists()) + self.assertNotEqual(0,result.returncode); self.assertFalse(setup.exists()) + # GNU mv may refuse the racing destination itself or leave it for the post-rename guard. + expected_stages={stage,'retain-rename'} if case=='destination-race' else {stage} + observed_stages=re.findall(r'^hosted-sdk-isolation-refused stage=([a-z-]+)$',result.stderr,re.MULTILINE) + self.assertEqual(1,len(observed_stages),result.stderr); self.assertIn(observed_stages[0],expected_stages) if case not in ('source-file','source-symlink','missing-source'): self.assertEqual((original.st_dev,original.st_ino),(sdk.stat().st_dev,sdk.stat().st_ino)); self.assertEqual(b'original image SDK bytes\n',(sdk/'original-sdk').read_bytes()) if case not in ('rename-failure','destination-race'): self.assertFalse(log.exists())