@maestroagora/agora 1.8.0 → 1.10.0

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.
@@ -1,12 +1,13 @@
1
1
  # Agora voice authority
2
2
 
3
- This reference governs `VOICE`: building a measured voice profile from a corpus, writing to that profile, and checking a draft against it. Load it only when the task builds, applies, inspects, or checks a voice profile.
3
+ This reference governs two separate voice tiers: measured persistent profiles and task-only sketches from samples supplied with one task. Load it when the task builds, applies, inspects, or checks either tier.
4
4
 
5
- Voice is a modifier. It changes how a proposition is expressed. User authority in [agora-marketing.md](agora-marketing.md) controls profile use, and [agora-craft.md](agora-craft.md) supplies the rhythm controls a profile replaces. Agora does not authenticate corpus ownership, identity, attribution rights, endorsement rights, or publication permission. The user controls those decisions.
5
+ Voice is a modifier. It changes how a proposition is expressed. User authority in [agora-marketing.md](agora-marketing.md) controls profile use. Numeric rhythm measurements remain optional diagnostics and never become drafting quotas. Agora does not authenticate corpus ownership, identity, attribution rights, endorsement rights, or publication permission. The user controls those decisions.
6
6
 
7
7
  ## Contents
8
8
 
9
9
  - [What VOICE is](#what-voice-is)
10
+ - [Task-only voice sketches](#task-only-voice-sketches)
10
11
  - [Where profiles live](#where-profiles-live)
11
12
  - [Corpus admission](#corpus-admission)
12
13
  - [What gets measured](#what-gets-measured)
@@ -18,7 +19,7 @@ Voice is a modifier. It changes how a proposition is expressed. User authority i
18
19
 
19
20
  ## What VOICE is
20
21
 
21
- `VOICE` sits alongside `POSITION`, `SELL`, `INVEST`, `INFORM`, and `TRANSACT` with one difference: it is not mutually exclusive with them. Every other mode answers what job the copy is doing. `VOICE` answers whose habits the copy is written in, and it rides on top of whichever mode was already selected.
22
+ `VOICE` sits alongside `POSITION`, `SELL`, `INVEST`, `INFORM`, and `TRANSACT` with one difference: it is not mutually exclusive with them. Every other mode answers what job the copy is doing. `VOICE` answers which observed habits shape the expression. Resolve register and voice before argument planning.
22
23
 
23
24
  The surface:
24
25
 
@@ -50,10 +51,33 @@ npx -p @maestroagora/agora agora-voice default --voice <slug>
50
51
 
51
52
  `voice build` is a measurement task, not a description task. A model asked to describe an author's voice writes flattery. The profile leads with numbers computed from the corpus, because a number is checkable and a later draft can be measured against it. Adjectives belong in the interpretation sections, underneath the measurements they interpret.
52
53
 
53
- **A profile the engine did not produce is not a profile.** Do not write one by reading a corpus and describing what you notice, and do not load a hand-written file as though it were measured. Where the engine cannot run, say so and work without a profile.
54
+ **A persistent profile the engine did not produce is not a measured profile.** Do not load a hand-written file as though it were measured. A task-only sketch is permitted under the next section because it makes no certification, identity, or statistical claim and is never stored as a profile.
54
55
 
55
56
  **Boundary:** the measurement is only as good as the pipeline. Stylometric values move when the tokenizer, sentence segmenter, parser, or normalization rules change ([Grieve](https://doi.org/10.1093/llc/fqm020)). Freeze the pipeline in the profile and use the identical one when checking a draft. A comparison across two pipelines is not a comparison.
56
57
 
58
+ ## Task-only voice sketches
59
+
60
+ A task-only sketch uses authentic samples supplied with the current task. It works without the persistent profile's 5,000-word certification floor because it does not claim stable identity or statistical matching.
61
+
62
+ Use three to ten same-genre samples when available. Record a fuller local sketch only when those samples show recurring habits. With one or two samples, record cautious observations that are directly visible in the sample and mark internal confidence low. With no samples, preserve credible choices in the supplied draft and use plain professional writing.
63
+
64
+ Record observable habits only:
65
+
66
+ - sentence and paragraph range;
67
+ - fragments and contractions;
68
+ - first-person and second-person use;
69
+ - punctuation;
70
+ - directness, warmth, humor, and skepticism;
71
+ - how qualifications are placed;
72
+ - common opening, turning, and ending shapes;
73
+ - constructions and words the samples avoid.
74
+
75
+ The sketch has the internal type `TASK_VOICE_SKETCH`, a sample count, a genre label when supplied, and `certified: false`. It exists only for the current task. Never write it to `~/.agora/voices/`, add it to the profile index, or present it as a measured profile.
76
+
77
+ Transfer habits, not material. Never copy distinctive phrases, examples, facts, metaphors, slogans, anecdotes, or subject matter. Never infer personality, biography, opinions, motives, identity, authorship, or approval. Run the existing exact overlap check and review unusual shorter matches before returning the draft.
78
+
79
+ When task samples and a default persistent profile conflict, use the task samples for same-genre local expression in the current task. Keep only compatible stable habits from the default. An explicitly requested persistent profile remains active, but it still cannot authorize phrase copying or change the current brief.
80
+
57
81
  ## Where profiles live
58
82
 
59
83
  Profiles are stored at `~/.agora/voices/<slug>.md`, with `~/.agora/voices/index.json` as the registry. Never inside the skill directory.
@@ -157,7 +181,8 @@ concrete example.
157
181
 
158
182
  ## Vocabulary
159
183
  Owned: words and constructions recurring across genres, with frequency and one
160
- example line each. This list is an allowlist against the AI-vocabulary gate.
184
+ example line each. This list documents author habit. It does not automatically
185
+ override the priority anti-AI vocabulary gate.
161
186
  Avoided: words frequent in comparable writing and absent here. Record an
162
187
  avoidance only from a stated preference or a stable alternative in repeated
163
188
  eligible contexts. Absence alone is weak evidence.
@@ -187,7 +212,7 @@ Two sections carry more weight than they look.
187
212
 
188
213
  Keep supplied product actions at their stated scope. `A rejection and its selected reason are recorded` does not establish how long the record persists, where it is attached, who can retrieve it, or what the interface displays. Voice work may rephrase the supplied action. It may not fill operational gaps with plausible product behavior.
189
214
 
190
- **Transfer habits, not material.** Move the distributions and the tendencies: sentence-length spread, clause packaging, directness, contraction preference, punctuation frequency, preferred argument order, hedging behavior, typical openings. Do not move distinctive metaphors, slogans, signature phrases, anecdotes, factual examples, or source sentences. **Boundary:** the line is not always obvious. When a construction is both habitual and distinctive, abstract it before use: this author opens with a concrete contradiction is usable; reuse their particular contradiction is not.
215
+ **Transfer habits, not material.** Use directness, contraction preference, punctuation habits, preferred argument order, qualification behavior, and typical openings before drafting. Keep measured sentence and paragraph distributions for comparison after drafting, not as targets. Do not move distinctive metaphors, slogans, signature phrases, anecdotes, factual examples, or source sentences. **Boundary:** the line is not always obvious. When a construction is both habitual and distinctive, abstract it before use: this author opens with a concrete contradiction is usable; reuse their particular contradiction is not.
191
216
 
192
217
  **Anti-mimicry checks.** After generating, flag every exact overlap of 8 or more consecutive tokens with the source corpus, excluding demonstrably generic strings, and review any shorter phrase that is unusual or repeatedly associated with the author. The token count is a **governance default** and an engineering review trigger; it is not a legal safe harbour, and no word count is one. Also review structural overlap: a sentence preserving the source's sequence of images and syntactic turns can be too close after every word has been swapped. **Boundary:** an overlap flag is a prompt to look, not a verdict. Common phrasing in a technical domain will trip it.
193
218
 
@@ -195,32 +220,33 @@ Keep supplied product actions at their stated scope. `A rejection and its select
195
220
 
196
221
  ## Voice against the tell gate
197
222
 
198
- Voice enters at **level 6** of the conflict hierarchy, with compression and channel fit. It never rises above it. Four consequences are stated here because a model asked to write in someone's voice will otherwise reason its way around them.
223
+ Resolve voice before argument planning. Voice controls expression from the first outline, but never outranks required facts, exact wording, genre, audience, or first-read comprehension. Four consequences are stated here because a model asked to write in someone's voice will otherwise reason its way around them.
199
224
 
200
225
  1. **Voice follows the user's requested content.** Where the profile's habitual certainty differs from the brief, the brief wins for that sentence.
201
226
  2. **Voice never overrides host-required or user-required text.** Legal, regulatory, disclosure, evidence, and qualification findings constrain content only when the user requested that review or the host requires them.
202
227
  3. **Voice never overrides the U+2014 ban.** That constraint is immutable and sits at level 1. If the corpus is full of them, the profile records the habit as unusable and the output uses other punctuation.
203
- 4. **Voice does license the author's own vocabulary against the generic AI-vocabulary ban.** This is a real exception and it needs writing down.
228
+ 4. **Voice identifies possible author-owned vocabulary but does not license it automatically against the priority anti-AI standard.**
204
229
 
205
- ### The owned-vocabulary exception
230
+ ### The owned-vocabulary review
206
231
 
207
232
  The AI-tell gate and a voice profile genuinely conflict, and the conflict is not hypothetical. If an author writes `leverage` constantly across years and genres, the generic ban strips the word, the draft comes back in nobody's voice, and the feature the user paid for has been removed by a rule meant to make writing sound human.
208
233
 
209
- **The resolution: a profile's `## Vocabulary` owned list is an explicit allowlist that suppresses the generic AI-vocabulary ban for those specific words, and only those.** Everything not on the list stays banned. The allowlist is scoped to the profile, not to the session, and it does not travel to work written without that profile.
234
+ **The resolution: a profile's `## Vocabulary` owned list is evidence for a narrow review, not an automatic allowlist.** Retain a listed banned word only when it is also load-bearing, exact, technically required, part of a verified proper name or immutable text, or explicitly required by the current user or house style. Measurement alone is insufficient.
210
235
 
211
- Three conditions bound it:
236
+ Four conditions bound the review:
212
237
 
213
238
  - **The word has to be on the list because it was measured.** A word recorded from frequency across genres qualifies. A word added because the draft wanted it does not.
214
- - **It suppresses the vocabulary ban only.** It does not suppress the stock-template bans, the significance-tail bans, the structural-tell rules, curly-quote normalization where it applies, or the U+2014 ban. Those are not vocabulary.
215
- - **It does not change the proposition by itself.** `Revolutionary` on an owned list permits the word as a measured voice habit; the user's brief controls whether the draft makes that claim.
239
+ - **The word must carry exact meaning.** Familiarity or voice match alone does not make a banned term load-bearing.
240
+ - **Any exception reaches vocabulary only.** It does not suppress the stock-template bans, significance-tail bans, structural-tell rules, curly-quote normalization, or the U+2014 ban.
241
+ - **It does not change the proposition by itself.** `Revolutionary` on an owned list records a measured habit; the user's brief controls whether the draft makes that claim, and the priority anti-AI standard controls whether the wording survives.
216
242
 
217
- Before drafting, test the measured owned list against the propositions in the brief. When at least one owned word can express an existing proposition naturally without changing its scope, use it. Do not remove that word merely because the ordinary tell gate would reject it. Do not add a new benefit, causal result, quality judgment, or product position merely to demonstrate profile adherence unless the user requests that addition.
243
+ Before drafting, test the measured owned list against the propositions and the priority anti-AI standard. Keep a banned owned word only when the narrow exception is documented. Do not add a new benefit, causal result, quality judgment, or product position merely to demonstrate profile adherence.
218
244
 
219
- For a production profile whose brief explicitly supplies measured owned vocabulary, treat that test as a required pre-draft step. If `leverage` can replace `use` without changing the requested meaning, the word survives. If `robust` would add a quality judgment the user did not request, leave it out. Use at least one viable owned term; never use all merely to maximize a match.
245
+ For a production profile whose brief explicitly supplies measured owned vocabulary, treat that review as a required pre-draft step. If `leverage` merely replaces `use`, remove it. If a required technical term, verified name, immutable quotation, or explicit user instruction requires the word, preserve it and record why. Never use a banned owned term merely to maximize a match.
220
246
 
221
- Sentence-length and paragraph-shape measurements are distributions, not quotas or stock structures. Follow them without duplicating a proposition, adding a summary that says the opening again, or copying the sequence of a sample. The structural-tell gate fails identifiable canned framing, significance tails, decorative triads, and repeated stock templates. It does not fail a draft merely because its sentence and paragraph lengths resemble the authorized profile.
247
+ Sentence-length and paragraph-shape measurements are diagnostics, not quotas or stock structures. Do not generate toward them, add a long sentence to satisfy a tail, alternate lengths, force paragraph variance, duplicate a proposition, add a summary, or copy the sequence of a sample. The structural-tell gate fails identifiable canned framing, significance tails, decorative triads, and repeated stock templates. It does not fail a draft merely because its sentence and paragraph lengths resemble the authorized profile.
222
248
 
223
- **Boundary:** an owned-vocabulary list assembled from a thin corpus is a licence built on noise. Below the certification floor, no allowlist is issued at all, because a word cannot be shown to recur across genres in a corpus that has one.
249
+ **Boundary:** an owned-vocabulary list assembled from a thin corpus is a preference claim built on noise. Below the certification floor, no candidate exception list is issued, because a word cannot be shown to recur across genres in a corpus that has one.
224
250
 
225
251
  ## Checking adherence
226
252
 
@@ -0,0 +1,259 @@
1
+ # Agora human-writing runtime contract
2
+
3
+ This file is the compact writing authority. Follow the complete `human-voice-editing-reference.md` as the canonical source. Keep its research and maintainer explanation out of the final copy.
4
+
5
+ ## Goal
6
+
7
+ Write for the reader, not for the writing system.
8
+
9
+ The final text should sound like a capable person who knows the subject and says what they mean. Keep internal analysis invisible.
10
+
11
+ ## Default register
12
+
13
+ Use plain professional English unless the user, audience, genre, or immutable source requires technical, scientific, academic, legal, compliance, audit, or diligence language.
14
+
15
+ A software, data, or AI topic is not automatically technical writing.
16
+
17
+ ## Priority
18
+
19
+ 1. Preserve required facts, names, numbers, dates, quotations, conditions, uncertainty, and exact terms.
20
+ 2. Follow the requested purpose, format, length, and message.
21
+ 3. Match the audience and genre.
22
+ 4. Make the first read clear.
23
+ 5. Apply the active author voice or task voice sketch.
24
+ 6. Improve the argument and persuasion.
25
+ 7. Apply search, GEO/AEO, cadence, and compression only when they do not make the writing harder to read.
26
+
27
+ ## Lock the brief before drafting
28
+
29
+ Build a private requirement map with one entry for every supplied fact, limitation, exact term, requested component, length rule, inclusion, and exclusion. Mark which items the user requires in visible copy. The map is never copy. After tracing the draft, remove sentences that merely announce a documented action, source limit, separate responsibility, distinction, boundary, or interpretation rule. State the underlying fact once in reader language.
30
+
31
+ After drafting, trace each required item to the finished text. Compare names, numbers, dates, actors, actions, objects, states, conditions, uncertainty, quotation status, and negative limits one by one. Plausibility is not support.
32
+
33
+ Do not turn an action into a stored record, a capability into observed use, a listed exclusion into a broader absence, or a missing outcome into a responsibility. Do not add a likely use case, workflow, benefit, comparison, or result.
34
+
35
+ Delete an abstract wrap-up that only says the details make a decision clearer, keep work focused, expose underlying machinery, remain in someone's hands, or provide a satisfactory answer. End on the concrete fact, action, limit, or requested next step instead.
36
+
37
+ When a task supplies an exact term, keep that term. Style editing cannot shorten `adjusted mean difference` to `mean difference` or replace a defined legal term.
38
+
39
+ In legal text, preserve who acts and who receives an action. Do not turn a passive construction with an unstated actor into an active construction that names one.
40
+
41
+ For an exact word count, count the finished visible copy with the user's rule. Use a counter when available. Edit and recount until the integer matches exactly. Do not return an estimate.
42
+
43
+ For a word range, do not reach the minimum by repeating a fact, restating a limitation, adding a generic benefit, or narrating the review. Use the shortest natural passage inside the range.
44
+
45
+ ## Keep system language backstage
46
+
47
+ In ordinary copy, do not describe the work with internal review terms such as:
48
+
49
+ ```text
50
+ evidence
51
+ evidentiary
52
+ proof
53
+ verified
54
+ verification
55
+ claim
56
+ substantiation
57
+ provenance
58
+ methodology
59
+ framework
60
+ mechanism
61
+ criterion
62
+ criteria
63
+ qualification
64
+ qualifier
65
+ causal
66
+ entailment
67
+ proposition
68
+ decision surface
69
+ route
70
+ artifact
71
+ register
72
+ hierarchy
73
+ gate
74
+ audit
75
+ ledger
76
+ boundary
77
+ scope
78
+ operational
79
+ ```
80
+
81
+ Keep one only when the reader needs the exact term. Examples include scientific evidence, mathematical proof, an insurance claim, legal scope, or a documented technical mechanism.
82
+
83
+ Do not replace these words mechanically. Rewrite the idea in reader language.
84
+
85
+ ## Use author samples before drafting
86
+
87
+ When authentic samples are supplied, create a hidden task voice sketch before planning the text.
88
+
89
+ Record only observable habits:
90
+
91
+ - sentence and paragraph range;
92
+ - fragments and contractions;
93
+ - first-person and second-person use;
94
+ - punctuation;
95
+ - directness and warmth;
96
+ - humor and skepticism;
97
+ - how the author qualifies a point;
98
+ - common openings, turns, and endings;
99
+ - words and structures the author avoids.
100
+
101
+ Do not copy facts, metaphors, slogans, anecdotes, or distinctive phrases. Do not claim a statistical match. Do not save the sketch as a certified profile.
102
+
103
+ With no samples, keep credible choices from the supplied draft and use the plain professional default.
104
+
105
+ ## Build simple sentences
106
+
107
+ Use one main point per sentence.
108
+
109
+ Put the subject and action early. Prefer:
110
+
111
+ ```text
112
+ actor -> action -> object -> result or condition
113
+ ```
114
+
115
+ Split a sentence when it asks the reader to hold a fact, caveat, explanation, and implication at the same time.
116
+
117
+ Review an ordinary sentence over 28 words. Keep it only when splitting it would change or obscure the relationship.
118
+
119
+ Review a sentence with:
120
+
121
+ - three or more joined clauses;
122
+ - more than one parenthetical;
123
+ - a long setup before the subject;
124
+ - three abstract nouns in sequence;
125
+ - several `of`, `for`, `with`, `in`, or `through` phrases;
126
+ - repeated `which`, `that`, `while`, `whereas`, or `whereby` clauses;
127
+ - passive wording when the actor is known.
128
+
129
+ No sentence must be long for rhythm. Do not alternate long and short sentences mechanically.
130
+
131
+ ## Build natural paragraphs
132
+
133
+ Give each paragraph one job.
134
+
135
+ Start with the information. Do not restate the heading. Do not end every paragraph with a lesson, benefit, or summary. Let paragraph length follow the idea.
136
+
137
+ Use a conclusion only when the genre needs a judgment, recommendation, request, decision, or next step. Delete a recap that merely repeats the body.
138
+
139
+ Keep private controls out of the output. Delete phrases such as `the documented actions`, `the distinction is`, `separate from the product's behavior`, `its role is limited to`, `these limitations warrant`, and `the result should be interpreted as` when the concrete facts already say the same thing.
140
+
141
+ ## Apply every canonical anti-tell rule
142
+
143
+ Treat the complete vocabulary, connective, template, significance-tail, punctuation, prompt-leakage, citation, structural, specificity, meaning, and genre rules in `human-voice-editing-reference.md` as mandatory.
144
+
145
+ The lists are hard output rules, not density suggestions, except where the canonical file states a narrow exception.
146
+
147
+ ## Also review these patterns
148
+
149
+ Cut generic false reframes:
150
+
151
+ - `This is not X. It is Y.`
152
+ - `This is not just X. It is Y.`
153
+ - `X is more than Y.`
154
+ - `The real issue is not X. It is Y.`
155
+ - repeated `not X, but Y` contrasts.
156
+
157
+ Cut question-fragment theater:
158
+
159
+ - `The result?`
160
+ - `The answer?`
161
+ - `The problem?`
162
+ - `The difference?`
163
+ - `The bottom line?`
164
+
165
+ Cut conversational theater that is not part of the author's voice:
166
+
167
+ - `Here is the thing.`
168
+ - `Let us be honest.`
169
+ - `Think about it.`
170
+ - `Imagine this.`
171
+ - `Picture this.`
172
+ - `You know the feeling.`
173
+ - `The bottom line is...`
174
+
175
+ Replace corporate helper phrases with a direct verb:
176
+
177
+ - `provides the ability to`
178
+ - `is designed to enable`
179
+ - `helps to facilitate`
180
+ - `allows users to`
181
+ - `offers a way to`
182
+ - `serves to`
183
+ - `works to`
184
+ - `aims to`
185
+ - `seeks to`
186
+ - `has the potential to`
187
+
188
+ Cut legalistic wording outside a legal or formal genre:
189
+
190
+ - `with respect to`
191
+ - `in relation to`
192
+ - `insofar as`
193
+ - `pursuant to`
194
+ - `herein`
195
+ - `therein`
196
+ - `whereby`
197
+ - `for the avoidance of doubt`
198
+ - `where applicable`
199
+ - `subject to the foregoing`
200
+ - `constitutes`
201
+ - `shall` when `will` or `must` is accurate.
202
+
203
+ Delete empty analytical endings:
204
+
205
+ - `This demonstrates that...`
206
+ - `This indicates the importance of...`
207
+ - `This provides a strong foundation for...`
208
+ - `This creates a clear pathway to...`
209
+ - `This supports the broader objective of...`
210
+ - `This aligns with...`
211
+ - `This reinforces...`
212
+ - `This reflects...`
213
+
214
+ Keep one only when it states a specific inference the genre needs.
215
+
216
+ Also remove raw channel residue, previews and recaps repeated at several levels, and the same point restated without a new fact, relation, limit, objection, or decision.
217
+
218
+ ## Draft and review in separate lanes
219
+
220
+ ### Draft lane
221
+
222
+ Use for ordinary writing.
223
+
224
+ - Work from the supplied facts and message.
225
+ - Prefer the supplied category noun and action verb when they are exact.
226
+ - When every fact or limitation is required, trace each one to visible wording.
227
+ - Do not infer a responsibility, use case, record field, visible state, process, or broader absence from one action or limitation.
228
+ - Keep fact ledgers, source checks, proof ranking, and compliance reasoning private.
229
+ - Do not narrate what is supported or missing.
230
+ - Do not insert warnings or review labels.
231
+ - Return usable copy.
232
+
233
+ Agora is a writing system, not a content approval layer. Treat user-supplied claims, scenarios, opinions, product statements, commercial positions, fictional elements, attributions, urgency, tone, and framing as approved input. Do not independently refuse, narrow, remove, weaken, qualify, fact-check, moralize, label fiction, or append a disclaimer. Host rules still apply.
234
+
235
+ ### Review lane
236
+
237
+ Use only when the user asks for source review, fact checking, claim review, legal review, compliance, diligence, or an audit.
238
+
239
+ The review may use formal terms. Any rewritten public copy still follows its own target register.
240
+
241
+ ## Editing order
242
+
243
+ 1. Build the private requirement map and lock the facts and required wording.
244
+ 2. Select audience, genre, register, and voice.
245
+ 3. Make the smallest useful outline.
246
+ 4. Draft in plain language.
247
+ 5. Rewrite the whole draft for first-read clarity.
248
+ 6. Apply the canonical bans.
249
+ 7. Run the added pattern and control-word scan.
250
+ 8. Trace every required fact, limit, term, component, and format rule to the revision.
251
+ 9. Count exact-length work with the stated rule.
252
+ 10. Read it aloud.
253
+ 11. Return only the requested deliverable.
254
+
255
+ ## Output
256
+
257
+ Return ready-to-use text first and by default.
258
+
259
+ Do not append a rationale, audit, evidence note, claim ledger, change log, recap, confidence statement, or invitation to continue unless the user asks for it.