Skip to content

Commit 7e82aa8

Browse files
authored
Merge pull request #29 from tigrbl/codex/split-tigrcorn-into-packages
Add governed workspace package boundaries for Tigrcorn
2 parents 0f0035e + ec82fd4 commit 7e82aa8

864 files changed

Lines changed: 52339 additions & 67617 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
.git
2+
.venv
3+
.pytest_cache
4+
.tmp
5+
.uv-cache
6+
__pycache__
7+
*.py[cod]
8+
tmp*
9+
dist
10+
build
11+
*.egg-info

.github/workflows/_reusable-ci.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,22 @@ jobs:
2323
python-version: ${{ matrix.python-version }}
2424
- name: Upgrade pip
2525
run: python -m pip install --upgrade pip
26+
- name: Install workspace packages
27+
run: |
28+
python -m pip install \
29+
-e pkgs/tigrcorn-core \
30+
-e pkgs/tigrcorn-config \
31+
-e pkgs/tigrcorn-asgi \
32+
-e pkgs/tigrcorn-contract \
33+
-e pkgs/tigrcorn-transports \
34+
-e pkgs/tigrcorn-protocols \
35+
-e pkgs/tigrcorn-http \
36+
-e pkgs/tigrcorn-security \
37+
-e pkgs/tigrcorn-runtime \
38+
-e pkgs/tigrcorn-static \
39+
-e pkgs/tigrcorn-observability \
40+
-e pkgs/tigrcorn-compat \
41+
-e pkgs/tigrcorn-certification
2642
- name: Install project
2743
run: python -m pip install -e ".[certification,dev]"
2844
- name: Validate tree

.github/workflows/docs.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,22 @@ jobs:
2626
uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38
2727
with:
2828
python-version: "3.12"
29+
- name: Install workspace packages
30+
run: |
31+
python -m pip install \
32+
-e pkgs/tigrcorn-core \
33+
-e pkgs/tigrcorn-config \
34+
-e pkgs/tigrcorn-asgi \
35+
-e pkgs/tigrcorn-contract \
36+
-e pkgs/tigrcorn-transports \
37+
-e pkgs/tigrcorn-protocols \
38+
-e pkgs/tigrcorn-http \
39+
-e pkgs/tigrcorn-security \
40+
-e pkgs/tigrcorn-runtime \
41+
-e pkgs/tigrcorn-static \
42+
-e pkgs/tigrcorn-observability \
43+
-e pkgs/tigrcorn-compat \
44+
-e pkgs/tigrcorn-certification
2945
- name: Install project
3046
run: python -m pip install -e ".[certification,dev]"
3147
- name: Generate release automation pages

.github/workflows/phase9-certification-release.yml

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: phase9-certification-release
1+
name: Release Certification
22

33
on:
44
workflow_dispatch:
@@ -15,7 +15,8 @@ on:
1515
- 'docs/review/conformance/state/CURRENT_REPOSITORY_STATE.md'
1616

1717
jobs:
18-
certification-environment-and-phase9-checkpoints:
18+
certification-environment-and-release-checkpoints:
19+
name: Certification Environment and Release Checkpoints (${{ matrix.python-version }})
1920
runs-on: ubuntu-latest
2021
environment: staging
2122
permissions:
@@ -37,6 +38,23 @@ jobs:
3738
- name: Upgrade pip
3839
run: python -m pip install -U pip
3940

41+
- name: Install workspace packages
42+
run: |
43+
python -m pip install \
44+
-e pkgs/tigrcorn-core \
45+
-e pkgs/tigrcorn-config \
46+
-e pkgs/tigrcorn-asgi \
47+
-e pkgs/tigrcorn-contract \
48+
-e pkgs/tigrcorn-transports \
49+
-e pkgs/tigrcorn-protocols \
50+
-e pkgs/tigrcorn-http \
51+
-e pkgs/tigrcorn-security \
52+
-e pkgs/tigrcorn-runtime \
53+
-e pkgs/tigrcorn-static \
54+
-e pkgs/tigrcorn-observability \
55+
-e pkgs/tigrcorn-compat \
56+
-e pkgs/tigrcorn-certification
57+
4058
- name: Install certification dependencies
4159
run: python -m pip install -e ".[certification,dev]"
4260

@@ -64,7 +82,7 @@ jobs:
6482
run: |
6583
python -m compileall -q src benchmarks tools
6684
PYTHONPATH=src pytest -q \
67-
tests/test_phase9i_release_assembly_checkpoint.py \
85+
tests/test_release_assembly_checkpoint.py \
6886
tests/test_release_gates.py \
6987
tests/test_certification_environment_freeze.py \
7088
tests/test_aioquic_adapter_preflight.py

.github/workflows/publish-pypi.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,22 @@ jobs:
2727
python-version: "3.12"
2828
- name: Upgrade pip
2929
run: python -m pip install --upgrade pip
30+
- name: Install workspace packages
31+
run: |
32+
python -m pip install \
33+
-e pkgs/tigrcorn-core \
34+
-e pkgs/tigrcorn-config \
35+
-e pkgs/tigrcorn-asgi \
36+
-e pkgs/tigrcorn-contract \
37+
-e pkgs/tigrcorn-transports \
38+
-e pkgs/tigrcorn-protocols \
39+
-e pkgs/tigrcorn-http \
40+
-e pkgs/tigrcorn-security \
41+
-e pkgs/tigrcorn-runtime \
42+
-e pkgs/tigrcorn-static \
43+
-e pkgs/tigrcorn-observability \
44+
-e pkgs/tigrcorn-compat \
45+
-e pkgs/tigrcorn-certification
3046
- name: Install project
3147
run: python -m pip install -e ".[certification,dev]" build
3248
- name: Build certification and release metadata

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
*.pyc
22
/src/tigrcorn.egg-info
3+
/pkgs/*/src/*.egg-info
34
/.tmp

.ssot/MUT.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
{
2-
"state": "mutable",
3-
"scope": "repo_ssot_root",
4-
"reason": "Repo-local canonical machine-readable registry and derived validation outputs."
5-
}
1+
{"reason":"Repo-local canonical machine-readable registry and derived validation outputs.","scope":"repo_ssot_root","state":"mutable"}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
schema_version: "0.2.0"
2+
kind: "adr"
3+
id: "adr:0615"
4+
number: 615
5+
slug: "downstream-assurance-language-ceilings"
6+
title: "Downstream assurance-language ceilings for feature target claim tiers"
7+
status: "accepted"
8+
origin: "ssot-origin"
9+
decision_date: null
10+
tags: []
11+
summary: "SSOT downstream repositories use feature target claim tiers, linked claims, tests, and evidence to describe what a system can responsibly claim about a feature. The shared `T0` through `T4` tiers describe assurance strength, but downstream reports, release notes, README content, generated summaries, and certification artifacts also need a common language ceiling so weakly evidenced features are not described with stronger assurance language than their proof chains support."
12+
supersedes: []
13+
superseded_by: []
14+
status_notes: []
15+
references: []
16+
body: |-
17+
## Context
18+
19+
SSOT downstream repositories use feature target claim tiers, linked claims, tests, and evidence to describe what a system can responsibly claim about a feature. The shared `T0` through `T4` tiers describe assurance strength, but downstream reports, release notes, README content, generated summaries, and certification artifacts also need a common language ceiling so weakly evidenced features are not described with stronger assurance language than their proof chains support.
20+
21+
This ADR is an `ssot-origin` decision. It is intended to apply to downstream repositories that synchronize and conform to SSOT origin documents, not only to the `ssot-registry` package repository.
22+
23+
## Decision
24+
25+
Downstream SSOT repositories must treat each feature's effective target claim tier as the ceiling for assurance language used in SSOT-controlled outputs. A feature may be described with language from its effective tier or any weaker tier. It must not be described with stronger language unless a linked claim passes claim-closure checks at the stronger tier and the feature evaluation requires or accepts that stronger tier.
26+
27+
The effective tier is resolved by the applicable evaluation policy. For direct feature evaluation, use `feature.plan.target_claim_tier`. For profile evaluation, use the feature target tier when present, otherwise the profile claim tier when the profile policy permits that fallback. If no effective tier can be resolved, downstream tooling must fail closed and must not emit assurance claims stronger than inventory-level language.
28+
29+
Acceptable language by tier:
30+
31+
| Tier | Assurance ceiling | Acceptable claims language |
32+
|---|---|---|
33+
| `T0` | Declared intent or inventory-level | declared, tracked, intended, planned, in scope, inventory-level support |
34+
| `T1` | Maintainer-asserted with local evidence | maintainer-asserted, locally evidenced, supported by local evidence, observed in maintainer-run checks |
35+
| `T2` | Reproducible project-controlled verification | reproducibly verified, project-verified, verified by project-controlled tests or CI, repeatably validated |
36+
| `T3` | Release-grade certified claim | release-certified, release-grade verified, certified for a named release or frozen boundary |
37+
| `T4` | Independently reviewed or externally attested claim | independently reviewed, externally attested, third-party validated, validated by a named external source or artifact |
38+
39+
Disallowed escalations:
40+
41+
- `T0` features must not be described as working, verified, tested, certified, or attested.
42+
- `T1` features must not be described as reproducibly verified, release-certified, or independently reviewed.
43+
- `T2` features must not be described as release-certified or independently reviewed.
44+
- `T3` features must not be described as independently reviewed or externally attested unless `T4` evidence exists.
45+
46+
Canonical wording templates:
47+
48+
- `T0`: Feature `<id>` is declared in scope for `<capability>`.
49+
- `T1`: Maintainers assert that feature `<id>` supports `<capability>`, backed by local evidence `<evidence-id>`.
50+
- `T2`: Feature `<id>` is reproducibly verified by project-controlled checks for `<capability>`.
51+
- `T3`: Feature `<id>` is release-certified for `<release-or-boundary>` with passing claim closure at tier `T3` or higher.
52+
- `T4`: Feature `<id>` is independently reviewed or externally attested for `<capability>` by `<source-or-artifact>`.
53+
54+
Claim status remains orthogonal to claim tier. Status may describe lifecycle progress, but it does not authorize stronger assurance language. Evidence tier alignment, linked test status, and feature target tier evaluation remain the enforcement mechanisms for whether stronger language is valid.
55+
56+
## Consequences
57+
58+
Downstream generated summaries, READMEs, release notes, certification reports, review comments, and human-authored SSOT-controlled documentation must choose assurance language from the feature's effective tier or a weaker tier.
59+
60+
Downstream projects may adopt stricter vocabulary, additional review gates, or domain-specific phrasing, but they must not permit stronger assurance wording than the feature's passing proof chain supports.
61+
62+
Reviewers and automation should treat over-strong assurance language as a policy defect even when the underlying feature is implemented.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
schema_version: "0.1.0"
2+
kind: "adr"
3+
id: "adr:1032"
4+
number: 1032
5+
slug: "package-workspace-boundaries"
6+
title: "Split Tigrcorn into governed workspace packages"
7+
status: "accepted"
8+
origin: "repo-local"
9+
decision_date: null
10+
tags: []
11+
summary: "Decision: Tigrcorn shall remain a stable umbrella package while implementation migrates into governed workspace packages with one-way dependencies."
12+
supersedes: []
13+
superseded_by: []
14+
status_notes: []
15+
references: []
16+
body: |-
17+
# ADR 1032 - Package workspace boundaries
18+
19+
Decision: Tigrcorn shall remain a stable umbrella package while implementation migrates into governed workspace packages with one-way dependencies.
20+
21+
The monolithic package shape makes long-term protocol, transport, runtime, compatibility, and certification work harder to evolve independently. The project shall use a monorepo workspace so implementation can be split into publishable packages without forcing separate repositories.
22+
23+
Package ownership:
24+
25+
- `tigrcorn-core` owns dependency-light constants, exceptions, and type aliases.
26+
- `tigrcorn-config`, `tigrcorn-http`, and `tigrcorn-asgi` own reusable lower-layer surfaces.
27+
- `tigrcorn-contract`, `tigrcorn-transports`, and `tigrcorn-security` own runtime-adjacent adapters and primitives.
28+
- `tigrcorn-protocols`, `tigrcorn-static`, and `tigrcorn-observability` own feature families above those primitives.
29+
- `tigrcorn-runtime` composes server runtime behavior.
30+
- `tigrcorn-compat` and `tigrcorn-certification` remain leaf packages.
31+
- `tigrcorn` remains the umbrella public install and compatibility facade.
32+
33+
Consequences:
34+
35+
- Lower layers must not import higher layers.
36+
- Optional dependencies belong to the package that owns the optional surface.
37+
- Existing public `tigrcorn.*` imports remain stable through compatibility shims during migration.
38+
- New implementation work shall target the package that owns the capability.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
schema_version: "0.1.0"
2+
kind: "adr"
3+
id: "adr:1033"
4+
number: 1033
5+
slug: "protocol-scope-fixtures"
6+
title: "Require protocol and scope fixtures"
7+
status: "accepted"
8+
origin: "repo-local"
9+
decision_date: null
10+
tags: []
11+
summary: "Decision: every supported Tigrcorn protocol and ASGI scope type shall have a named fixture with explicit coverage."
12+
supersedes: []
13+
superseded_by: []
14+
status_notes: []
15+
references: []
16+
body: |-
17+
# ADR 1033 - Protocol and scope fixtures
18+
19+
Decision: every supported Tigrcorn protocol and ASGI scope type shall have a named fixture with explicit coverage.
20+
21+
Tigrcorn supports several runtime surfaces that can regress independently: HTTP/1.1, HTTP/2, HTTP/3, QUIC, WebSocket, WebTransport, lifespan, custom scopes, and raw-framed/custom protocol paths. These surfaces need durable fixtures so conformance, interoperability, and demo work have stable entry points instead of one-off test setup.
22+
23+
Fixture policy:
24+
25+
- Each supported protocol or scope type shall have one fixture feature in the SSOT registry.
26+
- Each fixture feature shall identify the fixture artifact and its coverage tests.
27+
- Fixture artifacts may be example apps, test fixture clients, or protocol-specific helper modules.
28+
- Fixture tests shall fail when a fixture artifact is missing or no coverage path is declared.
29+
- Fixture coverage shall remain separate from support claims; a fixture can exist before full runtime support is complete.
30+
31+
Consequences:
32+
33+
- Adding a new supported protocol or scope type requires adding a fixture row, SSOT feature, and test linkage.
34+
- Removing or renaming a fixture requires updating the manifest and SSOT linkage in the same change.
35+
- Certification and local debugging can use the fixture manifest as the stable operator inventory.

0 commit comments

Comments
 (0)