(Notes)

Delivery and Maintenance Evidence for Public-Sector Projects in Taiwan

Public-sector acceptance follows the documents and quantities listed in the tender requirements, and maintenance follows evidence that can be checked. Delivery therefore starts with transcribing the requirements word for word.

Polish Design engineering team・2026-09-24

Contents

Acceptance on a public-sector project is checked against the documents, quantities, and formats that the contract and the tender requirements list item by item. Maintenance follows the same logic: the agency wants evidence it can look up, and a verbal assurance is not an acceptance item.

A development team has three things it can do under that logic: read the requirements into a checklist before quoting, let routine checks generate the evidence files automatically during maintenance, and put both what was found and what could not be found into the incident report. For the types of security testing and how the work is divided, start with the difference between vulnerability scanning and penetration testing. POLISH is a development and maintenance team, and this article covers the delivery and maintenance work before and after testing.

Acceptance follows the document names and quantities in the requirements

Under the Government Procurement Act, Chapter 4 governs performance management and Chapter 5 governs acceptance and payment; these chapters together are the legal basis for how agencies and vendors perform, accept, and pay (Government Procurement Act, 2019). The time allowed for completing acceptance and correcting non-conforming items is set by the contract and the current text of the Act.

The Enforcement Rules of the Government Procurement Act go further in Chapter 5, which details the acceptance procedure: when paper-based acceptance applies, completion notices and joint inspection, preliminary and final acceptance, acceptance records, and, for projects that reach the publicly announced amount, a settlement acceptance certificate (Enforcement Rules of the Government Procurement Act, 2021). The Rules and the Act sit at different levels of law, so confirm the current version of each separately.

A person puts a large gold key into a big blue padlock, with two stacked server units beside it.

All of these procedures end up on one checklist: which documents the requirements list, how many of each, and in what format. Entries can be as fine as quantity, unit, and format, for example “one set of architecture diagrams, PDF” or “one video, MP4.” Acceptance compares delivery against that exact wording.

There is also a trap in the other direction. Building a working system does not cancel a document obligation. Before quoting, confirm whether the client’s binding obligation is a document or a working product, and list each document item separately.

Transcribe the requirements and audit clauses word for word before quoting

The method has two steps. First, before quoting, read the documents the client owes a third party and the original text of the clauses used to audit that obligation, and copy each item’s name, quantity, unit, and format onto one list. Word for word means no rewording: if the requirements say “information security maintenance record report,” the list says exactly that, not a familiar shorthand such as “security report.”

  • Document name: copied as written, never reworded.
  • Quantity and unit: a set, a file, or a copy, recorded separately.
  • Format: PDF, video, or another file format, or a link, each marked.
  • Obligation type: whether the item is a document or a working product.

Second, compare that list with the client’s ideas across three columns: whether the client’s plan mentions the item, whether the third-party document requires it, and whether the quote covers it.

In the client’s planRequired by the third-party documentCovered by the quoteHandling
YesYesYesDeliver under the document name and quantity in the requirements
NoYesNoAdd to the quote and list as a separate item
NoNoNoMove out of scope

A feature that appears in none of the three columns moves out of scope. The comparison table is an internal worksheet and does not go into the quote. Out of scope does not always mean it cannot be done. In one tender, the requirements never mentioned a technical route the development team wanted to pursue, while the same module explicitly listed other items as contractual obligations rather than preliminary research. Preliminary research on that route therefore had to be delivered under document names that appear word for word in the requirements, or it would not pass acceptance.

Fig. 1Acceptance rests on the requirements, so the division of work starts with transcribing the document names word for word
Requirements and quote
Performance and maintenance
Acceptance
Agency
Development team
1
AgencyRequirements list the documentsName, quantity, and format
2
Development teamTranscribe into a checklistCompare with the client’s plan; items in none of the three columns move out of scope
3
AgencySupervise and audit periodicallyEnforcement Rules, Article 7
4
Development teamScripts write the maintenance filesIntegrity, logs, monthly report
5
AgencyPreliminary and final acceptanceAcceptance records kept
6
Development teamSubmit under the exact names and quantitiesDocument obligations listed separately

Compiled from the Government Procurement Act, its Enforcement Rules, and the outsourcing provisions of Taiwan’s cybersecurity rules

Cybersecurity rules put outsourcing requirements into contracts and audits

Article 10 of the Cyber Security Management Act requires government agencies and designated non-government entities, when outsourcing the building or operation of information systems or the provision of information services, to select suitable vendors, require vendors to maintain effective security management, supervise it, and set rights, duties, and liability for breach in a written contract (Cyber Security Management Act, 2025). For a vendor, this requirement lands first in the clauses of the contract and the requirements. For criteria on choosing a vendor, see how to choose a software development vendor.

Article 7 of the Enforcement Rules is more specific. When an agency selects and supervises a contractor, it must consider staffing, subcontracting, security testing of custom systems, incident reporting, and data handling at contract termination, and it must audit the contractor periodically or when it learns of an incident (Enforcement Rules of the Cyber Security Management Act, 2026). The text says “immediately” for incident reporting and “periodically” for audits, with no specific number of days, so deadlines come from the requirements and the contract. For maintenance the implication is direct: being audited and checked is expected, so evidence has to be kept in advance. How the two common approaches to security testing differ is covered in vulnerability scanning versus penetration testing.

Agencies are graded too. The Regulations on Classification of Cyber Security Responsibility Levels place each agency in one of five levels, A through E, take the highest level when several apply, and have the agency carry out the tasks listed in the schedules for its level (Regulations on Classification of Cyber Security Responsibility Levels, 2026). The tasks sit in the schedules, which the regulation’s web page does not reproduce, so before drafting requirements a project owner should confirm the agency’s level and read that level’s schedule. The measures from the Administration for Cyber Security (Administration for Cyber Security, 2026) say that an agency that outsources should choose vendors with suitable experience and supervise vendor security practices. That page is marked as under revision, with a new version to be announced, so only this general direction can be cited for now; stage-by-stage detail comes from the contract and the requirements.

Maintenance evidence comes from read-only scripts that write the files themselves

Requirements documents turn maintenance into measurable acceptance indicators and name information security maintenance records among the documents to be produced. The requirements also carried service-level indicators, and indicators like those can only be proven with records that can be produced again and again. The team’s approach is to turn each requirement into a script that writes its own file: once the script has run, a time-stamped file exists, and that file is the evidence. For the maintenance service itself, see Polish+ maintenance.

Fig. 2Maintenance checks run on a schedule: two weekly, one monthly
Weekly runMonthly output
Month 1Month 2
  • Integrity
    Weekly, compared with the prior week
  • Log digest
    Weekly, covering the past week
  • System report
    One per month

Only the three items with a documented cycle are drawn; the disk-usage alert fires on a threshold and the restore drill is described in the text, so neither is drawn. Position shows frequency only.

  • Weekly file integrity: compute SHA-256 hashes over the website directory, excluding dependency packages and version-control folders, and compare the result with the previous week. A difference file is kept only when something differs, and only changed files are re-hashed.
  • Weekly log digest: a log-summarizing tool compiles the past week’s logs at high verbosity.
  • Capacity alert: a notification goes out when disk usage exceeds 90%.
  • Monthly report: a system report is produced every month, and has been for more than a year.
  • Certificate changes: each change is filed as a document.

These scripts share one trade-off: only packages already on the host and features built into the runtime are used, so nothing extra is installed on the production host. A check should not become a new change.

A person looks down at a clipboard and ticks the first of three checkboxes, leaving the other two blank.

The restore drill has two more scripts. One checks the application host: service status, the database connection, and the count and size of uploaded files. The other checks the database: the connection, the table list, an exact row count per table, data and index sizes, and the range of primary-key ids. Both are read-only, every output line carries a timestamp and a PASS, FAIL, INFO, or WARN tag, and each run also writes a report file. The scripts were run once on production and once on the standby, and the two reports can be compared table by table. This article describes the drill procedure and output format only, and does not report drill results.

Policy clauses fail on the bypass paths

Password policy is another typical case. The clauses are not hard to write; the hard part is applying the same rules on every sign-in path. Password rules are often rolled out in stages, for example: a new password cannot match any of the previous three, a minimum password age, no match with the account name, no keyboard sequences, a change at least every three months, and a minimum length. The gaps that tend to need closing are bypass paths. Regular sign-in checks whether the password is an initial password or more than three months old, and if third-party sign-in does not get the same check, the rules leave a gap. The same rule also has to be implemented once in the back office and once in the API.

Sign-in pathRule to check
Regular sign-inThe initial-password check and the check for a password not updated in over three months
Third-party sign-inThe same initial-password check as regular sign-in
Password resetThe new password goes through the same strength and history rules
Initial passwordFirst-use handling matches regular sign-in
Back office and APIRules implemented in both places are changed together

Front-end hints and back-end checks must stay in sync, with the back end as the authority. When a strength rule changed, the front end and back end each changed once, and the explanatory text followed. POLISH works through a checklist clause by clause rather than only changing the registration page.

Working with the competent authority’s scans and appeals

POLISH has supported a Ministry of Education project, working with the scans the competent authority required, fixing medium- and high-risk findings, and filing appeals against false positives, and it has taken over from a design tender into the engineering tender. Project scope is on the Ministry of Education project page.

This kind of support lands after the scan: medium- and high-risk findings get fixed, and false positives get appealed. An appeal needs an explanation that can be checked against records: which request, which version, which setting. The files left by routine maintenance are the material for that explanation.

Incident reports establish mechanism and sequence first, and list what cannot be found

The value of an incident report lies in stating the mechanism and timeline clearly. Take a stalled virtual machine: evidence gathering splits into four stages, with one script and one report per stage.

Stage one established the mechanism: the kernel and existing processes were alive, but creating new processes kept failing. Stages two and three established the sequence: components stopped one after another, from the log service through the security agents and the scheduler to outgoing mail, within about six minutes. Stage four examined the logs of the most suspect component, and before running it the team wrote down how each of two outcomes would be handled.

Fig. 3When no root cause turns up, the report still states the mechanism, the sequence, and the data it could not reach
  1. Establish the mechanismWhether the kernel and existing processes are running, and which kind of system call fails
  2. Establish the sequenceThe order and time window in which components stopped
  3. Examine the most suspect component’s logsWrite down the handling for both outcomes before looking
  • The log shows an error
    Root cause can be identifiedAttach the error text and the time
  • The log stops with no error
    Record in writing: “reviewed, nothing abnormal found”As useful as finding an error
  • The data is not on the host
    List as “obtainable only from outside”Security software console, management console, virtualization platform
  • Whatever the result
    List the systemic risksIn the same report

Two traps are common in evidence collection. One is correcting one’s own reading: if an earlier report misjudged the multiple on a metric, the next report states the correction directly. The other is time format: in one directory some logs may use local time and others UTC, and searching by local time misses the failure window. Three sources cannot be reached from inside the host: the security software console, the management console, and the virtualization platform’s events and performance data. The report lists all three as obtainable only from outside.

Whether or not the root cause can be identified, the report lists systemic risks, such as service liveness alerts, performance monitoring, log rotation and change management on production hosts. The value of the report does not depend on finding the root cause.

This style follows blameless postmortems: the focus is on the conditions that produced the event, not on blaming a person or a team; people who fear punishment tend to hide problems, so a postmortem is material for improving systems and processes, not a penalty (Lunney and Lueder, 2017). On incident response itself, NIST SP 800-61, third revision, places it inside an organization’s cybersecurity risk management, covering preparation, detection, response, and recovery, and supersedes the 2012 second revision (Nelson et al., 2025). The development team files the systemic-risk list under gaps in preparation and detection.

How data from many units becomes one checkable master table is covered in organizing data when ministries share one campaign.

When this does not fit

When the contract involves no system development or operations at all, the approach in this article does not apply: it rests on having a system to deliver and maintain.

Next step: what to prepare

Prepare the materials below, then contact the development team and describe the stage the project is in.

  • The requirements document, including the list of documents in its attachments
  • The agency’s cybersecurity responsibility level
  • A list of existing systems
  • A summary of the last security assessment results

(Contact)

Start a project.

Three steps to a clear direction and budget range.

  1. 01Book the first meeting: choose a time. A full specification is not required.
  2. 02A 15 to 30 minute online consultation: direction, budget range, and draft timeline.
  3. 03After materials are reviewed, a quote and delivery specification follows in about 3 to 5 working days.
Email
hello@polish-design.com.tw
Mailing address
3F, No. 191-1, Zhifu Rd., Zhongshan Dist., Taipei 104, Taiwan

Book the first meeting

Monday to Friday, 16:00–18:0030 minutes online

Choose a time, then confirm with a Google account or an email address. A confirmed booking can be added to the calendar.

Choose a time

Or send the details first

Not ready to pick a time yet: leave the project details here and the team replies by email. A meeting can still be booked right after sending.

More details (optional): service, stage, links, source

Information is used only to evaluate this project.

ISO/IEC 27001:2022 certificate

(Certificate)

ISO/IEC 27001:2022

Certification body
ARES International Certification
Scope
The development process for interactive immersive 3D systems, and network and infrastructure operations and management.

Verify with ARES