Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
78f0929
feat: establish ConceptWeave foundation
seonghobae Sep 1, 2026
0081a67
fix: bind Product CI to exact source head
seonghobae Sep 1, 2026
8135395
test: cover evidence publication invariant
seonghobae Sep 1, 2026
8f32533
test: reject publication after evidence loss
seonghobae Sep 1, 2026
0d66b89
docs: map Consensus research to product capabilities
seonghobae Sep 1, 2026
e81f940
docs: refresh Consensus research register
seonghobae Sep 1, 2026
6014f9e
docs: align provenance requirement with current contract
seonghobae Sep 1, 2026
fb82833
docs: make published releases immutable
seonghobae Sep 1, 2026
70697ca
docs: pin SHACL draft citation
seonghobae Sep 1, 2026
62bcbee
fix: align public candidate schema invariants
seonghobae Sep 1, 2026
f4ff0a1
test: add candidate schema fixtures
seonghobae Sep 1, 2026
a2c0e19
test: add whitespace-invalid schema fixture
seonghobae Sep 1, 2026
21e44a7
test: add invalid published-truth schema fixture
seonghobae Sep 1, 2026
3d187c1
ci: validate candidate schema semantics
seonghobae Sep 1, 2026
2b6942a
docs: narrow candidate schema claim to enforced scope
seonghobae Sep 1, 2026
c861d0b
test: forbid external candidate invariant bypass
seonghobae Sep 1, 2026
1c982f2
test: require evidence at publication authority boundary
seonghobae Sep 1, 2026
217bbfd
docs: add DeepWiki and documentation entry point
seonghobae Sep 1, 2026
a05befd
docs: add ConceptWeave Pages landing page
seonghobae Sep 1, 2026
cd7b04c
docs: make ConceptWeave README user-first
seonghobae Sep 1, 2026
39b5b04
fix(ci): keep lockfile check immutable
seonghobae Sep 1, 2026
a70e085
fix(ci): preserve exact-head product workflow
seonghobae Sep 1, 2026
9ac9de9
fix(domain): encapsulate semantic candidate invariants
seonghobae Sep 1, 2026
ec9b812
test(domain): cover read-only publication invariants
seonghobae Sep 1, 2026
51ca6f5
docs: license ConceptWeave under Apache-2.0
seonghobae Sep 1, 2026
37d30a2
docs: declare Apache-2.0 package license
seonghobae Sep 1, 2026
3449cad
docs: align crate license metadata
seonghobae Sep 1, 2026
34d5740
docs: publish ConceptWeave license
seonghobae Sep 1, 2026
7cc16b7
fix: encapsulate semantic evidence references
seonghobae Sep 1, 2026
6520478
fix(ci): repair exact-head format and bound Product queue
seonghobae Sep 1, 2026
971ddcb
fix(ci): move checkout to Node 24 runtime
seonghobae Sep 1, 2026
84e205d
test(ci): specify explicit runner admission contract
seonghobae Sep 1, 2026
65ad7df
fix(ci): pin Product runner to Ubuntu 24.04
seonghobae Sep 1, 2026
625dae5
fix(ci): use pinned nightly for branch coverage
seonghobae Sep 1, 2026
616db91
test(governance): require authority before steward review
seonghobae Sep 1, 2026
d5b8120
fix(governance): close unauthorized publication state escalation
seonghobae Sep 1, 2026
e704ce5
style(rust): apply governance boundary formatting
seonghobae Sep 1, 2026
17a0662
chore(ci): expose exact coverage gaps
seonghobae Sep 1, 2026
f9876c6
test: cover draft publication eligibility branch
seonghobae Sep 1, 2026
bf9c07c
fix: format publication eligibility regression
seonghobae Sep 1, 2026
682d351
chore(ci): report exact uncovered branch coordinates
seonghobae Sep 1, 2026
3510c17
fix(ci): aggregate branch outcomes by source condition
seonghobae Sep 1, 2026
0305f1c
fix: make governance coverage branches reachable
seonghobae Sep 1, 2026
5cd7d1d
fix(ci): clean coverage evidence before tree check
seonghobae Sep 1, 2026
bba351b
docs(gap): record merged central runner repair
seonghobae Sep 1, 2026
4c38a90
docs(gap): refresh live semantic engineering baseline
seonghobae Sep 4, 2026
447aa07
docs(gap): correct live evidence coordinates
seonghobae Sep 4, 2026
1264b51
docs(research): bind structural-context alignment evidence
seonghobae Sep 4, 2026
e1b0eaa
test(doctoring): require authoritative records for adopted alignment …
seonghobae Sep 4, 2026
707e687
test(doctoring): bind authoritative publication years
seonghobae Sep 4, 2026
b69f6e7
docs: refresh live semantic engineering baseline
seonghobae Sep 4, 2026
17d6041
docs(doctoring): add authoritative alignment bibliography records
seonghobae Sep 4, 2026
a8b95a3
docs: refresh product technical gap baseline after doctoring repair
seonghobae Sep 4, 2026
1824965
test(contract): reject truth-state mismatch before publication
seonghobae Sep 4, 2026
9a6aa93
fix(contract): align public truth status with publication state
seonghobae Sep 4, 2026
a379c72
docs: refresh gap baseline after truth-state contract repair
seonghobae Sep 4, 2026
8e87832
ci(actions): isolate superseded pull request runs (#14)
seonghobae Sep 4, 2026
5cdd319
ci(actions): skip draft pull request jobs
seonghobae Sep 4, 2026
b538470
docs(gap): refresh live ConceptWeave authority and dependency-review RCA
seonghobae Sep 5, 2026
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
99 changes: 99 additions & 0 deletions .github/workflows/product.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Product

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review, converted_to_draft, closed]
push:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.repository }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

permissions:
contents: read

jobs:
rust-quality:
if: ${{ github.event_name != 'pull_request' || (github.event.action != 'closed' && github.event.pull_request.draft == false) }}
runs-on: ubuntu-24.04
env:
COVERAGE_TOOLCHAIN: nightly-2026-08-20
steps:
- name: Checkout exact source revision
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0
persist-credentials: false

- name: Verify exact source revision
env:
EXPECTED_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: test "$(git rev-parse HEAD)" = "$EXPECTED_SHA"

- name: Validate Product CI contract
run: python3 scripts/check_ci_contract.py

- name: Show pinned Rust toolchain
run: rustc --version && cargo --version

- name: Format
run: cargo fmt --all --check

- name: Clippy
run: cargo clippy --workspace --all-targets -- -D warnings

- name: Test
run: cargo test --workspace

- name: Public documentation
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --workspace --no-deps

- name: Install cargo-llvm-cov
uses: taiki-e/install-action@1ed6d7be6168f6c9046541087ff549b6bc581fdf # v2.87.2
with:
tool: cargo-llvm-cov

- name: Install pinned branch-coverage toolchain
run: rustup toolchain install "$COVERAGE_TOOLCHAIN" --profile minimal --component llvm-tools-preview

- name: Exact owned coverage
run: ./scripts/check_coverage.sh

- name: Validate public JSON contract
run: |
npx --yes ajv-cli@5.0.0 compile \
--spec=draft2020 \
-s contracts/semantic-candidate.schema.json
npx --yes ajv-cli@5.0.0 test \
--spec=draft2020 \
-s contracts/semantic-candidate.schema.json \
-d contracts/fixtures/semantic-candidate.valid.json \
--valid
npx --yes ajv-cli@5.0.0 test \
--spec=draft2020 \
-s contracts/semantic-candidate.schema.json \
-d contracts/fixtures/semantic-candidate.invalid-whitespace.json \
--invalid
npx --yes ajv-cli@5.0.0 test \
--spec=draft2020 \
-s contracts/semantic-candidate.schema.json \
-d contracts/fixtures/semantic-candidate.invalid-published-truth.json \
--invalid
npx --yes ajv-cli@5.0.0 test \
--spec=draft2020 \
-s contracts/semantic-candidate.schema.json \
-d contracts/fixtures/semantic-candidate.invalid-state-truth-mismatch.json \
--invalid

- name: Lockfile freshness
run: |
cargo generate-lockfile --locked
git ls-files --error-unmatch Cargo.lock >/dev/null
test -z "$(git status --porcelain=v1 --untracked-files=all -- Cargo.lock)"

- name: Clean working tree
run: test -z "$(git status --porcelain=v1 --untracked-files=all)"
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/target
*.profraw
coverage.json
.DS_Store
23 changes: 23 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# AGENTS.md — ConceptWeave

Read the organization `ContextualWisdomLab/.github` master context and product goal directive before material work. Live GitHub state and this repository's accepted ADRs override remembered chat state.

## Product boundary

ConceptWeave owns automatic, evidence-bound **Semantic Model Engineering**. Do not turn it into a semantic catalog, lineage engine, generic LLM gateway, browser crawler, or another product's system of record.

## Development rules

- Apply DDD continuously; maintain the Context Map and Ubiquitous Language.
- Rust 1.98.0 is the production baseline for core logic. Production mathematical/vector/model-scoring computation, if introduced, remains Rust-first.
- `conceptweave-domain` has no provider/network/database dependencies.
- External products and providers enter through versioned ports and Anti-Corruption Layers.
- LLM work uses `contextual-orchestrator`; model output is proposal evidence, never semantic authority.
- No direct cross-service application-table SQL.
- New database objects, when introduced, use descriptive two-or-more-word `snake_case` names and 3NF by default.
- Preserve source evidence, truth status, and publication state separately.
- Published semantic truth is immutable; correction uses supersession/new release.
- Public Rust APIs require beginner-readable documentation.
- Owned production coverage target is 100% line/function/region/branch where tooling exposes it.
- Never suppress deprecation warnings; fix causes.
- Never force-push shared branches, self-approve, fabricate checks, or weaken branch protection.
77 changes: 77 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# ConceptWeave Architecture

## Product responsibility

ConceptWeave owns the process that turns observed enterprise evidence into governed semantic-model releases. It does not own source-system truth or downstream catalog/query experiences.

```mermaid
flowchart LR
S[Source systems and artifacts] --> O[Source Observation]
O --> D[Semantic Discovery]
D --> V[Model Validation]
V --> G[Governance & Publication]
G --> P[Versioned semantic release]

CO[contextual-orchestrator] -. proposal assistance .-> D
LW[LineageWeave] -. inferred/proposed lineage .-> O
CG[context-graph-contracts] -. shared graph/provenance contracts .-> P
P --> SDP[semantic-data-portal]
P --> GRC[governance-risk-compliance]
P --> EA[enterprise-architecture-core]
```

## DDD context map

| Context | Type | Owns | Does not own |
| --- | --- | --- | --- |
| Source Observation | Supporting | immutable observations, parser receipts, evidence locations | source-system business truth |
| Semantic Discovery | Core | candidate generation and evidence binding | publication authority |
| Model Validation | Supporting | deterministic validation reports | human review decisions |
| Governance & Publication | Core | proposal lifecycle, review receipts, releases, supersession | catalog/search runtime |
| Interoperability | Supporting | versioned import/export and ACL adapters | foreign product internals |

## Aggregate boundaries

### SemanticCandidate

Smallest consistency boundary for a single proposed semantic artifact and its evidence-bound publication state. It cannot jump directly from Draft to Published.

### SemanticModelRelease (planned)

Immutable publication aggregate containing approved candidate identities, release version, artifact digests, validation receipts, reviewer receipts, and supersession metadata. It will reference candidates rather than copy foreign source records.

## Truth model

- `observed`: exact source fact;
- `inferred`: derived candidate;
- `proposed`: submitted for governance;
- `authoritative`: explicitly reviewed and published;
- `superseded`: formerly authoritative and replaced;
- `rejected`: explicitly rejected.

Truth status and publication workflow are distinct. A source observation can be authoritative in its source domain without making an inferred semantic interpretation authoritative.

## Integration boundaries

- `contextual-orchestrator`: LLM/model routing only.
- `LineageWeave`: inferred/proposed lineage evidence only.
- `semantic-data-portal`: published semantic artifact consumer/governance/catalog plane; it is not ConceptWeave's internal database.
- `context-graph-contracts`: shared cross-product identifiers, truth/provenance/event contracts where adopted.
- Keyverse: future identity/tenant authentication boundary.

No direct cross-service application-table SQL is permitted.

## Foundation directory structure

```text
crates/
conceptweave-domain/ # Core domain contract only
contracts/ # Versioned public schemas
docs/
adr/ # Binding architecture decisions
doctoring/ # Standards/research evidence
scripts/ # Deterministic repository-quality helpers
.github/workflows/ # CI evidence
```

Adapters and application services are added only when their bounded responsibility exists; generic `utils`, `helpers`, or `services` dumping grounds are prohibited.
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Changelog

All notable changes to ConceptWeave are documented here.

## Unreleased

### Added

- Initial ConceptWeave product, DDD, security, test, and operability baselines.
- Rust 1.98.0 `conceptweave-domain` foundation with evidence-bound semantic candidate contracts.
- Fail-closed Draft -> Proposed -> Validated -> Reviewed -> Published lifecycle with explicit rejection and supersession.
- Draft 2020-12 JSON Schema for the semantic-candidate public contract.
- Standards and research doctoring covering stable W3C ontology standards, 2026 RDF/SHACL work in progress, Apache Ossie, and recent LLM ontology-engineering research.

### Security

- Model-generated semantics remain non-authoritative until deterministic validation and authorized review.
- Unsafe Rust is forbidden in the core domain crate.
7 changes: 7 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# CLAUDE.md — ConceptWeave

Follow `AGENTS.md`, `ARCHITECTURE.md`, accepted ADRs, and the organization master context before making changes.

ConceptWeave's core invariant is: **inference is not authority**. Every generated concept, relation, constraint, dimension, measure, or physical mapping must retain evidence and pass the explicit governance lifecycle before publication.

Keep domain logic in bounded domain modules, LLM/provider logic behind ports/adapters, and source/consumer systems independent. Prefer deterministic validation and explicit abstention over plausible unsupported output.
7 changes: 7 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[workspace]
members = ["crates/conceptweave-domain"]
resolver = "2"

[workspace.package]
version = "0.1.0"
edition = "2024"
rust-version = "1.98"
repository = "https://github.com/ContextualWisdomLab/ConceptWeave"
license = "Apache-2.0"
Loading
Loading