Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 35 additions & 35 deletions contracts/documentation/documentation-fragment.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"$schema": "https://raw.githubusercontent.com/AquilaXk/easysubway/32ce139789b97ce1f0c9bb059966cfc19f497480/contracts/documentation/documentation-fragment.schema.json",
"schemaVersion": 1,
"repository": "AquilaXk/easysubway-data",
"sourceSha": "cc6dd6e670ea53290a80171006120b2a8a6669a3",
"sourceSha": "a566db99e4878933326edac84b13290c13aec62f",
"status": "ACTIVE",
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/237",
"https://github.com/AquilaXk/easysubway-data/issues/281",
Expand Down Expand Up @@ -38,7 +38,7 @@
"documentationFamily": "QUALITY_TEST",
"kindCandidate": "DATA_REQUIRED_CI_WORKFLOW",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:.github/workflows/ci.yml:1a692be89eb795b44c7c0662208b9d3c33923134",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:.github/workflows/ci.yml:1a692be89eb795b44c7c0662208b9d3c33923134",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/25",
Expand All @@ -62,8 +62,8 @@
"reviewTrigger": [
"event:workflow-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:.github/workflows/ci.yml:1a692be89eb795b44c7c0662208b9d3c33923134",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:.github/workflows/ci.yml:1a692be89eb795b44c7c0662208b9d3c33923134",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/25"
Expand All @@ -88,7 +88,7 @@
"documentationFamily": "RELEASE_CHANGE",
"kindCandidate": "DATAPACK_IMMUTABLE_RELEASE_WORKFLOW",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:.github/workflows/datapack-release.yml:fe67cb90c0778888ed2196785dcd8ca5611b89e5",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:.github/workflows/datapack-release.yml:fe67cb90c0778888ed2196785dcd8ca5611b89e5",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/54",
Expand All @@ -113,8 +113,8 @@
"reviewTrigger": [
"event:release-workflow-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:.github/workflows/datapack-release.yml:fe67cb90c0778888ed2196785dcd8ca5611b89e5",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:.github/workflows/datapack-release.yml:fe67cb90c0778888ed2196785dcd8ca5611b89e5",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/54"
Expand All @@ -139,7 +139,7 @@
"documentationFamily": "PRODUCT",
"kindCandidate": "DATA_PRODUCT_README",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:README.md:7e9e4208607c224bb8a04852be26daf2ac93b438",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:README.md:7e9e4208607c224bb8a04852be26daf2ac93b438",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/38",
Expand All @@ -166,8 +166,8 @@
"reviewTrigger": [
"event:source-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:README.md:7e9e4208607c224bb8a04852be26daf2ac93b438",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:README.md:7e9e4208607c224bb8a04852be26daf2ac93b438",
"verificationMethod": "owner-review",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/38"
Expand All @@ -192,7 +192,7 @@
"documentationFamily": "ARCHITECTURE",
"kindCandidate": "THREE_ARTIFACT_COMPONENT_BOUNDARY",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:contracts/datapack/bundle-component-contract.json:854a53ccf773a00b3c69bbd0b336854061cb06f2",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:contracts/datapack/bundle-component-contract.json:854a53ccf773a00b3c69bbd0b336854061cb06f2",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/41",
Expand All @@ -217,8 +217,8 @@
"reviewTrigger": [
"event:artifact-boundary-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:contracts/datapack/bundle-component-contract.json:854a53ccf773a00b3c69bbd0b336854061cb06f2",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:contracts/datapack/bundle-component-contract.json:854a53ccf773a00b3c69bbd0b336854061cb06f2",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/41"
Expand All @@ -243,7 +243,7 @@
"documentationFamily": "GOVERNANCE_EVIDENCE",
"kindCandidate": "DATAPACK_MOBILE_COMPATIBILITY_MATRIX",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:contracts/datapack/compatibility-matrix.json:6fbf25901c16c019c4f9cf6ea3da2975caf5c480",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:contracts/datapack/compatibility-matrix.json:6fbf25901c16c019c4f9cf6ea3da2975caf5c480",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/54",
Expand All @@ -267,8 +267,8 @@
"reviewTrigger": [
"event:compatibility-contract-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:contracts/datapack/compatibility-matrix.json:6fbf25901c16c019c4f9cf6ea3da2975caf5c480",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:contracts/datapack/compatibility-matrix.json:6fbf25901c16c019c4f9cf6ea3da2975caf5c480",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/54"
Expand All @@ -293,7 +293,7 @@
"documentationFamily": "API_CONTRACT",
"kindCandidate": "SIGNED_DATAPACK_MANIFEST_SCHEMA",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:contracts/datapack/datapack-manifest.schema.json:6fd7d44ddd72c70fce266663977deecbe6401d91",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:contracts/datapack/datapack-manifest.schema.json:6fd7d44ddd72c70fce266663977deecbe6401d91",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/38",
Expand All @@ -318,8 +318,8 @@
"reviewTrigger": [
"event:manifest-schema-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:contracts/datapack/datapack-manifest.schema.json:6fd7d44ddd72c70fce266663977deecbe6401d91",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:contracts/datapack/datapack-manifest.schema.json:6fd7d44ddd72c70fce266663977deecbe6401d91",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/38"
Expand All @@ -344,7 +344,7 @@
"documentationFamily": "ENGINEERING",
"kindCandidate": "DETERMINISTIC_DATAPACK_BUILDER",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/build-datapack.mjs:5446348b02a088d57093cab8f91e5db3bb1be8d8",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/build-datapack.mjs:5e565c5621d7f6889ac8ccc34ce4539d871d4bf7",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/51",
Expand All @@ -368,8 +368,8 @@
"reviewTrigger": [
"event:builder-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/build-datapack.mjs:5446348b02a088d57093cab8f91e5db3bb1be8d8",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/build-datapack.mjs:5e565c5621d7f6889ac8ccc34ce4539d871d4bf7",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/51"
Expand All @@ -394,7 +394,7 @@
"documentationFamily": "OPERATIONS_RELIABILITY",
"kindCandidate": "SOURCE_ADMISSION_OPERATION_CONTRACT",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/source-admission-runbook.json:86e4b668413bf91b90b4fb9976b485cdd7c56815",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/source-admission-runbook.json:86e4b668413bf91b90b4fb9976b485cdd7c56815",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/28",
Expand All @@ -418,8 +418,8 @@
"reviewTrigger": [
"event:source-admission-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/source-admission-runbook.json:86e4b668413bf91b90b4fb9976b485cdd7c56815",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/source-admission-runbook.json:86e4b668413bf91b90b4fb9976b485cdd7c56815",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/28"
Expand All @@ -444,7 +444,7 @@
"documentationFamily": "SECURITY_PRIVACY",
"kindCandidate": "SOURCE_GOVERNANCE_LICENSE_RETENTION_POLICY",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/source-governance-policy.json:cdacd5175884ae86677c65fa8d249a7da1d23990",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/source-governance-policy.json:cdacd5175884ae86677c65fa8d249a7da1d23990",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/29",
Expand All @@ -468,8 +468,8 @@
"reviewTrigger": [
"event:source-governance-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/source-governance-policy.json:cdacd5175884ae86677c65fa8d249a7da1d23990",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/source-governance-policy.json:cdacd5175884ae86677c65fa8d249a7da1d23990",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/29"
Expand All @@ -494,7 +494,7 @@
"documentationFamily": "DATA_KNOWLEDGE",
"kindCandidate": "PRODUCTION_SOURCE_INVENTORY",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/source-inventory.json:57e3345d47bacc74f23ba82b0f93638d94ef9186",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/source-inventory.json:57e3345d47bacc74f23ba82b0f93638d94ef9186",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/28",
Expand All @@ -519,8 +519,8 @@
"reviewTrigger": [
"event:source-freshness-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/datapack/source-inventory.json:57e3345d47bacc74f23ba82b0f93638d94ef9186",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/datapack/source-inventory.json:57e3345d47bacc74f23ba82b0f93638d94ef9186",
"verificationMethod": "release-audit",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/28"
Expand All @@ -545,7 +545,7 @@
"documentationFamily": "USER_SUPPORT_LEGAL_PUBLIC",
"kindCandidate": "ROUTE_MAP_LICENSE_DECISION",
"sourceSurface": "TRACKED",
"canonicalIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/route-map/route-map-license-decision.json:272a4bdb05f2bdefb51256ceeed67561d95d8759",
"canonicalIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/route-map/route-map-license-decision.json:272a4bdb05f2bdefb51256ceeed67561d95d8759",
"status": "ACTIVE",
"ownerRepository": "AquilaXk/easysubway-data",
"ownerIssue": "https://github.com/AquilaXk/easysubway-data/issues/21",
Expand All @@ -569,8 +569,8 @@
"reviewTrigger": [
"event:license-decision-change"
],
"lastVerifiedAt": "2026-10-03T07:46:30.384Z",
"lastVerifiedIdentity": "git:cc6dd6e670ea53290a80171006120b2a8a6669a3:tools/route-map/route-map-license-decision.json:272a4bdb05f2bdefb51256ceeed67561d95d8759",
"lastVerifiedAt": "2026-10-04T00:37:04.361Z",
"lastVerifiedIdentity": "git:a566db99e4878933326edac84b13290c13aec62f:tools/route-map/route-map-license-decision.json:272a4bdb05f2bdefb51256ceeed67561d95d8759",
"verificationMethod": "contract-test",
"verificationEvidence": [
"https://github.com/AquilaXk/easysubway-data/issues/21"
Expand Down
5 changes: 5 additions & 0 deletions tools/ci/data-test-ownership.json
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,10 @@
"data913": {
"issueUrl": "https://github.com/AquilaXk/easysubway-data/issues/913",
"title": "[Fix] 데이터팩·서버 번들 만료 시각에 시간표 원천 신선도 반영"
},
"data918": {
"issueUrl": "https://github.com/AquilaXk/easysubway-data/issues/918",
"title": "[Fix] 인천 1·2호선 자정 이후 열차가 86400초 이상과 0시대 값으로 섞여 표현되는지 원천·컴파일러 확인"
}
},
"workflows": {
Expand Down Expand Up @@ -536,6 +540,7 @@
{"path":"tools/datapack/lib/kric-station-timetable-api-trips.test.mjs","semanticOwner":"data903","classes":["required-pr"],"durationMs":40},
{"path":"tools/datapack/lib/kric-korail-timetable.test.mjs","semanticOwner":"data903","classes":["required-pr"],"durationMs":60},
{"path":"tools/datapack/lib/kric-station-lines-timetable.test.mjs","semanticOwner":"data903","classes":["required-pr"],"durationMs":60},
{"path":"tools/datapack/lib/service-day-seconds.test.mjs","semanticOwner":"data918","classes":["required-pr"],"durationMs":10},
{"path":"tools/datapack/lib/kric-retained-gwangju-projection.test.mjs","semanticOwner":"data913","classes":["required-pr"],"durationMs":60},
{"path":"tools/datapack/lib/map-catalog-oci-publisher.test.mjs","semanticOwner":"data535","classes":["required-pr"],"durationMs":7},
{"path":"tools/datapack/lib/molit-svg-provider-identity.test.mjs","semanticOwner":"data29","classes":["required-pr"],"durationMs":2},
Expand Down
5 changes: 4 additions & 1 deletion tools/datapack/build-datapack.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ import {
import { bindStationContacts, loadStationContactInputs } from "./build-station-contacts.mjs";
import { isCapitalRouteTopologySnapshotId } from "./lib/capital-route-topology-snapshot-id.mjs";
import { expandExternalStopTimes } from "./lib/external-stop-times.mjs";
import { serviceDayStopTimes } from "./lib/service-day-seconds.mjs";
import { deriveFreshnessExpiresAt } from "./freshness-policy.mjs";
import { validateSourceSnapshotFreshness } from "./validate-source-snapshot-freshness.mjs";

Expand Down Expand Up @@ -4323,7 +4324,9 @@ export function buildSqlitePack(sqlitePath, schema, pack, officialOdFareAdmissio
"pickup_type",
"drop_off_type",
],
pack.transitStopTimes ?? [],
// #918: 원천이 00:00~02:59로 적은 자정 이후 시각은 전날 운행일의 24시 이후 초로 싣는다(운행일 경계 03:00).
// 바꾼 뒤 trip 안 시각이 줄어들면(경계를 가로지르는 열차) validate-datapack의 순서 검사가 팩을 거부한다.
serviceDayStopTimes(pack.transitStopTimes ?? []),
Comment thread
AquilaXk marked this conversation as resolved.
(row) => [
requiredString(row.tripId, "transitStopTimes.tripId"),
requiredPositiveInteger(row.stopSequence, "transitStopTimes.stopSequence"),
Expand Down
Loading