asciidoc-pubkit 0.8.3 → 0.8.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1302c0c833ffbfdb14eff663bc8a30c80449ddf6ab065fc440c85e103189a87d
4
- data.tar.gz: 47c5bc1c86b79a3130406f562cd099cd4b76cf4e7a6aa95c17122c14835fcee1
3
+ metadata.gz: bcbb2a3c913ace085eb70388740dfc506fefd0ef064380c58e0ebbab63b422a8
4
+ data.tar.gz: 7b643916c2b5c19f2264541f9e8660d212e7a351a1de10142087e4437b527f56
5
5
  SHA512:
6
- metadata.gz: bd1665669a9d3de5c4b27218c3886e6c0de4c03410f533de318278644c26a8ac467665af74f9026cc39b3243c05afba6fb98ede1bf9c7e4fa922ca6db0fb941e
7
- data.tar.gz: a5090e7e0efbcb464e694f413312e942c6e88bf4d84749763d0e40971ee3b0f4cffe564f174d8c8c5368f81ffd7fa353cbccebf0d84117e81d051c5ff1e44f45
6
+ metadata.gz: 3cbda445b71d34817dfb51f64c49665106ae471ad98c0af3995697475f578fb658bdf2abc9e1894538a01d1e6e18b5d6fe850a9c818d868d8c2ad2663dd29598
7
+ data.tar.gz: dd89673d6281bc418a127dcd14ab7273e4919d677a84ef38b3b9a431ade81aa3d7ff8615b3bcfeaeeebe4de9e4016e157cb7d43065dbb4d511ee19bdd3f48341
data/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.5 — 2026-10-02
4
+
5
+ - Refine role-metaphor guidance for 入口: consider the actual creation, invocation,
6
+ configuration, reference, learning, or entry-point role even with a clear
7
+ referent. Require decision-specific evidence and evaluated alternatives rather
8
+ than stock reasons with appended quotations; keep quality checks advisory.
9
+ - Add 入口 as a heading topic candidate while preserving generated IDs and edit
10
+ scopes. Clarify review integrity failure handling and limits of reports about
11
+ excluded lists and other unsupplied content.
12
+
13
+ - Add contextual Japanese revision examples for extension terminology, exposed
14
+ interfaces, layered structures, process tracking, missed events, processing,
15
+ and concise capabilities or obligations. Preserve actors, modality, ordering,
16
+ visibility, counts, and structural distinctions when choosing alternatives.
17
+ - Add extension and indirect-expression candidates, reuse existing tracking
18
+ predicates, and extend configured use/handling potential forms and selected
19
+ operation lemmas with literal-mode surfaces.
20
+
21
+ ## 0.8.4 — 2026-10-02
22
+
23
+ - Require passage-specific review decisions in prose and heading prompts instead
24
+ of inferring keep/revise from retained strings. Leave unreviewed items pending,
25
+ reconcile decisions with edits or proposals, and report mechanical verification,
26
+ candidate handling, and editorial completion separately. Protect session files
27
+ and baseline snapshots from editing and formatting tools. These instructions
28
+ do not add automatic decision-record or semantic validation to verification.
29
+ - Detect inflected invocation, interpretation, retrieval, and collection verbs
30
+ for varied objects through configured MeCab lemmas; retain contextual phrase
31
+ precedence, allow lists, and explicit literal-mode coverage. Add the exact
32
+ contextual phrase 木全体 to cover IPADIC surname segmentation.
33
+ - Add regression cases based on investigated manuscript variants and test review
34
+ instructions in both scopes and modes with session artifacts kept intact.
35
+
3
36
  ## 0.8.3 — 2026-10-02
4
37
 
5
38
  - Refine shared Japanese writing and review criteria for established technical
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  A toolkit for authoring and reviewing AsciiDoc books.
9
9
 
10
- Version 0.8.3 provides shared Japanese technical writing criteria, an authoring
10
+ Version 0.8.5 provides shared Japanese technical writing criteria, an authoring
11
11
  prompt, separate prose and heading review prompts, manuscript scoring, and
12
12
  baseline verification for edited manuscripts, plus explicit prose-only mechanical
13
13
  replacements using a limited prh-format rule set.
@@ -16,7 +16,7 @@ Japanese text is retained in manuscript excerpts, rule dictionaries, and fixture
16
16
 
17
17
  ## Available features
18
18
 
19
- The following commands are available in version 0.8.3.
19
+ The following commands are available in version 0.8.5.
20
20
 
21
21
  | Feature | Commands | Behavior |
22
22
  | --- | --- | --- |
@@ -107,7 +107,7 @@ Add the gem to your project's `Gemfile` to manage its version with Bundler:
107
107
 
108
108
  ```ruby
109
109
  source 'https://rubygems.org'
110
- gem 'asciidoc-pubkit', '~> 0.8.3'
110
+ gem 'asciidoc-pubkit', '~> 0.8.5'
111
111
  ```
112
112
 
113
113
  Then install dependencies and run the CLI through Bundler:
@@ -129,7 +129,7 @@ git clone https://github.com/cybergarage/asciidoc-pubkit.git
129
129
  cd asciidoc-pubkit
130
130
  bundle install
131
131
  gem build asciidoc-pubkit.gemspec
132
- gem install ./asciidoc-pubkit-0.8.3.gem
132
+ gem install ./asciidoc-pubkit-0.8.5.gem
133
133
  asciidoc-pubkit --version
134
134
  ```
135
135
 
@@ -153,7 +153,7 @@ asciidoc-pubkit writing prompt --lang ja --output writing-prompt.md
153
153
  ```
154
154
 
155
155
  For example, `--lang en` exits with an unsupported-language error. No English
156
- review or writing criteria are shipped in 0.8.3.
156
+ review or writing criteria are shipped in 0.8.5.
157
157
 
158
158
  For a small trial, use `examples/book.adoc` as the scan input. Its Japanese
159
159
  paragraphs deliberately contain review candidates; its code block must remain
@@ -612,7 +612,28 @@ asciidoc-pubkit review prompt .pubkit/review --mode diagnose
612
612
 
613
613
  `revise` is the default and asks the agent to edit relevant prose. `diagnose` asks
614
614
  for findings and proposed revisions without editing. Both modes require the agent
615
- to distinguish **revise**, **keep**, and **needs-evidence** decisions.
615
+ to distinguish **revise**, **keep**, and **needs-evidence** decisions. Each decision
616
+ needs a passage-specific reason. Whether a matched string remains or disappears
617
+ cannot determine that decision; unchanged paragraphs and remaining candidates
618
+ must not receive automatic `keep` records. Unreviewed items remain pending.
619
+
620
+ Version 0.8.4 prompts require the reviewer to reconcile decisions with actual
621
+ edits (or proposed revisions in diagnose mode), review paragraphs or headings
622
+ without candidates, and inspect newly detected or remaining candidates after
623
+ verification. They request separate reports for mechanical preservation,
624
+ candidate decisions, and paragraph or heading quality review, with counts and
625
+ unresolved items. Protected-scope concerns are separate proposals, not evidence
626
+ of editorial approval. Pending items make the review incomplete.
627
+ Version 0.8.5 further requires an individual role or claim, located
628
+ evidence, a considered direct alternative, and the rationale for each candidate
629
+ decision. A stock reason with an appended quotation is insufficient. For `入口`,
630
+ the shared criteria ask whether creation, invocation, configuration, reference,
631
+ or a learning role can be stated directly even when the referent is clear.
632
+ Remaining role metaphors must be checked against those individual decisions.
633
+
634
+ These are reviewer instructions: the gem does not validate a decision ledger
635
+ or prove that an AI or human followed the instructions. Keep session metadata
636
+ and baseline snapshots immutable; format only authorized manuscript spans.
616
637
 
617
638
  The single Markdown output includes every selected paragraph once, in document
618
639
  order, with the shared criteria saved at scan time, candidates, saved settings,
@@ -649,7 +670,10 @@ Non-prose comparison ignores empty separator lines and trailing whitespace;
649
670
  listing, literal, and passthrough block content is additionally compared as parsed
650
671
  lines. Inline protection is heuristic, not a complete AsciiDoc inline parser.
651
672
  Successful verification does not prove meaning preservation, technical accuracy,
652
- or release readiness: `meaning_verified` is always `false`.
673
+ or release readiness: `meaning_verified` is always `false`. Verification does
674
+ not read candidate decision records or certify editorial completion. A passing
675
+ mechanical result must be reported separately from the reviewer's quality and
676
+ completion assessment.
653
677
 
654
678
  | Exit code | Meaning |
655
679
  | --- | --- |
@@ -1005,6 +1029,17 @@ These are candidates for contextual review, not banned expressions. A necessary
1005
1029
  condition, uncertainty, or distinction must survive a revision; a redundant
1006
1030
  disclaimer can instead be removed or folded into a more precise main claim.
1007
1031
 
1032
+ Version 0.8.5 extends the existing `入口` question and shared criteria
1033
+ without adding another prose matcher. A known referent alone does not justify
1034
+ vague role wording; direct alternatives are evaluated against the actual
1035
+ operation, conditions, and technical usage. The heading `heading-vague-topic`
1036
+ rule also includes `入口`; proposed title changes must preserve generated IDs
1037
+ or be reported for a separate authorized migration. Lists remain excluded and
1038
+ are not included in prose or heading body evidence. Reports about outside-scope
1039
+ concerns cover only content actually inspected, not unreviewed excluded blocks.
1040
+ If baseline or artifact integrity fails, preserve the evidence and stop editing;
1041
+ never update snapshot hashes or replace the baseline to claim a successful review.
1042
+
1008
1043
  Version 0.8.3 also includes scoped candidates such as `構築入口`,
1009
1044
  `エラーを回収する`, `ツールを呼ぶ`, `したりできます`, and `設計の肝`.
1010
1045
  These additions use the exact surfaces listed in the YAML in both modes;
@@ -1017,6 +1052,26 @@ requirements, and collecting errors from catching them. Suggested alternatives
1017
1052
  are not automatic replacement rules. Start a new review session to include
1018
1053
  updated rules and criteria; existing sessions retain their saved versions.
1019
1054
 
1055
+ Version 0.8.4 also configures `呼ぶ`, `読み取る`, `拾う`, and the sahen predicate
1056
+ `回収する` as weak-predicate candidates. MeCab matches their inflections for
1057
+ any object, including `指示と宣言を読み取ります` and `最後のdetailsを拾います`.
1058
+ This broadens review cues, not mandatory terminology changes; everyday and
1059
+ technically valid uses can be retained with a specific reason. Literal mode
1060
+ matches only the selected surfaces in the YAML. Longer contextual phrases take
1061
+ precedence. `木全体` is an explicit contextual phrase in both modes because
1062
+ IPADIC can parse `木全` as a surname; this narrowly addresses that segmentation
1063
+ case without treating all names or compounds containing `木` as trees.
1064
+
1065
+ Version 0.8.5 additionally reviews `拡張点`, `使えます`, `積み重なります`,
1066
+ `開放しています`, `見落とします`, `扱えます`, `使っています`, and selected indirect
1067
+ phrases. Existing tracking rules cover `追えます`. MeCab uses configured lemmas
1068
+ for use, potential handling, accumulation, oversight, and sahen opening;
1069
+ literal mode uses the listed surfaces. The shared examples distinguish an
1070
+ extension point from its mechanism, layers from a stack, system detection from
1071
+ human oversight, and processing from control. Revisions preserve actors,
1072
+ capabilities and obligations, sequence, visibility, counts, and distribution.
1073
+ These additions need a fresh scan and are contextual review guidance.
1074
+
1020
1075
  Metaphorical-operation candidates include limited exact surfaces of
1021
1076
  `地味に効く`, `静かに壊れる`, `時間を溶かす`, and `側に倒す`, including selected polite,
1022
1077
  past, and connective forms listed in the packaged YAML. They use contextual
@@ -1069,12 +1124,12 @@ reports analyzer changes instead of treating results from different dictionaries
1069
1124
  as directly comparable. Prompt generation uses saved evidence and does not need
1070
1125
  MeCab. Changed rules or dictionary settings require a new scan.
1071
1126
 
1072
- Sessions from earlier tool versions are not compatible with 0.8.3 (session schema 2). Keep the original baseline for
1127
+ Sessions from earlier tool versions are not compatible with 0.8.5 (session schema 2). Keep the original baseline for
1073
1128
  an ongoing review and finish it with the original version, or start a new review
1074
1129
  pass in a different directory:
1075
1130
 
1076
1131
  ```sh
1077
- asciidoc-pubkit review scan book.adoc --output .pubkit/review-0.8.3
1132
+ asciidoc-pubkit review scan book.adoc --output .pubkit/review-0.8.5
1078
1133
  ```
1079
1134
 
1080
1135
  Severity describes review priority, not proof of an error. There is no AI-authorship
@@ -12,7 +12,8 @@ terms:
12
12
  terms:
13
13
  - いろいろ
14
14
  - さまざまなこと
15
- question: 'Check whether the heading identifies the actual subject, operation or comparison. Use the section as evidence; do not invent missing specificity.'
15
+ - 入口
16
+ question: 'Check whether the heading identifies the actual subject, operation or comparison. Use the section as evidence; apply the shared role-metaphor criteria to 入口 and preserve section IDs. Do not invent missing specificity.'
16
17
  fixed_titles:
17
18
  - はじめに
18
19
  - 本書の構成
@@ -34,14 +34,19 @@ terms:
34
34
  # Review context before choosing a katakana technical term.
35
35
  - 木
36
36
  - 余白
37
- question: Identify the concrete referent, components, or measurable work. Keep
37
+ question: Identify the concrete referent, components, role, or measurable work.
38
+ For 入口, apply the shared role-metaphor criteria; a clear referent alone is
39
+ not a sufficient reason to keep vague operation wording. Keep
38
40
  established technical meanings. For 木 and 余白, consider a context-appropriate
39
41
  katakana term (such as ツリー or マージン) only when it names the intended concept.
40
42
  weak-predicate:
41
43
  terms:
42
44
  # Use, interpretation, and understanding (literal-mode surfaces).
43
45
  - 利用します
46
+ - 使えます
47
+ - 使っています
44
48
  - 扱います
49
+ - 扱えます
45
50
  - 扱いません
46
51
  - 意味しません
47
52
  - 把握します
@@ -58,12 +63,26 @@ terms:
58
63
  - 調べられます
59
64
  - 確かめます
60
65
  - 探します
66
+ - 見落とします
61
67
  - 追えます
68
+ # Inspect retrieval, interpretation, and invocation for any object.
69
+ - 呼ぶ
70
+ - 呼びます
71
+ - 呼んで
72
+ - 呼んだ
73
+ - 読み取る
74
+ - 読み取ります
75
+ - 拾う
76
+ - 拾います
77
+ - 回収する
78
+ - 回収します
62
79
  # Construction, preparation, and combination.
63
80
  - 用意します
64
81
  - 作ります
65
82
  - 組み立てられます
66
83
  - 組み合わせます
84
+ - 積み重なります
85
+ - 開放しています
67
86
  - 成り立たせています
68
87
  # Organization, comparison, and selection.
69
88
  - 整理します
@@ -136,11 +155,13 @@ terms:
136
155
  - わけではありません
137
156
  - 別です
138
157
  # Unusual technical translations; shared criteria own the alternatives.
158
+ - 木全体
139
159
  - 構築入口
140
160
  - 実装の読解
141
161
  - エラーを回収する
142
162
  - エラーを回収します
143
163
  - 介入パターン
164
+ - 拡張点
144
165
  # Object-specific everyday verbs, not general bans on these verbs.
145
166
  - ツールを呼ぶ
146
167
  - ツールを呼びます
@@ -154,6 +175,10 @@ terms:
154
175
  # Indirect capabilities and prerequisites; preserve their modality.
155
176
  - したりできます
156
177
  - することが前提です
178
+ # Preserve capability, distributed structure, and the responsible actor.
179
+ - 切り替えで扱えます
180
+ - 分かれて現れます
181
+ - 担保しなければなりません
157
182
  # Compressed noun relationships; suggestions are not automatic replacements.
158
183
  - 明示選択
159
184
  - 欠落理由
@@ -206,6 +231,14 @@ terms:
206
231
  verbs:
207
232
  扱う:
208
233
  - 扱う
234
+ - 扱える
235
+ 使う:
236
+ - 使う
237
+ - 使える
238
+ 積み重なる:
239
+ - 積み重なる
240
+ 見落とす:
241
+ - 見落とす
209
242
  示す:
210
243
  - 示す
211
244
  変わる:
@@ -289,6 +322,12 @@ verbs:
289
322
  追う:
290
323
  - 追う
291
324
  - 追える
325
+ 呼ぶ:
326
+ - 呼ぶ
327
+ 読み取る:
328
+ - 読み取る
329
+ 拾う:
330
+ - 拾う
292
331
  ある:
293
332
  - ある
294
333
  sahen:
@@ -302,6 +341,8 @@ sahen:
302
341
  - 区別
303
342
  - 解消
304
343
  - 混同
344
+ - 回収
345
+ - 開放
305
346
  negative_only:
306
347
  - 到達する
307
348
  - 意味する
@@ -34,7 +34,9 @@ adjacent sentences.
34
34
 
35
35
  ## Replace abstraction with the thing being discussed
36
36
 
37
- Abstract terms are valid when their referent is stated. Inspect terms such as:
37
+ Identify both the referent and its role before retaining an abstract term.
38
+ A named API, file, or command can make the referent recoverable while leaving
39
+ its operation vague. Inspect terms such as:
38
40
 
39
41
  | Term | What must be identifiable |
40
42
  | --- | --- |
@@ -49,6 +51,33 @@ Do not improve a sentence by replacing one abstraction with another. For
49
51
  example, changing `費用` to `コスト` says nothing unless the sentence identifies
50
52
  what increases.
51
53
 
54
+ For role metaphors such as `入口`, check whether naming the actual operation or
55
+ relationship gives the reader more useful information, even when the referent
56
+ is already clear. Consider these alternatives only when evidence supports them:
57
+
58
+ | Intended role of 入口 | More direct wording |
59
+ | --- | --- |
60
+ | Object creation | 生成API・生成メソッド, or state what the method creates |
61
+ | Invocation or external access | 呼び出しAPI・アクセス経路, or name the call and its operation |
62
+ | Configuration or prompt changes | 設定項目・上書きメソッド・コールバック・変更手段, preserving the changed scope |
63
+ | Command use | Name the command and the action it performs |
64
+ | Documentation or test references | 参照先・確認対象, or state what the document explains or test checks |
65
+ | Learning introduction | 導入例・理解する手がかり, supported by the example's actual content |
66
+ | Actual execution entry point | エントリポイント when that is the established technical role |
67
+
68
+ For example, `実行基盤を作る入口はcreate()です` can become
69
+ `実行基盤は生成メソッドcreate()で作ります`; `利用側の入口はinstallです` can
70
+ become `インストールするコマンドはinstallです`. Keep asynchronous behavior,
71
+ inputs, conditions, and other facts from the surrounding passage.
72
+ Do not replace every `入口` with `エントリポイント`, or introduce an API,
73
+ mechanism, or stronger guarantee that the source does not establish. Preserve
74
+ negation and scope: a catalog listing does not imply an execution method exists.
75
+ Distinguish a public option or return field from internal state before describing
76
+ a change mechanism. Literal entrances and clearly established technical usage
77
+ can remain. For keep, explain the role and why retaining the wording serves the
78
+ reader better than the considered direct alternative; naming its referent alone
79
+ or appending the original sentence to a generic reason is insufficient.
80
+
52
81
  ## Give weak predicates a concrete action or consequence
53
82
 
54
83
  Predicates such as `利用します`, `決めます`, `示します`, `扱います`, `整理します`,
@@ -76,11 +105,25 @@ For everyday verbs, identify the operation before choosing terminology:
76
105
  | 設定を書く・設定を書きます | 設定を記述する・定義する for authoring a definition; 設定する for actually configuring something |
77
106
  | 値を拾う | 取得する for retrieval; 抽出する for selection from existing data |
78
107
  | 切り出す合図です | 切り出す目安です for a judgment criterion; シグナルです only for an actual signal |
108
+ | インタフェースから使えます | 利用できます when describing availability through the interface; retain the actor and capability |
109
+ | 拡張機構が積み重なります | 階層化されています only for established layers; スタックを構成しています only for an actual stack and its ordering |
110
+ | 拡張点として開放しています | 提供しています for offering an extension facility; 公開しています for exposing access, preserving any access restrictions |
111
+ | 自動継続を途中で切らずに一巡を追えます | 追跡できます・トレースできます when following the sequence; preserve the complete cycle and uninterrupted continuation |
112
+ | 再試行を見落とします | 検知漏れが生じます・捕捉漏れが発生します for a system's detection failure; 見落とすリスクがあります for a human's possible oversight |
113
+ | 差分を隠しすぎずに扱えます | 処理できます for processing; 制御できます only when control is available, preserving how much difference remains visible |
114
+ | 通知文に使っています | 用いられています when the use is the focus and the actor is recoverable; retain active voice when who uses it matters |
79
115
 
80
116
  A familiar verb is not wrong merely because it is simple. Prefer the most direct
81
117
  accurate verb; do not introduce jargon or claim parsing, execution, or a state
82
118
  change that the evidence does not establish.
83
119
 
120
+ Layering and a stack are different structural claims. Do not infer either from
121
+ an accumulation metaphor alone. Tracking is more specific than confirmation;
122
+ retain ordering and continuity instead of shortening it to `確認できます`.
123
+ Distinguish an observed detection failure from a risk of human oversight: do not
124
+ turn a definite failure into a possibility or assign human observation to a
125
+ system. Active and passive voice must preserve the same actor and responsibility.
126
+
84
127
  Do not choose a more impressive synonym merely to vary sentence endings. Keep
85
128
  the technically correct verb when it names the real operation.
86
129
 
@@ -175,6 +218,16 @@ Inspect indirect predicates and author-centered emphasis as well:
175
218
 
176
219
  - Simplify `無効化したりできます` to `無効化できます` when it describes a single
177
220
  capability. Preserve `たり` when it marks a meaningful non-exhaustive list.
221
+ - Simplify `切り替えで扱えます` to `切り替えられます` when switching is the
222
+ capability itself. Preserve the subject, alternatives, and any separate
223
+ operation enabled by switching.
224
+ - For `三点に分かれて現れます`, identify what the three points represent. Use
225
+ `3か所に分散します` for distributed locations or `3つの要素として定義されます`
226
+ for defined elements only when that structure is established. Keep the count,
227
+ separation, and relationships; `現れます` alone loses structural information.
228
+ - Simplify `担保しなければなりません` to `担保が必要です` only when the guaranteed
229
+ property, responsible actor, and requirement remain explicit. A noun phrase
230
+ must not hide who must establish the guarantee or weaken an obligation.
178
231
  - For `提供することが前提です`, identify whose prerequisite or assumption is
179
232
  stated. Use `提供する必要があります` only when the source establishes an actual
180
233
  requirement; do not turn an assumption into an obligation.
@@ -218,11 +271,17 @@ Review unusual translations against the actual concept:
218
271
  | Wording to inspect | Context-dependent terminology |
219
272
  | --- | --- |
220
273
  | 木 | ツリー when referring to the data structure; keep literal trees and established mathematical usage |
274
+ | 拡張点 | 拡張ポイント for the specific extension location or interface; 拡張機構 for the broader mechanism only when that is the intended referent |
221
275
  | 構築入口 | ビルドのエントリポイント only when the entry point starts a build, not object construction or initialization |
222
276
  | 実装の読解 | コードリーディング for reading code; 実装の解析 when analysis is the actual task |
223
277
  | エラーを回収する | エラーを捕捉する for catching; ハンドリングする for handling; preserve aggregation or collection when that is the behavior |
224
278
  | 介入パターン | フックパターン only when a hook mechanism is established, not arbitrary human intervention |
225
279
 
280
+ An extension point and an extension mechanism can denote different scopes.
281
+ Keep `拡張点` when it is the project's established term and its referent is clear;
282
+ choose terminology for the actual interface or mechanism rather than replacing
283
+ all occurrences with a broader term.
284
+
226
285
  These alternatives are not interchangeable replacements. Confirm the operation
227
286
  and the domain's established usage from code, the glossary, or primary
228
287
  documentation; record uncertainty rather than inventing a mechanism.
@@ -248,6 +307,15 @@ conditions, negation, numbers, actors, causes, and implementation requirements.
248
307
  For example, removing a unique constraint from a duplicate-message check can
249
308
  lose a concurrency requirement even when the revised paragraph sounds clearer.
250
309
  Record unresolved evidence and keep necessary repetition or qualifications.
310
+ A review decision must come from reading the passage and checking the applicable
311
+ criteria. A retained word does not establish a `keep` decision, and a removed
312
+ word does not establish a satisfactory revision. Give passage-specific reasons
313
+ for retaining terminology, conditions, and distinctions; leave unreviewed items
314
+ pending rather than filling them with generic maintenance reasons. Compare the
315
+ actual revision with the original claim, including paragraphs without machine
316
+ candidates. Keep unresolved evidence and protected-scope proposals visible in
317
+ the completion report.
318
+
251
319
  No candidate count or mechanical verification result proves semantic correctness.
252
320
  Sentence length, punctuation, and list density can help locate passages to read;
253
321
  they are not fixed acceptance thresholds. Keep lists for parallel items and
@@ -17,6 +17,13 @@ Preserve conditions, negation, technical distinctions and exact terminology.
17
17
  If supporting body text is missing or insufficient, record needs-evidence.
18
18
  A table of contents alone cannot establish agreement with the section body.
19
19
 
20
+ For a title such as `手動圧縮の入口` or `画像・分類モデルへの入口`, apply the
21
+ shared role-metaphor criteria to the section evidence. Consider `起動方法` or
22
+ `呼び出しAPI` only when that is what the body explains. Naming a subject does
23
+ not by itself explain the operation. If a better title would change a generated
24
+ section ID, record the proposed title and ID concern for a separate authorized
25
+ migration rather than changing anchors or keeping it for stylistic reasons.
26
+
20
27
  ## Compare headings with the same role
21
28
 
22
29
  Read the complete outline and compare parent, sibling and child headings.
@@ -184,6 +184,8 @@ module AsciidocPubkit
184
184
  After editing, reread each paragraph in context. Report unresolved issues and do not claim publication readiness.
185
185
  Mechanical verification does not establish semantic correctness.
186
186
 
187
+ #{review_process('paragraph', mode)}
188
+
187
189
  ## Shared prose criteria
188
190
 
189
191
  Apply these criteria only within the running-prose edit scope above. Their
@@ -318,6 +320,8 @@ module AsciidocPubkit
318
320
  original title, proposed title when applicable, and a short reason.
319
321
  Also track each candidate ID and its disposition. Do not claim publication readiness.
320
322
 
323
+ #{review_process('heading', mode)}
324
+
321
325
  ## Shared preservation and writing criteria
322
326
 
323
327
  The following common criteria provide meaning and terminology guidance.
@@ -372,6 +376,22 @@ module AsciidocPubkit
372
376
  text
373
377
  end
374
378
 
379
+ def review_process(unit, mode)
380
+ <<~TEXT
381
+ ## Review decisions and completion
382
+
383
+ Keep manifest.json, document.json, findings.json, and every baseline/ snapshot immutable. Restrict editing and formatting tools to the authorized source spans; never run them over the session directory.
384
+ Check mechanical preservation and baseline integrity with this session before editing and at completion. If a baseline or artifact integrity check fails, stop editing, preserve the evidence, and report the failure. Do not repair or overwrite snapshots, update their hashes, or replace the session to turn a failed check into a successful report; a fresh scan cannot prove preservation against the original baseline.
385
+ Record each reviewed #{unit} ID and each candidate ID with revise, keep, or needs-evidence and a reason grounded in that passage. For keep, identify the concrete referent, operation, condition, necessary distinction, or established terminology that justifies retaining it. A shared generic reason does not establish individual review. Appending a source quotation to a stock reason is still insufficient.
386
+ For each candidate decision, identify its concrete role or claim, the evidence and source location, the direct wording considered, and why that alternative is better or why the original wording is necessary. For needs-evidence, name the missing support instead of inventing a role or revision. A quotation supports evidence but does not substitute for that explanation. For role metaphors such as 入口, apply the shared criteria even when a nearby identifier makes the referent clear.
387
+ Never infer revise or keep from whether the matched string survives, disappears, or changes. Do not bulk-assign keep to unchanged #{unit}s or remaining candidates. An unreviewed item stays pending; use needs-evidence only after review identifies missing evidence.
388
+ Review #{unit}s without candidates against the shared criteria as well. For concerns outside the editable scope, report the location and a separate out-of-scope proposal; do not count protection as an editorial keep decision or edit protected content.
389
+ #{mode == 'revise' ? 'Compare the original and edited passages, check both information loss and unsupported additions, and reconcile each recorded decision with the actual diff. After verification, individually inspect newly detected or remaining candidates; retain the original candidate IDs in the review record.' : 'Compare each proposed revision with the original passage for information loss and unsupported additions. A revise decision means a proposed revision, not an applied edit.'}
390
+ Report mechanical preservation, candidate decisions, and #{unit}-level quality review separately. State selected and reviewed #{unit} counts, candidate decision counts, pending items, needs-evidence items, out-of-scope concerns, and evidence used. Recheck retained role metaphors by their actual roles and cite the individual decisions; listing remaining words is not enough. Out-of-scope concerns cover only evidence actually inspected; the supplied prose/body context omits lists and other excluded blocks, so do not claim those were reviewed. If any selected item or candidate remains pending, report the review as incomplete.
391
+ Mechanical verification does not read or validate these decision records. Its passed result and candidate counts do not establish review completion or writing quality; meaning_verified remains false. Do not claim semantic correctness from those checks.
392
+ TEXT
393
+ end
394
+
375
395
  def prompt_data(data, language)
376
396
  # Keep arbitrary manuscript text and custom settings inside their data fence.
377
397
  fence = '`' * [3, (data.scan(/`+/).map(&:length).max || 0) + 1].max
@@ -9,7 +9,7 @@ require 'pathname'
9
9
  require 'optparse'
10
10
 
11
11
  module AsciidocPubkit
12
- VERSION = '0.8.3'
12
+ VERSION = '0.8.5'
13
13
  class Error < StandardError; end
14
14
 
15
15
  def self.hash_text(text)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoc-pubkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - CyberGarage