Skip to content

feat: add unknown-rendition baseline planning for Terminal 1.18 - #63

Merged
uniblab merged 23 commits into
mainfrom
feature/1.18.0-rendition-baseline
Sep 18, 2026
Merged

uniblab merged 23 commits into
mainfrom
feature/1.18.0-rendition-baseline

Conversation

@uniblab

@uniblab uniblab commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add TerminalScreenPlanner.PlanRenditionBaseline() for safe recovery from unknown physical rendition state.
  • Preserve opaque, same-session planning/transaction ownership and all stable 1.x behavior.
  • Freeze the identical net8.0 / net9.0 / net10.0 public API and qualify the stable 1.18.0 package.
  • Synchronize the main/version roadmaps, release notes, README, architecture, compatibility, security, package metadata, and API baseline.

Contract

The new operation derives obligations from selected-profile attribute-entry and color-selection evidence before reversible normalization. It restores every exposed rendition axis or returns null:

  • prefer a global attribute reset;
  • otherwise emit every required safe specific exit in stable underline, standout, italic, strikeout order;
  • restore original colors after attribute restoration;
  • allow a zero-byte plan only when no enterable attribute or selectable color axis is exposed.

Existing PlanRenditionTransition(...), PlanRenditionReset(current), normalization, operation-plan opacity, output epochs, cancellation, serialization, and cleanup semantics are unchanged. No TermInfo type, capability identifier, terminal string, or expansion API enters the public surface.

Qualification

  • Final head: 8fc4a0a194f365285615b9fb475eca60fca7e30a
  • Final exact-head workflow: 35384014876 — all nine jobs green
  • Stable-package evidence workflow: 35382158657
  • Unit tests: 2,383 passed per target framework
  • TermInfo integration tests: 15 passed per target framework
  • Public API SHA-256: 48975f2c42f6c544e9c574a9b3d79f7e2b7b3ecb10ab1a5a0b7067749e38e65d
  • Icod.Terminal.1.18.0.nupkg SHA-256: e8f2b374fd0865aa151910686197096b344f7daf8d0ef72331520d944b322932
  • Icod.Terminal.1.18.0.snupkg SHA-256: 8a14d163f2ea0bf030bea0416e0a84a919a2e8c83c692956b3a2a98470d78422
  • Published Icod.DCurses 1.6.0 soak and TermInfo-free future-renderer package consumer passed on all target frameworks.
  • Independent final review: spec compliance PASS, code quality PASS, no Critical, Important, or Minor findings.
  • Inline review threads: none.

Dependency boundary and follow-up

Production dependencies remain Icod.TermInfo 1.15.0 and Icod.Timing 1.0.0. The retained DCurses PR #32 exact-byte witness resumes only after this package is published, per its published-package criterion.

This PR remains draft for maintainer handoff. No merge, tag, GitHub Release, or NuGet publication is included.

uniblab commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

T180 RED checkpoint:

  • Established the unpublished 1.18.0-alpha.1 identity.
  • Added the focused unit witness and TermInfo-free future-DCurses compile binding for TerminalScreenPlanner.PlanRenditionBaseline().
  • Exact head: 53dadc26d69e20b8e681dc3cb940fa0e84b5373b.
  • Pull-request run: 35377018637.
  • Representative Linux job: 105703974194.
  • RED result: the same expected CS1061 for the absent PlanRenditionBaseline() API on net8.0, net9.0, and net10.0; no production implementation is present at this checkpoint.

Proceeding to T181 minimal implementation.

uniblab commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

T184 negative API-baseline gate proof

The deliberate mismatch behavior is recorded by pull-request run 35379264781, package-candidate job 105711285369.

That job successfully built the package project and generated byte-identical public API snapshots for net8.0, net9.0, and net10.0, then intentionally failed the frozen-baseline gate because:

  • selected baseline: docs/Public-API-Baseline-1.17.sha256
  • expected fingerprint: c0a051a925d551e526343ef59d8c47d75e41868d84235fa30bfa7debe1b3ceb9
  • generated 1.18 fingerprint: 48975f2c42f6c544e9c574a9b3d79f7e2b7b3ecb10ab1a5a0b7067749e38e65d

The verifier rejected the mismatch at VerifyPublicApiBaseline.ps1:70 before package artifact publication. After review of the additive signature, the active selector was moved to the frozen 1.18 fingerprint. Exact-head run 35380187310 then passed the package-candidate, all package shards, API/XML, downstream DCurses, and validated-artifact gates.

This records both sides of T184 Step 6: a deliberate mismatch fails, and the reviewed 1.18 baseline succeeds.

uniblab commented Sep 18, 2026

Copy link
Copy Markdown
Owner Author

Icod.Terminal 1.18.0 stable-candidate closure

T180-T185 are complete.

  • Final PR head: 8fc4a0a194f365285615b9fb475eca60fca7e30a
  • Final exact-head workflow: run 35384014876 — all nine jobs green
  • Recorded stable-package qualification: run 35382158657
  • Unit tests: 2,383 passed per target framework
  • TermInfo integration tests: 15 passed per target framework
  • Public API SHA-256: 48975f2c42f6c544e9c574a9b3d79f7e2b7b3ecb10ab1a5a0b7067749e38e65d
  • Icod.Terminal.1.18.0.nupkg SHA-256: e8f2b374fd0865aa151910686197096b344f7daf8d0ef72331520d944b322932
  • Icod.Terminal.1.18.0.snupkg SHA-256: 8a14d163f2ea0bf030bea0416e0a84a919a2e8c83c692956b3a2a98470d78422
  • Published DCurses 1.6.0 soak and the TermInfo-free future-renderer package witness passed on net8.0/net9.0/net10.0.
  • Independent final review: spec compliance PASS, code quality PASS, no Critical, Important, or Minor findings.

The stable gate caught and drove correction of stale 1.17.1 NuGet release-note metadata and packed-README release/install wording before acceptance. The final authority-label cleanup is documentation-only.

The retained DCurses PR #32 witness remains deferred until Icod.Terminal 1.18.0 is actually published, per its published-package criterion. No merge, tag, GitHub Release, or NuGet publication was performed.

@uniblab uniblab changed the title docs: plan Icod.Terminal 1.18.0 rendition baseline feat: add unknown-rendition baseline planning for Terminal 1.18 Sep 18, 2026
@uniblab
uniblab marked this pull request as ready for review September 18, 2026 19:20
@uniblab
uniblab merged commit 3e15037 into main Sep 18, 2026
9 checks passed
@uniblab
uniblab deleted the feature/1.18.0-rendition-baseline branch September 18, 2026 19:20
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