# Candidate 1.5.6: prospective paired native PDF comparison This is study v24. The method remains a draft until exact-source independent review, actual native neutral validation on the final repaired input source, source-bound public-helper/coordinator integration, completed v23 operational closure/preservation and root authorization. No v24 corpus has been authored or opened by this method author. Prior originals, scores, decisions and publications are preserved. V23 remains incomplete and ungraded; this method cannot change prior eligibility. ## Workflows and machine Use the recorded Apple M4 Pro with 24 GiB and macOS 26.3/build 25D125. Record hardware, AC power, power mode, disk, memory pressure, swap and thermal state before and after each session. The Mac is shared. Run one comparison language model at a time; preserve unrelated jobs and stop only task-owned processes. Both workflows use the exact Qwen3-4B-Q4_K_M GGUF, 2,497,280,256 bytes, SHA256 `7485fe6f11af29433bc51cab58009521f205840f5b4ae3a32fa7f92e8534fdf5`. Kingy candidate 1.5.6 uses `workflow-v15-r7/runner.py`, SHA256 `3bcc03ffef818fa7fb6062ae17f20aa09d2fcc25fc9d57572c77ec35bc1ef02b`, llama.cpp b11429 and alias `kingy-qwen3-4b`. Native LM Studio uses its official GUI and `qwen3-4b`. Pin the actual app/build, LM Studio2.56 runtime artifact, embedding artifact and stock RAG configuration in neutral preflight. Disclose engine, retrieval and preparation differences as differences between complete configured workflows. Generation seed 271828, temperature zero, reasoning off, context 8192, ten CPU threads, one parallel sequence. Native stock RAG uses eight chunks and affinity threshold 0.5. Record the actual effective load, prediction, plugins, plugin configuration and system prompt during neutral generation before method freeze. Check those groups on every measured native generation. Declared settings alone do not pass. The native factual user template and format-only `native_capture.py` are byte-identical to v23. Kingy uses its reviewed source-selection and sufficiency code. Neither arm receives grading references during measurement. Every native question is the first message of a fresh native CID with the exact five PDF bytes once each. Preserve raw original versions, processed prompts, emitted citation ordinals, source mappings, final events, additional outputs and first capture flags. Stock source cards alone earn no emitted-citation credit. ## Fresh corpus and order Only after final method freeze may a separate author, starting without consumed questions or future-outcome access, create five distinct English text-bearing synthetic PDFs: six pages each, 30 pages total. Keep the vendor five-file cap. The pack contains 40 unique questions, 30 answerable and 10 entirely unanswerable, with one or two explicitly named fields. Include current versus archived rules, conditions/time anchors, multiple obligations, concise values, cross-page evidence and documentary absence. Exclude outside knowledge, calculation and facts from consumed studies. Before corpus freeze, a separate reviewer checks every question and reference against exact PDF spans, atomic obligations, scope, predeclared aliases/compositions and absence for all ten unanswerable items. Corpus facts, question wording, expected answers, aliases and compositions stay fixed after that review. Reviews are AI-assisted on this Mac, without human or separate-hardware validation. Root and engineering authors keep the reference values closed until all measurement and cleanup have stopped. The schedule builder verifies the method before opening any bank path. It retains ID/split metadata, hashes references without parsing them, and freezes three permutations with seeds 271829, 271830 and 271831. Pin all method/native/source bytes, corpus, author/reviewer receipts, actual blank native template/configuration and schedule before the first held-out request. Use `input-pack` as the immutable execution copy of `workflow/taskpack-v24`; question-only and reference files remain separate. Order is **A1, B1, B2, A2, A3, B3**. A is Kingy; B is native LM Studio. Session receipts enforce that order. Each arm has three fresh model sessions of 40 paired questions in the same within-pair permutation. Each planned question gets one original attempt. Preserve all failed, interrupted, timed-out and unused IDs; there are no replacement sessions or individual retries. Record cold model startup, PDF import/indexing, neutral warmup, preparation and query latency separately. Each session has one document-free warmup, `Reply only READY.`, temperature zero, seed 271828, top-p 1, reasoning off and cache disabled where supported. Record actual cache behavior; do not claim OS caches were flushed. Capture full actual host conditions before and after native sessions, retain embedding, restore the prior native runtime and stop only owned logger/helpers/Qwen. ## Complete native preparation before exposure The pinned `PROSPECTIVE-SEND-PLAN.md` under `evidence/comparison-v24-control-preparation` forms part of this protocol. Its complete declared routes, uncertainty accounting, stable-CID reconciliation, loaded-picker handling, no-Rename rule, UUID diagnostics and same-CID pre-Send persistence checks apply prospectively. All final native sources and that document are hashed in the method freeze. Ten native source files remain byte-identical to v23; the input persistence helper, its fixture tests and native plan change prospectively. Bind unchanged Send syntax/startup/import lineage and require actual new native neutral validation of the final changed helper before method freeze. Source-bound public-helper and coordinator receipts separately validate temporal persistence and failure routing in temporary synthetic files with a fake app. These fixtures are not native measurements. Independent approval and method freeze must pin both receipts. Before new corpus authorship, actual neutral preflight must exercise each retained route on previous synthetic five-PDF bytes with a format-valid neutral diagnostic unrelated to any old or future study item. The final logger-validation probe uses the frozen factual-format template with a new documentary-absence question; it opens no grading key and earns no answer-quality credit. Preserve failed probes and source revisions. An unvalidated route is removed or repaired and independently validated before freeze. Final exact sources must pass both actual Send AppleScript syntax compilation and native neutral validation. Bind the successful final-source syntax receipt before freeze; a parser-rejected source cannot be frozen. Compiling a helper or replaying a mock does not establish actual native readiness. Canonical setup also uses frozen `native-canonical.mjs` and stock Attach/file chooser/remove controls before the complete freeze. File paths/names/hashes are observed input parameters. The helper verifies zero attachments before importing the exact five PDFs, blank original state, stock five-file limits and nine preserved configuration groups. Its final sources must be independently reviewed and actually validated by remove-to-zero and reimport of previous synthetic PDFs before fresh corpus authorship. No future question or reference enters template setup. Allowed stock controls include owned Raise/foreground acknowledgment, one owned Escape, observed row AXPress or bounds-derived neutral row selection and canonical row/More popup preparation through external `native-action.py`. Duplicate uses only the uniquely observed app-scoped CUA stock menu item, once per deliberate preparation. AppleScript-only Duplicate branches are disabled; their development probes remain historical evidence. The external helper creates unique private diagnostics and opens both log streams before AppleScript starts. No CUA child process, guessed control, inline replacement script, Duplicate/Send coordinates or native-file edits are allowed. Optional Rename is absent. Final native validation and each native session load the reviewed controls and all static dependencies in a fresh CUA runtime. A cache-busting top-level import alone is insufficient. Require an actual source-cache proof identifying the complete-freeze hash, final native manifest, all native source hashes, the loaded preparation/original/canonical entries and zero measured Send calls in that new runtime. Retain each restart proof; the new coordinator re-verifies disk sources but never treats disk hashing alone as executed-source proof. Before freeze, bind the actual successful neutral startup and any startup-correction receipts. The collection startup contract must identify the actual official CLI/SDK artifacts and exact supported load, document-free warmup and logger arguments. The failed `--no-engine-config-file` attempt was rejected before Qwen load and is historical only; it is not an active collection argument. Every custom active bootstrap/logger helper must appear in the reviewed frozen source map. Mark neutral-only path probes/bootstrap diagnostics explicitly as not active. No undeclared helper or alternate startup route may be introduced after the bank. Independent approval must attest `nativeStartupAndLoggerContractVerified:true` from these actual pinned inputs. The only measured Send route is external `native-send.py` executing the pinned `native-send.applescript` once through System Events `AXPress`. Legacy reference `clone` and `submit` are dormant and forbidden; the dependency/route manifest says so. Stock preparation, canonical import, no-Rename, exact five files and the other declared guards remain unchanged. Do not use pointer Send, keyboard Send, inline substitute scripts or a different route. `native-study.mjs` first returns `needsPreparation`. After stock blank-CID preparation, `prepareOriginalOnce` reserves a per-position input intent and calls the input-only helper once. It checks exact prompt persistence in that CID and writes `dispatch-prepared`; it does not Send. The coordinator then returns `needsDispatch` with the exact external helper inputs. The input helper observes the captured same-CID draft for the existing five seconds after its one input call, with 100ms polls. Syntax-invalid partial writes retain private raw bytes/status/error/hash and may settle within that original boundary. No input or Send repeats. A final parsed draft requires exact prompt, zero messages, unchanged nine configuration groups and attached-file identities. A known wrong CID/name, nonempty messages or changed settings/attachments rejects immediately; later valid state cannot salvage it. Permanent invalid JSON or wrong prompt becomes input-uncertain and stays capture-only. Private per-read/final-summary artifacts are excluded from public projection. The operator invokes the pinned helper outside CUA. An exclusive dispatch journal, original 90-second anchor, exact same-CID snapshot, prompt, nine settings and five backing hashes are retained before the one possible action. Native acceptance requires the first user event in that CID; a returned AXPress does not establish acceptance. Before reserving a journal, the helper performs the existing owned Raise and exact Send guards in check-only mode: no Chat input or Send is allowed. A returned readiness rejection may be checked again only after an actual readiness cause is diagnosed and corrected through declared controls, with affirmative zero Send, no dispatch journal and unchanged input in that same prepared CID. Each call keeps its frozen timeout; do not use blind loops or an arbitrary lifetime pass limit. Preserve every readiness receipt, count and recorded time, including failures. Unknown dispatch effects or any journal block another attempt. The audit binds the successful readiness receipt hash across intent and acceptance, its source and both phase outputs, and the actual ownedRaise proof. Every coordinator call reloads pending/journal state. A reserved journal, uncertain possible Send, missing dispatch output or restart never permits another Send or input preparation. Readiness-only rejection before any journal is distinct from an attempted original. Lost boundary output remains unknown/max1 unless the helper's explicit pre-action guard and normal error exit affirm zero. Both outcomes still forbid another Send. Terminal receipts, exact source/configuration/prompt/CID provenance and actual first-user acceptance are required before a native original can qualify. Incomplete input preparation, unresolved readiness, missing reserved-journal/terminal evidence, unaccepted or uncertain dispatch halts further questions; preserve that CID and all original receipts. Read-only reconciliation cannot create a new native event or reset the clock. ## Timing, completion and interruptions A complete usable answer finishes within 90 seconds. Kingy timing surrounds the full `runner.ask` return, including field selection, sufficiency and source resolution. Native timing runs from actual app submission through its unique documented final-answer logger event, including preprocessing, retrieval, embedding and inference. Title generation, later UI updates and export are separate. Missing or incomparable timings stay unavailable. Partial outputs and all model requests remain visible. The unchanged native `completed` helper can observe a terminal backend generation while `uiComplete` is false. Retain that exact raw flag and first snapshot. Backend completion requires the original first prompt, exact input/configuration, original EOS generation and one matching final-answer event within 90 seconds. After this proof, a declared owned same-CID neutral row refresh may record later Done/no-Stop separately. Use the frozen `native_terminal.py` read-only original proof before the `--completed-target` stock row-selection guard; `recordUiObservation(proofReceipt)` stores the later metadata separately and performs no action or inference. Never rewrite the earlier flag or use a later UI record to grant answer-quality credit. The 90-second deadline is unchanged even when the helper's settled/title time differs. Capture retains each raw AX observation privately with its source hash and observation time; a UI title alone does not prove CID identity. A restarted coordinator may first read an already completed original from the same CID even after the watchdog elapsed; it does not change the dispatch anchor, replace a snapshot or grant backend timing/EOS credit. Record observed capture wall time separately. Late observation does not establish UI rendering within 90 seconds; no rendering-latency claim or invented interval follows. Record both the immutable pre-dispatch watchdog and the native user-to-final event interval. The uniquely matched final answer must occur within 90 seconds of both boundaries; native acceptance or restart never resets the original anchor. Pre-reservation readiness is preparation overhead, recorded separately and excluded from the query interval; an unmeasured readiness duration stays unknown. The watchdog starts once at the persisted intent, includes the subsequent dispatch guard overhead, and is conservative. Resume an already dispatched original by capturing its same CID. Missing final-event/EOS/settings proof, uncertain Send or an incomplete deadline prevents an original from silently passing. Preserve partial sessions and unused IDs, retain and hash the stopped evidence, publish the incomplete limitation without grading or comparative quality claims, and hold launch. A failed/incomplete study cannot open references through the complete-study grading path. Transport failure does not establish competitor product failure. After any corpus consumption, change no code, prompt, settings, source rules, native transport/preparation, scorer, aliases, pass rules, schedule or deadline. If an undeclared control or new helper is needed, preserve results and hold this study. Implement and independently validate repairs only in a later prospective protocol with a new unseen corpus. ## Scoring and launch Common scorer 1.5.0 and `paired_analysis.py` remain byte-identical to v23. Do not add new grading passes or aliases. Field/question context may identify the subject; it cannot supply an omitted value, unit, condition, time anchor or second obligation. Require every requested atomic fact with linked support. Complete concise values can pass in unambiguous field context. Unregistered semantic paraphrases remain unresolved. Quotations cannot supply facts omitted from answers. Cross-page support preserves document identity, consecutive original pages and word/number boundaries. Report fact correctness, complete supported answers, emitted-citation precision, explicit page formatting and unknown handling separately. Every planned ID stays in denominators. Each Kingy repetition independently needs conservative lower bounds of 90% complete supported answers, 95% emitted-citation precision and 90% clean abstention. Require all 240 originals complete with verified integrity, an independent final source/semantic audit without demonstrated score-validity defects, a fresh package extraction with all four public selftests, local authentication, denied egress, public privacy checks and anonymous artifact/app readback. Any failed gate means publish retained results and hold 1.5; active workflow 1.4 remains. Forty questions repeated three times remain 40 unique questions. Paired effects use whole question clusters, the unchanged 10,000-draw procedure and predeclared unresolved bounds. Its sensitivity envelope describes this fixed synthetic corpus, without a population confidence claim, p-value or universal winner. No general speed, comparative privacy, cheapest-market, other-hardware or upgrade claim follows from this study. Native egress enforcement remains unverified. Before any grading-key parsing, require all six complete40-original sessions, actual stopped-root/cleanup receipts, and an all 240/allPass measurement seal. No A1 screening or partial quality read is adopted. Final release gates still require every actual numeric, audit, fresh package, authentication, denied-egress, privacy and public-readback check.