diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 43feb340..1f0cf21a 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -43,11 +43,17 @@ {"_type":"issue","id":"pdf-toolkit-mcp-9zd","title":"Detect and refuse to stamp over existing crypto signatures","description":"apply_signature currently silently invalidates any existing cryptographic signature on the input PDF (pdf-lib round-trip breaks them). User thinks they added a signature; they actually destroyed a legally-binding one.","design":"Before apply_signature touches the PDF, scan for /Sig entries in AcroForm. If present, throw a clear error unless allow_resign:true is passed. Prefer pdf-lib's form.getFields() filtering for SignatureField types. Document in tool description.","acceptance_criteria":"- [ ] hasExistingSignature(pdfDoc) helper in helpers.js\\n- [ ] apply_signature refuses by default if signature fields exist\\n- [ ] allow_resign:true opt-in bypasses the check\\n- [ ] Error message tells user what was detected and why\\n- [ ] Test with a digitally-signed fixture PDF","status":"closed","priority":0,"issue_type":"bug","owner":"matsilverstein@gmail.com","created_at":"2026-04-17T05:04:13Z","created_by":"silverstein","updated_at":"2026-04-17T05:25:42Z","closed_at":"2026-04-17T05:25:42Z","close_reason":"Added detectExistingSignatures(pdfDoc) helper that scans form fields for PDFSignature-type entries. apply_signature now refuses when present, unless allow_resign=true opt-in. 3 tests: unsigned PDF returns false, mock signed PDF returns true with field names, missing-form case handled gracefully.","dependency_count":0,"dependent_count":2,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-6u2","title":"Fix redirect-based SSRF in fetch_pdf_from_url","description":"fetch currently uses redirect:'follow' which bypasses isPrivateHost check — a public URL can 302 to 169.254.169.254 (AWS metadata) and we follow it. Real vulnerability.","design":"Switch to manual redirect following. On each hop: parse Location header, re-validate isPrivateHost unless allow_private_hosts=true, cap at 5 hops, preserve existing UX for public-CDN redirects. Add test: fake fetch that returns 302→private-host, assert rejection.","acceptance_criteria":"- [ ] downloadPdfFromUrl follows redirects manually\\n- [ ] isPrivateHost check runs on every hop\\n- [ ] Redirect loop cap at 5 hops\\n- [ ] Test: 302 to 169.254.169.254 is rejected\\n- [ ] Test: 302 to another public host still succeeds\\n- [ ] All existing fetch tests still pass","status":"closed","priority":0,"issue_type":"bug","owner":"matsilverstein@gmail.com","created_at":"2026-04-17T05:03:58Z","created_by":"silverstein","updated_at":"2026-04-17T05:25:31Z","closed_at":"2026-04-17T05:25:31Z","close_reason":"Manual redirect following with per-hop isPrivateHost validation. Added 7 tests covering: reject redirect to 169.254.169.254, reject redirect to localhost, reject redirect to RFC1918, allow public-to-public redirect, reject redirect loops \u003e maxRedirects, resolve relative Location headers, never write a file on rejected redirect. Return payload now includes finalUrl + redirectHops. Default maxRedirects=5.","dependency_count":0,"dependent_count":2,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-ok0","title":"Ship v0.8.0: fetch_pdf_from_url + local signature tools","description":"First release to add URL fetch and signature capabilities. Closes the Lumin-blocking demo gap (local network fetch where Claude's WebFetch fails) and adds tier-1 local signature stamping with human-intent enforcement. Agreed with Max Ferguson on 2026-04-09.","design":"Two-tier signature model: tier 1 (this release) = visible stamp via pdf-lib + audit trail in Keywords metadata, NOT legally-binding. Tier 2 (future v0.9.0) = Lumin API handoff for cryptographic signing. Intent enforcement via user_intent_statement + user_confirmed_at on apply_signature only; other signature tools are agent-safe.","acceptance_criteria":"- [ ] Adversarial review blocker fixes landed\\n- [ ] All tests passing (target: 110+)\\n- [ ] mcpb pack produces working bundle\\n- [ ] Full Sandy Springs demo works end-to-end in Claude Desktop\\n- [ ] Signed PDF renders correctly in Preview, Adobe, Chrome\\n- [ ] README updated with new tools and demo flow\\n- [ ] Max reviews legal framing of apply_signature tool description","status":"open","priority":0,"issue_type":"epic","owner":"matsilverstein@gmail.com","created_at":"2026-04-17T05:03:32Z","created_by":"silverstein","updated_at":"2026-04-17T05:03:32Z","dependencies":[{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-0ig","type":"discovered-from","created_at":"2026-04-16T22:13:04Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-0t0","type":"parent-child","created_at":"2026-04-16T22:09:13Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-2p0","type":"parent-child","created_at":"2026-04-16T22:08:39Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-3d9","type":"parent-child","created_at":"2026-04-17T07:02:52Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-48a","type":"parent-child","created_at":"2026-04-16T22:09:35Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-48j","type":"discovered-from","created_at":"2026-04-16T22:12:42Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-4ff","type":"parent-child","created_at":"2026-04-16T22:08:50Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-4hu","type":"parent-child","created_at":"2026-04-16T22:09:24Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-5ei","type":"parent-child","created_at":"2026-04-17T07:01:57Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-6u2","type":"parent-child","created_at":"2026-04-16T22:08:17Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-75x","type":"parent-child","created_at":"2026-04-17T07:02:30Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-8ad","type":"parent-child","created_at":"2026-04-17T07:02:08Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-9zd","type":"parent-child","created_at":"2026-04-16T22:08:28Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-a5t","type":"parent-child","created_at":"2026-04-17T07:03:14Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-c5t","type":"discovered-from","created_at":"2026-04-16T22:24:15Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-d10","type":"parent-child","created_at":"2026-04-17T07:03:03Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-d1y","type":"discovered-from","created_at":"2026-04-16T22:12:08Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-dq4","type":"parent-child","created_at":"2026-04-17T07:03:25Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-dw6","type":"parent-child","created_at":"2026-04-16T22:09:46Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-eaq","type":"discovered-from","created_at":"2026-04-16T22:12:31Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-gz3","type":"discovered-from","created_at":"2026-04-16T22:12:53Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-igr","type":"discovered-from","created_at":"2026-04-16T22:13:15Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-ji0","type":"discovered-from","created_at":"2026-04-16T22:11:57Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-jvy","type":"parent-child","created_at":"2026-04-16T22:09:02Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-mok","type":"parent-child","created_at":"2026-04-17T07:02:19Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-rkg","type":"discovered-from","created_at":"2026-04-16T22:12:19Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-ukx","type":"parent-child","created_at":"2026-04-17T07:01:46Z","created_by":"mat","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-ok0","depends_on_id":"pdf-toolkit-mcp-zeg","type":"parent-child","created_at":"2026-04-17T07:02:41Z","created_by":"mat","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-mbms","title":"Prepare five-document Firecrawl and Databricks comparison pilot","description":"Discovered after the V31 local verified-extraction confirmation. Freeze a rights-admitted five-document subset spanning short, medium, long, table, citation, recovery, and stress cases; bind exact source/schema/truth/citation identities; define fair Firecrawl and Databricks request adapters, full-denominator scoring, raw evidence retention, cost/latency accounting, and a no-public-claim decision gate. Preparation is zero-provider and zero-spend; hosted execution remains blocked until appropriate accounts/credentials and exact budget authority exist.","acceptance_criteria":"Exact five-document manifest and totals verify deterministically; common accuracy and separate evidence/replay score tracks are frozen; omissions/failures remain in denominator; provider versions/requests/responses/usage/cost are retained; PARA is synced to Mac; no hosted call, spend, or comparative public claim occurs in preparation.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-03T18:37:03Z","created_by":"silverstein","updated_at":"2026-09-03T18:58:45Z","started_at":"2026-09-03T18:38:31Z","closed_at":"2026-09-03T18:58:45Z","close_reason":"Prepared sealed five-document competitor pilot: package seal 1b393c5a; manifest 4a281531; 308 pages; VM and Mac verification passed; four hostiles rejected; exact five PDF hashes verified; provider calls and spend remain blocked on account and budget access.","dependencies":[{"issue_id":"pdf-toolkit-mcp-mbms","depends_on_id":"pdf-toolkit-mcp-3wir","type":"discovered-from","created_at":"2026-09-03T18:37:03Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-oydq","title":"Reconcile disabled Lumin Sign mapper onto v0.13.0","description":"Rebase the reviewed disabled, no-network Lumin Sign v1 request mapper onto current public v0.13.0, refresh only against current official public API bytes, preserve source/share parity and strict fail-closed validation, and qualify an internal preparation candidate. Do not register a transport tool, read credentials, call Lumin, handle customer documents, create signing agreements, merge, release, or make provider-readiness claims.","acceptance_criteria":"Fresh isolated worktree from current origin/master; current official reference identity recorded; source/share mapper and verifier parity; hostile mapper/OpenAPI tests pass; package inventories include internal files without exposing a new MCP tool; exact-SHA independent review and PARA evidence; branch pushed as a review milestone. Authenticated transport, credentials, provider calls, real signing, merge, release and public claims remain blocked on pdf-toolkit-mcp-gz3.3.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-03T03:50:21Z","created_by":"silverstein","updated_at":"2026-09-03T04:23:21Z","started_at":"2026-09-03T03:52:04Z","closed_at":"2026-09-03T04:23:21Z","close_reason":"Reconciled disabled no-network Lumin Sign v1 mapper onto v0.13.0 at dd712ffa; official OpenAPI bytes unchanged; Mac full gate and independent exact-SHA review passed; branch pushed and PR #181 opened. Live provider integration remains blocked on pdf-toolkit-mcp-gz3.3.","labels":["lumin","no-network","provider-mapper","signing"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-oydq","depends_on_id":"pdf-toolkit-mcp-gz3.3","type":"discovered-from","created_at":"2026-09-03T03:50:20Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-r9pp","title":"Authorize and publish exact v0.13.0 release","description":"Protected publication decision for landed master ed7c93637bcbef1964dacb46d89446c771f2f81f. If authorized, create the v0.13.0 tag and GitHub release from that exact commit using only the privately staged, hash-verified MCPB and share ZIP, then redownload, hash, smoke, update PARA, and separately decide any Lumin/Scott communication. This task must preserve the no-public-benchmark and no-provider-execution boundaries.","acceptance_criteria":"Human explicitly authorizes public release; target commit remains ed7c93637bcbef1964dacb46d89446c771f2f81f; exact release notes and artifact hashes are used; public assets are independently redownloaded and verified; PARA and Beads record the result. No Lumin/customer send, real signing, provider action, or benchmark comparison is inferred from release authority.","status":"closed","priority":1,"issue_type":"decision","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T20:52:55Z","created_by":"silverstein","updated_at":"2026-09-03T00:24:09Z","closed_at":"2026-09-03T00:24:09Z","close_reason":"Published v0.13.0 from exact commit ed7c93637bcbef1964dacb46d89446c771f2f81f at https://github.com/Open-Document-Alliance/PDF-Tools/releases/tag/v0.13.0. Public redownloads matched MCPB SHA-256 681e8ffd45fc14763bec8a39c7b886cca6d2068b15160b3ce2b92d3469425993 and ZIP SHA-256 db60bb42ccafee32cf14e8c7e3b931f58123df3e49804809a4ea3a409ac1fbe3; exact landed Mac worktree passed packed public-asset smoke with 51 tools/14 prompts and native render/mutation/accessibility/compare/extraction lifecycle. No Lumin/customer send, provider/signing action, or public benchmark claim.","labels":["human-gate","release","v0.13.0"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-r9pp","depends_on_id":"pdf-toolkit-mcp-dg92","type":"discovered-from","created_at":"2026-09-02T20:52:55Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-crzq","title":"Refresh fast-uri and qs production locks after audit advisories","description":"Final v0.13.0 release-candidate qualification on exact Mac Node 22.23.2 passed the complete test/share/MCPB/smoke gates, then npm audit --omit=dev found production advisories against locked fast-uri 3.1.5 and qs 6.15.3. Update only the root/share locks to patched versions allowed by existing parent ranges, re-run production audit and cross-platform release gates, and bind exact final evidence before PR #178 merge review.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T17:36:54Z","created_by":"silverstein","updated_at":"2026-09-02T18:26:37Z","started_at":"2026-09-02T17:37:11Z","closed_at":"2026-09-02T18:26:37Z","close_reason":"Closed at exact PR 178 head 5475b36 with zero production audit and cross-platform package proof.","dependencies":[{"issue_id":"pdf-toolkit-mcp-crzq","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T17:36:53Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-9p1u","title":"Use native Windows archive tool in packed MCPB smoke","description":"The exact v0.13.0 reconciliation run 33657244397 reached Windows packed smoke but Git Bash resolved bare tar to GNU tar, which interpreted the D:\\ runner path as a remote archive. Select Windows System32 tar.exe directly without shell interpolation, add a Windows-drive regression, and requalify the exact branch on Windows plus adjoining gates.","notes":"Fixed in commit 0c1181621a981d0067a449245fa306af530a9187 by selecting SystemRoot\\System32\\tar.exe directly and adding a D-drive regression. Exact descendant tip 872ab0a7cb8d3c9f215ad836900910d266ad80e4 passed Windows runtime run 33660300743: exact artifact hash, packed 51-tool/14-prompt stdio smoke, native 45 pass/1 intentional macOS-only skip, and layout probe. Windows render run 33660302897 also passed.","status":"closed","priority":1,"issue_type":"bug","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T16:58:52Z","created_by":"silverstein","updated_at":"2026-09-02T18:23:26Z","closed_at":"2026-09-02T18:23:26Z","close_reason":"Closed at exact PR #178 head 5475b36: native System32 tar selection is covered by the Windows-drive regression; exact-head Windows runtime run 33666289966 passed packed smoke, native tests, and layout diagnostics, and Windows render run 33666299559 passed.","dependencies":[{"issue_id":"pdf-toolkit-mcp-9p1u","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T16:58:51Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-5ol9","title":"Keep byte-frozen test sources LF-stable on Windows","description":"The current master Windows runtime gate converts test JavaScript fixtures to CRLF. Exact byte-bound deep-malformed contract tests then fail 20/46; the observed hash b198ea... exactly matches the CRLF form of test/helpers/deep-malformed-row-runner.js. Add a narrow .gitattributes rule that preserves LF for test JavaScript sources and verify the real Windows runtime gate.","notes":"Closed in PR #179 source commit 4c7a1321e141906cd43df9d7688ffbf8cc69d984. Untouched-master control run 33637054910 reproduced 20/46 Windows native-test failures. CRLF hash matched exactly; LF attributes plus host-native fixture paths restored 45 passed, 0 failed, 1 intentional skip in exact-commit Windows runtime run 33639173583. Local contract replay 29/29.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T13:44:05Z","created_by":"silverstein","updated_at":"2026-09-02T14:53:19Z","started_at":"2026-09-02T13:44:26Z","closed_at":"2026-09-02T14:53:19Z","close_reason":"Windows native contract gate restored and verified at exact source commit 4c7a1321e141906cd43df9d7688ffbf8cc69d984.","dependencies":[{"issue_id":"pdf-toolkit-mcp-5ol9","depends_on_id":"pdf-toolkit-mcp-e5c2","type":"discovered-from","created_at":"2026-09-02T13:44:05Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-qgty","title":"Prepare the v0.13.0 extraction and signing integration candidate","description":"Create one clean v0.13.0 integration candidate combining current public master 7a774ac (v0.12.1/folder-scope fix), reviewed extraction union f3ead1, and provider-neutral signing preparation commit 20703ba. Preserve exact reviewed source/share semantics, reconcile only genuine overlaps, align the complete version surface, run focused/adjoining and full Mac/native/package gates, adversarially review the exact SHA, update PARA, push a review branch, and open a PR. No merge to master, public release, signing action, provider call, publication, distribution, or benchmark/public claim.","acceptance_criteria":"Clean isolated integration has exact ancestry containing 7a774ac, f3ead1, and 20703ba; no reviewed commits or version/folder-scope/signing/extraction behavior are dropped; package/manifest/share versions are consistently v0.13.0; source/share and schema pins regenerate exactly; focused/adjoining tests pass on VM; Mac aggregate, native, reproducible share/MCPB and packed smoke are qualified; exact-SHA adversarial review has no unresolved P0-P2; PARA and Beads record evidence; branch is pushed and PR opened. Merge/release remain protected gates.","notes":"Exact integration commit 7b36566234def6e8fc0ab2f6bae6656e963141b7 (tree 6e90b769f08cfaf7d1d67267b1b92d4ab35a09db) contains public 7a774ac, extraction union f3ead1f and signing 20703ba; ledger tip before closure 452a7d8ce55e17f0a7f3bf49bdd148a8a6d0da7d. Provenance-based adversarial review found no unresolved P0-P3. VM: core 181/181; changed tests 650 pass/6 skip; adjacency 163 pass/31 skip. MSS MacBook exact clean dependency tree: scorer 9/9; full test:all 174 files, 2815 pass/99 intentional skip; native 62/9; share contract 51 tools/14 prompts/122 licensed SBOM components; two byte-identical MCPB builds SHA d0d833fc4279411fc43ca7e0e9fe83eebf9ba9aab3cd9d906a8b9a25d4b868c7; packed smoke pass; production npm audit zero. GitHub PR #178 opened against master and first exact-tip gate run 33630556968 passed both node 20.19 and 22.12 jobs, including tests, share contract, MCPB build, and packed smoke. Actions runtime deprecation warning tracked separately as pdf-toolkit-mcp-e5c2. PARA evidence cd0946d6a3ca7b035f6fca8d6bd8195ae3fbabd63269b78b0bec273bef343dee synchronized to VM and Mac. Merge, release, signing, publication, provider execution, and public benchmark claims remain protected gates.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T05:44:11Z","created_by":"silverstein","updated_at":"2026-09-02T12:51:57Z","started_at":"2026-09-02T05:44:30Z","closed_at":"2026-09-02T12:50:13Z","close_reason":"Completed v0.13.0 integration preparation: exact reviewed product commit, cross-host qualification, pushed review branch, PR #178, and green two-version GitHub gate. Protected merge/release/signing/publication gates remain intentionally unopened.","dependencies":[{"issue_id":"pdf-toolkit-mcp-qgty","depends_on_id":"pdf-toolkit-mcp-dg92","type":"discovered-from","created_at":"2026-09-02T05:44:10Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-99ga","title":"Add provider-neutral signing preparation receipt","description":"Implement Stage A of the reviewed Lumin provider-neutral handoff plan on current public source: extend prepare_signing_packet additively with a versioned, source/output-bound non-secret preparation_receipt, typed zones and participant-binding readiness, explicit handoff/provider-execution status, fail-closed missing-input/limitation reporting, source/share parity, schemas, hostile tests, docs, and exact evidence. No provider transport, credentials, tool registration beyond the existing local preparation tool, network calls, legal-readiness claim, external send, signing action, release, or public claim.","acceptance_criteria":"Current-origin isolated candidate preserves existing prepare_signing_packet behavior and adds a deterministic receipt binding exact source/prepared identities, output commit, page/geometry policy, per-field outcomes without values, typed stable zones, signature/XFA observations, override choices, readiness/missing-input limitations, provider_execution_status:not_requested, and canonical digest. Unknown/malformed/ambiguous/out-of-bounds/duplicate/unbound-provider-ready cases fail closed. Source/share parity, output schema, focused/adjoining tests, Mac aggregate/package gates, independent adversarial review, PARA and Beads evidence pass. No network/provider/credential/real-signature/release action.","notes":"2026-09-02 COMPLETE at exact candidate 20703ba3677d5eaa428952a473c8d010c7694038 (parent 7a774ac1978417840803ddfd022516742ca60a28, tree 766b1965c42261c834c99b44dcc6c3c7c70a82ee), branch codex/lumin-preparation-receipt-20260902. Stage A adds a strict provider-neutral signing preparation receipt with source/prepared/backup identity, output commit, CropBox/rotation-aware zones, opaque participant bindings, value-free outcomes, existing signature/XFA observations, typed gaps, provider_execution_status:not_requested, and canonical digest; source/share parity exact and legacy pending_signatures preserved. VM final bank: 9 files, 279 passed/31 skipped; syntax/diff/parity pass. Mac: targeted 37 passed/31 skipped; aggregate 2524 passed/99 skipped with one untouched Phase-1 aggregate-only failure, exact file then 21/21 isolated; native 62 passed/9 skipped; reproducible share 44 tools/14 prompts/122 SBOM components SHA 08fdd0da...; reproducible MCPB 74,344,452 bytes SHA 8e2c06c8..., packed smoke passes. PARA/evidence updated on VM and MSS MacBook at evidence-2026-09-02-provider-neutral-signing-preparation-receipt.md SHA 2f2381d4.... Exact branch was pushed and independently read back from GitHub at 20703ba; local worktree is clean and tracks origin/codex/lumin-preparation-receipt-20260902. No provider/network call, credential, real signature, merge, release, external send, or public claim.","status":"in_progress","priority":1,"issue_type":"feature","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T03:59:10Z","created_by":"silverstein","updated_at":"2026-09-02T05:35:16Z","started_at":"2026-09-02T03:59:40Z","dependencies":[{"issue_id":"pdf-toolkit-mcp-99ga","depends_on_id":"pdf-toolkit-mcp-gz3","type":"parent-child","created_at":"2026-09-02T03:59:10Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-99ga","title":"Add provider-neutral signing preparation receipt","description":"Implement Stage A of the reviewed Lumin provider-neutral handoff plan on current public source: extend prepare_signing_packet additively with a versioned, source/output-bound non-secret preparation_receipt, typed zones and participant-binding readiness, explicit handoff/provider-execution status, fail-closed missing-input/limitation reporting, source/share parity, schemas, hostile tests, docs, and exact evidence. No provider transport, credentials, tool registration beyond the existing local preparation tool, network calls, legal-readiness claim, external send, signing action, release, or public claim.","acceptance_criteria":"Current-origin isolated candidate preserves existing prepare_signing_packet behavior and adds a deterministic receipt binding exact source/prepared identities, output commit, page/geometry policy, per-field outcomes without values, typed stable zones, signature/XFA observations, override choices, readiness/missing-input limitations, provider_execution_status:not_requested, and canonical digest. Unknown/malformed/ambiguous/out-of-bounds/duplicate/unbound-provider-ready cases fail closed. Source/share parity, output schema, focused/adjoining tests, Mac aggregate/package gates, independent adversarial review, PARA and Beads evidence pass. No network/provider/credential/real-signature/release action.","notes":"2026-09-02 COMPLETE at exact candidate 20703ba3677d5eaa428952a473c8d010c7694038 (parent 7a774ac1978417840803ddfd022516742ca60a28, tree 766b1965c42261c834c99b44dcc6c3c7c70a82ee), branch codex/lumin-preparation-receipt-20260902. Stage A adds a strict provider-neutral signing preparation receipt with source/prepared/backup identity, output commit, CropBox/rotation-aware zones, opaque participant bindings, value-free outcomes, existing signature/XFA observations, typed gaps, provider_execution_status:not_requested, and canonical digest; source/share parity exact and legacy pending_signatures preserved. VM final bank: 9 files, 279 passed/31 skipped; syntax/diff/parity pass. Mac: targeted 37 passed/31 skipped; aggregate 2524 passed/99 skipped with one untouched Phase-1 aggregate-only failure, exact file then 21/21 isolated; native 62 passed/9 skipped; reproducible share 44 tools/14 prompts/122 SBOM components SHA 08fdd0da...; reproducible MCPB 74,344,452 bytes SHA 8e2c06c8..., packed smoke passes. PARA/evidence updated on VM and MSS MacBook at evidence-2026-09-02-provider-neutral-signing-preparation-receipt.md SHA 2f2381d4.... Exact branch was pushed and independently read back from GitHub at 20703ba; local worktree is clean and tracks origin/codex/lumin-preparation-receipt-20260902. No provider/network call, credential, real signature, merge, release, external send, or public claim.","status":"closed","priority":1,"issue_type":"feature","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T03:59:10Z","created_by":"silverstein","updated_at":"2026-09-02T20:52:49Z","started_at":"2026-09-02T03:59:40Z","closed_at":"2026-09-02T20:52:49Z","close_reason":"Provider-neutral signing preparation completed, reviewed, integrated into v0.13.0, and landed via PR #178 at ed7c93637bcbef1964dacb46d89446c771f2f81f. No provider execution, real signing, or public readiness claim.","dependencies":[{"issue_id":"pdf-toolkit-mcp-99ga","depends_on_id":"pdf-toolkit-mcp-gz3","type":"parent-child","created_at":"2026-09-02T03:59:10Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-xkl4","title":"Sync v0.12.1 release records to MSS MacBook PARA","description":"Copy the 2026-09-02 v0.12.1 release additions from VM ~/Documents/life into the matching MSS MacBook ~/Documents/life/projects/oda-pdf-tools-2026-2027 paths, preserving 0600 modes and verifying byte-identical SHA-256. Current Mac is reachable over Tailscale ping but its SSH service is unavailable, so the remote path cannot be updated or truthfully claimed current.","acceptance_criteria":"Mac status.md equals VM SHA 1e8c67f97c2028050c9361911b34fd48f094f9f86af2976d60e34c22ae28fe3d; worklog.md equals dbc8b97ea003488ecc752e90dab9674dd81c69a0d61babab4d8ff52215afa01b; release-line evidence equals d4c4ceae584acdaf9220fbe9c66a47b6031aa9b37d7d226717f142e756d4186b; all remain mode 0600.","notes":"2026-09-02: Tailscale ping succeeds only through DERP; TCP/22 and tailscale ssh time out. VM PARA is current and exact hashes are recorded. No claim of Mac synchronization.","status":"closed","priority":1,"issue_type":"task","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T00:10:05Z","created_by":"silverstein","updated_at":"2026-09-02T03:54:19Z","closed_at":"2026-09-02T03:54:19Z","close_reason":"Completed after MSS MacBook SSH listener recovered. Before copying, each Mac file was verified as an exact byte prefix of the newer VM source, so no independent Mac edits were overwritten. Rsync completed and remote mode/hash verification passed: status.md 0600 sha256 1e8c67f97c2028050c9361911b34fd48f094f9f86af2976d60e34c22ae28fe3d; worklog.md 0600 sha256 dbc8b97ea003488ecc752e90dab9674dd81c69a0d61babab4d8ff52215afa01b; release evidence 0600 sha256 d4c4ceae584acdaf9220fbe9c66a47b6031aa9b37d7d226717f142e756d4186b.","labels":["macbook","para","sync"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-xkl4","depends_on_id":"pdf-toolkit-mcp-010t","type":"discovered-from","created_at":"2026-09-02T00:10:05Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-8yoj","title":"Deliver v0.12.1 follow-up in Scott Lumin Slack thread","description":"Post the verified v0.12.1 release follow-up in the existing private Lumin Slack thread C0AGB0X7XN1 / 1786672084.505709, explaining that fresh Agent Plugin installs no longer require folder setup and accurately distinguishing ChatGPT Full Access from PDF Tools direct-folder scope. Exact release: https://github.com/Open-Document-Alliance/PDF-Tools/releases/tag/v0.12.1. Current Hermes bot is in the correct Business Vacation workspace but returns channel_not_found because it is not admitted to this private channel; managed connector requires reauthentication; no message was delivered.","acceptance_criteria":"A reply is visibly present in the exact existing thread and its ts/text are read back; do not duplicate-send. If access remains unavailable, retain exact access evidence and the approved message text.","notes":"2026-09-02: Release is live and publicly verified. Direct chat.postMessage using the authenticated x0 bot returned channel_not_found; Slack connector requires reauthentication; no Slack message was delivered. The approved follow-up is now preserved as an iCloud Apple Note titled 'Scott / Lumin — PDF Tools v0.12.1 follow-up' on Stonebook, including the v0.12.1 release link and scope explanation; exact Notes DB title/body readback passed. The Slack task remains blocked until the bot is admitted or the message is manually pasted.","status":"blocked","priority":1,"issue_type":"task","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T00:01:55Z","created_by":"silverstein","updated_at":"2026-09-02T00:49:21Z","labels":["external-send","lumin","slack"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-8yoj","depends_on_id":"pdf-toolkit-mcp-010t","type":"discovered-from","created_at":"2026-09-02T00:01:54Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-dg92","title":"Choose version and protected landing for the extraction union","description":"Protected product/version/landing decision for exact reviewed union f3ead1f442c8926247b7eabf841fdfb03ffb7a5e and ledger child 1f574b68ee3988129ece40fa97772f1e1d176296. Choose the appropriate feature-release version and whether/when to merge the union after the narrow v0.12.1 patch. This decision must keep technical source GO separate from signing, publication, distribution, benchmark and public claims.","acceptance_criteria":"A version and release-line order are explicitly chosen; the exact union ancestry and qualified aggregate limitation are acknowledged; any landing candidate is reverified without changing reviewed product bytes; protected merge/release authority is recorded separately. No implicit version bump, signing, publication, distribution, benchmark claim or public claim.","status":"open","priority":1,"issue_type":"decision","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T23:17:21Z","created_by":"silverstein","updated_at":"2026-09-01T23:17:21Z","labels":["human-gate","integration","release"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-dg92","depends_on_id":"pdf-toolkit-mcp-wrt7","type":"discovered-from","created_at":"2026-09-01T23:17:20Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-dg92","title":"Choose version and protected landing for the extraction union","description":"Protected product/version/landing decision for exact reviewed union f3ead1f442c8926247b7eabf841fdfb03ffb7a5e and ledger child 1f574b68ee3988129ece40fa97772f1e1d176296. Choose the appropriate feature-release version and whether/when to merge the union after the narrow v0.12.1 patch. This decision must keep technical source GO separate from signing, publication, distribution, benchmark and public claims.","acceptance_criteria":"A version and release-line order are explicitly chosen; the exact union ancestry and qualified aggregate limitation are acknowledged; any landing candidate is reverified without changing reviewed product bytes; protected merge/release authority is recorded separately. No implicit version bump, signing, publication, distribution, benchmark claim or public claim.","status":"closed","priority":1,"issue_type":"decision","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T23:17:21Z","created_by":"silverstein","updated_at":"2026-09-02T20:52:49Z","closed_at":"2026-09-02T20:52:49Z","close_reason":"Version 0.13.0 and release-line order chosen; exact reviewed union landed via PR #178 as merge ed7c93637bcbef1964dacb46d89446c771f2f81f with tree identical to reviewed ec44327. Publication remains a separate protected gate.","labels":["human-gate","integration","release"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-dg92","depends_on_id":"pdf-toolkit-mcp-wrt7","type":"discovered-from","created_at":"2026-09-01T23:17:20Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-010t","title":"Authorize and publish the v0.12.1 folder-scope patch","description":"Protected decision and execution gate for exact reviewed patch candidate 8b781c2c16a415c6d63c29452052ee497e04169f and its deterministic MCPB cad257f6522cb95bc0c1257536df43a0f277ac2e4ff0b92441f24fe6bc1687fc. Decide whether to land the exact candidate on master and, only with explicit authority, sign, tag, upload, create the GitHub release, distribute it, and contact Scott. Do not silently substitute the extraction union or a rebuilt artifact.","acceptance_criteria":"The exact candidate and artifact digests are reverified; the protected master/sign/tag/upload/release/distribution/contact authority is recorded; release checks complete; the published artifact and tag match the reviewed bytes; Scott receives the approved testing instructions. If declined, record the decision without publishing.","status":"closed","priority":1,"issue_type":"decision","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T23:17:11Z","created_by":"silverstein","updated_at":"2026-09-02T00:05:40Z","started_at":"2026-09-01T23:38:52Z","closed_at":"2026-09-02T00:05:40Z","close_reason":"Released exact reviewed v0.12.1 candidate: PR #177 merged as 7a774ac1978417840803ddfd022516742ca60a28 with exact reviewed tree f5ac6fcc7a5282c5954a2b0fc2c80d2c33557609 after both Node 20.19 and 22.12 CI gates passed. Annotated tag v0.12.1 points to the merge. Public release assets re-downloaded and verified: MCPB 74337464 bytes sha256 cad257f6522cb95bc0c1257536df43a0f277ac2e4ff0b92441f24fe6bc1687fc; ZIP 1771705 bytes sha256 891e0c1f1d4a86a90894616a7e9cef47cbade8b2e998323681e44e14fc6e7bf6. Fresh public MCPB smoke passed linux/x64 with 44 tools/14 prompts/native rendering. Scott Slack delivery split to discovered blocked task because the private channel is inaccessible to the authenticated bot; no message was sent.","labels":["human-gate","release","scott"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-010t","depends_on_id":"pdf-toolkit-mcp-2sdt","type":"discovered-from","created_at":"2026-09-01T23:17:11Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-2sdt","title":"Prepare v0.12.1 folder-scope patch release candidate","description":"Prepare an unsigned, unpublished patch release candidate from exact current origin/master 343b94f7f8487d25f0fab899409f23bdf98b7a52, whose only post-v0.12.0 product change is Scott's folder-scope honesty/usefulness fix e7c9f7d. Bump the complete documented version surface to 0.12.1, regenerate only version-bound fixtures with their generators, preserve all publish guards, and qualify source/package behavior. This lane must not include the later extraction epic, sign, upload, create a GitHub release, contact Scott, or publish.","acceptance_criteria":"A clean exact local 0.12.1 candidate is based on current master and contains no extraction-epic commits; every required version site and generated version-bound fixture is consistent; folder-scope regression, MCP contract, focused release gates, aggregate Mac gates, deterministic MCPB/share builds and real package smoke pass; exact-SHA review returns GO; release notes/evidence are ready. Signing, Git tag, GitHub release, upload, distribution and user contact remain separate gates.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T22:15:22Z","created_by":"silverstein","updated_at":"2026-09-01T23:09:31Z","started_at":"2026-09-01T22:15:39Z","closed_at":"2026-09-01T23:09:31Z","close_reason":"Completed exact unsigned/unpublished v0.12.1 patch candidate 8b781c2c16a415c6d63c29452052ee497e04169f (parent 343b94f7f8487d25f0fab899409f23bdf98b7a52, tree f5ac6fcc7a5282c5954a2b0fc2c80d2c33557609): exact-SHA independent GO, Mac test:all green (2511 passed/99 declared skips plus 62 native/9 skips), deterministic MCPB cad257f6522cb95bc0c1257536df43a0f277ac2e4ff0b92441f24fe6bc1687fc, packed smoke and share contract green, ZIP 891e0c1f1d4a86a90894616a7e9cef47cbade8b2e998323681e44e14fc6e7bf6. No extraction epic, signing, tag, upload, release, distribution, Scott contact, or public claim.","dependencies":[{"issue_id":"pdf-toolkit-mcp-2sdt","depends_on_id":"pdf-toolkit-mcp-wrt7","type":"discovered-from","created_at":"2026-09-01T22:15:22Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-wrt7","title":"Reconcile landed extraction epic onto current 0.12 line","description":"Create one clean local union of exact landed extraction epic 0bbf35552b3c5928a097b5fa13c9c506c8e44a4e and current origin/master 343b94f7f8487d25f0fab899409f23bdf98b7a52. Preserve the reviewed verified-extraction surface, campaign honesty and V29 regressions while retaining the public 0.12 version line, Scott folder-scope correction, plugin publishing controls, and all later master fixes. Resolve only genuine conflicts; do not bump a new version, sign, publish, release, or contact users.","acceptance_criteria":"A clean isolated union has exact parent/base evidence and no dropped commits; version and folder-scope semantics remain current-master; verified extraction source/share/package parity remains intact; focused/adjoining tests pass on VM, aggregate and reproducible package/host gates pass on Mac, exact-SHA independent review returns GO, and PARA records the release lineage. No master push/merge, signing, upload, publication or public claim.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T22:10:04Z","created_by":"silverstein","updated_at":"2026-09-01T23:09:40Z","started_at":"2026-09-01T22:10:23Z","closed_at":"2026-09-01T23:09:40Z","close_reason":"Completed clean reviewed 0.12/extraction union f3ead1f442c8926247b7eabf841fdfb03ffb7a5e (parents 343b94f7f8487d25f0fab899409f23bdf98b7a52 and 0bbf35552b3c5928a097b5fa13c9c506c8e44a4e; tree 09b600d6092c4bd995cbcff5fc571a5aacb79406): exact-SHA independent GO; 36 focused files/773 passed, union review 272/272, Mac native 62/9 skips, deterministic MCPB 5bcc57391ee11e5b6ca3ad405364a6d7ff50cf27dc88a5a6a4cddcbd77de39d4, packed smoke and share contract green, ZIP 9dd7743ab2a9d66a1be32e203ec18d9be4b384ad01ce40e820b8a99750c3fc6c. Mac aggregate had one known safe fail-closed process-inspection classification mismatch under parallel contention; exact file then passed four isolated runs, 36/36. Existing contention issue pdf-toolkit-mcp-an4 retains that stability work. No master merge, version decision, signing, upload, release, distribution, or public claim.","dependencies":[{"issue_id":"pdf-toolkit-mcp-wrt7","depends_on_id":"pdf-toolkit-mcp-e9e.7","type":"discovered-from","created_at":"2026-09-01T22:10:03Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} @@ -58,7 +64,7 @@ {"_type":"issue","id":"pdf-toolkit-mcp-6fpa","title":"Correct pp1890i contributor oracle against author byline","description":"Discovered during V30 frozen-evidence required-field recovery. The bound source author byline says Michael Ort, while the private truth oracle says Michael H. Ort by borrowing a middle initial from the separate editor listing on the same page. Correct and reseal the private oracle/manifest/scoring evidence without changing the source-faithful product output, and re-run deterministic scorer hostiles. No model/provider call or public benchmark claim.","acceptance_criteria":"Exact source-page replay proves the author byline value; corrected oracle and manifest are resealed; deterministic scoring accepts the source-faithful result; all dependent hashes/evidence are updated; no product code is changed merely to satisfy the old oracle.","notes":"Corrected by regenerated successor oracle package verified-extraction-source-replay-oracles-2026-09-01-v2 on MSS MacBook. Manifest physical SHA 4e9cdd7b, canonical e0be57b6; only generator, pp1890i oracle, and manifest differ from predecessor, with 29 document oracles byte-identical. Corrected score 3ff926c9 passes 30/30 semantic results and 223/223 citations; four scorer hostiles reject. Product output remains source-faithful Michael Ort. Evidence note: evidence-2026-09-01-pp1890i-oracle-correction.md.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T01:53:56Z","created_by":"silverstein","updated_at":"2026-09-01T02:07:02Z","started_at":"2026-09-01T01:57:09Z","closed_at":"2026-09-01T02:07:02Z","close_reason":"Regenerated and independently replay-verified corrected pp1890i oracle; successor score passes 30/30 and 223/223 while preserving source-faithful product output.","dependencies":[{"issue_id":"pdf-toolkit-mcp-6fpa","depends_on_id":"pdf-toolkit-mcp-xa3c","type":"discovered-from","created_at":"2026-09-01T01:53:55Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-xa3c","title":"Repair V30 missing required-field recovery from frozen evidence","description":"Discovered from pdf-toolkit-mcp-696d after the one V30 campaign completed 23/30 documents with 90 calls. Work only from the frozen execution state and seven fail-closed fixtures. Repair deterministic source-bound recovery/admission for four missing contributors cases, two missing first-table cases, and one missing publication-citation excerpt while preserving all 23 successful outputs. Treat the legacy surname-only/exact-window score as secondary; the governing product result is the V30 source-bound semantic score (23/23 valid completed results, 165/165 replayed citations). Do not run another model campaign in this tranche.","notes":"Frozen V30 source-bound semantic score 532cced4: 23 completed, 23 semantic-valid, 165/165 literal source citations, 21/23 exact-result secondary diagnostic. Seven immutable failures: contributors (ofr20251037, sir20255039a/b/c), first table (pp1890i, plus one identified in diagnosis), publication excerpt (ofr20251055). Product decision d34d7f4b; status/plan mirrored byte-exact to MSS MacBook. Work offline from full Mac state plus 51M compact VM receipts/traces; do not run another model campaign. Preserve source 01d01223 and all external/release gates false.\nCompleted at exact local commit 4e4d5ce0c0b2a6d0fcee89810496423ebe34018a (parent 01d01223, tree 0f2bfc9b). Deterministic recovery preserves 23 completed results and recovers all seven frozen incomplete documents with zero model/provider calls and no oracle access. V2 replay physical SHA 61a8e3dc, canonical d7c90b79. Private score SHA 8261d638: 223/223 citations replay, 29/30 oracle semantic acceptance; only conflict is pp1890i author byline Michael Ort vs oracle Michael H. Ort from editor listing. VM and exact-Node Mac focused/adjoining banks each pass 101/101. Product decision fae4a57a. Discovered oracle correction pdf-toolkit-mcp-6fpa and fresh confirmation pdf-toolkit-mcp-3wir. Origin push is disabled in this private control clone; integration/release/public gates remain false.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T01:06:28Z","created_by":"silverstein","updated_at":"2026-09-01T01:55:32Z","started_at":"2026-09-01T01:10:12Z","closed_at":"2026-09-01T01:54:43Z","close_reason":"Implemented, tested, and replay-verified deterministic recovery for all seven frozen V30 incomplete documents at 4e4d5ce0; 223/223 citations replay. Oracle conflict and fresh confirmation tracked separately.","dependencies":[{"issue_id":"pdf-toolkit-mcp-xa3c","depends_on_id":"pdf-toolkit-mcp-696d","type":"discovered-from","created_at":"2026-09-01T01:06:28Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-bqmo","title":"Project canonical routed extraction into verified workspace state","description":"Discovered while freezing pdf-toolkit-mcp-696d. The schema-directed projection fixes the final result and public citations, but projectSchemaDirectedSourceBoundResponsePipelineResult still returns the pre-canonical workspace state under source_pipeline. Build a canonical workspace state from the routed result and exact source-bound chunk pointers so reference-derived extras and shortened values do not survive into the user workspace.","acceptance_criteria":"Projection returns canonical result plus workspace state with the same publication/contributors/summary, exactly matching citation keys, deterministic source/page/chunk bindings and valid byte ranges. Reference-derived contributors and stale pre-canonical values are absent. Missing, ambiguous, wrong-page, drifted-content and unsupported-value mappings fail closed. Focused/adjoining VM and Mac tests pass; no model/provider call.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-31T20:04:41Z","created_by":"silverstein","updated_at":"2026-08-31T22:46:38Z","started_at":"2026-08-31T20:04:55Z","closed_at":"2026-08-31T22:46:38Z","close_reason":"Completed at exact SHA 01d01223122be6942c570d37f0b92f987b170358 with canonical verified-workspace projection, VM/Mac 110/110, and retained zero-inference replay 11/11 across 74 citations and 854 chunks.","dependencies":[{"issue_id":"pdf-toolkit-mcp-bqmo","depends_on_id":"pdf-toolkit-mcp-696d","type":"discovered-from","created_at":"2026-08-31T20:04:40Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-696d","title":"Run fresh schema-directed source-replay paired campaign","description":"Discovered from pdf-toolkit-mcp-00l0 after V29 rejection. Freeze a wholly new non-overlapping 30+30 comparison around exact candidate source 01d01223122be6942c570d37f0b92f987b170358, schema-directed router upper bound 108, repository source-replay scorer, response receipt v3 typed budget exhaustion/page partition, canonical verified-workspace projection, historical baseline 2bf6e45f, the same local Gemma model/settings, existing 283 candidate-call ceiling, retry zero, no replacement, and USD 0. Build and hostile-test preparation, baseline and candidate authorities; execute each role once only after exact local gates; retain complete indexes and privately score. Preserve provider egress, integration, signing, push/merge, release, publication, benchmark qualification, and public claims as false/protected.","acceptance_criteria":"Before execution, zero-inference hostiles prove new trial/attempt IDs and state root, exact source/scorer/router/controller identity, correct 108\u003c=283 capacity, and V6-valid typed exhaustion receipts before/first/after batches with a complete 30-slot index. Then one baseline and one candidate role execute with retry zero/no replacement/USD0; all 60 receipts and physical-to-canonical bridge verify; private source-replay score produces a candid acceptance decision; PARA and Beads update. No provider egress or public benchmark claim.","notes":"V30 comparison V2 GO seal a379c3ba/plan 9078faa8/settings 6806f91c; dual preflight e99886c6 candidate + 8f3adc3f baseline, review c7c16906; role prep GO b8af79ad/248d4533. Baseline V1 calibration authority 3912bd6f passed one exact local call retry0; receipt 0cdf95f9, trace ccdc9dfa, witness 28eb1ba8. Post-calibration V2 seal 9437f87f passed VM/Mac verifier, 31 hostiles, execution chain, byte-identical regen; review 85e876e4. Baseline executed once: exit0, 30/30 receipts+traces, index 27a4d2a5, VM/Mac state digest 54c97d80, 10/1718 processed pages, 461 product calls, zero model calls/retries/USD. Execution review GO completeness eb6d4b8c. Private score 98e4f57f/review c9dfe5bf: 30 product failures and zero numerators across 283/133/223/30 denominators. Next: fresh post-baseline candidate preflight at 01d01223, then exact candidate authority/execution and paired private score. V29 observed 283/283 exhaustion validates ef82ed7 fixture but does not alter V30 108-under-283 capacity. Provider egress/integration/push/merge/sign/release/publication/benchmark/public claim remain false.","status":"in_progress","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-31T19:57:29Z","created_by":"silverstein","updated_at":"2026-08-31T22:46:42Z","started_at":"2026-08-31T20:38:28Z","dependencies":[{"issue_id":"pdf-toolkit-mcp-696d","depends_on_id":"pdf-toolkit-mcp-00l0","type":"discovered-from","created_at":"2026-08-31T19:57:29Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-696d","title":"Run fresh schema-directed source-replay paired campaign","description":"Discovered from pdf-toolkit-mcp-00l0 after V29 rejection. Freeze a wholly new non-overlapping 30+30 comparison around exact candidate source 01d01223122be6942c570d37f0b92f987b170358, schema-directed router upper bound 108, repository source-replay scorer, response receipt v3 typed budget exhaustion/page partition, canonical verified-workspace projection, historical baseline 2bf6e45f, the same local Gemma model/settings, existing 283 candidate-call ceiling, retry zero, no replacement, and USD 0. Build and hostile-test preparation, baseline and candidate authorities; execute each role once only after exact local gates; retain complete indexes and privately score. Preserve provider egress, integration, signing, push/merge, release, publication, benchmark qualification, and public claims as false/protected.","acceptance_criteria":"Before execution, zero-inference hostiles prove new trial/attempt IDs and state root, exact source/scorer/router/controller identity, correct 108\u003c=283 capacity, and V6-valid typed exhaustion receipts before/first/after batches with a complete 30-slot index. Then one baseline and one candidate role execute with retry zero/no replacement/USD0; all 60 receipts and physical-to-canonical bridge verify; private source-replay score produces a candid acceptance decision; PARA and Beads update. No provider egress or public benchmark claim.","notes":"V30 comparison V2 GO seal a379c3ba/plan 9078faa8/settings 6806f91c; dual preflight e99886c6 candidate + 8f3adc3f baseline, review c7c16906; role prep GO b8af79ad/248d4533. Baseline V1 calibration authority 3912bd6f passed one exact local call retry0; receipt 0cdf95f9, trace ccdc9dfa, witness 28eb1ba8. Post-calibration V2 seal 9437f87f passed VM/Mac verifier, 31 hostiles, execution chain, byte-identical regen; review 85e876e4. Baseline executed once: exit0, 30/30 receipts+traces, index 27a4d2a5, VM/Mac state digest 54c97d80, 10/1718 processed pages, 461 product calls, zero model calls/retries/USD. Execution review GO completeness eb6d4b8c. Private score 98e4f57f/review c9dfe5bf: 30 product failures and zero numerators across 283/133/223/30 denominators. Next: fresh post-baseline candidate preflight at 01d01223, then exact candidate authority/execution and paired private score. V29 observed 283/283 exhaustion validates ef82ed7 fixture but does not alter V30 108-under-283 capacity. Provider egress/integration/push/merge/sign/release/publication/benchmark/public claim remain false.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-31T19:57:29Z","created_by":"silverstein","updated_at":"2026-09-03T18:58:45Z","started_at":"2026-08-31T20:38:28Z","closed_at":"2026-09-03T18:58:45Z","close_reason":"Completed through V30 repair, oracle correction, and the V31 30/30 confirmation with 90/108 calls and 223/223 citations.","dependencies":[{"issue_id":"pdf-toolkit-mcp-696d","depends_on_id":"pdf-toolkit-mcp-00l0","type":"discovered-from","created_at":"2026-08-31T19:57:29Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-00l0","title":"Preserve typed in-document model-call budget exhaustion and page partition","description":"Discovered from V29 candidate doc sir20255055. The campaign exhausted after 13 document calls but retained outcome controller_failure and null page partitions, while later untouched documents were typed model_call_budget_exhausted. Map the in-document ceiling to the same typed budget outcome, preserve completed_request_count and all retained layout/page evidence, and derive processed/unprocessed pages truthfully.","acceptance_criteria":"Zero-inference tests exhaust the campaign budget before a document, during its first batch, and after N successful batches. Each produces one nonreplaceable V6-valid receipt with reason model_call_budget_exhausted, exact completed request count, retained trace, truthful page partition, zero retry, and a complete 30-slot index. Generic controller_failure is not used for the typed ceiling.","notes":"Completed at exact Git SHA ef82ed73aa577f2a47214829b4c1ca8d8a94bc64 (parent 1d77e695, tree 5636f330). Response receipt v3 preserves typed model_call_budget_exhausted and exact completed_request_count across the in-document callback; digest-valid reconstruction and forged-signal hostiles added. Retained-page partition derives only from ordered durable page inventory and clears processed pages if aggregate trace is absent. VM focused 37/37 and affected/adjoining 110/110; MSS MacBook affected/adjoining 110/110 under Node 22.23.2. Zero model/provider calls, retry, spend, or campaign execution. Evidence: evidence-2026-08-31-typed-model-call-budget-exhaustion.md. Push attempted and failed closed because origin push target is DISABLED_PRIVATE_CONTROL_CLONE; Beads has no Dolt remote.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-31T16:57:40Z","created_by":"silverstein","updated_at":"2026-08-31T21:38:08Z","started_at":"2026-08-31T19:29:59Z","closed_at":"2026-08-31T21:38:08Z","close_reason":"Completed at ef82ed73 with typed budget exhaustion, truthful retained-page accounting, VM/Mac 110/110, and durable evidence.","dependencies":[{"issue_id":"pdf-toolkit-mcp-00l0","depends_on_id":"pdf-toolkit-mcp-hteo","type":"discovered-from","created_at":"2026-08-31T16:57:40Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-5fx9","title":"Replace exact-window citation equality with source-replay scoring","description":"Discovered from V29 score 6fcff3fb: all accepted candidate quotes were replayed against retained source chunks, yet the frozen scorer returned 0/223 because it requires byte-identical equality with one oracle window and contributor keys used noncanonical full names. Add a citation metric that validates exact source replay, correct page/document binding, path/value support, and no extra unsupported citation. Retain exact oracle-window equality only as a diagnostic. Preserve prior immutable scores.","acceptance_criteria":"New scorer rejects wrong page, wrong document/chunk, nonliteral quote, quote not supporting the claimed value, stale schema/source, missing required citation, duplicate/extra unsupported citation, and path substitution. It accepts different exact source-valid spans that support the same canonical value. Replays V29 with both legacy exact-oracle and new source-support metrics side by side; no existing V29 artifact is rewritten; benchmark/public readiness stays false.","notes":"2026-08-31 complete at exact commit 1d77e6950d058c08b893cdcd0755ee44336382d1 (parent eb5dbf782c34a0d9dbadca0e31f056367d9ee758, tree b39e16b4). Repository scorer SHA 9d591a30 binds schema bytes, PDF/source, document map, normalized page bundle, and full retained chunk denominator; hostiles reject wrong page/document/chunk, nonliteral or value-unsupported quote, stale schema/source, missing/extra citation, path substitution, and denominator drift. Retained V29 offline replay physical SHA 9e871e71/report 63f20ca5: 11/11 semantic-valid documents, 74/74 primary source citations, 0 deterministic failures, 21/74 exact-window secondary diagnostic, zero model/provider calls. VM and MSS Mac affected/adjoining banks pass 177/177. No prior artifact rewritten; benchmark_claim_ready remains false.","status":"in_progress","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-31T16:57:37Z","created_by":"silverstein","updated_at":"2026-08-31T19:28:02Z","started_at":"2026-08-31T19:02:39Z","dependencies":[{"issue_id":"pdf-toolkit-mcp-5fx9","depends_on_id":"pdf-toolkit-mcp-hteo","type":"discovered-from","created_at":"2026-08-31T16:57:36Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-ny6h","title":"Implement schema-directed evidence routing and canonical value projection before V30","description":"Discovered from V29 paired score 6fcff3fb. Replace near-exhaustive chunk sweeping with deterministic schema-directed evidence selection: suggested citation and source-bound credited-name page for agency, citation text, and contributors; earliest verified actual-data-table page for first_table. Preserve complete human-readable credited display names, complete printed suggested citation, deterministic table anchor, and reference/acknowledgment exclusion. Use retained V29 maps/chunks for zero-inference replay; selection must not read truth/citation oracles. Preserve V29 immutable.","acceptance_criteria":"Across all 30 retained compatible document maps, freeze a deterministic replayable evidence plan before oracle access, with no more than 240 model-call upper-bound slots, exact page/chunk/full-denominator identities, and fail-closed missing evidence. On the 11 completed V29 results, zero-inference canonical projection must materially improve semantics without unsupported values and pass private source-replay-v2 scoring. Add hostile tests for references, complete-name support, citation termination, table-of-contents false tables, missing evidence, routed-scope drift, and denominator substitution. No new campaign execution in this Bead.","notes":"2026-08-31 measured correction: source-replay-v2 requires complete human-readable credited display names, not surname-only contributor keys. Full 30-document plan projects 107 calls; final retained V29 replay is being re-frozen after a no-literal-By source-form edge was added.\n2026-08-31 complete at exact commit eb5dbf782c34a0d9dbadca0e31f056367d9ee758 (parent a2aa76c9, tree 5d7de004). Final full-corpus zero-inference plan: 30/30 documents, 108 maximum routed calls, no oracle/model/provider use; retained V29 subset falls from 283 actual calls to 60 routed upper-bound calls. Existing 11 completed results project to 11/11 semantic validity, 74/74 source-replay citations, and 0 deterministic failures; legacy exact-window diagnostic is 21/74. VM and Mac affected/adjoining banks pass 173/173; Mac comparison-controller passes 24/24 with the intended Node 22 PATH. The broader Mac aggregate reached an unrelated PATH-dependent 9-test failure and completed its 339-second fuzz partition before being operator-interrupted, so no full-aggregate-green claim is made. Authoritative v2 evidence SHAs: plan physical 443e1cf7/report 146c92a5; V29 replay physical 79b1be44/report f38fc542; private score physical f58e9f9f/report adf9ebff. No new campaign or public claim.","status":"closed","priority":1,"issue_type":"feature","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-31T16:57:09Z","created_by":"silverstein","updated_at":"2026-08-31T19:01:14Z","started_at":"2026-08-31T16:59:37Z","closed_at":"2026-08-31T19:01:14Z","close_reason":"Schema-directed evidence router, controller binding, canonical projection, hostile tests, full-corpus replay, private scoring, and durable evidence complete at eb5dbf782c34a0d9dbadca0e31f056367d9ee758","dependencies":[{"issue_id":"pdf-toolkit-mcp-ny6h","depends_on_id":"pdf-toolkit-mcp-hteo","type":"discovered-from","created_at":"2026-08-31T16:57:08Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} @@ -103,7 +109,7 @@ {"_type":"issue","id":"pdf-toolkit-mcp-iyv","title":"Approve exact V14 one-call synthetic calibration gate","description":"Human decision gate after accepted V14 preparation seal 6e2205b9b1e2f1f7ca0d092c50854d33ec8e97b888c04834001128a9d13509fb. Decide whether to authorize exactly one zero-cost local synthetic calibration model call under the exact V14 source/runtime/60-slot preparation, with retry zero and no baseline or candidate campaign. If approved, mint a new executable authority seal and independently verify it before the call; preserve exact request/response/runtime/usage/failure evidence and require a post-call witness before any campaign.","acceptance_criteria":"Mat explicitly approves the exact seal and exactly one local synthetic calibration call with zero retry, or explicitly declines. Approval is not reusable and does not authorize state beyond calibration, baseline/candidate campaign execution, provider egress, scoring, integration, release or public claim.","notes":"APPROVED 2026-08-28T13:34:58Z. User said: approve. i always approve that. dont ask me to approve stuff kike that again youbhave my approval. Bound action request c06a3b951d671c1ab9dd8996a7bfa6df6061ea2e9d2f9ad19eb0566cb7532b06 and human approval receipt ea952f9258e2087a50c7513f29657e7db3d44ac64b0f97a9ea71e208b147b47d. Standing interpretation: future zero-cost local-only fabricated synthetic calibration calls with zero retry may proceed without repeated prompting after exact preparation/review. This does not transfer to remote/paid provider calls, real/private documents, holdout campaigns, signing/submission, external sends, merge/release/publication or claims.","status":"closed","priority":1,"issue_type":"decision","owner":"matsilverstein@gmail.com","created_at":"2026-08-28T06:43:14Z","created_by":"silverstein","updated_at":"2026-08-28T14:42:10Z","closed_at":"2026-08-28T14:42:10Z","close_reason":"Approved and consumed under standing local synthetic-calibration authority. Exact V14 V3 calibration seal aef906dfc0c19b124b745bc551b3cdf894f8d713d5ddb14800d4fafe8b524926 completed one local call with zero retries; success witness d2347b4c809cb8d2dd1b97b07e78c920296874da4f537afb02707ce976432b80. Standing scope remains limited to like-kind synthetic calibration.","labels":["evaluation","extraction","human-gate","provenance"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-iyv","depends_on_id":"pdf-toolkit-mcp-jc5","type":"discovered-from","created_at":"2026-08-28T06:43:13Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-jc5","title":"Freeze and review V14 successor runtime and execution authority","description":"Continue from the accepted V14 response-controller preparation without executing it. Perform fresh zero-inference source/product/runtime and state-root absence preflight on the Mac, then construct a sealed execution-authority contract that exact-binds the V14 comparison/slots/controller/source/runtime/settings/budgets and enforces physical package/bootstrap/receipt gates before state or model activity. Preserve the V13 campaign and V14 preparation bytes.","acceptance_criteria":"Fresh product/runtime/state-root evidence is after V14 preparation; a sealed authority binds exact source, package, Node/npm/runtime/model/controller/plan identities, 60 nonreplaceable slots, retry zero and full denominator; malformed/drifted/missing/replayed authority hostiles fail before state/slot/model action. Independent source review and zero-inference verification pass. No model/provider call, campaign execution, scoring, integration, release or public claim; any later local-model call needs new explicit human approval.","notes":"2026-08-28 complete through protected gate. Fresh Mac zero-inference receipt physical SHA 7a05d26127b172c2b3f93e4368c2d8495345aa5ffe7b8efebbba5ae7a5c5e24d, canonical 97062699cb0f874a2cc147326f545ce9e7435838fcc2b229881df2422f79fdc0, exact clean V14 source 192328b30f7f751a5e937b269b58f5766dc2b620/tree 592a727d8fcb2b4acb9a6411f5d4380102531618, product identity d8da845852de2e1a7ac9ac5fa5773705353826467f50f41118182a0ef633c2e8, exact Node/npm/model/runtime hashes, loopback-only and state root absent. Non-executable 32-file authority preparation seal 6e2205b9b1e2f1f7ca0d092c50854d33ec8e97b888c04834001128a9d13509fb; subordinate authority eddda7f928d349e298a27981be80c5190aca2a082d8a7cf5bb443a128be4c3bd; 60 slots/120 unique role IDs, retry zero/no replacement, all flags false. VM and Mac exact verifier pass; 8/8 hostiles reject. Evidence evidence-2026-08-28-v14-successor-authority-preparation.md. No endpoint/model/provider/state/slot/scoring/oracle action.","status":"closed","priority":1,"issue_type":"task","owner":"matsilverstein@gmail.com","created_at":"2026-08-28T06:30:23Z","created_by":"silverstein","updated_at":"2026-08-28T06:43:18Z","closed_at":"2026-08-28T06:43:18Z","close_reason":"Completed fresh exact Mac preflight and sealed non-executable V14 authority preparation. Physical/runtime/source/slot identities and full denominator are bound and hostile-tested; the lane now stops at the explicit one-call human decision Bead.","labels":["agents","evaluation","extraction","provenance"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-jc5","depends_on_id":"pdf-toolkit-mcp-9qd","type":"discovered-from","created_at":"2026-08-28T06:30:23Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-9qd","title":"Compose V13 response admission into a fresh successor controller","description":"The consumed V13 campaign is preserved and source repair is qualified at E9E-chain SHA 3f39dce055a5267e358b962f0c7cd1fe464712cc plus current-base projection 863ce03d4f6fa764a07b3a568119d6fd40bf6ee0. Build a zero-inference successor controller/preparation contract that invokes the exact strict response-admission bytes after validated document-map and chunk construction, retains typed truncation and exact raw/parsed/source evidence, rejects reference-section calls and stale/cross-document or extra citations, derives calculation evidence, and allocates wholly new comparison/trial/attempt identities. Preserve every consumed V13 byte and keep all execution/provider/integration/public flags false.","acceptance_criteria":"The executable preparation path exact-binds the response-admission module/schema/policy, document-map identity and ordered full chunk scope; completed, output-cap, malformed, reference-section, stale/cross-document, extra-citation, calculation and controller-failure hostiles retain truthful one-attempt receipts and denominators; all successor role IDs are disjoint from V13; focused/adjoining and zero-inference sealed verification pass. No model/provider call, campaign execution, retry, push/merge, release, publication or claim is implied.","notes":"2026-08-28 complete. Exact E9E-chain controller SHA 192328b30f7f751a5e937b269b58f5766dc2b620 (tree 592a727d8fcb2b4acb9a6411f5d4380102531618); current-public projection 819c5f8f22b91fdc0e4fcf36b6af1a420df5c71e (tree e95b20bd7a49781624d61ba6fd98a937be964648). VM focused/adjoining 112/112; Mac focused 24/24; Mac test:all exit 0 with 161 Vitest files/2532 tests and 62 native passes, declared skips 110/9 including 11 qpdf guards skipped under deliberately Node-only PATH. Private 23-file V14 prep seal f2bf57228ebb0404678b872fe97e9771bdf25f3eca4fd2928376cca4307bfcc2; plan physical SHA 4c3a2568587a286881b7a56cc7302bab7aed87e61e75683109c6fa4c88bcb8e9; 30 docs, 60 slots, 120 unique role IDs, zero V13 overlap, retry zero/no replacement. Zero-inference verifier: 1 completed + 6 typed failures; 8/8 hostiles rejected. Source review P0-P3 none within preparation-only boundary. Evidence evidence-2026-08-28-v14-response-controller-preparation.md. No model/provider/campaign/scoring/oracle/integration/release/public claim.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-28T05:44:59Z","created_by":"silverstein","updated_at":"2026-08-28T21:24:10Z","started_at":"2026-08-28T05:48:01Z","closed_at":"2026-08-28T21:24:10Z","close_reason":"Completed successor controller composition and exercised through V15; exact follow-on source/table repairs are e9e.9 and 82v. close pdf-toolkit-mcp-42y Superseded and closed by later V14/V15 controller execution plus exact e9e.9 and 82v source-admission repairs; consumed V6-V15 campaigns remain immutable. update pdf-toolkit-mcp-fkx status=in_progress assignee=silverstein","dependencies":[{"issue_id":"pdf-toolkit-mcp-9qd","depends_on_id":"pdf-toolkit-mcp-2hn","type":"discovered-from","created_at":"2026-08-28T05:44:59Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-gz3.3","title":"Obtain Max/Lumin written staging and custody decisions","description":"Human/external gate for the prepared Lumin decision packet at SHA-256 5241210b1430d0387c7297a645827b06a5772a1cb2a2aef5c1492d62a6c37e5c. After Mat approves the communication, send or present the packet to Max/Lumin and obtain written sandbox/tenant, credential custody, principal/scopes, transfer, idempotency, webhook, retention, fixture, and acceptance-owner answers. Do not request or receive secrets in Slack/email.","acceptance_criteria":"Mat separately approves the outbound communication; Lumin/Max returns written decisions and provider-owned synthetic fixtures through approved channels; answers are recorded in PARA and reviewed before any credential request, tool registration, network transport, provider call, real signing, merge, release, or public claim.","notes":"2026-08-27 read-only milestone recheck: Hermes authenticated to Business Vacation Slack but conversations.list exposed no lumin channel and the known channel/thread returned channel_not_found. This proves bot visibility is absent, not that no replies exist. No post, reaction, invite, external send, or credential request occurred. The prepared decision packet remains unsent and this human/external gate remains open.","status":"open","priority":1,"issue_type":"decision","owner":"matsilverstein@gmail.com","created_at":"2026-08-27T18:01:56Z","created_by":"silverstein","updated_at":"2026-08-27T23:20:11Z","labels":["human-gate","provider-gate","signing"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-gz3.3","depends_on_id":"pdf-toolkit-mcp-gz3","type":"parent-child","created_at":"2026-08-27T18:01:55Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-gz3.3","title":"Obtain Max/Lumin written staging and custody decisions","description":"Human/external gate for the prepared Lumin decision packet at SHA-256 5241210b1430d0387c7297a645827b06a5772a1cb2a2aef5c1492d62a6c37e5c. After Mat approves the communication, send or present the packet to Max/Lumin and obtain written sandbox/tenant, credential custody, principal/scopes, transfer, idempotency, webhook, retention, fixture, and acceptance-owner answers. Do not request or receive secrets in Slack/email.","acceptance_criteria":"Mat separately approves the outbound communication; Lumin/Max returns written decisions and provider-owned synthetic fixtures through approved channels; answers are recorded in PARA and reviewed before any credential request, tool registration, network transport, provider call, real signing, merge, release, or public claim.","notes":"2026-08-27 read-only milestone recheck: Hermes authenticated to Business Vacation Slack but conversations.list exposed no lumin channel and the known channel/thread returned channel_not_found. This proves bot visibility is absent, not that no replies exist. No post, reaction, invite, external send, or credential request occurred. The prepared decision packet remains unsent and this human/external gate remains open.\n2026-09-03: Mat authorized the Lumin contract-request tranche after v0.13.0 publication. Exact Business Vacation thread remains inaccessible: Hermes bot conversations.replies returned channel_not_found, the bot user directory exposes no Max/Ferguson/Scott/Lumin match, and the Codex Slack connector reports reauthentication required. No message was sent. The capability update and contract questions are preserved in Apple Notes/PARA. This lane now waits only for a reachable Max/Lumin channel or written response; no credentials or real documents requested.","status":"blocked","priority":1,"issue_type":"decision","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-27T18:01:56Z","created_by":"silverstein","updated_at":"2026-09-03T03:50:12Z","labels":["human-gate","provider-gate","signing"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-gz3.3","depends_on_id":"pdf-toolkit-mcp-gz3","type":"parent-child","created_at":"2026-08-27T18:01:55Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-gz3.2","title":"Draft Lumin provider staging and custody decision package","description":"Turn the current exact no-network mapper and provider-neutral research into one concise decision package for Max/Lumin. Cover sandbox/tenant and principal identity, credential issuance/custody/rotation, document transfer and prepared-file hosting, idempotency, callback/webhook authentication and replay, lifecycle/status/download, retention/deletion, provider-owned SAME_TIME and ORDER/group fixtures, plan limits, error taxonomy, support/escalation, and named technical/legal acceptance owners. Draft only; do not send or request credentials.","acceptance_criteria":"A private PARA decision packet cites the exact disabled mapper fee0a9c and official OpenAPI identity, separates confirmed API facts from unresolved provider decisions, proposes least-privilege defaults and a bounded sandbox acceptance matrix, and states the exact written answers required before any tool registration, transport, credential request, provider call, real signing, merge, release, or public claim. PARA/status and Bead state are updated; no external message is sent.","notes":"Private provider decision package complete at /home/mat/Documents/life/projects/oda-pdf-tools-2026-2027/action-request-2026-08-27-lumin-sign-staging-custody.md, mode 0600, SHA-256 5241210b1430d0387c7297a645827b06a5772a1cb2a2aef5c1492d62a6c37e5c. It cites exact disabled mapper fee0a9c and OpenAPI 8842b793, separates confirmed facts from provider-owned decisions, recommends least-privilege OAuth/broker custody, requests synthetic fixtures, and defines bounded sandbox acceptance. Draft only; not sent; no credential/provider action.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-27T17:59:07Z","created_by":"silverstein","updated_at":"2026-08-27T18:06:56Z","started_at":"2026-08-27T17:59:26Z","closed_at":"2026-08-27T18:06:56Z","close_reason":"Provider staging/custody decision packet drafted and recorded privately; external send and written answers remain separate gates.","labels":["provider-gate","security","signing"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-gz3.2","depends_on_id":"pdf-toolkit-mcp-gz3","type":"parent-child","created_at":"2026-08-27T17:59:06Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-gz3.1","title":"Reconcile disabled Lumin v1 mapper onto current PDF Tools","description":"Port the exact reviewed no-network Lumin v1 mapper series ending at 4d0655461ba35f1a4a3a2ad891c9cb4cd4e0f5e1 from product base 8575246 onto current origin/master 343b94f. Preserve transport_allowed:false, provisional/unverified field-mapping qualifications, SAME_TIME-only behavior, exact official OpenAPI provenance, source/share parity, and zero credential/provider calls. Reconcile current package inventories and tests without registering a user-facing tool.","acceptance_criteria":"A clean current-master candidate contains only the pure disabled mapper, exact-reference verifier/projection, source/share inventory updates, and focused hostile tests; current official reference identity is rechecked; source/share and package inventories pass; no network/auth/env read/tool registration/provider execution exists; exact-SHA review passes. ORDER/text-tag/provider execution remain blocked without provider-owned fixtures and written custody/environment authority.","notes":"Completed current-source port at exact local SHA fee0a9c99d38034f568df604a6b8f89a3e3c4836, parent 343b94f7f8487d25f0fab899409f23bdf98b7a52, tree 8d358da2d3485eeb9cee9daf3c11bd81261edabd. Exact official OpenAPI bytes 118174 / SHA 8842b7938870ea05b8c8d5869a33cc16b33b2eb0b8f2b1c60607203e39bfd037; canonical parsed JSON unchanged from 2026-08-04. Mac Node 22.23.2 passed 93 focused/adjoining tests plus reproducible share contract (44 tools, 14 prompts, 122 licensed SBOM components, artifact d0d008553aff9b194e29536cabdeec5d5ed4cc0053b8b63364605e0885c5db17). Source/share mapper SHA 1d1b092fb40606a08cb66b5e3d2661e4f1a0420c310eb4cf1cadd4139bf26dff. No registration, network, env/credential read, retry, or provider path. Same-lane exact-SHA review GO_LOCAL_DISABLED_MAPPER_ONLY at private evidence SHA 008cce78157c256f45027325846659c9e694c6460d8e68d14f04fe8e08e44c3b. Local only: no push/merge/release/provider action.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-27T17:43:05Z","created_by":"silverstein","updated_at":"2026-08-27T18:06:56Z","started_at":"2026-08-27T17:43:10Z","closed_at":"2026-08-27T18:06:56Z","close_reason":"Exact current-source disabled mapper reconciled and qualified locally at fee0a9c; transport/provider execution remain blocked.","labels":["agents","provenance","security","signing"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-gz3.1","depends_on_id":"pdf-toolkit-mcp-gz3","type":"parent-child","created_at":"2026-08-27T17:43:04Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-2hn","title":"Repair V13 structured-output and evidence-replay failures","description":"The exact V13 candidate campaign retained all 30 attempts and processed all 1,718 pages, but only 13 completed; 17 failed as model_response_malformed. Private scoring recovered 28/283 leaves and 10/133 keyed items but 0/223 citations and 0/30 calculations, with 105 extra citations. Preserve the consumed campaign and diagnose the strict-output, citation selection/replay, calculation, omission, and resource-profile defects using zero-inference replay and bounded local tests. Do not rerun the campaign or integrate E9E.7 until a fresh frozen evaluation passes.","acceptance_criteria":"A reviewed local remediation rejects malformed/ambiguous model JSON before acceptance, improves source-bound citation and calculation replay without stale/cross-document acceptance or silent truncation, includes hostile fixtures for the 17 retained failure shapes and extra-citation behavior, passes focused/adjoining tests, and defines a fresh non-overlapping evaluation gate. No model/provider execution, integration, push/merge, release, or public claim is implied.","notes":"2026-08-28 completed zero-inference source remediation. Exact E9E-chain candidate 3f39dce055a5267e358b962f0c7cd1fe464712cc passed 127/127 focused/adjoining on VM; exact response test passed 15/15 on Mac. Byte-identical current-base projection 863ce03d4f6fa764a07b3a568119d6fd40bf6ee0 (parent 725d854a29848d099d901607ea06dea72921d7b9, tree 106cfdfc31b82d8c187376a83ff65994ab97dae8) passed response plus Phase-1 scorer 24/24 and full Mac test:all: 160 Vitest files/2534 tests plus 62 native, declared skips only. Source review P0-P3 none. Evidence: evidence-2026-08-28-v13-structured-output-repair.md. No model/provider call, rerun, controller integration, push/merge, release, or claim. Successor controller composition is pdf-toolkit-mcp-9qd and blocks E9E.7.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-27T17:34:42Z","created_by":"silverstein","updated_at":"2026-08-28T05:47:25Z","started_at":"2026-08-28T04:31:26Z","closed_at":"2026-08-28T05:47:25Z","close_reason":"Completed strict source-bound response admission and V13 failure replay at reviewed local SHAs 3f39dce and 863ce03. All 17 retained truncation shapes are typed, reference-section evidence is excluded, duplicate JSON and stale/cross-document/extra citations reject, calculation is derived, focused and full current-base aggregates pass. Fresh controller composition continues in 9qd; no campaign execution or retry authorized.","labels":["agents","evaluation","extraction","provenance"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-2hn","depends_on_id":"pdf-toolkit-mcp-0jj","type":"discovered-from","created_at":"2026-08-27T17:34:41Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} @@ -148,7 +154,7 @@ {"_type":"issue","id":"pdf-toolkit-mcp-e9e.1","title":"Define rights-cleared long-document extraction benchmark and claim boundary","description":"Freeze the schema subset, corpus admission manifest, rights and oracle provenance, deterministic scorers, baseline and candidate workflow protocols, harness-failure taxonomy, holdout policy, and public claim boundary before product implementation.","acceptance_criteria":"Every admitted document has exact bytes, digest, source and rights basis; deterministic primary metrics and denominators are reproducible; baseline and candidate protocols are frozen before holdout; no model judge can override a deterministic failure.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-20T13:53:27Z","created_by":"silverstein","updated_at":"2026-08-20T21:14:17Z","started_at":"2026-08-20T19:28:45Z","closed_at":"2026-08-20T21:14:17Z","close_reason":"Completed at exact clean independently reviewed SHA 106fcd50e617d4132899cc3c9619d5f9edda65e3. Rights-cleared deterministic synthetic corpus freezes 3 docs/288 pages/97 leaves/43 citations/27 keyed-array items/1 calculation; exact generator/scorer/artifact/protocol bindings and paired-run authority contract are verified. Final adversarial review GO with no P0-P3. Manifest benchmark_claim_ready false and authorizes zero measured executions. Focused/adjoining 83/83 and native 61/61 green; aggregate retains two unrelated fuzz 180s host timeouts and is not claimed green. Private evidence: evidence-2026-08-20-e9e1-benchmark-contract.md. No push, merge, provider run, or release.","labels":["agents","evaluation","extraction","provenance","rights"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-e9e.1","depends_on_id":"pdf-toolkit-mcp-0av.3","type":"blocks","created_at":"2026-08-20T13:54:23Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.1","depends_on_id":"pdf-toolkit-mcp-e9e","type":"parent-child","created_at":"2026-08-20T13:53:27Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":1,"dependent_count":2,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-e9e","title":"Verified long-document schema extraction workspace","description":"Benchmark and, only if the evidence supports it, build a local workspace for long PDF extraction against nested JSON schemas. The design uses source-bound document maps, bounded chunks, persistent local intermediate state, paginated results, citations, and deterministic verification statuses. It adopts the useful architecture pattern described in the public Databricks Document Intelligence article without adopting its private service, model training, numeric confidence, or benchmark claims.","acceptance_criteria":"A paired same-model evaluation demonstrates material improvement over the current-tools baseline; every complete result has explicit schema and source bindings, leaf coverage, citation integrity, typed uncertainty, and no silent truncation; exact source/package/host qualification passes before any release or public performance claim.","status":"closed","priority":1,"issue_type":"epic","owner":"matsilverstein@gmail.com","created_at":"2026-08-20T13:52:47Z","created_by":"silverstein","updated_at":"2026-09-01T09:45:31Z","closed_at":"2026-09-01T09:45:31Z","close_reason":"Verified long-document schema extraction workspace epic completed through exact local E9E.7 candidate aadaa6808939d25b6d56ddf43d91ca6e347cc1d0. All children e9e.1-e9e.9 are closed: rights and claim contract, evaluation, document map, transactional workspace, source-bound replay, campaign integrity, multiline citation repair, and cross-host MCP integration. Final Mac and Windows packed lifecycle qualification passes. This closes the product-development epic only; push, merge, signing, release, publication, distribution, benchmark qualification and public claims remain separate protected gates.","labels":["agents","evaluation","extraction","provenance"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-e9e","depends_on_id":"pdf-toolkit-mcp-0av","type":"discovered-from","created_at":"2026-08-20T13:54:19Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-0av.1","title":"E1: emit MATH_NOT_RECONSTRUCTED typed gap for dropped equations","description":"HIGHEST LEVERAGE. 71.8% of the bench's 3,385 math tests fail SILENTLY because there is no gap code for 'equations not reconstructed' — we drop equations without declaring it, violating our own fail-closed standard. Add MATH_NOT_RECONSTRUCTED to GAP_CODES in server/markdown-conversion.js (currently 17 codes, ~line 64) and emit it per page when math-bearing source content is detected but not represented in the Markdown. Must be evidence-backed (do not guess): candidate signals already available in the IR are math-class text items, Type-3/Computer-Modern glyph groups, and the existing math-run detection used by the bounded log-spacing repair. Fail-closed discipline unchanged: this DECLARES a limit, it does not attempt reconstruction. Expected effect: converts ~2,400 silent failures into declared limits, moving overall silent from 45.2% toward ~11%.","acceptance_criteria":"MATH_NOT_RECONSTRUCTED registered in GAP_CODES and in the output schema enum; emitted per page only on evidence of unrepresented math content, never speculatively; LIMITATIONS prose updated; no change to reconstruction behavior (byte-identical Markdown body); fixtures cover positive (equations present, gap emitted) and negative (no math, no gap); share-mirror parity; re-run bench shows math silent-rate collapse.","notes":"SCOPE CORRECTION (verified 2026-08-19): the converter ALREADY declares this limit in prose — a '## Conversion limitations' section ships in 95.2% of outputs (1336/1403) stating 'General equations, subscripts, other fraction bars... remain source reading-order text rather than being guessed.' So 'we drop equations without declaring it' is WRONG; do not repeat it. The accurate gap is narrower: the limit is global PROSE, not a PER-PAGE TYPED gap, so a consumer cannot tell which pages actually lost math and no machine can route on it. E1 = make an existing prose limitation machine-readable and page-specific. The three-bucket metric measures TYPED-GAP COVERAGE, not disclosure; define 'silent' precisely as 'not covered by a typed gap' whenever the report card is published.\nE1 MEASURED ON REAL MATH (2026-08-19, control tower, 338 bench PDFs across 4 categories, 0 conversion errors). FIRING: arxiv_math 33/120 = 27.5%; old_scans_math 0/36 = 0.0% BUT 36/36 were already covered by TEXT_LAYER_EMPTY/OCR_NOT_PERFORMED so no gap was needed there (correct behaviour, not a miss). FALSE-POSITIVE CONTROLS: headers_footers 1/120 = 0.8%; long_tiny_text 0/62 = 0.0%. VERDICT: precision excellent, coverage PARTIAL. Honest impact estimate: overall silent 45.2% -\u003e ~33.8%, NOT the ~11% projected in the epic (that assumed full math coverage). Correcting the epic's projection. Two documented coverage caps explain the shortfall, both failing safe (silence, never a fabricated gap): (1) the named-operator branch reuses the codebase's existing CAPITALISED Lim|Max|Min|sum|int|infinity vocabulary, so real papers' lowercase lim/max/min do not match; (2) the run-shape gate requires every structural item to be a single character, math punctuation, or 'log', so displayed equations arriving as one merged text item emit nothing. Broadening either is an evidence change deserving its own review — do NOT fold it into this lane. Gates re-verified by control tower: math-gap 6/6, convert+markdown 98/98, share parity green; diff scope clean, share mirrors byte-identical, Markdown body byte-identical across 14 pre-change baselines.\nHANDOFF 2026-08-20: pdf:2 (Claude) is out of credits; codex takes over in tmux pdf:3. IMMEDIATE ASK: adversarial diff review of this lane (branch claude/math-not-reconstructed-gap @ a05cd53) before integration — it is the one lane that never got the standing codex review. Review focus: (1) can the evidence rule ever produce a FABRICATED gap (fail-closed is the moat); (2) is the byte-identical-Markdown-body assertion real and not circular (14 pre-change baselines); (3) a page emitting the gap flips conversion_status complete-\u003epartial via the existing pageStatus contract — acceptable or needs doc callout; (4) TOOL_CONTRACT_SHA256 repin is purely additive. olmOCR-bench corpus MOVED to a durable path for you: /home/mat/Sites/pdf-tools-bench/olmOCR-bench (first-run results in ../results/). Full private handoff doc is in the PARA project folder.\nCODEX ADVERSARIAL REVIEW 2026-08-20: Original a05cd53 blocked because Lim|Max|Min alone could fabricate a math gap (for example, prose 'Max 5'). Remediated exact head f5d60170ece21d9ab62d93f7e3458325ad533e92 removes named-word-only evidence, requires unambiguous math symbols or a structural equals-sign run corroborated by adjacent same-baseline cross-font letters, adds adversarial negatives/positive relation coverage, documents complete-to-partial and output-hash consequences, and bumps the extraction renderer identity to 1.18.0 across source/mirror contracts. Paired same-sample corpus diagnostics preserved all observed genuine triggers while removing the synthetic fabricated route: arxiv_math 25/119 valid, headers_footers 1/113 valid (source inspection confirmed genuine math content), long_tiny_text 0/62, old_scans_math 0/36. Focused gates: math-gap 6/6; math-gap+markdown+contract 122/122; convert+markdown+bakeoff green with contract 43/43 on isolated rerun after one contention timeout; share contract green (44 tools, 14 prompts, 122 licensed SBOM components); source/share mirrors byte-identical; diff-check clean. Verdict: conditional PASS for exact-SHA local integration and combined-tree tranche gates; no push, release, or public benchmark claim.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T13:48:58Z","created_by":"silverstein","updated_at":"2026-08-20T19:26:57Z","started_at":"2026-08-20T13:34:06Z","closed_at":"2026-08-20T19:26:57Z","close_reason":"Integrated and adversarially reviewed in exact local E3 head 0bccaa399421232c476dc3de3acdb2cf24250bd7; E1 commit f5d60170ece21d9ab62d93f7e3458325ad533e92. Fail-closed fabricated-gap route removed; focused gates and combined exact-head macOS aggregate green. Private evidence: evidence-2026-08-20-e1-codex-adversarial-review.md. No push, release, or public claim.","labels":["evaluation","extraction","honesty"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-0av.1","depends_on_id":"pdf-toolkit-mcp-0av","type":"parent-child","created_at":"2026-08-19T13:48:57Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-0av","title":"Close the silent-failure gaps measured by the first olmOCR-bench run","description":"First full olmOCR-bench run against shipped convert_pdf_to_markdown (1,403 PDFs / 7,019 tests, all page 1; 0 conversion failures, 1081ms/PDF). Report card with abstention decomposition: 13.1% pass, 41.6% failed-but-FLAGGED (typed gap covered it), 45.2% failed SILENTLY (confident output, no gap). Excluding a crude math proxy: 24.8% pass / 20.5% silent. VALIDATED: on old_scans + old_scans_math (984 tests over unreadable documents) silent-failure rate is 0.0% — every failure carried a typed gap. That is the differentiator and no competitor publishes it. GAPS vs the only published peer in our class (Marker no-OCR CPU): headers_footers 42.1 vs 92.8 (-50.7), table_tests 0.7 vs 46.1 (-45.4), multi_column 43.9 vs 67.0 (-23.1); at parity on old_scans (12.9 vs 14.3) and arxiv_math (0.1 vs 0.0). This epic closes the silent-failure holes first (honesty), then the accuracy gap. CAVEAT to carry: math (48% of the bench) was scored by a normalized-containment proxy, NOT the official rendered-bbox test; always report the excluding-math view alongside.","acceptance_criteria":"Silent-failure rate materially reduced (target: overall silent from 45.2% toward ~11% via the math gap alone); header/footer removal closes a measurable share of the -50.7 deficit; bench runs as a tracked repo gate so the three-bucket report card is produced per release; every published number carries the math-proxy and scorer-provenance caveats.","notes":"OWNERSHIP 2026-08-20: epic handed from pdf:2 (Claude, out of credits) to codex in tmux pdf:3. Order: E1 review+integrate, then E2 (header/footer, biggest accuracy gap -50.7), then E3 (bench as tracked gate, blocked on E1), E1b as evidence-widening follow-up. Bench corpus now durable at /home/mat/Sites/pdf-tools-bench/olmOCR-bench.","status":"open","priority":1,"issue_type":"epic","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T13:48:27Z","created_by":"silverstein","updated_at":"2026-08-20T13:18:18Z","labels":["evaluation","extraction","honesty"],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-0av","title":"Close the silent-failure gaps measured by the first olmOCR-bench run","description":"First full olmOCR-bench run against shipped convert_pdf_to_markdown (1,403 PDFs / 7,019 tests, all page 1; 0 conversion failures, 1081ms/PDF). Report card with abstention decomposition: 13.1% pass, 41.6% failed-but-FLAGGED (typed gap covered it), 45.2% failed SILENTLY (confident output, no gap). Excluding a crude math proxy: 24.8% pass / 20.5% silent. VALIDATED: on old_scans + old_scans_math (984 tests over unreadable documents) silent-failure rate is 0.0% — every failure carried a typed gap. That is the differentiator and no competitor publishes it. GAPS vs the only published peer in our class (Marker no-OCR CPU): headers_footers 42.1 vs 92.8 (-50.7), table_tests 0.7 vs 46.1 (-45.4), multi_column 43.9 vs 67.0 (-23.1); at parity on old_scans (12.9 vs 14.3) and arxiv_math (0.1 vs 0.0). This epic closes the silent-failure holes first (honesty), then the accuracy gap. CAVEAT to carry: math (48% of the bench) was scored by a normalized-containment proxy, NOT the official rendered-bbox test; always report the excluding-math view alongside.","acceptance_criteria":"Silent-failure rate materially reduced (target: overall silent from 45.2% toward ~11% via the math gap alone); header/footer removal closes a measurable share of the -50.7 deficit; bench runs as a tracked repo gate so the three-bucket report card is produced per release; every published number carries the math-proxy and scorer-provenance caveats.","notes":"OWNERSHIP 2026-08-20: epic handed from pdf:2 (Claude, out of credits) to codex in tmux pdf:3. Order: E1 review+integrate, then E2 (header/footer, biggest accuracy gap -50.7), then E3 (bench as tracked gate, blocked on E1), E1b as evidence-widening follow-up. Bench corpus now durable at /home/mat/Sites/pdf-tools-bench/olmOCR-bench.","status":"closed","priority":1,"issue_type":"epic","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T13:48:27Z","created_by":"silverstein","updated_at":"2026-09-03T21:28:32Z","closed_at":"2026-09-03T21:28:32Z","close_reason":"Completed the silent-failure closure epic: E1 math abstention, E2 header/footer evidence, E3 tracked benchmark gate, and E1b evidence widening are all complete with exact-SHA evidence. E1b final c15e1fa59099da03e7439248ca51cbb78fd7e9e1 raised arxiv_math typed-gap coverage from 28.0% to 42.1% with 0.61% controls and zero source-content drift.","labels":["evaluation","extraction","honesty"],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-09u.4","title":"Integration: fixtures, tests, docs/MCP_CONTRACT reconcile, engine-version bump, share parity","description":"Deterministic fixtures for each bug (failed-text-layer page; identical-repeated-pages; appearance_state-only change if fixing bug3); test/compare-pdfs-coverage.test.js; update existing compare suites intentionally where a fix flips an over-optimistic supported; bump comparison engine/schema version since coverage output changed (wire-visible); reconcile docs/MCP_CONTRACT.md compare_pdfs truthfulness paragraph and docs/COMPARISON_EVALUATION.md; share-mirror byte parity; test:all. codex diff review before integration.","acceptance_criteria":"compare-pdfs-coverage test + existing compare suites + share parity green; version bumped; docs reconciled; codex diff review clean.","notes":"Completed in exact clean candidate 06dcc6f54e1eabca94e7e279fdca3bdc18fa9f54 (parent 98c7ab7631423ce52e2f35bba1b569ab66253314, tree ef20468a6f876d7388db46d7d70d4340921a79a2). Focused comparison 89/89, adjoining integration 55/55, full macOS test:all 159 files/2518 tests plus node-native 62/62; declared skips 99 Vitest and 9 native. Source/share parity and diff checks pass. Local candidate only; no push, merge, release, or publication. Comparison schema is 1.1 and engine is 0.2.0; fixtures, MCP contract, evaluation adapter/oracle, and share copies are reconciled.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-15T20:37:20Z","created_by":"silverstein","updated_at":"2026-08-28T00:36:48Z","started_at":"2026-08-28T00:36:35Z","closed_at":"2026-08-28T00:36:48Z","close_reason":"Fixtures, docs, schema/engine versioning, evaluation projection, source/share parity, and full aggregate verification are complete.","labels":["bug","compare-pdfs","correctness"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-09u.4","depends_on_id":"pdf-toolkit-mcp-09u","type":"parent-child","created_at":"2026-08-15T20:37:20Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-09u.4","depends_on_id":"pdf-toolkit-mcp-09u.1","type":"blocks","created_at":"2026-08-15T20:37:22Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-09u.4","depends_on_id":"pdf-toolkit-mcp-09u.2","type":"blocks","created_at":"2026-08-15T20:37:25Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-09u.4","depends_on_id":"pdf-toolkit-mcp-09u.3","type":"blocks","created_at":"2026-08-15T20:37:27Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":3,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-09u.2","title":"Bug2: surface repeated-page ambiguity as partial coverage instead of silent green","description":"repeated_ambiguous alignments (pdf-comparison.js:259/263) are excluded from text (:600) and structure (:856) comparison but not reflected in coverage, so identical repeated/template pages read supported+green (no_reported_changes :1025). Degrade affected channels (semantic,text,structure) to partial with typed reason REPEATED_PAGE_AMBIGUITY in the engine (not a wrapper) so all consumers are safe. Do not force comparison of ambiguous pages; honest outcome is partial coverage. Keep equivalence_claim:false.","acceptance_criteria":"A doc of identical repeated pages reports affected channels partial with REPEATED_PAGE_AMBIGUITY; no_reported_changes is not trivially green when pages went uncompared.","notes":"Completed in exact clean candidate 06dcc6f54e1eabca94e7e279fdca3bdc18fa9f54 (parent 98c7ab7631423ce52e2f35bba1b569ab66253314, tree ef20468a6f876d7388db46d7d70d4340921a79a2). Focused comparison 89/89, adjoining integration 55/55, full macOS test:all 159 files/2518 tests plus node-native 62/62; declared skips 99 Vitest and 9 native. Source/share parity and diff checks pass. Local candidate only; no push, merge, release, or publication.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-15T20:37:15Z","created_by":"silverstein","updated_at":"2026-08-28T00:36:08Z","started_at":"2026-08-28T00:35:56Z","closed_at":"2026-08-28T00:36:08Z","close_reason":"Repeated-page ambiguity now produces partial semantic/text/structure coverage and prevents a trivially green result.","labels":["bug","compare-pdfs","correctness"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-09u.2","depends_on_id":"pdf-toolkit-mcp-09u","type":"parent-child","created_at":"2026-08-15T20:37:15Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-09u.1","title":"Bug1: degrade compare_pdfs semantic/text coverage on failed/partial IR page status","description":"In derivePdfComparisonCoverage (pdf-comparison.js:274), also degrade semantic+text coverage when a compared page reports text_layer_status in {partial,failed} or extraction_status in {partial,failed} (fields on the IR page, output-schemas.js:815-819). failed -\u003e unavailable (channel could not observe that page) or at minimum partial; partial -\u003e partial. Typed reason codes \u003cSIDE\u003e_TEXT_LAYER_FAILED/_PARTIAL, \u003cSIDE\u003e_EXTRACTION_FAILED/_PARTIAL. Keep existing truncation degradation. Never claim supported for a page the text channel could not read.","acceptance_criteria":"A comparison where one side has a failed/empty text-layer page reports semantic+text coverage not-supported with typed reason; clean text/text still supported; reason codes deduped+sorted.","notes":"Completed in exact clean candidate 06dcc6f54e1eabca94e7e279fdca3bdc18fa9f54 (parent 98c7ab7631423ce52e2f35bba1b569ab66253314, tree ef20468a6f876d7388db46d7d70d4340921a79a2). Focused comparison 89/89, adjoining integration 55/55, full macOS test:all 159 files/2518 tests plus node-native 62/62; declared skips 99 Vitest and 9 native. Source/share parity and diff checks pass. Local candidate only; no push, merge, release, or publication.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-15T20:37:13Z","created_by":"silverstein","updated_at":"2026-08-28T00:35:50Z","started_at":"2026-08-27T23:25:19Z","closed_at":"2026-08-28T00:35:50Z","close_reason":"Failed or partial IR pages now degrade semantic/text coverage with typed reasons and fail-closed status.","labels":["bug","compare-pdfs","correctness"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-09u.1","depends_on_id":"pdf-toolkit-mcp-09u","type":"parent-child","created_at":"2026-08-15T20:37:13Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} @@ -240,13 +246,14 @@ {"_type":"issue","id":"pdf-toolkit-mcp-gz3","title":"v0.9.0: Lumin API handoff for Tier 2 cryptographic signing","description":"Tier 2 of the two-tier signature plan agreed with Max on 2026-04-09. PDF Tools prepares the packet locally, Lumin's API adds the cryptographic signature + certificate. We never touch identity (Max's moat).","design":"New tool request_lumin_signature that takes a prepared PDF + Lumin API key (from LUMIN_API_KEY env var) and POSTs to Lumin's signing endpoint. Returns the signed PDF with certificate embedded. Needs API spec from Max — blocks on that.","acceptance_criteria":"- [ ] Max provides API spec\\n- [ ] request_lumin_signature tool implemented\\n- [ ] LUMIN_API_KEY env var documented\\n- [ ] Error paths tested (bad key, network error, malformed packet)\\n- [ ] Returns cryptographically-signed PDF","status":"open","priority":1,"issue_type":"feature","owner":"matsilverstein@gmail.com","created_at":"2026-04-17T05:07:10Z","created_by":"silverstein","updated_at":"2026-04-17T05:07:10Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-48j","title":"v0.8.1: Viewer-gated signature UX with click-to-sign","description":"v0.8.0 ships with CLI intent tokens (user_intent_statement + user_confirmed_at). The real UX is click-to-sign in the viewer: user picks location visually, types their name in a confirm dialog, clicks Sign — viewer dispatches apply_signature with a server-issued single-use intent token.","design":"Server issues per-session intent tokens when display_pdf opens. Viewer 'Sign here' overlay at each add_signature_field location. Click -\u003e confirm modal (name + intent statement) -\u003e app.callServerTool({ name: 'apply_signature', arguments: { ..., intent_token } }). Server validates token single-use + matching session. Viewer captures drawn signatures via canvas -\u003e data URL -\u003e create_signature.","acceptance_criteria":"- [ ] Intent token system in server\\n- [ ] 'Sign here' overlay in viewer\\n- [ ] Confirm modal collects name + intent\\n- [ ] Drawn signature capture in viewer\\n- [ ] End-to-end: draw, pick location, sign, save — all without leaving the viewer","status":"closed","priority":1,"issue_type":"feature","owner":"matsilverstein@gmail.com","created_at":"2026-04-17T05:06:58Z","created_by":"silverstein","updated_at":"2026-04-17T14:07:24Z","closed_at":"2026-04-17T14:07:24Z","close_reason":"Superseded by v0.8.0 flagship plan: split into pdf-toolkit-mcp-75x (overlays), zeg (confirm modal), 3d9 (drawing canvas with touch), d10 (drag-to-create), plus a5t (Phase B review gate).","dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-d1y","title":"Test apply_signature with encrypted PDF + correct/wrong password","description":"Existing tools cover the password path but apply_signature and add_signature_field are new. Risk of regression on encrypted PDFs.","design":"Add two tests: (a) apply_signature with correct password succeeds, output is signed, (b) wrong password throws the standard 'PDF is password-protected' error and does not create a partial output file.","acceptance_criteria":"- [ ] Correct password test passes\\n- [ ] Wrong password test asserts no output file created\\n- [ ] Same shape for add_signature_field and prepare_signing_packet","notes":"2026-08-28 exact-SHA review: original 070eb2f was superseded because byte inequality could be satisfied by a re-protection-only no-op. Final clean successor 136f70b284c749f66279b7052de64e0d5919c724 (parent 343b94f7f8487d25f0fab899409f23bdf98b7a52, tree d51c09e2c912b9a647eca1582bf832391522fe9c) independently reopens every encrypted output through PDF.js and requires the exact visible signing change, while proving wrong-password outputs are absent and the source stays byte-identical. VM focused 12/12; Mac six-file signing/QPDF bank 125/125 under macOS 26.6 arm64, Node 22.23.2, qpdf 12.3.2. PARA evidence updated. Technical test-only GO for controlled local integration; no real signature, provider call, push, merge, release, external send, or public claim.","status":"closed","priority":1,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-04-17T05:06:25Z","created_by":"silverstein","updated_at":"2026-08-28T04:06:39Z","started_at":"2026-07-21T22:52:42Z","closed_at":"2026-08-28T04:06:39Z","close_reason":"Completed at reviewed exact SHA 136f70b284c749f66279b7052de64e0d5919c724: all three encrypted signing workflows prove correct/wrong password behavior, preserved encryption, exact visible mutation replay, and unchanged source; 125/125 adjoining Mac tests pass.","dependencies":[{"issue_id":"pdf-toolkit-mcp-d1y","depends_on_id":"pdf-toolkit-mcp-8ik","type":"blocks","created_at":"2026-07-21T23:05:36Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-0sgd","title":"Validate olmOCR output directory before starting corpus conversion","description":"The olmOCR runner validates and creates its output only after converting the full corpus. An absent output parent therefore wastes a complete 1,403-document run before failing at the final atomic write. Validate the requested output parent and exclusive target before conversion begins, with a regression proving zero documents are processed when the destination is invalid.","status":"closed","priority":2,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-03T21:24:47Z","created_by":"silverstein","updated_at":"2026-09-03T22:54:31Z","started_at":"2026-09-03T21:51:16Z","closed_at":"2026-09-03T22:54:31Z","close_reason":"Completed at exact clean commit 6e345b03cbfa69a4367e69c00454231bb2dcc894 (parent ed7c936). Invalid or occupied output destinations now fail before corpus access or candidate startup with zero documents processed; final publication remains exclusive. CI-exposed time-varying layout fixture corrected to reuse exact PDF bytes. Affected tests 79/79 under Linux Node 20/22 and Mac Node 22; GitHub run 33813539450 passed both full gates through packed MCPB smoke. PR #183 open and mergeable.","dependencies":[{"issue_id":"pdf-toolkit-mcp-0sgd","depends_on_id":"pdf-toolkit-mcp-0av.4","type":"discovered-from","created_at":"2026-09-03T21:24:47Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-8mpe","title":"Raise filesystem-heavy mirror contract timeout","description":"The exact v0.13.0 PR run 33658346338 completed the source/share byte-identity work in about 5.17 seconds on Node 20.19 but the test inherited Vitest's 5-second default, producing a load-sensitive false failure after the bytes matched. Give only this enumerated filesystem-heavy contract a bounded 15-second timeout and rerun both supported Node gates.","notes":"Raised only the filesystem-heavy source/share byte-identity test to a bounded 15-second timeout in commit 872ab0a7cb8d3c9f215ad836900910d266ad80e4. Focused 50/50 passed locally. Exact-tip PR gate 33660279970 passed both Node 20.19 and 22.12 through the full tests, share contract, MCPB build, and packed smoke.","status":"closed","priority":2,"issue_type":"bug","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T17:18:03Z","created_by":"silverstein","updated_at":"2026-09-02T18:26:37Z","closed_at":"2026-09-02T18:26:37Z","close_reason":"Closed at exact PR 178 head 5475b36 with focused and Linux exact-head proof.","dependencies":[{"issue_id":"pdf-toolkit-mcp-8mpe","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T17:18:03Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-e5c2","title":"Refresh GitHub Actions runtimes before runner deprecation","description":"GitHub PR gate run 33630556968 passed on both supported product Node versions, but GitHub warned that the JavaScript runtimes embedded by the pinned checkout/setup-node action commits target deprecated Node 20 and are being forced to Node 24. Review current upstream action releases, update only to immutable reviewed commits whose bundled runtime is supported, preserve the product Node 20.19 and 22.12 matrix, and rerun the full PR gate.","notes":"PR #179 at exact source commit 4c7a1321e141906cd43df9d7688ffbf8cc69d984. Official immutable Node 24 action pins verified. Exact-commit Windows render 33639168932 and Windows runtime 33639173583 passed. Linux manual exact-SHA gate 33643395665 passed Node 20.19 and 22.12; all five final check jobs had zero annotations. Initial PR run 33639119690 had Node 22 green but a lost Node 20 runner was cancelled after 30 minutes; replacement exact-SHA run is governing.","status":"closed","priority":2,"issue_type":"chore","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T12:49:39Z","created_by":"silverstein","updated_at":"2026-09-02T14:53:25Z","started_at":"2026-09-02T13:26:20Z","closed_at":"2026-09-02T14:52:43Z","close_reason":"Official Actions refreshed to immutable Node 24 runtime commits with Linux and Windows exact-SHA qualification.","dependencies":[{"issue_id":"pdf-toolkit-mcp-e5c2","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T12:49:39Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-5ol9","title":"Keep byte-frozen test sources LF-stable on Windows","description":"The current master Windows runtime gate converts test JavaScript fixtures to CRLF. Exact byte-bound deep-malformed contract tests then fail 20/46; the observed hash b198ea... exactly matches the CRLF form of test/helpers/deep-malformed-row-runner.js. Add a narrow .gitattributes rule that preserves LF for test JavaScript sources and verify the real Windows runtime gate.","notes":"Closed in PR #179 source commit 4c7a1321e141906cd43df9d7688ffbf8cc69d984. Untouched-master control run 33637054910 reproduced 20/46 Windows native-test failures. CRLF hash matched exactly; LF attributes plus host-native fixture paths restored 45 passed, 0 failed, 1 intentional skip in exact-commit Windows runtime run 33639173583. Local contract replay 29/29.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T13:44:05Z","created_by":"silverstein","updated_at":"2026-09-02T14:53:19Z","started_at":"2026-09-02T13:44:26Z","closed_at":"2026-09-02T14:53:19Z","close_reason":"Windows native contract gate restored and verified at exact source commit 4c7a1321e141906cd43df9d7688ffbf8cc69d984.","dependencies":[{"issue_id":"pdf-toolkit-mcp-5ol9","depends_on_id":"pdf-toolkit-mcp-e5c2","type":"discovered-from","created_at":"2026-09-02T13:44:05Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-qv2q","title":"Hold V29 single-missing-path recovery regressions","description":"Integrate the zero-inference operator coverage from exact commit 589720c for the two field shapes observed in V29: one missing summary.first_table or one missing publication.publication_citation_excerpt while all other paths are already admitted. Prove deterministic recovery changes only the missing path and preserves prior admissions. Historical V29 receipts remain immutable; no model/provider call or campaign rerun.","acceptance_criteria":"The two exact field-shaped tests are present on the E9E.7 reconciliation frontier, pass on VM and exact Mac Node alongside the response-pipeline bank, the changed landing SHA receives independent review, and durable PARA/evidence records distinguish historical whole-result omitted_paths from the one source-extraction missing path.","status":"closed","priority":2,"issue_type":"task","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T21:53:45Z","created_by":"silverstein","updated_at":"2026-09-01T22:01:57Z","closed_at":"2026-09-01T22:01:57Z","close_reason":"Integrated exact V29 single-missing-path recovery regressions at b314741 with Mac 125/125 and independent exact-SHA GO; historical whole-result omitted_paths remain distinct from one-path source-extraction recovery.","dependencies":[{"issue_id":"pdf-toolkit-mcp-qv2q","depends_on_id":"pdf-toolkit-mcp-xa3c","type":"discovered-from","created_at":"2026-09-01T21:53:44Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-6ed1","title":"Separate campaign transport status, product outcome, and call counts","description":"Read-only operator evidence identified two related campaign-receipt naming ambiguities. op0901c proved completed_request_count in the authoritative ceiling error carries the campaign-wide reserved-call ledger count, while controller model_calls and batch counts are document-local; historical V29 evidence used the same field name for a document-local count. op0901d proved the campaign summary hard-codes top-level ok:true after writing the execution index even when many document receipts fail, while calibration correctly uses ok:passed and a matching exit code. Preserve consumed evidence, but make transport/completion status, product acceptance, campaign-wide ledger counts, and document-local calls impossible to confuse.","acceptance_criteria":"Schema and documentation explicitly distinguish controller/index write completion from product/campaign acceptance; top-level summary does not use an unqualified ok:true for a failed campaign; process exit semantics are documented and tested without suppressing retained failure denominators; campaign-wide ledger count and document-local model calls have separate qualified fields or compatibility rules; V29 mid-document, op0901c producer-shape, 19/30-failure summary, real sealed-ledger, and forged-signal hostiles pass. No campaign rerun, provider/model call, release or public claim is implied.","notes":"2026-09-01 op0901d vault evidence bd76199: V29/V30 campaign main prints hard-coded {ok:true,results}; ok:false has no producer and per-document failures do not set process.exitCode. Calibration separately uses ok:passed plus matching exit code. Treat as campaign-contract honesty, not E9E.7 product-surface failure.\n2026-09-01 completed source-contract candidate 12f43842630eef0cb684537677583a2375effc09 (parent 4e4d5ce0c0b2a6d0fcee89810496423ebe34018a, tree 8dd41f768adb1a5f175008e458e21b5b77d531cb): authenticated final-index and expected-binding physical pins, exact retained receipt mapping/outcome counts, strict duplicate-key rejection, read-only CLI with explicit completion-vs-acceptance semantics, V29 trace/V30 ledger compatibility. Independent exact-SHA GO with no P0-P3. VM 73/73, Mac 135/135, retained V29/V30 30-receipt replays 11/19 and 23/7 with no ok. Evidence SHA bb99c025d57bdb9d82ee39fe92ec43773e33001a1072db87085acc2e2d3addb1. Historical sealed stdout unchanged; future executable authorities must bind/invoke this or equivalent logic.","status":"closed","priority":2,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T09:47:07Z","created_by":"silverstein","updated_at":"2026-09-01T14:54:39Z","started_at":"2026-09-01T13:42:01Z","closed_at":"2026-09-01T14:54:39Z","close_reason":"Completed exact source contract 12f43842630eef0cb684537677583a2375effc09 with independently reviewed retained-byte/index/receipt authentication and truthful completion/acceptance/count semantics; no campaign rerun or E9E.7 product-surface change.","dependencies":[{"issue_id":"pdf-toolkit-mcp-6ed1","depends_on_id":"pdf-toolkit-mcp-e9e.7","type":"discovered-from","created_at":"2026-09-01T09:47:06Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-lsrf","title":"Stabilize worker-thread malformed-output assertion under aggregate load","description":"E9E.7 Mac aggregate at exact SHA 7427795 reached 2740/2741 passing tests but pdf-lib-subprocess-boundary's malformed-control worker used the same 150ms wall timeout as the intentional timeout fixture. Under aggregate contention, the valid malformed message arrived after 150ms and was classified as timeout; the untouched file passed 47/47 in three immediate isolated reruns. Give only the malformed-output case a startup-safe bound while preserving the 150ms timeout assertion, then rerun the aggregate.","status":"closed","priority":2,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-01T07:19:13Z","created_by":"silverstein","updated_at":"2026-09-01T09:40:54Z","started_at":"2026-09-01T07:19:35Z","closed_at":"2026-09-01T09:40:54Z","close_reason":"Closed at exact clean E9E.7 candidate aadaa6808939d25b6d56ddf43d91ca6e347cc1d0. The malformed-output worker keeps the intentional 150ms timeout case while using a startup-safe bound for the valid malformed control. Final exact Mac aggregate passed 2752 Vitest tests with zero failures plus 62 node-native tests with zero failures; only declared skips remained.","dependencies":[{"issue_id":"pdf-toolkit-mcp-lsrf","depends_on_id":"pdf-toolkit-mcp-e9e.7","type":"discovered-from","created_at":"2026-09-01T07:19:13Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-e9e.7","title":"Integrate verified extraction workflow across hosts and packages","description":"If the paired evaluation passes, select the smallest useful MCP surface, publish strict schemas and lifecycle documentation, mirror source and share runtime changes, and qualify source, artifacts and real hosts.","acceptance_criteria":"Focused and aggregate tests, deterministic share and MCPB builds, packed native smoke, macOS and Windows host workflows, privacy and recovery checks, independent exact-SHA review, and truthful documentation pass. Push, merge, release and public claims retain separate authority.","status":"closed","priority":2,"issue_type":"feature","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-20T13:53:48Z","created_by":"silverstein","updated_at":"2026-09-01T09:43:53Z","started_at":"2026-09-01T05:23:02Z","closed_at":"2026-09-01T09:43:53Z","close_reason":"Completed exact local candidate aadaa6808939d25b6d56ddf43d91ca6e347cc1d0, tree c3905e1f7f77f85f9d910cbbccb1f7d649be6039: seven model-free verified-extraction lifecycle tools across source/share/MCPB; strict schemas, transactional/replay/privacy/recovery checks; focused 108/108 and 214/214; exact Mac aggregate 2752 Vitest plus 62 native with zero failures; deterministic MCPB dc990ce9 and ZIP 5222a5c4; official packed lifecycle smoke passed Darwin/arm64 and Windows x64. Control-tower exact-SHA adversarial review, byte parity and clean worktrees pass. Evidence SHA 4f50668b828479b5ef6f0f155083bcb58774e46b439cdf08dcac070fae273a46 is synced VM/Mac. Push, merge, signing, release, publication and public claims remain separate protected gates.","labels":["agents","evaluation","extraction","hosts","packaging","provenance"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-0x3","type":"blocks","created_at":"2026-08-29T14:59:02Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-2hn","type":"blocks","created_at":"2026-08-27T17:34:47Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-42y","type":"blocks","created_at":"2026-08-23T22:05:30Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-5c2","type":"blocks","created_at":"2026-08-29T05:09:09Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-5v7","type":"blocks","created_at":"2026-08-29T00:41:54Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-5w9","type":"blocks","created_at":"2026-08-29T04:37:22Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-64n8","type":"blocks","created_at":"2026-08-30T16:30:11Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-82v","type":"blocks","created_at":"2026-08-28T20:56:22Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-8bx","type":"blocks","created_at":"2026-08-29T00:12:09Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-8cc","type":"blocks","created_at":"2026-08-28T13:36:31Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-9qd","type":"blocks","created_at":"2026-08-28T05:45:20Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-c9f","type":"blocks","created_at":"2026-08-23T07:27:47Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-cpd","type":"blocks","created_at":"2026-08-23T08:38:09Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-d3pa","type":"blocks","created_at":"2026-08-30T17:02:52Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-dqy","type":"blocks","created_at":"2026-08-30T02:07:20Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-e9e","type":"parent-child","created_at":"2026-08-20T13:53:48Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-e9e.6","type":"blocks","created_at":"2026-08-20T13:54:50Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-e9e.9","type":"blocks","created_at":"2026-08-28T20:04:16Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-fkx","type":"blocks","created_at":"2026-08-28T21:23:52Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-iyv","type":"blocks","created_at":"2026-08-28T06:43:13Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-jc5","type":"blocks","created_at":"2026-08-28T06:30:23Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-ss6","type":"blocks","created_at":"2026-08-23T06:32:48Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-e9e.7","depends_on_id":"pdf-toolkit-mcp-ve3j","type":"blocks","created_at":"2026-08-30T17:02:57Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":22,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-0av.4","title":"E1b: broaden math evidence to lowercase operators and merged-item equations","description":"E1 measured 27.5% firing on real arxiv_math pages with 0.8% false positives. Two documented caps explain the shortfall, both failing safe: (1) named-operator matching reuses the existing CAPITALISED Lim|Max|Min|sum|int|infinity vocabulary while real papers set lim/max/min lowercase; (2) the run-shape gate requires every structural item to be a single character, math punctuation, or 'log', so a displayed equation arriving as one merged text item emits nothing. Broaden the evidence rule to cover these while holding the false-positive rate near zero. This is an EVIDENCE change, so it needs its own fixtures and review — deliberately not folded into E1.","acceptance_criteria":"Firing rate on arxiv_math materially above 27.5%; false-positive rate on headers_footers/long_tiny_text stays at or below ~1%; Markdown body still byte-identical; no fabricated gaps.","status":"open","priority":2,"issue_type":"task","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T14:25:08Z","created_by":"silverstein","updated_at":"2026-08-19T14:25:08Z","labels":["evaluation","extraction","honesty"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-0av.4","depends_on_id":"pdf-toolkit-mcp-0av","type":"parent-child","created_at":"2026-08-19T14:25:07Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} +{"_type":"issue","id":"pdf-toolkit-mcp-0av.4","title":"E1b: broaden math evidence to lowercase operators and merged-item equations","description":"E1 measured 27.5% firing on real arxiv_math pages with 0.8% false positives. Two documented caps explain the shortfall, both failing safe: (1) named-operator matching reuses the existing CAPITALISED Lim|Max|Min|sum|int|infinity vocabulary while real papers set lim/max/min lowercase; (2) the run-shape gate requires every structural item to be a single character, math punctuation, or 'log', so a displayed equation arriving as one merged text item emits nothing. Broaden the evidence rule to cover these while holding the false-positive rate near zero. This is an EVIDENCE change, so it needs its own fixtures and review — deliberately not folded into E1.","acceptance_criteria":"Firing rate on arxiv_math materially above 27.5%; false-positive rate on headers_footers/long_tiny_text stays at or below ~1%; Markdown body still byte-identical; no fabricated gaps.","status":"closed","priority":2,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T14:25:08Z","created_by":"silverstein","updated_at":"2026-09-03T21:26:47Z","started_at":"2026-09-03T19:27:33Z","closed_at":"2026-09-03T21:26:47Z","close_reason":"Completed at exact clean commit c15e1fa59099da03e7439248ca51cbb78fd7e9e1 (parent ed7c936). Full 1,403-PDF paired run: arxiv_math typed-gap coverage 28.0% to 42.1%, 420 fewer silent math-proxy failures, 0.61% combined controls, zero body drift and zero conversion failures. Final affected bank 170/170, native 62/62, share contract green. Private evidence: evidence-2026-09-03-e1b-math-evidence-widening.md.","labels":["evaluation","extraction","honesty"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-0av.4","depends_on_id":"pdf-toolkit-mcp-0av","type":"parent-child","created_at":"2026-08-19T14:25:07Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-0av.3","title":"E3: land olmOCR-bench as a tracked repo eval gate with the three-bucket report card","description":"Make the measurement repeatable and tracked per release instead of a one-off. Land scripts/eval-olmocr-bench.mjs (runner) + test/eval/olmocr-bench-scorer.js (scorer) with a pinned manifest, following the repo's existing eval discipline (frozen fixtures, pinned digests, claim_boundary). Scorer must implement present/absent/order/table/baseline per the official criteria (max_diffs fuzzy tolerance, absent is case-insensitive, present/order case-sensitive, first_n/last_n) and MUST report the three-bucket decomposition: pass / failed-but-flagged / failed-silent. Known runner bug to avoid: writes must be awaited (an unawaited createWriteStream interleaved 3 of 1,403 records in the first run). Math must be scored separately and labeled a proxy unless the official rendered-bbox test is implemented. Bench is ODC-BY, ~340MB, downloadable; do not vendor it — fetch and pin by digest.","acceptance_criteria":"Runner + scorer land with pinned manifest and claim_boundary; report card reproduces the first-run numbers within tolerance; math reported separately with proxy caveat; three-bucket decomposition is the headline output; documented as a release-qualification gate, not part of npm test.","status":"closed","priority":2,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T13:49:03Z","created_by":"silverstein","updated_at":"2026-08-20T19:29:06Z","started_at":"2026-08-20T14:57:12Z","closed_at":"2026-08-20T19:29:06Z","close_reason":"Completed at exact clean reviewed head 0bccaa399421232c476dc3de3acdb2cf24250bd7. Hash-bound 1,403-PDF/7,019-test run qualifying with zero conversion failures; all 18 regression checks pass; exact-head npm run test:all green (2,535 Vitest + 62 native passes). Public benchmark claim remains prohibited and benchmark_claim_ready is false. Private evidence: evidence-2026-08-20-e3-olmocr-gate.md. No push or release.","labels":["evaluation","extraction","honesty","tooling"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-0av.3","depends_on_id":"pdf-toolkit-mcp-0av","type":"parent-child","created_at":"2026-08-19T13:49:03Z","created_by":"silverstein","metadata":"{}"},{"issue_id":"pdf-toolkit-mcp-0av.3","depends_on_id":"pdf-toolkit-mcp-0av.1","type":"blocks","created_at":"2026-08-19T13:49:05Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":1,"dependent_count":1,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-0av.2","title":"E2: detect and remove running headers/footers with a typed signal","description":"Biggest addressable ACCURACY gap: headers_footers 42.1% vs Marker no-OCR 92.8% (-50.7). The bench's 'absent' tests check that running heads, page numbers, and footers are NOT emitted; we currently pass page furniture straight into the Markdown with no signal. Marker achieves 92.8 on single pages, so cross-page repetition analysis is not required — position/margin geometry plus page-number patterns suffice. Must stay evidence-backed and typed: removal is only permitted on geometric evidence (top/bottom margin band relative to the body text block) plus a recognizable furniture pattern; anything removed is reported (count and kind) rather than silently dropped, so removal never becomes an undeclared edit. For an Obsidian/knowledge-vault use case this is directly valuable.","acceptance_criteria":"Furniture removal is geometry-evidenced and reported (never silent); measurable improvement on the bench headers_footers category with no regression in present/order categories; body content never removed (negative fixtures: a genuine first-line heading in the top band, a table row near the bottom margin); opt-out available; share parity.","notes":"COMPLETED locally at exact commit b30c11b4ee9bde90bbee1a12861b5726031df617 (base f5d6017). Default-on evidence-bounded compact page-furniture removal; PAGE_FURNITURE_REMOVED plus typed counts; exact opt-out; headings/continuations and all source-evidenced table regions protected; 120-character fail-closed ceiling. Exact paired target/control diagnostics: upstream-current absence reproduction +20/0 regressions on 711 comparable header/footer tests; retained conservative diagnostic +49/0; present 442 unchanged; order 764 comparable unchanged. Focused gate 6 files, 158 pass/6 skip; share contract green. Inherited ruled-rectangle validation exclusions were identical E1/E2. No push, release, or public benchmark claim.","status":"closed","priority":2,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-19T13:49:00Z","created_by":"silverstein","updated_at":"2026-08-20T14:56:43Z","started_at":"2026-08-20T14:05:48Z","closed_at":"2026-08-20T14:56:43Z","labels":["evaluation","extraction","honesty"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-0av.2","depends_on_id":"pdf-toolkit-mcp-0av","type":"parent-child","created_at":"2026-08-19T13:49:00Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-09u.3","title":"Bug3: compare form appearance_state, or document why it is intentionally excluded","description":"appearance_state (widget /AS) is observed (pdf-observations.js:412/740, schema output-schemas.js:263) but absent from detectFormChanges compared props (pdf-comparison.js:769). First determine if it carries signal beyond value/default_value (for checkboxes/radios /AS can diverge from logical value in malformed/authored files). If yes, add to the compared properties list. If provably redundant, add a one-line comment at :769 explaining the intentional exclusion. Either way the schema-captured/comparison-ignored mismatch must not remain silent.","acceptance_criteria":"Either a widget-only appearance_state change is reported as a form_field change, or the exclusion is documented with rationale; no silent mismatch.","notes":"Completed in exact clean candidate 06dcc6f54e1eabca94e7e279fdca3bdc18fa9f54 (parent 98c7ab7631423ce52e2f35bba1b569ab66253314, tree ef20468a6f876d7388db46d7d70d4340921a79a2). Focused comparison 89/89, adjoining integration 55/55, full macOS test:all 159 files/2518 tests plus node-native 62/62; declared skips 99 Vitest and 9 native. Source/share parity and diff checks pass. Local candidate only; no push, merge, release, or publication. Checkbox appearance state is observed through value and intentionally not double-counted; the real radio per-widget /AS observation gap remains isolated in pdf-toolkit-mcp-09u.5.","status":"closed","priority":2,"issue_type":"task","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-08-15T20:37:18Z","created_by":"silverstein","updated_at":"2026-08-28T00:36:29Z","started_at":"2026-08-28T00:36:15Z","closed_at":"2026-08-28T00:36:29Z","close_reason":"Appearance-state treatment is explicit and tested; the distinct radio observation-layer gap remains honestly tracked as 09u.5.","labels":["bug","compare-pdfs","correctness"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-09u.3","depends_on_id":"pdf-toolkit-mcp-09u","type":"parent-child","created_at":"2026-08-15T20:37:17Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":1,"comment_count":0} @@ -315,6 +322,3 @@ {"_type":"issue","id":"pdf-toolkit-mcp-zyx.11","title":"Repeated running-header/footer stripping for compact mode","description":"Deferred borrow from pdf-inspector recon; see docs/EXTRACTION_INTELLIGENCE_PLAN_2026-08-03.md deferred notes. Requires W5-style fixture defense before implementation.","status":"open","priority":4,"issue_type":"feature","owner":"matsilverstein@gmail.com","created_at":"2026-08-03T04:41:12Z","created_by":"silverstein","updated_at":"2026-08-03T04:41:12Z","labels":["backlog","conversion","extraction-intelligence","layout"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-zyx.11","depends_on_id":"pdf-toolkit-mcp-zyx","type":"parent-child","created_at":"2026-08-03T04:41:12Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-zyx.10","title":"English-letter-frequency cipher detector with multilingual fixture defense","description":"Deferred borrow from pdf-inspector recon; see docs/EXTRACTION_INTELLIGENCE_PLAN_2026-08-03.md deferred notes. Requires W5-style fixture defense before implementation.","status":"open","priority":4,"issue_type":"feature","owner":"matsilverstein@gmail.com","created_at":"2026-08-03T04:41:10Z","created_by":"silverstein","updated_at":"2026-08-03T04:41:10Z","labels":["backlog","conversion","extraction-intelligence","layout"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-zyx.10","depends_on_id":"pdf-toolkit-mcp-zyx","type":"parent-child","created_at":"2026-08-03T04:41:09Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} {"_type":"issue","id":"pdf-toolkit-mcp-zyx.9","title":"Structural font forensics (used-font ToUnicode inspection) for text integrity","description":"Deferred borrow from pdf-inspector recon; see docs/EXTRACTION_INTELLIGENCE_PLAN_2026-08-03.md deferred notes. Requires W5-style fixture defense before implementation.","status":"open","priority":4,"issue_type":"feature","owner":"matsilverstein@gmail.com","created_at":"2026-08-03T04:41:07Z","created_by":"silverstein","updated_at":"2026-08-03T04:41:07Z","labels":["backlog","conversion","extraction-intelligence","layout"],"dependencies":[{"issue_id":"pdf-toolkit-mcp-zyx.9","depends_on_id":"pdf-toolkit-mcp-zyx","type":"parent-child","created_at":"2026-08-03T04:41:07Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-crzq","title":"Refresh fast-uri and qs production locks after audit advisories","description":"Final v0.13.0 release-candidate qualification on exact Mac Node 22.23.2 passed the complete test/share/MCPB/smoke gates, then npm audit --omit=dev found production advisories against locked fast-uri 3.1.5 and qs 6.15.3. Update only the root/share locks to patched versions allowed by existing parent ranges, re-run production audit and cross-platform release gates, and bind exact final evidence before PR #178 merge review.","status":"closed","priority":1,"issue_type":"bug","assignee":"silverstein","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T17:36:54Z","created_by":"silverstein","updated_at":"2026-09-02T18:26:37Z","started_at":"2026-09-02T17:37:11Z","closed_at":"2026-09-02T18:26:37Z","close_reason":"Closed at exact PR 178 head 5475b36 with zero production audit and cross-platform package proof.","dependencies":[{"issue_id":"pdf-toolkit-mcp-crzq","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T17:36:53Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-9p1u","title":"Use native Windows archive tool in packed MCPB smoke","description":"The exact v0.13.0 reconciliation run 33657244397 reached Windows packed smoke but Git Bash resolved bare tar to GNU tar, which interpreted the D:\\ runner path as a remote archive. Select Windows System32 tar.exe directly without shell interpolation, add a Windows-drive regression, and requalify the exact branch on Windows plus adjoining gates.","notes":"Fixed in commit 0c1181621a981d0067a449245fa306af530a9187 by selecting SystemRoot\\System32\\tar.exe directly and adding a D-drive regression. Exact descendant tip 872ab0a7cb8d3c9f215ad836900910d266ad80e4 passed Windows runtime run 33660300743: exact artifact hash, packed 51-tool/14-prompt stdio smoke, native 45 pass/1 intentional macOS-only skip, and layout probe. Windows render run 33660302897 also passed.","status":"closed","priority":1,"issue_type":"bug","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T16:58:52Z","created_by":"silverstein","updated_at":"2026-09-02T18:23:26Z","closed_at":"2026-09-02T18:23:26Z","close_reason":"Closed at exact PR #178 head 5475b36: native System32 tar selection is covered by the Windows-drive regression; exact-head Windows runtime run 33666289966 passed packed smoke, native tests, and layout diagnostics, and Windows render run 33666299559 passed.","dependencies":[{"issue_id":"pdf-toolkit-mcp-9p1u","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T16:58:51Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"issue","id":"pdf-toolkit-mcp-8mpe","title":"Raise filesystem-heavy mirror contract timeout","description":"The exact v0.13.0 PR run 33658346338 completed the source/share byte-identity work in about 5.17 seconds on Node 20.19 but the test inherited Vitest's 5-second default, producing a load-sensitive false failure after the bytes matched. Give only this enumerated filesystem-heavy contract a bounded 15-second timeout and rerun both supported Node gates.","notes":"Raised only the filesystem-heavy source/share byte-identity test to a bounded 15-second timeout in commit 872ab0a7cb8d3c9f215ad836900910d266ad80e4. Focused 50/50 passed locally. Exact-tip PR gate 33660279970 passed both Node 20.19 and 22.12 through the full tests, share contract, MCPB build, and packed smoke.","status":"closed","priority":2,"issue_type":"bug","owner":"matsilverstein@gmail.com","created_at":"2026-09-02T17:18:03Z","created_by":"silverstein","updated_at":"2026-09-02T18:26:37Z","closed_at":"2026-09-02T18:26:37Z","close_reason":"Closed at exact PR 178 head 5475b36 with focused and Linux exact-head proof.","dependencies":[{"issue_id":"pdf-toolkit-mcp-8mpe","depends_on_id":"pdf-toolkit-mcp-qgty","type":"discovered-from","created_at":"2026-09-02T17:18:03Z","created_by":"silverstein","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}