# AILang project profile for the ~/dev/skills/ plugin.
# Schema reference: ~/dev/skills/docs/profile-schema.md

paths:
  spec_dir: docs/specs
  plan_dir: docs/plans
  design_ledger: design/INDEX.md
  design_contracts: design/contracts
  design_models: design/models
  glossary: design/glossary.md
  code_roots: [crates, runtime]
  bench_dir: bench
  public_interface: [README.md, design, docs, examples]
  fieldtest_examples: examples/fieldtest

naming:
  counter_dirs: [docs/specs, docs/plans, design/contracts, design/models]
  policy: stable_per_directory_4digit
  slug_separator: "-"

commands:
  build: cargo build --workspace
  test: cargo test --workspace
  doc_build: cargo doc --no-deps 2>&1
  regression:
    - bench/check.py
    - bench/compile_check.py
    - bench/cross_lang.py
  architect_sweeps:
    - bash bench/architect_sweeps.sh

vocabulary:
  cycle: milestone
  subcycle: iteration
  ledger_entry: contract

standing_reading:
  always:
    - CLAUDE.md
    - design/INDEX.md
    - "git log -10 --format=full"
  by_role:
    architect:
      - design/contracts
    debugger:
      - "git log -5 --format=full"
    bencher:
      - design/models/0004-rc-uniqueness.md
      - bench/run.sh
      - runtime/rc.c
      - runtime/bump.c
    grounding-check:
      - design/INDEX.md
      - design/contracts
    fieldtester:
      - design/INDEX.md
      - design/models

git:
  main_sacrosanct: true
  only_orchestrator_commits: true
  protected_branches: [main]
  issue_tracker:
    kind: gitea
    close_marker: "closes #N"
    url: "http://192.168.178.103:3000/Brummel/AILang/issues"
    list_cmd: "tea issues ls --repo Brummel/AILang --state open"

notifications:
  command: "~/.claude/notify.sh"

spec_validation:
  parsers:
    ail:
      ext: ".ail"
      cmd: "ail check {file}"
    ail-json:
      ext: ".ail.json"
      cmd: "ail check {file}"
    ll:
      ext: ".ll"
      cmd: "llvm-as {file} -o /dev/null"

pipeline:
  brainstorm: { gates: [planner] }
  planner: { gates: [implement] }
  implement: {}
  audit: { mandatory_at: cycle_close }
  debug: { trigger: bug, red_first: true }
  boss: { user_invoked: true }
  fieldtest: { boss_only: true, when: surface_touch }
  docwriter: { boss_only: true, when: api_stable_across_n_cycles }
