Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ If an Accepted decision changes, create a new superseding ADR instead of rewriti
- Validate option availability and incompatible combinations before starting the process.
- Use `ProcessStartInfo.ArgumentList` on modern targets. The `netstandard2.0` compatibility backend shares the Process lifecycle with attributed native argument serialization, race-safe exit events and best-effort legacy Windows tree termination according to ADR-0024. Do not execute PostgreSQL tools through `cmd.exe`, PowerShell, `bash -c`, or another shell.
- Keep the core package free of unnecessary runtime dependencies.
- Under ADR-0025, until 1.0 accept only bug fixes, validation and documentation improvements; do not add new features. RC engineering, 1.0 acceptance and external publication are separate gates.
- Public APIs must have bilingual English/Japanese XML documentation according to `docs/localization.md`.
- Human-facing project surfaces must provide Japanese as well as English. This includes the repository README, GitHub Release titles/notes, user-oriented guides, and other prominent public documentation. The root README may link prominently to a maintained `README.ja.md` instead of duplicating the full text inline.
- User-facing diagnostics and exception messages must be localizable in English and Japanese using resources; do not hard-code localized strings throughout the implementation.
Expand Down
6 changes: 3 additions & 3 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ PostgreSQL のコマンドラインツールを、型安全な .NET API から

## 現在の状況

全25ラッパーとレビュー済みAPIを実装し、Phase 8で未公開 `0.1.0-alpha.2` プレビューを準備しています。ラムダ設定と実行しないコマンド生成も含みます。[最終レビュー](docs/phase-8-final-review.md)で検証範囲と公開前条件を記録します。1.0の安定性を保証するものではありません。旧alpha.1はADR-0012により履歴として保存します。
全25ラッパー、レビュー済みAPI、ラムダ設定と実行しないコマンド生成を実装済みです。Phase 8では共有Process実装を含む未公開 `1.0.0-rc.1` を準備します。ADR-0025により1.0までは不具合修正・検証・文書改善に限定します。[RC準備](docs/phase-8-rc1.md)に固定・監査の条件と未検証範囲を記録します。1.0昇格や公開承認ではなく、旧alpha.1/alpha.2は履歴として保存します。

初期対応範囲:

Expand All @@ -20,7 +20,7 @@ Phase 0〜2 の既存 GitHub Release は維持します。ADR-0012 により Pha

## NuGet プレビュー

選択したプレビュー版は `0.1.0-alpha.2` で、nuget.orgには未公開です。CIの未公開候補artifactを取得して `./candidate-packages` へ展開した場合は、利用側で次のように指定できます。
nuget.orgには未公開です。`1.0.0-rc.1` は準備中で、正確なソースの固定と3OS候補監査が成功してから使用してください。manifestと監査済みartifactで出所を確認します。保存したalpha.2は旧実装で、RCではありません。検証済みRC artifactを `./candidate-packages` へ展開後、利用側で次のように指定できます。

利用側プロジェクトの横に次の `NuGet.Config` を作り、候補と別途解決する依存をWindows/Linux/macOSで復元できるようにします:

Expand All @@ -35,7 +35,7 @@ Phase 0〜2 の既存 GitHub Release は維持します。ADR-0012 により Pha
```

```bash
dotnet add package PgCliSharp --version 0.1.0-alpha.2
dotnet add package PgCliSharp --version 1.0.0-rc.1
dotnet restore
```

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Strongly typed .NET wrapper for PostgreSQL command-line tools.

## Project status

All 25 wrappers and the reviewed API are implemented. Phase 8 prepares the unpublished `0.1.0-alpha.2` preview, including lambda configuration and offline command generation. See the [final review](docs/phase-8-final-review.md) for tested scope and remaining publication gates. This is not a 1.0 stability claim. Historical alpha.1 remains preserved under ADR-0012.
All 25 wrappers and the reviewed API are implemented, including lambda configuration and offline command generation. Phase 8 now prepares unpublished `1.0.0-rc.1` with the shared Process backend. Until 1.0, changes are limited to bug fixes, validation and documentation under ADR-0025. See [RC preparation](docs/phase-8-rc1.md) for selection/audit gates and exclusions. This is not 1.0 acceptance or publication approval; historical alpha.1/alpha.2 remain preserved.

Initial PostgreSQL compatibility target:

Expand All @@ -20,7 +20,7 @@ Phase 0-2 retain their existing GitHub Releases. Under ADR-0012, Phase 3 onward

## NuGet preview

The selected preview version is `0.1.0-alpha.2`; it is not published to nuget.org. After downloading an unpublished candidate CI artifact and extracting it to `./candidate-packages`, a local consumer can use:
No package is published to nuget.org. `1.0.0-rc.1` is being prepared; use it only after its exact source is selected and all three-OS candidate audits pass. The manifest and audited artifact identify that source. Preserved alpha.2 artifacts contain the old backend and are not RCs. After extracting the verified RC artifact to `./candidate-packages`, a local consumer can use:

Create a project-local `NuGet.Config` beside the consumer project so both the candidate and its separately resolved dependencies can restore on Windows/Linux/macOS:

Expand All @@ -35,7 +35,7 @@ Create a project-local `NuGet.Config` beside the consumer project so both the ca
```

```bash
dotnet add package PgCliSharp --version 0.1.0-alpha.2
dotnet add package PgCliSharp --version 1.0.0-rc.1
dotnet restore
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# ADR-0021: Finish preview engineering without publication

- Status: Accepted
- Status: Superseded
- Superseded by: ADR-0025
- Date: 2026-10-03
- Supersedes: ADR-0020
- Complements: ADR-0012, ADR-0016, ADR-0019
Expand Down
56 changes: 56 additions & 0 deletions docs/adr/0025-freeze-features-for-unpublished-rc1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# ADR-0025: Freeze features for an unpublished 1.0 release candidate

- Status: Accepted
- Date: 2026-10-05
- Supersedes: ADR-0021
- Complements: ADR-0012, ADR-0017, ADR-0018, ADR-0022, ADR-0024

## Context

PR #26 replaced CliWrap with a shared Process lifecycle. Exact main
`d66a1e229d230d5f6d7b6fdd8db0c79a85bba89c` passed CI 37194612585:
18 jobs, attempt 1, independently checked Windows 30/3/3 stress, native
Windows/macOS PostgreSQL 18 and Linux 10–18 evidence. The fixed unpublished
alpha.2 predates this replacement. It is not a distribution of current main.
The maintainer chooses bug fixes, validation and documentation only until 1.0.

## Decision

- Prepare unpublished `1.0.0-rc.1`; stop feature additions until the scoped 1.0
acceptance decision. Fixes must preserve the frozen API where possible;
any necessary contract change still requires an explicit ADR and review.
- Keep PostgreSQL 10–18, all three TFMs, explicit executable paths, MIT,
typed/lambda/offline APIs, bilingual documentation and existing exclusions.
- First test RC source preparation on the exact final PR and main. Only then
select that successful main SHA/CI in a second reviewed control change.
This avoids self-referential source selection and shipping stale preview guidance.
- Keep SDK 10.0.100, a separate Process-backend dependency lock and known
audit profile. Require all 18 source CI jobs at attempt 1, including both native
jobs, nine Linux majors, three deterministic suites, three candidate audits
and the shared read-only preflight. Reject missing, duplicate or skipped jobs.
- RC selection must pass three-OS locked package/symbol/SourceLink/consumer
audits on its exact PR/main controls. Only version and release-note metadata
are overridden in the selected source. No third-party or PostgreSQL binaries
are embedded. Runtime dependencies must match the two reviewed legacy packages.
- Preserve alpha.2 source, lock, notes and selection history, and disabled Phase 3
manifests. Do not reuse or silently rewrite an old candidate's provenance.
- Publication remains disabled. RC engineering completion is neither 1.0
promotion nor approval for a tag, GitHub Release, assets or NuGet push.
Account-side Trusted Publishing remains unverified.

## Acceptance and limits

RC preparation, RC package selection/audit, 1.0 acceptance and external publication
are separate gates. Existing real-CLI exclusions remain explicit. Historical
stalls and the cancelled replacement run are retained, not erased by green runs;
no complete historical root-cause proof or universal concurrency guarantee is claimed.
No new production implementation or public API change is introduced here.

## 日本語

1.0までは新機能追加を止め、不具合修正・検証・文書改善に絞ります。
未公開`1.0.0-rc.1`を準備し、まず説明・監査準備を含む正確なmainを検証してから、
その成功済みSHA/CIを候補へ固定します。SDK・別lock・既知依存profile・全18ジョブを
必須にし、3OSで実パッケージ・PDB・利用側を監査します。旧alpha.2のソース・lock・
説明・履歴は保存します。API・PG10〜18・3TFM・MIT・未検証範囲は保持します。
RC準備と1.0昇格は別で、公開設定は無効のまま、タグ・Release・NuGet公開は行いません。
4 changes: 2 additions & 2 deletions docs/adr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,11 @@ Do not silently edit an old Accepted ADR to make history appear different.
| [0018](0018-offline-commands-and-configuration-snapshots.md) | Add lambda configuration, offline commands and execution snapshots | Accepted |
| [0019](0019-adopt-mit-license.md) | Adopt the MIT license | Accepted |
| [0020](0020-select-unpublished-full-wrapper-preview.md) | Select an unpublished full-wrapper preview | Superseded |
| [0021](0021-finish-preview-engineering-without-publication.md) | Finish preview engineering without publication | Accepted |
| [0021](0021-finish-preview-engineering-without-publication.md) | Finish preview engineering without publication | Superseded |
| [0022](0022-require-three-os-native-cli-checkpoint.md) | Require a three-OS native CLI checkpoint for 1.0 | Accepted |
| [0023](0023-isolate-legacy-startup-synchronization-context.md) | Isolate the legacy backend's startup synchronization context | Superseded |

| [0024](0024-share-process-backend-with-legacy-compatibility.md) | Share the Process backend with narrow legacy compatibility | Accepted |
| [0025](0025-freeze-features-for-unpublished-rc1.md) | Freeze features for an unpublished 1.0 release candidate | Accepted |

## Template

Expand Down
11 changes: 11 additions & 0 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,17 @@ The core package should avoid unnecessary dependencies such as Npgsql or Microso

## 15. NuGet and release policy

ADR-0025 freezes new features until 1.0: only bug fixes, verification and
documentation improvements proceed. Unpublished `1.0.0-rc.1` preparation uses a
separate Process-backend lock/profile and a successful exact-main source selected
after source preparation CI. All 18 source jobs and three-OS candidate audits are
mandatory. Alpha.2 remains historical evidence, not current-backend distribution.
RC completion does not promote 1.0 or enable publication.

日本語: 1.0までは不具合修正・検証・文書改善に限定します。未公開rc.1は準備mainの
全18CI成功後に固定し、別lockと3OS候補監査を使います。旧alpha.2を保存し、
RC完了・1.0昇格・外部公開を区別します。

ADR-0019 licenses original PgCliSharp code/documentation under MIT. Packages declare
the MIT expression and include the root LICENSE and bilingual licensing guide.
PostgreSQL executables are externally supplied, not bundled or relicensed.
Expand Down
86 changes: 86 additions & 0 deletions docs/phase-8-rc1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Unpublished 1.0.0-rc.1 preparation / 未公開RC準備

## English

Status: source preparation; candidate selection and three-OS audit pending.
ADR-0025 limits remaining 1.0 work to bug fixes, validation and documentation.
All 25 wrappers, lambda configuration, offline commands and the reviewed API
remain unchanged. PR #26 / main `d66a1e229d230d5f6d7b6fdd8db0c79a85bba89c`
completed the Process-backend replacement through all 18 CI jobs at attempt 1;
[the exact artifact receipt](https://github.com/ShutenOishi/pgcli-sharp/pull/26#issuecomment-5978994921)
records Windows 30/3/3 stress and actual three-OS PostgreSQL evidence.

### Preparation CI history / 準備CI履歴

The first preparation run, CI `37242487375`, is intentionally retained as a
failed receipt rather than retried into acceptance. Linux/macOS deterministic
jobs and both native PostgreSQL 18 jobs completed successfully. Windows normal
tests completed successfully, but the bounded Windows stress step remained
reported in progress until the job itself ended in failure; GitHub did not
produce a Windows artifact and the job-log endpoint returned `BlobNotFound`.
The nine Linux PostgreSQL jobs, three candidate audits and shared preflight were
therefore skipped by dependency gating. This evidence does not establish a
library regression or runner root cause and does not satisfy ADR-0025's
attempt-1 all-18 gate. A new source commit and fresh CI run are required.

最初の準備CI `37242487375` は、再実行で合格扱いにせず失敗記録として保持します。
Linux/macOS通常ジョブとWindows/macOSのnative PostgreSQL 18は成功し、Windowsの
通常テストも成功しました。一方、Windows反復stepは実行中表示のままジョブが失敗終了し、
Windows成果物は生成されず、ログ取得も `BlobNotFound` でした。このためLinux 10〜18、
3OS候補監査、preflightは依存関係でskipされています。ライブラリ回帰やrunner原因とは
断定せず、ADR-0025の「attempt 1・全18ジョブ」条件も満たしません。新しいソースcommitで
新規CIを実行し直します。

A second fresh run, CI `37259044557`, made the Windows failure concrete:
the normal net48/net8/net10 suites passed 562/559/559, then the first net48
stress round reported two control tests completing normally instead of observing
their requested timeout/cancellation. The same class's owned infinite fixture
continued to pass its backpressure cases. The follow-up keeps production code
unchanged and separates fixture purposes: short timeout/cancellation control
tests use a multi-second native OS command, while backpressure tests retain the
owned infinite managed fixture so they cannot naturally expire before delayed
assertions. A new attempt-1 CI is required; this test-fixture correction is not
recorded as proof of a production root cause.

2回目の新規CI `37259044557` では原因範囲をさらに絞れました。通常の
net48/net8/net10は562/559/559件すべて成功した後、net48反復1回目で
timeout/手動cancelの2件だけが要求した制御結果ではなく正常終了を返しました。
同じクラスの無期限fixtureを使うバックプレッシャー検証は成功しています。
本番コードは変更せず、短いtimeout/cancel検証は数秒間動くOSネイティブコマンド、
遅延し得るバックプレッシャー検証は無期限の管理対象fixture、と役割を分離します。
改めてattempt 1の全CIを必須とし、このテストfixture修正を本番原因の証明とは扱いません。

1. Prepare current source documentation, RC notes and fail-closed audit controls.
2. Require fresh final PR and exact-main all-18 CI and actual artifact inspection.
3. Fix that successful source SHA/main CI as `1.0.0-rc.1`, retaining alpha.2
source/lock/notes/history. Use SDK 10.0.100 and the new reviewed dependency lock.
4. Audit the actual nupkg/snupkg, all three PDB/DLL pairs, byte-exact source docs,
exact MIT runtime dependencies and isolated consumers on Windows/Linux/macOS.
Windows runs net48; netstandard itself is compile-only. Negative tests must fail.
5. Require exact final selection PR/main CI; retain links, hashes and exclusions.

No RC artifact exists merely because these instructions or notes exist. The
machine-readable `.github/release-candidate.json` and its verified CI artifacts
identify the currently fixed candidate. Historical alpha.2 includes CliWrap and
does not contain the new backend. Ordinary development artifacts are not RCs.

Real evidence is Linux PostgreSQL 10–18/net10 and native Windows/macOS 18/net10.
Other native majors/TFMs, service lifecycle, TLS/ICU/TTY, optional compression,
other upgrade pairs and unlisted scenarios remain excluded. A finite successful
stress run does not prove every possible scheduling behavior or the past root cause.

Publication remains disabled: no tag, Release, assets or NuGet push. Successful
RC engineering is not 1.0 promotion. Trusted Publishing account verification and
publication approval are still separate. RC feedback/fixes and final scoped
acceptance determine a future 1.0 selection.

## 日本語

現在はソース準備段階で、候補の固定と3OS監査は未完です。新機能を止め、
不具合修正・検証・文書改善に限定します。Process置換はPR #26と正確なmainで
全18CI・Windows30/3/3反復・3OS実PostgreSQL成果物まで確認済みです。
準備PR/mainを検証後、その成功済みソースをrc.1へ固定し、旧alpha.2の履歴を保持します。
別lock・固定SDKで実nupkg/snupkg・PDB/DLL・原文・依存・利用側と異常系を監査します。
説明ファイルがあるだけでは候補完成とせず、manifestと実CI成果物で判断します。
旧alpha.2は旧CliWrap実装で、通常開発artifactもRCとは別です。
未検証範囲と過去の失敗は残し、1.0昇格・公開承認・Trusted Publishing確認は別途必要です。
7 changes: 7 additions & 0 deletions docs/phase-8-stabilization.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@
Status: **In progress, not release-ready.** Baseline is the completed Phase 7
main commit `c857161047ec0b7027b6061fa8f19c688e60dc94`.

ADR-0025 starts [unpublished rc.1 preparation](phase-8-rc1.md) with new features
frozen. PR #26's replacement is complete through exact main CI 37194612585 and
independent artifacts; historical failures remain in its receipt. Candidate
selection/audit, 1.0 acceptance and publication are still separate pending gates.
日本語: 新機能を止めrc.1を準備します。Process置換は完了、候補の固定・監査、
1.0昇格と公開は別途残します。

Stabilization is split into bounded checkpoints. Completing one checkpoint does
not imply API freeze, full real-binary compatibility or publication approval.

Expand Down
Loading
Loading