Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
39a11d2
Make add-a-pattern self-enforcing: coverage gate, protects audit, reh…
theclaymethod Jul 6, 2026
ab7579e
WP12: model-parity harness across GPT and Anthropic spectrums
theclaymethod Jul 6, 2026
9861ccf
WP11: co-writer suggestion mode + English-only decline
theclaymethod Jul 6, 2026
14437fa
Add harvest sample bootstrap lane
theclaymethod Jul 6, 2026
d052617
Fix harvest merge and ranking regressions
theclaymethod Jul 6, 2026
42ecf29
Merge branch 'wp11-cowriter' into eval-forms-integrate
theclaymethod Jul 6, 2026
1aa840f
Merge branch 'wp12-parity' into eval-forms-integrate
theclaymethod Jul 6, 2026
36806a1
Merge branch 'wp13-harvest' into eval-forms-integrate
theclaymethod Jul 6, 2026
5208ee9
Add discourse-level silhouette scanner (WP14)
theclaymethod Jul 6, 2026
042a282
Handle directory fixture references in pattern-coverage corpus
theclaymethod Jul 6, 2026
78de6a2
Merge branch 'wp14-silhouette' into eval-forms-integrate
theclaymethod Jul 6, 2026
41b60d1
Add deterministic voice scorer: profiles, stylometric composite, GI i…
theclaymethod Jul 6, 2026
04de83e
Add contribute pipeline: wild-caught snippets become eval rows and st…
theclaymethod Jul 6, 2026
5769bf0
Merge branch 'wp16-contribute' into eval-forms-integrate
theclaymethod Jul 6, 2026
cce8c0e
Product doctrine, measured tiering table, research-indicates pattern,…
theclaymethod Jul 6, 2026
e0b87bc
Merge branch 'wp-docs-pattern' into eval-forms-integrate
theclaymethod Jul 6, 2026
05f2363
Add minimal-pair paragraph evals and seeded documents
theclaymethod Jul 6, 2026
1d643be
Merge branch 'wp8-pairs' into eval-forms-integrate
theclaymethod Jul 6, 2026
1871daf
Align protects claim with merged hedge_stack category name
theclaymethod Jul 6, 2026
aaa22f7
Add WP15 teach calibration game (A/B preference elicitation)
theclaymethod Jul 6, 2026
7d2f574
Add teach & mimic: layered voice card, refine loop, stats, gates
theclaymethod Jul 6, 2026
6acd56c
Apply WP15 adversarial review fixes (D1-D7)
theclaymethod Jul 6, 2026
9134504
Merge branch 'wp15-calibrate' into eval-forms-integrate
theclaymethod Jul 6, 2026
6a56ad4
Fix mimic refine to score on the full GI composite; add live path + c…
theclaymethod Jul 6, 2026
a5718ab
Merge branch 'wp10a-voice-committed' into eval-forms-integrate
theclaymethod Jul 6, 2026
4d514a2
Fix nemesis findings: scan-before-decline English gate, subject-gated…
theclaymethod Jul 6, 2026
d6f6321
Consolidate eval/scanner internals: shared modules, in-process calls,…
theclaymethod Jul 6, 2026
59d03f8
Make teach fully agent-driven and implicit in the skill
theclaymethod Jul 6, 2026
b78f366
Drop em-dash pairs from SKILL.md teach and contract bullets
theclaymethod Jul 6, 2026
5db1fe4
Restructure unslop into impeccable-style subcommand routing
theclaymethod Jul 7, 2026
9323dcb
Add synonym routing and the voice check
theclaymethod Jul 7, 2026
c24a0dd
Add codex-jsonl harvester adapter for Codex CLI/Desktop transcripts
theclaymethod Jul 7, 2026
ec3c4c6
Overhaul README to cover the full product
theclaymethod Jul 7, 2026
cbbd132
Record the holdout measurement, cite it in the README, untrack review…
theclaymethod Jul 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 0 additions & 133 deletions .codex/nemesis-review.md

This file was deleted.

5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,14 @@ test_*.txt
# Wiki sync state
scripts/.wiki_sync_state.json

# Taught voices: profiles, cards, and provenance are user data, not repo content
.unslop/

# Packaged skill
*.skill

# Behavioral eval run artifacts (prepared tasks, model outputs, judge results)
evals/runs/
runs/
.claude/
.codex/
10 changes: 10 additions & 0 deletions .unslop/contrib/let-that-sink-in/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"category": "emphasis_crutch",
"date": "2026-07-06",
"pattern_name": "let-that-sink-in",
"post_redaction_sha256": "6e70f687ebfa4157f2173c00e589e37444bc1f272a4295e6919a991b3f56c7c4",
"pre_redaction_sha256": "6e70f687ebfa4157f2173c00e589e37444bc1f272a4295e6919a991b3f56c7c4",
"redactions": [],
"tell": "Let that sink in",
"word_count": 19
}
42 changes: 42 additions & 0 deletions .unslop/contrib/let-that-sink-in/report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Add emphasis_crutch pattern: Let that sink in

## The specimen

> The launch memo ends with a warning instead of evidence. Let that sink in before you ask what changed.

- Source genre: TODO: source genre
- Date: 2026-07-06
- Redaction note: none

## Why it's an AI-ism

TODO: explain why this phrase is a reusable AI-writing tell in 2-4 sentences.

## Detection

- Pattern added: TODO: regex or phrase for `Let that sink in`
- Severity: TODO: hard or soft
- Gating rationale: TODO: explain literal-use boundary
- Catalog entry location: references/taboo-phrases.md

## Evals

| row id | kind | what it pins |
|---|---|---|
| CONTRIB-FN-let-that-sink-in | FN | exact specimen flags `Let that sink in` |
| CONTRIB-FP-let-that-sink-in | FP | literal-use protection for `Let that sink in` |

The FN stdin is the unmodified specimen after approved redaction.

## Gate results

red-first: already green; proposed pattern appears active

## Checklist

- [ ] eval-first (row was red before the pattern)
- [ ] literal-use FP row included
- [ ] REC row if an existing word was gated
- [ ] catalog + scanner parity green
- [ ] coverage gate green (pattern exercised)
- [ ] snippet publication approved by the user
24 changes: 24 additions & 0 deletions .unslop/contrib/let-that-sink-in/row_fn.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"assertions": [
{
"gte": 1,
"path": "total_violations",
"type": "json"
},
{
"type": "violation_phrase_contains",
"value": "let that sink in"
}
],
"category": "scanner_false_negative",
"command": [
"python3",
"scripts/banned_phrase_scan.py"
],
"correct_behavior": "The scanner reports at least one violation containing the contributed tell.",
"failure_mode": "The scanner misses the contributed tell from the exact specimen.",
"id": "CONTRIB-FN-let-that-sink-in",
"stdin": "The launch memo ends with a warning instead of evidence. Let that sink in before you ask what changed.\n",
"target": "script",
"title": "New AI-ism fixture: Let that sink in"
}
21 changes: 21 additions & 0 deletions .unslop/contrib/let-that-sink-in/row_fp_TEMPLATE.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"assertions": [
{
"equals": 0,
"path": "total_violations",
"type": "json"
}
],
"category": "scanner_false_positive",
"command": [
"python3",
"scripts/banned_phrase_scan.py"
],
"correct_behavior": "No violations for the protected literal/domain use.",
"failure_mode": "A broad pattern could flag legitimate prose.",
"id": "CONTRIB-FP-let-that-sink-in",
"protects": "emphasis_crutch",
"stdin": "TODO: add a literal or domain-specific use that should remain clean.",
"target": "script",
"title": "Literal-use protection for Let that sink in"
}
1 change: 1 addition & 0 deletions .unslop/contrib/let-that-sink-in/snippet.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
The launch memo ends with a warning instead of evidence. Let that sink in before you ask what changed.
8 changes: 8 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@ start with evals, then update the skill or scripts until the suite passes.
proving the jargon use still flags.
- Agent behavior change: add a `skill` row only when the behavior is rewrite,
preserve, decline, or route.
- Context-heavy or literal-sense pattern: prefer an `evals/fixtures/pairs/`
minimal pair plus PAIR rows, then run `python3 evals/check_pairs.py`.
3. If a `skill` row is added, update `evals/build_shared_benchmark.py` with its split
and domain, then regenerate `evals/shared-benchmark.json`.
4. Update `scripts/banned_phrase_scan.py`, `SKILL.md`, `presets/`, or `references/`
only after the eval captures the desired product behavior.
5. `python3 evals/check_pattern_coverage.py` (gate DOC-09) fails unless every
scanner pattern is exercised by a row and every category has a `protects` FP
row; `python3 evals/kata_add_pattern.py --run` (DOC-10) rehearses this. No
grandfathering.

Prefer contextual patterns over broad word bans. A row for `wedge` or `load-bearing`
should also protect literal uses such as construction, mechanics, law, medicine, code,
Expand All @@ -43,6 +49,8 @@ skill-benchmark validate evals/shared-benchmark.json --strict-leakage
If you touched `SKILL.md`, `presets/`, or `references/`, also run
`evals/run_behavioral.sh tune`.

If you touched the co-writer, mimic, or detector-pack model features, run `python3 evals/run_model_parity.py --dry-run --responses evals/fixtures/parity/canned_responses.json` and, before merge, the live matrix across the GPT and Anthropic spectrums (see `references/pipeline.md`, Model Parity).

`evals/evals.json` is the legacy happy-path suite; never edit it. Use
`evals/adversarial-evals.json` as the source of truth.

Expand Down
8 changes: 8 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@ start with evals, then update the skill or scripts until the suite passes.
proving the jargon use still flags.
- Agent behavior change: add a `skill` row only when the behavior is rewrite,
preserve, decline, or route.
- Context-heavy or literal-sense pattern: prefer an `evals/fixtures/pairs/`
minimal pair plus PAIR rows, then run `python3 evals/check_pairs.py`.
3. If a `skill` row is added, update `evals/build_shared_benchmark.py` with its split
and domain, then regenerate `evals/shared-benchmark.json`.
4. Update `scripts/banned_phrase_scan.py`, `SKILL.md`, `presets/`, or `references/`
only after the eval captures the desired product behavior.
5. `python3 evals/check_pattern_coverage.py` (gate DOC-09) fails unless every
scanner pattern is exercised by a row and every category has a `protects` FP
row; `python3 evals/kata_add_pattern.py --run` (DOC-10) rehearses this. No
grandfathering.

Prefer contextual patterns over broad word bans. A row for `wedge` or `load-bearing`
should also protect literal uses such as construction, mechanics, law, medicine, code,
Expand All @@ -43,6 +49,8 @@ skill-benchmark validate evals/shared-benchmark.json --strict-leakage
If you touched `SKILL.md`, `presets/`, or `references/`, also run
`evals/run_behavioral.sh tune`.

If you touched the co-writer, mimic, or detector-pack model features, run `python3 evals/run_model_parity.py --dry-run --responses evals/fixtures/parity/canned_responses.json` and, before merge, the live matrix across the GPT and Anthropic spectrums (see `references/pipeline.md`, Model Parity).

`evals/evals.json` is the legacy happy-path suite; never edit it. Use
`evals/adversarial-evals.json` as the source of truth.

Expand Down
Loading
Loading