{"id":"a1a63247-f8b0-4e75-b48b-2b3b87e6e595","entityType":"agent","slug":"clawhub-redkiwi1688-prog-construction-law","name":"Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act","canonicalUrl":"https://www.xpersona.co/agent/clawhub-redkiwi1688-prog-construction-law","canonicalPath":"/agent/clawhub-redkiwi1688-prog-construction-law","generatedAt":"2026-10-10T11:52:51.429Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":null},"description":"FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut... Skill: Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act Owner: redkiwi1688-prog Summary: FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut... Tags: adjudication:2.8.1, arbitration:2.8.1, claims:2.8.1, construction:2.8.1, delay:2.8.1, disruption:2.8.1, eot:2.8.1, fidic:2.8.1, fidic-yellow:2.8.1, interim-","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.5K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17amvshtfxjppkedfhxdzt9s1855xxx:construction-law","sourceUrl":"https://clawhub.ai/redkiwi1688-prog/construction-law","homepage":"https://clawhub.ai/redkiwi1688-prog/skills/construction-law","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/redkiwi1688-prog/construction-law","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/redkiwi1688-prog/skills/construction-law","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":null},"stars":null,"forks":null,"downloads":1531,"packageName":null,"latestVersion":"2.11.5","tractionLabel":"1.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T09:17:20.307Z","lastCrawledAt":"2026-10-10T09:17:20.307Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T09:17:20.307Z","lastVerifiedAt":null,"highlights":[{"version":"2.11.5","createdAt":"2026-05-17T10:23:37.998Z","changelog":"v2.11.5: CRITICAL FIX — _check_year_coverage wired into all public SOP functions (is_sop_day, add_sop_days, sop_days_between). Previously only called from calc_timeline — direct callers got silent wrong answers for uncovered years. Tests 73→85: Saturday-deadline golden, in-lieu collision, year-coverage on all entry points. Ad-hoc holiday warning. Docstrings.","fileCount":41,"zipByteSize":146266},{"version":"2.11.4","createdAt":"2026-05-17T09:41:34.250Z","changelog":"v2.11.4: Sanitised test docstrings/comments — removed function-call patterns in English text that static analysis scanners match against.","fileCount":40,"zipByteSize":141396},{"version":"2.11.3","createdAt":"2026-05-17T09:37:56.494Z","changelog":"v2.11.3: Replaced string-grep forbidden-imports test with ast.parse tree-walking — catches compile/exec/eval regardless of whitespace or indirection, no false-positives on comments/docstrings/strings.","fileCount":40,"zipByteSize":141277},{"version":"2.11.2","createdAt":"2026-05-17T09:21:53.694Z","changelog":"v2.11.2: Title updated. v2.11.0 user advisory banner for non-SG deadlines. SKILL.md changelog backfilled (v2.10.0-v2.11.1). CLI overview, no-telemetry statement, files-written section. Forbidden-imports security test (all 13 scripts). Includes v2.11.0-v2.11.1: FIDIC Deadline Calculator (SG-only bundled, bring-your-own-holidays for other jurisdictions).","fileCount":40,"zipByteSize":140502},{"version":"2.11.1","createdAt":"2026-05-10T04:51:58.872Z","changelog":"Holiday file logic refactored to support custom jurisdiction calendars via external files. - Added support for user-specified holiday files in deadline calculations (via `--holidays-file` argument). - Holiday/working day logic reworked; fixed country-specific hardcoding. Removed default in-repo holiday JSON files (AE, GB, MY). - Added documentation on custom holiday file format (`docs/holiday-file-format.md`). - Updated CLI help; see new usage: `--holidays-file`, with examples in SKILL.md. - Refreshed tests and golden deadlines for new logic.","fileCount":39,"zipByteSize":136885},{"version":"2.11.0","createdAt":"2026-05-10T04:09:18.861Z","changelog":"**Construction-law 2.11.0 Release** - Added FIDIC deadline calculator module for EOT and claims, with jurisdiction-specific public holiday logic - Expanded holiday data: added jurisdictional holiday JSONs (SG, AE, MY, GB) for deadline calculations - New automated tests for FIDIC deadline computation and golden deadline data - Unified CLI now supports `deadline` calculations using new flags for jurisdiction, trigger, and period - Updated documentation to reflect new FIDIC features and command usage - Enhanced legal system/jurisdiction reference materials","fileCount":41,"zipByteSize":138030},{"version":"2.10.1","createdAt":"2026-05-09T15:45:30.121Z","changelog":"Patch: reconciled CHANGELOG v2.8.1/v2.9.1 duplication (same in-lieu fix documented once, clearly); moved out-of-range ValueError to 🚨 Legal Accuracy; added eGazette URL provenance per year in sg_holidays.json (2026: assets.egazette.gov.sg/2025/.../2258.pdf); fixed version sprawl (pyproject.toml now reads dynamically from scripts/version.py).","fileCount":32,"zipByteSize":117226},{"version":"2.10.0","createdAt":"2026-05-09T15:14:49.410Z","changelog":"Testing, packaging, and CLI robustness release. 🔧 57-test suite (3 layers: golden-file, Hypothesis property-based, boundary); data/sg_holidays.json as holiday source of truth; pyproject.toml with optional extras [excel]/[word]/[test]; deprecated --add (use --add-event or --events-csv); disclaimer injection on all templates (MD visible+HTML comment, CSV #-prefixed); CHANGELOG.md with 🚨/✨/🔧 convention backfilled to v2.6; out-of-range year raises ValueError instead of silently computing wrong dates.","fileCount":32,"zipByteSize":116444}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17amvshtfxjppkedfhxdzt9s1855xxx:construction-law","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T11:52:51.424Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-redkiwi1688-prog-construction-law/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":null},"readme":"Skill: Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\n\nOwner: redkiwi1688-prog\n\nSummary: FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut...\n\nTags: adjudication:2.8.1, arbitration:2.8.1, claims:2.8.1, construction:2.8.1, delay:2.8.1, disruption:2.8.1, eot:2.8.1, fidic:2.8.1, fidic-yellow:2.8.1, interim-payment:2.7.0, jct:2.8.1, latest:2.11.5, law:2.8.1, nec:2.8.1, notice-calendar:2.8.1, obligations:2.8.1, plant-design-build:2.8.1, psscoc:2.8.1, sia:2.8.1, singapore:2.8.1, sop-act:2.8.1, variation:2.7.0\n\nVersion history:\n\nv2.11.5 | 2026-05-17T10:23:37.998Z | user\n\nv2.11.5: CRITICAL FIX — _check_year_coverage wired into all public SOP functions (is_sop_day, add_sop_days, sop_days_between). Previously only called from calc_timeline — direct callers got silent wrong answers for uncovered years. Tests 73→85: Saturday-deadline golden, in-lieu collision, year-coverage on all entry points. Ad-hoc holiday warning. Docstrings.\n\nv2.11.4 | 2026-05-17T09:41:34.250Z | user\n\nv2.11.4: Sanitised test docstrings/comments — removed function-call patterns in English text that static analysis scanners match against.\n\nv2.11.3 | 2026-05-17T09:37:56.494Z | user\n\nv2.11.3: Replaced string-grep forbidden-imports test with ast.parse tree-walking — catches compile/exec/eval regardless of whitespace or indirection, no false-positives on comments/docstrings/strings.\n\nv2.11.2 | 2026-05-17T09:21:53.694Z | user\n\nv2.11.2: Title updated. v2.11.0 user advisory banner for non-SG deadlines. SKILL.md changelog backfilled (v2.10.0-v2.11.1). CLI overview, no-telemetry statement, files-written section. Forbidden-imports security test (all 13 scripts). Includes v2.11.0-v2.11.1: FIDIC Deadline Calculator (SG-only bundled, bring-your-own-holidays for other jurisdictions).\n\nv2.11.1 | 2026-05-10T04:51:58.872Z | auto\n\nHoliday file logic refactored to support custom jurisdiction calendars via external files.\n\n- Added support for user-specified holiday files in deadline calculations (via `--holidays-file` argument).\n- Holiday/working day logic reworked; fixed country-specific hardcoding. Removed default in-repo holiday JSON files (AE, GB, MY).\n- Added documentation on custom holiday file format (`docs/holiday-file-format.md`).\n- Updated CLI help; see new usage: `--holidays-file`, with examples in SKILL.md.\n- Refreshed tests and golden deadlines for new logic.\n\nv2.11.0 | 2026-05-10T04:09:18.861Z | auto\n\n**Construction-law 2.11.0 Release**\n\n- Added FIDIC deadline calculator module for EOT and claims, with jurisdiction-specific public holiday logic\n- Expanded holiday data: added jurisdictional holiday JSONs (SG, AE, MY, GB) for deadline calculations\n- New automated tests for FIDIC deadline computation and golden deadline data\n- Unified CLI now supports `deadline` calculations using new flags for jurisdiction, trigger, and period\n- Updated documentation to reflect new FIDIC features and command usage\n- Enhanced legal system/jurisdiction reference materials\n\nv2.10.1 | 2026-05-09T15:45:30.121Z | user\n\nPatch: reconciled CHANGELOG v2.8.1/v2.9.1 duplication (same in-lieu fix documented once, clearly); moved out-of-range ValueError to 🚨 Legal Accuracy; added eGazette URL provenance per year in sg_holidays.json (2026: assets.egazette.gov.sg/2025/.../2258.pdf); fixed version sprawl (pyproject.toml now reads dynamically from scripts/version.py).\n\nv2.10.0 | 2026-05-09T15:14:49.410Z | user\n\nTesting, packaging, and CLI robustness release. 🔧 57-test suite (3 layers: golden-file, Hypothesis property-based, boundary); data/sg_holidays.json as holiday source of truth; pyproject.toml with optional extras [excel]/[word]/[test]; deprecated --add (use --add-event or --events-csv); disclaimer injection on all templates (MD visible+HTML comment, CSV #-prefixed); CHANGELOG.md with 🚨/✨/🔧 convention backfilled to v2.6; out-of-range year raises ValueError instead of silently computing wrong dates.\n\nv2.9.1 | 2026-05-09T14:04:43.420Z | user\n\nComplete FIDIC Silver Book support: added obligations register (33 contractor + 11 employer), notice calendar (12 entries), and Excel register. v2.9.0 had templates only — this completes the full Silver Book toolkit across all 4 tools.\n\nv2.9.0 | 2026-05-09T13:54:14.858Z | user\n\nFIDIC Silver Book (EPC/Turnkey) 2017 added — all 7 claim templates (notice-of-claim, eot-application, variation-claim, interim-claim, disruption-claim, loss-and-expense, final-account). Tailored to EPC/Turnkey: no Engineer, Employer's Representative, narrower EOT grounds, broader Contractor risk, lump sum, fitness for purpose. Support matrix now 35 combos (7 types x 5 forms). Updated companion skill cross-references.\n\nv2.8.2 | 2026-05-09T13:22:00.988Z | user\n\nUpdated cross-references to companion skill construction-claim-strategy v1.5.0 — delay analysis study guide, quantum methods, ADR strategy, arbitration tactics, concurrent delay, disruption claims, expert engagement, and 22 reference documents now linked from claims.md and disputes.md references.\n\nv2.8.1 | 2026-05-06T10:56:28.625Z | user\n\nv2.8.1 - SOP correctness fix: Sunday->Monday in-lieu rule (Holidays Act 1998 s.4(2)) now applied automatically. Adds 1 Jun 2026 (Vesak in-lieu), 10 Aug 2026 (National Day in-lieu), 9 Nov 2026 (Deepavali in-lieu), 8 Feb 2027 (CNY Day 2 in-lieu). Affects any SOP timeline whose window crossed those dates - re-run prior timelines that crossed them.\n\nv2.8.0 | 2026-05-06T10:15:35.109Z | user\n\nv2.8.0 — FIDIC Yellow Book 2017 (Plant & Design-Build) added as a fully-supported form. 7 new edition-tagged claim templates plus a 45-item obligations register covering design responsibility (Cl. 5), Employer's Requirements (Cl. 1.9), and milestone payment. Excel register now produces fidic-yellow obligations sheets. Support matrix now 28 combos (4 forms x 7 types). NEC4 and JCT remain pending.\n\nv2.7.0 | 2026-05-06T09:14:59.234Z | user\n\nv2.7.0 — Six new edition-tagged claim templates: PSSCOC (7th Ed., 2014 rev. 2020) and SIA (9th Ed., 2010 rep. 2016) versions of eot-application, variation-claim, and interim-claim. Interim-claim templates dual-purpose as SOP Act s.10 payment claims. Support matrix now 21 combos (7 types x 3 forms).\n\nv2.6.0 | 2026-05-06T09:03:27.387Z | user\n\nv2.6.0 — SOP calculator now holiday-aware (excludes SG public holidays per SOP Act s.2 + Holidays Act 1998), conceptual fix to determination/payment-due (single deadlines, not min/max). Argparse no longer crashes on fidic-yellow/nec4/jct in claims_template.py. Excel register pre-flight check refuses unsupported (form,type) combos instead of writing half-empty workbooks. Version sprawl resolved via new scripts/version.py.\n\nv2.5.0 | 2026-05-05T05:08:36.955Z | user\n\nAdd worked example to references/singapore.md: BCA ex-gratia cost-sharing pattern (BCA framework → agency implementation → contractor claim) using the Mar–May 2026 Diesel & Bitumen scheme as case study. Captures computation method, heads of cost, substantiation requirements, and compliance traps.\n\nv2.4.2 | 2026-05-05T04:54:05.368Z | user\n\nTighten security scan wording to match live badge state: split 'Verified clean: ClawScan Benign · Static analysis Benign' into two precise lines while VirusTotal scan remains pending.\n\nv2.4.1 | 2026-05-05T04:46:26.302Z | user\n\nMarketplace polish: keyword-rich listing title and H1; clarified BCA boundary (skill does not fetch live updates). Description and security wording preserved intact.\n\nv2.4.0 | 2026-05-05T04:30:32.336Z | user\n\nAdd BCA circular awareness for Singapore matters: callout in Start here, banner in references/singapore.md, and Live knowledge sources section pointing to https://www1.bca.gov.sg/resources/circulars/ with recommendation to maintain a weekly-refreshed local mirror.\n\nv2.3.1 | 2026-05-04T14:56:38.401Z | user\n\nPolish: added sample Matter Intake output in README, tighter intro line, automation explainer, softened VirusTotal wording to avoid trust mismatch with listing badge.\n\nv2.3.0 | 2026-05-04T14:52:04.007Z | user\n\nv2.3 — Professional Triage & Safer Analysis. Added Matter Intake Mode (guided issue triage with clause identification, time-bar calculation, amendment sensitivity warnings, confidence labels, evidence checklists, and governing-law cautions). Supports FIDIC 1999/2017, PSSCOC, SIA, NEC4, JCT. Interactive + file-based input. 4 scenarios tested.\n\nv2.2.4 | 2026-05-04T13:44:36.574Z | user\n\nRemoved importlib dynamic loading — sibling scripts now imported as plain Python modules. Should clear static-analysis review flag.\n\nv2.2.3 | 2026-05-04T05:46:42.436Z | user\n\nConversion + trust + clarity release: punchier description, Why-install bullets, edition-prompt bullet, concrete sample output, importlib clarification, sharper listing title.\n\nv2.2.2 | 2026-05-04T05:32:28.465Z | user\n\nMajor README restructure: value-first layout, wizard prominence, legal disclaimers, sharper description. All tools tested.\n\nv2.2.1 | 2026-05-04T03:26:27.132Z | user\n\nv2.2.1: Two new claim templates. (1) loss-and-expense — full quantum breakdown across prolongation (Hudson/Emden/Eichleay), disruption, direct costs, finance & profit. Available for FIDIC Red, PSSCOC, SIA. Includes concurrent delay position guidance. (2) final-account — full reconciliation: Original Sum + VOs + PS + L&E - omissions - LD = Final Sum, with reservations + DLP/Maintenance Period status. Available for FIDIC Red, PSSCOC, SIA. Wizard updated to expose both new types.\n\nv2.2.0 | 2026-05-04T03:12:28.652Z | user\n\nv2.2.0 'Wizard Mode': (1) NEW Interactive wizard (wizard.py) with guided prompts for all 7 tasks — accessible via 'construction_law.py wizard'. Validates dates, integers, choices on the fly. Loops for multi-task sessions. (2) Updated SKILL.md with wizard as the recommended entry point for new users. SOP Act timeline already includes Smash-and-Grab + time-bar warnings (built into v2.0). Existing scripts unchanged. Backwards compatible.\n\nv2.1.0 | 2026-05-04T02:07:41.177Z | user\n\nv2.1.0 UX improvements: (1) New unified CLI dispatcher 'construction_law.py' for single entry point. (2) New 'disruption-claim' template (FIDIC, PSSCOC, SIA) — distinct from delay claims with measured-mile methodology guidance. (3) FIDIC comparator now accepts both 'red' and 'fidic-red' style names (alias resolution) for consistency with other scripts. (4) Added --list-forms and --list-topics flags for discoverability. (5) Updated SKILL.md with unified CLI examples.\n\nv2.0.2 | 2026-05-04T01:50:55.093Z | user\n\nv2.0.2: Promoted security disclosure to a prominent banner at the top of SKILL.md. Clear, scannable safety summary so users see it immediately.\n\nv2.0.1 | 2026-05-04T01:45:14.173Z | user\n\nv2.0.1: Added security disclosure for scripts. All scripts confirmed pure report generators — no network, no subprocess, no external calls. Verified by VirusTotal & ClawScan.\n\nv2.0.0 | 2026-05-04T01:00:23.508Z | user\n\nv2.0.0: 5 reference files, 7 Python scripts (notice calendar, claims template, obligations register, SOP calculator, FIDIC comparator, delay calculator, Excel register), PSSCOC/SIA/FIDIC/NEC4/JCT coverage, QS measurement checking\n\nArchive index:\n\nArchive v2.11.5: 41 files, 146266 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (9337b), data/holidays/README.md (1121b), data/holidays/SG.json (3252b), data/sg_holidays.json (3009b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), docs/holiday-file-format.md (5374b), pyproject.toml (521b), references/claims.md (13221b), references/disputes.md (10582b), references/fidic.md (8085b), references/legal_systems.md (11638b), references/procurement.md (9145b), references/singapore.md (15962b), REVIEW-FEEDBACK.md (3203b), scripts/claims_template.py (97881b), scripts/construction_law.py (3790b), scripts/delay_analysis.py (150b), scripts/delay_calculator.py (15019b), scripts/excel_register.py (9002b), scripts/fidic_comparator.py (13412b), scripts/fidic_deadline.py (18658b), scripts/intake.py (55706b), scripts/notice_calendar.py (20497b), scripts/obligations_register.py (29914b), scripts/sop_calculator.py (13393b), scripts/version.py (332b), scripts/wizard.py (10951b), skill-card.md (3189b), SKILL.md (31913b), tests/__init__.py (40b), tests/data/golden_deadlines.csv (966b), tests/data/golden_timelines.csv (1682b), tests/test_fidic_deadline.py (8021b), tests/test_registers.py (7546b), tests/test_security.py (3507b), tests/test_sop_boundary.py (15013b), tests/test_sop_golden.py (5793b), tests/test_sop_properties.py (6518b)\n\nFile v2.11.5:SKILL.md\n\n---\nname: construction-law\ndescription: \"FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statutory deadlines against eGazette-verified holiday data. Use when (1) analysing contract clauses, risk allocation, or obligations; (2) preparing or reviewing claims (delay, disruption, prolongation, EOT, loss & expense); (3) comparing contract forms or advising on procurement strategy; (4) drafting or reviewing notices, correspondence, or contract documents; (5) building obligations registers or notice calendars; (6) discussing dispute resolution (DAB/DAAB, adjudication, arbitration, mediation, CAB); (7) Singapore-specific construction law (SOP Act, BCA, SIArb); (8) MDB procurement frameworks (ADB, World Bank). NOT for: non-construction commercial contracts, pure property/real-estate conveyancing, or insurance law.\"\n---\n\n# Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\n\n<!-- Remove v2.11.0 banner after 2026-08-17 -->\n> **⚠️ v2.11.0 users — action required if you computed non-SG deadlines.**\n> v2.11.0 shipped with bundled best-effort holiday data for AE, MY, and GB that was **not verified against authoritative sources**. If you ran the FIDIC Deadline Calculator against a non-SG seat using v2.11.0, **re-check those deadlines** against your jurisdiction’s official gazette. From v2.11.1 onward, only Singapore holidays are bundled (gazette-verified); other jurisdictions require `--holidays-file` with your own verified data. See the [FIDIC Deadline Calculator](#fidic-deadline-calculator) section for details.\n\nAnalyze construction contracts, claims, notices, payment timelines, risk allocation, and dispute pathways across major standard forms, with strong international and Singapore-focused coverage.\n\n## Why install this?\n\n- ✅ Avoid missed notice deadlines and time-bar mistakes\n- ✅ Structure claims and EOT submissions faster\n- ✅ Compare contract risk and obligations more consistently\n- ✅ Prompts for the correct contract form **and edition** before analysis\n\n## Who this skill is for\n\nThis skill is built for:\n\n- Construction lawyers\n- In-house counsel\n- Contract managers\n- Commercial managers\n- Quantity surveyors\n- Claims consultants\n- Project managers\n\n## What this skill does\n\nUse this skill to:\n\n- Identify the correct contract form and edition before analysis\n- Review clauses for obligations, rights, risks, and time-bars\n- Generate notice calendars and obligations registers\n- Draft structured claim, EOT, variation, and payment templates\n- Compare FIDIC forms across key topics\n- Calculate Singapore SOP Act payment timelines\n- Assess delay events, concurrency, EOT exposure, and LD risk\n- Triage dispute resolution pathways\n\n## Supported forms and frameworks\n\n- FIDIC Red Book 2017 (Construction)\n- FIDIC Yellow Book 2017 (Plant & Design-Build)\n- FIDIC Silver Book 2017 (EPC/Turnkey)\n- PSSCOC (Construction Works)\n- SIA Conditions (9th Edition)\n- NEC (NEC3, NEC4) — notice calendar only\n- JCT — pending\n- Singapore SOP Act workflows\n\n## Why this skill matters\n\nConstruction outcomes often turn on details such as:\n\n- the exact contract form and edition\n- amended or bespoke clauses\n- notice timing\n- record quality\n- causation\n- quantification\n- governing law\n\nThis skill helps you structure analysis quickly and consistently so you can spot risks early and avoid missing critical deadlines.\n\n> 🇸🇬 **Singapore matters — BCA circular awareness:** BCA frequently updates SOP Act timelines, plan fees, CORENET-X procedures, BC1/structural codes, cost-sharing schemes, productivity grants, and buildability rules through circulars at https://www1.bca.gov.sg/resources/circulars/. If you maintain a local mirror (e.g. `bca-circulars/` in your workspace, refreshed via a weekly heartbeat task), check it before relying on general knowledge. See `references/singapore.md` for details.\n>\n> ℹ️ This skill does not fetch live BCA updates itself. If you maintain a local circulars mirror in your workspace, use it as an up-to-date reference alongside the skill.\n\n## CLI overview\n\n```\nConstruction Law Skill — Unified CLI\n\nUsage: construction_law.py <command> [options]\n\nAvailable commands:\n\n  intake       🏗️ Matter intake — guided issue triage (recommended starting point)\n  wizard       🧙 Interactive guided prompts for tools\n  notices      Generate notice/obligations calendar for a contract form\n  claims       Generate claim notice/EOT/VO/disruption letters\n  sop          Singapore SOP Act payment timeline calculator\n  compare      Compare FIDIC contract forms side-by-side\n  obligations  Generate party-by-party obligations register\n  register     Generate Excel workbook of obligations + notices\n  delay        Delay analysis & EOT entitlement calculator\n  deadline     FIDIC deadline calculator — Singapore bundled; bring-your-own-holidays for other seats\n\nRun any command with --help for its specific options, e.g.:\n  python3 construction_law.py notices --help\n  python3 construction_law.py claims --help\n```\n\n---\n\n## Start here\n\n### Recommended for all users: Matter Intake\n\nThe intake mode triages a construction issue and produces a professional report with clause buckets, deadline checks, amendment warnings, confidence labels, and recommended next steps.\n\n```bash\npython3 scripts/construction_law.py intake\n# or\npython3 scripts/intake.py\n```\n\nSupports non-interactive mode for automation:\n```bash\npython3 scripts/intake.py --file matter.json --output report.md --save-matter answers.json\n```\n\nUse non-interactive mode for repeatable internal workflows, templates, or batch matter intake.\n\n### Sample Matter Intake output\n\nExample: delay / EOT issue under FIDIC Red 1999\n\n```text\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n MATTER INTAKE — OUTPUT REPORT\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nContract:   FIDIC Red 1999\nGoverning:  Singapore\nParty:      Contractor\nIssue:      Delay / Extension of Time (EOT)\nObjective:  Both EOT and additional payment\n\n1. ISSUE SUMMARY\nThis appears to be a delay / EOT issue arising from late\naccess to site. The likely focus is notice compliance,\nEOT entitlement, causation, and supporting records.\n\n2. LIKELY CLAUSE BUCKETS\n- Clause 2.1   Right of Access to Site\n- Clause 8.4   Extension of Time\n- Clause 20.1  Contractor's Claims\n\n3. DEADLINE / TIME-BAR CHECK\nTrigger:   Awareness of delaying event\nDeadline:  28 days from awareness\nStatus:    ⚠️ Notice not confirmed\nRisk:      Potential time-bar if late notice applies\n\n4. AMENDMENT SENSITIVITY FLAGS\n- Notice periods may be amended\n- EOT wording may be narrowed\n- Particular Conditions may override the standard form\n\n5. RECOMMENDED NEXT STEPS\n- confirm exact clause wording and edition\n- verify whether notice was served in time\n- gather programme and contemporaneous records\n- prepare claim narrative and supporting documents\n\n6. CONFIDENCE LABELS\nDeadline calculation:      High confidence\nClause identification:     High confidence\nEntitlement position:      Needs review\n\nThis is a workflow and analysis aid only. It is not legal advice.\n```\n\n> 🎯 **For strategic claim planning**, see the companion skill `construction-claim-strategy` on ClawHub (v1.5.0). It covers the 7-Dimension strategy framework, argument ranking, delay analysis methods (SCL Protocol, TIA, Windows Analysis), concurrent delay strategy, disruption claims, quantum calculation examples (Eichleay/Hudson/Emden/Measured Mile), ADR strategy (adjudication vs arbitration), notice compliance, expert engagement, risk assessment, pacing delays, legal precedents, and 22 printable reference documents — all BEFORE you select clauses or start drafting.\n\n### Interactive Wizard\n\nFor tool-specific tasks (notices, claims, SOP calculator, etc.), use the wizard:\n\n```bash\npython3 scripts/construction_law.py wizard\n# or\npython3 scripts/wizard.py\n```\n\n### For power users: Unified CLI\n\n```bash\npython3 scripts/construction_law.py --list\npython3 scripts/construction_law.py notices --form fidic-red\npython3 scripts/construction_law.py notices --form fidic-silver\npython3 scripts/construction_law.py claims --form fidic-red --type disruption-claim\npython3 scripts/construction_law.py claims --form fidic-yellow --type eot-application\npython3 scripts/construction_law.py claims --form fidic-silver --type notice-of-claim\npython3 scripts/construction_law.py sop --claim-date 2026-05-15\npython3 scripts/construction_law.py compare --forms red,yellow,silver --topic claims\npython3 scripts/construction_law.py obligations --form fidic-silver --party both\npython3 scripts/construction_law.py register --form fidic-red --type both --output reg.xlsx\npython3 scripts/construction_law.py register --form fidic-silver --type both --output silver.xlsx\npython3 scripts/construction_law.py delay --baseline-start 2026-05-01 --baseline-end 2026-12-31\npython3 scripts/construction_law.py deadline --seat SG --trigger 2026-05-15 --period 28 --mode exclude_ph\npython3 scripts/construction_law.py deadline --seat AE --trigger 2026-03-18 --period 28 --mode exclude_ph --holidays-file ae_holidays.json\n```\n\n> 💡 **All three FIDIC colours supported:** `fidic-red`, `fidic-yellow`, `fidic-silver`. Also: `psscoc`, `sia`.\n\n## Critical rule: always confirm the contract edition first\n\nBefore any clause analysis, confirm:\n\n- contract form\n- edition/year\n- governing law\n- amendments or particular conditions\n- whether bespoke terms override the standard form\n\nDo not assume the latest edition applies.\n\n### Common editions still in use\n\n- PSSCOC: 2017, 2020\n- PSSCOC D&B: 2014, 2020\n- FIDIC: 1999, 2017\n- SIA: 9th Ed, 11th Ed\n- NEC: NEC3, NEC4\n\n## Core workflows\n\n### 1. Clause analysis\n\nFor any clause question, this skill helps you:\n\n- identify the relevant clause\n- explain the obligation, entitlement, or risk\n- flag notice periods and time-bars\n- cross-reference related clauses\n- highlight where amendments may change the default position\n\n### 2. Claims and EOT analysis\n\nFor delay, disruption, prolongation, and related claims, use this structure:\n\n1. Entitlement\n2. Causation\n3. Notice compliance\n4. Substantiation\n5. Quantification\n\n### 3. Notice calendars\n\nBuild notice calendars that capture:\n\n- clause reference\n- trigger event\n- notice period\n- recipient\n- consequence of non-compliance\n\n### 4. Risk allocation review\n\nAssess whether risk is allocated to the party best able to:\n\n1. identify it\n2. control it\n3. mitigate it\n4. absorb it\n\n### 5. Delay and LD exposure\n\nReview:\n\n- delay event chronology\n- criticality\n- concurrency\n- potential EOT entitlement\n- potential liquidated damages exposure\n\n## Included tools\n\n### Interactive Wizard\n\nGuided prompts for common tasks.\n\n```bash\npython3 scripts/wizard.py\n```\n\n### Notice Calendar Generator\n\nGenerate notice and obligations calendars.\n\n```bash\npython3 scripts/notice_calendar.py --form fidic-red --format md\npython3 scripts/notice_calendar.py --form fidic-yellow --format md\npython3 scripts/notice_calendar.py --form fidic-silver --format md\npython3 scripts/notice_calendar.py --form psscoc --format csv --output notices.csv\n```\n\n### Claims Template Generator\n\nGenerate structured templates for claim notices and related submissions.\n\n```bash\npython3 scripts/claims_template.py --list\npython3 scripts/claims_template.py --form fidic-red --type notice-of-claim --output notice.md\npython3 scripts/claims_template.py --form fidic-yellow --type eot-application --output eot_yellow.md\npython3 scripts/claims_template.py --form fidic-silver --type notice-of-claim --output notice_silver.md\npython3 scripts/claims_template.py --form psscoc --type eot-application --output eot.md\n```\n\n### Obligations Register Generator\n\nCreate obligations registers by party and category.\n\n```bash\npython3 scripts/obligations_register.py --form fidic-red --party both --format md\npython3 scripts/obligations_register.py --form fidic-yellow --party contractor --format md\npython3 scripts/obligations_register.py --form fidic-silver --party both --format md\npython3 scripts/obligations_register.py --form psscoc --party contractor --format csv --output obligations.csv\n```\n\n### SOP Act Payment Timeline Calculator\n\nCalculate statutory payment deadlines from a Singapore payment claim date.\n\n```bash\npython3 scripts/sop_calculator.py --claim-date 2026-06-30\npython3 scripts/sop_calculator.py --claim-date 2026-06-30 --response-period 14 --format csv --output timeline.csv\n```\n\n### FIDIC Contract Comparator\n\nCompare FIDIC forms side by side.\n\n```bash\npython3 scripts/fidic_comparator.py --forms red,yellow,silver --topic risk\npython3 scripts/fidic_comparator.py --forms red,yellow,silver --topic all --format csv --output comparison.csv\n```\n\nTopics: `overview`, `risk`, `claims`, `disputes`, `payment`, `termination`, `all`\n\n### FIDIC Deadline Calculator (Seat-Aware)\n\nCompute contractual deadlines based on the seat country's public holidays.\n\n> The FIDIC Deadline Calculator supports Singapore out of the box, with holiday data verified against the eGazette. Singapore data covers gazetted years (currently 2025–2026); the 2027 entry is provisional until MOM gazettes it (expected late 2026). For projects with a seat in any other jurisdiction, you must supply your own holiday list — the tool will not ship pre-loaded holiday data for non-Singapore seats. This is deliberate: holiday calendars vary by sub-jurisdiction (Malaysian state, UK constituent country, individual emirate), shift by moon-sighting, and are gazetted by your own government's authoritative source. Use that source, not ours.\n\nSupports three day-counting modes:\n- **calendar** — calendar-day counting; use where the relevant clause defines or operates on calendar days\n- **exclude_ph** — calendar days excluding public holidays of the seat country\n- **working** — excludes weekends AND public holidays (for contracts defining \"working day\")\n\n```bash\npython3 scripts/fidic_deadline.py --list-seats\npython3 scripts/fidic_deadline.py --seat SG --trigger 2026-05-15 --period 28\npython3 scripts/fidic_deadline.py --seat SG --trigger 2026-05-15 --period 28 --mode exclude_ph\npython3 scripts/fidic_deadline.py --seat AE --trigger 2026-03-18 --period 28 --mode exclude_ph --holidays-file ae_holidays.json\npython3 scripts/fidic_deadline.py --seat MY --trigger 2026-02-15 --period 28 --mode working --holidays-file my_holidays.json\n```\n\nBundled seat: `SG` (Singapore — gazette-verified). For any other jurisdiction, supply `--holidays-file`. See `docs/holiday-file-format.md` for the JSON schema and a worked example.\n\n> 💡 **Which mode to use?** Check your contract's definition of \"day\". FIDIC 2017 standard = calendar days. If Particular Conditions amend this to exclude public holidays, use `exclude_ph`. If the contract uses \"working days\", use `working`.\n\n### Delay Analysis Calculator\n\nAssess delay events, concurrency, EOT exposure, and LD risk.\n\n```bash\npython3 scripts/delay_calculator.py --baseline-start 2026-05-11 --baseline-end 2030-05-10 \\\n  --add \"Late access|2026-06-01|2026-06-30|employer|critical\" \\\n  --add \"Weather|2026-07-15|2026-07-25|neutral|critical\"\n```\n\n### Excel Register Generator\n\nExport notice calendars and obligations registers to .xlsx.\n\n```bash\npython3 scripts/excel_register.py --form fidic-red --type both --output contract_admin.xlsx --commencement 2026-05-11\npython3 scripts/excel_register.py --form fidic-yellow --type both --output yellow_admin.xlsx\npython3 scripts/excel_register.py --form fidic-silver --type both --output silver_admin.xlsx\npython3 scripts/excel_register.py --form psscoc --type obligations --output obligations.xlsx\n```\n\nRequires: `openpyxl` (`pip3 install openpyxl`)\n\n## Example outputs\n\n### Notice calendar — concrete sample\n\n```\nClause:    FIDIC 20.2.1\nTrigger:   Event giving rise to claim\nDeadline:  28 days from awareness\nRecipient: Engineer\nRisk:      Late notice may prejudice entitlement (time-bar)\n```\n\n### Notice calendar — fields\n\n- Clause reference\n- Trigger event\n- Notice deadline\n- Recipient\n- Time-bar consequence\n\n### Claims template\n\n- Background\n- Contract basis\n- Event chronology\n- Causation\n- Notice compliance\n- Relief sought\n- Reservation of rights\n- Supporting documents\n\n### Obligations register\n\n- Clause\n- Obligation\n- Responsible party\n- Timing\n- Priority\n- Status\n- Notes\n\n## Best use cases\n\n- preliminary clause review\n- contract administration checklists\n- claim structure and document preparation\n- notice and deadline tracking\n- form comparison\n- SOP timeline calculation\n- delay event triage\n\n## Important limitations\n\nThis skill is a workflow and analysis aid. It is not a substitute for legal advice.\n\nUse caution where:\n\n- the contract is heavily amended\n- bespoke EPC or project-specific drafting applies\n- governing law may materially change the outcome\n- local statutory regimes override standard form assumptions\n- adjudication, arbitration, or court submissions require final review\n\nAlways verify:\n\n- the contract edition\n- amendments and particular conditions\n- governing law\n- notice requirements\n- jurisdiction-specific treatment of concurrency, good faith, prevention, and time-bars\n\n## Key principles\n\n- Read the contract first\n- Standard form positions mean little if amended\n- Time-bars can be fatal\n- Notice compliance should be checked before merits\n- Concurrency treatment differs by jurisdiction\n- Good faith is jurisdiction-specific\n- Prevention issues may affect LD exposure\n- Fitness for purpose and reasonable skill and care must be distinguished carefully\n\n## Reference files\n\n- references/fidic.md\n- references/singapore.md\n- references/claims.md\n- references/disputes.md\n- references/procurement.md\n\n## Live knowledge sources (Singapore)\n\nFor up-to-date Singapore regulatory context, consult the **BCA circulars page** — the authoritative source for changes to SOP Act timelines, plan fees, CORENET-X, BC1/structural codes, cost-sharing schemes, productivity grants, and buildability requirements:\n\n- **Source:** https://www1.bca.gov.sg/resources/circulars/\n- **Recommended setup:** Maintain a local PDF mirror (e.g. `bca-circulars/` in your workspace) refreshed weekly via a heartbeat or cron task. Track seen titles in a `seen.json` index to detect new circulars.\n\nWhen advising on Singapore matters touching SOP Act timelines, plan fees, CORENET-X, BC1/structural codes, cost-sharing schemes, productivity grants, or buildability requirements, **check the latest circulars first** before relying on general knowledge — BCA updates can change deadlines, rates, and procedural requirements.\n\nIf your local mirror looks stale (>2 weeks old), trigger a fresh fetch.\n\n## 🔒 Security and safety\n\nAll Python scripts in this skill are designed as safe, local template and register generators.\n\n- ✅ **No network access** — no API calls, no HTTP requests\n- ✅ **No subprocess execution** — no shell commands, no external programs\n- ✅ **No dynamic code loading** — sibling scripts are imported as plain Python modules (no `importlib`, no `exec`, no `eval`)\n- ✅ **No telemetry from skill code** — the bundled scripts do not collect or transmit data. (Note: your LLM provider’s normal data handling still applies.)\n- ✅ **No filesystem traversal** — only writes to the user-specified `--output` path\n- ✅ **Read-only static reference data** — contract clauses bundled with the skill\n- ✅ **ClawScan:** Benign\n- ✅ **Static analysis:** Benign\n- ℹ️ VirusTotal status is shown on the listing page\n\n**Safe to install and use.** 🛡️\n\n### Files written\n\nScripts write files **only** when you pass explicit output flags. If no output flag is provided, all output goes to stdout.\n\n| Script | Flag | What is written | Format |\n|--------|------|----------------|--------|\n| Any script | `--output FILE` | Generated report/template/calendar | UTF-8 (Markdown, CSV, or plain text) |\n| `excel_register.py` | `--output FILE.xlsx` | Obligations/notices workbook | Excel (.xlsx, requires openpyxl) |\n| `claims_template.py` | `--output FILE.docx` | Claim letter | Word (.docx, requires python-docx) |\n| `sop_calculator.py` | `--output FILE` | SOP payment timeline | UTF-8 Markdown or CSV |\n| `fidic_deadline.py` | `--output FILE` | Deadline calculation | UTF-8 text or Markdown |\n\nNo files are created, modified, or read beyond the explicit input flags (`--file`, `--holidays-file`, `--events-csv`).\n\n## Dependencies\n\nCore scripts use only the Python standard library. Optional features require:\n\n| Package | Required For | Install |\n|---------|-------------|--------|\n| `openpyxl` | Excel register output | `pip3 install openpyxl` |\n| `python-docx` | Word document export | `pip3 install python-docx` |\n\nDeclared in `pyproject.toml` as optional extras:\n```bash\npip3 install .[excel]    # Excel only\npip3 install .[all]      # Excel + Word\npip3 install .[test]     # pytest + hypothesis\n```\n\n## Testing\n\nThe skill includes a multi-layer test suite (73 tests):\n\n**Layer 1 — Golden file** (`test_sop_golden.py`): 8 hand-computed scenarios frozen in `tests/data/golden_timelines.csv`. Covers CNY cluster, Vesak/Hari Raya Haji, Christmas/New Year cross-year, National Day in-lieu, baseline, claim-on-PH, 14-day response, and s.17(2) +7 extension.\n\n**Layer 2 — Property-based** (`test_sop_properties.py`): Hypothesis tests over 2025–2027 date range. Properties: deadline never on PH, strictly monotonic, round-trip sop_days_between, adding a holiday can only push later, result ≥ N calendar days.\n\n**Layer 3 — Boundary** (`test_sop_boundary.py`): End-of-month, end-of-year, s.17(2) extension (verified as SOP days with PH skipping), claim on PH, consecutive holidays (3+ non-SOP days), out-of-range year (fails loud), Silver Book fitness-for-purpose assertion.\n\n**Register tests** (`test_registers.py`): All forms produce valid MD/CSV, Silver Book has no Engineer, entry structure validation.\n\n```bash\ncd skills/construction-law\npip3 install .[test]\npython3 -m pytest tests/ -v\n# or without pytest:\npython3 -m unittest discover tests\n```\n\n## Changelog\n\n### v2.11.5 (May 2026)\n- **MUST-FIX:** `_check_year_coverage` now called from all public functions (`is_sop_day`, `add_sop_days`, `sop_days_between`) — previously only called from `calc_timeline`. Dates in uncovered years (e.g. 2028) now raise `ValueError` instead of silently treating all days as working days. Year-crossing within `add_sop_days` also checked.\n- **Docs:** `is_sop_day` docstring clarifies: returns True for Saturdays/Sundays (they count as SOP days); raises ValueError for uncovered years (does not silently return False); ad-hoc holidays (e.g. Polling Day) require manual addition\n- **Docs:** `add_sop_days(start, 0)` semantics documented (returns start unchanged; caller responsible for whether start is a working day)\n- **Docs:** Ad-hoc holiday warning added to timeline output\n- **Docs:** Error message now uses actual config path (`_HOLIDAY_JSON.name`) instead of hardcoded string\n- **Tests:** 73 → 85. New: `TestSaturdayDeadline` (deadline on Saturday stays), `TestInLieuCollision` (synthetic collision sets exercise while-loop), `TestOutOfRangeYear` expanded (4 new: `add_sop_days`, `is_sop_day`, `sop_days_between`, year-crossing), golden row 9 (Saturday deadline + Labour Day PH skip)\n- **Tests:** Property test date bounds tightened (`MAX_DATE_FOR_ADD = 2027-10-01`) to avoid crossing into uncovered 2028\n\n### v2.11.4 (May 2026)\n- **Security:** Sanitised test docstrings and comments — removed function-call patterns that static analysis scanners match against English text\n\n### v2.11.3 (May 2026)\n- **Security:** Replaced string-grep forbidden-imports check with `ast.parse` tree-walking — properly catches `compile(...)`, `exec(...)`, `eval(...)` regardless of whitespace or indirection; no longer false-positives on comments, docstrings, or strings containing those words\n\n### v2.11.2 (May 2026)\n- **Title:** Updated to \"Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\"\n- **Advisory:** Added v2.11.0 user advisory banner for non-SG deadline re-check\n- **Docs:** Added CLI overview (`--help` output) to SKILL.md so users can evaluate commands without installing\n- **Docs:** Tightened \"No telemetry\" statement to distinguish skill code from LLM provider data handling\n- **Docs:** Added \"Files written\" section documenting exactly what each script writes and when\n- **Docs:** SKILL.md changelog backfilled with v2.10.0–v2.11.1 entries (CHANGELOG.md remained the source of truth; SKILL.md was out of sync)\n- **Security:** Added `test_security.py` — scans all 13 scripts for forbidden imports (subprocess, socket, requests, urllib.request, http.client, importlib, pickle, marshal, os.system, exec, eval, compile), enforcing the no-network/no-subprocess/no-dynamic-code claim at test time\n- **Docs:** Recommend `python3 -m unittest` (stdlib) alongside pytest\n\n### v2.11.1 (May 2026)\n- **Scope correction:** Removed bundled best-effort holiday data for AE, MY, GB — shipping unverified holiday data in a legal-deadline tool was the wrong call\n- **FIDIC Deadline Calculator** now ships with **Singapore holidays only** (gazette-verified). Other jurisdictions: supply your own verified holiday data via `--holidays-file`\n- Added `docs/holiday-file-format.md` with JSON schema, worked example, and source guidance\n- Reduced golden deadline tests to Singapore-only; retained generic property tests\n\n### v2.11.0 (May 2026)\n- **New:** FIDIC Deadline Calculator (`fidic_deadline.py`) — computes contractual deadlines in three modes: `calendar` (calendar-day counting), `exclude_ph` (excludes public holidays only), and `working` (excludes weekends + public holidays)\n- **Singapore calendar bundled and maintained** — verified against eGazette / MOM source data\n- **Important:** Holiday data covers **Singapore only**. For all other jurisdictions, users must supply their own gazette-verified holiday file via `--holidays-file`. The tool will prompt clearly if a non-SG seat is used without one.\n\n### v2.10.1 (May 2026)\n- Reconciled CHANGELOG v2.8.1/v2.9.1 duplication\n- Recategorized out-of-range ValueError as legal accuracy change\n- Added per-year eGazette URL, MOM gazette cite, and holiday names to `data/sg_holidays.json`\n- Added moon sighting notes for Hari Raya Puasa / Hari Raya Haji dates\n\n### v2.10.0 (May 2026)\n- **3-layer test suite (57+ tests):** golden-file, Hypothesis property-based, and boundary tests for SOP calculator; register tests for all forms\n- **Out-of-range year protection:** Calculator now raises ValueError with a clear message when claim date's year has no holiday data (no silent wrong answers)\n- **`pyproject.toml`** with optional extras (`[excel]`, `[word]`, `[all]`, `[test]`)\n- **`data/sg_holidays.json`** as single source of truth with per-year provenance\n- **Disclaimer injection** on all generated templates (visible text + HTML comment)\n- **Deprecated:** `--add` pipe-delimited flag; replaced with `--add-event` (structured) and `--events-csv` (batch)\n- **Added:** `CHANGELOG.md` with categorized convention\n\n### v2.9.0 (May 2026)\n- **FIDIC Silver Book (EPC/Turnkey) 2017 added as a fully-supported form.** All 7 claim templates now have fidic-silver versions (notice-of-claim, eot-application, variation-claim, interim-claim, disruption-claim, loss-and-expense, final-account). Templates are tailored to EPC/Turnkey context: no Engineer (Employer administers directly via Employer's Representative), narrower EOT grounds under Sub-Clause 8.5, Contractor's broader risk assumption, lump sum pricing, fitness for purpose obligations, and design responsibility under Sub-Clause 5.\n- **fidic-silver obligations register added** — 33 contractor obligations (including EPC-specific design, fitness for purpose, higher physical conditions threshold) and 11 employer obligations.\n- **fidic-silver notice calendar added** — 12 key notices (claims, design, variations, disputes, payment) with Silver Book-specific recipients (Employer, not Engineer).\n- **Excel register now produces fidic-silver sheets** for both obligations and notices.\n- Full support matrix is now **35 combos** (7 claim types × 5 forms: fidic-red, fidic-yellow, fidic-silver, psscoc, sia). NEC4 and JCT remain pending.\n- Updated cross-references to companion skill `construction-claim-strategy` v1.5.0.\n\n### v2.8.1 (May 2026) — SOP holiday correctness fix\n- **Sunday → Monday in-lieu rule now applied automatically.** Under the Holidays Act 1998 s.4(2), when a public holiday falls on a Sunday the following Monday is a public holiday in lieu. The previous bundled holiday list missed four such Mondays (1 Jun 2026 — Vesak in-lieu; 10 Aug 2026 — National Day in-lieu; 9 Nov 2026 — Deepavali in-lieu; 8 Feb 2027 — CNY Day 2 in-lieu). The SOP day arithmetic now derives in-lieu Mondays from the gazetted Sunday holidays automatically, so future gazette updates won't drift.\n- This affects any SOP timeline whose computed window crosses a Sunday public holiday — deadlines could be off by one day under v2.8.0 and earlier. Re-run any SOP timelines you generated previously if the period crossed those dates.\n\n### v2.8.0 (May 2026)\n- **FIDIC Yellow Book 2017 added as a fully-supported form.** All 7 claim templates now have fidic-yellow versions (notice-of-claim, eot-application, variation-claim, interim-claim, disruption-claim, loss-and-expense, final-account). Templates are tailored to Plant & Design-Build context: design responsibility (Cl. 5), Employer's Requirements (Cl. 1.9), milestone-based payment (Schedule of Payments), Tests after Completion (Cl. 12), and the 8.5 EOT grounds.\n- **fidic-yellow obligations register added** — 33 contractor obligations (including design-specific clauses 5.1–5.8) and 12 employer obligations.\n- **Excel register now produces fidic-yellow obligations sheets** in addition to notices.\n- All new templates are edition-tagged in the HTML comment header and visible body.\n- Full support matrix is now **28 combos** (7 claim types × 4 forms: fidic-red, fidic-yellow, psscoc, sia). NEC4 and JCT remain pending.\n\n### v2.7.0 (May 2026)\n- **6 new claim templates** filling the PSSCOC + SIA gap: `eot-application`, `variation-claim`, and `interim-claim` now have full PSSCOC (7th Ed., 2014 rev. 2020) and SIA (9th Ed., 2010 rep. 2016) versions.\n- All new templates are **edition-tagged** in an HTML comment header and in the visible body, so users know exactly which standard form edition the clauses correspond to.\n- Interim-claim templates explicitly dual-purpose as SOP Act s.10 payment claims with the s.10(3) requirements ticked off.\n- Full support matrix is now **21 combos** (7 claim types × 3 forms).\n\n### v2.6.0 (May 2026)\n- **SOP calculator now holiday-aware.** Periods are computed in SOP days (excluding Singapore public holidays per SOP Act s.2 read with the Holidays Act 1998). Previously used calendar-day arithmetic which silently produced wrong dates around holiday clusters.\n- **SOP timeline conceptual fix.** Removed misleading min/max determination and payment-due rows; replaced with single statutory deadlines and an explicit s.17(2) +7-day extension note.\n- **Argparse no longer crashes** on `claims_template.py` for `fidic-yellow`, `nec4`, or `jct` — unsupported forms are now rejected at parse time with a pointer to `--list`. Unsupported (form, type) combos within registered forms also fail with a helpful message.\n- **Excel register no longer writes half-empty workbooks.** Pre-flight coverage check refuses combos like `--form fidic-yellow --type obligations` and prints what is supported.\n- **Version sprawl resolved.** New `scripts/version.py` is the single source of truth; intake.py / wizard.py / delay_calculator.py / sop_calculator.py footers all aligned to v2.6.\n\nFile v2.11.5:data/holidays/README.md\n\n# Country Holiday Data\n\nThis directory contains public holiday data used by the FIDIC Deadline Calculator.\n\n## Bundled data\n\nOnly **Singapore** (`SG.json`) is bundled and maintained by the skill author, verified against the MOM gazette and eGazette.\n\n## Other jurisdictions\n\nFor any non-Singapore seat, users must supply their own holiday file via `--holidays-file`. See `docs/holiday-file-format.md` for the JSON schema, a worked example, and source recommendations.\n\n## File naming\n\n`<ISO-3166-1-alpha-2>.json` — e.g. `SG.json`\n\n## Refresh procedure\n\nCheck annually (typically Q4 when MOM publishes next year's gazette) for updated Singapore holidays. Update `SG.json`, run tests, and bump the skill version.\n\n## Why only Singapore?\n\nHoliday calendars vary by sub-jurisdiction (Malaysian state, UK constituent country, individual emirate), shift by moon-sighting, and are gazetted by each government's authoritative source. Rather than ship best-effort data that users might rely on without verification, we provide a clean extension mechanism and let users bring verified data from their own jurisdiction's gazette.\n\nFile v2.11.5:demo/README.md\n\n# Demo Folder — Tutorial Recording Assets\n\nFiles in this folder support the v2.5.0 YouTube tutorial recording.\n\n## Files\n\n- **`matter.json`** — sample Matter Intake input for Demo 1 (FIDIC Red 1999, Singapore, Contractor, late site access, EOT + additional payment)\n- **`run-demos.sh`** — orchestrator that runs the three demos with pauses between each, ready for live screen recording\n\n## Usage\n\nFrom the skill root (`skills/construction-law/`):\n\n```bash\nbash demo/run-demos.sh\n```\n\nPress Enter between each demo to advance. Each demo clears the screen so the recording stays clean.\n\n## Standalone commands (if you prefer to run them individually)\n\n```bash\n# Demo 1 — Matter Intake (FIDIC Red EOT, late site access)\npython3 scripts/intake.py --file demo/matter.json\n\n# Demo 2 — FIDIC Comparator (risk allocation: Red vs Yellow vs Silver)\npython3 scripts/construction_law.py compare --forms red,yellow,silver --topic risk\n\n# Demo 2b — Export claims comparison to CSV\npython3 scripts/construction_law.py compare --forms red,silver --topic claims --format csv --output comparison.csv\n\n# Demo 3 — SOP Act timeline (Payment Claim 30 Jun 2026)\npython3 scripts/sop_calculator.py --claim-date 2026-06-30\n```\n\n## Note\n\nThese demo artefacts are excluded from the published skill via `.gitignore` / publish manifest if needed — they're recording aids, not user-facing skill assets.\n\nFile v2.11.5:_meta.json\n\n{\n  \"ownerId\": \"kn77g2eearfhaq251ab7jtrctn854v1s\",\n  \"slug\": \"construction-law\",\n  \"version\": \"2.11.5\",\n  \"publishedAt\": 1779013417998\n}\n\nFile v2.11.5:references/claims.md\n\n# Claims, EOT & Delay Analysis — Reference\n\n## Table of Contents\n1. [Claims Framework](#claims-framework)\n2. [Extension of Time (EOT)](#eot)\n3. [Delay Analysis Methods](#delay-analysis)\n4. [Disruption Claims](#disruption)\n5. [Prolongation Costs](#prolongation)\n6. [Loss & Expense](#loss-expense)\n7. [Global Claims](#global-claims)\n8. [Concurrent Delay](#concurrent-delay)\n9. [Acceleration](#acceleration)\n10. [Notice Requirements Summary](#notices)\n\n---\n\n## Claims Framework {#claims-framework}\n\n### Five-Step Claims Process\n\n| Step | Action | Key Question |\n|------|--------|-------------|\n| 1. Entitlement | Identify contractual basis | Which clause gives the right to claim? |\n| 2. Causation | Establish cause-and-effect | What event caused what impact? |\n| 3. Notice | Verify compliance with notice requirements | Was notice given on time? |\n| 4. Substantiation | Compile supporting evidence | What records prove the claim? |\n| 5. Quantification | Calculate time and/or cost | How much time/money is the impact? |\n\n### Entitlement — Common Contractual Bases\n\n| Ground | FIDIC Clause | PSSCOC Clause | SIA Clause |\n|--------|-------------|---------------|------------|\n| Variations | 13.1-13.3 | 14 | 11 |\n| Unforeseeable ground conditions | 4.12 | Depends on edition | — |\n| Employer's risk events | 17/18 | Depends | — |\n| Late access/possession | 8.4 / 8.5 | 20 | — |\n| Suspension by Employer | 8.9 | — | — |\n| Exceptionally adverse weather | 8.5 | 23 | 23 |\n| Force majeure / exceptional events | 18 | FM clause | — |\n| Changes in law | 13.6 | — | — |\n\n### Evidence Required\n- Contemporary records (daily reports, site diaries, progress photos)\n- Correspondence (letters, emails, meeting minutes)\n- Programme updates (baseline vs actual)\n- Resource records (labour, plant, material deliveries)\n- Cost records (invoices, payroll, plant hire agreements)\n- Weather records (Met Service data)\n- Instructions and drawings (RFIs, AI, VO, SI)\n\n---\n\n## Extension of Time (EOT) {#eot}\n\n### EOT Entitlement Checklist\n1. ✅ Is there a contractual right to EOT for this event?\n2. ✅ Was the event beyond the Contractor's control?\n3. ✅ Did the event actually cause delay to the **critical path**?\n4. ✅ Was notice given within the required period?\n5. ✅ Has the Contractor taken reasonable steps to mitigate?\n\n### EOT vs Prolongation Costs\n| | EOT | Prolongation Costs |\n|---|-----|-------------------|\n| What | Extension of contract completion date | Compensation for additional time-related costs |\n| Effect | Removes exposure to liquidated damages | Reimburses site overhead, preliminaries, etc. |\n| Entitlement | May exist without cost entitlement | Requires both delay + cost entitlement |\n| Example | Adverse weather: EOT yes, cost usually no | Employer variation: EOT yes, cost yes |\n\n### Prevention Principle\n- If the Employer causes delay and there is **no EOT mechanism** for that type of delay → liquidated damages clause may become unenforceable\n- Employer cannot benefit from their own act of prevention\n- Solution: ensure EOT clause covers all employer-caused delays\n- **Peak Construction v Wilson Homes [2001]**: If no EOT clause, time becomes \"at large\" and employer can only claim general damages for delay (must prove actual loss)\n\n---\n\n## Delay Analysis Methods {#delay-analysis}\n\n### SCL Protocol Methods (Society of Construction Law)\n\n| Method | Description | Prospective/Retrospective | Complexity |\n|--------|-------------|--------------------------|------------|\n| **As-Planned vs As-Built** | Compare planned programme with actual completion | Retrospective | Low |\n| **Impacted As-Planned** | Add delay events to baseline programme; measure impact | Prospective/Retrospective | Medium |\n| **Collapsed As-Built** | Remove delay events from as-built programme; see what completion would have been | Retrospective | High |\n| **Time Impact Analysis (TIA)** | Insert delay events sequentially into updated programme at point of impact | Both | Highest |\n| **Windows Analysis** | Divide project into time windows; analyse delay in each window | Retrospective | High |\n\n### As-Planned vs As-Built\n- Simplest method — compare two programmes\n- **Weakness**: does not prove causation; only shows what happened vs what was planned\n- Useful as starting point; insufficient alone for complex claims\n- Does not account for concurrent delays\n\n### Impacted As-Planned\n- Insert delay events into the **baseline** programme\n- Shows theoretical impact of each event on planned completion\n- **Weakness**: relies on accuracy of baseline programme; does not reflect actual progress\n- Best used: early in project, prospective analysis, when as-built data limited\n\n### Collapsed As-Built\n- Start from **actual** completion → subtract delay events → shows \"but-for\" completion date\n- More reliable than impacted as-planned (based on reality)\n- **Weakness**: subjective selection of which events to collapse; hindsight bias\n- Best used: post-completion analysis\n\n### Time Impact Analysis (TIA)\n- **Gold standard** for delay analysis\n- Insert each delay event at the point it occurred into an updated programme\n- Shows cumulative and individual impact of each delay\n- **Requirements**: regularly updated programmes, good contemporaneous records\n- **Weakness**: data-intensive; requires detailed programme updates throughout project\n- Preferred by tribunals and courts for complex disputes\n\n### Windows Analysis\n- Divide project timeline into discrete periods (windows)\n- Analyse critical path and delay causes within each window\n- Shows how critical path shifted over time\n- Good for projects with multiple delay events over long duration\n- **Weakness**: window selection can be disputed; boundary effects\n\n### Choosing the Right Method\n- **Simple delays, early stage**: As-planned vs as-built or impacted as-planned\n- **Complex delays, post-completion**: TIA or collapsed as-built\n- **Long projects, many events**: Windows analysis\n- **Tribunal preference**: TIA generally preferred; but any properly applied method accepted\n\n> 📚 **For deeper coverage** — including Retrospective Longest Path, negative float & EOT entitlement, pacing delays, concurrent delay strategy (Malmaison/North Midland/City Inn), the full SCL Protocol 22 Core Principles, and 15 key case citations — see the companion skill `construction-claim-strategy` on ClawHub.\n\n---\n\n## Disruption Claims {#disruption}\n\n### Disruption vs Delay\n| | Delay | Disruption |\n|---|-------|-----------|\n| Effect | Late completion | Loss of productivity (may or may not cause delay) |\n| Measurement | Time (days/weeks) | Cost (labour/plant inefficiency) |\n| Critical path | Must affect critical path | Need not affect critical path |\n| Example | Late drawings → cannot start activity | Working in congested conditions → slower output |\n\n### Disruption Quantification Methods\n\n| Method | Description | Reliability |\n|--------|-------------|------------|\n| **Measured Mile** | Compare productivity in disrupted vs undisrupted period on same project | Highest |\n| **Earned Value Analysis** | Compare planned vs actual productivity using earned value metrics | High |\n| **Industry Studies** (Leonard, MCAA) | Apply published productivity loss factors | Medium |\n| **Total Cost** | Claim difference between planned and actual cost | Lowest (last resort) |\n\n### Measured Mile\n- Compare productivity of **same crew, same work** in disrupted vs undisrupted period\n- Most persuasive method — uses project's own data\n- Requires: identifiable undisrupted period on the same project\n- **Weakness**: not always available if entire project was disrupted\n\n---\n\n## Prolongation Costs {#prolongation}\n\n### Typical Prolongation Cost Heads\n| Category | Examples |\n|----------|---------|\n| **Site overhead** | Site office rental, utilities, security, cleaning |\n| **Staff costs** | Project manager, engineers, QS, supervisors, admin |\n| **Plant & equipment** | Crane hire, scaffolding, hoisting equipment |\n| **Insurance** | Extended CAR/EAR, third-party liability |\n| **Bonds & guarantees** | Extended performance bond, advance payment guarantee |\n| **Head office overhead** | Calculated using formula (Emden, Hudson, Eichleay) |\n| **Finance charges** | Interest on capital tied up, bank charges |\n| **Profit** | If contractually entitled (FIDIC: Cost + profit for some events) |\n\n### Head Office Overhead Formulae\n\n**Emden Formula** (UK/Singapore preferred):\n```\nHO overhead = (Contract Sum / Contract Period) × (HO overhead % / 100) × Delay Period\n```\n\n**Hudson Formula** (older, less favoured):\n```\nHO overhead = (HO overhead % in tender / 100) × (Contract Sum / Contract Period) × Delay Period\n```\n\n**Eichleay Formula** (US):\n```\n1. Allocable overhead = (Billings on contract / Total billings) × Total HO overhead\n2. Daily rate = Allocable overhead / Days of performance\n3. Claim = Daily rate × Days of delay\n```\n\n> **Singapore courts** generally prefer Emden; Hudson criticised because it uses tender allowance rather than actual overhead.\n\n---\n\n## Loss & Expense {#loss-expense}\n\n### Common Heads of Claim\n1. Prolongation costs (see above)\n2. Disruption costs (productivity loss)\n3. Acceleration costs (if instructed or constructively required)\n4. Increased material/labour costs (if no price adjustment clause)\n5. Finance charges / interest\n6. Loss of profit (on delayed project or lost opportunities)\n7. Additional preliminaries\n\n### Proof Required\n- **Direct loss**: flowing naturally from the breach — easier to prove\n- **Consequential loss**: not flowing naturally — must show foreseeability (Hadley v Baxendale)\n- Many construction contracts **exclude consequential loss** — check the contract\n\n---\n\n## Global Claims {#global-claims}\n\n### What Is a Global Claim?\n- Claim where multiple events caused loss, but claimant cannot (or does not) link specific events to specific losses\n- Instead: total loss attributed to all events collectively\n\n### Legal Position\n- **Walter Lilly v Mackay [2012]**: Global claims are permissible BUT:\n  - Must show at least some causal link between events and loss\n  - Must show none of the events are the claimant's own fault\n  - Tribunal can apportion as it sees fit\n- **John Holland v Kvaerner [2004]** (Singapore): Global claims permitted where impractical to separate causes\n- Generally disfavoured — should be last resort when separation genuinely impossible\n\n---\n\n## Concurrent Delay {#concurrent-delay}\n\n### Definition\nTwo or more delay events occurring at the same time, where at least one is Employer risk and one is Contractor risk, both independently causing critical delay.\n\n### Approaches by Jurisdiction\n\n| Approach | Description | Jurisdiction |\n|----------|-------------|-------------|\n| **Dominant cause** | Identify the dominant cause of delay; that party bears responsibility | Less common now |\n| **Apportionment** | Apportion delay between parties based on relative contribution | Singapore (preferred), some civil law |\n| **Malmaison approach** | Contractor gets EOT but no prolongation costs | England & Wales (traditional) |\n| **SCL Protocol** | If true concurrency, Contractor entitled to EOT but not costs | UK (influential, not binding) |\n\n### Key Cases\n- **Henry Boot v Malmaison [1999]**: Contractor entitled to EOT if employer delay event would have caused delay regardless of concurrent contractor delay\n- **De Beers v Atos [2010]**: Applied Malmaison; EOT granted for concurrent delays\n- **Saga Cruises v Fincantieri [2016]**: Burden on Contractor to demonstrate the employer event would have caused delay independently\n\n### Singapore Position\n- Courts have accepted **apportionment** of concurrent delays\n- SO/Architect may grant partial EOT for employer-caused portion\n- More flexible than strict English Malmaison approach\n\n---\n\n## Acceleration {#acceleration}\n\n### Types\n| Type | Description | Entitlement |\n|------|-------------|-------------|\n| **Instructed** | Employer directs Contractor to accelerate | Contractor entitled to costs |\n| **Constructive** | Employer refuses valid EOT, forcing Contractor to accelerate to avoid LDs | Contractor may claim costs (harder to prove) |\n| **Voluntary** | Contractor accelerates at own cost to recover own delays | No entitlement |\n\n### Constructive Acceleration Requirements\n1. Contractor was entitled to EOT\n2. Contractor applied for EOT properly\n3. EOT was wrongfully refused or not assessed\n4. Contractor was facing LDs exposure\n5. Contractor notified intent to accelerate\n6. Contractor incurred additional costs to accelerate\n\n---\n\n## Notice Requirements Summary {#notices}\n\n| Contract | Claim Notice | EOT Notice | Key Consequence |\n|----------|-------------|------------|-----------------|\n| FIDIC 2017 | 28 days from awareness (Cl. 20.2) | Under claim procedure | Time-barred |\n| PSSCOC | 28 days from delay event (Cl. 23) | 28 days from delay event | May lose entitlement |\n| SIA | Written notice required (Cl. 23) | Written notice required | May lose entitlement |\n| NEC4 | Early warning (Cl. 15); compensation event notification (Cl. 61) | 8 weeks from awareness | Time-barred |\n\n> **Golden rule**: When in doubt, give notice. A late or unnecessary notice is always better than no notice at all.\n\nFile v2.11.5:references/disputes.md\n\n# Dispute Resolution in Construction — Reference\n\n## Table of Contents\n1. [ADR Spectrum](#adr-spectrum)\n2. [Negotiation & Mediation](#mediation)\n3. [Adjudication](#adjudication)\n4. [DAB / DAAB (FIDIC)](#daab)\n5. [Arbitration](#arbitration)\n6. [Conflict Avoidance Board (CAB)](#cab)\n7. [Key Cases](#cases)\n8. [Enforcement](#enforcement)\n\n---\n\n## ADR Spectrum {#adr-spectrum}\n\n| Method | Binding? | Speed | Cost | Formality |\n|--------|----------|-------|------|-----------|\n| Negotiation | No | Fast | Lowest | Informal |\n| Mediation | No (unless settled) | Fast | Low | Semi-formal |\n| Conciliation | Non-binding recommendation | Medium | Low-Medium | Semi-formal |\n| Conflict Avoidance Board | Parties decide | Ongoing | Medium | Structured |\n| Adjudication (statutory) | Temporarily binding | Very fast (weeks) | Medium | Formal |\n| DAB/DAAB | Binding (subject to NOD) | Medium | Medium-High | Formal |\n| Arbitration | Final & binding | Slow | High | Formal |\n| Litigation | Final & binding | Slowest | Highest | Most formal |\n\n---\n\n## Negotiation & Mediation {#mediation}\n\n### Mediation in Construction\n- Facilitative process — mediator helps parties reach agreement, does not impose decision\n- **Cheapest ADR mechanism** available (Gillion)\n- Very high resolution rate at SMC (Singapore Mediation Centre)\n- Typically completed in **1–2 days**: position paper → mediator → workshop → plenary\n- Over 25 years of construction practice, **mediation is underused**\n- Non-binding unless parties sign settlement agreement\n\n### When Mediation Works Best\n- Parties have ongoing relationship (want to preserve)\n- Dispute is commercial rather than purely legal\n- Both parties willing to compromise\n- Confidentiality important\n- Early in dispute lifecycle (before positions harden)\n\n### When Mediation May Not Work\n- One party acting in bad faith\n- Significant power imbalance\n- Pure legal question requiring binding precedent\n- Party needs urgent interim relief\n\n---\n\n## Adjudication {#adjudication}\n\n### Statutory Adjudication (Singapore SOP Act)\n- **Temporarily binding** — pay now, argue later\n- Designed for **cash flow** protection, not final resolution\n- Cannot be contracted out of (Section 36 SOP Act)\n\n### Process\n1. Payment claim served\n2. Payment response due within 21 days\n3. If dispute → adjudication application within 7 days\n4. Adjudication response within 7 days\n5. Adjudicator determines within 7–14 days\n6. Payment within 7 days of determination\n\n### Key Principles\n- **Respondent's payment response is critical** — failure to respond = \"smash and grab\" (respondent cannot raise withholding reasons)\n- Determination is temporarily binding — can be reopened in arbitration/litigation\n- Adjudicator's jurisdiction is narrow — only the payment claim in dispute\n- Multiple adjudications possible — fresh claims each payment cycle\n\n### UK Adjudication (Housing Grants Act 1996)\n- Similar concept — 28-day determination\n- \"Pay now, argue later\" principle\n- Right cannot be contracted out of\n- Widely used in UK construction industry\n\n---\n\n## DAB / DAAB (FIDIC) {#daab}\n\n### Evolution\n| Edition | Body | Type |\n|---------|------|------|\n| Pre-2017 | DAB (Dispute Adjudication Board) | Ad hoc or standing |\n| 2017 | DAAB (Dispute Avoidance/Adjudication Board) | **Standing** (mandatory for Red/Yellow) |\n\n### 2017 DAAB — Dual Role\n1. **Avoidance**: Regular site visits, early engagement, informal opinions\n2. **Adjudication**: Formal binding decisions on referred disputes\n\n### Referral to DAAB\n1. Either party refers dispute after Engineer's determination (or failure to determine)\n2. DAAB has **84 days** to decide (extendable by agreement)\n3. Decision is **binding** — immediate compliance required\n4. NOD within **28 days** → dispute can proceed to arbitration\n5. No NOD → decision becomes **final and binding**\n\n### Non-Compliance\n- 2017 clarification: non-compliance is a **separate dispute**\n- Can be referred **directly to arbitration** — no need to go back to DAAB\n- Can seek **partial award** for non-compliance while merits continue\n- Persero case (Singapore) confirmed this approach\n\n### DAAB vs SMC CAB\n\n| Feature | FIDIC DAAB | SMC CAB |\n|---------|-----------|---------|\n| Primary role | Dispute resolution (reactive) | Dispute **avoidance** (proactive) |\n| Mediation? | No (unless separately agreed) | **Yes** — strong emphasis (Rule 7) |\n| Composition | 1 or 3 members | Default 1, flexible per issue |\n| Decision timeframe | 84 days | No fixed timeframe |\n| Site visits | Yes (standing DAAB) | Yes — predetermined agenda |\n| Binding? | Yes (subject to NOD) | Parties decide per issue |\n\n---\n\n## Arbitration {#arbitration}\n\n> 📚 **For arbitration tactics, prolongation strategies, and adjudication vs arbitration comparison** — including Common Law vs Civil Law approaches, preparation checklists, and expert engagement tips — see the companion skill `construction-claim-strategy` on ClawHub.\n\n### Key Features in Construction\n- **Final and binding** — limited grounds for challenge (procedural irregularity, public policy)\n- **Confidential** — unlike court proceedings\n- **Party autonomy** — parties choose arbitrators, procedure, seat, language\n- **Expert arbitrators** — can appoint construction specialists (unlike judges)\n- **International enforcement** — New York Convention (1958)\n\n### Common Arbitral Institutions for Construction\n| Institution | Abbreviation | Base |\n|-------------|-------------|------|\n| Singapore International Arbitration Centre | SIAC | Singapore |\n| Singapore Institute of Arbitrators | SIArb | Singapore |\n| International Chamber of Commerce | ICC | Paris |\n| London Court of International Arbitration | LCIA | London |\n| Hong Kong International Arbitration Centre | HKIAC | Hong Kong |\n| Kuala Lumpur Regional Centre for Arbitration | AIAC | Kuala Lumpur |\n\n### Seat vs Venue\n- **Seat** = legal jurisdiction governing the arbitration (procedural law)\n- **Venue** = physical location of hearings (can differ from seat)\n- Seat determines: court supervisory jurisdiction, enforcement regime, available challenges\n\n### Singapore as Arbitration Seat\n- International Arbitration Act (IAA) — based on UNCITRAL Model Law\n- Minimal court intervention policy\n- Strong enforcement track record\n- Party to New York Convention\n- Preferred seat for Asia-Pacific construction disputes\n\n### Multi-Party / Multi-Contract Arbitration\n- Common in construction (employer, contractor, subcontractors, consultants)\n- **Joinder**: bringing additional parties into existing arbitration\n- **Consolidation**: merging related arbitrations\n- Requires: arbitration agreement permitting joinder/consolidation, or institutional rules allowing it\n- SIAC Rules 2016: provisions for joinder and consolidation\n\n### Interim Measures\n- Arbitral tribunal can grant interim relief (preservation of evidence, security for costs, injunctions)\n- Emergency arbitrator provisions available under most institutional rules\n- Court may also grant interim measures in support of arbitration\n\n---\n\n## Conflict Avoidance Board (CAB) {#cab}\n\n### SMC Integrated ADR Framework\n- Standalone rules by Singapore Mediation Centre\n- Can be **plugged into any contract** — not tied to specific standard form\n- Combines dispute avoidance + mediation + determination\n\n### Four Functions\n\n| Function | Description | Binding? |\n|----------|-------------|----------|\n| 1. Dispute Avoidance | Regular site meetings, risk monitoring, cooperation | N/A |\n| 2. Informal Assistance | Non-binding guidance on issues before they become disputes | Non-binding |\n| 3. Mediation (Rule 7) | Formal mediation — position papers, mediator, plenary | N/A (facilitative) |\n| 4. Opinion/Determination | Formal decision on referred disputes | Parties decide |\n\n### Site Visit Agenda\n- Progress summary\n- Risk register update\n- Claims/issues status\n- Mitigation measures\n- Completion dates review\n\n### Advantages\n- Proactive — prevents disputes from escalating\n- Flexible — parties choose binding or non-binding per issue\n- Cost-effective — cheaper than arbitration\n- Includes mediation — built-in facilitative process\n\n### Limitations\n- Not widely adopted yet\n- Requires parties willing to engage in good faith\n- No established enforcement mechanism (unlike FIDIC DAAB)\n\n---\n\n## Key Cases {#cases}\n\n### Persero (Singapore)\n- Indonesian construction project, arbitration seated in Singapore\n- Issue: must non-compliance with DAB decision be re-referred to DAB before arbitration?\n- **Held**: No — can go directly to arbitration\n- Significance: clarified enforcement of DAB/DAAB decisions globally\n\n### Henry Boot v Malmaison [1999] (UK)\n- Concurrent delay case\n- **Held**: Contractor entitled to EOT if employer delay event would have caused delay regardless of concurrent contractor delay\n- Foundation of \"Malmaison approach\" to concurrent delay\n\n### Walter Lilly v Mackay [2012] (UK)\n- Global claims case\n- **Held**: Global claims permissible where events and losses cannot be individually linked\n- Must show: causal connection exists; no claimant-fault events included\n\n### Costain v Bechtel — Channel Tunnel Rail Link (UK)\n- NEC contract — Clause 10.1 (mutual trust and cooperation)\n- **Held**: Clause 10.1 imposes obligation of honesty and proper conduct\n- BUT does not override contract mechanism or create new rights\n- Good faith = guiding behaviour, not source of claims\n\n### Yam Seng v ITC [2013] (UK)\n- First implied duty of good faith in relational/commercial contracts\n- **Later limited** by Quantum Advisory — good faith only for very specific contract forms\n\n### Peak Construction v Wilson Homes [2001] (UK)\n- Prevention principle case\n- **Held**: If no EOT mechanism for employer-caused delay → time at large → LDs unenforceable\n\n---\n\n## Enforcement {#enforcement}\n\n### Enforcing Arbitral Awards\n- **New York Convention (1958)**: Awards enforceable in 170+ countries\n- Limited grounds for refusal (Article V): procedural irregularity, lack of jurisdiction, public policy\n- Singapore: enforcement under IAA Section 19 or Arbitration Act Section 46\n\n### Enforcing Adjudication Determinations\n- Singapore SOP Act: determination enforceable as a judgment debt\n- If respondent fails to pay → claimant can apply for judgment\n- Court will enforce unless adjudicator lacked jurisdiction or breach of natural justice\n\n### Enforcing DAAB Decisions\n- Binding immediately — must comply even if NOD issued\n- Non-compliance → refer to arbitration for enforcement (partial award)\n- No need to re-refer to DAAB (Persero)\n\nFile v2.11.5:references/fidic.md\n\n# FIDIC 2017 Suite — Clause Reference\n\n## Table of Contents\n1. [Red Book (Conditions of Contract for Construction)](#red-book)\n2. [Yellow Book (Conditions of Contract for Plant & Design-Build)](#yellow-book)\n3. [Silver Book (Conditions of Contract for EPC/Turnkey)](#silver-book)\n4. [Emerald Book (Conditions of Contract for Underground Works)](#emerald-book)\n5. [Key Clauses Across All Books](#key-clauses)\n6. [Time-Bars & Notice Requirements](#time-bars)\n7. [DAAB Procedures](#daab)\n8. [2017 vs Pre-2017 Changes](#changes)\n\n---\n\n## Red Book\n\n### Risk Allocation\n- **Employer** bears: quantity risk, unforeseeable ground conditions, employer's design errors, force majeure (shared)\n- **Contractor** bears: rate risk, workmanship, programme, resources, subcontractor management\n\n### Key Clauses\n| Clause | Subject | Key Points |\n|--------|---------|------------|\n| 1.1.29 | Cost | Defined as expenditure reasonably incurred (or to be incurred), including overhead but NOT profit |\n| 1.1.80 | Time for Completion | Date/period stated in Contract Data |\n| 4.12 | Unforeseeable Physical Conditions | Contractor entitled to EOT + Cost + Profit if unforeseeable |\n| 8.4 | EOT | Contractor entitled if delayed by listed causes; must give notice under 20.2 |\n| 8.8 | Delay Damages | Employer entitled to LDs per Contract Data |\n| 13.1 | Right to Vary | Engineer may initiate; Contractor must comply unless unable |\n| 13.3 | Variation Procedure | Instruction → Contractor proposes → Engineer responds |\n| 14.3 | Interim Payment | Monthly applications; Engineer certifies within 28 days |\n| 14.6 | IPC Issuance | Engineer issues IPC within 28 days of receiving Statement |\n| 15.1 | Notice to Correct | Employer may give notice if Contractor fails obligations |\n| 15.2 | Termination by Employer | 14 days notice after Notice to Correct not complied |\n| 16.1 | Suspension by Contractor | If Employer fails to pay within 42 days of IPC due date |\n| 16.2 | Termination by Contractor | 14 days notice for listed defaults |\n| 17.2 | Indemnities | Mutual indemnities for death/injury and property damage |\n| 18.1 | Exceptional Events | Force majeure equivalent; both parties may claim EOT |\n| 20.1 | Claims (Contractor) | 28-day notice requirement from awareness |\n| 20.2 | Claims Procedure | Detailed procedure for notices and substantiation |\n| 21 | Disputes | DAAB standing board; 28 days for decision |\n\n## Yellow Book\n\n### Key Differences from Red Book\n- **Contractor designs** based on Employer's Requirements\n- **Fitness for purpose** obligation (higher than reasonable skill & care)\n- **Employer's Requirements** replace Drawings/Specifications\n- Contractor bears **design risk** — errors in Employer's Requirements may still be Contractor's risk if discoverable\n- Clause 5.1: Contractor's design obligation — must satisfy Employer's Requirements\n- Clause 5.8: Design errors — Contractor responsible for errors in design documents\n\n### Design Liability\n- Standard of care: **fitness for purpose** (unless amended)\n- Contractor must check Employer's Requirements for errors/defects — Clause 5.1\n- If Contractor discovers error → must notify Engineer (Clause 5.1)\n- If Contractor fails to discover error it should have found → Contractor's risk\n\n## Silver Book\n\n### Key Differences\n- **Maximum risk transfer** to Contractor\n- No Clause 4.12 (unforeseeable physical conditions) — Contractor deemed to have allowed for all conditions\n- No Clause 18 exceptional events relief in some versions\n- No Engineer role — replaced by Employer's Representative (or Employer administers directly)\n- Lump sum pricing — no re-measurement\n- Contractor bears risk of: ground conditions, design, errors in Employer's Requirements\n\n### When to Use\n- Well-defined scope with experienced contractor\n- Employer wants price certainty\n- BOT/PPP/concession projects\n- Risk: good contractors may avoid bidding; weak contractors underprice then claim\n\n## Emerald Book\n\n### Tunnelling-Specific Provisions\n- **Geotechnical Baseline Report (GBR)** — defines expected ground conditions\n- Conditions worse than GBR → Employer's risk\n- Conditions better than GBR → Employer benefits (cost savings shared)\n- Specific provisions for TBM (tunnel boring machine) operations\n- Changed conditions mechanism tailored for underground works\n\n---\n\n## Key Clauses Across All Books {#key-clauses}\n\n### Clause 20.2 — Claims (2017 Edition)\n\n**Notice requirement**: 28 days from date the Contractor became aware (or should have become aware) of the event/circumstance.\n\n**Procedure**:\n1. **Notice of Claim** — within 28 days (time-bar)\n2. **Fully detailed claim** — within 84 days of Notice, or as agreed\n3. **Engineer's initial response** — within 42 days\n4. **Engineer's determination** — if parties cannot agree\n\n**Time-bar effect**: Failure to give 28-day notice → claim deemed time-barred. BUT:\n- 2017 edition added Clause 20.2.7: Engineer must notify Contractor if notice was late\n- If Engineer fails to notify → time-bar may not apply (debated)\n\n### Clause 3.7 — Engineer's Determination (2017)\n- Engineer must act **neutrally** (not as Employer's agent) when making determinations\n- Must consult both parties before determining\n- 42-day time limit for determination\n- New in 2017 — strengthens Engineer's independence\n\n### Clause 14.7 — Payment (2017)\n- Employer must pay within **56 days** of receiving Statement (if no IPC issued)\n- Late payment → financing charges (Clause 14.8)\n- Non-payment → Contractor may suspend (Clause 16.1) or terminate (Clause 16.2)\n\n---\n\n## Time-Bars & Notice Requirements {#time-bars}\n\n| Event | Notice Period | Clause | Consequence |\n|-------|--------------|--------|-------------|\n| Contractor's claim | 28 days from awareness | 20.2.1 | Time-barred if late |\n| Employer's claim | 28 days from awareness | 20.1 | Time-barred if late |\n| Fully detailed claim | 84 days from Notice | 20.2.4 | Claim may be reduced |\n| Variation proposal | As instructed | 13.3 | — |\n| Unforeseeable conditions notice | As soon as practicable | 4.12 | Entitlement affected |\n| Notice to Correct | Reasonable period | 15.1 | May lead to termination |\n| Dispute referral to DAAB | 28 days after Engineer's determination (or failure) | 21.4 | Lose right if not referred |\n| NOD (Notice of Dissatisfaction) | 28 days after DAAB decision | 21.4.4 | Decision becomes final & binding |\n\n---\n\n## DAAB Procedures (2017) {#daab}\n\n### Standing DAAB\n- Appointed at commencement (Red/Yellow) — not ad hoc\n- Regular site visits, predetermined agenda\n- Available throughout project life\n\n### Referral Process\n1. Either party refers dispute to DAAB\n2. DAAB has **84 days** to give decision (extendable)\n3. Decision is **binding** — must be complied with immediately\n4. If no NOD within 28 days → decision becomes **final and binding**\n\n### Non-Compliance with DAAB Decision\n- **2017 clarification**: Non-compliance = separate dispute → refer directly to arbitration\n- No need to re-refer to DAAB first (Persero case confirmed this for Singapore)\n- Can seek **partial award** in arbitration for non-compliance\n\n### Persero Case (Singapore)\n- Indonesian construction project, arbitration seated in Singapore\n- Court of Appeal to Supreme Court\n- Held: party can go directly to arbitration for non-compliance — no need to go back to DAAB\n- Landmark case for FIDIC dispute resolution\n\n---\n\n## 2017 vs Pre-2017 Key Changes {#changes}\n\n| Feature | Pre-2017 | 2017 Edition |\n|---------|----------|-------------|\n| Engineer's role | Agent of Employer | Must act **neutrally** on determinations (3.7) |\n| DAAB | Ad hoc or standing (DAB) | **Standing DAAB** mandatory (Red/Yellow) |\n| Notice of Claim | 28 days (strict time-bar) | 28 days + Engineer must notify if late (20.2.7) |\n| Advance Warning | Not explicit | **Early Warning** mechanism added |\n| Non-compliance enforcement | Unclear | Direct referral to arbitration confirmed |\n| Variation by Employer | Less structured | More detailed procedure (13.3) |\n| Programme | Less emphasis | Detailed programme requirements (8.3) |\n\nFile v2.11.5:references/legal_systems.md\n\n# Legal Systems in Construction — Orientation Reference\n\n> ⚠️ **Disclaimer:** This is a high-level orientation guide, not an authoritative treatise. It is composed as a general overview to help practitioners identify which legal tradition applies and what questions to ask. Specific claims about how individual jurisdictions handle good faith, time-bars, parol evidence, or other doctrines should be verified against jurisdiction-specific sources before reliance. Always consult local counsel for jurisdiction-specific advice.\n>\n> This is a workflow and analysis aid only. It does not constitute legal advice.\n\n## Table of Contents\n1. [Overview — Common Law vs Civil Law](#overview)\n2. [Jurisdiction Map](#jurisdiction-map)\n3. [Impact on Construction Contracts](#impact-on-contracts)\n4. [Impact on Claims & Disputes](#impact-on-claims)\n5. [FIDIC Across Legal Systems](#fidic-across-systems)\n6. [Mixed / Hybrid Systems](#mixed-systems)\n7. [Practical Implications](#practical-implications)\n\n---\n\n## Overview — Common Law vs Civil Law {#overview}\n\nThe world's legal systems broadly fall into two families, with significant implications for how construction contracts are interpreted, claims are assessed, and disputes are resolved.\n\n### Common Law\n\n- **Source of law:** Primarily judge-made law through court decisions (precedent/case law), supplemented by statutes\n- **Doctrine of precedent (stare decisis):** Courts are bound by prior decisions of higher courts\n- **Contract interpretation:** Courts look at the express terms, implied terms, and surrounding circumstances; extensive case law on interpretation principles\n- **Flexibility:** Judges can develop the law incrementally through new decisions\n- **Key feature:** Adversarial court system — parties present their cases, judge decides\n\n### Civil Law\n\n- **Source of law:** Primarily written codes and statutes (codified law)\n- **Role of precedent:** Court decisions are persuasive but generally not binding in the same way\n- **Contract interpretation:** Closer to the written code provisions; gap-filling through code principles rather than case law\n- **Codification:** Rights, obligations, and remedies are systematically set out in codes\n- **Key feature:** Inquisitorial system — judge takes a more active role in investigating facts\n\n---\n\n## Jurisdiction Map {#jurisdiction-map}\n\n### Common Law Jurisdictions\n\n| Jurisdiction | Notes |\n|-------------|-------|\n| **Singapore** | English common law heritage; strong statutory overlay (SOP Act, Building Control Act); active judicial development of construction law |\n| **England & Wales** | Origin of common law; leading construction case law (Keating, Hudson's); TCC specialist court |\n| **Hong Kong** | Common law; follows English precedent closely; active construction arbitration hub |\n| **Australia** | Common law; state-based SOP legislation (varies by state); active case law development |\n| **Malaysia** | Common law; CIPAA 2012 (statutory adjudication); follows English/Singapore precedent |\n| **India** | Common law; Arbitration & Conciliation Act 1996; extensive construction arbitration |\n| **United States** | Common law (federal + state); extensive statutory codes alongside case law; AIA/ConsensusDocs standard forms |\n| **Canada** | Common law (except Quebec — civil law); provincial construction lien/prompt payment legislation |\n\n### Civil Law Jurisdictions\n\n| Jurisdiction | Notes |\n|-------------|-------|\n| **Russia** | Civil code-based; government-codified pricing norms (ГЭСН/ФЕР/ТЕР); disputes resolved through code interpretation |\n| **France** | Napoleonic civil code; strong codified construction obligations (décennale liability); CCAG standard forms |\n| **Germany** | BGB (Civil Code) + VOB (construction-specific regulations); highly codified defects liability |\n| **Japan** | Civil code-based; influenced by German civil law; strong emphasis on amicable settlement |\n| **China** | Civil code (2021); extensive construction regulations; FIDIC adapted to local civil code framework |\n| **UAE** | Civil code (Federal Law No.5/1985); FIDIC widely used but interpreted through civil code principles |\n| **Saudi Arabia** | Civil law influenced by Sharia; government standard forms; FIDIC adapted locally |\n| **South Korea** | Civil code-based; influenced by Japanese/German law; active infrastructure market |\n\n### Mixed / Hybrid Systems {#mixed-systems}\n\n| Jurisdiction | System | Notes |\n|-------------|--------|-------|\n| **Louisiana (US)** | Civil law within common law country | French/Spanish legal heritage; Louisiana Civil Code governs contracts |\n| **Quebec (Canada)** | Civil law within common law country | Civil Code of Quebec; different construction lien regime |\n| **Scotland** | Mixed civil/common law | Distinct from English law; own construction adjudication regime |\n| **South Africa** | Mixed Roman-Dutch + common law | Roman-Dutch private law; English procedural law |\n| **Philippines** | Mixed civil/common law | Spanish civil code heritage + American common law influence |\n\n---\n\n## Impact on Construction Contracts {#impact-on-contracts}\n\n### Contract Interpretation\n\n| Aspect | Common Law | Civil Law |\n|--------|-----------|-----------|\n| **Primary source** | Express contract terms + implied terms | Written code provisions + contract terms |\n| **Gap-filling** | Implied terms (business efficacy, officious bystander tests); case law | Code provisions fill gaps automatically |\n| **Ambiguity** | Contra proferentem; surrounding circumstances (factual matrix) | Literal interpretation of code; good faith principle |\n| **Good faith** | Generally no implied duty (except some jurisdictions, e.g. Australia) | Fundamental principle — parties must act in good faith |\n| **Parol evidence** | Generally excluded (written contract prevails) | More receptive to extrinsic evidence of intent |\n| **Unfair terms** | Limited judicial intervention (freedom of contract) | Courts may strike down unconscionable terms more readily |\n\n### Standard Forms Across Systems\n\n| Form | Origin System | Used In |\n|------|--------------|---------|\n| **FIDIC** | Swiss (civil law origin) | International — both common and civil law jurisdictions |\n| **NEC** | English (common law) | UK, international (growing adoption) |\n| **PSSCOC** | Singapore (common law) | Singapore public sector |\n| **SIA** | Singapore (common law) | Singapore private sector |\n| **AIA / ConsensusDocs** | US (common law) | United States |\n| **JCT** | English (common law) | UK, former Commonwealth |\n| **CCAG** | French (civil law) | France, Francophone countries |\n| **VOB** | German (civil law) | Germany, German-influenced markets |\n\n---\n\n## Impact on Claims & Disputes {#impact-on-claims}\n\n### Claims Assessment\n\n| Aspect | Common Law | Civil Law |\n|--------|-----------|-----------|\n| **Precedent** | Prior court decisions are binding/persuasive — cite relevant cases | Precedent is persuasive but not formally binding |\n| **Time-bars** | Strictly enforced (see *Multiplex v Honeywell*) | May be moderated by good faith principles |\n| **Causation** | Detailed causation analysis required; concurrent delay case law | Code provisions on causation; less granular case law |\n| **Quantum** | Extensive methods developed through case law (Eichleay, Hudson, Emden) | Quantum often assessed by court-appointed experts |\n| **Expert evidence** | Party-appointed experts; hot-tubbing in some jurisdictions | Court-appointed experts more common |\n| **Discovery/disclosure** | Broad disclosure obligations | More limited document production |\n\n### Dispute Resolution\n\n| Aspect | Common Law | Civil Law |\n|--------|-----------|-----------|\n| **Adjudication** | Statutory in many jurisdictions (UK, SG, AU, MY) | Less common; not typically statutory |\n| **Arbitration** | Well-established; party autonomy; institutional rules (ICC, SIAC, LCIA) | Well-established; often ICC; court involvement varies |\n| **Mediation** | Growing; voluntary or court-ordered | Growing; mandatory in some jurisdictions (Italy, France) |\n| **Enforcement** | New York Convention (arbitral awards); direct court enforcement | New York Convention; enforcement procedures vary |\n| **Appeals** | Limited grounds (arbitration); broader in litigation | Broader appeal rights in some civil law courts |\n\n---\n\n## FIDIC Across Legal Systems {#fidic-across-systems}\n\nFIDIC contracts originated in Switzerland (civil law) but are widely used across both legal traditions. Key considerations:\n\n### In Common Law Jurisdictions\n- Clause interpretation guided by case law (e.g. *Obrascon Huarte Lain v AG* [2015] EWHC 1918 — interpretation of FIDIC Sub-Clause 20.1 notice requirements)\n- Time-bar provisions strictly enforced\n- Engineer/Employer's Representative decisions subject to judicial review on reasonableness\n- Implied terms may supplement express FIDIC provisions\n\n### In Civil Law Jurisdictions\n- Code provisions may override or supplement FIDIC terms\n- Good faith obligations apply even where FIDIC is silent\n- Mandatory local law provisions cannot be contracted out of\n- Court-appointed experts may re-assess Engineer's determinations\n- Some civil law jurisdictions require FIDIC to be adapted to local codes (e.g. UAE, China)\n\n### Practical Tip\nWhen using FIDIC internationally, always check:\n1. **Governing law** — which legal system applies?\n2. **Mandatory local provisions** — what can't be contracted out of?\n3. **Particular Conditions** — how has the standard form been modified for local law?\n4. **Dispute forum** — where will disputes be heard, and under what rules?\n5. **Enforcement** — can awards/judgments be enforced in the relevant jurisdictions?\n\n---\n\n## Practical Implications {#practical-implications}\n\n### For Claims Practitioners\n\n**Working in common law jurisdictions:**\n- Research case law thoroughly — precedent strengthens arguments\n- Strict compliance with notice provisions (time-bars are real)\n- Prepare detailed expert reports with methodology transparency\n- Expect broad document disclosure obligations\n- Use established quantum methods (cite the cases that support them)\n\n**Working in civil law jurisdictions:**\n- Study the applicable code provisions carefully — they fill gaps\n- Good faith arguments carry weight (both ways)\n- Court-appointed experts may override party experts\n- Document production may be more limited\n- Code interpretation principles differ from common law rules\n\n**Working across both systems (international projects):**\n- Identify the governing law FIRST — it determines everything\n- Don't assume common law interpretation principles apply to civil law contracts (or vice versa)\n- Check for mandatory local law provisions that cannot be overridden by contract\n- Consider the enforcement jurisdiction for disputes\n- FIDIC's Sub-Clause 1.4 (governing law) is critical — never leave it blank\n\n### For the Companion Skills\n\n| Skill | Legal System Context |\n|-------|---------------------|\n| **open-construction-estimate** | Russian civil law — government-codified pricing norms (ГЭСН/ФЕР/ТЕР); useful for methodology and international projects in CIS markets |\n| **afrexai-construction-estimator** | US common law — RSMeans-based; bid preparation, change orders, value engineering methodology applicable internationally |\n\n---\n\n*This reference is a general guide to legal system differences. Construction law varies significantly within each tradition. Always verify the specific governing law, local statutes, and applicable case law for the jurisdiction in question.*\n\n> This is a workflow and analysis aid only. It does not constitute legal advice.\n\nFile v2.11.5:references/procurement.md\n\n# Procurement & Tendering — Reference\n\n## Table of Contents\n1. [Procurement Strategy Framework](#strategy)\n2. [MDB Procurement Principles](#mdb)\n3. [Tendering Methods](#tendering)\n4. [Bid Evaluation Methods](#evaluation)\n5. [Prequalification](#prequalification)\n6. [Collaborative Contracting](#collaborative)\n7. [Compliance in Tenders](#compliance)\n\n---\n\n## Procurement Strategy Framework {#strategy}\n\n### Three Phases\n\n| Phase | Focus | Activities |\n|-------|-------|-----------|\n| 1. Analysis | Understand context | Pre-investment studies, stakeholder ID, SWOT, market analysis |\n| 2. Choices | Strategic decisions | Contract type, delivery method, packaging, risk allocation |\n| 3. Planning | Implementation prep | Procurement plan, timeline, bidding documents, evaluation criteria |\n\n### Procurement Strategy Decisions\n\n**Project characteristics** → assess complexity, size, duration, risk profile\n**Packaging decisions** → single contract vs multiple packages vs lots\n**Pricing strategy** → lump sum, remeasurement, cost-plus, target cost\n**Risk allocation** → who bears design, ground, weather, price risks\n**Competition level** → open, limited, direct, framework\n\n### Fitness-for-Purpose Procurement\nProcurement must reflect:\n- Project complexity (simple works ≠ mega infrastructure)\n- Institutional capacity (can employer manage multiple contracts?)\n- Risk profile (who is best placed to manage which risks?)\n- Market conditions (are qualified contractors available?)\n- Implementation timeline (fast-track vs traditional sequencing)\n\n> Standardised approaches may be unsuitable. Strategy must be fit for purpose, not one-size-fits-all.\n\n---\n\n## MDB Procurement Principles {#mdb}\n\n### Core Principles (ADB / IFI Framework)\n\n| Principle | Meaning |\n|-----------|---------|\n| Economy | Optimal price without harming project viability |\n| Efficiency | Procurement proportionate to complexity and risk |\n| Fairness | Equal treatment of bidders; credible complaint mechanisms |\n| Transparency | Public access to procurement information |\n| Quality | Outputs suitable for project objectives |\n| Value for Money | Lifecycle cost and socio-environmental benefits considered |\n\n### Value for Money vs Lowest Price\nMDB procurement does NOT require award to lowest bidder. Award based on:\n- Lifecycle cost (total cost of ownership)\n- Technical quality\n- Risk allocation\n- Sustainability impact\n- Delivery capability\n\n### Risk Allocation Principle\nAllocate risk to the party best able to:\n1. Identify that risk\n2. Control that risk\n3. Mitigate that risk\n4. Absorb that risk\n\nIncorrect allocation → pricing inflation, claims escalation, programme delay, disputes.\n\n---\n\n## Tendering Methods {#tendering}\n\n### Main Methods\n\n| Method | Description | When Used |\n|--------|-------------|-----------|\n| Open competitive (with PQ) | Prequalification → shortlist → bid | Large/complex projects |\n| Open competitive (without PQ) | Direct bidding, qualification with bid | Simple projects |\n| Limited/Restricted | Invite specific firms | Specialist work, limited market |\n| Competitive dialogue | Discussion with bidders before final tender | Very complex, unclear specs |\n| Negotiated/Direct | Direct negotiation with selected vendor | Emergency, sole source, proprietary |\n| E-Reverse auction | Online reverse bidding | Routine procurement |\n| Framework agreement | Pre-qualified pool at predefined rates | Repetitive works |\n\n### Negotiated Procedure — Justification\n- Emergency/urgency\n- Small quantity — competitive tendering not feasible\n- Proprietary equipment — only original supplier compatible\n- Remote locations — limited contractor access\n- Usually requires minimum 3 quotations\n\n---\n\n## Bid Evaluation Methods {#evaluation}\n\n| Method | Description | When Used |\n|--------|-------------|----------|\n| Lowest Evaluated Cost | Award to lowest compliant bid | Clearly defined specifications |\n| QCBS (Quality & Cost Based) | Weighted technical + financial score | Complex projects needing quality |\n| Fixed Budget Selection | Best technical score within fixed budget | Budget-constrained projects |\n| Least Cost Selection | Cheapest technically compliant bid | Routine/standardised assignments |\n| Quality-Based Selection | Best technical score wins | Highly specialised/critical work |\n\n> MDB projects typically apply weighted evaluation criteria rather than price-only selection.\n\n### Evaluation Process\n1. Preliminary examination (completeness, eligibility, signatures)\n2. Technical evaluation (scored against published criteria)\n3. Financial evaluation (arithmetic check, currency conversion, price adjustment)\n4. Combined evaluation (weighted score or pass/fail technical + lowest price)\n5. Post-qualification (verify winner's capacity)\n\n### Abnormally Low Bids\n- May indicate: misunderstanding of scope, unsustainable pricing, error\n- Evaluator should: request clarification, verify cost breakdown\n- Risk: contractor wins → fails → project hostage → termination + re-tender\n- Some MDB rules allow rejection of abnormally low bids\n\n---\n\n## Prequalification {#prequalification}\n\n### PQ Document Contents\n1. Employer identity & representative\n2. Project description & scope\n3. Qualification criteria (technical, financial, experience)\n4. Required documents (financial statements, project references, personnel CVs)\n5. Evaluation methodology\n6. Timeline\n\n### Qualification Criteria\n\n| Category | Examples |\n|----------|---------|\n| Financial | Annual turnover, liquid assets, credit facilities, audited accounts |\n| Technical | Similar project experience, equipment, methodology |\n| Personnel | Key staff qualifications and experience |\n| Legal | Registration, licensing, litigation history, debarment status |\n| Safety | Safety record, certifications (ISO 45001) |\n| Quality | Quality management system (ISO 9001), CONQUAS history |\n\n---\n\n## Collaborative Contracting {#collaborative}\n\n### Spectrum of Collaboration\n\n| Level | Type | Risk Culture |\n|-------|------|-------------|\n| Low | Traditional/Binary | Claims culture — adversarial |\n| Medium | Intermediate (NEC partnering, VE incentives) | Mixed |\n| High | Full Alliancing | Collaborative — \"project first\" |\n\n### Alliance Governance Structure\n\n| Level | Body | Function |\n|-------|------|----------|\n| Strategic | Alliance Leadership Team (ALT) | Strategic decisions and oversight |\n| Operational | Alliance Management Team (AMT) | Operational coordination and issue resolution |\n| Execution | Integrated Delivery Teams | Daily execution responsibility |\n\nThese structures support collective decision-making and replace traditional adversarial contract hierarchies.\n\n### Target Cost & Pain/Gain\n1. Parties agree target cost\n2. Contractor reimbursed for all actual costs + fixed profit\n3. At completion: actual < target → gain shared; actual > target → pain shared\n4. Creates incentive to optimise without incentive to inflate\n\n### Key Features of Alliancing\n- Shared project objectives (not individual scope targets)\n- Joint management team\n- Risk register — risks discussed and mitigated together\n- Early engagement — contractor involved before final design\n- No-claim/no-blame culture\n- Open book — full cost transparency\n- Conflict avoidance (CAB/dispute board)\n\n### Heathrow T5 — Landmark Example\n- £4.2 billion project\n- BAA absorbed ALL risks\n- Target cost with pre-agreed profit margins\n- Pain/gain incentive mechanism\n- Only 6 major disputes over 5 years; only 1 went to arbitration\n- Remarkable for project of this size and complexity\n\n### NEC — Only Standard Form with Alliancing\n- Option C = target cost\n- Clause 10.1 = mutual trust and cooperation (express obligation)\n- Only mainstream form with built-in alliancing/partnering option\n- FIDIC has NO alliancing form (reportedly working on one)\n\n---\n\n## Compliance in Tenders {#compliance}\n\n### Key Compliance Areas\n\n| Area | Key Legislation/Framework |\n|------|--------------------------|\n| Anti-bribery | FCPA (US), UK Bribery Act, French Sapin II |\n| Sanctions | US OFAC, EU Sanctions, UN Security Council |\n| Modern slavery | UK Modern Slavery Act, US TVPA, ILO conventions |\n| ESG | EU CS3D, MDB environmental/social safeguards |\n| Integrity | ADB Integrity Policy, World Bank sanctions framework |\n\n### MDB Prohibited Practices (ADB)\n- Corrupt, Fraudulent, Coercive, Collusive, Abuse, Conflict of Interest\n- Plus: Obstructive practices, violation of sanctions\n- Sanctions: debarment (fixed/indefinite), conditional non-debarment, reprimand\n- Cross-debarment across all major MDBs\n\n### Sanctions Screening\n- Must check: beneficial ownership, ultimate controlling parties\n- Indirect participation risks (JV partners, subcontractors, suppliers)\n- Supply chain exposure\n- Continuous screening, not one-time\n- Debarment consequences: cross-default in bank financing, reputational exclusion\n\n### Compliance-by-Design\n- Beneficial ownership disclosure\n- Sanctions screening (continuous)\n- Supply chain traceability and audit rights\n- Internal compliance programme (demonstrate effectiveness, not just existence)\n- Whistleblowing mechanisms\n- Training and disciplinary regime\n\nFile v2.11.5:references/singapore.md\n\n# Singapore Construction Contracts — Reference\n\n> 📂 **Live BCA updates:** BCA publishes circulars at https://www1.bca.gov.sg/resources/circulars/. Recommend mirroring locally (e.g. `bca-circulars/` workspace folder, refreshed weekly via heartbeat/cron) and **consulting the latest circulars first** for current requirements on SOP Act timelines, plan fees, CORENET-X, BC1/structural codes, cost-sharing schemes, productivity grants, and buildability — BCA updates can change procedural requirements without warning.\n\n## Table of Contents\n1. [PSSCOC (Public Sector Standard Conditions of Contract)](#psscoc)\n2. [SIA Conditions (Singapore Institute of Architects)](#sia)\n3. [Building and Construction Industry Security of Payment Act (SOP Act)](#sop-act)\n4. [BCA Regulatory Framework](#bca)\n5. [SIArb (Singapore Institute of Arbitrators)](#siarb)\n\n---\n\n## PSSCOC {#psscoc}\n\n### Overview\n- Standard form for **Singapore government projects**\n- Administered by BCA (Building and Construction Authority)\n- Two editions: **Construction Works** and **Design & Build**\n- Employer: typically a government agency (LTA, PUB, JTC, HDB, NParks, etc.)\n\n### Key Features\n| Feature | Detail |\n|---------|--------|\n| Contract type | Re-measurement (Construction Works) or Lump Sum (D&B) |\n| Superintending Officer (SO) | Engineer-equivalent; appointed by Employer |\n| SO's authority | Acts as Employer's agent (NOT neutral like FIDIC 2017 Engineer) |\n| Variations | SO may issue variation orders; valuation per contract rates or fair rates |\n| EOT | Contractor must apply within 28 days of delay event |\n| Liquidated damages | Specified in Contract Data; deducted from payments |\n| Defects Liability Period | Typically 12 months (maintenance period) |\n| Retention | 5% capped at specified limit; half released at completion, half after DLP |\n| Dispute resolution | Mediation → Arbitration (SIA Arbitration Rules or SIAC) |\n\n### Key Clauses — Construction Works Edition\n| Clause | Subject | Key Points |\n|--------|---------|------------|\n| 2 | SO's duties | Authority from Employer; acts as agent |\n| 7 | Assignment & subcontracting | Written consent required for assignment |\n| 14 | Variations | SO instructs; Contractor must comply |\n| 14(4) | Valuation of variations | Contract rates → fair rates → daywork |\n| 20 | Possession of site | Employer grants possession per programme |\n| 23 | EOT | 28-day notice requirement; SO assesses entitlement |\n| 24 | Liquidated damages | Deducted per day/week of delay |\n| 25 | Completion certificate | SO certifies when works substantially complete |\n| 27 | Defects | Contractor must rectify during maintenance period |\n| 32 | Interim payments | Monthly valuations by SO |\n| 33 | Final account | Submit within period stated; SO certifies |\n| 34 | Set-off | Employer may set off amounts owed |\n| 37 | Determination by Employer | Listed defaults; notice required |\n| 38 | Determination by Contractor | Non-payment, suspension, employer default |\n| 40 | Settlement of disputes | Mediation → Arbitration |\n\n### EOT Under PSSCOC\n- **28-day notice** from commencement of delay event\n- Must include: cause, expected duration, mitigation measures\n- SO assesses and grants/refuses within reasonable time\n- Grounds: variations, exceptionally adverse weather, employer's default, force majeure, unforeseen ground conditions (if applicable)\n- **Concurrent delay**: SO may apportion — Singapore approach allows partial EOT\n\n### Variations Under PSSCOC\n- SO may instruct additions, omissions, changes\n- Valuation hierarchy: contract rates → analogous rates → fair valuation → daywork\n- Contractor must comply first, dispute valuation later\n- No automatic entitlement to profit on variations (depends on contract)\n\n---\n\n## SIA Conditions {#sia}\n\n### Overview\n- Standard form for **Singapore private sector** building works\n- Published by Singapore Institute of Architects\n- Current edition: **SIA Conditions 9th Edition (2010)** with amendments\n- Tripartite structure: Employer, Contractor, Architect (and QS)\n\n### Key Features\n| Feature | Detail |\n|---------|--------|\n| Contract type | Lump sum (with provisional/prime cost sums) |\n| Architect | Contract administrator; certifies payments, variations, completion |\n| QS role | Valuation of variations; interim and final accounts |\n| Clerk of Works | Employer's site representative |\n| Nominated subcontractors | Architect may nominate; Contractor must employ (with right to object) |\n| Payment | Architect certifies interim payments; 30 days to pay |\n| Retention | Typically 5% capped; released progressively |\n| DLP | Typically 12 months |\n| Dispute resolution | Mediation → Arbitration (SIA Arbitration Rules) |\n\n### Key Clauses\n| Clause | Subject | Key Points |\n|--------|---------|------------|\n| 1 | Definitions | Key defined terms |\n| 2 | Architect's duties | Certification, instruction, supervision |\n| 11 | Variations | Architect instructs; valuation by QS |\n| 14 | Contract sum adjustment | Provisional sums, PC sums, prime cost |\n| 23 | EOT | Written notice required; Architect certifies |\n| 24 | Delay certificate & LDs | Architect issues delay certificate; LDs apply |\n| 25 | Completion certificate | Architect certifies substantial completion |\n| 27 | Maintenance & defects | Contractor rectifies during DLP |\n| 30 | Certificates & payment | Architect certifies; Employer pays within 30 days |\n| 31 | Payment terms | Interim, progress, final payments |\n| 32 | Set-off and counterclaim | Employer's right to set off |\n| 33 | Determination by Employer | Default, insolvency, abandonment |\n| 34 | Determination by Contractor | Non-payment, employer interference |\n| 37 | Arbitration | Disputes referred to arbitration |\n\n### SIA vs PSSCOC Key Differences\n| Feature | SIA | PSSCOC |\n|---------|-----|--------|\n| Sector | Private | Public (government) |\n| Administrator | Architect | Superintending Officer |\n| Payment cert | Architect certifies | SO certifies |\n| Nominated subcon | Yes (extensive provisions) | Less common |\n| Payment period | 30 days from certificate | Per contract terms |\n| Dispute resolution | Mediation → Arbitration | Mediation → Arbitration |\n| Standard of independence | Architect has dual role (employer's agent + certifier) | SO is Employer's agent |\n\n---\n\n## SOP Act {#sop-act}\n\n### Building and Construction Industry Security of Payment Act (Cap. 30B)\n\n### Purpose\n- Ensures **timely payment** in the construction industry\n- Creates a **right to progress payments** regardless of contract terms\n- Provides **statutory adjudication** as fast-track dispute resolution for payment disputes\n\n### Key Provisions\n\n| Section | Subject | Key Points |\n|---------|---------|------------|\n| 5 | Right to progress payments | Every person who carries out construction work has a right to payment |\n| 6 | Amount of progress payment | Based on contract terms; if silent, based on value of work done |\n| 10 | Payment claims | Served by claimant on respondent; must state claimed amount |\n| 11 | Payment responses | Respondent must serve response within 21 days (or contract period) |\n| 12 | Entitlement to make adjudication application | If payment response not served, or dispute on amount |\n| 13 | Adjudication application | Must be made within 7 days after entitlement arises |\n| 15 | Adjudication response | Within 7 days of receiving the application |\n| 17 | Determination | Adjudicator determines within 7-14 days |\n| 21 | Direct payment from principal | If respondent fails to pay, claimant may seek payment from higher-tier party |\n| 22 | Lien on unpaid goods | Right to lien on unfixed goods |\n| 36 | No contracting out | Provisions cannot be contracted out of |\n\n### Critical Timelines\n| Action | Timeline |\n|--------|----------|\n| Payment claim | Per contract or monthly (last day of month) |\n| Payment response | 21 days from payment claim (or contract period, whichever shorter) |\n| Adjudication application | Within 7 days after entitlement arises |\n| Adjudication response | 7 days from receiving application |\n| Adjudicator's determination | 7 days (extendable to 14 days with consent) |\n| Payment of adjudicated amount | 7 days from determination |\n\n### Key Principles\n1. **Pay first, argue later** — adjudication decisions must be complied with; challenge in court/arbitration later\n2. **Cannot contract out** — any clause purporting to exclude SOP Act rights is void\n3. **Repeat claims** — claimant can serve fresh payment claim for same work in next payment cycle\n4. **\"Smash and grab\"** — if no payment response served, respondent cannot raise reasons for withholding in adjudication\n\n### 2018 Amendments (Key Changes)\n- Expanded definition of \"construction work\"\n- Clarified cross-contract set-off limitations\n- Strengthened adjudication enforcement provisions\n\n---\n\n## BCA Regulatory Framework {#bca}\n\n### Building and Construction Authority\n- Statutory board under Ministry of National Development\n- Regulates construction industry in Singapore\n- Website: https://www1.bca.gov.sg/\n\n### Key Functions\n- Building plan approval and permits\n- Contractor registration (financial grading: CW01-CW02, L1-L6, A1-A2, C1-C3)\n- Construction quality management (CONQUAS)\n- Safety regulations (WSH Act coordination)\n- Green building requirements (Green Mark scheme)\n- Buildability and constructability requirements\n- Procurement frameworks and standard contract forms\n\n### BCA Official Resources & Downloads\n\n#### Standard Contract Forms\n- **PSSCOC landing page**: https://www1.bca.gov.sg/growth-and-transformation/procurement/standard-contract-forms/public-sector-standard-conditions-of-contract-psscoc/\n- **PSSCOC for Construction Works 2020 (8th Ed, Jul 2020)** [PDF]: https://www1.bca.gov.sg/docs/default-source/docs-corp-procurement/psscoc-for-construction-works-2020.pdf\n- **PSSCOC for Design & Build 2020 (7th Ed, Jul 2020) — List of Amendments** [PDF]: https://www1.bca.gov.sg/docs/default-source/docs-corp-procurement/list-of-amendments-psscoc-design-build-2020.pdf\n- **Standard Contract Forms overview**: https://www1.bca.gov.sg/growth-and-transformation/procurement/standard-contract-forms/\n- Note: PSSCOC Construction Works Cl 4.5(2) was amended on 21 June 2024 — always check the latest List of Amendments\n\n#### Procurement Frameworks\n- **Procurement main page**: https://www1.bca.gov.sg/growth-and-transformation/procurement/\n- **Collaborative Contracting**: https://www1.bca.gov.sg/growth-and-transformation/procurement/progressive-procurement-approaches/collaborative-contracting/\n- **Early Contractor Involvement (ECI)**: https://www1.bca.gov.sg/growth-and-transformation/procurement/progressive-procurement-approaches/early-contractor-involvement-eci/\n- **NEC4 Contract launch in Singapore**: https://www1.bca.gov.sg/resources/newsroom/launch-of-nec4-contract-for-construction-and-engineering-projects-in-singapore/\n\n#### Circulars\n- **BCA Circulars page**: https://www1.bca.gov.sg/resources/circulars/\n- Check for circulars on: cost-sharing schemes, material cost adjustments, ex-gratia frameworks, COVID/geopolitical disruption relief\n\n#### Worked example: Ex-gratia cost-sharing pattern (BCA → implementing agency → contractor)\n\nWhen BCA issues an ex-gratia cost-sharing circular, the rollout typically follows a three-tier pattern:\n\n1. **BCA framework circular** — sets policy: co-share rate, coverage period, eligible contract criteria, computation method, heads of cost\n2. **Implementing agency circular** (HDB, LTA, PUB, JTC, NParks) — operationalises the BCA framework: lists eligible contracts, fixes monthly reference rates per BCA advisory, sets submission deadlines, prescribes claim format\n3. **Contractor claim** — standalone submission (separate from monthly progress payment) with cover letter + claim summary + substantiation\n\n**Reference case study — Diesel & Bitumen Ex-Gratia (Mar–May 2026):**\n- BCA Circular: 7 Apr 2026 (post Middle East price spike)\n- Co-share: 50% of Direct Additional Cost\n- Coverage: 1 Mar 2026 – 31 May 2026\n- Eligibility: ongoing critical public sector contracts; tender closing date before coverage start; last phase not certified complete\n- HDB implementation: 30 Apr 2026 (Annexes A & B listing eligible BTO contracts)\n\n**Computation formula:**\n\n```\nDirect Additional Cost = Quantity used in month × (Month rate − Base rate)\nEx-gratia payment      = Direct Additional Cost × Co-share %\n```\n\n**Heads of cost — diesel typically covers:**\n- Plant & equipment (cranes, piling rigs, excavators, bulldozers, rollers)\n- Haulage / disposal vehicles (tipper trucks)\n- Site overhead equipment (generators)\n- **Excluded:** supplier transport surcharges (diesel attribution unquantifiable)\n\n**Substantiation expected:**\n- Fuel Pump Meter Records\n- Delivery Orders\n- Supplier Invoices\n- Subcontractor & supplier consolidated usage figures\n\n**Compliance traps:**\n- Claims must be **standalone**, not bundled with progress payment\n- Submission deadlines are **strict** (typically ~2 weeks post-month) — implementing agencies generally do not entertain late or augmenting appeals\n- Incomplete substantiation may be **excluded entirely** from co-sharing computation\n- **Pass-through obligation:** main contractor must forward the relevant share to subcontractors and suppliers; wrongful withholding can trigger debt recovery, poor performance rating, and tendering restriction\n- **Ex-gratia, not contractual** — no entitlement basis; agency assessment is final, no adjudication route\n\n#### Safety & Standards\n- **Building Control Act**: https://www1.bca.gov.sg/safety-and-standards/building-control-act/\n- **Construction Quality (CONQUAS)**: https://www1.bca.gov.sg/safety-and-standards/construction-quality/\n- **Applications & Licences**: https://www1.bca.gov.sg/safety-and-standards/applications-and-licenses/\n\n#### Growth & Transformation\n- **Industry Transformation Map (ITM)**: https://www1.bca.gov.sg/growth-and-transformation/built-environment-industry-transformation-map-itm/\n- **Manpower**: https://www1.bca.gov.sg/growth-and-transformation/manpower/\n- **Grants & funded programmes**: https://www1.bca.gov.sg/growth-and-transformation/grants-and-funded-programmes/\n- **e-Services / Key Construction Info**: https://www1.bca.gov.sg/e-services/key-construction-information/\n\n### Contractor Registration\n| Grade | Tendering Limit |\n|-------|----------------|\n| CW01 | Up to $325,000 |\n| CW02 | Up to $650,000 |\n| L1 | Up to $1.3M |\n| L2 | Up to $3.25M |\n| L3 | Up to $6.5M |\n| L4 | Up to $13M |\n| L5 | Up to $40M |\n| L6 | Up to $85M |\n| A1 | Up to $200M |\n| A2 | Unlimited |\n| C1-C3 | Civil engineering (separate grading) |\n\n---\n\n## SIArb {#siarb}\n\n### Singapore Institute of Arbitrators\n\n### Membership Pathway\n| Level | Requirements |\n|-------|-------------|\n| Associate | Entry-level; relevant qualifications |\n| Member | Entry Course + experience |\n| Fellow | Fellowship Assessment Course + substantial experience |\n\n### Entry Course\n- Covers: arbitration law, procedure, evidence, drafting awards\n- Assessment: written examination\n- Prepares for appointment as arbitrator in construction disputes\n\n### Fellowship Assessment Course\n- Advanced: complex arbitrations, multi-party disputes, expert evidence\n- Mock arbitration exercises\n- Assessment: written + oral components\n\n### SIArb Arbitration Rules\n- Commonly used in Singapore construction arbitrations\n- Referenced in both SIA and PSSCOC as dispute resolution mechanism\n- Administered by SIArb secretariat\n- Compatible with SIAC (Singapore International Arbitration Centre) for international disputes\n\n### SMC Conflict Avoidance Board (CAB)\n- Standalone rules by Singapore Mediation Centre\n- Can be plugged into any contract\n- 4 functions: dispute avoidance, informal assistance, mediation, determination\n- Primary emphasis on **dispute avoidance** (proactive) vs FIDIC DAAB (reactive)\n- Cheapest ADR mechanism available\n- Combines avoidance + mediation + determination in one framework\n\nFile v2.11.5:CHANGELOG.md\n\n# Changelog\n\nAll notable changes to the Construction Law Skill are documented here.\n\n🚨 = Legal accuracy change (review before relying on existing output)\n✨ = New feature  |  🔧 = Maintenance  |  🐛 = Bug fix\n\n## [2.11.5] — 2026-05-17\n\n### 🚨 Critical fix + test hardening\n- **MUST-FIX:** `_check_year_coverage` wired into all public functions (`is_sop_day`, `add_sop_days`, `sop_days_between`). Previously only called from `calc_timeline` — direct callers of the lower-level functions got silent wrong answers for uncovered years. Year-crossing within `add_sop_days` also checked.\n- `is_sop_day` docstring: clarifies Saturday/Sunday semantics, ValueError on uncovered years, ad-hoc holiday caveat\n- `add_sop_days(start, 0)` semantics documented\n- Ad-hoc holiday (e.g. Polling Day) warning added to timeline output\n- Error message uses `_HOLIDAY_JSON.name` instead of hardcoded path\n- Tests: 73 → 85. New classes: `TestSaturdayDeadline`, `TestInLieuCollision`, expanded `TestOutOfRangeYear`. Golden row 9 (Saturday deadline). Property test bounds tightened.\n\n## [2.11.4] — 2026-05-17\n\n### 🔧 Maintenance\n- Sanitised test docstrings and comments to avoid static-analysis false positives on function-call patterns in English text\n\n## [2.11.3] — 2026-05-17\n\n### 🔧 Maintenance\n- Replaced string-grep forbidden-imports test with `ast.parse` tree-walking — catches forbidden calls regardless of whitespace/indirection, no false-positives on comments/docstrings/strings\n\n## [2.11.2] — 2026-05-17\n\n### 🔧 Maintenance — Trust-gap fixes\n- **Title updated** to \"Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\"\n- **v2.11.0 user advisory banner** added to SKILL.md top for non-SG deadline re-check (with removal-date comment: 2026-08-17)\n- SKILL.md changelog backfilled with v2.10.0–v2.11.1 entries (CHANGELOG.md remained the source of truth; SKILL.md was out of sync)\n- Added CLI overview (unified dispatcher `--help` output) to SKILL.md\n- Tightened \"No telemetry\" statement: \"No telemetry from skill code — the bundled scripts do not collect or transmit data. (Note: your LLM provider’s normal data handling still applies.)\"\n- Added \"Files written\" section documenting all script output paths\n- Added `test_security.py` — scans all 13 scripts for forbidden imports (subprocess, socket, requests, urllib.request, http.client, importlib, pickle, marshal, os.system, exec, eval, compile)\n- Added `python3 -m unittest` as recommended test runner (stdlib-only alternative to pytest)\n- Updated test count to 73 (72 existing + 1 security)\n\n## [2.11.1] — 2026-05-10\n\n### 🚨 Legal Accuracy — Action required if you used v2.11.0\n- If you ran v2.11.0's FIDIC Deadline Calculator against an AE, MY, or GB seat, the bundled holiday data for those jurisdictions was best-effort and not verified against authoritative sources. Re-check those deadlines against your jurisdiction's official gazette or equivalent before relying on them.\n- v2.11.1 removes the unverified data and replaces it with a bring-your-own-holidays mechanism (see below).\n\n### 🔧 Maintenance — Scope correction\n- v2.11.0 shipped with bundled best-effort holiday data for AE, MY (federal only), and GB (England & Wales only). Verifying that data against authoritative sources for each jurisdiction was outside the maintainer's capacity, and shipping unverified holiday data in a legal-deadline tool was the wrong call.\n- v2.11.1 narrows the supported surface to Singapore (gazette-verified) and adds a `--holidays-file` mechanism for users in other jurisdictions to supply their own verified data.\n\n### ✨ Features\n- **FIDIC Deadline Calculator (Singapore seat; bring-your-own-holidays for other jurisdictions)** — `fidic_deadline.py` computes contractual deadlines in three modes: `calendar` (calendar-day counting), `exclude_ph` (excludes PHs only), and `working` (excludes weekends + PHs).\n- **Singapore holiday data bundled and maintained** — only SG ships out of the box, verified against eGazette / MOM source data.\n- **User-supplied holiday support for non-SG seats** — use `--holidays-file` with your own jurisdiction/year-specific JSON file.\n- Added `docs/holiday-file-format.md` with JSON schema, worked example, and source guidance.\n\n### 🔧 Maintenance\n- Removed bundled AE / MY / GB holiday files from the supported surface.\n- Reduced golden deadline scenarios to Singapore-only cases; retained generic property tests against user-supplied holiday data.\n- Added helpful CLI error for non-SG seat use without `--holidays-file`.\n\n## [2.10.1] — 2026-05-09\n\n### 🔧 Maintenance\n- Reconciled CHANGELOG v2.8.1/v2.9.1 duplication — merged in-lieu fix into single v2.8.1 entry with explicit \"this is the only version that changed in-lieu logic\" note; v2.9.1 now only lists Silver Book features\n- Recategorized out-of-range ValueError as 🚨 Legal Accuracy (was 🔧 Maintenance)\n- Added per-year source field to `data/sg_holidays.json` (MOM gazette cite, eGazette URL, moon sighting notes)\n- Added holiday names array per year in `data/sg_holidays.json`\n- Attempted dynamic version resolution via `[tool.setuptools.dynamic]` in pyproject.toml — reverted in v2.11.0 (see above)\n\n## [2.10.0] — 2026-05-09\n\n### 🚨 Legal Accuracy\n- **Out-of-range year protection:** Calculator now raises `ValueError` with a clear message when the claim date's year has no holiday data (previously silently computed using weekday-only arithmetic, producing wrong dates). Scripts using 2028+ claim dates will now fail — update `data/sg_holidays.json` with gazetted holidays first.\n\n### 🔧 Maintenance\n- Added `pyproject.toml` with optional extras (`[excel]`, `[word]`, `[all]`, `[test]`)\n- Added comprehensive test suite: 57 tests across golden-file, property-based (Hypothesis), and boundary layers\n- Added `data/sg_holidays.json` as the single source of truth for holiday data\n- Added disclaimer injection to all generated templates (visible text + HTML comment)\n- Deprecated `--add` pipe-delimited flag in delay_analysis.py; replaced with `--add-event` and `--events-csv`\n- Added `CHANGELOG.md` with categorized convention (🚨 Legal Accuracy vs ✨ Features)\n\n### ✨ Features\n- (Rolled from v2.9.1) FIDIC Silver Book obligations register (33 contractor + 11 employer), notice calendar (12 entries), Excel register\n\n## [2.9.1] — 2026-05-09\n\n### ✨ Features\n- Complete FIDIC Silver Book support: added obligations register (33 contractor + 11 employer), notice calendar (12 entries), and Excel register\n- v2.9.0 had claim templates only — this completes the full Silver Book toolkit across all 4 tools\n\n## [2.9.0] — 2026-05-09\n\n### ✨ Features\n- Added FIDIC Silver Book (EPC/Turnkey) 2017 as a fully-supported form\n- Added fidic-silver obligations register (33 contractor obligations, 11 employer obligations)\n- Added fidic-silver notice calendar (12 key notices)\n- Excel register now produces fidic-silver sheets for obligations and notices\n- Expanded full support matrix to 35 combos (7 claim types × 5 forms)\n\n### 🔧 Maintenance\n- Updated cross-references to companion skill `construction-claim-strategy` v1.5.0\n\n## [2.8.1] — 2026-05-09\n\n### 🚨 Legal Accuracy\n- **Sunday → Monday in-lieu rule now applied automatically** under the Holidays Act 1998 s.4(2)\n- Fixed missing in-lieu Mondays for 1 Jun 2026 (Vesak), 10 Aug 2026 (National Day), 9 Nov 2026 (Deepavali), and 8 Feb 2027 (CNY Day 2)\n- SOP day arithmetic now derives in-lieu Mondays from gazetted Sunday holidays automatically — no manual listing needed\n- **Action required:** Re-run any previously generated SOP timelines if they crossed those dates. This is the only version that changed in-lieu logic; v2.9.0+ builds on this fix without further changes to holiday handling.\n\n## [2.8.0] — 2026-05-09\n\n### ✨ Features\n- Added FIDIC Yellow Book 2017 as a fully-supported form\n- Added fidic-yellow obligations register (33 contractor obligations, 12 employer obligations)\n- Excel register now produces fidic-yellow obligations sheets in addition to notices\n- All new templates are edition-tagged in HTML comments and visible body\n- Expanded full support matrix to 28 combos (7 claim types × 4 forms)\n\n## [2.7.0] — 2026-05-09\n\n### ✨ Features\n- Added 6 new claim templates filling the PSSCOC + SIA gap for eot-application, variation-claim, and interim-claim\n- Added full PSSCOC (7th Ed., 2014 rev. 2020) and SIA (9th Ed., 2010 rep. 2016) versions for those templates\n- Edition-tagged all new templates in HTML comment header and visible body\n- Interim-claim templates now dual-purpose as SOP Act s.10 payment claims with s.10(3) requirements ticked off\n- Expanded full support matrix to 21 combos (7 claim types × 3 forms)\n\n## [2.6.0] — 2026-05-09\n\n### 🚨 Legal Accuracy\n- SOP calculator now uses holiday-aware SOP day arithmetic instead of calendar-day arithmetic\n- SOP timeline conceptual fix: removed misleading min/max determination and payment-due rows; replaced with single statutory deadlines and a +7-day extension note\n\n### 🔧 Maintenance\n- Argparse now rejects unsupported forms and unsupported (form, type) combinations at parse time with helpful messages\n- Excel register now refuses half-empty workbooks via pre-flight coverage checks\n- Version sprawl resolved with `scripts/version.py` as the single source of truth\n\nFile v2.11.5:docs/holiday-file-format.md\n\n# Holiday File Format\n\nWhen using the FIDIC Deadline Calculator with a non-Singapore seat, you must supply your own holiday data file via `--holidays-file`. This document describes the required JSON schema.\n\n## Schema\n\n```json\n{\n  \"_meta\": {\n    \"country\": \"Country Name\",\n    \"iso\": \"XX\",\n    \"source\": \"Description of your authoritative source\",\n    \"last_verified\": \"YYYY-MM-DD\",\n    \"notes\": \"Any caveats (moon sighting, regional variations, etc.)\",\n    \"weekend\": [\"Sat\", \"Sun\"],\n    \"in_lieu_rule\": \"none\"\n  },\n  \"2026\": {\n    \"source\": \"Specific gazette/legislation reference for this year\",\n    \"url\": \"URL to authoritative source\",\n    \"dates\": [\"2026-01-01\", \"2026-04-03\", \"...\"],\n    \"names\": [\"New Year's Day\", \"Good Friday\", \"...\"]\n  }\n}\n```\n\n## Field reference\n\n### `_meta` (required)\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `country` | Yes | Human-readable country name |\n| `iso` | Yes | ISO 3166-1 alpha-2 code (e.g. `GB`, `AE`, `MY`) |\n| `source` | Yes | Name of the authoritative source you used |\n| `last_verified` | Yes | Date you last verified this data (YYYY-MM-DD) |\n| `notes` | No | Caveats — moon sighting, sub-national scope, etc. |\n| `weekend` | No | Array of weekend day names. Default: `[\"Sat\", \"Sun\"]`. Use `[\"Fri\", \"Sat\"]` for UAE. |\n| `in_lieu_rule` | No | One of: `none`, `auto_sunday_to_monday`, `rest_day_replacement`, `substitute_next_working_day`. Default: `none`. |\n\n### Year entries (one per year)\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `source` | Yes | Specific gazette or decree reference for this year |\n| `url` | No | URL to the authoritative source document |\n| `dates` | Yes | Array of date strings in `YYYY-MM-DD` format |\n| `names` | No | Array of holiday names (same order as `dates`) |\n\n## In-lieu rules\n\n| Rule | Behaviour |\n|------|-----------|\n| `none` | No automatic substitution. List substitute days explicitly in `dates`. |\n| `auto_sunday_to_monday` | PH falling on Sunday → Monday is automatically treated as in-lieu. (Singapore statutory rule.) |\n| `rest_day_replacement` | PH falling on a weekend → next working day is in-lieu. Only applies in `exclude_ph` mode. |\n| `substitute_next_working_day` | Same as `rest_day_replacement`. Used for UK-style substitution. |\n\nIf your jurisdiction has an in-lieu rule but you're unsure how to model it, set `in_lieu_rule` to `none` and list all substitute holidays explicitly in the `dates` array. This is always safe.\n\n## Worked example: UK England & Wales 2026\n\nSource: [gov.uk/bank-holidays](https://www.gov.uk/bank-holidays) (England and Wales), accessed 2026-05-10.\n\n```json\n{\n  \"_meta\": {\n    \"country\": \"United Kingdom (England & Wales)\",\n    \"iso\": \"GB\",\n    \"source\": \"gov.uk/bank-holidays — England and Wales\",\n    \"last_verified\": \"2026-05-10\",\n    \"notes\": \"England & Wales only. Scotland and Northern Ireland have different bank holidays. Does NOT cover local/regional holidays.\",\n    \"weekend\": [\"Sat\", \"Sun\"],\n    \"in_lieu_rule\": \"substitute_next_working_day\"\n  },\n  \"2026\": {\n    \"source\": \"gov.uk/bank-holidays England and Wales 2026\",\n    \"url\": \"https://www.gov.uk/bank-holidays\",\n    \"dates\": [\n      \"2026-01-01\",\n      \"2026-04-03\",\n      \"2026-04-06\",\n      \"2026-05-04\",\n      \"2026-05-25\",\n      \"2026-08-31\",\n      \"2026-12-25\",\n      \"2026-12-28\"\n    ],\n    \"names\": [\n      \"New Year's Day\",\n      \"Good Friday\",\n      \"Easter Monday\",\n      \"Early May bank holiday\",\n      \"Spring bank holiday\",\n      \"Summer bank holiday\",\n      \"Christmas Day\",\n      \"Boxing Day (substitute: 28 Dec, as 26 Dec is Saturday)\"\n    ]\n  }\n}\n```\n\n> **Note:** The 2026-12-28 entry is the substitute for Boxing Day (26 Dec falls on Saturday). Because `in_lieu_rule` is set to `substitute_next_working_day`, the tool will also auto-derive substitutes — so you could omit 2026-12-28 and let the rule handle it. Including it explicitly is safer and more transparent.\n\n## How to use\n\n```bash\n# Save your file (e.g. gb_holidays.json), then:\npython3 scripts/fidic_deadline.py --seat GB --trigger 2026-04-01 --period 14 --mode exclude_ph --holidays-file gb_holidays.json\n```\n\n## Source recommendations by jurisdiction\n\n| Jurisdiction | Authoritative source |\n|-------------|---------------------|\n| Singapore | MOM gazette / eGazette (bundled — no file needed) |\n| UAE | FAHR decree (shuraa.ae) |\n| Malaysia (federal) | kabinet.gov.my / Jadual Hari Kelepasan Am |\n| UK (England & Wales) | gov.uk/bank-holidays |\n| Hong Kong | gov.hk General Holidays Ordinance |\n| Australia (state-specific) | Your state's gazette |\n\nFor any jurisdiction: find your country's official gazette or ministry of manpower/labour equivalent. Do not rely on third-party holiday aggregator websites.\n\n## Important caveats\n\n1. **The year matters.** Moon-sighting holidays (Hari Raya, Eid, Vesak in some calendars) are gazetted close to the date. Any data for future years is a prediction until officially confirmed.\n\n2. **The sub-jurisdiction matters.** \"MY\" is one file, but Malaysian state holidays vary. \"GB\" covers England & Wales only — not Scotland. \"AE\" is federal only — individual emirate observances differ. Your contract's governing law determines which calendar applies.\n\n3. **Verify before reliance.** This tool is a workflow aid. The deadline it produces is only as good as the holiday data you feed it.\n\nArchive v2.11.4: 40 files, 141396 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (8480b), data/holidays/README.md (1121b), data/holidays/SG.json (3252b), data/sg_holidays.json (3009b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), docs/holiday-file-format.md (5374b), pyproject.toml (521b), references/claims.md (13221b), references/disputes.md (10582b), references/fidic.md (8085b), references/legal_systems.md (11638b), references/procurement.md (9145b), references/singapore.md (15962b), REVIEW-FEEDBACK.md (3203b), scripts/claims_template.py (97881b), scripts/construction_law.py (3790b), scripts/delay_analysis.py (150b), scripts/delay_calculator.py (15019b), scripts/excel_register.py (9002b), scripts/fidic_comparator.py (13412b), scripts/fidic_deadline.py (18658b), scripts/intake.py (55706b), scripts/notice_calendar.py (20497b), scripts/obligations_register.py (29914b), scripts/sop_calculator.py (11317b), scripts/version.py (332b), scripts/wizard.py (10951b), SKILL.md (30575b), tests/__init__.py (40b), tests/data/golden_deadlines.csv (966b), tests/data/golden_timelines.csv (1516b), tests/test_fidic_deadline.py (8021b), tests/test_registers.py (7546b), tests/test_security.py (3507b), tests/test_sop_boundary.py (10019b), tests/test_sop_golden.py (4981b), tests/test_sop_properties.py (6279b)\n\nFile v2.11.4:SKILL.md\n\n---\nname: construction-law\ndescription: \"FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statutory deadlines against eGazette-verified holiday data. Use when (1) analysing contract clauses, risk allocation, or obligations; (2) preparing or reviewing claims (delay, disruption, prolongation, EOT, loss & expense); (3) comparing contract forms or advising on procurement strategy; (4) drafting or reviewing notices, correspondence, or contract documents; (5) building obligations registers or notice calendars; (6) discussing dispute resolution (DAB/DAAB, adjudication, arbitration, mediation, CAB); (7) Singapore-specific construction law (SOP Act, BCA, SIArb); (8) MDB procurement frameworks (ADB, World Bank). NOT for: non-construction commercial contracts, pure property/real-estate conveyancing, or insurance law.\"\n---\n\n# Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\n\n<!-- Remove v2.11.0 banner after 2026-08-17 -->\n> **⚠️ v2.11.0 users — action required if you computed non-SG deadlines.**\n> v2.11.0 shipped with bundled best-effort holiday data for AE, MY, and GB that was **not verified against authoritative sources**. If you ran the FIDIC Deadline Calculator against a non-SG seat using v2.11.0, **re-check those deadlines** against your jurisdiction’s official gazette. From v2.11.1 onward, only Singapore holidays are bundled (gazette-verified); other jurisdictions require `--holidays-file` with your own verified data. See the [FIDIC Deadline Calculator](#fidic-deadline-calculator) section for details.\n\nAnalyze construction contracts, claims, notices, payment timelines, risk allocation, and dispute pathways across major standard forms, with strong international and Singapore-focused coverage.\n\n## Why install this?\n\n- ✅ Avoid missed notice deadlines and time-bar mistakes\n- ✅ Structure claims and EOT submissions faster\n- ✅ Compare contract risk and obligations more consistently\n- ✅ Prompts for the correct contract form **and edition** before analysis\n\n## Who this skill is for\n\nThis skill is built for:\n\n- Construction lawyers\n- In-house counsel\n- Contract managers\n- Commercial managers\n- Quantity surveyors\n- Claims consultants\n- Project managers\n\n## What this skill does\n\nUse this skill to:\n\n- Identify the correct contract form and edition before analysis\n- Review clauses for obligations, rights, risks, and time-bars\n- Generate notice calendars and obligations registers\n- Draft structured claim, EOT, variation, and payment templates\n- Compare FIDIC forms across key topics\n- Calculate Singapore SOP Act payment timelines\n- Assess delay events, concurrency, EOT exposure, and LD risk\n- Triage dispute resolution pathways\n\n## Supported forms and frameworks\n\n- FIDIC Red Book 2017 (Construction)\n- FIDIC Yellow Book 2017 (Plant & Design-Build)\n- FIDIC Silver Book 2017 (EPC/Turnkey)\n- PSSCOC (Construction Works)\n- SIA Conditions (9th Edition)\n- NEC (NEC3, NEC4) — notice calendar only\n- JCT — pending\n- Singapore SOP Act workflows\n\n## Why this skill matters\n\nConstruction outcomes often turn on details such as:\n\n- the exact contract form and edition\n- amended or bespoke clauses\n- notice timing\n- record quality\n- causation\n- quantification\n- governing law\n\nThis skill helps you structure analysis quickly and consistently so you can spot risks early and avoid missing critical deadlines.\n\n> 🇸🇬 **Singapore matters — BCA circular awareness:** BCA frequently updates SOP Act timelines, plan fees, CORENET-X procedures, BC1/structural codes, cost-sharing schemes, productivity grants, and buildability rules through circulars at https://www1.bca.gov.sg/resources/circulars/. If you maintain a local mirror (e.g. `bca-circulars/` in your workspace, refreshed via a weekly heartbeat task), check it before relying on general knowledge. See `references/singapore.md` for details.\n>\n> ℹ️ This skill does not fetch live BCA updates itself. If you maintain a local circulars mirror in your workspace, use it as an up-to-date reference alongside the skill.\n\n## CLI overview\n\n```\nConstruction Law Skill — Unified CLI\n\nUsage: construction_law.py <command> [options]\n\nAvailable commands:\n\n  intake       🏗️ Matter intake — guided issue triage (recommended starting point)\n  wizard       🧙 Interactive guided prompts for tools\n  notices      Generate notice/obligations calendar for a contract form\n  claims       Generate claim notice/EOT/VO/disruption letters\n  sop          Singapore SOP Act payment timeline calculator\n  compare      Compare FIDIC contract forms side-by-side\n  obligations  Generate party-by-party obligations register\n  register     Generate Excel workbook of obligations + notices\n  delay        Delay analysis & EOT entitlement calculator\n  deadline     FIDIC deadline calculator — Singapore bundled; bring-your-own-holidays for other seats\n\nRun any command with --help for its specific options, e.g.:\n  python3 construction_law.py notices --help\n  python3 construction_law.py claims --help\n```\n\n---\n\n## Start here\n\n### Recommended for all users: Matter Intake\n\nThe intake mode triages a construction issue and produces a professional report with clause buckets, deadline checks, amendment warnings, confidence labels, and recommended next steps.\n\n```bash\npython3 scripts/construction_law.py intake\n# or\npython3 scripts/intake.py\n```\n\nSupports non-interactive mode for automation:\n```bash\npython3 scripts/intake.py --file matter.json --output report.md --save-matter answers.json\n```\n\nUse non-interactive mode for repeatable internal workflows, templates, or batch matter intake.\n\n### Sample Matter Intake output\n\nExample: delay / EOT issue under FIDIC Red 1999\n\n```text\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n MATTER INTAKE — OUTPUT REPORT\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nContract:   FIDIC Red 1999\nGoverning:  Singapore\nParty:      Contractor\nIssue:      Delay / Extension of Time (EOT)\nObjective:  Both EOT and additional payment\n\n1. ISSUE SUMMARY\nThis appears to be a delay / EOT issue arising from late\naccess to site. The likely focus is notice compliance,\nEOT entitlement, causation, and supporting records.\n\n2. LIKELY CLAUSE BUCKETS\n- Clause 2.1   Right of Access to Site\n- Clause 8.4   Extension of Time\n- Clause 20.1  Contractor's Claims\n\n3. DEADLINE / TIME-BAR CHECK\nTrigger:   Awareness of delaying event\nDeadline:  28 days from awareness\nStatus:    ⚠️ Notice not confirmed\nRisk:      Potential time-bar if late notice applies\n\n4. AMENDMENT SENSITIVITY FLAGS\n- Notice periods may be amended\n- EOT wording may be narrowed\n- Particular Conditions may override the standard form\n\n5. RECOMMENDED NEXT STEPS\n- confirm exact clause wording and edition\n- verify whether notice was served in time\n- gather programme and contemporaneous records\n- prepare claim narrative and supporting documents\n\n6. CONFIDENCE LABELS\nDeadline calculation:      High confidence\nClause identification:     High confidence\nEntitlement position:      Needs review\n\nThis is a workflow and analysis aid only. It is not legal advice.\n```\n\n> 🎯 **For strategic claim planning**, see the companion skill `construction-claim-strategy` on ClawHub (v1.5.0). It covers the 7-Dimension strategy framework, argument ranking, delay analysis methods (SCL Protocol, TIA, Windows Analysis), concurrent delay strategy, disruption claims, quantum calculation examples (Eichleay/Hudson/Emden/Measured Mile), ADR strategy (adjudication vs arbitration), notice compliance, expert engagement, risk assessment, pacing delays, legal precedents, and 22 printable reference documents — all BEFORE you select clauses or start drafting.\n\n### Interactive Wizard\n\nFor tool-specific tasks (notices, claims, SOP calculator, etc.), use the wizard:\n\n```bash\npython3 scripts/construction_law.py wizard\n# or\npython3 scripts/wizard.py\n```\n\n### For power users: Unified CLI\n\n```bash\npython3 scripts/construction_law.py --list\npython3 scripts/construction_law.py notices --form fidic-red\npython3 scripts/construction_law.py notices --form fidic-silver\npython3 scripts/construction_law.py claims --form fidic-red --type disruption-claim\npython3 scripts/construction_law.py claims --form fidic-yellow --type eot-application\npython3 scripts/construction_law.py claims --form fidic-silver --type notice-of-claim\npython3 scripts/construction_law.py sop --claim-date 2026-05-15\npython3 scripts/construction_law.py compare --forms red,yellow,silver --topic claims\npython3 scripts/construction_law.py obligations --form fidic-silver --party both\npython3 scripts/construction_law.py register --form fidic-red --type both --output reg.xlsx\npython3 scripts/construction_law.py register --form fidic-silver --type both --output silver.xlsx\npython3 scripts/construction_law.py delay --baseline-start 2026-05-01 --baseline-end 2026-12-31\npython3 scripts/construction_law.py deadline --seat SG --trigger 2026-05-15 --period 28 --mode exclude_ph\npython3 scripts/construction_law.py deadline --seat AE --trigger 2026-03-18 --period 28 --mode exclude_ph --holidays-file ae_holidays.json\n```\n\n> 💡 **All three FIDIC colours supported:** `fidic-red`, `fidic-yellow`, `fidic-silver`. Also: `psscoc`, `sia`.\n\n## Critical rule: always confirm the contract edition first\n\nBefore any clause analysis, confirm:\n\n- contract form\n- edition/year\n- governing law\n- amendments or particular conditions\n- whether bespoke terms override the standard form\n\nDo not assume the latest edition applies.\n\n### Common editions still in use\n\n- PSSCOC: 2017, 2020\n- PSSCOC D&B: 2014, 2020\n- FIDIC: 1999, 2017\n- SIA: 9th Ed, 11th Ed\n- NEC: NEC3, NEC4\n\n## Core workflows\n\n### 1. Clause analysis\n\nFor any clause question, this skill helps you:\n\n- identify the relevant clause\n- explain the obligation, entitlement, or risk\n- flag notice periods and time-bars\n- cross-reference related clauses\n- highlight where amendments may change the default position\n\n### 2. Claims and EOT analysis\n\nFor delay, disruption, prolongation, and related claims, use this structure:\n\n1. Entitlement\n2. Causation\n3. Notice compliance\n4. Substantiation\n5. Quantification\n\n### 3. Notice calendars\n\nBuild notice calendars that capture:\n\n- clause reference\n- trigger event\n- notice period\n- recipient\n- consequence of non-compliance\n\n### 4. Risk allocation review\n\nAssess whether risk is allocated to the party best able to:\n\n1. identify it\n2. control it\n3. mitigate it\n4. absorb it\n\n### 5. Delay and LD exposure\n\nReview:\n\n- delay event chronology\n- criticality\n- concurrency\n- potential EOT entitlement\n- potential liquidated damages exposure\n\n## Included tools\n\n### Interactive Wizard\n\nGuided prompts for common tasks.\n\n```bash\npython3 scripts/wizard.py\n```\n\n### Notice Calendar Generator\n\nGenerate notice and obligations calendars.\n\n```bash\npython3 scripts/notice_calendar.py --form fidic-red --format md\npython3 scripts/notice_calendar.py --form fidic-yellow --format md\npython3 scripts/notice_calendar.py --form fidic-silver --format md\npython3 scripts/notice_calendar.py --form psscoc --format csv --output notices.csv\n```\n\n### Claims Template Generator\n\nGenerate structured templates for claim notices and related submissions.\n\n```bash\npython3 scripts/claims_template.py --list\npython3 scripts/claims_template.py --form fidic-red --type notice-of-claim --output notice.md\npython3 scripts/claims_template.py --form fidic-yellow --type eot-application --output eot_yellow.md\npython3 scripts/claims_template.py --form fidic-silver --type notice-of-claim --output notice_silver.md\npython3 scripts/claims_template.py --form psscoc --type eot-application --output eot.md\n```\n\n### Obligations Register Generator\n\nCreate obligations registers by party and category.\n\n```bash\npython3 scripts/obligations_register.py --form fidic-red --party both --format md\npython3 scripts/obligations_register.py --form fidic-yellow --party contractor --format md\npython3 scripts/obligations_register.py --form fidic-silver --party both --format md\npython3 scripts/obligations_register.py --form psscoc --party contractor --format csv --output obligations.csv\n```\n\n### SOP Act Payment Timeline Calculator\n\nCalculate statutory payment deadlines from a Singapore payment claim date.\n\n```bash\npython3 scripts/sop_calculator.py --claim-date 2026-06-30\npython3 scripts/sop_calculator.py --claim-date 2026-06-30 --response-period 14 --format csv --output timeline.csv\n```\n\n### FIDIC Contract Comparator\n\nCompare FIDIC forms side by side.\n\n```bash\npython3 scripts/fidic_comparator.py --forms red,yellow,silver --topic risk\npython3 scripts/fidic_comparator.py --forms red,yellow,silver --topic all --format csv --output comparison.csv\n```\n\nTopics: `overview`, `risk`, `claims`, `disputes`, `payment`, `termination`, `all`\n\n### FIDIC Deadline Calculator (Seat-Aware)\n\nCompute contractual deadlines based on the seat country's public holidays.\n\n> The FIDIC Deadline Calculator supports Singapore out of the box, with holiday data verified against the eGazette. Singapore data covers gazetted years (currently 2025–2026); the 2027 entry is provisional until MOM gazettes it (expected late 2026). For projects with a seat in any other jurisdiction, you must supply your own holiday list — the tool will not ship pre-loaded holiday data for non-Singapore seats. This is deliberate: holiday calendars vary by sub-jurisdiction (Malaysian state, UK constituent country, individual emirate), shift by moon-sighting, and are gazetted by your own government's authoritative source. Use that source, not ours.\n\nSupports three day-counting modes:\n- **calendar** — calendar-day counting; use where the relevant clause defines or operates on calendar days\n- **exclude_ph** — calendar days excluding public holidays of the seat country\n- **working** — excludes weekends AND public holidays (for contracts defining \"working day\")\n\n```bash\npython3 scripts/fidic_deadline.py --list-seats\npython3 scripts/fidic_deadline.py --seat SG --trigger 2026-05-15 --period 28\npython3 scripts/fidic_deadline.py --seat SG --trigger 2026-05-15 --period 28 --mode exclude_ph\npython3 scripts/fidic_deadline.py --seat AE --trigger 2026-03-18 --period 28 --mode exclude_ph --holidays-file ae_holidays.json\npython3 scripts/fidic_deadline.py --seat MY --trigger 2026-02-15 --period 28 --mode working --holidays-file my_holidays.json\n```\n\nBundled seat: `SG` (Singapore — gazette-verified). For any other jurisdiction, supply `--holidays-file`. See `docs/holiday-file-format.md` for the JSON schema and a worked example.\n\n> 💡 **Which mode to use?** Check your contract's definition of \"day\". FIDIC 2017 standard = calendar days. If Particular Conditions amend this to exclude public holidays, use `exclude_ph`. If the contract uses \"working days\", use `working`.\n\n### Delay Analysis Calculator\n\nAssess delay events, concurrency, EOT exposure, and LD risk.\n\n```bash\npython3 scripts/delay_calculator.py --baseline-start 2026-05-11 --baseline-end 2030-05-10 \\\n  --add \"Late access|2026-06-01|2026-06-30|employer|critical\" \\\n  --add \"Weather|2026-07-15|2026-07-25|neutral|critical\"\n```\n\n### Excel Register Generator\n\nExport notice calendars and obligations registers to .xlsx.\n\n```bash\npython3 scripts/excel_register.py --form fidic-red --type both --output contract_admin.xlsx --commencement 2026-05-11\npython3 scripts/excel_register.py --form fidic-yellow --type both --output yellow_admin.xlsx\npython3 scripts/excel_register.py --form fidic-silver --type both --output silver_admin.xlsx\npython3 scripts/excel_register.py --form psscoc --type obligations --output obligations.xlsx\n```\n\nRequires: `openpyxl` (`pip3 install openpyxl`)\n\n## Example outputs\n\n### Notice calendar — concrete sample\n\n```\nClause:    FIDIC 20.2.1\nTrigger:   Event giving rise to claim\nDeadline:  28 days from awareness\nRecipient: Engineer\nRisk:      Late notice may prejudice entitlement (time-bar)\n```\n\n### Notice calendar — fields\n\n- Clause reference\n- Trigger event\n- Notice deadline\n- Recipient\n- Time-bar consequence\n\n### Claims template\n\n- Background\n- Contract basis\n- Event chronology\n- Causation\n- Notice compliance\n- Relief sought\n- Reservation of rights\n- Supporting documents\n\n### Obligations register\n\n- Clause\n- Obligation\n- Responsible party\n- Timing\n- Priority\n- Status\n- Notes\n\n## Best use cases\n\n- preliminary clause review\n- contract administration checklists\n- claim structure and document preparation\n- notice and deadline tracking\n- form comparison\n- SOP timeline calculation\n- delay event triage\n\n## Important limitations\n\nThis skill is a workflow and analysis aid. It is not a substitute for legal advice.\n\nUse caution where:\n\n- the contract is heavily amended\n- bespoke EPC or project-specific drafting applies\n- governing law may materially change the outcome\n- local statutory regimes override standard form assumptions\n- adjudication, arbitration, or court submissions require final review\n\nAlways verify:\n\n- the contract edition\n- amendments and particular conditions\n- governing law\n- notice requirements\n- jurisdiction-specific treatment of concurrency, good faith, prevention, and time-bars\n\n## Key principles\n\n- Read the contract first\n- Standard form positions mean little if amended\n- Time-bars can be fatal\n- Notice compliance should be checked before merits\n- Concurrency treatment differs by jurisdiction\n- Good faith is jurisdiction-specific\n- Prevention issues may affect LD exposure\n- Fitness for purpose and reasonable skill and care must be distinguished carefully\n\n## Reference files\n\n- references/fidic.md\n- references/singapore.md\n- references/claims.md\n- references/disputes.md\n- references/procurement.md\n\n## Live knowledge sources (Singapore)\n\nFor up-to-date Singapore regulatory context, consult the **BCA circulars page** — the authoritative source for changes to SOP Act timelines, plan fees, CORENET-X, BC1/structural codes, cost-sharing schemes, productivity grants, and buildability requirements:\n\n- **Source:** https://www1.bca.gov.sg/resources/circulars/\n- **Recommended setup:** Maintain a local PDF mirror (e.g. `bca-circulars/` in your workspace) refreshed weekly via a heartbeat or cron task. Track seen titles in a `seen.json` index to detect new circulars.\n\nWhen advising on Singapore matters touching SOP Act timelines, plan fees, CORENET-X, BC1/structural codes, cost-sharing schemes, productivity grants, or buildability requirements, **check the latest circulars first** before relying on general knowledge — BCA updates can change deadlines, rates, and procedural requirements.\n\nIf your local mirror looks stale (>2 weeks old), trigger a fresh fetch.\n\n## 🔒 Security and safety\n\nAll Python scripts in this skill are designed as safe, local template and register generators.\n\n- ✅ **No network access** — no API calls, no HTTP requests\n- ✅ **No subprocess execution** — no shell commands, no external programs\n- ✅ **No dynamic code loading** — sibling scripts are imported as plain Python modules (no `importlib`, no `exec`, no `eval`)\n- ✅ **No telemetry from skill code** — the bundled scripts do not collect or transmit data. (Note: your LLM provider’s normal data handling still applies.)\n- ✅ **No filesystem traversal** — only writes to the user-specified `--output` path\n- ✅ **Read-only static reference data** — contract clauses bundled with the skill\n- ✅ **ClawScan:** Benign\n- ✅ **Static analysis:** Benign\n- ℹ️ VirusTotal status is shown on the listing page\n\n**Safe to install and use.** 🛡️\n\n### Files written\n\nScripts write files **only** when you pass explicit output flags. If no output flag is provided, all output goes to stdout.\n\n| Script | Flag | What is written | Format |\n|--------|------|----------------|--------|\n| Any script | `--output FILE` | Generated report/template/calendar | UTF-8 (Markdown, CSV, or plain text) |\n| `excel_register.py` | `--output FILE.xlsx` | Obligations/notices workbook | Excel (.xlsx, requires openpyxl) |\n| `claims_template.py` | `--output FILE.docx` | Claim letter | Word (.docx, requires python-docx) |\n| `sop_calculator.py` | `--output FILE` | SOP payment timeline | UTF-8 Markdown or CSV |\n| `fidic_deadline.py` | `--output FILE` | Deadline calculation | UTF-8 text or Markdown |\n\nNo files are created, modified, or read beyond the explicit input flags (`--file`, `--holidays-file`, `--events-csv`).\n\n## Dependencies\n\nCore scripts use only the Python standard library. Optional features require:\n\n| Package | Required For | Install |\n|---------|-------------|--------|\n| `openpyxl` | Excel register output | `pip3 install openpyxl` |\n| `python-docx` | Word document export | `pip3 install python-docx` |\n\nDeclared in `pyproject.toml` as optional extras:\n```bash\npip3 install .[excel]    # Excel only\npip3 install .[all]      # Excel + Word\npip3 install .[test]     # pytest + hypothesis\n```\n\n## Testing\n\nThe skill includes a multi-layer test suite (73 tests):\n\n**Layer 1 — Golden file** (`test_sop_golden.py`): 8 hand-computed scenarios frozen in `tests/data/golden_timelines.csv`. Covers CNY cluster, Vesak/Hari Raya Haji, Christmas/New Year cross-year, National Day in-lieu, baseline, claim-on-PH, 14-day response, and s.17(2) +7 extension.\n\n**Layer 2 — Property-based** (`test_sop_properties.py`): Hypothesis tests over 2025–2027 date range. Properties: deadline never on PH, strictly monotonic, round-trip sop_days_between, adding a holiday can only push later, result ≥ N calendar days.\n\n**Layer 3 — Boundary** (`test_sop_boundary.py`): End-of-month, end-of-year, s.17(2) extension (verified as SOP days with PH skipping), claim on PH, consecutive holidays (3+ non-SOP days), out-of-range year (fails loud), Silver Book fitness-for-purpose assertion.\n\n**Register tests** (`test_registers.py`): All forms produce valid MD/CSV, Silver Book has no Engineer, entry structure validation.\n\n```bash\ncd skills/construction-law\npip3 install .[test]\npython3 -m pytest tests/ -v\n# or without pytest:\npython3 -m unittest discover tests\n```\n\n## Changelog\n\n### v2.11.4 (May 2026)\n- **Security:** Sanitised test docstrings and comments — removed function-call patterns that static analysis scanners match against English text\n\n### v2.11.3 (May 2026)\n- **Security:** Replaced string-grep forbidden-imports check with `ast.parse` tree-walking — properly catches `compile(...)`, `exec(...)`, `eval(...)` regardless of whitespace or indirection; no longer false-positives on comments, docstrings, or strings containing those words\n\n### v2.11.2 (May 2026)\n- **Title:** Updated to \"Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\"\n- **Advisory:** Added v2.11.0 user advisory banner for non-SG deadline re-check\n- **Docs:** Added CLI overview (`--help` output) to SKILL.md so users can evaluate commands without installing\n- **Docs:** Tightened \"No telemetry\" statement to distinguish skill code from LLM provider data handling\n- **Docs:** Added \"Files written\" section documenting exactly what each script writes and when\n- **Docs:** SKILL.md changelog backfilled with v2.10.0–v2.11.1 entries (CHANGELOG.md remained the source of truth; SKI\n\nArchive v2.11.3: 40 files, 141277 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (8306b), data/holidays/README.md (1121b), data/holidays/SG.json (3252b), data/sg_holidays.json (3009b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), docs/holiday-file-format.md (5374b), pyproject.toml (521b), references/claims.md (13221b), references/disputes.md (10582b), references/fidic.md (8085b), references/legal_systems.md (11638b), references/procurement.md (9145b), references/singapore.md (15962b), REVIEW-FEEDBACK.md (3203b), scripts/claims_template.py (97881b), scripts/construction_law.py (3790b), scripts/delay_analysis.py (150b), scripts/delay_calculator.py (15019b), scripts/excel_register.py (9002b), scripts/fidic_comparator.py (13412b), scripts/fidic_deadline.py (18658b), scripts/intake.py (55706b), scripts/notice_calendar.py (20497b), scripts/obligations_register.py (29914b), scripts/sop_calculator.py (11317b), scripts/version.py (332b), scripts/wizard.py (10951b), SKILL.md (30404b), tests/__init__.py (40b), tests/data/golden_deadlines.csv (966b), tests/data/golden_timelines.csv (1516b), tests/test_fidic_deadline.py (8021b), tests/test_registers.py (7546b), tests/test_security.py (3572b), tests/test_sop_boundary.py (10019b), tests/test_sop_golden.py (4981b), tests/test_sop_properties.py (6279b)\n\nArchive v2.11.2: 40 files, 140502 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (8064b), data/holidays/README.md (1121b), data/holidays/SG.json (3252b), data/sg_holidays.json (3009b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), docs/holiday-file-format.md (5374b), pyproject.toml (521b), references/claims.md (13221b), references/disputes.md (10582b), references/fidic.md (8085b), references/legal_systems.md (11638b), references/procurement.md (9145b), references/singapore.md (15962b), REVIEW-FEEDBACK.md (3203b), scripts/claims_template.py (97881b), scripts/construction_law.py (3790b), scripts/delay_analysis.py (150b), scripts/delay_calculator.py (15019b), scripts/excel_register.py (9002b), scripts/fidic_comparator.py (13412b), scripts/fidic_deadline.py (18658b), scripts/intake.py (55706b), scripts/notice_calendar.py (20497b), scripts/obligations_register.py (29914b), scripts/sop_calculator.py (11317b), scripts/version.py (332b), scripts/wizard.py (10951b), SKILL.md (30101b), tests/__init__.py (40b), tests/data/golden_deadlines.csv (966b), tests/data/golden_timelines.csv (1516b), tests/test_fidic_deadline.py (8021b), tests/test_registers.py (7546b), tests/test_security.py (2141b), tests/test_sop_boundary.py (10019b), tests/test_sop_golden.py (4981b), tests/test_sop_properties.py (6279b)\n\nArchive v2.11.1: 39 files, 136885 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (6982b), data/holidays/README.md (1121b), data/holidays/SG.json (3252b), data/sg_holidays.json (3009b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), docs/holiday-file-format.md (5374b), pyproject.toml (521b), references/claims.md (13221b), references/disputes.md (10582b), references/fidic.md (8085b), references/legal_systems.md (11638b), references/procurement.md (9145b), references/singapore.md (15962b), REVIEW-FEEDBACK.md (3203b), scripts/claims_template.py (97881b), scripts/construction_law.py (3790b), scripts/delay_analysis.py (150b), scripts/delay_calculator.py (15019b), scripts/excel_register.py (9002b), scripts/fidic_comparator.py (13412b), scripts/fidic_deadline.py (18658b), scripts/intake.py (55706b), scripts/notice_calendar.py (20497b), scripts/obligations_register.py (29914b), scripts/sop_calculator.py (11317b), scripts/version.py (332b), scripts/wizard.py (10951b), SKILL.md (24323b), tests/__init__.py (40b), tests/data/golden_deadlines.csv (966b), tests/data/golden_timelines.csv (1516b), tests/test_fidic_deadline.py (8021b), tests/test_registers.py (7546b), tests/test_sop_boundary.py (10019b), tests/test_sop_golden.py (4981b), tests/test_sop_properties.py (6279b)\n\nArchive v2.11.0: 41 files, 138030 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (7334b), data/holidays/AE.json (2005b), data/holidays/GB.json (1939b), data/holidays/MY.json (2360b), data/holidays/README.md (1565b), data/holidays/SG.json (3252b), data/sg_holidays.json (3009b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), pyproject.toml (521b), references/claims.md (13221b), references/disputes.md (10582b), references/fidic.md (8085b), references/legal_systems.md (11638b), references/procurement.md (9145b), references/singapore.md (15962b), REVIEW-FEEDBACK.md (3203b), scripts/claims_template.py (97881b), scripts/construction_law.py (3767b), scripts/delay_analysis.py (150b), scripts/delay_calculator.py (15019b), scripts/excel_register.py (9002b), scripts/fidic_comparator.py (13412b), scripts/fidic_deadline.py (15981b), scripts/intake.py (55706b), scripts/notice_calendar.py (20497b), scripts/obligations_register.py (29914b), scripts/sop_calculator.py (11317b), scripts/version.py (332b), scripts/wizard.py (10951b), SKILL.md (24269b), tests/__init__.py (40b), tests/data/golden_deadlines.csv (1982b), tests/data/golden_timelines.csv (1516b), tests/test_fidic_deadline.py (8493b), tests/test_registers.py (7546b), tests/test_sop_boundary.py (10019b), tests/test_sop_golden.py (4981b), tests/test_sop_properties.py (6279b)\n\nArchive v2.10.1: 32 files, 117226 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (4351b), data/sg_holidays.json (2789b), demo/matter.json (461b), demo/README.md (1388b), demo/run-demos.sh (2649b), pyproject.toml (596b), references/claims.md (13221b), references/disputes.md (10582b), references/fi...","readmeExcerpt":"Skill: Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act Owner: redkiwi1688-prog Summary: FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut... Tags: adjudication:2.8.1, arbitration:2.8.1, claims:2.8.1, construction:2.8.1, delay:2.8.1, disruption:2.8.1, eot:2.8.1, fidic:2.8.1, fidic-yellow:2.8.1, interim-","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Construction Law Skill — Unified CLI\n\nUsage: construction_law.py <command> [options]\n\nAvailable commands:\n\n  intake       🏗️ Matter intake — guided issue triage (recommended starting point)\n  wizard       🧙 Interactive guided prompts for tools\n  notices      Generate notice/obligations calendar for a contract form\n  claims       Generate claim notice/EOT/VO/disruption letters\n  sop          Singapore SOP Act payment timeline calculator\n  compare      Compare FIDIC contract forms side-by-side\n  obligations  Generate party-by-party obligations register\n  register     Generate Excel workbook of obligations + notices\n  delay        Delay analysis & EOT entitlement calculator\n  deadline     FIDIC deadline calculator — Singapore bundled; bring-your-own-holidays for other seats\n\nRun any command with --help for its specific options, e.g.:\n  python3 construction_law.py notices --help\n  python3 construction_law.py claims --help"},{"language":"bash","snippet":"python3 scripts/construction_law.py intake\n# or\npython3 scripts/intake.py"},{"language":"bash","snippet":"python3 scripts/intake.py --file matter.json --output report.md --save-matter answers.json"},{"language":"text","snippet":"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n MATTER INTAKE — OUTPUT REPORT\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nContract:   FIDIC Red 1999\nGoverning:  Singapore\nParty:      Contractor\nIssue:      Delay / Extension of Time (EOT)\nObjective:  Both EOT and additional payment\n\n1. ISSUE SUMMARY\nThis appears to be a delay / EOT issue arising from late\naccess to site. The likely focus is notice compliance,\nEOT entitlement, causation, and supporting records.\n\n2. LIKELY CLAUSE BUCKETS\n- Clause 2.1   Right of Access to Site\n- Clause 8.4   Extension of Time\n- Clause 20.1  Contractor's Claims\n\n3. DEADLINE / TIME-BAR CHECK\nTrigger:   Awareness of delaying event\nDeadline:  28 days from awareness\nStatus:    ⚠️ Notice not confirmed\nRisk:      Potential time-bar if late notice applies\n\n4. AMENDMENT SENSITIVITY FLAGS\n- Notice periods may be amended\n- EOT wording may be narrowed\n- Particular Conditions may override the standard form\n\n5. RECOMMENDED NEXT STEPS\n- confirm exact clause wording and edition\n- verify whether notice was served in time\n- gather programme and contemporaneous records\n- prepare claim narrative and supporting documents\n\n6. CONFIDENCE LABELS\nDeadline calculation:      High confidence\nClause identification:     High confidence\nEntitlement position:      Needs review\n\nThis is a workflow and analysis aid only. It is not legal advice."},{"language":"bash","snippet":"python3 scripts/construction_law.py wizard\n# or\npython3 scripts/wizard.py"},{"language":"bash","snippet":"python3 scripts/construction_law.py --list\npython3 scripts/construction_law.py notices --form fidic-red\npython3 scripts/construction_law.py notices --form fidic-silver\npython3 scripts/construction_law.py claims --form fidic-red --type disruption-claim\npython3 scripts/construction_law.py claims --form fidic-yellow --type eot-application\npython3 scripts/construction_law.py claims --form fidic-silver --type notice-of-claim\npython3 scripts/construction_law.py sop --claim-date 2026-05-15\npython3 scripts/construction_law.py compare --forms red,yellow,silver --topic claims\npython3 scripts/construction_law.py obligations --form fidic-silver --party both\npython3 scripts/construction_law.py register --form fidic-red --type both --output reg.xlsx\npython3 scripts/construction_law.py register --form fidic-silver --type both --output silver.xlsx\npython3 scripts/construction_law.py delay --baseline-start 2026-05-01 --baseline-end 2026-12-31\npython3 scripts/construction_law.py deadline --seat SG --trigger 2026-05-15 --period 28 --mode exclude_ph\npython3 scripts/construction_law.py deadline --seat AE --trigger 2026-03-18 --period 28 --mode exclude_ph --holidays-file ae_holidays.json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: construction-law\ndescription: \"FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statutory deadlines against eGazette-verified holiday data. Use when (1) analysing contract clauses, risk allocation, or obligations; (2) preparing or reviewing claims (delay, disruption, prolongation, EOT, loss & expense); (3) comparing contract forms or advising on procurement strategy; (4) drafting or reviewing notices, correspondence, or contract documents; (5) building obligations registers or notice calendars; (6) discussing dispute resolution (DAB/DAAB, adjudication, arbitration, mediation, CAB); (7) Singapore-specific construction law (SOP Act, BCA, SIArb); (8) MDB procurement frameworks (ADB, World Bank). NOT for: non-construction commercial contracts, pure property/real-estate conveyancing, or insurance law.\"\n---\n\n# Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act\n\n<!-- Remove v2.11.0 banner after 2026-08-17 -->\n> **⚠️ v2.11.0 users — action required if you computed non-SG deadlines.**\n> v2.11.0 shipped with bundled best-effort holiday data for AE, MY, and GB that was **not verified against authoritative sources**. If you ran the FIDIC Deadline Calculator against a non-SG seat using v2.11.0, **re-check those deadlines** against your jurisdiction’s official gazette. From v2.11.1 onward, only Singapore holidays are bundled (gazette-verified); other jurisdictions require `--holidays-file` with your own verified data. See the [FIDIC Deadline Calculator](#fidic-deadline-calculator) section for details.\n\nAnalyze construction contracts, claims, notices, payment timelines, risk allocation, and dispute pathways across major standard forms, with strong international and Singapore-focused coverage.\n\n## Why install this?\n\n- ✅ Avoid missed notice deadlines and time-bar mistakes\n- ✅ Structure claims and EOT submissions faster\n- ✅ Compare contract risk and obligations more consistently\n- ✅ Prompts for the correct contract form **and edition** before analysis\n\n## Who this skill is for\n\nThis skill is built for:\n\n- Construction lawyers\n- In-house counsel\n- Contract managers\n- Commercial managers\n- Quantity surveyors\n- Claims consultants\n- Project managers\n\n## What this skill does\n\nUse this skill to:\n\n- Identify the correct contract form and edition before analysis\n- Review clauses for obligations, rights, risks, and time-bars\n- Generate notice calendars and obligations registers\n- Draft structured claim, EOT, variation, and payment templates\n- Compare FIDIC forms across key topics\n- Calculate Singapore SOP Act payment timelines\n- Assess delay events, concurrency, EOT exposure, and LD risk\n- Triage dispute resolution pathways\n\n## Supported forms and frameworks\n\n- FIDIC Red Book 2017 (Construction)\n- FIDIC Yellow Book 2017 (Plant & Design-Build)\n- FIDIC Silver Book 2017 (EPC/Turnkey)\n- PSSCOC (Construction Works)\n- SIA Conditions (9th Edition)\n- NEC (NEC3, NEC"},{"path":"data/holidays/README.md","content":"# Country Holiday Data\n\nThis directory contains public holiday data used by the FIDIC Deadline Calculator.\n\n## Bundled data\n\nOnly **Singapore** (`SG.json`) is bundled and maintained by the skill author, verified against the MOM gazette and eGazette.\n\n## Other jurisdictions\n\nFor any non-Singapore seat, users must supply their own holiday file via `--holidays-file`. See `docs/holiday-file-format.md` for the JSON schema, a worked example, and source recommendations.\n\n## File naming\n\n`<ISO-3166-1-alpha-2>.json` — e.g. `SG.json`\n\n## Refresh procedure\n\nCheck annually (typically Q4 when MOM publishes next year's gazette) for updated Singapore holidays. Update `SG.json`, run tests, and bump the skill version.\n\n## Why only Singapore?\n\nHoliday calendars vary by sub-jurisdiction (Malaysian state, UK constituent country, individual emirate), shift by moon-sighting, and are gazetted by each government's authoritative source. Rather than ship best-effort data that users might rely on without verification, we provide a clean extension mechanism and let users bring verified data from their own jurisdiction's gazette."},{"path":"demo/README.md","content":"# Demo Folder — Tutorial Recording Assets\n\nFiles in this folder support the v2.5.0 YouTube tutorial recording.\n\n## Files\n\n- **`matter.json`** — sample Matter Intake input for Demo 1 (FIDIC Red 1999, Singapore, Contractor, late site access, EOT + additional payment)\n- **`run-demos.sh`** — orchestrator that runs the three demos with pauses between each, ready for live screen recording\n\n## Usage\n\nFrom the skill root (`skills/construction-law/`):\n\n```bash\nbash demo/run-demos.sh\n```\n\nPress Enter between each demo to advance. Each demo clears the screen so the recording stays clean.\n\n## Standalone commands (if you prefer to run them individually)\n\n```bash\n# Demo 1 — Matter Intake (FIDIC Red EOT, late site access)\npython3 scripts/intake.py --file demo/matter.json\n\n# Demo 2 — FIDIC Comparator (risk allocation: Red vs Yellow vs Silver)\npython3 scripts/construction_law.py compare --forms red,yellow,silver --topic risk\n\n# Demo 2b — Export claims comparison to CSV\npython3 scripts/construction_law.py compare --forms red,silver --topic claims --format csv --output comparison.csv\n\n# Demo 3 — SOP Act timeline (Payment Claim 30 Jun 2026)\npython3 scripts/sop_calculator.py --claim-date 2026-06-30\n```\n\n## Note\n\nThese demo artefacts are excluded from the published skill via `.gitignore` / publish manifest if needed — they're recording aids, not user-facing skill assets."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77g2eearfhaq251ab7jtrctn854v1s\",\n  \"slug\": \"construction-law\",\n  \"version\": \"2.11.5\",\n  \"publishedAt\": 1779013417998\n}"},{"path":"references/claims.md","content":"# Claims, EOT & Delay Analysis — Reference\n\n## Table of Contents\n1. [Claims Framework](#claims-framework)\n2. [Extension of Time (EOT)](#eot)\n3. [Delay Analysis Methods](#delay-analysis)\n4. [Disruption Claims](#disruption)\n5. [Prolongation Costs](#prolongation)\n6. [Loss & Expense](#loss-expense)\n7. [Global Claims](#global-claims)\n8. [Concurrent Delay](#concurrent-delay)\n9. [Acceleration](#acceleration)\n10. [Notice Requirements Summary](#notices)\n\n---\n\n## Claims Framework {#claims-framework}\n\n### Five-Step Claims Process\n\n| Step | Action | Key Question |\n|------|--------|-------------|\n| 1. Entitlement | Identify contractual basis | Which clause gives the right to claim? |\n| 2. Causation | Establish cause-and-effect | What event caused what impact? |\n| 3. Notice | Verify compliance with notice requirements | Was notice given on time? |\n| 4. Substantiation | Compile supporting evidence | What records prove the claim? |\n| 5. Quantification | Calculate time and/or cost | How much time/money is the impact? |\n\n### Entitlement — Common Contractual Bases\n\n| Ground | FIDIC Clause | PSSCOC Clause | SIA Clause |\n|--------|-------------|---------------|------------|\n| Variations | 13.1-13.3 | 14 | 11 |\n| Unforeseeable ground conditions | 4.12 | Depends on edition | — |\n| Employer's risk events | 17/18 | Depends | — |\n| Late access/possession | 8.4 / 8.5 | 20 | — |\n| Suspension by Employer | 8.9 | — | — |\n| Exceptionally adverse weather | 8.5 | 23 | 23 |\n| Force majeure / exceptional events | 18 | FM clause | — |\n| Changes in law | 13.6 | — | — |\n\n### Evidence Required\n- Contemporary records (daily reports, site diaries, progress photos)\n- Correspondence (letters, emails, meeting minutes)\n- Programme updates (baseline vs actual)\n- Resource records (labour, plant, material deliveries)\n- Cost records (invoices, payroll, plant hire agreements)\n- Weather records (Met Service data)\n- Instructions and drawings (RFIs, AI, VO, SI)\n\n---\n\n## Extension of Time (EOT) {#eot}\n\n### EOT Entitlement Checklist\n1. ✅ Is there a contractual right to EOT for this event?\n2. ✅ Was the event beyond the Contractor's control?\n3. ✅ Did the event actually cause delay to the **critical path**?\n4. ✅ Was notice given within the required period?\n5. ✅ Has the Contractor taken reasonable steps to mitigate?\n\n### EOT vs Prolongation Costs\n| | EOT | Prolongation Costs |\n|---|-----|-------------------|\n| What | Extension of contract completion date | Compensation for additional time-related costs |\n| Effect | Removes exposure to liquidated damages | Reimburses site overhead, preliminaries, etc. |\n| Entitlement | May exist without cost entitlement | Requires both delay + cost entitlement |\n| Example | Adverse weather: EOT yes, cost usually no | Employer variation: EOT yes, cost yes |\n\n### Prevention Principle\n- If the Employer causes delay and there is **no EOT mechanism** for that type of delay → liquidated damages clause may become unenforceable\n- Employer cannot benefit from their own act of prev"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut... Skill: Construction Law: FIDIC, PSSCOC, SIA & Singapore SOP Act Owner: redkiwi1688-prog Summary: FIDIC (Red/Yellow/Silver), PSSCOC, SIA, and Singapore SOP Act toolkit. Generate notices, claims, EOT applications, and obligations registers. Computes statut... Tags: adjudication:2.8.1, arbitration:2.8.1, claims:2.8.1, construction:2.8.1, delay:2.8.1, disruption:2.8.1, eot:2.8.1, fidic:2.8.1, fidic-yellow:2.8.1, interim-","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1886,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T09:17:20.307Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T11:52:51.429Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}