Repository navigation
Conversation
The view gains a fourth section, Possible constraints, from possible_constraints(): each row names its quota or LimitRange once per run, what it is about, the finding and the detail, and Enter opens the policy. A claim row holds only if the claim is created. Notes say that LimitRange Container defaults were applied, that a possibility is never a cause or a forecast, and "No ResourceQuota or LimitRange observed constrains this template" only when the core concludes it; otherwise why that is not established. An unreadable template leaves the possibilities not established. Part of #529 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- The quota scenario checks the blocked Deployment's possible constraints against a real cluster: defaults applied, and only the Pod count left. - The version-matrix workflow also runs when creation_demand.py or creation_possibilities.py changes. - docs/tui.md, keybindings and release notes describe the section, and the plan records the slice. Part of #529 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Timer refreshes can fail when stale LimitRange data introduces unmounted rows, and denied workload reads incorrectly suppress the required template-unreadable explanation.
2 open issues
What changed in this PR
Adds the view half of workload creation constraints: :blocked now displays the core calculations from #528 alongside recorded failures and namespace policies.
Changes:
- Adds possible-constraint rows, policy navigation, conditional claim wording, and evidence caveats.
- Extends UI tests and the live Kubernetes version-matrix scenario.
- Updates workflow triggers and user-facing documentation.
| File | Description |
|---|---|
tests/version_matrix/test_scenarios.py |
Checks computed possibilities against live cluster policies. |
tests/ui/test_creation_constraints_screen.py |
Tests rows, notes, claim conditions, and navigation. |
src/korvid/ui/widgets/creation_constraints_screen.py |
Renders possible constraints and explanatory notes. |
docs/tui.md |
Explains the new section and its evidence limits. |
docs/superpowers/plans/2026-10-31-creation-possibilities-view.md |
Records the implementation and verification plan. |
docs/release-notes/unreleased.md |
Announces the possible-constraints section. |
docs/keybindings.md |
Expands the description of :blocked. |
.github/workflows/k8s-version-matrix.yml |
Triggers matrix checks for demand and possibility changes. |
Review effort: Balanced
- A LimitRange list going stale leaves defaults unknown, which can add
possible-constraint rows that update_cell cannot reach. The timer now
updates cells in place while every row still leads to the same place,
and otherwise rebuilds the table, keeping the cursor index; only the
last section changes with time.
- A workload that could not be read leaves the possibilities not
established ("the Deployment could not be read"); only an absent one
has no such note.
Part of #529
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Closes #529
Summary
The view half of #411's Q2 slice. The
:blockedview gains a fourth section, Possible constraints, built frompossible_constraints()(#528): what the workload's next Pod, as its template asks, could run into under the namespace's quotas and LimitRanges as now observed.requests.cpu · would exceed · needs 500m; none remaining.matrix-pods: podsat its limit. The workflow also runs whencreation_demand.pyorcreation_possibilities.pychanges.docs/tui.md(section table and reading note),docs/keybindings.md, the release notes, and the plandocs/superpowers/plans/2026-10-31-creation-possibilities-view.md.The controller, command and wiring are unchanged; the report already carries the template. The row count does not depend on the clock (
nowonly decidesnothing_constrains, which is a note), so the timer's cell refresh stays index-stable.Verification
tests/ui/test_creation_constraints_screen.py(8 functions, one parametrized over 4 cases), written to fail first:[("matrix-pods", "pods", AT_LIMIT, "0 of 0 Pods exist")]with defaults applied. The live scenario runs on kind in CI.uv run --frozen pytest -p no:tach tests/ui/test_creation_constraints_*.py: 57 passed.check_source_size,ruff check,ruff format --check,mypy src,tach check,pytest -n 8): all pass excepttests/providers/test_device_login_prefixes.py::test_the_measured_release_is_the_installed_one. That test fails only locally, because the installed litellm differs from the measured release; CI installs the locked version.Checklist
make checkpasses locally.and a fail-closed audit entry, and sensitive reads are still masked.