The "Upgrade Schema Validator" commit added SKILL.md referencing files that did not exist. Implement them so the skill actually runs: - scripts/validate_schema.py — 5-layer offline validator (L0 coverage, L1 syntax, L2 vocabulary/value-format, L3 rich-result, L4 consistency) with xlsx/csv/jsonl/ json/dir/live-URL adapters. Gate = zero P0; exits 1 on failure. - scripts/schema_rules.json — curated hotel-focused, offline rule set (edit-only extension point). - scripts/make_sample.py + fixtures/sample_schema.csv — deliberately flawed fixture seeding ≥1 defect per layer; used to self-test. - references/ — validation-methodology, defect-taxonomy (25 codes), hotel-type-map. - templates/ — client-qa-report, decision-log. - code/CLAUDE.md — redirect legacy single-URL tool to the new pipeline. Noise control: MISSING_RECOMMENDED aggregated one-line-per-node; unexpected-property checks opt-in via --strict. Generalized client-specific shilla-type-map → hotel-type-map. Self-tested: default P0=5/P1=4/P2=14 FAIL, --strict --no-recommended P2=0, adapters verified. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.7 KiB
1.7 KiB
P1 Decision Log — {{프로젝트명}}
P0 is non-negotiable: every P0 is fixed before launch (the gate enforces it). P1 is where judgement lives — some P1s get fixed, some get consciously accepted. This log records which, by whom, and why, so an accepted P1 is a decision on the record, not a silently ignored defect. It is the G3 (테스트) deliverable.
How to use
- Open
defect_log.csv, filter toseverity = P1. - For each P1 (or each group of identical P1s), add a row below.
- Decision is one of: Fix (will correct before launch) / Accept (ship as-is, with rationale) / Defer (post-launch backlog).
- An
Accept/Deferneeds a named approver.Fixneeds an owner + target date. - Re-run the validator after the fixes; confirm the fixed P1s are gone.
Log
| # | Code | Entry / scope | Summary | Decision | Owner / Approver | Target / Date | Rationale |
|---|---|---|---|---|---|---|---|
| 1 | {{CODE}} | {{entry_id or (dataset)}} | {{one line}} | Fix / Accept / Defer | {{name}} | {{YYYY-MM-DD}} | {{why}} |
| 2 | |||||||
| 3 |
Standing decisions (apply to all entries unless overridden)
Record cross-cutting calls once here instead of per row — e.g. "MISSING_RECOMMENDED for
starRating is accepted group-wide: not contractually rated." Reduces log noise.
| Code | Standing decision | Approver | Date |
|---|---|---|---|
| {{CODE}} | Accept group-wide — {{reason}} | {{name}} | {{YYYY-MM-DD}} |
Sign-off
| Stage gate | Condition | Confirmed by | Date |
|---|---|---|---|
| G3 테스트 | All P1 triaged (Fix/Accept/Defer), decisions logged above | {{name}} | {{date}} |
| G4 안정화 | P0 = 0, all "Fix" P1 closed, online validator green on sample | {{name}} | {{date}} |