Skip to content

Adopt private batch analysis with deterministic manifests and failure-safe reports #290

Closed

Description

@andy-zen-dev

Deferred Workbench debt

The canonical README and historical #274 record identify batch Workbench prototypes as unpublished. The accepted #273/#276 path processes one UTF-8 manuscript, and #279/#288 compares two existing reports; neither is a batch runner. Open/closed issue searches found no dedicated batch-delivery issue. Original prototype bytes were not recovered here, so previous local success claims require revalidation.

User outcome

Analyze an explicitly selected set of local manuscripts through the existing canonical Reader and inspect one deterministic, source-free index of reports and failures. No implicit directory crawling, manuscript upload or public corpus enrollment.

Acceptance

  • Reuse build_local_analysis() and its versioned metric/source/dictionary contract; no shadow analyzer or second long-lived control plane.
  • Accept an explicit bounded manifest or file list. UTF-8 first; EPUB may follow Adopt the deferred private EPUB ingestion prototype into the canonical Reader #289 and must not block the independent batch slice.
  • Bounded total input and file count; regular-file/symlink protections; deterministic ordering and collision-resistant report identities. Never follow links or traverse unspecified trees.
  • Preserve existing destinations. Invalid input must not destroy another valid report or the previous complete index. Specify exit codes and partial-failure semantics; interrupted runs are safely retryable without duplicate outputs.
  • Index/export contains declared source hashes, statuses and relative output routes, not manuscript text or undisclosed private absolute paths. Unknown and failed items never acquire zero metrics or PASS.
  • Actual installed-wheel end-to-end tests for two distinct texts, duplicate input, conflicting names, malformed/special/oversized input, existing output and interrupted/repeated runs. Check every generated report/index link.
  • Document CLI usage, privacy, storage and reprensentativeness limitations; do not publish the registry, activate Pages or claim corpus/parity completion. M2 remains 0/5.

First inspect/deduplicate surviving prototype material against current code. Keep priority in the existing project queue; this issue is a retained future product scope, not an authorization to fork another worker.

Recovered local implementation — 2026-10-23

A cumulative local-only Reader 0.4 patch exists under the handoff filename Scriptorium_290_Manifest_DirFD_Scope_Hardening_20261023.zip (SHA-256 139110dddc4e0c3b85ecb4774ff0e70a5afa2a9d6d67263fd6fb9c1a8e6ba04b). This is a handoff, not a GitHub commit or release.

  • Candidate includes deterministic explicit-manifest batch CLI, per-work HTML/JSON, human-readable HTML/JSON/CSV index, duplicate-input reuse, create-only crash-safe publication, and dir_fd/no-follow protections for output and manifest input-directory substitution. It preserves Reader 0.4's compare command.
  • Local filesystem regressions: 49/49 PASS, but these run with a stub analyzer. The real installed-wheel smoke is included as source and NOT_RUN; full repository CI and real browser route acceptance for this candidate are NOT_RUN.
  • Integration gate: target earlier Reader PR Reader 0.4: private comparison, trustworthy evidence and installed-package delivery #288 head 8f4194fdf75be9b1f5de276b6400feff508cd9f9; validate head/file blob hashes and any newer claims before adopting. No Adopt private batch analysis with deterministic manifests and failure-safe reports #290 branch/PR or partial remote code write is implied by this note.
  • Next executable acceptance: real build_local_analysis() on two distinct manuscripts + duplicate + invalid UTF-8, installed wheel HTML/JSON/CSV, fail-closed paths, full CI, then focused PR. Source/private text and scientific M2 gates remain unchanged (M2=0/5).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions