agentic-system-core 0.0.2__tar.gz → 1.0.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 (250) hide show
  1. agentic_system_core-1.0.0/CHANGELOG.md +72 -0
  2. agentic_system_core-1.0.0/MANIFEST.in +8 -0
  3. agentic_system_core-1.0.0/NOTICE +9 -0
  4. agentic_system_core-1.0.0/PKG-INFO +313 -0
  5. agentic_system_core-1.0.0/README.md +278 -0
  6. agentic_system_core-1.0.0/pyproject.toml +67 -0
  7. agentic_system_core-1.0.0/src/agentic_system_core/__init__.py +58 -0
  8. agentic_system_core-1.0.0/src/agentic_system_core/areas/__init__.py +67 -0
  9. agentic_system_core-1.0.0/src/agentic_system_core/areas/_assert.py +16 -0
  10. agentic_system_core-1.0.0/src/agentic_system_core/areas/build_area.py +217 -0
  11. agentic_system_core-1.0.0/src/agentic_system_core/areas/discovery_area.py +498 -0
  12. agentic_system_core-1.0.0/src/agentic_system_core/areas/frontmatter_area.py +119 -0
  13. agentic_system_core-1.0.0/src/agentic_system_core/areas/graph_area.py +184 -0
  14. agentic_system_core-1.0.0/src/agentic_system_core/areas/jcs_area.py +43 -0
  15. agentic_system_core-1.0.0/src/agentic_system_core/areas/links_area.py +91 -0
  16. agentic_system_core-1.0.0/src/agentic_system_core/areas/slug_area.py +57 -0
  17. agentic_system_core-1.0.0/src/agentic_system_core/cli.py +345 -0
  18. agentic_system_core-1.0.0/src/agentic_system_core/context.py +239 -0
  19. agentic_system_core-1.0.0/src/agentic_system_core/data/spec-index.json +1 -0
  20. agentic_system_core-1.0.0/src/agentic_system_core/diagnostics.py +74 -0
  21. agentic_system_core-1.0.0/src/agentic_system_core/discovery.py +252 -0
  22. agentic_system_core-1.0.0/src/agentic_system_core/frontmatter.py +468 -0
  23. agentic_system_core-1.0.0/src/agentic_system_core/graph.py +252 -0
  24. agentic_system_core-1.0.0/src/agentic_system_core/jcs.py +406 -0
  25. agentic_system_core-1.0.0/src/agentic_system_core/links.py +327 -0
  26. agentic_system_core-1.0.0/src/agentic_system_core/markdown.py +289 -0
  27. agentic_system_core-1.0.0/src/agentic_system_core/net.py +220 -0
  28. agentic_system_core-1.0.0/src/agentic_system_core/rdf.py +282 -0
  29. agentic_system_core-1.0.0/src/agentic_system_core/reader.py +249 -0
  30. agentic_system_core-1.0.0/src/agentic_system_core/site.py +311 -0
  31. agentic_system_core-1.0.0/src/agentic_system_core/slug.py +66 -0
  32. agentic_system_core-1.0.0/src/agentic_system_core/urls.py +72 -0
  33. agentic_system_core-1.0.0/src/agentic_system_core/vectors.py +400 -0
  34. agentic_system_core-1.0.0/src/agentic_system_core/wellknown.py +716 -0
  35. agentic_system_core-1.0.0/src/agentic_system_core/yamlsubset.py +448 -0
  36. agentic_system_core-1.0.0/src/agentic_system_core.egg-info/PKG-INFO +313 -0
  37. agentic_system_core-1.0.0/src/agentic_system_core.egg-info/SOURCES.txt +240 -0
  38. agentic_system_core-1.0.0/src/agentic_system_core.egg-info/entry_points.txt +2 -0
  39. agentic_system_core-1.0.0/src/agentic_system_core.egg-info/requires.txt +4 -0
  40. agentic_system_core-1.0.0/tests/conftest.py +52 -0
  41. agentic_system_core-1.0.0/tests/fixtures/README.md +13 -0
  42. agentic_system_core-1.0.0/tests/fixtures/conformance/pending.json +4 -0
  43. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0001-search-tokenizer.json +132 -0
  44. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0002-tokenizer-non-latin.json +61 -0
  45. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0003-search-astral-member-order.json +56 -0
  46. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0011-static-fragment-index-arrays.json +27 -0
  47. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0012-headers-and-redirect.json +23 -0
  48. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0013-security-txt-fields.json +105 -0
  49. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0014-content-version-derivation.json +173 -0
  50. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0015-every-text-file-ends-with-one-lf.json +24 -0
  51. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0016-stale-by-instant-comparison.json +39 -0
  52. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0017-asset-references-build-byte-identically.json +33 -0
  53. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0018-page-policy-contains-five-directives.json +42 -0
  54. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0019-search-index-above-500-items.json +2040 -0
  55. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0020-retired-and-draft-items-on-each-surface.json +110 -0
  56. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0021-build-out-naming-content-or-dist-is-refused.json +135 -0
  57. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0022-release-switchboard-holds-an-item-back-everywhere.json +54 -0
  58. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0023-page-copy-drops-a-link-to-a-draft.json +28 -0
  59. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0024-the-whole-route-set-of-the-minimal-fixture.json +69 -0
  60. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0025-skills-index-shape.json +103 -0
  61. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0026-skills-index-lock-is-the-hash-of-skill-md.json +23 -0
  62. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0027-tdm-reservation-file-and-its-robots-groups.json +66 -0
  63. agentic_system_core-1.0.0/tests/fixtures/vectors/build/build-0028-undeclared-release-key-holds-an-item-back.json +54 -0
  64. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0004-level0-wellknown.json +55 -0
  65. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0005-peer-mutual-conformance.json +28 -0
  66. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0008-every-item-reachable-from-llms-txt.json +72 -0
  67. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0009-sitemap-order-and-lastmod.json +42 -0
  68. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0012-robots-tdm-crawler-groups.json +67 -0
  69. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0013-llms-txt-byte-layout-with-content-version.json +52 -0
  70. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0014-llms-full-with-content-version.json +56 -0
  71. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0015-bundle-version-attribute.json +171 -0
  72. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0016-wellknown-linkset-six-bundle-facts.json +68 -0
  73. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0017-level-2-requires-ledger-link.json +57 -0
  74. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0018-bundle-hash-is-the-graph-nq-digest.json +20 -0
  75. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0019-newer-minor-relation-is-ignored.json +162 -0
  76. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0020-whole-document-link-table.json +638 -0
  77. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0021-boards-link-present-and-absent.json +361 -0
  78. agentic_system_core-1.0.0/tests/fixtures/vectors/discovery/disc-0022-restricted-node-access-link.json +176 -0
  79. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0001-concept-valid.json +26 -0
  80. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0002-episode-valid.json +29 -0
  81. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0003-gate-valid.json +35 -0
  82. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0004-missing-prov.json +16 -0
  83. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0005-yaml-anchor-rejected.json +17 -0
  84. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0006-failsafe-scalars-are-strings.json +53 -0
  85. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0007-stale-after-must-be-instant.json +16 -0
  86. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0008-adoption-idempotence.json +34 -0
  87. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0009-x-namespace-preserved.json +38 -0
  88. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0010-single-line-strings.json +17 -0
  89. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0011-frontmatter-missing.json +17 -0
  90. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0012-frontmatter-not-terminated.json +17 -0
  91. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0013-document-terminator-rejected.json +17 -0
  92. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0014-yaml-tag-rejected.json +17 -0
  93. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0015-yaml-merge-key-rejected.json +17 -0
  94. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0016-yaml-flow-mapping-rejected.json +17 -0
  95. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0017-yaml-complex-key-rejected.json +17 -0
  96. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0018-duplicate-key-rejected.json +17 -0
  97. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0019-description-bound-on-every-type.json +17 -0
  98. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/fm-0020-yaml-explicit-key-rejected.json +17 -0
  99. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/frontmatter-0030-length-in-code-points.json +37 -0
  100. agentic_system_core-1.0.0/tests/fixtures/vectors/frontmatter/frontmatter-0031-task-state.json +49 -0
  101. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0003-blank-node-rejected.json +19 -0
  102. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0005-memory-alias-resolution.json +25 -0
  103. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0011-context-file-roundtrip.json +72 -0
  104. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0012-nquads-escaping-and-datatypes.json +31 -0
  105. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0016-attachment-nodes-complete.json +46 -0
  106. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0017-ports-and-task-state-whole-file.json +46 -0
  107. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0018-literal-forms-iri-order.json +44 -0
  108. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0019-context-term-names.json +96 -0
  109. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0021-nquads-blank-node-free-sorted-named-graph.json +35 -0
  110. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0022-cluster-nesting-is-skos-member-named-graph.json +49 -0
  111. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0023-source-fragment-iri-named-graph.json +36 -0
  112. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0024-item-reachability-edges-named-graph.json +40 -0
  113. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0025-inline-link-mentions-named-graph.json +38 -0
  114. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0026-turtle-profile-whole-file-own-licence.json +36 -0
  115. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0027-export-block-reserved-never-extracted.json +32 -0
  116. agentic_system_core-1.0.0/tests/fixtures/vectors/graph/graph-0028-jsonld-whole-files.json +216 -0
  117. agentic_system_core-1.0.0/tests/fixtures/vectors/jcs/jcs-0001-canonical-output.json +27 -0
  118. agentic_system_core-1.0.0/tests/fixtures/vectors/jcs/jcs-0002-utf16-key-sort.json +19 -0
  119. agentic_system_core-1.0.0/tests/fixtures/vectors/jcs/jcs-0003-astral-member-order.json +27 -0
  120. agentic_system_core-1.0.0/tests/fixtures/vectors/jcs/jcs-0004-negative-zero.json +20 -0
  121. agentic_system_core-1.0.0/tests/fixtures/vectors/jcs/jcs-0005-nfc-before-sort.json +20 -0
  122. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0001-inverse-computation.json +61 -0
  123. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0002-requires-cycle-rejected.json +43 -0
  124. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0003-authored-inverse-rejected.json +28 -0
  125. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0004-anchor-edge-cases.json +24 -0
  126. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0005-cluster-depth-rejected.json +52 -0
  127. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0006-cluster-multi-parent-rejected.json +40 -0
  128. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0007-body-link-unresolved.json +39 -0
  129. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0008-broader-narrower-cycle-rejected.json +44 -0
  130. agentic_system_core-1.0.0/tests/fixtures/vectors/links/links-0009-orphans-and-the-cluster-exception.json +87 -0
  131. agentic_system_core-1.0.0/tests/fixtures/vectors/slug/slug-0001-accept.json +26 -0
  132. agentic_system_core-1.0.0/tests/fixtures/vectors/slug/slug-0002-reject-double-hyphen.json +16 -0
  133. agentic_system_core-1.0.0/tests/fixtures/vectors/slug/slug-0003-reject-edge-hyphen-and-case.json +21 -0
  134. agentic_system_core-1.0.0/tests/fixtures/vectors/slug/slug-0004-unique-per-bundle.json +19 -0
  135. agentic_system_core-1.0.0/tests/fixtures/vectors/slug/slug-0006-portable-pattern.json +43 -0
  136. agentic_system_core-1.0.0/tests/fixtures/vectors/slug/slug-0007-slugify-ascii-lower-case.json +28 -0
  137. agentic_system_core-1.0.0/tests/fixtures/wellknown/anchor-http/.well-known/knowledge-linkset +1 -0
  138. agentic_system_core-1.0.0/tests/fixtures/wellknown/anchor-missing/.well-known/knowledge-linkset +1 -0
  139. agentic_system_core-1.0.0/tests/fixtures/wellknown/anchor-no-slash/.well-known/knowledge-linkset +1 -0
  140. agentic_system_core-1.0.0/tests/fixtures/wellknown/attribute-not-array/.well-known/knowledge-linkset +1 -0
  141. agentic_system_core-1.0.0/tests/fixtures/wellknown/bad-digest/.well-known/knowledge-linkset +1 -0
  142. agentic_system_core-1.0.0/tests/fixtures/wellknown/bad-digest/llms.txt +3 -0
  143. agentic_system_core-1.0.0/tests/fixtures/wellknown/bom/.well-known/knowledge-linkset +1 -0
  144. agentic_system_core-1.0.0/tests/fixtures/wellknown/bom/graph.jsonld +1 -0
  145. agentic_system_core-1.0.0/tests/fixtures/wellknown/bom/legal/index.html +1 -0
  146. agentic_system_core-1.0.0/tests/fixtures/wellknown/bom/llms.txt +3 -0
  147. agentic_system_core-1.0.0/tests/fixtures/wellknown/context-not-object/.well-known/knowledge-linkset +1 -0
  148. agentic_system_core-1.0.0/tests/fixtures/wellknown/digest-cross-origin/.well-known/knowledge-linkset +1 -0
  149. agentic_system_core-1.0.0/tests/fixtures/wellknown/digest-mismatch/.well-known/knowledge-linkset +1 -0
  150. agentic_system_core-1.0.0/tests/fixtures/wellknown/digest-mismatch/llms.txt +3 -0
  151. agentic_system_core-1.0.0/tests/fixtures/wellknown/digest-target-missing/.well-known/knowledge-linkset +1 -0
  152. agentic_system_core-1.0.0/tests/fixtures/wellknown/duplicate-member/.well-known/knowledge-linkset +1 -0
  153. agentic_system_core-1.0.0/tests/fixtures/wellknown/empty-file/.well-known/knowledge-linkset +0 -0
  154. agentic_system_core-1.0.0/tests/fixtures/wellknown/empty-relation-array/.well-known/knowledge-linkset +1 -0
  155. agentic_system_core-1.0.0/tests/fixtures/wellknown/engine-disc-0004/.well-known/knowledge-linkset +1 -0
  156. agentic_system_core-1.0.0/tests/fixtures/wellknown/extra-top-member/.well-known/knowledge-linkset +1 -0
  157. agentic_system_core-1.0.0/tests/fixtures/wellknown/extra-top-member/graph.jsonld +1 -0
  158. agentic_system_core-1.0.0/tests/fixtures/wellknown/extra-top-member/legal/index.html +1 -0
  159. agentic_system_core-1.0.0/tests/fixtures/wellknown/extra-top-member/llms.txt +3 -0
  160. agentic_system_core-1.0.0/tests/fixtures/wellknown/good/.well-known/knowledge-linkset +1 -0
  161. agentic_system_core-1.0.0/tests/fixtures/wellknown/good/graph.jsonld +1 -0
  162. agentic_system_core-1.0.0/tests/fixtures/wellknown/good/ledger.jsonl +1 -0
  163. agentic_system_core-1.0.0/tests/fixtures/wellknown/good/legal/index.html +1 -0
  164. agentic_system_core-1.0.0/tests/fixtures/wellknown/good/llms.txt +3 -0
  165. agentic_system_core-1.0.0/tests/fixtures/wellknown/href-relative/.well-known/knowledge-linkset +1 -0
  166. agentic_system_core-1.0.0/tests/fixtures/wellknown/invalid-utf8/.well-known/knowledge-linkset +1 -0
  167. agentic_system_core-1.0.0/tests/fixtures/wellknown/ledger-no-head/.well-known/knowledge-linkset +1 -0
  168. agentic_system_core-1.0.0/tests/fixtures/wellknown/ledger-no-head/ledger.jsonl +1 -0
  169. agentic_system_core-1.0.0/tests/fixtures/wellknown/linkset-not-array/.well-known/knowledge-linkset +1 -0
  170. agentic_system_core-1.0.0/tests/fixtures/wellknown/linkset-two-contexts/.well-known/knowledge-linkset +1 -0
  171. agentic_system_core-1.0.0/tests/fixtures/wellknown/linkset-two-contexts/graph.jsonld +1 -0
  172. agentic_system_core-1.0.0/tests/fixtures/wellknown/linkset-two-contexts/legal/index.html +1 -0
  173. agentic_system_core-1.0.0/tests/fixtures/wellknown/linkset-two-contexts/llms.txt +3 -0
  174. agentic_system_core-1.0.0/tests/fixtures/wellknown/members-unordered/.well-known/knowledge-linkset +1 -0
  175. agentic_system_core-1.0.0/tests/fixtures/wellknown/members-unordered/graph.jsonld +1 -0
  176. agentic_system_core-1.0.0/tests/fixtures/wellknown/members-unordered/legal/index.html +1 -0
  177. agentic_system_core-1.0.0/tests/fixtures/wellknown/members-unordered/llms.txt +3 -0
  178. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-digest/.well-known/knowledge-linkset +1 -0
  179. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-digest/graph.jsonld +1 -0
  180. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-digest/legal/index.html +1 -0
  181. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-digest/llms.txt +3 -0
  182. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-level2-attributes/.well-known/knowledge-linkset +1 -0
  183. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-level2-attributes/graph.jsonld +1 -0
  184. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-level2-attributes/legal/index.html +1 -0
  185. agentic_system_core-1.0.0/tests/fixtures/wellknown/missing-level2-attributes/llms.txt +3 -0
  186. agentic_system_core-1.0.0/tests/fixtures/wellknown/no-trailing-lf/.well-known/knowledge-linkset +1 -0
  187. agentic_system_core-1.0.0/tests/fixtures/wellknown/no-trailing-lf/graph.jsonld +1 -0
  188. agentic_system_core-1.0.0/tests/fixtures/wellknown/no-trailing-lf/legal/index.html +1 -0
  189. agentic_system_core-1.0.0/tests/fixtures/wellknown/no-trailing-lf/llms.txt +3 -0
  190. agentic_system_core-1.0.0/tests/fixtures/wellknown/non-canonical-bytes/.well-known/knowledge-linkset +56 -0
  191. agentic_system_core-1.0.0/tests/fixtures/wellknown/non-canonical-bytes/graph.jsonld +1 -0
  192. agentic_system_core-1.0.0/tests/fixtures/wellknown/non-canonical-bytes/legal/index.html +1 -0
  193. agentic_system_core-1.0.0/tests/fixtures/wellknown/non-canonical-bytes/llms.txt +3 -0
  194. agentic_system_core-1.0.0/tests/fixtures/wellknown/not-an-object/.well-known/knowledge-linkset +1 -0
  195. agentic_system_core-1.0.0/tests/fixtures/wellknown/not-in-wellknown/plain/knowledge-linkset +1 -0
  196. agentic_system_core-1.0.0/tests/fixtures/wellknown/not-json/.well-known/knowledge-linkset +1 -0
  197. agentic_system_core-1.0.0/tests/fixtures/wellknown/peer-mutual/.well-known/knowledge-linkset +1 -0
  198. agentic_system_core-1.0.0/tests/fixtures/wellknown/peer-not-mutual/.well-known/knowledge-linkset +1 -0
  199. agentic_system_core-1.0.0/tests/fixtures/wellknown/related-no-type/.well-known/knowledge-linkset +1 -0
  200. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-llms-wrong-path/.well-known/knowledge-linkset +1 -0
  201. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-llms-wrong-path/index.txt +3 -0
  202. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-multi-value/.well-known/knowledge-linkset +1 -0
  203. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-no-version/.well-known/knowledge-linkset +1 -0
  204. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-target-missing/.well-known/knowledge-linkset +1 -0
  205. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-unknown-access/.well-known/knowledge-linkset +1 -0
  206. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-unknown-name/.well-known/knowledge-linkset +1 -0
  207. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-version-on-llms/.well-known/knowledge-linkset +1 -0
  208. agentic_system_core-1.0.0/tests/fixtures/wellknown/surface-version-on-llms/llms.txt +3 -0
  209. agentic_system_core-1.0.0/tests/fixtures/wellknown/target-not-object/.well-known/knowledge-linkset +1 -0
  210. agentic_system_core-1.0.0/tests/fixtures/wellknown/targets-unordered/.well-known/knowledge-linkset +1 -0
  211. agentic_system_core-1.0.0/tests/fixtures/wellknown/trailing-characters/.well-known/knowledge-linkset +2 -0
  212. agentic_system_core-1.0.0/tests/fixtures/wellknown/trailing-characters/graph.jsonld +1 -0
  213. agentic_system_core-1.0.0/tests/fixtures/wellknown/trailing-characters/legal/index.html +1 -0
  214. agentic_system_core-1.0.0/tests/fixtures/wellknown/trailing-characters/llms.txt +3 -0
  215. agentic_system_core-1.0.0/tests/fixtures/wellknown/type-not-string/.well-known/knowledge-linkset +1 -0
  216. agentic_system_core-1.0.0/tests/fixtures/wellknown/unknown-relation/.well-known/knowledge-linkset +1 -0
  217. agentic_system_core-1.0.0/tests/test_actor_pattern.py +59 -0
  218. agentic_system_core-1.0.0/tests/test_area_handlers.py +141 -0
  219. agentic_system_core-1.0.0/tests/test_ci_workflows.py +260 -0
  220. agentic_system_core-1.0.0/tests/test_cli.py +318 -0
  221. agentic_system_core-1.0.0/tests/test_community_files.py +81 -0
  222. agentic_system_core-1.0.0/tests/test_context_url.py +48 -0
  223. agentic_system_core-1.0.0/tests/test_equivalence.py +99 -0
  224. agentic_system_core-1.0.0/tests/test_frontmatter.py +275 -0
  225. agentic_system_core-1.0.0/tests/test_graph_site.py +299 -0
  226. agentic_system_core-1.0.0/tests/test_jcs.py +183 -0
  227. agentic_system_core-1.0.0/tests/test_links_orphans.py +43 -0
  228. agentic_system_core-1.0.0/tests/test_markdown_links.py +175 -0
  229. agentic_system_core-1.0.0/tests/test_net.py +308 -0
  230. agentic_system_core-1.0.0/tests/test_newcomer_surface.py +140 -0
  231. agentic_system_core-1.0.0/tests/test_reader.py +172 -0
  232. agentic_system_core-1.0.0/tests/test_readme_counts.py +33 -0
  233. agentic_system_core-1.0.0/tests/test_search_shards_and_policy.py +101 -0
  234. agentic_system_core-1.0.0/tests/test_slug.py +41 -0
  235. agentic_system_core-1.0.0/tests/test_urls.py +49 -0
  236. agentic_system_core-1.0.0/tests/test_vector_equivalence.py +89 -0
  237. agentic_system_core-1.0.0/tests/test_vectors.py +374 -0
  238. agentic_system_core-1.0.0/tests/test_wellknown.py +647 -0
  239. agentic_system_core-0.0.2/PKG-INFO +0 -25
  240. agentic_system_core-0.0.2/README.md +0 -10
  241. agentic_system_core-0.0.2/pyproject.toml +0 -25
  242. agentic_system_core-0.0.2/src/agentic_system_core/__init__.py +0 -25
  243. agentic_system_core-0.0.2/src/agentic_system_core/cli.py +0 -14
  244. agentic_system_core-0.0.2/src/agentic_system_core.egg-info/PKG-INFO +0 -25
  245. agentic_system_core-0.0.2/src/agentic_system_core.egg-info/SOURCES.txt +0 -10
  246. agentic_system_core-0.0.2/src/agentic_system_core.egg-info/entry_points.txt +0 -2
  247. {agentic_system_core-0.0.2 → agentic_system_core-1.0.0}/LICENSE +0 -0
  248. {agentic_system_core-0.0.2 → agentic_system_core-1.0.0}/setup.cfg +0 -0
  249. {agentic_system_core-0.0.2 → agentic_system_core-1.0.0}/src/agentic_system_core.egg-info/dependency_links.txt +0 -0
  250. {agentic_system_core-0.0.2 → agentic_system_core-1.0.0}/src/agentic_system_core.egg-info/top_level.txt +0 -0
@@ -0,0 +1,72 @@
1
+ # Changelog
2
+
3
+ All notable changes to the Python package `agentic-system-core`: the two standalone
4
+ checkers, the reading API and the `agsc` command. The specification and the Node engine
5
+ keep their own change log, in the engine repository's `CHANGELOG.md`; this package
6
+ follows the specification version of the same number.
7
+
8
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions use
9
+ PEP 440 spelling: a release is spelled as in SemVer (`1.0.0`), a release candidate
10
+ differently (SemVer's `1.0.0-rc.7` is `1.0.0rc7` here).
11
+
12
+ ## [Unreleased]
13
+
14
+ ## [1.0.0] - 2026-10-14
15
+
16
+ ### Upgrading from 1.0.0rc7
17
+
18
+ The package follows specification `1.0.0`. `pip install agentic-system-core` installs it
19
+ without `--pre`, and `agsc --version` prints `agsc 1.0.0 (Python package; specification
20
+ 1.0.0)`. The trove classifier is "Development Status :: 5 - Production/Stable". Python 3.9
21
+ or newer is still supported; every release is tested on 3.9, 3.13 and 3.14.
22
+
23
+ **What the checker may now report** (each was already outside a rule of the
24
+ specification):
25
+
26
+ - `validate-wellknown`: a discovery document served as anything but
27
+ `application/linkset+json` fails, whether the profile is carried by the `profile`
28
+ parameter or by a `Link: …; rel="profile"` header (AGSC-06-07, AGSC-09-93).
29
+ - `validate-wellknown`: a restricted node must carry exactly one access link: none is
30
+ `AGSC-E202`, more than one is one `AGSC-E210` (AGSC-11-20). The check applies at every
31
+ Level.
32
+ - The actor pattern admits `process:<id>/<version>`, the form of the ledger's trailing
33
+ build entry (AGSC-02-09).
34
+
35
+ ### Added
36
+
37
+ - The vector copies of the seven areas this package runs follow the engine's new cases,
38
+ among them `slug-0007`, the new build, front-matter and links cases, and `disc-0022`.
39
+ - The links area reports orphan items.
40
+ - `SECURITY.md`, `CONTRIBUTING.md` and `CODE_OF_CONDUCT.md`.
41
+ - The change log is linked from the package page on PyPI (a `Changelog` project link and a
42
+ link in the README) and ships in the source distribution.
43
+
44
+ ### Changed
45
+
46
+ - The release lane runs the whole test lane of a pull request, with the engine checked out
47
+ at the specification tag of the package version, and refuses a tag whose commit is not on
48
+ `main`. A Python 3.14 leg runs on every pull request.
49
+ - The per-response deadline of `validate-wellknown` is injectable for tests; the default
50
+ stays 10 seconds.
51
+ - The usage text no longer shows the directory of `validate-vectors` and `run-vectors` as
52
+ optional.
53
+ - Dependabot keeps the pinned actions up to date.
54
+ - CI: the engine's restricted-publisher scenario, in which both checkers flag a restricted
55
+ node without an access link, runs on every leg with this package beside the engine, next
56
+ to the port implementer's scenarios; a skipped scenario fails the leg.
57
+ - The cross-runner proof reads the specification version of a release, not only of a
58
+ candidate, and two area handlers assert what the engine's assert.
59
+
60
+ ### Fixed
61
+
62
+ - The main-site test looked for the site's discovery document in a removed folder and
63
+ always skipped; it runs again when the site is checked out beside the package.
64
+ - The JSON-LD context address that `context.compact()` writes names the vocabulary version
65
+ `1.0.0` (`https://w3id.org/agentic-system-core/ns/1.0.0/context.jsonld`), the address the
66
+ engine derives from the vocabulary's `owl:versionIRI` (AGSC-05-09, AGSC-05-25); it named
67
+ the pre-release `/ns/1.0.0-draft.1/`. A test compares it with the engine's vocabulary
68
+ when the engine is beside this repository.
69
+ - A verb outside the sixteen of the specification is refused with `AGSC-E001` when no
70
+ engine is installed (it was answered with the install sentence alone).
71
+ - A discovery document nested too deep for the reader is reported as `AGSC-E201`, as the
72
+ Node checker reports it (it was a traceback).
@@ -0,0 +1,8 @@
1
+ include README.md
2
+ include CHANGELOG.md
3
+ include LICENSE
4
+ recursive-include src/agentic_system_core/data *.json
5
+ recursive-include tests *.py
6
+ recursive-include tests/fixtures *
7
+ global-exclude __pycache__/*
8
+ global-exclude *.py[cod]
@@ -0,0 +1,9 @@
1
+ AgenticSystemCore
2
+ Copyright 2026 Andrei N. Besleaga
3
+
4
+ This package is licensed under the Apache License 2.0 (LICENSE). The rule index
5
+ and the conformance vectors it carries come from the specification's
6
+ distribution and keep the licences stated there. Every right these licences do
7
+ not grant is reserved by the author.
8
+
9
+ AgenticSystemCore™ is a trademark of Andrei N. Besleaga. Other names belong to their owners.
@@ -0,0 +1,313 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentic-system-core
3
+ Version: 1.0.0
4
+ Summary: Two standalone checkers and a reading API for AgenticSystemCore knowledge nodes, in pure Python, with one agsc command that hands every other verb to the Node engine.
5
+ Author: Andrei N. Besleaga
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://agenticsystemcore.com
8
+ Project-URL: Source, https://github.com/andreibesleaga/agentic-system-core-python
9
+ Project-URL: Specification, https://agenticsystemcore.com/specs/agentic-knowledge/
10
+ Project-URL: Bug Tracker, https://github.com/andreibesleaga/agentic-system-core-python/issues
11
+ Project-URL: Changelog, https://github.com/andreibesleaga/agentic-system-core-python/blob/main/CHANGELOG.md
12
+ Keywords: agentic,knowledge,linkset,discovery,conformance,rfc9264,rfc8785
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Software Development :: Quality Assurance
26
+ Classifier: Topic :: Text Processing :: Markup
27
+ Requires-Python: >=3.9
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ License-File: NOTICE
31
+ Provides-Extra: test
32
+ Requires-Dist: pytest>=7; extra == "test"
33
+ Requires-Dist: coverage>=7; extra == "test"
34
+ Dynamic: license-file
35
+
36
+ # Agentic System Core — Python
37
+
38
+ Two checkers and a small reading API for AgenticSystemCore knowledge nodes, in
39
+ pure Python, plus one `agsc` command that runs those and hands every other verb
40
+ to the Node engine.
41
+
42
+ **This is not a second implementation of the engine.** Building a Bundle,
43
+ emitting a site, composing, importing, exporting and governing all stay with the
44
+ Node package `agentic-system-core`. What this package gives you is the part a
45
+ consumer needs when there is no Node on the machine: checking a published node's
46
+ discovery file, checking and running a conformance-vector set, and reading a
47
+ node's links, digests, chunks and graph. A full Python implementation of the
48
+ engine may come later; when it does, this text will change.
49
+
50
+ Standard library only. No runtime dependency, and none is planned: everything
51
+ here is either a rule of the specification or something Python already ships.
52
+
53
+ **What the specification is, and what is different about it.** AgenticSystemCore turns
54
+ a folder of Markdown files into a knowledge node that people and agents can find,
55
+ verify and cite. Other systems have some of these properties; to the author's knowledge none has
56
+ them together: a knowledge base a machine can find through registered web mechanisms,
57
+ an integrity digest on every artefact link of its discovery document, a typed graph with a published vocabulary, bytes
58
+ pinned by conformance vectors, a person on every merge — directly, or by a standing
59
+ rule that person recorded — and a starting harness of seven kinds of file out of the same files, with no
60
+ server. This package is the Python reader and checker of such nodes; maintainers read
61
+ [docs/MAINTAINING.md](https://github.com/andreibesleaga/agentic-system-core-python/blob/main/docs/MAINTAINING.md).
62
+
63
+ ## Install
64
+
65
+ ```
66
+ pip install agentic-system-core
67
+ ```
68
+
69
+ This installs the latest release. A release candidate of a later version is
70
+ installed only when asked for, with `--pre` or by naming its version. The two
71
+ `0.0.x` versions on PyPI only reserved the name, contain no code and are yanked,
72
+ so pip never picks them.
73
+
74
+ Python 3.9 or newer; every release is tested on 3.9, 3.13 and 3.14. Python 3.9
75
+ reached its end of life in October 2025 and is still supported by this release
76
+ (1.0.0). To forward the other verbs you also need Node 22.13 or newer and the
77
+ npm package:
78
+
79
+ ```
80
+ npm install -g agentic-system-core
81
+ ```
82
+
83
+ **Two commands named `agsc`.** The npm package installs an `agsc` too, and it is
84
+ the engine's command line: its verbs are exactly the sixteen of the specification
85
+ (AGSC-09-07), so `validate-wellknown`, `validate-vectors` and `run-vectors` are not
86
+ among them, and it refuses them with `AGSC-E001`. The `agsc` here is a checker
87
+ distribution (the AGSC-09-90 contracts) that runs those three itself and hands
88
+ every other verb to the engine. With both installed, whichever directory comes
89
+ first on your `PATH` decides which `agsc` you get; `python -m agentic_system_core.cli`
90
+ always reaches this one.
91
+
92
+ ## What runs here
93
+
94
+ ### `agsc validate-wellknown <file>`
95
+
96
+ Checks one discovery document — the file a node serves at
97
+ `/.well-known/knowledge-linkset` — against the rules that govern it: the media
98
+ type and profile, the link-set shape, the anchor, the member and target
99
+ ordering, the relation names, the target attributes, the digest form, the
100
+ surface declarations, and, with `--peer`, the mutual check between two nodes.
101
+
102
+ ```
103
+ agsc validate-wellknown www/.well-known/knowledge-linkset --level 2 --json
104
+ agsc validate-wellknown www/.well-known/knowledge-linkset \
105
+ --peer ../other/www/.well-known/knowledge-linkset
106
+ ```
107
+
108
+ Levels 0 to 3 mean what the specification says they mean. At Level 0 and 1 the
109
+ shape, the names, the ordering and the digest form are checked. At Level 2 and
110
+ above the document must also be canonical bytes, every artefact link must carry
111
+ a digest, the graph link must carry its five bundle facts, and the ledger must be
112
+ linked with its head. A node that declares itself `restricted` must instead omit
113
+ its content facts, its ledger link and the digest of every target it does not
114
+ serve openly, and must carry exactly one `rel#access` link naming where a reader
115
+ obtains credentials (AGSC-11-20). A document that declares a newer MINOR of the
116
+ same MAJOR may use relations and attributes this version does not define: they are
117
+ ignored with the warning `AGSC-E506`, never reported as errors; a document of
118
+ another MAJOR gets no such tolerance (AGSC-00-21, AGSC-09-93).
119
+
120
+ When the document is a file inside a `.well-known/` directory, every
121
+ same-origin target is resolved on disk and its digest is verified against the
122
+ real bytes — so a build output is checked completely with no network at all.
123
+
124
+ Output is the same diagnostics envelope the engine emits (`--json`), and the
125
+ exit code is the same: 0 pass, 1 fail, 2 usage fault.
126
+
127
+ **Reading a URL needs `--allow-network`.** This is the one deliberate difference
128
+ from the Node tool, which reads a URL argument without asking. Nothing in this
129
+ package opens a connection unless that flag is on the command line. With it, the
130
+ same protections apply: https only (plain http to loopback under `--dev`), every
131
+ resolved address classified and refused if it is private, link-local, loopback
132
+ or reserved, the connection pinned to the address that was classified, at most
133
+ three redirects, one ten-second deadline for each response from the request to
134
+ the last byte, and a cap of one mebibyte on the discovery document and of
135
+ 32 MiB on any other file read; a fetch stopped at the deadline or a cap is
136
+ `AGSC-E907` (AGSC-11-10). Given a URL, the checker also reads the response
137
+ headers of the document and of every same-origin public file it fetches and
138
+ checks the rules on cross-origin reading and caching (AGSC-11-03, AGSC-11-05):
139
+ a missing header is `AGSC-E202`, a forbidden one `AGSC-E201`, errors at Level 2
140
+ and above and warnings below (AGSC-09-93).
141
+
142
+ From Python, `agentic_system_core.wellknown.validate(target, level=2,
143
+ allow_network=True, fetcher=my_fetch)` reads a URL through a fetcher you supply
144
+ instead of the built-in one. It is called as `my_fetch(url, dev, cap=n)`, where
145
+ `cap` is the byte cap of that read — `1048576` for the discovery document,
146
+ `33554432` for any other file — and it returns `(final_url, headers, body)`:
147
+ the URL after redirects, the response headers as a dict with lower-case names,
148
+ and the body as bytes. A fetcher that refuses a read raises
149
+ `agentic_system_core.net.TransportError(code, message)`, for example
150
+ `AGSC-E907` when a response passes `cap`; the protections listed above are those
151
+ of the built-in fetcher, `agentic_system_core.net.fetch`, and a fetcher of your
152
+ own is responsible for its own.
153
+
154
+ ### `agsc validate-vectors <dir>` and `agsc run-vectors <dir>`
155
+
156
+ `validate-vectors` checks a conformance-vector set against the file-format
157
+ rules: the required members, the closed area and level lists, the identifier
158
+ grammars, the file encoding, the canonical member order, and the resolution of
159
+ every rule identifier and every error code against the specification. An empty
160
+ set is a failure, not a clean run.
161
+
162
+ Both verbs need a vector directory: this package ships no vector set of its own.
163
+ The vectors are in the npm package `agentic-system-core`, in its `tests/vectors/`
164
+ folder (after `npm install -g agentic-system-core`, `npm root -g` prints the folder
165
+ that holds the package), and in the same folder of the engine repository,
166
+ <https://github.com/andreibesleaga/agentic-system-core>. For example, from a clone of
167
+ the engine: `agsc run-vectors tests/vectors`.
168
+
169
+ Resolving identifiers needs the specification. This package ships a small index
170
+ of it — the rule identifiers, the registered error codes and the declared
171
+ version — derived from `spec/` by command; `--spec <dir>` derives the same index
172
+ from a live `spec/` directory instead.
173
+
174
+ `run-vectors` executes the vectors. **It runs seven areas natively — `build`,
175
+ `discovery`, `frontmatter`, `graph`, `jcs`, `links` and `slug` — and names every
176
+ other area as not run, with the reason.** Each of the seven is derived from the
177
+ rule text of the specification alone, in the standard library:
178
+
179
+ | Area | What this package implements for it |
180
+ |---|---|
181
+ | `frontmatter` | a reader for the closed YAML subset of AGSC-02-02 (failsafe scalars, each rejected construct under its own code, line numbers), the item checks of spec/02, and the drop-in adoption of AGSC-02-90…93 |
182
+ | `slug` | the slug grammar and uniqueness |
183
+ | `jcs` | RFC 8785 canonical JSON with NFC before sorting |
184
+ | `links` | the fourteen Link keys and their inverses, the cycle and cluster-tree checks, heading anchors, and inline-link resolution over a small CommonMark 0.31.2 scanner (headings and inline links only, outside code; its subset is written down in `agentic_system_core/markdown.py`) |
185
+ | `graph` | the RDF dataset of spec/05, canonical `graph.nq` (every line a quad named by the Bundle IRI, AGSC-04-15), the byte-pinned `graph.ttl` profile of AGSC-05-10, and the JSON-LD context of AGSC-06-32 with the compaction it round-trips |
186
+ | `build` | the `search.json` tokenizer and index, static query fragments, the served header set, `security.txt`, the content version and the staleness comparison; fourteen vectors of these seven areas need a whole build or the publisher's writers (`build-0015`, `build-0017`, `build-0020` to `build-0028`, `disc-0018`, `graph-0027`, `graph-0028`) and are reported as not run, by name |
187
+ | `discovery` | `/llms.txt` and `/llms-full.txt` byte for byte, reachability, the sitemap and robots facts, the link-set writer, and the discovery-document checks including the restricted-node rule of AGSC-11-20 |
188
+
189
+ The other areas need a Bundle build, the engine's composition or governance
190
+ modules, or its command-line surface. Nothing is ever counted as a pass that
191
+ was not executed, and nothing is silently skipped.
192
+
193
+ The pending list is the engine's: a file `{"pending": [ids], "reason": {…}}`,
194
+ found beside the vectors or named with `--pending`.
195
+
196
+ ### `agentic_system_core.reader`
197
+
198
+ ```python
199
+ from agentic_system_core.reader import DiscoveryDocument, read_chunks, read_graph
200
+
201
+ node = DiscoveryDocument.from_path("www/.well-known/knowledge-linkset")
202
+ node.anchor # 'https://example.org/'
203
+ node.links("graph") # the rel#graph targets
204
+ node.peers() # the nodes it federates with
205
+ node.surfaces()["chunks"].href # where the chunk export is
206
+
207
+ link = node.links("alternate")[0]
208
+ link.verify(open("www/llms.txt", "rb").read()) # digest against bytes you hold
209
+ link.fetch(my_fetcher) # nothing fetches by itself
210
+ ```
211
+
212
+ `read_chunks` reads `chunks.jsonl` into a list of records, or returns the shard
213
+ manifest as it stands when the file is one. `read_graph` reads `graph.jsonld` as
214
+ plain JSON — no RDF library, no triples; turning it into a graph is a job for a
215
+ library you choose.
216
+
217
+ A member the reader does not know — in a chunk line, a chunk manifest, the graph or
218
+ a discovery document of a later version of the specification — is neither refused
219
+ nor rewritten: it is kept as it stands, and the calls above simply do not read it
220
+ (AGSC-00-21).
221
+
222
+ A digest is an RFC 9530 dictionary member, whose value RFC 9530 defines as "a
223
+ Byte Sequence (Section 3.3.5 of [STRUCTURED-FIELDS]) that conveys an encoded
224
+ version of the byte output produced by the digest calculation" — base64 between
225
+ two colons, which is why it reads `sha-256=:<base64>:`.
226
+
227
+ ## What forwards to Node
228
+
229
+ Every other verb: `init`, `lint`, `build`, `verify`, `ci`, `export`, `import`,
230
+ `compose`, `propose`, `review`, `refresh`, `skills`, `mcp`, `run`, `trace`,
231
+ `conform`. If the npm package's `agsc` is on the PATH, the call is handed to it
232
+ exactly as typed and its exit code comes back. If it is not, the command stops
233
+ with one sentence saying what to install. The call is made with a list of
234
+ arguments and never through a shell.
235
+
236
+ ## Version
237
+
238
+ The specification version is `1.0.0`. Python packages use PEP 440, which spells
239
+ a release the same way as SemVer, so the version on PyPI is `1.0.0` too; a
240
+ release candidate is spelled differently: SemVer's `X.Y.Z-rc.N` is PEP 440's
241
+ `X.Y.ZrcN`.
242
+ `agsc --version` prints the package version and the specification version.
243
+ What changed in each version, and what the checker may now report, is in the
244
+ [change log](https://github.com/andreibesleaga/agentic-system-core-python/blob/main/CHANGELOG.md).
245
+
246
+ ## The vector copies in this repository
247
+
248
+ `tests/fixtures/vectors/` holds byte-identical copies of the vectors of the
249
+ seven areas this package runs, so that the test suite proves the promise
250
+ without needing the engine checkout. When the engine is beside this
251
+ repository, one test compares the copies with the originals byte for byte and
252
+ fails if they have drifted, and another runs the engine's own vector runner
253
+ over the engine's live set and requires the two runners to agree on every
254
+ vector of those seven areas.
255
+
256
+ ## Equivalence with the engine's checker
257
+
258
+ The discovery-file checker is meant to give the same verdict as the engine's
259
+ `tools/validate-wellknown` on the same input. The test suite proves it: both
260
+ tools are run over the same documents — the fixture set, a document taken from
261
+ the engine's own conformance vectors, the built discovery files of two live
262
+ sites and a set of deliberately broken files — at every Level, with and without
263
+ a peer, and the status, the counts and the position and code of every finding
264
+ are compared. Message text is not compared: the specification leaves a message
265
+ unspecified so it can be translated, and pins the code. That test is skipped,
266
+ with a message saying so, when Node or the engine checkout is not present.
267
+
268
+ ## Tests
269
+
270
+ ```
271
+ python -m venv .venv && .venv/bin/pip install -e ".[test]"
272
+ .venv/bin/python -m pytest
273
+ .venv/bin/python -m coverage run -m pytest && .venv/bin/python -m coverage report
274
+ ```
275
+
276
+ Deterministic, fixed data, no clock, no network. The only subprocess in the
277
+ suite is the Node tool in the equivalence test.
278
+
279
+ ## Licence
280
+
281
+ Apache-2.0. See `LICENSE`.
282
+
283
+ The conformance vectors copied under `tests/fixtures/vectors/` and the rule index in
284
+ `src/agentic_system_core/data/` come from the specification's distribution and keep the
285
+ licences stated there (the engine repository's README and `LICENSE-CONTENT`).
286
+
287
+ ## How this is made
288
+
289
+ This work is written and maintained by Andrei N. Besleaga with the help of AI
290
+ assistants. A person decides what is written, an assistant drafts and checks it, and a
291
+ person reads, edits and approves everything that is published and answers for it. Every
292
+ published item records how its text was made and names the person accountable for it.
293
+ Written with AI assistance, reviewed and published by a person.
294
+ The assistance covered text and code alike. This package calls no AI model. What an
295
+ assistant or agent writes from this work is its own output, not a statement by the author.
296
+
297
+ ## What this does not claim
298
+
299
+ This is the independent work of one person, published as it is, with no warranty of any
300
+ kind and no liability for anything that follows from using it. Nothing in it is legal or
301
+ professional advice. No standards body, foundation, company or institution named in this
302
+ repository has reviewed, approved or is connected with this work, and it is not a document
303
+ of the IETF, of the W3C or of any other body. Other product and organisation names are the
304
+ marks of their owners and are used only to say what is being talked about.
305
+ Every right not expressly granted by the licences is reserved, and nothing here promises
306
+ that the work or its addresses will stay available.
307
+
308
+ ## Notice
309
+
310
+ AgenticSystemCore™ is a trademark of Andrei N. Besleaga. Other names belong to their owners.
311
+
312
+ © 2026 Andrei N. Besleaga. Code: Apache-2.0. Schemas, ontology, identifiers and the
313
+ discovery document: CC0-1.0.