Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for PDF Verify (PDF Agent Stack)

Pod holds 11 of 11 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to PDF Verify (PDF Agent Stack).

Most discussed

evaluate_policy の advisory 穴 2 件(V-A1 非認証署名の後続変更 / V-A2 非PAdES署名)— v0.7.1 で修正済み

[!NOTE] 記録用 issue。修正が先行しているため起票と同時にクローズする。 ④(Skill 見直し + 実連携)の pdf-trust 実連携で発見し、v0.7.1 で修正・公開済み(commit 1ec5acf・npx 公開版で確認済み)。 出典: docs/FINDINGS-2026-07-20.md。

概要

evaluate_policy の advisory に 2 件の穴があった。どちらも「判定が間違っている」のではなく「判定に必要な事実が呼び出し側に出ない/ルールが素通りする」。 結果として Skill(LLM)が不足分を自力で補いたくなる=「ジャッジはコード、ナラティブは LLM」という委譲設計が壊れる方向の圧力になっていた。engine 側で塞ぐのが筋。

両件とも verdict は不変。advisory と返却 facts の追加のみで、決定論ルールエンジンには触れていない。

V-A1 —…

Read the thread · 2026-07-24 · closed · 1 comment

evaluate_policy の openWorldHint が false のまま(check_revocation: "online" で外部に問い合わせる)

確認した版: 0.28.0

食い違い

Read the thread · 2026-09-17 · closed · 0 comments

response_format: json の出力が 25,000 文字で切り詰められ、JSON として読めなくなる

確認した版: 0.28.0(npm 公開版)/ 2026-09-17 に #16 の A/B で見つけた。0.27.0 でも同じ

起きたこと

各ツールは本文を truncateIfNeeded(src/utils/formatter.ts 19 行)に通す。CHARACTER_LIMIT(src/constants.ts 6 行、25,000)を超えると先頭 25,000 文字に \n\n…(truncated) を足して返す。response_format: "json" でも同じ処理なので、途中で切れた JSON が返る。isError は false のままで、呼び出し側は JSON.parse で失敗するまで気づけない。

実測(esig/dss の検証用 PDF、0.28.0 を MCP 越しに呼んだ)

検体 ツール 本文の長さ JSON として読めるか
51sigs.pdf(署名 51 個、4.6 MB) …

Read the thread · 2026-09-17 · closed · 0 comments

scripts/golden.mjs が validate_conformance の skippedRules(数値)を配列として扱い、take が途中で落ちる

確認した版: 0.28.0 / 2026-09-17 に #16 の A/B で見つけた

起きたこと

esig/dss の PAdES 検証用 PDF(dss-pades/src/test/resources/validation/)を --set に渡すと、node scripts/golden.mjs take が次の例外で終了し、ゴールデンが書き出されない。

file:///.../scripts/golden.mjs:249
TypeError: (raw.skippedRules ?? []).map is not a function

原因

Read the thread · 2026-09-17 · closed · 0 comments

失効情報の thisUpdate と検証時刻の前後関係を検査する(#13 から分離)

#13 から分けた残り。許容幅は実物の検体で測ってから決める。

現在の動作(#13 の実装後)

決めること

「検証時刻に失効していなかった」と言うには、本来は検証時刻以降に発行された失効情報が要る。一方、署名の直前に取得して CMS や DSS に入れた OCSP 応答は、thisUpdate が署名タイムスタンプより数分早いのが普通。厳密にすると多くの実物で good が unknown に変わる。

先に測るもの

Read the thread · 2026-09-17 · closed · 0 comments

埋め込み失効情報の読み取り範囲が、出力の説明と合っていない

確認した版: 0.26.1(commit c88e9f4)

現在の動作

src/services/verification-service.ts 207〜208 行:

const embeddedOcsps = dssOcsps;
const embeddedCrls = [...artifacts.crls, ...dssCrls];

一方、revocation.ts 413 行の detail は 'Embedded OCSP response (DSS/CMS)' で、CMS の OCSP も読んでいるように見える。

仕様

ISO 32000-2…

Read the thread · 2026-09-17 · closed · 0 comments

revocation.status の not_checked が一度も出力されない

確認した版: 0.26.1(commit c88e9f4)

現在の動作

値が書かれている箇所

箇所 記述
src/tools/verify-signatures.ts 68 行(ツールの description) `revocation status ('good' / 'revoked' / 'unknown' /…

Read the thread · 2026-09-17 · closed · 0 comments

失効日時と署名時刻を比べずに revoked → invalid にしている

確認した版: 0.26.1(commit c88e9f4)/ 判定結果が変わる変更

現在の動作

checkRevocation(src/services/revocation.ts 393 行〜)は、OCSP 応答の certStatus が revoked、または CRL に証明書のシリアル番号が載っていれば、RevocationStatus.REVOKED を返す。失効日時(OCSP の revocationTime、CRL の revocationDate)は読んでいない(revocation.ts に両フィールドの参照は 0 件)。

verification-service.ts 244〜248 行は、REVOKED を受け取ると無条件で verdict = invalid にする。

その結果、次の署名もすべて invalid になる。

Read the thread · 2026-09-17 · closed · 0 comments

Most recent

証明書チェーンの基準時刻に、署名者が書いた signingTime をタイムスタンプより優先して使っている

確認した版: 0.26.1(commit c88e9f4)/ 判定結果が変わる変更

現在の動作

src/services/verification-service.ts 209〜211 行:

const checkDate =
  artifacts.signingTime ??
  (cms.signatureTimestamp?.genTime ? new Date(cms.signatureTimestamp.genTime) : new Date());

evaluateTrust は、この checkDate で証明書の有効期間を判定する。順序は次のとおり。

  1. CMS の signingTime 署名属性(署名者が自分で書く値)
  2. 署名タイムスタンプの genTime(TSA が証明する値)
  3. 実行時刻

問題

Read the thread · 2026-09-17 · closed · 0 comments

verify_integrity にリビジョン間のオブジェクト単位差分を追加する(どのオブジェクトが変わったか)

ギャップ

verify_integrity は改ざん検知の構造的事実までは返すが、「どのオブジェクトが書き換わった/追加されたか」は返さない。

現状の出力: リビジョン数(incrementalUpdateCount)・署名範囲外のバイト追加(signaturesWithLaterChanges)・ lastSignatureCoversFile・DocMDP 権限違反。

「署名後に 574 バイト足された」までは分かるが、それが**どのオブジェクト(注釈? フォーム値? ページ内容?)**なのかは分からない。 specs/12-use-cases.md UC-10(改ざん箇所のオブジェクト単位ピンポイント指摘)の前提が欠けている。

提案

増分更新の xref を隣接リビジョン間で比較し、変更 / 追加 / 削除されたオブジェクトの一覧(可能なら型: Annot / AcroForm field / Page content 等)を返す。

Read the thread · 2026-07-24 · closed · 0 comments

暗号化 PDF(未復号)で PDF/UA 構造系規則が誤 fail する

暗号化 PDF(未復号)で PDF/UA 構造系規則が誤 fail する

症状

validate_conformance(flavour: pdfua-1, engine: native)をパスワード保護された(未復号の)PDF に対して実行すると、実際にはタグ付き(/StructTreeRoot あり)の文書でも次の誤判定が出る(v0.6.2 で確認、v0.6.2 以前から存在):

原因

pdf-lib を ignoreEncryption: true で load…

Read the thread · 2026-07-19 · closed · 0 comments

The remaining reports are on the project's issue tracker.