DSH Plugins Marketplace

DSH Plugins

Plugins

/

Development & Infrastructure

/

dsh-permit-report-check

P

dsh-permit-report-check

Manifest valid

????????(?????????????????????,?????,???????)

hasBundlePatch

dsh-permit-report-check

Boundary: this plugin checks an 行政许可办理台账 for the closed loop a register can be held to — that each application item records its submission, that acceptance does not follow the decision, that the decision falls between acceptance and the promised completion date, that the decision outcome comes from your vocabulary, that a grant records its certificate number, that the register names its applicant and matter, and that matters are not double-registered. It does not decide whether a permit decision was lawful, whether the materials were complete or compliant, whether an application should be accepted, or whether a permit should be granted.

⚠️ What this plugin deliberately does not judge

It does not check whether the materials list is complete. It reads the register's own 申请材料 column and checks that each listed item records whether it was submitted — not whether that list matches the matter's service guide. Verifying the list means comparing it against the guide, which this plugin does not do.

No statutory period is built in — and the statute says why that is the right call. 《中华人民共和国行政许可法》was read verbatim (see rules/evidence/clause-verification.md), and three of its provisions make a built-in number unusable: article 82 requires statutory periods to be counted in working days, excluding public holidays; article 42 sets twenty days with a ten-day extension (forty-five plus fifteen for joint handling); and article 45 excludes time needed for hearings, testing, inspection and expert review from the period altogether. A register normally records calendar dates, so PR-003 compares the decision date against the promised completion date written in the register, and reports itself in skipped when that column is empty. A finding means "this disagrees with the deadline you recorded", never "this was late".

⚠️ The text read was the 2003 promulgation; a 2019 amendment exists and was not obtained, so the pack keeps the note 「现行版本与条号本次未核实」 on every rule and claims no article is current law.

The outcome vocabulary ships empty. Wording for grants, refusals and terminations varies by institution and matter, so PR-004 reports itself in skipped until you configure it, and PR-005 (which requires a certificate number once a grant is recorded) uses a configurable set of grant marker values rather than a built-in list.

Every excerpt in the rule pack says, in so many words, that the clause text was not obtained. The regime lives in 《中华人民共和国行政许可法》 and in each matter's service guide. The verification pass could not retrieve verbatim clause text, so the pack states the gap in the excerpt field itself and keeps every rule at warn or info. When the texts are in hand, replace each excerpt with the real clause and raise kind to direct.

Compatibility

SurfaceStatus
HarnessPeer range >=0.1.2-rc.1 <0.2.0 || >=0.2.0-0 <0.3.0 — verified to accept both 0.2.0-rc.2 and 0.2.1-alpha.1. engines.dsh is deliberately not declared: it has no reader and cannot reject a host
Node`^22.19.0
PlatformsAll (plain ESM; no native code, no network, no model call)
Tool modeWorks in native, ptc and both; for a caseload use ptc

What it does

Registers the permit_report_check tool. It reads one permit register — the applicant header plus one row per application item — applies a versioned rule pack, and returns a report.

RuleCheckSeverityBasis kind
PR-001each listed material records its submissionwarnprinciple
PR-002acceptance does not follow the decisionwarnprinciple
PR-003the decision falls between acceptance and the promised dateinfolocal
PR-004the outcome comes from your vocabulary (off by default)infolocal
PR-005a grant records its certificate numberwarnprinciple
PR-006the register names its applicant and matterwarnprinciple
PR-007matters are not double-registeredwarnprinciple

Install

pnpm pack
dsh plugin --profile <name> add ./dsh-permit-report-check-0.1.0.tgz
dsh --profile <name> --dump-config | grep 'dsh-permit-report-check'

Configuration

KeyTypeDefaultDescription
rulesFilestringrules/permit-report-check.yamlRule-pack path, relative to the package root
disabledRulesstring[][]Rule ids to stop running; each appears in skipped
onlyRulesstring[][]Run only these rule ids; empty runs every rule
skipNotesstring""Note appended to every skipped reason
timeoutMsnumber120000Cooperative tool timeout budget

Rule-level parameters worth knowing:

  • PR-003 needs the register's 承诺办结日 / dueAt column. The plugin never derives a deadline from a day count; statutory periods differ by matter and may be extended.
  • PR-004 values — your outcome vocabulary, e.g. [准予, 不予, 不予受理, 终止, 补正后准予]. Empty means no check.
  • PR-005 conditionValues — the values that mark a grant, by default [准予, 准予许可, 通过, 同意, 已办结, 批准].
  • PR-001 conditionField / requiredFields — which column triggers the requirement; the materials column, requiring the submission column.

Material format

The tool accepts JSON or YAML:

applicant: 某某公司
matter: 某某建设项目环评审批
window: 综合受理窗口
rows:
  - { 序号: '1', 许可事项: 建设项目环境影响评价文件审批, 许可机关: 某某生态环境局,
      法定依据: 《中华人民共和国环境影响评价法》第二十二条,
      申请材料: 环境影响报告书全本及公众参与说明,
      已提交材料: 已提交报告书全本(含公众参与说明),受理编号 SL-2026-018,
      受理日期: 2026-03-02, 法定时限: '60', 承诺办结日: 2026-04-30,
      决定日期: 2026-04-20, 决定结果: 准予, 许可证号: 某环审〔2026〕18 号, 承办人: 王工 }

Column names are matched case-insensitively and ignoring spaces, underscores and hyphens; the register's own column names are kept, so a finding names the column it read.

Rule sources

Rule data lives in rules/permit-report-check.yaml. The pack's header states the citation gap in full, and each rule's note repeats the part that matters for that rule. The load-time guard that normally enforces "an excerpt must be a real quotation of at least eight characters" cannot tell a quotation from a description — so this pack leans on the header, the per-rule notes and a test that asserts every excerpt admits the gap.

Troubleshooting

  • PR-003 reports itself as skipped. The register records no promised completion date. Statutory periods differ by matter and may be extended, so the plugin will not supply one.
  • PR-003 fires but I consider the handling timely. The recorded promised date disagrees with the decision date. Either the deadline was worked out wrongly or the decision date is wrong.
  • PR-001 did not catch a missing material. It checks the register's own list, not the service guide's. Whether the list is complete is a comparison this plugin does not make.
  • PR-004 never runs. Its vocabulary is empty; fill it with the outcomes your institution records.
  • PR-005 fires on a grant with no certificate number. Either the certificate was not issued yet or the column was left blank. Narrow conditionValues if your register uses a different grant wording.
  • The plugin installs but the tool never appears. Check that main resolves to lib/index.mjs and that pnpm run build produced it; a wrong main makes the loader skip the entry silently.
  • dsh plugin add refuses the package as incompatible. The peer range covers 0.1.x and 0.2.x; if your runtime sits outside it, grant an explicit exemption: dsh plugin --profile <name> allow-version dsh-permit-report-check@0.1.0 --dsh-version <runtime> --accept-risk
  • check reports manifest-peers as failed. The static checker compares against a hard-coded peer range that predates the 0.2 line. The runtime enforces peer compatibility at install time, so the declared range is the correct one; this is a known upstream issue in dsh-plugin-dev.

Development

pnpm install
pnpm run typecheck   # tsc --noEmit
pnpm test            # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build       # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-permit-report-check   # refresh src/shared from ../_shared

The plugin is data-only: src/model.ts declares the table shape, the shared kit supplies the reader and the check engine, and the rule pack declares every check.

License

Apache License 2.0 © 2026 dsh-permit-report-check contributors.

Comments

Loading…

Similar plugins

dsh-bid-qual-check

by PerryLink

?????????(????????????????,?????,???????)

Development & InfrastructureManifest valid

★ 0

NOASSERTION

TypeScript

Oct 8, 2026

dsh plugin --profile web add dsh-bid-qual-check

by PerryLink

??????????????(????????????,?????,???????)

Development & InfrastructureManifest valid

★ 0

NOASSERTION

TypeScript

Oct 9, 2026

dsh plugin --profile web add dsh-archive-check

by PerryLink

???????????(??????????????????????,?????,???????)

Manifest valid

★ 0

TypeScript

Oct 8, 2026

dsh plugin --profile web add dsh-lawcite-adapter

by PerryLink

PPAP ?????????(???? PPAP ??????????????????,?????,???????)

Development & InfrastructureManifest valid

★ 0

NOASSERTION

TypeScript

Oct 8, 2026

dsh plugin --profile web add dsh-ppap-check

by ESxyzbil

DSH ??????:?????? + ??????? + ????

Terminal & ClientsTools & CapabilitiesManifest valid

★ 1

MIT

JavaScript

Aug 22, 2026

dsh plugin --profile web add dsh-official-document-mode

by HERO476

DSH ????(??????):????/????????,???????????????????Selection follow-up for DeepSeek Harness with an independent side-card answerer.

UI & ExperienceDevelopment & InfrastructureManifest valid

★ 1

MIT

JavaScript

Oct 8, 2026

dsh plugin --profile web add dsh-sidecard-ask