Direct answer
A .epub filename or an already-open page does not establish offline availability. EPUB 3.3 defines a publication container and structured content, but publications may reference external resources. After a fresh reader start with networking disabled, test the exact file and required resources. Android's Storage Access Framework can grant access to a user-selected document URI; that does not prove the provider cached all bytes or that the reader keeps a local copy. Treat word lookup and sentence translation as separate tasks. A dictionary returns an entry or sense for a selected word; translation transforms a span in context. Freeze a fixture with punctuation, inflection, neighboring text, and a sentence containing a name or negation. Record the exact selection and request, then compare each result with its own reference before saving a note. Returning to a passage is another contract. EPUB Canonical Fragment Identifiers locate content within an EPUB publication, but do not guarantee reader support, selection restoration, or stability after arbitrary edits. For a pinned EPUB identity and reader version, create an annotation, close and reopen, change layout, then return to the span. Record whether the reader uses a page, offset, CFI, or proprietary anchor; mark unsupported or approximate states instead of claiming portability. Keep data handling separate. ARCH-01 defines on-device AI as endpoint inference; PRIVACY-01 says local inference does not prove that an app makes no other network requests. Distinguish the book, extracted selection, dictionary entry, translation, and annotation. Check storage, export, backup, and deletion for each. Do not send an entire book for a one-sentence task or call the whole workflow private because one stage ran locally. Limit the report to the EPUB identity, reader and OS versions, selected task, URI/provider path, network condition, locator, and observed retention or deletion. Start with a public or synthetic book. A passing run applies to that setup, not every EPUB, reader, language, engine, annotation format, or future edition. This is a verification method, not a Cove feature claim.
A reader wants to save a translated passage
A reader opens a selected EPUB on an Android phone before a flight. They want to look up one inflected word, translate a full sentence, and reopen an annotation at the same passage after changing text size. The book may come from a document provider, and the reader and language resources have not been tested offline.
Decision
Test the selected EPUB and exact reader as a small, reversible workflow. Keep word lookup, contextual translation, locator restoration, and annotation retention as separate checks; prepare only resources the actual reader documents and offers.
Expected outcome
The reader learns which stages work for this book and device, what remains unavailable, and whether the note returns as expected. The result does not imply another EPUB or app behaves the same way.
Evidence to collect
The claim becomes reviewable only when the following evidence is attached to the same artifact and test run:
- EPUB or document fixtures
- Lookup and translation task contracts
- Offline, selection, and deletion outcomes
Task quality needs a versioned corpus and acceptance rules. Fluent sample output is not an accuracy result.
Implementation workflow
- Identify the publication and access route. Record EPUB identity, reader and Android versions, and whether access uses a Storage Access Framework provider or local copy. Fresh-start offline and confirm exact bytes and resources are present; a title or rendered chapter proves neither.
- Prepare a safe, known selection. Use a public-domain or synthetic chapter with an inflected word, context, punctuation, name, and negated sentence. Write expected selection and meaning first. Avoid private, account-specific, or copyrighted samples that should not enter logs.
- Test word lookup independently. Select only the target word; record whether the reader sends its surface form, normalized form, or context. Check the entry against the sentence and mark missing or ambiguous senses unresolved. An entry does not prove sentence translation.
- Test contextual sentence translation separately. Select a full sentence as a separate task, preserve punctuation and context by a fixed rule, and record the input. Prepare required resources, disconnect, reopen, and test a cache hit separately from a new uncached selection. Compare names, negation, tense, and omissions with a reviewed reference; a cache hit alone cannot establish fresh local translation.
- Exercise the locator through layout changes. Create an annotation, close and reopen the book, change font or layout, then follow the note. Record the actual locator: CFI, quote, offset, page, or proprietary scheme. Verify the same EPUB revision; a stale or approximate position is not portability evidence.
- Inventory retention, export, and deletion. Inventory whether the app stores selected text, lookup, translation, annotation, or a full copy, and where. With a disposable fixture, check export and deletion. Remove or revoke the URI if relevant and record what remains; the inference route does not determine backup behavior.
Keep each transition observable. A failure should identify the stage, artifact, runtime, and recovery action without logging private user content.
Acceptance criteria
- The exact EPUB and provider path are identified; with networking disabled, record cache-hit behavior separately and test a new uncached translation selection. Existing local dictionary entries remain valid lookup results.
- Word lookup and sentence translation use separately recorded selections and acceptance checks, including an inflection, punctuation, names, and negation where applicable.
- A note is reopened after a layout change and checked against the same EPUB identity; its locator type and any failure or approximation are recorded.
- The report distinguishes source book, selection, generated result, annotation, export, and deletion behavior without claiming an unverified reader capability or whole-app privacy.
Decision table
| Dimension | Choice or evidence | How to interpret it |
|---|---|---|
| Dictionary lookup | One selected word plus enough local context to disambiguate its sense | Checks entry coverage and inflection; it is not sentence translation or proof of contextual fluency. |
| Sentence translation | A bounded sentence selection with a reviewed reference | Checks meaning in context; it does not establish dictionary coverage for isolated words. |
| Passage locator | Reader-reported CFI, quote, offset, or page locator | Can support return to a span in the tested publication; must be rechecked after reflow and content changes. |
| Offline availability | Fresh source open, then separately record cache hits and an uncached translation selection | Tests the selected file and required resource path; cached content may be a valid feature but alone does not prove new local translation. |
Failure patterns to prevent
- Uploading whole books by default
- Calling dictionary lookup sentence translation
Also prevent silent fallback, unpinned artifacts, missing cancellation, and conclusions that combine unlike configurations. Store unsuccessful runs alongside successful ones.
Minimum reproducibility record
| Layer | Record |
|---|---|
| Device | Manufacturer, model, chipset, RAM class, operating-system build |
| Software | Application version and git commit |
| Model | Family, variant, revision, format, file length, hash, quantization |
| Runtime | Name, revision, requested backend, observed backend evidence |
| Workload | Fixture revision, input hash, prompt hash, output policy |
| Outcome | Completed, failed, cancelled, fallback, and privacy-safe diagnostics |
Release checklist
- ☐ The primary query is answered without an unsupported number.
- ☐ Every artifact and runtime is pinned.
- ☐ The representative task and failure policy are explicit.
- ☐ Lifecycle, cancellation, cleanup, and fallback are tested.
- ☐ User-content and network boundaries are documented.
- ☐ Result wording applies only to the recorded configuration.
- ☐ The page links to raw method or evidence when results are added.
Sources and related evidence
- On-device AI architecture overview
- W3C EPUB 3.3 Recommendation: publication container, resources, and remote-resource rules
- EPUB Canonical Fragment Identifiers 1.1: locations within an EPUB publication
- Android Developers: access documents and persist URI permissions
Chinese deployment and troubleshooting content is organized in the .奇连 AI 端侧专题.
Frequently asked questions
Does an EPUB file always work offline once it opens?
No. EPUB 3.3 allows publication resources to be located outside the container. Test the exact book and resources after a fresh reader start without networking. A cached translation may be a valid feature, but record cache hits separately and use a new uncached selection to test fresh local translation.
Is looking up one word the same as translating a sentence?
No. A dictionary lookup asks for an entry or sense, often for a selected headword; sentence translation evaluates meaning across a span and context. Record them as different tasks with separate expected results.
Will a CFI keep an annotation in the same place after any book edit?
Do not assume so. CFI identifies a location within an EPUB publication, but support and restoration are reader-specific and content changes can affect locations. Reopen the note after reflow and against the exact publication revision.
Does local inference mean the whole reading workflow has no network activity?
No. ARCH-01 describes where inference runs, while PRIVACY-01 warns that an app may make other requests. Check the file provider, reader, language resources, account or sync features, export, and observed network behavior separately.