sol: pending-request triage of inbox seed
This commit is contained in:
1 parent
311aae865f
commit
99d51cf3d8
3 files changed
+217
No files matched your search
@@ -0,0 +1,125 @@
|
||||
{
|
||||
"generated_utc": "2026-10-22T22:20:13Z",
|
||||
"source": "/root/troupe-standup/inbox/seed-2026-09-26.json",
|
||||
"pending_count": 12,
|
||||
"rule_order": [
|
||||
"archive-fix",
|
||||
"turd-app",
|
||||
"admin-trial"
|
||||
],
|
||||
"counts": {
|
||||
"archive-fix": 7,
|
||||
"turd-app": 3,
|
||||
"admin-trial": 2
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
"id": 1,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"the corrected wording"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-021 says only Loko and Happy responded"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"category": "turd-app",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"push the branch"
|
||||
],
|
||||
"summary_head": "Turd app: approve pushing branch zephyrus/62-symptom-escalation-regression"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"the corrected wording"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-011 calls John the 'founder' of Proof of Ink"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"category": "turd-app",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"submit the pull request"
|
||||
],
|
||||
"summary_head": "Turd app: approve submitting the a11y PR from zephyrus/65-a11y-gates"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"category": "turd-app",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"push the branch"
|
||||
],
|
||||
"summary_head": "Turd app: approve pushing branch zephyrus/67-hard-stool-followup"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"the corrected wording"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-011 says merch was made for the Boston Bitcoin Festival"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"the corrected attribution"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-061 misattributes the centerfold reference"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"category": "admin-trial",
|
||||
"suggested": "AWAIT-DECISION",
|
||||
"rule_match": [
|
||||
"trial brief"
|
||||
],
|
||||
"summary_head": "Trial by Timmy: send Timmy the local-inference trial brief for your Mac"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"category": "admin-trial",
|
||||
"suggested": "AWAIT-DECISION",
|
||||
"rule_match": [
|
||||
"unreleased"
|
||||
],
|
||||
"summary_head": "Q9: hand unreleased audio to Timmy under checksum for independent QC"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"the unsupported clause"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-061 claims a 'weekly Thursday intelligence-style cadence'"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"replacement sentence"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-040 'last block he mined' sentence replacement"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"category": "archive-fix",
|
||||
"suggested": "APPROVE",
|
||||
"rule_match": [
|
||||
"the corrected wording"
|
||||
],
|
||||
"summary_head": "Archive fix: magazine-041 calls it 'Stackchain's rowdiest fork war'"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
# Pending-request triage — 2026-09-26
|
||||
|
||||
Source: `inbox/seed-2026-09-26.json` (build seed, not live state).
|
||||
Pending items classified: 12
|
||||
|
||||
| Category | Count | Suggested action |
|
||||
|---|---|---|
|
||||
| archive-fix | 7 | APPROVE |
|
||||
| turd-app | 3 | APPROVE |
|
||||
| admin-trial | 2 | AWAIT-DECISION |
|
||||
|
||||
## Per-item classification
|
||||
|
||||
| id | category | suggested | matches |
|
||||
|---|---|---|---|
|
||||
| 1 | archive-fix | APPROVE | the corrected wording |
|
||||
| 2 | turd-app | APPROVE | push the branch |
|
||||
| 3 | archive-fix | APPROVE | the corrected wording |
|
||||
| 4 | turd-app | APPROVE | submit the pull request |
|
||||
| 5 | turd-app | APPROVE | push the branch |
|
||||
| 6 | archive-fix | APPROVE | the corrected wording |
|
||||
| 7 | archive-fix | APPROVE | the corrected attribution |
|
||||
| 8 | admin-trial | AWAIT-DECISION | trial brief |
|
||||
| 9 | admin-trial | AWAIT-DECISION | unreleased |
|
||||
| 10 | archive-fix | APPROVE | the unsupported clause |
|
||||
| 11 | archive-fix | APPROVE | replacement sentence |
|
||||
| 12 | archive-fix | APPROVE | the corrected wording |
|
||||
|
||||
## Verification
|
||||
|
||||
Re-derive from source and compare to this file with:
|
||||
|
||||
verify_pending_request_triage.py
|
||||
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Verify sol's pending-request triage.
|
||||
|
||||
Re-reads the source seed, re-derives the category for every pending item using
|
||||
the exact same ordered keyword rules, and asserts the artifact's per-id
|
||||
categories agree. Exit 0 = correct; nonzero = wrong (print details).
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
|
||||
SRC = "/root/troupe-standup/inbox/seed-2026-09-26.json"
|
||||
ART = "/root/.hermes/wizard-outputs/sol/pending-request-triage-2026-09-26.json"
|
||||
|
||||
CATEGORY_RULES = [
|
||||
("archive-fix", ["the corrected wording", "the corrected attribution",
|
||||
"the unsupported clause", "replacement sentence"]),
|
||||
("turd-app", ["push the branch", "submit the pull request"]),
|
||||
("admin-trial", ["trial brief", "unreleased"]),
|
||||
]
|
||||
|
||||
SUGGESTED = {"archive-fix": "APPROVE", "turd-app": "APPROVE",
|
||||
"admin-trial": "AWAIT-DECISION", "uncategorized": "RE-REVIEW"}
|
||||
|
||||
|
||||
def classify(text):
|
||||
for cat, kws in CATEGORY_RULES:
|
||||
if any(k in text for k in kws):
|
||||
return cat
|
||||
return "uncategorized"
|
||||
|
||||
|
||||
def main():
|
||||
src = json.load(open(SRC))
|
||||
art = json.load(open(ART))
|
||||
pending = src.get("pending", [])
|
||||
by_id = {p["id"]: p for p in pending}
|
||||
errs = []
|
||||
for it in art["items"]:
|
||||
text = (by_id[it["id"]].get("summary") or "") + " " + \
|
||||
(by_id[it["id"]].get("proposed_action") or "")
|
||||
expect = classify(text)
|
||||
if it["category"] != expect:
|
||||
errs.append("id %r: artifact=%r expect=%r" % (it["id"], it["category"], expect))
|
||||
if errs:
|
||||
print("MISMATCH")
|
||||
for e in errs:
|
||||
print(" ", e)
|
||||
sys.exit(1)
|
||||
# also confirm the source's pending count is represented
|
||||
if len(art["items"]) != len(pending):
|
||||
print("ITEMS-MISMATCH: artifact=%d source=%d" % (len(art["items"]), len(pending)))
|
||||
sys.exit(1)
|
||||
print("PASS: %d pending items, categories re-derived and match artifact" % len(pending))
|
||||
print("counts:", json.dumps(art["counts"]))
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user