Skip to content

Icod.Terminal 1.0.0 — Stable Release Promotion - #34

Merged
uniblab merged 19 commits into
mainfrom
1.0.0-stable-squash
Sep 8, 2026
Merged

Icod.Terminal 1.0.0 — Stable Release Promotion#34
uniblab merged 19 commits into
mainfrom
1.0.0-stable-squash

Conversation

@uniblab

@uniblab uniblab commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Promotes the qualified Icod.Terminal 1.0.0-rc1 contract to stable 1.0.0 from exact green main SHA dfa149c604aaf860a18923d23999b045ab98532d.

This PR is intentionally behavior- and API-neutral. Production C# files change only by the required LGPL source-header addition; no executable statements, public signatures, enum values, protocol behavior, or runtime semantics change. The frozen public API fingerprint remains unchanged.

Stable version promotion

  • clears VersionSuffix, making Version / PackageVersion exactly 1.0.0;
  • keeps AssemblyVersion at 1.0.0.0;
  • rewrites PackageReleaseNotes for stable 1.0 and pins release/migration links to v1.0.0.

Stable release documentation

  • adds curated docs/releases/1.0.0.md;
  • adds a stable 1.0.0 entry to CHANGELOG.md while retaining the published rc1 history;
  • promotes the root/package README to stable 1.0.0 installation/status and immutable v1.0.0 documentation links;
  • pins the README hero image to v1.0.0 so the package presentation cannot drift with main;
  • updates docs/Migration-to-1.0.md so stable 1.0 is the migration destination;
  • updates docs/Compatibility-and-Versioning.md so the stable baseline, not rc1, is the permanent authority;
  • adds docs/Licensing.md as the permanent library/executable licensing authority;
  • updates the root development roadmap to stable 1.0 while preserving the completed rc1 roadmap as historical qualification evidence;
  • explicitly documents stable scope boundaries: PTY/process hosting remains orthogonal, built-in provider support is Windows/Linux/macOS, unacknowledged emission is not terminal-side capability proof, DCurses 0.1.0 is a compatibility witness rather than exhaustive coverage, and generic hazardous vendor-command dispatch remains out of scope.

Stable public API baseline

Adds:

  • docs/Public-API-Baseline-1.0.md;
  • docs/Public-API-Baseline-1.0.sha256.

Stable 1.0 adopts the exact rc1 fingerprint:

633 lines
77 exported public types
32 public enums / 242 enum values
124 public methods
144 public properties
13 public constructors
SHA-256 8b213bb287e14729b07f0e640c8c1b1a5aa36b26f867f1e97604fb86fded36e5

VerifyPublicApiBaseline.ps1 treats that stable baseline as the authority. Any generated drift is a release blocker rather than an automatic baseline update.

GPL/LGPL source-header closure

  • Icod.Terminal library source and the root Icod.Terminal.csproj use the required LGPL-3.0-or-later header;
  • executable/test/sample/validation projects and their C# sources use the required GPL-3.0-or-later header;
  • every .cs header identifies the owning assembly, gives a one-line program description, and carries Copyright (C) 2026 Timothy J. Bruce <uniblab@hotmail.com>;
  • every .csproj begins with <?xml version="1.0" encoding="utf-8"?>, followed immediately by the corresponding XML-comment license header and then <Project ...>;
  • the published Icod.Terminal NuGet package remains LGPL-3.0-or-later; GPL repository executables do not change the library package license;
  • packaging/VerifyLicenseHeaders.ps1 validates the exact expected template for every tracked .cs and .csproj file;
  • that gate runs in the single package-candidate path used by PR, main, distribution, and tag validation, and in local all / validate builds.

The root LICENSE contains the LGPLv3 terms and the incorporated GPLv3 terms referenced by those headers.

Stable release-line package gates

Candidate-era implementation names are removed from the permanent path:

  • VerifyRc1Package.ps1 -> VerifyReleaseLinePackage.ps1;
  • VerifyDCursesRc1Package.ps1 -> VerifyDCursesPackage.ps1;
  • package-rc1-smoke -> package-release-line-smoke;
  • dcurses-rc1-package-acceptance -> stable dcurses-package-acceptance project metadata, reusing the existing hardening-soak program;
  • package shard rc -> release / 1.0 release line in PR, main, manual distribution, and tag workflows.

The rc1 T-series documents and published rc1 baseline remain unchanged as historical evidence.

Exact validation

Final stable-promotion/licensing-closure head:

17360a8bd8c3a288c7d8d399084d592f673b8ae5

PR workflow #976 (34196455757) is fully green:

  • Runtime Windows — green;
  • Runtime Linux — green;
  • Runtime macOS — green;
  • Package candidate / exact GPL-LGPL header verification / stable API freeze — green;
  • Package Foundation — green;
  • Package Presentation — green;
  • Package Semantic and hardening — green;
  • Package 1.0 release line — green;
  • final validated package artifact — green.

The package-candidate gate proves the exact source/project header templates and the unchanged stable API fingerprint before package construction. The release-line shard revalidates the packed stable README, curated 1.0.0 notes, changelog/version links, generated XML, and fresh net8/net9/net10 package consumer.

There are no unresolved review threads. PR #34 remains open, non-draft, and mergeable.

Post-merge gate

After merge, the exact resulting main commit must pass the six-runner Release runtime matrix plus the single-package/four-shard package contract. Tag v1.0.0 is not authorized by this PR alone; publication remains a separate explicit decision.

@uniblab
uniblab merged commit 14e3162 into main Sep 8, 2026
9 checks passed
@uniblab
uniblab deleted the 1.0.0-stable-squash branch September 8, 2026 07: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