pcq 3.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 (157) hide show
  1. pcq-3.0.0/.gitignore +36 -0
  2. pcq-3.0.0/.gitlab-ci.yml +51 -0
  3. pcq-3.0.0/CHANGELOG.md +996 -0
  4. pcq-3.0.0/LICENSE +201 -0
  5. pcq-3.0.0/PKG-INFO +1385 -0
  6. pcq-3.0.0/README.md +1348 -0
  7. pcq-3.0.0/docs/AGENT_ACCEPTANCE_CHECKLIST.md +216 -0
  8. pcq-3.0.0/docs/AGENT_OPERABILITY.md +1554 -0
  9. pcq-3.0.0/docs/AGENT_OPERATING_GUIDE.md +664 -0
  10. pcq-3.0.0/docs/ATOM_REGISTRY.md +1247 -0
  11. pcq-3.0.0/docs/CQ_MCP_SPEC.md +537 -0
  12. pcq-3.0.0/docs/CQ_YAML_RUNTIME_CONTRACT.md +323 -0
  13. pcq-3.0.0/docs/JSON_CONTRACTS.md +234 -0
  14. pcq-3.0.0/docs/PCQ_COMPLETION_ROADMAP.md +581 -0
  15. pcq-3.0.0/docs/RUN_RECORD.md +488 -0
  16. pcq-3.0.0/docs/SPEC.md +604 -0
  17. pcq-3.0.0/docs/STRICTNESS.md +147 -0
  18. pcq-3.0.0/docs/VISION.md +281 -0
  19. pcq-3.0.0/docs/WORKER_EXECUTION_FLOW.md +291 -0
  20. pcq-3.0.0/docs/case-studies/mnist-dogfood-2026-05-08.md +168 -0
  21. pcq-3.0.0/examples/.gitkeep +0 -0
  22. pcq-3.0.0/examples/contract_numpy.cq.yaml +26 -0
  23. pcq-3.0.0/examples/contract_numpy.py +77 -0
  24. pcq-3.0.0/examples/contract_sklearn.cq.yaml +17 -0
  25. pcq-3.0.0/examples/contract_sklearn.py +55 -0
  26. pcq-3.0.0/examples/cq.yaml +25 -0
  27. pcq-3.0.0/examples/train.py +17 -0
  28. pcq-3.0.0/pyproject.toml +53 -0
  29. pcq-3.0.0/scripts/release-smoke.sh +182 -0
  30. pcq-3.0.0/skills/pcq/SKILL.md +243 -0
  31. pcq-3.0.0/src/pcq/__init__.py +133 -0
  32. pcq-3.0.0/src/pcq/_registry.py +17 -0
  33. pcq-3.0.0/src/pcq/agent/__init__.py +264 -0
  34. pcq-3.0.0/src/pcq/agent/apply.py +601 -0
  35. pcq-3.0.0/src/pcq/agent/compare.py +631 -0
  36. pcq-3.0.0/src/pcq/agent/describe.py +363 -0
  37. pcq-3.0.0/src/pcq/agent/failure_classifier.py +57 -0
  38. pcq-3.0.0/src/pcq/agent/init.py +424 -0
  39. pcq-3.0.0/src/pcq/agent/inspect.py +423 -0
  40. pcq-3.0.0/src/pcq/agent/install.py +631 -0
  41. pcq-3.0.0/src/pcq/agent/json_contracts.py +373 -0
  42. pcq-3.0.0/src/pcq/agent/lineage.py +237 -0
  43. pcq-3.0.0/src/pcq/agent/plan.py +380 -0
  44. pcq-3.0.0/src/pcq/agent/resolver.py +400 -0
  45. pcq-3.0.0/src/pcq/agent/run_record.py +273 -0
  46. pcq-3.0.0/src/pcq/agent/scaffold.py +453 -0
  47. pcq-3.0.0/src/pcq/agent/schema.py +331 -0
  48. pcq-3.0.0/src/pcq/agent/smoke.py +260 -0
  49. pcq-3.0.0/src/pcq/agent/strictness.py +170 -0
  50. pcq-3.0.0/src/pcq/agent/summary.py +191 -0
  51. pcq-3.0.0/src/pcq/agent/validate.py +1260 -0
  52. pcq-3.0.0/src/pcq/agent/validate_run.py +711 -0
  53. pcq-3.0.0/src/pcq/agent/yaml_io.py +480 -0
  54. pcq-3.0.0/src/pcq/agent_assets/AGENTS.pcq.md +77 -0
  55. pcq-3.0.0/src/pcq/agent_assets/__init__.py +1 -0
  56. pcq-3.0.0/src/pcq/agent_assets/skills/pcq/SKILL.md +243 -0
  57. pcq-3.0.0/src/pcq/cli.py +1385 -0
  58. pcq-3.0.0/src/pcq/contract.py +1178 -0
  59. pcq-3.0.0/src/pcq/core.py +266 -0
  60. pcq-3.0.0/src/pcq/datasets.py +28 -0
  61. pcq-3.0.0/src/pcq/examples/__init__.py +53 -0
  62. pcq-3.0.0/src/pcq/examples/datasets.py +522 -0
  63. pcq-3.0.0/src/pcq/examples/models.py +397 -0
  64. pcq-3.0.0/src/pcq/examples/optim.py +52 -0
  65. pcq-3.0.0/src/pcq/examples/sched.py +77 -0
  66. pcq-3.0.0/src/pcq/experiment.py +557 -0
  67. pcq-3.0.0/src/pcq/loss.py +214 -0
  68. pcq-3.0.0/src/pcq/metric/__init__.py +35 -0
  69. pcq-3.0.0/src/pcq/metric/functional.py +237 -0
  70. pcq-3.0.0/src/pcq/metric/stateful.py +83 -0
  71. pcq-3.0.0/src/pcq/models.py +28 -0
  72. pcq-3.0.0/src/pcq/optim.py +13 -0
  73. pcq-3.0.0/src/pcq/recipes/__init__.py +1 -0
  74. pcq-3.0.0/src/pcq/recipes/nlp/__init__.py +1 -0
  75. pcq-3.0.0/src/pcq/recipes/nlp/fake_text_classifier.py +47 -0
  76. pcq-3.0.0/src/pcq/recipes/vision/__init__.py +1 -0
  77. pcq-3.0.0/src/pcq/recipes/vision/cifar10_resnet18.py +52 -0
  78. pcq-3.0.0/src/pcq/recipes/vision/cifar10_smallcnn_baseline.py +52 -0
  79. pcq-3.0.0/src/pcq/recipes/vision/fake_smoke.py +46 -0
  80. pcq-3.0.0/src/pcq/recipes/vision/mnist_mlp.py +56 -0
  81. pcq-3.0.0/src/pcq/recipes/vision/seg/__init__.py +1 -0
  82. pcq-3.0.0/src/pcq/recipes/vision/seg/fake_seg_smoke.py +46 -0
  83. pcq-3.0.0/src/pcq/recipes/vision/seg/voc_unet.py +67 -0
  84. pcq-3.0.0/src/pcq/registry/__init__.py +143 -0
  85. pcq-3.0.0/src/pcq/registry/loader.py +162 -0
  86. pcq-3.0.0/src/pcq/registry/spec.py +215 -0
  87. pcq-3.0.0/src/pcq/sched.py +13 -0
  88. pcq-3.0.0/src/pcq/testing.py +232 -0
  89. pcq-3.0.0/src/pcq/trainer.py +387 -0
  90. pcq-3.0.0/templates/AGENTS.pcq.md +77 -0
  91. pcq-3.0.0/tests/__init__.py +0 -0
  92. pcq-3.0.0/tests/test_acceptance.py +85 -0
  93. pcq-3.0.0/tests/test_agent_inspect.py +56 -0
  94. pcq-3.0.0/tests/test_agent_install.py +307 -0
  95. pcq-3.0.0/tests/test_agent_meta.py +142 -0
  96. pcq-3.0.0/tests/test_agent_summary.py +80 -0
  97. pcq-3.0.0/tests/test_agent_validate.py +104 -0
  98. pcq-3.0.0/tests/test_apply_plan.py +614 -0
  99. pcq-3.0.0/tests/test_atom_role.py +106 -0
  100. pcq-3.0.0/tests/test_atom_source.py +48 -0
  101. pcq-3.0.0/tests/test_atom_spec.py +140 -0
  102. pcq-3.0.0/tests/test_atom_validation.py +181 -0
  103. pcq-3.0.0/tests/test_atoms.py +397 -0
  104. pcq-3.0.0/tests/test_atoms_meta.py +179 -0
  105. pcq-3.0.0/tests/test_cli.py +977 -0
  106. pcq-3.0.0/tests/test_compare_runs.py +453 -0
  107. pcq-3.0.0/tests/test_compare_runs_config.py +140 -0
  108. pcq-3.0.0/tests/test_config_fallback.py +134 -0
  109. pcq-3.0.0/tests/test_contract_helpers.py +105 -0
  110. pcq-3.0.0/tests/test_core.py +263 -0
  111. pcq-3.0.0/tests/test_describe_run.py +226 -0
  112. pcq-3.0.0/tests/test_examples_namespace.py +118 -0
  113. pcq-3.0.0/tests/test_experiment.py +673 -0
  114. pcq-3.0.0/tests/test_failure_classifier.py +72 -0
  115. pcq-3.0.0/tests/test_failure_envelope.py +214 -0
  116. pcq-3.0.0/tests/test_framework_neutral_examples.py +77 -0
  117. pcq-3.0.0/tests/test_golden_e2e.py +430 -0
  118. pcq-3.0.0/tests/test_init_experiment.py +94 -0
  119. pcq-3.0.0/tests/test_init_styles.py +154 -0
  120. pcq-3.0.0/tests/test_inspect_empty_dir.py +95 -0
  121. pcq-3.0.0/tests/test_inspect_manifest_schema.py +89 -0
  122. pcq-3.0.0/tests/test_inspect_script_aware.py +115 -0
  123. pcq-3.0.0/tests/test_inspect_structured_yaml.py +151 -0
  124. pcq-3.0.0/tests/test_integration.py +130 -0
  125. pcq-3.0.0/tests/test_json_contracts.py +117 -0
  126. pcq-3.0.0/tests/test_lineage.py +342 -0
  127. pcq-3.0.0/tests/test_load_project_atoms.py +101 -0
  128. pcq-3.0.0/tests/test_manifest_v2.py +119 -0
  129. pcq-3.0.0/tests/test_metric.py +111 -0
  130. pcq-3.0.0/tests/test_partial_run_record.py +259 -0
  131. pcq-3.0.0/tests/test_pcq_run.py +190 -0
  132. pcq-3.0.0/tests/test_plan_schema.py +350 -0
  133. pcq-3.0.0/tests/test_planset.py +251 -0
  134. pcq-3.0.0/tests/test_planset_output_dir.py +157 -0
  135. pcq-3.0.0/tests/test_recipe_spec.py +151 -0
  136. pcq-3.0.0/tests/test_recipes.py +119 -0
  137. pcq-3.0.0/tests/test_registry.py +86 -0
  138. pcq-3.0.0/tests/test_registry_meta.py +117 -0
  139. pcq-3.0.0/tests/test_resolver.py +210 -0
  140. pcq-3.0.0/tests/test_run_context_dod.py +341 -0
  141. pcq-3.0.0/tests/test_run_record.py +374 -0
  142. pcq-3.0.0/tests/test_scaffold.py +80 -0
  143. pcq-3.0.0/tests/test_smoke_atom.py +56 -0
  144. pcq-3.0.0/tests/test_strictness_matrix.py +84 -0
  145. pcq-3.0.0/tests/test_trainer.py +95 -0
  146. pcq-3.0.0/tests/test_trainer_from_cfg.py +81 -0
  147. pcq-3.0.0/tests/test_validate_inputs.py +90 -0
  148. pcq-3.0.0/tests/test_validate_local.py +94 -0
  149. pcq-3.0.0/tests/test_validate_manifest.py +175 -0
  150. pcq-3.0.0/tests/test_validate_metric_schema.py +150 -0
  151. pcq-3.0.0/tests/test_validate_plan_label_contract.py +155 -0
  152. pcq-3.0.0/tests/test_validate_run.py +236 -0
  153. pcq-3.0.0/tests/test_validate_run_rescan.py +159 -0
  154. pcq-3.0.0/tests/test_validate_script.py +95 -0
  155. pcq-3.0.0/tests/test_yaml_io.py +337 -0
  156. pcq-3.0.0/tests/test_yaml_strict.py +69 -0
  157. pcq-3.0.0/uv.lock +1509 -0
pcq-3.0.0/.gitignore ADDED
@@ -0,0 +1,36 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+
7
+ # uv / venv
8
+ .venv/
9
+ .python-version
10
+
11
+ # Build artifacts
12
+ build/
13
+ dist/
14
+ *.egg-info/
15
+ *.egg
16
+
17
+ # Test / coverage
18
+ .pytest_cache/
19
+ .ruff_cache/
20
+ .coverage
21
+ htmlcov/
22
+
23
+ # IDE
24
+ .vscode/
25
+ .idea/
26
+ .claude/
27
+
28
+ # OS
29
+ .DS_Store
30
+
31
+ # Runtime state (per-project, not committed)
32
+ .cq/
33
+ output/
34
+
35
+ # CI smoke output (cleaned by trap; ignored if leaked)
36
+ .smoke_e2e/
@@ -0,0 +1,51 @@
1
+ # GitLab CI for pcq — runs on git.pilab.co.kr/pi/pcq
2
+ #
3
+ # Stages:
4
+ # lint — ruff
5
+ # test — pytest (unit + integration + acceptance)
6
+ # smoke — end-to-end release-smoke.sh
7
+
8
+ default:
9
+ image: python:3.12-slim
10
+ before_script:
11
+ - apt-get update -qq
12
+ - apt-get install -y --no-install-recommends git curl ca-certificates
13
+ - curl -LsSf https://astral.sh/uv/install.sh | sh
14
+ - export PATH="$HOME/.local/bin:$PATH"
15
+ - uv --version
16
+ - uv sync --extra dev
17
+ cache:
18
+ key:
19
+ files:
20
+ - uv.lock
21
+ paths:
22
+ - .venv/
23
+ - ~/.cache/uv/
24
+
25
+ stages:
26
+ - lint
27
+ - test
28
+ - smoke
29
+
30
+ lint:
31
+ stage: lint
32
+ script:
33
+ - export PATH="$HOME/.local/bin:$PATH"
34
+ - uv run ruff check src/ tests/ scripts/
35
+
36
+ test:
37
+ stage: test
38
+ script:
39
+ - export PATH="$HOME/.local/bin:$PATH"
40
+ - uv run pytest tests/ -v --tb=short
41
+
42
+ smoke:
43
+ stage: smoke
44
+ script:
45
+ - export PATH="$HOME/.local/bin:$PATH"
46
+ - bash scripts/release-smoke.sh
47
+ artifacts:
48
+ when: on_failure
49
+ paths:
50
+ - .smoke_e2e/
51
+ expire_in: 1 week