alissa-tools-github-revloop 0.31.4__tar.gz → 0.31.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {alissa_tools_github_revloop-0.31.4/src/main/alissa_tools_github_revloop.egg-info → alissa_tools_github_revloop-0.31.5}/PKG-INFO +1 -1
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/alissa.py +14 -9
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/loop.py +17 -1
- alissa_tools_github_revloop-0.31.5/src/main/alissa/tools/github/revloop/version +1 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5/src/main/alissa_tools_github_revloop.egg-info}/PKG-INFO +1 -1
- alissa_tools_github_revloop-0.31.4/src/main/alissa/tools/github/revloop/version +0 -1
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/LICENSE +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/MANIFEST.in +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/NOTICE +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/README.md +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/requirements.txt +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/setup.cfg +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/setup.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/__init__.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/__main__.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/alissa_client.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/bows.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/config.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/fleet_vitals.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/ghclient.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/loop_events.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/proc.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/prompts.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/prreview.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/state.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/trust.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/version.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/__init__.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/__main__.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/auth.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/page.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/server.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/sources.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa/tools/github/revloop/webui/sysinfo.py +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa_tools_github_revloop.egg-info/SOURCES.txt +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa_tools_github_revloop.egg-info/dependency_links.txt +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa_tools_github_revloop.egg-info/entry_points.txt +0 -0
- {alissa_tools_github_revloop-0.31.4 → alissa_tools_github_revloop-0.31.5}/src/main/alissa_tools_github_revloop.egg-info/top_level.txt +0 -0
|
@@ -647,17 +647,20 @@ class VerdictEnvelope:
|
|
|
647
647
|
envelope has no parseable `Merge-Readiness` line -- the case the native
|
|
648
648
|
post fails closed on. `readiness_reason` is already one bounded,
|
|
649
649
|
backtick-free line (see clean_readiness_reason); empty when the envelope
|
|
650
|
-
gave none
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
650
|
+
gave none, and it keeps the class prefix an operator reason leads with
|
|
651
|
+
(issue #142) -- so the class is never lost between here and the native
|
|
652
|
+
trailer.
|
|
653
|
+
|
|
654
|
+
The class is deliberately NOT a field. It is a function of the reason
|
|
655
|
+
(classify_readiness_reason), the emitter copies the reason whole, and
|
|
656
|
+
the narration reads the class back off the emitted line -- so the fact
|
|
657
|
+
has one source, and a second copy here would be a reader-less field
|
|
658
|
+
that could only ever drift from it (PR #143 round 1).
|
|
655
659
|
"""
|
|
656
660
|
|
|
657
661
|
verdict: str
|
|
658
662
|
readiness: "str | None" = None
|
|
659
663
|
readiness_reason: str = ""
|
|
660
|
-
readiness_class: "str | None" = None
|
|
661
664
|
|
|
662
665
|
|
|
663
666
|
@dataclass(frozen=True)
|
|
@@ -1158,9 +1161,12 @@ class Alissa:
|
|
|
1158
1161
|
continue
|
|
1159
1162
|
match = _VERDICT_RE.search(blob)
|
|
1160
1163
|
if match:
|
|
1161
|
-
|
|
1164
|
+
# The class the triple carries is not stored: the
|
|
1165
|
+
# reason keeps its prefix, and the envelope's readers
|
|
1166
|
+
# re-derive the class from the line they emit.
|
|
1167
|
+
readiness, reason, _ = parse_readiness(content)
|
|
1162
1168
|
if readiness is None:
|
|
1163
|
-
readiness, reason,
|
|
1169
|
+
readiness, reason, _ = parse_readiness(title)
|
|
1164
1170
|
found.append(
|
|
1165
1171
|
(Alissa._created_key(item.get("createdAt")),
|
|
1166
1172
|
index,
|
|
@@ -1168,7 +1174,6 @@ class Alissa:
|
|
|
1168
1174
|
verdict=match.group(1).lower(),
|
|
1169
1175
|
readiness=readiness,
|
|
1170
1176
|
readiness_reason=reason,
|
|
1171
|
-
readiness_class=klass,
|
|
1172
1177
|
))
|
|
1173
1178
|
)
|
|
1174
1179
|
break
|
|
@@ -713,6 +713,16 @@ _RECORD_THE_CAP = (
|
|
|
713
713
|
# reviewer needs to classify honestly: an unverified-* hold is validation
|
|
714
714
|
# work, not merge risk, and saying so lets the policy merge it. The table's
|
|
715
715
|
# rows are the README's, condensed; the README is the long form.
|
|
716
|
+
#
|
|
717
|
+
# The table is closed, so the directive must also say what to do when NO
|
|
718
|
+
# row fits (PR #143 round 1): the skill's checklist has operator triggers
|
|
719
|
+
# the enum does not name (dependencies, a deleted public surface, a waived
|
|
720
|
+
# `[major]`, a judgment residual, an operator gate that is a human action).
|
|
721
|
+
# A reviewer told the class is mandatory would shoehorn such a reason into
|
|
722
|
+
# the nearest row, and the nearest row for a vague reason is one of the
|
|
723
|
+
# `unverified-*` pair -- exactly what the policy may merge unattended. So
|
|
724
|
+
# the directive names the way out: no row, no class, and unclassed is the
|
|
725
|
+
# correct hard hold, never a failure.
|
|
716
726
|
_MERGE_READINESS_LINE = (
|
|
717
727
|
"Your verdict envelope MUST carry the skill's `- **Merge-Readiness:** auto | "
|
|
718
728
|
"operator — <class>: <reason>` line, AND your OWN native review (every `gh pr "
|
|
@@ -742,7 +752,13 @@ _MERGE_READINESS_LINE = (
|
|
|
742
752
|
"`release-act` (the merge itself is a release — VERSION bump → publish, tag, "
|
|
743
753
|
"npm). "
|
|
744
754
|
"When more than one row applies, name the MOST SEVERE one — the row listed "
|
|
745
|
-
"first — and only it.
|
|
755
|
+
"first — and only it. If NO row fits — a dependency change, a deleted or "
|
|
756
|
+
"renamed public surface, a waived `[major]`, a judgment residual, an "
|
|
757
|
+
"operator gate that is a human ACTION rather than a look or a smoke run — "
|
|
758
|
+
"write the reason with NO class: an unclassed operator line is the correct "
|
|
759
|
+
"hard hold, never a failure, and shoehorning such a reason into the nearest "
|
|
760
|
+
"row is the one misclassification the merge policy cannot recover from. "
|
|
761
|
+
"Classify honestly, not defensively: an unverified-* "
|
|
746
762
|
"hold is validation work the human does at gate 2 anyway, not merge risk, "
|
|
747
763
|
"and the merge policy may merge it while it keeps holding every row above; "
|
|
748
764
|
"an operator line whose reason leads with no recognised token still parses "
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.31.5
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.31.4
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|