chore(verify): L4-Verify deterministic check suite #66

Closed
opened 2026-05-05 01:07:02 +02:00 by glm · 1 comment

Create automated verification suite per plan §L4-Verify. Currently NONE of these checks exist.

Spec sources

  • schema/module.schema.json, module.schema.v2.json
  • modules//module.yaml, prompts/.md
  • control-plane/platformctl/, control-plane/forgejo-actions/apply.yaml

Extracted context

Plan §L4-Verify requires:

  • jsonschema validation over each module.yaml
  • Token-count guard (module.yaml + prompts ≤ budget)
  • Cross-link guard (prompts reference existing files)
  • py_compile on platformctl
  • yamllint/actionlint on Forgejo Actions

What done looks like

  • test_verify.py with all 5 check categories
  • make verify target
  • All checks pass on current repo state (or violations filed as issues)

Risk: risk/process

Trace: Issue #59 item 7, decomposed by glm 2026-05-05, parent #59

Create automated verification suite per plan §L4-Verify. Currently NONE of these checks exist. ## Spec sources - schema/module.schema.json, module.schema.v2.json - modules/*/module.yaml, prompts/*.md - control-plane/platformctl/, control-plane/forgejo-actions/apply.yaml ## Extracted context > Plan §L4-Verify requires: > - jsonschema validation over each module.yaml > - Token-count guard (module.yaml + prompts ≤ budget) > - Cross-link guard (prompts reference existing files) > - py_compile on platformctl > - yamllint/actionlint on Forgejo Actions ## What done looks like - [ ] test_verify.py with all 5 check categories - [ ] make verify target - [ ] All checks pass on current repo state (or violations filed as issues) ## Risk: risk/process ## Trace: Issue #59 item 7, decomposed by glm 2026-05-05, parent #59
Collaborator

Ready for agent

Execution protocol: state/agent-execution-template.md (PR #69 → main).

Specifics for this issue:

  • Recommended actor: glm or codex (Python tests work; pattern matches existing control-plane/platformctl/tests/)
  • Spec sources whitelist:
    • schema/module.schema.json + schema/module.schema.v2.json
    • modules/*/module.yaml (full set, 81 manifests — for token count + schema validation)
    • prompts/*.md (full set — for token count + cross-link guard)
    • control-plane/platformctl/ (full subdirectory — for python -m py_compile check)
    • .forgejo/workflows/*.yml (Forgejo Actions YAMLs — for syntax check)
    • state/reports/STATE_OF_PLATFORM_2026-05-03.md §"L4-Verify" reference (if present) OR original plan file referenced from #59 meta
  • Allowed touched paths:
    • tests/test_l4_verify.py (create — pytest-based test file)
    • tests/conftest.py (create or modify if needed for fixtures)
    • NO Makefile — repo doesn't use Make; use pytest invocation patterns instead
    • tests/run-verify.sh (optional convenience script — calls pytest with right args)
  • Self-verification commands:
    • python3 -m pytest tests/test_l4_verify.py -v
    • bash -n tests/run-verify.sh (if created)
    • Test categories required (each as parameterized pytest):
      1. Schema: every modules/*/module.yaml validates against v1 schema (warning-only on missing v2 fields)
      2. Token count: every module.yamlagent_context_budget (1500 default), every prompts/*.md ≤ 2000
      3. Cross-link: every file path mentioned in prompts/*.md exists in repo (heuristic: regex match ^[a-zA-Z0-9_./-]+\.(md|py|yml|yaml|json)$ and check os.path.exists)
      4. py_compile: every *.py under control-plane/ passes compileall
      5. YAML syntax: every *.yml/*.yaml under .forgejo/, modules/, schema/ parses
  • Escape hatches:
    • If existing manifests fail schema validation, STOP and comment with the list — those are real drift findings, separate atomic issues, not this PR's scope
    • If prompts/ cross-link finds dead refs, STOP and comment — same logic
    • If actionlint is desired but unavailable, document as future-issue and use Python YAML parsing as fallback

PR title format: chore(verify): L4-Verify deterministic check suite (pytest-based)Closes #66.

## Ready for agent Execution protocol: **`state/agent-execution-template.md`** (PR #69 → main). **Specifics for this issue:** - **Recommended actor**: `glm` or `codex` (Python tests work; pattern matches existing `control-plane/platformctl/tests/`) - **Spec sources whitelist**: - `schema/module.schema.json` + `schema/module.schema.v2.json` - `modules/*/module.yaml` (full set, 81 manifests — for token count + schema validation) - `prompts/*.md` (full set — for token count + cross-link guard) - `control-plane/platformctl/` (full subdirectory — for `python -m py_compile` check) - `.forgejo/workflows/*.yml` (Forgejo Actions YAMLs — for syntax check) - `state/reports/STATE_OF_PLATFORM_2026-05-03.md` §"L4-Verify" reference (if present) OR original plan file referenced from #59 meta - **Allowed touched paths**: - `tests/test_l4_verify.py` (create — pytest-based test file) - `tests/conftest.py` (create or modify if needed for fixtures) - **NO Makefile** — repo doesn't use Make; use pytest invocation patterns instead - `tests/run-verify.sh` (optional convenience script — calls pytest with right args) - **Self-verification commands**: - `python3 -m pytest tests/test_l4_verify.py -v` - `bash -n tests/run-verify.sh` (if created) - Test categories required (each as parameterized pytest): 1. **Schema**: every `modules/*/module.yaml` validates against v1 schema (warning-only on missing v2 fields) 2. **Token count**: every `module.yaml` ≤ `agent_context_budget` (1500 default), every `prompts/*.md` ≤ 2000 3. **Cross-link**: every file path mentioned in `prompts/*.md` exists in repo (heuristic: regex match `^[a-zA-Z0-9_./-]+\.(md|py|yml|yaml|json)$` and check `os.path.exists`) 4. **py_compile**: every `*.py` under `control-plane/` passes `compileall` 5. **YAML syntax**: every `*.yml`/`*.yaml` under `.forgejo/`, `modules/`, `schema/` parses - **Escape hatches**: - If existing manifests fail schema validation, STOP and comment with the list — those are real drift findings, separate atomic issues, not this PR's scope - If `prompts/` cross-link finds dead refs, STOP and comment — same logic - If `actionlint` is desired but unavailable, document as future-issue and use Python YAML parsing as fallback PR title format: `chore(verify): L4-Verify deterministic check suite (pytest-based)` — `Closes #66`.
Sign in to join this conversation.
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform#66
No description provided.