diff --git a/.claude/skills/prepare-release/SKILL.md b/.claude/skills/prepare-release/SKILL.md index ba06a52..09c2df0 100644 --- a/.claude/skills/prepare-release/SKILL.md +++ b/.claude/skills/prepare-release/SKILL.md @@ -28,12 +28,12 @@ All of these must hold: - `develop` contains `main`: the last back-merge is done. - Every workflow run on `origin/develop`'s commit is `completed` with `success` (wait for one still running, such as CodeQL). `build.yml` runs only on PRs (the ruleset requires it before a merge) and inside `nuget-pre-release.yml`, so a merge that changed a package input shows "NuGet - pre-release"; one that changed only docs or CI may show just CodeQL. - No open Dependabot alerts (`0`). -- The milestone named after the version has no open issues, and no open `bug` issue has Priority P0 or P1 in the project: +- The milestone named after the version has no open issues, and no open `bug` issue has Priority Urgent or High in the project: ```bash gh api repos/milten89/OpenUrzednik.NET/milestones --jq '.[] | select(.title == "") | .open_issues' gh project item-list 2 --owner milten89 --format json --limit 200 \ - --jq '[.items[] | select(.content.type == "Issue" and .status != "Done" and ((.labels // []) | index("bug")) and (.priority == "P0" or .priority == "P1")) | .content.number]' + --jq '[.items[] | select(.content.type == "Issue" and .status != "Done" and ((.labels // []) | index("bug")) and (.priority == "Urgent" or .priority == "High")) | .content.number]' ``` The first prints `0` (nothing if the milestone doesn't exist: ask the user whether that's intended), the second `[]`. Confirm each number the second lists with `gh issue view --json state`: only open issues count. diff --git a/CLAUDE.md b/CLAUDE.md index 2b8a55b..9d30259 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -156,7 +156,7 @@ Project fields need the `project` scope (`gh auth refresh -s project`): ```bash # Ready issues for agents, by Priority, then Seq (.id is the project item id) -gh project item-list 2 --owner milten89 --format json --limit 200 --jq '[.items[] | select(.status == "Ready" and .content.type == "Issue" and ((.labels // []) | index("maintainer-only") | not))] | sort_by(.priority // "P9", .seq) | .[] | "#\(.content.number) \(.priority) \(.id) \(.title)"' +gh project item-list 2 --owner milten89 --format json --limit 200 --jq '[.items[] | select(.status == "Ready" and .content.type == "Issue" and ((.labels // []) | index("maintainer-only") | not))] | sort_by(({"Urgent":0,"High":1,"Medium":2,"Low":3}[.priority // ""] // 9), .seq) | .[] | "#\(.content.number) \(.priority) \(.id) \(.title)"' # Set Status to In progress gh project item-edit --project-id PVT_kwHOAJh3Rs4BnebI --id --field-id PVTSSF_lAHOAJh3Rs4BnebIzhmC35A --single-select-option-id e0ec58a2 ``` diff --git a/docs/GITHUB-SETUP.md b/docs/GITHUB-SETUP.md index fadc3ec..41c26a7 100644 --- a/docs/GITHUB-SETUP.md +++ b/docs/GITHUB-SETUP.md @@ -113,7 +113,7 @@ Release notes (`.github/release.yml`) group PRs by the **release labels**; every ## Milestones -A release is a milestone named after its version (`1.0.0`). It holds only the issues that must be closed before that release PR opens, all of them Priority P0 or P1; nice-to-haves stay outside. A bug with Priority P0 or P1 goes into the next release's milestone. The release PR opens only when the milestone has no open issues: +A release is a milestone named after its version (`1.0.0`). It holds only the issues that must be closed before that release PR opens, all of them Priority Urgent or High; nice-to-haves stay outside. A bug with Priority Urgent or High goes into the next release's milestone. The release PR opens only when the milestone has no open issues: ```bash gh api repos/milten89/OpenUrzednik.NET/milestones --jq '.[] | select(.title == "1.0.0") | .open_issues' @@ -136,7 +136,7 @@ Reading or changing the project needs the `project` scope on the `gh` token (`gh | Field | Type | Values | |---|---|---| | Status | single select | `Triage` (new; not sorted yet), `Backlog` (accepted; blocked or not next), `Ready` (approved to start by the maintainer; no open blockers), `In progress` (branch or PR open, or waiting on an outside party), `Done` (merged, closed or completed) | -| Priority | single select | `P0` (urgent: harm now or a calendar deadline), `P1` (needed for the next release), `P2` (should do; may slip), `P3` (later) | +| Priority | single select | `Urgent` (harm now or a calendar deadline), `High` (needed for the next release), `Medium` (should do; may slip), `Low` (later, or after the release). Views sort by the options' order, not by name | | Phase | single select | `Phase 0` … `Phase 6`: the stages of the 1.0 plan | | Seq | number | Execution order within the plan, in steps of 10, leaving room to insert | | Plan | text | The plan id (e.g. `P0-0`, `M5`) | @@ -178,4 +178,4 @@ Set in the web UI (project → ⋯ → Workflows). The Free plan allows one auto ### Intake -Issues (from the forms, or opened by agents) arrive through auto-add with Status `Triage`. PRs, Dependabot's included, are added without a Status and show in the Review queue view. Security reports never arrive (they stay private, see `SECURITY.md`). The maintainer sets labels and Priority, puts a P0/P1 bug into the next milestone, and moves provider proposals to `Backlog` with Priority P3. Only the maintainer moves an issue to `Ready`. +Issues (from the forms, or opened by agents) arrive through auto-add with Status `Triage`. PRs, Dependabot's included, are added without a Status and show in the Review queue view. Security reports never arrive (they stay private, see `SECURITY.md`). The maintainer sets labels and Priority, puts an Urgent or High bug into the next milestone, and moves provider proposals to `Backlog` with Priority Low. Only the maintainer moves an issue to `Ready`. diff --git a/docs/adr/0010-provider-readiness-gate.md b/docs/adr/0010-provider-readiness-gate.md index f9fd902..d5b4bf1 100644 --- a/docs/adr/0010-provider-readiness-gate.md +++ b/docs/adr/0010-provider-readiness-gate.md @@ -12,7 +12,7 @@ The repository contains skeletons for GUS, KRS and MF, but the shared framework ## Decision Outcome -* No work on new providers (including the existing GUS/KRS/MF skeletons) until the gate opens: the first stable release of `OpenUrzednik.Nbp`, with no open P0 or P1 bug. An open P0 or P1 bug is an open issue labelled `bug` with Priority P0 or P1 in the [project](https://github.com/users/milten89/projects/2). +* No work on new providers (including the existing GUS/KRS/MF skeletons) until the gate opens: the first stable release of `OpenUrzednik.Nbp`, with no open Urgent or High bug. An open Urgent or High bug is an open issue labelled `bug` with Priority Urgent or High in the [project](https://github.com/users/milten89/projects/2). * NBP is the reference implementation. New providers copy its structure, conventions and test approach. * The choice and order of the next providers is decided afterwards, in a separate ADR. * Every provider ADR answers this readiness checklist: @@ -36,10 +36,12 @@ The repository contains skeletons for GUS, KRS and MF, but the shared framework ### Confirmation -PRs touching `src/OpenUrzednik.Gus|Krs|Mf` are rejected unless they implement this ADR's follow-ups (e.g. `IsPackable=false`). Whether the gate is open is checked against nuget.org (a stable `OpenUrzednik.Nbp`) and the project (no open issue labelled `bug` with Priority P0 or P1). +PRs touching `src/OpenUrzednik.Gus|Krs|Mf` are rejected unless they implement this ADR's follow-ups (e.g. `IsPackable=false`). Whether the gate is open is checked against nuget.org (a stable `OpenUrzednik.Nbp`) and the project (no open issue labelled `bug` with Priority Urgent or High). ## More Information **2026-10-17 change: an objective gate** ([#75](https://github.com/milten89/OpenUrzednik.NET/issues/75)). The gate said "until `OpenUrzednik.Nbp` is complete", measured by the design issues in `docs/BACKLOG.md`. That file is now a closed record (work is tracked in issues), and its last open P0–P2 item was a documentation sentence, so the condition no longer said anything. The maintainer replaced it with an event anyone can check: the first stable release of `OpenUrzednik.Nbp`, with no open P0 or P1 bug. The skeletons' empty previews (52 versions each, published before `IsPackable=false`) were deprecated and unlisted, and the READMEs, the Core README and CONTRIBUTING now say the providers are planned, not started. **2026-10-30 change: readiness checklist and naming** ([#109](https://github.com/milten89/OpenUrzednik.NET/issues/109)). The audit of the documentation found that the first real providers would hit questions no ADR answers. The checklist above makes each provider ADR answer them before any code. The MF White List shows what the checklist surfaces (to verify in its provider ADR): a daily quota that blocks the caller until midnight, not a throttle; `requestId` and `requestDateTime` in the answer as the proof of a check; partial results in batch calls; a flat file in 7z format; a test host (`wl-test.mf.gov.pl`). Each of these touches the error model, the executor, the fixtures or the dependencies. The naming rule was decided at the same time, because the skeleton `Mf` breaks the .NET acronym rule and a rename after release would change the `ActivitySource` name. + +**2026-10-30 change: priority names** ([#178](https://github.com/milten89/OpenUrzednik.NET/issues/178)). The project's Priority options were renamed: P0 is now Urgent and P1 is High (P2 Medium, P3 Low). The gate's bug condition is unchanged; it now reads "no open Urgent or High bug".