public-private-boundary
Public / Private Boundary (Current Codebase)
This document classifies the current repository into:
- keep private
- make public
- split/refactor before publishing
The goal is to support an open plugin ecosystem while protecting the commercial control plane.
Keep private
These contain product differentiation, operational internals, or deployment-sensitive logic.
Runtime product
core/- private except for any future extracted SDK/spec artifacts
runner/- private runtime executable
Private implementation modules
- core/src/AisOpsFlow/App.hs
- core/src/AisOpsFlow/Agent/Api.hs
- core/src/AisOpsFlow/Grpc/CoreRunner.hs
- core/src/AisOpsFlow/Repository.hs
- core/src/AisOpsFlow/Workflow/ExecutionEngine.hs
- runner/src/AisOpsFlow/Runner/App.hs
- runner/src/AisOpsFlow/Runner/Grpc.hs
- runner/src/AisOpsFlow/Runner/Jobs.hs
- runner/src/AisOpsFlow/Runner/JobExecution.hs
- runner/src/AisOpsFlow/Runner/JobApproval.hs
- runner/src/AisOpsFlow/Runner/JobSigning.hs
Storage and backend adapters
core/src/AisOpsFlow/DB/core/src/AisOpsFlow/Beam/core/src/AisOpsFlow/DB.hs
Reason:
- schema and migration code may stay private if the product is delivered as images
- backend abstraction is runtime internals, not plugin extension surface
Deployment and ops packaging
deploy/- production-oriented
scripts/ - internal CI/CD workflows when added
Reason:
- these expose operational assumptions and commercial packaging choices
Good candidates to make public
These are part of the extension surface or can become it with minimal cleanup.
Plugin examples
- plugins/channel-slack/src/index.js
- plugins/channel-email/src/index.js
- plugins/channel-telegram/src/index.js
- plugins/kakao-provider-mock/src/index.js
- plugins/kakao-webhook-simulator/src/index.js
These should move to a public SDK/examples repo.
Public-facing contract docs
These need a public edit pass, but they are the right starting point.
Split before publishing
These are useful externally, but current form is too coupled to private internals.
1. Plugin contract spec
Current source is implicit in:
- plugin example implementations
runnerrequest behavior- internal auth helpers
Needs extraction into:
docs/plugin-api-v1.md- JSON schemas
- compatibility/versioning rules
2. Internal auth helper
Current code exists in several private/public places:
- core/src/AisOpsFlow/Security/InternalAuth.hs
- runner/src/AisOpsFlow/Runner/InternalAuth.hs
- plugins/shared/internal-auth.js
Public target should be:
- language-neutral signing spec
- official helpers for Node and Python
Do not publish the Haskell internal modules directly as the SDK story.
3. Plugin conformance suite
Current repo has useful verification scripts, but they are product-level.
Public target should be:
- plugin-focused contract tests
- no dependency on private control-plane internals
4. Protobuf and runner-plugin separation docs
proto/can stay private if Core↔︎Runner remains proprietary- Runner↔︎Plugin contract should be documented separately and publicly
Recommendation:
- keep
proto/core_runner/v1private - publish Runner↔︎Plugin HTTP/JSON contract only
Suggested public repo contents
Repo: aisopsflow-plugin-sdk
examples/node/examples/python/schemas/docs/plugin-api-v1.mddocs/publishing.mddocs/security-signing.mdpackages/js/internal-auth/packages/python/internal_auth/tests/conformance/
Repo: aisopsflow-plugin-catalog
plugins/<publisher>/<plugin>/manifest.yamlcompatibility/verification/
Suggested private repo contents
core/runner/proto/deploy/- production scripts
- internal integration tests
Immediate extraction candidates from the current tree
If you start the split now, extract in this order:
plugins/shared/internal-auth.jsplugins/channel-*plugins/kakao-provider-mock- plugin API docs from
docs/content/product/spec-v0.1.md - public conformance test kit
Not ready to publish as-is
core/src/AisOpsFlow/Validation.hscore/src/AisOpsFlow/Web.hscore/src/AisOpsFlow/App/*core/src/AisOpsFlow/Workflow/*
Reason:
- these are product internals, not extension API
- publishing them creates maintenance burden without helping plugin authors much
Recommended final boundary
Public
- plugin API specification
- signing specification
- example plugins
- plugin SDK helpers
- marketplace/catalog metadata
- plugin conformance suite
Private
- core runtime
- runner runtime
- orchestration engine
- tenant/auth/policy internals
- Core↔︎Runner protocol implementation
- deployment packaging