Skip to content

correcting release config#15

Merged
rbuergi merged 1 commit into
mainfrom
releasing
Oct 7, 2024
Merged

correcting release config#15
rbuergi merged 1 commit into
mainfrom
releasing

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 7, 2024

Copy link
Copy Markdown
Contributor

No description provided.

@rbuergi rbuergi merged commit 4538456 into main Oct 7, 2024
@rbuergi rbuergi deleted the releasing branch October 7, 2024 18:14
rbuergi added a commit that referenced this pull request May 5, 2026
…p trigger

Tasks #15, #16, plus a related production-code drift fix.

1. CodeNodeType.HandleExecuteScript: workspace.UpdateMeshNode that stamps
   LastExecutedAt / LastExecutedBy / LastActivityPath onto the Code node
   was being discarded. Observable.Create only runs on Subscribe — the
   stamp never landed, so CodeNode_StampsLastExecutionFields timed out
   waiting for LastActivityPath to match. Added .Subscribe(_ => {}, _ => {}).

2. ScriptExecutionInUserHomeTest.Cancel_Via_RequestedStatus_Patch...: the
   test's workspace.UpdateMeshNode that flips RequestedStatus = Cancelled
   on the activity log had the same bug — the patch never hit the
   activity hub, so the kernel never got the cancel signal. Added
   .Subscribe(_ => {}, _ => {}).

3. NodeTypeStreamCache.MaybeKickCompile: was flipping CompilationStatus
   = Pending to trigger compile via InstallCompileWatcher — which was
   removed in 86b3470. The flip is dead code now; nothing reacts to
   Pending. Replaced with a CreateReleaseRequest post to the per-NodeType
   hub, matching the explicit-only compile flow.

4. MeshNodeExtensions.UpdateMeshNode<TContent>: the void overload now
   forwards to GetMeshNodeStream(path).Update(...) and returns
   IObservable<MeshNode> — callers must Subscribe (the cold observable's
   side effect only runs on Subscribe, per
   Doc/Architecture/AsynchronousCalls.md). No callers in src/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
rbuergi added a commit that referenced this pull request May 10, 2026
…, parallelism, backoff)

NuGetAssemblyResolver:
  - Evict faulted/cancelled tasks from the per-key cache before
    returning. A transient feed failure (network, throttle, cancelled
    in-flight resolve) used to poison the cache for the resolver's
    lifetime — every subsequent call replayed the same exception.
  - Pass CancellationToken.None to the shared core task so a single
    caller's cancellation can't take down the resolution for
    others; per-caller `ct` projects via `task.WaitAsync(ct)`.
  - Switch DependencyBehavior from `Lowest` to `HighestMinor` so
    `#r` directives pick up patch-level security fixes via
    transitive dependencies without silently jumping major/minor.
  - Document that hydrated cache content is trusted to match
    (id, version) — flag for future content-hash verification if
    cache poisoning becomes a concern.

LinkedInPublisher / XPublisher (LinkedIn already committed in batch A
for the dynamic+PII parts; this commit adds the 401 retry):
  - SendWith401RetryAsync: on the FIRST 401 response from a publish,
    force-refresh the token (zero ExpiresAt before EnsureFreshAsync)
    and retry once. Closes the race where the access token's TTL
    expired between EnsureFreshAsync and the actual API call.

PostStatsRefresher:
  - Process due-refresh targets via Parallel.ForEachAsync bounded
    by SocialOptions.StatsRefreshDegreeOfParallelism (default 8),
    so a slow API + large refresh window can't let one tick
    overshoot the next interval.
  - Per-target failure backoff via a ConcurrentDictionary of
    last-failure timestamps — targets that failed within
    StatsRefreshFailureBackoff (default 15 min) skip the next tick.
    Stops a degraded platform from generating thousands of repeat
    warnings every cycle while the underlying issue is fixed.
    Success clears the backoff entry.

SocialOptions: add StatsRefreshDegreeOfParallelism (8) and
StatsRefreshFailureBackoff (15 min) knobs.

Addresses PR #95 review items #12, #13, #14, #16, #17, #18.
(#15 XPublisher defensive parse + the LinkedIn dynamic / PII items
were already in commit 478fdaa.)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
rbuergi added a commit that referenced this pull request Jun 5, 2026
… (atioz DB-corruption root cause)

PostgreSqlPathRoutingAdapter.ResolveState now rejects a first path segment that isn't a
valid Postgres-identifier partition name (starts letter/digit, then [A-Za-z0-9._-], <=63
chars) via IsValidPartitionSegment, instead of lazily CREATE SCHEMA-ing it. Prod 2026-06-05:
the atioz DB filled with garbage schemas from request URLs routed as mesh paths
(login?error=auth_failed, search?q=agent&hq=scope%3adescendants) — corrupting the DB and
crashlooping the migration. First tested increment of #15 (partition-abstraction rework).

Test: PartitionSegmentValidationTest (18 cases, no DB) — rejects the real atioz garbage,
accepts valid partition names, enforces the 63-char identifier cap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
rbuergi added a commit that referenced this pull request Jun 5, 2026
…outing + 42P01-tolerant reads

Removes the partition existence-probe abstraction. PostgreSqlPathRoutingAdapter resolves
schema = first path segment synchronously (no information_schema probe, no async cache); writes
ensure the schema via public.ensure_partition_schema; reads tolerate an absent schema (per-schema
PostgreSqlStorageAdapter catches Postgres 42P01 -> empty). Deletes PgPartitionCache +
PgPartitionNotifyListener (pg_notify cache-invalidation). The _-prefix global satellites resolve
via the provider's registered-partition map (seeded at boot), never lazily created. Keeps the
URL-segment guard + NodeType-name guard.

Build 0/0; PG suite 448/449 (the 1 failure, NotifyDedupTrigger, is a pre-existing pg_notify
ordering flake — passes in isolation, bypasses the router, unrelated).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant