Skip to content

[UC-3697] Bootstrap python-quality-control for agentic development across four agent harnesses - #23

Draft
Jelle Spijker (jellespijker) wants to merge 3 commits into
masterfrom
UC-3697_AI_DF
Draft

[UC-3697] Bootstrap python-quality-control for agentic development across four agent harnesses#23
Jelle Spijker (jellespijker) wants to merge 3 commits into
masterfrom
UC-3697_AI_DF

Conversation

@jellespijker

@jellespijker Jelle Spijker (jellespijker) commented Aug 6, 2026

Copy link
Copy Markdown
Member

Jira ticket: UC-3697

Why

AI coding agents work on this repository. Each agent reads a different
configuration file. The rules were not written down, so every agent guessed.
This change writes the rules down once and links them to all four agent tools.

This repository is the shared CI configuration. Firmware repositories and cloud
repositories mount it as the ci submodule. An agent that assumes one consumer
type writes a rule that breaks the other. The rules therefore assume no
consumer.

Merge order

Merge this pull request first.

  • opinicus #2801 moves its
    ci submodule pointer to the head of this branch.
  • okuda #1242 moves its ci
    submodule pointer to the head of this branch.

The Python linters in okuda pass only with the revision this branch points at.
That revision lets references.sh read linting_excluded_files.txt from the
consumer root. Both pull requests fail if this branch does not merge first.

What

Three commits add generated configuration. No runner script changes.

  • .agents/rules/ — 14 rule files in numbered load-tier bands.
  • .agents/hooks/ — commit-time gates and agent hooks.
  • .claude/, .opencode/, .github/, AGENTS.md — links to the same rules.
  • .aiignore — the one source for AI context exclusion.
  • scripts/ — token retrieval, config sync, and pre-pull-request checks.
  • .github/PULL_REQUEST_TEMPLATE.md — the required description sections.
  • .pre-commit-config.yaml, .talismanrc — commit-time gates.
  • .gitignore — new. It ignores __pycache__ from the hook scripts.

How

The rules load in three tiers.

  1. Always — the rule is in the agent context in every session. Example:
    01-jira-commit-standards.md.
  2. On a file glob — the rule loads when the agent opens a matching file.
    Example: 34-library-consumer-contract-rules.md loads for **/*.py.
  3. When the agent decides — the agent reads the rule if it judges the rule
    relevant. Example: 40-skill-discovery-index-rules.md.

Four tools read the output. Each tool reads a different path, so the generator
writes symbolic links to one set of rule files.

  • Claude Code reads CLAUDE.md and .claude/.
  • Antigravity reads AGENTS.md and .ignore.
  • GitHub Copilot reads .github/copilot-instructions.md.
  • OpenCode reads opencode.json and .opencode/.

Two rules come from evidence in this repository.

  • 34-library-consumer-contract-rules.md is generated. It states that this
    repository has no process boundary of its own, and that a rename in the
    published surface is a breaking change for every consumer.
  • 15-shipped-runner-and-consumer-rules.md is hand written. The generator
    listed pytest -x -q cfg and ./run_pytest.sh as test commands for this
    repository. Both are wrong. The repository has no test file. ./run_pytest.sh
    is the product, and it needs ./ci/cfg/pytest.ini from a consumer. Rule 15
    records this, names the real consumers, and forbids any rule that assumes a
    cloud service or a printer.

The mutating pre-commit hooks (end-of-file-fixer, trailing-whitespace) are
limited to the files this change adds. They cannot rewrite the runner scripts.

This is support for agentic development. The rules will change as we learn.
This is not product code.

Verification & Validation (V&V)

pre-commit run --all-files — 18 hooks, all pass, no file changed:

check for merge conflicts................................................Passed
check yaml...............................................................Passed
check json...............................................................Passed
check for added large files..............................................Passed
fix end of files.........................................................Passed
trim trailing whitespace.................................................Passed
talisman.................................................................Passed
Block absolute local path references.....................................Passed
Detect hardcoded API keys and credentials................................Passed
Refuse commits on protected branches.....................................Passed
Verify AI exclusion targets match .aiignore..............................Passed
Enforce rule numbering bands, frontmatter coherence and managed-space....Passed
Verify the Copilot rule index lists every rule in .agents/rules..........Passed
Enforce file size budget and grandfathering ratchet......................Passed
Verify 100% parity across Quad-Agent configuration targets...............Passed
Prevent disabling pre-commit hooks or Talisman credentials scanning......Passed
Verify alignment with upstream release branches..........................Passed
Detect multi-intent PRs mixing features with refactoring.................Passed

The repository has no test suite. bash -n parses every shell script in the
root and in local/ without error.

Other checks:

  • git diff -w origin/master...HEAD changes no .sh, .ini or cfg/ file.

  • All 39 symbolic links resolve.

  • All hook scripts compile with python3 -m compileall.

  • Automated unit/integration tests pass (no test suite; shell parse instead)

  • Pre-commit static checks pass cleanly on this branch's diff

  • Visual evidence attached for UI changes (not applicable)

PR Checklist

  • Initiating developer reviewed AI-generated code
  • No hardcoded absolute local paths or secrets introduced
  • Standing file-size and complexity budgets respected
Related pull requests — this change is one part of the agentic-bootstrap roll-out

The bootstrap skill and its rules are in UltiCortex. The repository pull requests
apply that skill. Read the UltiCortex stack first if you want the reasoning.

UltiCortex — the skills (16 stacked layers, one per skill, read top down)

Firmware

Cloud

Add the hooks the agentic bootstrap generates, and the configuration that
runs them.

- .agents/hooks/ holds the gate scripts.
- .pre-commit-config.yaml runs the gates. The two mutating hooks are
  limited to the files this change adds, so they cannot reformat the
  runner scripts this repository ships.
- .aiignore is the one source for AI context exclusion. The compiler
  writes .ignore and .github/copilot-content-exclusion.yml.
Add the rules and link them into every agent tool.

- .agents/rules/ holds the rules in numbered load-tier bands.
- .agents/rules/15-shipped-runner-and-consumer-rules.md is hand written.
  It records that this repository ships the run_*.sh scripts as its
  product and has no test suite of its own.
- .claude/, .opencode/, .github/ and AGENTS.md link the same rule files.
- .agents/agents/ holds the review and investigation subagents.
- scripts/verify_and_create_pr.sh runs the gates before a pull request.
- scripts/sync_agentic_configs.sh rebuilds the per-harness links.
- scripts/get_github_token.sh reads the token from the system keyring.
- scripts/create_boyscout_branch_and_pr.sh isolates unrelated fixes.
- .github/PULL_REQUEST_TEMPLATE.md sets the required sections.
@jellespijker Jelle Spijker (jellespijker) changed the title [UC-3697] Bootstrap Agentic Framework [UC-3697] Bootstrap python-quality-control for agentic development across four agent harnesses Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant