Skip to content

Provide a released cross-language governed transport for mightyETL stock-data acquisition #246

Description

@seonghobae

Consumer and owner boundary

User requested stock-data collection in CWL libraries on 2026-09-07. The consumer implementation is being added to ContextualWisdomLab/mightyETL as a Java provider ACL in the existing ETL host, rooted at develop@e550688c80f0dcf4677c0fbe50bd3341429106fb. EgressWeave owns outbound policy/transport, not stock-field semantics. The consumer has no default HTTP client, credential resolution, network fallback, or copied owner source.

Live owner inspection found a Python HTTPX library on protected main and no native Rust binding in the root inventory. OriginWeave's protected README explicitly marks HTTP adapters unshipped, and its release listing was empty. These observations do not imply every private deployment is absent; they mean the consumer cannot truthfully select a verified immutable cross-language release from the evidence available.

Required transport contract

A host-supplied StockDataTransport.fetchPage(PageRequest) receives a fixed secret-free endpoint, immutable public query, page number and opaque credential reference. It returns status, media type and an owned response stream. Initial endpoint: https://apis.data.go.kr/1160100/service/GetStockSecuritiesInfoService/getStockPriceInfo. Only GET is needed. Public parameters are basDt or beginBasDt/endBasDt, optional isinCd, pageNo, numOfRows, and resultType=xml. The transport, not the consumer, resolves the approved FSC service key and encodes it exactly once as serviceKey.

Implement the reusable cross-language authority in this owner (Rust runtime preferred), with a released client/API/ABI contract. Keep acquisition denied until a concrete approved binding exists. Do not implement provider-specific stock models here, install a Python workaround into the Java consumer, or depend on a mutable sibling branch.

RED/GREEN acceptance

  • Missing credential authority, wrong endpoint/method, insecure TLS, nonpublic DNS or rebound address: zero connection/body disclosure.
  • Approved DNS answers must actually bind the socket; no validate-then-resolve TOCTOU. Redirects and ambient proxies are off for this profile.
  • Provider key absent from logs, exception chains/suppressed errors, request formatting, telemetry, provenance and output artifacts.
  • Bound connect/read/write/pool inactivity, DNS, streamed body bytes and decompression; preserve explicit user cancellation. This ordinary data-download profile is not an LLM model-duration policy.
  • GET requests sequential within a collection; enforce provider/account-wide rate/concurrency budgets across collectors. A 429 or failed authentication cannot trigger key/proxy rotation or HTML scraping fallback.
  • Always close the response on malformed media, over-limit data, parser failure, cancellation and success. No partial successful batch on transport failure.
  • Unit hostile cases followed by actual keyed FSC retrieval of a known published reference day; distinguish delayed-daily data from realtime quotes.
  • Independent review, exact-head CI/security, provenance/SBOM and immutable release coordinates; only then adopt the release in mightyETL and run owner/consumer conformance at exact revisions.

Official provider reference: Financial Services Commission. (n.d.). 금융위원회_주식시세정보. Public Data Portal. https://www.data.go.kr/data/15094808/openapi.do (accessed 2026-09-07). The portal states next-business-day publication after 13:00, not realtime. Primary wire-guide verification and service approval remain explicit live-release gates.

This is a real dependency gap, not a claim that the stock collector is operationally ready. No owner source has been modified or release created by this issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions