Skip to content

fix: lower the source generator's Roslyn pin to the net10.0 GA compiler - #1

Merged
kt81 merged 8 commits into
mainfrom
claude/repo-issues-assessment-w43e9g
Jul 12, 2026
Merged

fix: lower the source generator's Roslyn pin to the net10.0 GA compiler#1
kt81 merged 8 commits into
mainfrom
claude/repo-issues-assessment-w43e9g

Conversation

@kt81

@kt81 kt81 commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Microsoft.CodeAnalysis.CSharp 5.6.0 made the generator unloadable (CS9057)
on any SDK shipping an older compiler, including current distro packages
of the .NET 10 SDK. Pin to 5.0.0 - the GA compiler - so standard installs
build; the generator only uses ForAttributeWithMetadataName (Roslyn 4.3+).

Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa

claude added 8 commits July 12, 2026 02:00
Microsoft.CodeAnalysis.CSharp 5.6.0 made the generator unloadable (CS9057)
on any SDK shipping an older compiler, including current distro packages
of the .NET 10 SDK. Pin to 5.0.0 - the GA compiler - so standard installs
build; the generator only uses ForAttributeWithMetadataName (Roslyn 4.3+).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
…S, metadata token

Every listener gains an optional Tls block (PKCS#12 or PEM cert/key):
- Http.Tls: HLS/DASH delivery over HTTPS
- Management.Tls: keeps the Bearer token off the wire in cleartext
- Rtmp.Tls: RTMPS via the TLS connection middleware ahead of the handler
Options validation fails fast on an enabled Tls block with no certificate.

The metadata injection endpoint on the public delivery port gets its own
optional Bearer token (Http.MetadataInjectionToken); the constant-time
comparison moves to a shared TokenGate used by the management gate too.

Verified live: HTTPS 200 on both ports, plaintext refused, TLSv1.3
handshake on 1935, 401 without the metadata token / through with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
Out of the box the only publish policy was allow-all. Listing names under
Publish.AllowedStreamNames now switches the built-in authorizer to an
exact-match (case-sensitive) allowlist over the raw published name
(RTMP publish name / SRT streamid), keeping last-wins takeover for valid
names so reconnects still work. A custom IPublishAuthorizer in DI still
overrides the built-in policy entirely.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
MemoryHLSStorage kept every ended stream's final window until the same key
published again, so distinct short-lived stream names accumulated without
bound. Streams now carry a last-write stamp; EvictIdleStreams (new
IEvictingHLSStorage capability) frees any stream idle past the TTL unless
the publish registry still owns its key, releasing blocked LL-DASH readers
on the way out. A hosted sweeper runs it a few times per TTL.

Default TTL 300s; 0 restores keep-until-republish. File storage is an
archive by design and is never cleaned.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
The window-acknowledgement/peer-bandwidth value announced during the RTMP
connect sequence was hardcoded at 1.5 Mbps with a TODO to make it
configurable; it now binds from Rtmp.Bandwidth (same default). Also gives
the NALU-length-size guard in NALFileFormat a message naming the actual
offending value instead of a bare InvalidDataException.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
TryResync widens to internal (InternalsVisibleTo already covers the test
assembly) so the alignment-loss paths get exercised without a live SRT
socket: garbage skip to a verified boundary, payload 0x47 rejection,
keep-tail-for-more-data, and full-garbage drop. TokenGate gets the
match/mismatch/scheme/whitespace/long-token matrix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
…ream TTL

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
CmafPackager was only exercised incidentally; it now has a structural
ISO-BMFF box parser and 9 tests: init-segment box trees for H.264+AAC /
video-only (avc1 with verbatim avcC, mp4a with the ASC inside esds, mdhd
timescales), the unmapped-codec rejection, and fragment structure - styp/
moof/mdat order, trun data offsets into the shared mdat, signed composition
offsets, sequence numbers and tfdt base times advancing across fragments.

The TS-mode HLSSegmenter (the passthrough variant was tested, this one was
not) gets 5: keyframe-after-target cutting with held PSI tables, window
trimming with physical blob deletion, handover export without ENDLIST,
resumed continuation with EXT-X-DISCONTINUITY, and broken-input rejection.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QwUovURiQeAM8ctCu2gjAa
@kt81
kt81 merged commit 22eef3e into main Jul 12, 2026
1 check passed
kt81 added a commit that referenced this pull request Jul 13, 2026
fix: lower the source generator's Roslyn pin to the net10.0 GA compiler
@kt81
kt81 deleted the claude/repo-issues-assessment-w43e9g branch July 13, 2026 11:23
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.

2 participants