consiliency-contract 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. consiliency_contract-0.1.0/.github/workflows/publish.yml +66 -0
  2. consiliency_contract-0.1.0/.gitignore +147 -0
  3. consiliency_contract-0.1.0/LICENSE +21 -0
  4. consiliency_contract-0.1.0/PKG-INFO +68 -0
  5. consiliency_contract-0.1.0/README.md +56 -0
  6. consiliency_contract-0.1.0/conformance/vectors/canonical-html-contract-loaded.json +15 -0
  7. consiliency_contract-0.1.0/conformance/vectors/interface-invalid-host-path.json +26 -0
  8. consiliency_contract-0.1.0/conformance/vectors/interface-valid-realized-and-promised.json +36 -0
  9. consiliency_contract-0.1.0/conformance/vectors/loop-gate-invalid-blocking-default.json +15 -0
  10. consiliency_contract-0.1.0/conformance/vectors/loop-gate-missing-doc-warns.json +16 -0
  11. consiliency_contract-0.1.0/conformance/vectors/manifest-invalid-absolute-path.json +20 -0
  12. consiliency_contract-0.1.0/conformance/vectors/manifest-invalid-certified-maturity.json +20 -0
  13. consiliency_contract-0.1.0/conformance/vectors/manifest-invalid-path-and-ref.json +20 -0
  14. consiliency_contract-0.1.0/conformance/vectors/manifest-invalid-unknown-archetype.json +18 -0
  15. consiliency_contract-0.1.0/conformance/vectors/manifest-valid-baseline-only.json +20 -0
  16. consiliency_contract-0.1.0/conformance/vectors/manifest-valid-product.json +21 -0
  17. consiliency_contract-0.1.0/conformance/vectors/version-skew-compatible.json +15 -0
  18. consiliency_contract-0.1.0/conformance/vectors/version-skew-incompatible-warns.json +15 -0
  19. consiliency_contract-0.1.0/consiliency_contract/__init__.py +64 -0
  20. consiliency_contract-0.1.0/core/canonical-html/contract-v1.json +459 -0
  21. consiliency_contract-0.1.0/core/canonical-html/provenance.json +22 -0
  22. consiliency_contract-0.1.0/core/contract.json +45 -0
  23. consiliency_contract-0.1.0/core/registries/archetypes.json +62 -0
  24. consiliency_contract-0.1.0/core/registries/document-classes.json +33 -0
  25. consiliency_contract-0.1.0/core/registries/maturity-labels.json +22 -0
  26. consiliency_contract-0.1.0/core/registries/required-documents.json +74 -0
  27. consiliency_contract-0.1.0/core/schemas/canonical-html-v1.schema.json +15 -0
  28. consiliency_contract-0.1.0/core/schemas/contract-version-status.schema.json +26 -0
  29. consiliency_contract-0.1.0/core/schemas/decision.schema.json +26 -0
  30. consiliency_contract-0.1.0/core/schemas/interface-declaration.schema.json +67 -0
  31. consiliency_contract-0.1.0/core/schemas/loop-gate-protocol.schema.json +25 -0
  32. consiliency_contract-0.1.0/core/schemas/loop-gate-scenario.schema.json +25 -0
  33. consiliency_contract-0.1.0/core/schemas/manifest.schema.json +97 -0
  34. consiliency_contract-0.1.0/core/schemas/version-skew-protocol.schema.json +32 -0
  35. consiliency_contract-0.1.0/core/schemas/version-skew-scenario.schema.json +13 -0
  36. consiliency_contract-0.1.0/docs/design/CS-0.2-contract-content-design.md +296 -0
  37. consiliency_contract-0.1.0/package.json +40 -0
  38. consiliency_contract-0.1.0/pyproject.toml +27 -0
  39. consiliency_contract-0.1.0/scripts/python_dump.py +32 -0
  40. consiliency_contract-0.1.0/src/index.d.ts +8 -0
  41. consiliency_contract-0.1.0/src/index.js +48 -0
  42. consiliency_contract-0.1.0/tests/contract.test.mjs +124 -0
  43. consiliency_contract-0.1.0/tests/package-content.test.mjs +31 -0
  44. consiliency_contract-0.1.0/tests/test_contract.py +50 -0
@@ -0,0 +1,66 @@
1
+ name: publish
2
+
3
+ # Tokenless dual publish via OIDC trusted publishing.
4
+ # - npm: requires the package's Trusted Publisher to be configured on npmjs.com
5
+ # (only possible after the first publish exists — bootstrapped locally).
6
+ # - PyPI: uses the pending/trusted publisher already registered, gated on the
7
+ # `pypi` GitHub environment.
8
+ on:
9
+ release:
10
+ types: [published]
11
+ workflow_dispatch:
12
+
13
+ jobs:
14
+ verify:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: actions/setup-node@v4
21
+ with:
22
+ node-version: "22.14.0"
23
+ registry-url: "https://registry.npmjs.org"
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.12"
27
+ - run: python -m pip install --upgrade build
28
+ - run: npm test
29
+ - run: python -m unittest discover -s tests -p 'test_*.py'
30
+
31
+ publish-npm:
32
+ needs: verify
33
+ runs-on: ubuntu-latest
34
+ permissions:
35
+ id-token: write # npm OIDC trusted publishing (no NODE_AUTH_TOKEN)
36
+ contents: read
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+ - uses: actions/setup-node@v4
40
+ with:
41
+ node-version: "22.14.0"
42
+ registry-url: "https://registry.npmjs.org"
43
+ - uses: actions/setup-python@v5
44
+ with:
45
+ python-version: "3.12"
46
+ - run: python -m pip install --upgrade build
47
+ - run: npm install -g npm@latest # ensure an OIDC-capable npm (>= 11.5)
48
+ - run: npm test
49
+ - run: npm publish
50
+
51
+ publish-pypi:
52
+ needs: verify
53
+ runs-on: ubuntu-latest
54
+ environment: pypi
55
+ permissions:
56
+ id-token: write # PyPI OIDC trusted publishing (no API token)
57
+ contents: read
58
+ steps:
59
+ - uses: actions/checkout@v4
60
+ - uses: actions/setup-python@v5
61
+ with:
62
+ python-version: "3.12"
63
+ - run: python -m pip install --upgrade build
64
+ - run: python -m unittest discover -s tests -p 'test_*.py'
65
+ - run: python -m build
66
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,147 @@
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ lerna-debug.log*
8
+
9
+ # Python
10
+ __pycache__/
11
+ *.py[cod]
12
+
13
+ # Diagnostic reports (https://nodejs.org/api/report.html)
14
+ report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
15
+
16
+ # Runtime data
17
+ pids
18
+ *.pid
19
+ *.seed
20
+ *.pid.lock
21
+
22
+ # Directory for instrumented libs generated by jscoverage/JSCover
23
+ lib-cov
24
+
25
+ # Coverage directory used by tools like istanbul
26
+ coverage
27
+ *.lcov
28
+
29
+ # nyc test coverage
30
+ .nyc_output
31
+
32
+ # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
33
+ .grunt
34
+
35
+ # Bower dependency directory (https://bower.io/)
36
+ bower_components
37
+
38
+ # node-waf configuration
39
+ .lock-wscript
40
+
41
+ # Compiled binary addons (https://nodejs.org/api/addons.html)
42
+ build/Release
43
+
44
+ # Dependency directories
45
+ node_modules/
46
+ jspm_packages/
47
+
48
+ # Snowpack dependency directory (https://snowpack.dev/)
49
+ web_modules/
50
+
51
+ # TypeScript cache
52
+ *.tsbuildinfo
53
+
54
+ # Optional npm cache directory
55
+ .npm
56
+
57
+ # Optional eslint cache
58
+ .eslintcache
59
+
60
+ # Optional stylelint cache
61
+ .stylelintcache
62
+
63
+ # Optional REPL history
64
+ .node_repl_history
65
+
66
+ # Output of 'npm pack'
67
+ *.tgz
68
+
69
+ # Yarn Integrity file
70
+ .yarn-integrity
71
+
72
+ # dotenv environment variable files
73
+ .env
74
+ .env.*
75
+ !.env.example
76
+
77
+ # parcel-bundler cache (https://parceljs.org/)
78
+ .cache
79
+ .parcel-cache
80
+
81
+ # Next.js build output
82
+ .next
83
+ out
84
+
85
+ # Nuxt.js build / generate output
86
+ .nuxt
87
+ dist
88
+ .output
89
+
90
+ # Gatsby files
91
+ .cache/
92
+ # Comment in the public line in if your project uses Gatsby and not Next.js
93
+ # https://nextjs.org/blog/next-9-1#public-directory-support
94
+ # public
95
+
96
+ # vuepress build output
97
+ .vuepress/dist
98
+
99
+ # vuepress v2.x temp directory
100
+ .temp
101
+
102
+ # Sveltekit cache directory
103
+ .svelte-kit/
104
+
105
+ # vitepress build output
106
+ **/.vitepress/dist
107
+
108
+ # vitepress cache directory
109
+ **/.vitepress/cache
110
+
111
+ # Docusaurus cache and generated files
112
+ .docusaurus
113
+
114
+ # Serverless directories
115
+ .serverless/
116
+
117
+ # FuseBox cache
118
+ .fusebox/
119
+
120
+ # DynamoDB Local files
121
+ .dynamodb/
122
+
123
+ # Firebase cache directory
124
+ .firebase/
125
+
126
+ # TernJS port file
127
+ .tern-port
128
+
129
+ # Stores VSCode versions used for testing VSCode extensions
130
+ .vscode-test
131
+
132
+ # pnpm
133
+ .pnpm-store
134
+
135
+ # yarn v3
136
+ .pnp.*
137
+ .yarn/*
138
+ !.yarn/patches
139
+ !.yarn/plugins
140
+ !.yarn/releases
141
+ !.yarn/sdks
142
+ !.yarn/versions
143
+
144
+ # Vite files
145
+ vite.config.js.timestamp-*
146
+ vite.config.ts.timestamp-*
147
+ .vite/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 The Consiliency
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,68 @@
1
+ Metadata-Version: 2.4
2
+ Name: consiliency-contract
3
+ Version: 0.1.0
4
+ Summary: Consiliency cross-repo contract package: shared JSON contract data, conformance vectors, and thin npm/PyPI readers.
5
+ Project-URL: Homepage, https://github.com/Consiliency/consiliency-contract
6
+ Project-URL: Issues, https://github.com/Consiliency/consiliency-contract/issues
7
+ License: MIT
8
+ License-File: LICENSE
9
+ Keywords: canonical-html,consiliency,contract,standardization
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+
13
+ # @consiliency/contract
14
+
15
+ The Consiliency cross-repo **contract package** — the single, neutral rulebook that
16
+ `agent-harness` and `governed-pipeline` vendor (owned by neither). It defines:
17
+
18
+ - the `.consiliency/` layout + manifest schema
19
+ - the **archetype registry** — `product` / `service` / `library` / `infra` / `tooling-meta` / `experiment` / `document`, plus modifiers (`data-bearing` / `public` / `regulated` / `user-facing`), with `baseline-only` as a legal declaration
20
+ - the required-document sets per archetype (the 7 document classes)
21
+ - the interface-declaration schema (realized + promised cross-repo edges)
22
+ - the loop-gate protocol (presence / freshness / integrity / version-skew)
23
+ - the `canonical_html.v1` display schema
24
+ - the version-skew protocol
25
+
26
+ Dual-published: **npm** [`@consiliency/contract`](https://www.npmjs.com/package/@consiliency/contract) + **PyPI** [`consiliency-contract`](https://pypi.org/project/consiliency-contract/), from shared JSON data + conformance vectors so the two language readers stay byte-identical.
27
+
28
+ > **Status — `0.1.0` carries the first normative Phase-0 L0 contract content.**
29
+ > The shared JSON data lives under `core/` and `conformance/`; npm and PyPI
30
+ > readers are intentionally thin loaders over those same bytes.
31
+
32
+ ## Reader API
33
+
34
+ JavaScript:
35
+
36
+ ```js
37
+ import {
38
+ CONTRACT,
39
+ CONTRACT_VERSION,
40
+ listVectors,
41
+ loadContract,
42
+ loadRegistry,
43
+ loadSchema,
44
+ loadVector,
45
+ } from "@consiliency/contract";
46
+ ```
47
+
48
+ Python:
49
+
50
+ ```python
51
+ from consiliency_contract import (
52
+ CONTRACT,
53
+ CONTRACT_VERSION,
54
+ list_vectors,
55
+ load_contract,
56
+ load_registry,
57
+ load_schema,
58
+ load_vector,
59
+ )
60
+ ```
61
+
62
+ ## Verification
63
+
64
+ ```sh
65
+ npm test
66
+ python -m unittest discover -s tests -p 'test_*.py'
67
+ python -m build
68
+ ```
@@ -0,0 +1,56 @@
1
+ # @consiliency/contract
2
+
3
+ The Consiliency cross-repo **contract package** — the single, neutral rulebook that
4
+ `agent-harness` and `governed-pipeline` vendor (owned by neither). It defines:
5
+
6
+ - the `.consiliency/` layout + manifest schema
7
+ - the **archetype registry** — `product` / `service` / `library` / `infra` / `tooling-meta` / `experiment` / `document`, plus modifiers (`data-bearing` / `public` / `regulated` / `user-facing`), with `baseline-only` as a legal declaration
8
+ - the required-document sets per archetype (the 7 document classes)
9
+ - the interface-declaration schema (realized + promised cross-repo edges)
10
+ - the loop-gate protocol (presence / freshness / integrity / version-skew)
11
+ - the `canonical_html.v1` display schema
12
+ - the version-skew protocol
13
+
14
+ Dual-published: **npm** [`@consiliency/contract`](https://www.npmjs.com/package/@consiliency/contract) + **PyPI** [`consiliency-contract`](https://pypi.org/project/consiliency-contract/), from shared JSON data + conformance vectors so the two language readers stay byte-identical.
15
+
16
+ > **Status — `0.1.0` carries the first normative Phase-0 L0 contract content.**
17
+ > The shared JSON data lives under `core/` and `conformance/`; npm and PyPI
18
+ > readers are intentionally thin loaders over those same bytes.
19
+
20
+ ## Reader API
21
+
22
+ JavaScript:
23
+
24
+ ```js
25
+ import {
26
+ CONTRACT,
27
+ CONTRACT_VERSION,
28
+ listVectors,
29
+ loadContract,
30
+ loadRegistry,
31
+ loadSchema,
32
+ loadVector,
33
+ } from "@consiliency/contract";
34
+ ```
35
+
36
+ Python:
37
+
38
+ ```python
39
+ from consiliency_contract import (
40
+ CONTRACT,
41
+ CONTRACT_VERSION,
42
+ list_vectors,
43
+ load_contract,
44
+ load_registry,
45
+ load_schema,
46
+ load_vector,
47
+ )
48
+ ```
49
+
50
+ ## Verification
51
+
52
+ ```sh
53
+ npm test
54
+ python -m unittest discover -s tests -p 'test_*.py'
55
+ python -m build
56
+ ```
@@ -0,0 +1,15 @@
1
+ {
2
+ "id": "canonical-html-contract-loaded",
3
+ "description": "The relocated canonical_html.v1 contract is present with recorded provenance.",
4
+ "input": {
5
+ "contract_path": "core/canonical-html/contract-v1.json",
6
+ "provenance_path": "core/canonical-html/provenance.json",
7
+ "expected_sha256": "3c0c11b7be8b2301409c47416269dd5579fac90f6e7a4e9ca9c3caef50bd2e28"
8
+ },
9
+ "decision": {
10
+ "schema": "consiliency.conformance_decision.v1",
11
+ "status": "accepted",
12
+ "maturity": "hash-checked",
13
+ "findings": []
14
+ }
15
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "id": "interface-invalid-host-path",
3
+ "description": "Local sibling checkout paths are rejected from public interface data.",
4
+ "input": {
5
+ "schema": "consiliency.interface_declaration.v1",
6
+ "repo_id": "governed-pipeline",
7
+ "realized_edges": [
8
+ {
9
+ "id": "bad-path",
10
+ "provider_repo": "spec",
11
+ "consumer_repo": "governed-pipeline",
12
+ "interface_id": "spec-certificate",
13
+ "ref": {"kind": "repo-relative-path", "value": "/absolute/private/spec-certificate-canon.mjs"},
14
+ "maturity": "realized-edge-observed",
15
+ "evidence": []
16
+ }
17
+ ],
18
+ "promised_edges": []
19
+ },
20
+ "decision": {
21
+ "schema": "consiliency.conformance_decision.v1",
22
+ "status": "rejected",
23
+ "maturity": "presence-only",
24
+ "findings": [{"code": "interface.ref.host_path", "severity": "block", "message": "Interface refs must not contain host absolute paths."}]
25
+ }
26
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "id": "interface-valid-realized-and-promised",
3
+ "description": "Interface declarations can carry realized and promised edges with safe refs.",
4
+ "input": {
5
+ "schema": "consiliency.interface_declaration.v1",
6
+ "repo_id": "governed-pipeline",
7
+ "realized_edges": [
8
+ {
9
+ "id": "harness-pin",
10
+ "provider_repo": "agent-harness",
11
+ "consumer_repo": "governed-pipeline",
12
+ "interface_id": "phase-loop-cli-entrypoint",
13
+ "ref": {"kind": "git-ref", "value": "v0.1.12"},
14
+ "maturity": "realized-edge-observed",
15
+ "evidence": [{"ref": "tools/agent-harness.pin.json", "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"}]
16
+ }
17
+ ],
18
+ "promised_edges": [
19
+ {
20
+ "id": "contract-package",
21
+ "provider_repo": "consiliency-contract",
22
+ "consumer_repo": "governed-pipeline",
23
+ "interface_id": "consiliency-contract-v1",
24
+ "ref": {"kind": "package-coordinate", "value": "@consiliency/contract@^0.1.0"},
25
+ "maturity": "presence-only",
26
+ "evidence": []
27
+ }
28
+ ]
29
+ },
30
+ "decision": {
31
+ "schema": "consiliency.conformance_decision.v1",
32
+ "status": "accepted",
33
+ "maturity": "realized-edge-observed",
34
+ "findings": []
35
+ }
36
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "id": "loop-gate-invalid-blocking-default",
3
+ "description": "Phase 0 contract data must not make blocking the default.",
4
+ "input": {
5
+ "schema": "consiliency.loop_gate_scenario.v1",
6
+ "gate": "presence",
7
+ "severity_default": "block"
8
+ },
9
+ "decision": {
10
+ "schema": "consiliency.conformance_decision.v1",
11
+ "status": "rejected",
12
+ "maturity": "presence-only",
13
+ "findings": [{"code": "gate.default.blocking", "severity": "block", "message": "Blocking must be opt-in during Phase 0."}]
14
+ }
15
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "id": "loop-gate-missing-doc-warns",
3
+ "description": "Phase 0 missing document checks warn by default.",
4
+ "input": {
5
+ "schema": "consiliency.loop_gate_scenario.v1",
6
+ "gate": "presence",
7
+ "missing": ["runbook"],
8
+ "consumer_policy": {"blocking_opt_in": false}
9
+ },
10
+ "decision": {
11
+ "schema": "consiliency.conformance_decision.v1",
12
+ "status": "warn",
13
+ "maturity": "presence-only",
14
+ "findings": [{"code": "presence.missing_doc", "severity": "warn", "message": "Required document is missing at L0."}]
15
+ }
16
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "manifest-invalid-absolute-path",
3
+ "description": "Host absolute paths are rejected from public package data.",
4
+ "input": {
5
+ "schema": "consiliency.manifest.v1",
6
+ "contract_version": "0.1.0",
7
+ "repo": {"id": "bad", "display_name": "Bad", "default_branch": "main"},
8
+ "declaration": {"mode": "baseline-only"},
9
+ "documents": [
10
+ {"id": "readme", "class": "index", "path": "/absolute/private/README.md", "maturity": "presence-only", "target_level": "L0", "required": true}
11
+ ],
12
+ "interfaces": ".consiliency/interfaces.json"
13
+ },
14
+ "decision": {
15
+ "schema": "consiliency.conformance_decision.v1",
16
+ "status": "rejected",
17
+ "maturity": "presence-only",
18
+ "findings": [{"code": "path.absolute", "severity": "block", "message": "Paths must be repo-relative."}]
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "manifest-invalid-certified-maturity",
3
+ "description": "Phase 0 vectors must not claim certified maturity.",
4
+ "input": {
5
+ "schema": "consiliency.manifest.v1",
6
+ "contract_version": "0.1.0",
7
+ "repo": {"id": "bad", "display_name": "Bad", "default_branch": "main"},
8
+ "declaration": {"mode": "baseline-only"},
9
+ "documents": [
10
+ {"id": "glossary", "class": "proj-S", "path": "docs/glossary.html", "maturity": "certified", "target_level": "L1", "required": true}
11
+ ],
12
+ "interfaces": ".consiliency/interfaces.json"
13
+ },
14
+ "decision": {
15
+ "schema": "consiliency.conformance_decision.v1",
16
+ "status": "rejected",
17
+ "maturity": "presence-only",
18
+ "findings": [{"code": "maturity.certified.phase0", "severity": "block", "message": "Certified maturity is reserved for post-XG-1 evidence."}]
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "manifest-invalid-path-and-ref",
3
+ "description": "A document declaration must use exactly one of path or ref.",
4
+ "input": {
5
+ "schema": "consiliency.manifest.v1",
6
+ "contract_version": "0.1.0",
7
+ "repo": {"id": "bad", "display_name": "Bad", "default_branch": "main"},
8
+ "declaration": {"mode": "baseline-only"},
9
+ "documents": [
10
+ {"id": "readme", "class": "index", "path": "README.md", "ref": {"kind": "url", "value": "https://example.invalid"}, "maturity": "presence-only", "target_level": "L0", "required": true}
11
+ ],
12
+ "interfaces": ".consiliency/interfaces.json"
13
+ },
14
+ "decision": {
15
+ "schema": "consiliency.conformance_decision.v1",
16
+ "status": "rejected",
17
+ "maturity": "presence-only",
18
+ "findings": [{"code": "document.path_ref.exclusive", "severity": "block", "message": "Document declarations must use exactly one of path or ref."}]
19
+ }
20
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "manifest-invalid-unknown-archetype",
3
+ "description": "Unknown archetypes are rejected.",
4
+ "input": {
5
+ "schema": "consiliency.manifest.v1",
6
+ "contract_version": "0.1.0",
7
+ "repo": {"id": "bad", "display_name": "Bad", "default_branch": "main"},
8
+ "declaration": {"mode": "archetyped", "archetypes": ["website"], "modifiers": []},
9
+ "documents": [],
10
+ "interfaces": ".consiliency/interfaces.json"
11
+ },
12
+ "decision": {
13
+ "schema": "consiliency.conformance_decision.v1",
14
+ "status": "rejected",
15
+ "maturity": "presence-only",
16
+ "findings": [{"code": "archetype.unknown", "severity": "block", "message": "Archetype is not in the contract registry."}]
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": "manifest-valid-baseline-only",
3
+ "description": "A baseline-only declaration is legal and carries no archetype list.",
4
+ "input": {
5
+ "schema": "consiliency.manifest.v1",
6
+ "contract_version": "0.1.0",
7
+ "repo": {"id": "notes", "display_name": "Notes", "default_branch": "main"},
8
+ "declaration": {"mode": "baseline-only"},
9
+ "documents": [
10
+ {"id": "readme", "class": "index", "path": "README.md", "maturity": "presence-only", "target_level": "L0", "required": true}
11
+ ],
12
+ "interfaces": ".consiliency/interfaces.json"
13
+ },
14
+ "decision": {
15
+ "schema": "consiliency.conformance_decision.v1",
16
+ "status": "accepted",
17
+ "maturity": "presence-only",
18
+ "findings": []
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "manifest-valid-product",
3
+ "description": "An archetyped product manifest with repo-relative documents is accepted at L0.",
4
+ "input": {
5
+ "schema": "consiliency.manifest.v1",
6
+ "contract_version": "0.1.0",
7
+ "repo": {"id": "portal", "display_name": "Consiliency Portal", "default_branch": "main"},
8
+ "declaration": {"mode": "archetyped", "archetypes": ["product"], "modifiers": ["user-facing"]},
9
+ "documents": [
10
+ {"id": "readme", "class": "index", "path": "README.md", "maturity": "presence-only", "target_level": "L0", "required": true},
11
+ {"id": "contract-version-status", "class": "index", "path": ".consiliency/status.json", "maturity": "presence-only", "target_level": "L0", "required": true}
12
+ ],
13
+ "interfaces": ".consiliency/interfaces.json"
14
+ },
15
+ "decision": {
16
+ "schema": "consiliency.conformance_decision.v1",
17
+ "status": "accepted",
18
+ "maturity": "presence-only",
19
+ "findings": []
20
+ }
21
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "id": "version-skew-compatible",
3
+ "description": "Contract and package versions in the 0.1 range are compatible.",
4
+ "input": {
5
+ "schema": "consiliency.version_skew_scenario.v1",
6
+ "contract_version": "0.1.0",
7
+ "package_version": "0.1.0"
8
+ },
9
+ "decision": {
10
+ "schema": "consiliency.conformance_decision.v1",
11
+ "status": "accepted",
12
+ "maturity": "presence-only",
13
+ "findings": []
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "id": "version-skew-incompatible-warns",
3
+ "description": "Version skew emits a warning by default during Phase 0.",
4
+ "input": {
5
+ "schema": "consiliency.version_skew_scenario.v1",
6
+ "contract_version": "0.2.0",
7
+ "package_version": "0.1.0"
8
+ },
9
+ "decision": {
10
+ "schema": "consiliency.conformance_decision.v1",
11
+ "status": "warn",
12
+ "maturity": "presence-only",
13
+ "findings": [{"code": "version_skew.incompatible", "severity": "warn", "message": "Contract and package versions are outside the compatible range."}]
14
+ }
15
+ }