ChatPDM is a deterministic concept system, not a chatbot.
It does not generate answers. It resolves queries only against a fixed set of authored, versioned concepts. If a query cannot be matched within those constraints, it refuses.
There is no guessing, no probabilistic output, and no runtime meaning creation. The same input, under the same concept set and version state, produces the same result or the same refusal.
- Role: repository overview and product introduction.
- Scope: public-facing explanation of what ChatPDM is.
- Does not govern: runtime law, roadmap sequencing, or evidence truth.
- Related docs: document-authority-index.md, AGENTS.md, docs/runtime/chatpdm-llgs-roadmap.md.
- Precedence: context only; control docs override this file.
Most systems treat wording as flexible. That is acceptable for open-ended text, but unsafe when concept meaning must stay fixed. A rewrite, summary, or simplification can change the authored concept. ChatPDM exists to prevent that drift.
| Normal system | ChatPDM |
|---|---|
| Rewriting can change concept meaning | Rewriting or simplifying keeps the same authored meaning |
| Outputs vary by wording | Same concept, same version, same result |
| Ambiguity gets smoothed over | Unsupported ambiguity is refused |
| The system guesses when it is unsure | The system stops at the boundary |
A user asks about authority.
A conventional system might paraphrase authority as "the power to command", "recognized standing", or "legitimate control".
Those are not guaranteed to stay identical across rewrites.
ChatPDM resolves authority to one canonical concept and returns fixed views of that concept, such as a short definition, core meaning, and full definition.
Different wording. Same concept. Same result.
GET /api/v1/concepts/resolve?q=authority{
"type": "concept_match",
"query": "authority",
"normalizedQuery": "authority",
"queryType": "exact_concept_query",
"resolution": {
"method": "exact_alias",
"conceptId": "authority"
},
"answer": {
"itemType": "core_concept",
"title": "Authority",
"shortDefinition": "Authority is recognized standing to direct, decide, or govern within a governance order."
}
}GET /api/v1/concepts/resolve?q=civic%20duty{
"type": "no_exact_match",
"queryType": "unsupported_complex_query",
"interpretation": {
"interpretationType": "unsupported_complex",
"message": "This query does not match a supported concept query form in the current runtime.",
"concepts": [
"duty"
]
},
"resolution": {
"method": "no_exact_match"
},
"message": "No exact canonical concept match was found for this query.",
"suggestions": [
{
"conceptId": "duty",
"title": "Duty",
"reason": "broader_topic"
}
]
}That is the intended posture: resolve authored concepts deterministically, and refuse unsupported composition honestly.
- Resolves authored concepts into fixed, bounded outputs.
- Keeps the concept layer inspectable instead of opaque.
- Returns refusal when the runtime cannot support a request safely.
- Preserves the same output shape under the same declared versions.
- Input is normalized before matching.
- Matching is bounded by authored concepts and explicit contract rules.
- Resolution is deterministic, not probabilistic.
- Unsupported queries do not get a guessed response.
- Meaning is authored before runtime and then resolved through fixed views, not invented on demand.
ChatPDM is:
- a deterministic concept system
- a bounded concept system
- authored, versioned, and inspectable
- refusal-first outside authored scope
ChatPDM is not:
- a chatbot
- a generic Q&A system
- an unconstrained system
- an inference engine
- a universal ontology platform
- Product Data Management software
This repository is the canonical reference implementation of ChatPDM.
Forks may diverge, but they are not guaranteed to preserve:
- closed-world enforcement
- refusal guarantees
- governance integrity
- deterministic meaning resolution
The working rule is simple: preserve the contract, do not improvise new behavior.
PDM stands for Predefined Deterministic Meaning.
Meaning is authored before runtime, executed within explicit boundaries, and rejected when the system cannot resolve it safely.
Most concept tools drift into one of two failures:
- fluent responses that can change meaning when text is reworded
- flat lookup behavior that cannot represent ambiguity or refusal cleanly
ChatPDM sits between those failures. It resolves only authored concepts, returns fixed views of the same meaning, and refuses the rest.
Certain core concepts are governance-scoped in ChatPDM v1:
- authority
- power
- legitimacy
These are not universal definitions across all domains.
Rules:
- these concepts are defined only within the governance domain
- they must not be presented as domain-neutral or universally exhaustive
- scope must be preserved in canonical outputs, comparison outputs, relation outputs, documentation, and UI/API surfaces
- non-governance usage must produce scoped clarification or explicit
out_of_scoperefusal
If an advisory layer is introduced, it remains read-only. It must not become canonical authority.
Current governance boundary docs:
- LLGS AI Boundary Protocol
- AI Interaction Contract
- AI Output Surface Spec
- AI Misuse Scenarios
- AI Automated Integrity Checks
- Language Contract
Known advisory regressions are stored as machine-readable replay fixtures under governance/violations.
The repo is in active beta development.
Current runtime posture:
- Angular SSR beta query surface
- Express runtime resolver
- file-backed canonical concept set
- response contract and schema validation
- boundary stress-testing harness
- live runtime seed concepts:
authority,power,legitimacy,responsibility,duty
The live runtime is intentionally smaller than the authored v1 scope.
- frontend: Angular SSR user interface
- backend: Express resolver runtime and validation scripts
- docs: product, architecture, governance, and validation docs
- data: canonical source artifacts and concept packets
- tests: golden fixtures and runtime validation harnesses
- governance: machine-readable governance replay fixtures and supporting artifacts
- chatpdm-reference: grounding stack for concept authoring discipline
From the repo root:
npm install
npm run bootstrap
npm run devUseful commands:
npm run build
npm run check
npm run scan:ai-governance
npm run replay:ai-violationsRun subprojects directly:
cd frontend && npm start
cd frontend && npm run serve:ssr:frontend
cd backend && npm run dev- Backend:
http://127.0.0.1:4301 - Frontend:
http://127.0.0.1:4200 - These ports are fixed for deterministic local validation.
Production runtime split:
chatpdm-web: Angular SSR Node processchatpdm-api: Express resolver APInginx: public edge forchatpdm.comandapi.chatpdm.com
ChatPDM uses targeted validation rather than a broad formal test suite.
- Frontend relies mainly on Angular build, TypeScript correctness, SSR compile health, and
*.spec.tswhere behavior warrants it. - Backend relies mainly on focused verification scripts and lightweight startup-safety checks.
- Add tests selectively when regression risk justifies them.
Start here:
- Determinism as Architecture
- Response Contract
- Concept Detail Contract
- Inspectable Item Semantic Contract
- V1 Concept Scope
- Boundary Integrity
- Conceptual Reference Stack
- Git Push Workflow
ChatPDM enforces strict source integrity at the concept level.
Each concept must define a sourcePriority array with:
- index 0: primary canonical source for the concept
- index 1:
oxfordas the dictionary boundary anchor
Rules:
- only sources registered in
source-registry.jsonare allowed - only
tier: "core"sources may be used insourcePriority oxfordis mandatory and must be at index 1sourcePrioritymust exactly matchsources[]- duplicate sources are not allowed
Current primary source bindings:
authority->weberpower->lukeslegitimacy->beethamresponsibility->hartduty->hohfeld
This layer enforces data integrity at load time only. It does not change runtime behavior.
ChatPDM is being built in phases.
Current posture:
- keep the runtime narrow
- validate concepts before scale
- prefer stronger authoring and structural stress checks over premature growth
The repo should not drift into:
- broad concept expansion without validation
- chatbot behavior
- feature growth that outruns boundary discipline
SS-CYP-CPDM-PSM-2406
Serhat Soruklu | Coupyn | ChatPDM
PSM = Principled Strategy Model
Core Hash:
PSM-5 = Strategy / Long-Term / People / Execution / Trust
Full Operating Code:
SS::CYP::CPDM::GREEN-PSM-5::NO-DECEPTION::SIGNAL-INTEGRITY