global setup and configuration.
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"packs": {
|
||||
"pack-phrases-core": [
|
||||
"academic_excess",
|
||||
"acknowledgment_loop",
|
||||
"ai_vocabulary",
|
||||
"assistant_artifact",
|
||||
"communication_artifact",
|
||||
"conclusion_scaffold",
|
||||
"copula_avoidance",
|
||||
"editorializing",
|
||||
"emphasis_crutch",
|
||||
"false_agency",
|
||||
"false_concession",
|
||||
"false_range",
|
||||
"filler",
|
||||
"filler_opener",
|
||||
"formulaic_challenges",
|
||||
"generic_conclusion",
|
||||
"jargon",
|
||||
"knowledge_cutoff",
|
||||
"meta",
|
||||
"novelty_inflation",
|
||||
"numbered_list_inflation",
|
||||
"performative",
|
||||
"promotional",
|
||||
"reader_addressing",
|
||||
"reader_steering",
|
||||
"reasoning_chain",
|
||||
"rhetorical_question",
|
||||
"rhetorical_setup",
|
||||
"significance_inflation",
|
||||
"superficial_ing",
|
||||
"throat_clearing",
|
||||
"unnecessary_permission",
|
||||
"vague_attribution",
|
||||
"vague_endorsement"
|
||||
],
|
||||
"pack-structure": [
|
||||
"macro_both_sidesism",
|
||||
"macro_redemption_arc",
|
||||
"macro_preview_recap",
|
||||
"macro_over_determination",
|
||||
"macro_emotional_flatness"
|
||||
],
|
||||
"pack-register-guards": [
|
||||
"hedge_stack",
|
||||
"parenthetical_hedging"
|
||||
],
|
||||
"pack-voice": [
|
||||
"anthropomorphic_shipping",
|
||||
"anti_slop_register",
|
||||
"binary_contrast",
|
||||
"colon_reveal",
|
||||
"contrastive_definition",
|
||||
"dramatic_fragment",
|
||||
"em_dash_overuse",
|
||||
"exclamation_overuse",
|
||||
"formatting",
|
||||
"fragment_template",
|
||||
"headline_cadence",
|
||||
"headline_container_agency",
|
||||
"imperative_slogan",
|
||||
"negative_listing",
|
||||
"negative_parallelism",
|
||||
"numeric_parallelism",
|
||||
"slogan_fragment",
|
||||
"spec_fragment",
|
||||
"staccato_fragmentation",
|
||||
"tool_agency_reflexive",
|
||||
"tool_agency_volitional"
|
||||
],
|
||||
"pack-facts": []
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
# Pack: Facts
|
||||
|
||||
Use this pack for facts and constraints that must survive a rewrite. Do not judge style or phrase quality.
|
||||
|
||||
## Look For
|
||||
|
||||
- Constraints from `extract_constraints.py`: numbers, dates, times, names, URLs, emails, quoted text, code identifiers, currencies, percentages, units, ranges.
|
||||
- Negations, conditionals, and scope words surfaced by preservation validation: "not", "unless", "except", "only", "must", "may", "can", "at least", "no more than".
|
||||
- Approximation traps: "roughly 60%" is not "60%"; "Q2" is not "June"; "under 500 ms" is not "500 ms".
|
||||
- Proper-noun and party relationships: Apple sued Qualcomm is not Qualcomm sued Apple.
|
||||
- Technical literals: API names, flags, file paths, version numbers, protocol names.
|
||||
|
||||
## Emit
|
||||
|
||||
Return JSON findings only:
|
||||
|
||||
```json
|
||||
{"span":"roughly 60%","rule":"approximate_quantity","pack":"pack-facts","severity":"hard","note":"Keep the approximation marker with the number."}
|
||||
```
|
||||
|
||||
Use `hard` for exact facts, negations, scope, and quantities. Use `soft` for phrasing that appears factual but may be compressible.
|
||||
|
||||
## Examples
|
||||
|
||||
- "p99 latency fell to 180 ms on June 18" -> report p99, 180 ms, June 18.
|
||||
- "roughly 60%" -> report the approximation and number together.
|
||||
- "The team improved performance." -> no finding; style claim without a concrete constraint.
|
||||
- "`--strict` failed on v2.1.0" -> report flag and version.
|
||||
@@ -0,0 +1,30 @@
|
||||
# Pack: Phrases Core
|
||||
|
||||
Use this pack only for scanner-backed phrase, jargon, and scaffold tells. Do not judge facts, register-preservation, macro structure, or the rewriter's house style here.
|
||||
|
||||
## Look For
|
||||
|
||||
- Throat-clearing and reader steering: "here's the thing", "let's dive in", "to answer your question".
|
||||
- Emphasis crutches and inflated significance: "let that sink in", "underscores the importance", "a testament to".
|
||||
- Business, academic, and promotional vocabulary used as generic polish: "leverage", "seamless", "vibrant", "rich cultural heritage".
|
||||
- Vague attribution or false agency: unnamed "experts", numbers that "speak for themselves", data that "tells a story".
|
||||
- Formulaic scaffolds: ordinal sequencing, generic conclusions, rhetorical setup questions, novelty claims, numbered-list hype.
|
||||
|
||||
Use `references/taboo-phrases.md` as the authoritative phrase catalog. Report only spans this pack owns.
|
||||
|
||||
## Emit
|
||||
|
||||
Return JSON findings only:
|
||||
|
||||
```json
|
||||
{"span":"...","rule":"throat_clearing","pack":"pack-phrases-core","severity":"hard","note":"Cut the opener and start with the claim."}
|
||||
```
|
||||
|
||||
Use `hard` for always-bad boilerplate and `soft` for context-dependent wording. Leave legitimate literal, legal, medical, code, or domain-specific uses unreported.
|
||||
|
||||
## Examples
|
||||
|
||||
- "Here's the thing: the data speaks for itself." -> report "Here's the thing" and "speaks for itself".
|
||||
- "The loan used 3:1 leverage." -> no finding; finance sense is literal.
|
||||
- "This update unlocks seamless cross-functional synergy." -> report "seamless" and "synergy".
|
||||
- "Some critics argue the policy failed." -> report vague attribution unless the critics are named nearby.
|
||||
@@ -0,0 +1,30 @@
|
||||
# Pack: Register Guards
|
||||
|
||||
Use this pack to find wording that must survive a rewrite. Do not flag ordinary slop phrases and do not rewrite. This pack prevents harm.
|
||||
|
||||
## Look For
|
||||
|
||||
- Legal scope and negation: "arguably", "may", "shall", "must", "unless", "except", "not", "does not", section references, liability limits, indemnity terms.
|
||||
- Medical and scientific uncertainty: "may cause", "can increase", "studies suggest", "preliminary", "observational", "does not establish causation", confidence limits, cohort limits.
|
||||
- Security and safety absolutes: "never", "always", "must", "all input", "no secrets", "do not mix", when they define a rule or warning.
|
||||
- Scope words and quantities: "most", "some", "only", "at least", "no more than", percentages, ranges, dates, named parties.
|
||||
- Anti-dehedging traps: a phrase that looks cautious but carries the claim's certainty, exception, or legal burden.
|
||||
|
||||
Run on the whole text, not paragraph chunks, because scope can be established earlier than the sentence being rewritten.
|
||||
|
||||
## Emit
|
||||
|
||||
Return JSON findings only:
|
||||
|
||||
```json
|
||||
{"span":"arguably does not rise to gross negligence","rule":"legal_negation_scope","pack":"pack-register-guards","severity":"hard","note":"Hedge and negation are load-bearing; preserve them exactly."}
|
||||
```
|
||||
|
||||
Every finding is a preservation constraint. Use `hard` when changing it could invert or strengthen the claim; `soft` when it is likely load-bearing but needs human review.
|
||||
|
||||
## Examples
|
||||
|
||||
- "The incident arguably does not rise to gross negligence under Section 12(b)." -> report the full legal hedge/negation span.
|
||||
- "Users should never store secrets in client-side code." -> report "never store secrets".
|
||||
- "It is worth noting that the button is blue." -> no finding; ordinary filler belongs to another pack.
|
||||
- "The trial may cause drowsiness in some patients." -> report "may" and "some patients".
|
||||
@@ -0,0 +1,31 @@
|
||||
# Pack: Structure
|
||||
|
||||
Use this pack for document-level AI structure. Do not report isolated phrases unless they create a macro pattern.
|
||||
|
||||
## Look For
|
||||
|
||||
- `structure_scan.py` flags: `sentence_burstiness`, `conclusion_coda`, `bold_colon_listicle`, `one_line_staccato`, `connective_paragraph_openers`, `signpost_density`, `opener_repetition`, `participial_closer_share`.
|
||||
- Concrete thresholds to self-check: average sentence length under 8 or over 34 words is suspicious; sentence-length variance under 18 on 5+ sentences suggests uniform rhythm; 3+ one-line paragraphs under 8 words suggests staccato; 3+ consecutive paragraphs opened by connectives/signposts suggests scaffolding; 4+ repeated paragraph openers is blocking; 35%+ participial sentence endings suggests templated cadence.
|
||||
- Judge-only macro tells from `taboo-phrases.md`: both-sidesism, templated redemption arc, preview/recap symmetry, over-determination, uniform emotional register.
|
||||
- `silhouette_scan.py` flags idea arrangement above the surface: `scaffold_opener_share`, `callback_content` (recap loop), `role_entropy_bits`, `preview_fulfillment`, `heading_preview`, composited into `silhouette_penalty` (flags at `>= 1.0`).
|
||||
- A high `silhouette_penalty` means the document follows a template outline (preview-then-fulfill, rotating scaffold openers, closing recap); cite the specific flagged metric, not just the composite.
|
||||
- Cue-deletion evades silhouette but not surface repetition: pair `silhouette_scan` with `structure_scan` (`opener_repetition`, `one_line_staccato`) so a stripped-connective attack still fails one of the two fences.
|
||||
|
||||
Genre matters. `--genre docs` can allow reference-doc structure; `--genre social` can allow deliberate social cadence. Output still fails if the genre excuse is false.
|
||||
|
||||
## Emit
|
||||
|
||||
Return JSON findings only:
|
||||
|
||||
```json
|
||||
{"span":"paragraphs 2-5","rule":"connective_paragraph_openers","pack":"pack-structure","severity":"hard","note":"Paragraphs advance by scaffold words instead of content."}
|
||||
```
|
||||
|
||||
Quote the smallest span that shows the macro pattern. For whole-document patterns, use paragraph ranges.
|
||||
|
||||
## Examples
|
||||
|
||||
- "However... In addition... Consequently... In the end..." -> report connective scaffold and coda.
|
||||
- A technical comparison with "In Rails / In Django / In raw SQL" once -> no finding.
|
||||
- A story that always moves problem -> lesson -> uplift -> moral -> report `macro_redemption_arc`.
|
||||
- A report whose conclusion only recaps the intro -> report `macro_preview_recap`.
|
||||
@@ -0,0 +1,33 @@
|
||||
# Pack: Voice
|
||||
|
||||
Use this pack for manufactured voice and the skill's own replacement tells. Do not report core phrase boilerplate or factual/register constraints.
|
||||
|
||||
## Look For
|
||||
|
||||
- Anti-slop register: bare fragment contrasts such as "Not the tool. The team."; forced punch endings; repeated two- or three-word sentences.
|
||||
- Elegant variation and synonym cycling that calls attention to itself instead of clarifying.
|
||||
- Dramatic fragments, binary contrasts, negative parallelism, colon reveals, and rhetorical setups.
|
||||
- Contrastive-definition tails ("X is a build step, not an output."), two-beat imperative slogans ("Emit tokens. Ship bytes."), repeated "<plural noun> that <verb>." fragments, "One X, N Y." numeric parallelism, and abstractions that "ship inside" things.
|
||||
- Standalone slogan/spec fragment lines and headers: "N X, one Y." slogan cadence ("Four presets, one input.") and "N noun-phrase, past-participle ..." spec-sheet fragments ("Eight criteria, scored 1 to 5."). Flagged only when the whole line is the fragment; the same shape embedded in a sentence is a literal count and stays clean. Soft.
|
||||
- Headline slogan cadence: the "Short statement. Short statement." two-beat rhythm repeated across a document's headlines ("One command. A real URL." / "Reviewers click. The agent fixes."). One is voice; three or more is template grammar. Frequency-gated, soft.
|
||||
- Headline container agency: a calendar or program container delivers an artifact or outcome ("Week 1 ends with a calibrated eval"; "Demo day closes the cohort"). Name the completion criterion, mechanism, result, or decision instead. Literal boundaries such as "Week 1 ends on Friday" stay clean. Soft.
|
||||
- Tool anthropomorphism: an inanimate tool-noun given human agency. Reflexive self-agency fires anywhere ("The suite defends itself." / "The rules update themselves." / "It graded its own reflection."); strongly-volitional verbs (decides, hunts, wants, knows, believes, cares, refuses, judges, thinks) fire only on a standalone headline line ("The bench decides which model does which job." / "It hunts instances, not word lists."). Ordinary technical register stays clean ("the parser reads the file", "the model learns the distribution", "the test cleans up after itself"). Soft.
|
||||
- Punctuation performance: em-dash clusters, exclamation overuse, decorative bolding, title case inside body prose.
|
||||
- Warmth stripped into telegraphese: an email or narrative that loses natural softeners and sounds colder than the source.
|
||||
|
||||
## Emit
|
||||
|
||||
Return JSON findings only:
|
||||
|
||||
```json
|
||||
{"span":"Not the tooling. The conversations.","rule":"anti_slop_register","pack":"pack-voice","severity":"hard","note":"Bare fragment contrast is the skill's own tell; rewrite as varied prose."}
|
||||
```
|
||||
|
||||
Mark `hard` when the cadence is itself a recognizable formula. Mark `soft` when it may be genre-appropriate but needs review.
|
||||
|
||||
## Examples
|
||||
|
||||
- "Not the strategy. The execution." -> report `anti_slop_register`.
|
||||
- "We tested the API, fixed the retry path, and shipped." -> no finding.
|
||||
- "The result: alignment. The cost: trust." -> report colon reveal / fragment cadence.
|
||||
- "Thanks for sending this over. Could you send the figures by Friday?" -> no finding; natural warmth.
|
||||
Reference in New Issue
Block a user