fix: add unnecessary negative contrast detection to voice linting
- New lint check: 'doesn't just X. They Y' pattern (Claude rhetorical crutch) - Fixed last instance in judgment essay: 'doesn't just lose income. They lose' → 'loses the acknowledgment... The income is secondary.' - Updated voice-check skill dimension 2 with the pattern description - Updated AGENTS.md with the new check - Tightened regex to avoid false positives on legitimate 'isn't only' framing 🤖 Generated with Amplifier Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
This commit is contained in:
@@ -33,6 +33,7 @@ with full awareness of what's wrong.
|
|||||||
- Em-dash density (>5 per post = FAIL, Claude fingerprint)
|
- Em-dash density (>5 per post = FAIL, Claude fingerprint)
|
||||||
- AI trigger words (delve, tapestry, nuanced, landscape, etc.)
|
- AI trigger words (delve, tapestry, nuanced, landscape, etc.)
|
||||||
- Hedging phrases ("it's worth noting", "one might argue")
|
- Hedging phrases ("it's worth noting", "one might argue")
|
||||||
|
- Unnecessary negative contrast ("doesn't just X. They Y" -- Claude crutch)
|
||||||
- Filler transitions ("in conclusion", "that being said")
|
- Filler transitions ("in conclusion", "that being said")
|
||||||
- Resolution closers ("the key takeaway", "at the end of the day")
|
- Resolution closers ("the key takeaway", "at the end of the day")
|
||||||
- Missing receipts (0 links + 0 code + 0 URLs in 500+ words = WARN)
|
- Missing receipts (0 links + 0 code + 0 URLs in 500+ words = WARN)
|
||||||
|
|||||||
@@ -61,6 +61,12 @@ Does the writing hedge when it should assert? Look for:
|
|||||||
clearly believes
|
clearly believes
|
||||||
- Passive constructions that hide the actor ("it was found" vs "I found")
|
- Passive constructions that hide the actor ("it was found" vs "I found")
|
||||||
- False balance ("on the other hand" when there IS no valid other hand)
|
- False balance ("on the other hand" when there IS no valid other hand)
|
||||||
|
- **Unnecessary negative contrast**: the "doesn't just X. They Y" or "isn't
|
||||||
|
only X. It's Y" pattern. This is a Claude rhetorical crutch that creates
|
||||||
|
the *appearance* of depth through contrast without saying anything the
|
||||||
|
second clause didn't already imply. Example: "A doctor doesn't just lose
|
||||||
|
income. They lose the acknowledgment that..." Fix: state Y directly.
|
||||||
|
"A doctor loses the acknowledgment that..."
|
||||||
|
|
||||||
The voice profile says: "High, earned. States opinions as conclusions from
|
The voice profile says: "High, earned. States opinions as conclusions from
|
||||||
experience, not as positions to defend."
|
experience, not as positions to defend."
|
||||||
|
|||||||
+18
-1
@@ -94,7 +94,24 @@ else
|
|||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- CHECK 5: Resolution closers ---
|
# --- CHECK 5: Unnecessary negative contrast ("doesn't just X, they Y") ---
|
||||||
|
NEGCONTRAST_PATTERNS="doesn.t just .{1,40}\. (They|It|She|He|We)|isn.t just .{1,40}\. (It|They)|doesn.t just .{1,40}, (but|it.s|they)|not just about .{1,40}\. (It|They)|more than just .{1,40}\. (It|They)"
|
||||||
|
NEGCONTRASTS=$(echo "$BODY" | grep -oiP "$NEGCONTRAST_PATTERNS" | sort | uniq -c | sort -rn)
|
||||||
|
if [[ -n "$NEGCONTRASTS" ]]; then
|
||||||
|
echo "WARN Unnecessary negative contrast patterns found:"
|
||||||
|
echo "$NEGCONTRASTS" | sed 's/^/ /'
|
||||||
|
echo " Pattern: \"doesn't just X. They Y\" -- Claude rhetorical crutch."
|
||||||
|
echo " Fix: State Y directly. The contrast adds nothing."
|
||||||
|
echo " Lines:"
|
||||||
|
grep -niP "$NEGCONTRAST_PATTERNS" "$FILE" | head -10 | sed 's/^/ /'
|
||||||
|
echo ""
|
||||||
|
WARNINGS=$((WARNINGS + 1))
|
||||||
|
else
|
||||||
|
echo "OK No unnecessary negative contrast"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# --- CHECK 6: Resolution closers ---
|
||||||
CLOSER_PATTERNS="the key takeaway|the takeaway here|at the end of the day|what this means is|the bottom line|the real question is"
|
CLOSER_PATTERNS="the key takeaway|the takeaway here|at the end of the day|what this means is|the bottom line|the real question is"
|
||||||
CLOSERS=$(echo "$BODY" | grep -oiP "$CLOSER_PATTERNS" | sort | uniq -c | sort -rn)
|
CLOSERS=$(echo "$BODY" | grep -oiP "$CLOSER_PATTERNS" | sort | uniq -c | sort -rn)
|
||||||
if [[ -n "$CLOSERS" ]]; then
|
if [[ -n "$CLOSERS" ]]; then
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ AI raises the floor dramatically. It does not flatten the ceiling.
|
|||||||
|
|
||||||
## The Dignity Problem (Most Underappreciated)
|
## The Dignity Problem (Most Underappreciated)
|
||||||
|
|
||||||
The threat to engineers isn't only economic. When expert judgment stops being consulted, something human is lost: the social recognition that hard-won expertise deserves. A doctor who loses clinical judgment to AI doesn't just lose income. They lose the acknowledgment that fifteen years of intuition was worth something.
|
The threat to engineers isn't only economic. When expert judgment stops being consulted, something human is lost: the social recognition that hard-won expertise deserves. A doctor who loses clinical judgment to AI loses the acknowledgment that fifteen years of intuition was worth something. The income is secondary.
|
||||||
|
|
||||||
This is a different kind of harm than job displacement and deserves its own conversation.
|
This is a different kind of harm than job displacement and deserves its own conversation.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user