Repository navigation
Spec 018 phase 3: S1, the Scheduler pages - #202
Merged
Merged
Conversation
Re-draw the groups at f3f685f, read S1's 12 defects at the second compile (probe/second.py), run the recurrence greps, add D10 (watch UseExternalBus too) and ledger rows 4-7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
…; watch both V9 names AwsScheduler.md #3 and AzureScheduler.md #6 called AddServiceActivator and UseExternalBus, both dead at 10.8.0. Two symbolwatch rows (D5, D10), opt-outs on FAQ.md and V10MigrationGuide.md. symbolcheck --verify-list now strips comments and strings before counting a file (D11), since both names survive in Brighter only as doc comments. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
…SwitchingSchedulers CustomScheduler.md implements every member of the four scheduler interfaces and stores FireSchedulerMessage/FireSchedulerRequest as Brighter's own schedulers do (ledger 6). BrighterSchedulerSupport.md's two two-snippet fences split. SwitchingSchedulers.md's literal '...' becomes '// ...', and the transition example chooses its scheduler at startup, since UseScheduler<T> cannot infer one T from two factories. Three scaffold units; probe/page.py for the repair loop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
Services take their dependencies by constructor instead of naming undeclared fields; UseScheduler is called on the builder, not on IServiceCollection; the test fixture registers its handler with AsyncHandlers and shows the handler and registry it relies on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
Dead-lettering and lock duration are set on AzureServiceBusSubscriptionConfiguration; the page passed deadLetterQueueHandling and lockTimeout, which no overload has (ledger 5). ServiceBusDefaultAzureClientProvider, not ...AzureCredential...; the troubleshooting handler is the reader's own, not FireAzureScheduler's; the ARM fragment is json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
V4 usings throughout; services by constructor; single-option fragments made whole inside an AwsSchedulerFactory initializer; the troubleshooting block declares its connection before using it; the IAM policies are json. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
Statements before the types they sit with; a lambda body's assignments end in semicolons; Hangfire.PostgreSql's schema is set on PostgreSqlStorageOptions; the allow-all dashboard filter Hangfire does not ship is shown; UseScheduler fragments made whole on the builder; the UTC/local pair split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
…son (D12) Clustering is configured on the persistent store, not the configurator; UseJsonSerializer is obsolete at 3.22.4 for UseNewtonsoftJsonSerializer; the misfire threshold is a property; QuartzSchedulerFactory's message id hook is GetOrCreateSchedulerId; UseScheduler is called on the builder; statements before types; the UTC/local pair split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
…FAILED, D12 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
…ilt after its storage Twelve sites on six pages constructed HangfireMessageSchedulerFactory while services are configured, which throws: its Client default reads JobStorage.Current before AddHangfire has set it (Brighter#4600). Each now builds the factory in UseScheduler's provider lambda after resolving IBackgroundJobClientV2. Nine probes under probe/s1/, each with a control. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
…ools/README rows 2, 8, 9 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
Quartz's pool-size example shows the connection string where it goes; the two store-the-id fragments declare the service they sit in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Spec 018 phase 3, S1: the eight Scheduler pages. This changes the published site, so it needs your sign-off.
csharpfences and are retaggedjson, and 4 stay FAILED and listed, all same-page. With four two-snippet fences split, the eight pages hold 141 C# blocks, of which 137 build. Seven new scaffold units;AzureSchedulerContext.csextendedtasks.md§ Defect ledger, rows 1 and 4–20). Some of the larger ones:AddServiceActivator/UseExternalBusas current code (D5, D10)CustomScheduler.mdimplementing two of each interface's five members, with types that don't exist at 10.8.0UseSchedulercalled onIServiceCollection.UseScheduler(new HangfireMessageSchedulerFactory())throws at startup: the factory'sClientdefault reads Hangfire'sJobStorage.CurrentbeforeAddHangfirehas set it. There are 12 sites on 6 pages, two outside S1 (InMemoryOptions.md,SchedulingAMessage.md). Each now builds the factory inUseScheduler(provider => …)after resolvingIBackgroundJobClientV2. Filed upstream as [Bug] HangfireMessageSchedulerFactory throws when constructed during service configuration (eager BackgroundJobClient) Brighter#4600, as you ruledspec/018-compile_residual/probe/s1/<name>/projects against the released packages; three more are read and named (§ Behaviour (3.5))symbolcheckgains two watchlist rows, with opt-outs onFAQ.mdandV10MigrationGuide.md--verify-listnow strips comments and strings before counting a file (D11), since both names survive in Brighter only as///Quartz.Serialization.Json3.22.4 (D12)probe/page.pyandprobe/second.pyare the repair loop's instrumentsGates
blockcheck --reportpagelint--changedstrict, 0 errors;--plant5 / 5symbolcheck--verify-listall 24 DEADlinkcheck· shape · redirects ·--verify·versioncheck·optioncheckAll but one are inside the bands task 3.1 predicted. BUILT is 5 above, because 3.1 expected D3 to skip the single options shown alone, and every one was made whole instead (
tasks.md§ Phase 3 closed).For you
InMemoryOptions.md,SchedulingAMessage.md(the Hangfire repair), andFAQ.md,V10MigrationGuide.md(opt-out comments only). May I merge?spec/018-phase3?🤖 Generated with Claude Code
https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy