71fa6a28de
Fourth skill via the boss pattern. audit is the cycle-close
cleanup gate; architect does read-only drift review against
the design ledger; bencher does hypothesis-driven performance
diagnostics.
Profile gains one slot:
- `commands.architect_sweeps` — optional list of project-
specific architect sweep commands. The architect agent runs
these in addition to its universal checks; non-zero exit =
drift suspicions. AILang uses this for the
bench/architect_sweeps.sh design-honesty / history-anchor
/ lockstep-invariant detector.
The existing `commands.regression` slot now does double duty:
the audit skill walks it in Step 2; the bencher agent reads
the failing script for diagnostics.
Vocabulary substitutions:
- AILang → "this project"
- milestone → cycle
- Boss → orchestrator
- ailang-architect, ailang-bencher → architect, bencher
AILang-specific bits replaced or removed:
- `bench/check.py && bench/compile_check.py && bench/cross_lang.py`
→ `commands.regression` list
- `bench/architect_sweeps.sh` → `commands.architect_sweeps`
- design/INDEX.md / design/contracts/ / design/models/
→ `paths.design_ledger` / `paths.design_contracts` /
`paths.design_models`
- `bench/run.sh`, `bench/orchestrator-stats/`, `runtime/rc.c`,
`runtime/bump.c` (in bencher) → generic harness / production-
path references
- RC + uniqueness + bump + implicit-mode/explicit-mode
framework (the entire AILang allocator-comparison
calibration) → generic "cost-paying variant vs control"
framing; the hypothesis examples generalised to abstract
perf claims
- The two specific lockstep invariants in architect
(Pattern::Lit::* ↔ pre_desugar_validation; lower_app ↔
is_static_callee) → "the project's CLAUDE.md enumerates
the known pairings; walk each one against the cycle diff"
(the concrete pairings stay AILang-only, in AILang's
CLAUDE.md, not in the plugin)
- The Floats fieldtest "B1 canonical example" reference →
dropped (AILang-specific anchor)
- `design/contracts/0007-honesty-rule.md` cross-ref → dropped
(AILang-specific contract); the honesty principle survives
in the architect's commit-body-truthfulness check
Universal substance preserved verbatim:
- All three Iron Law clauses for audit, architect, bencher
- audit's four-step process; architect's eight-step process;
bencher's hypothesis-first methodology + fixture-pairing
rule + honesty rules
- audit + architect + bencher exit code 0/1/2 semantics
- All Common Rationalisations (5/6/8) and all Red Flags
(5/6/7) rows across the three files, vocabulary-substituted
- bencher's "tie is not a result" doctrine intact
Bencher is the most language-coupled of the seven (was
AILang-allocator-specific). Generalised to a performance-
benchmarker; the discipline (hypothesis-first, design-against
not around, ties-are-bench-info) survives intact. AILang's
RC+bump examples kept in spirit via the generic "cost-paying
vs control" framing.
163 lines
7.4 KiB
Markdown
163 lines
7.4 KiB
Markdown
# Profile schema
|
|
|
|
Location: `<project-root>/.claude/dev-cycle-profile.yml`
|
|
|
|
Encoding: YAML. Each top-level key is a section. Keys are
|
|
lowercase snake_case. Lists are YAML sequences.
|
|
|
|
## `paths`
|
|
|
|
| Key | Type | Default | Description |
|
|
|---------------------|--------|------------------------|-------------|
|
|
| `spec_dir` | string | `docs/specs` | Where the brainstorm skill writes specs. |
|
|
| `plan_dir` | string | `docs/plans` | Where the planner skill writes plans. |
|
|
| `design_ledger` | string | `design/INDEX.md` | Canonical specification index (optional — projects without a design ledger can omit). |
|
|
| `design_contracts` | string | `design/contracts` | Directory of prose-authoritative contracts (optional). |
|
|
| `design_models` | string | `design/models` | Directory of onboarding whitepapers (optional). |
|
|
| `code_roots` | list | `[src]` | Code directories the architect / quality reviewer walk. |
|
|
| `bench_dir` | string | `bench` | Where regression harnesses live (optional). |
|
|
|
|
Omitted optional keys signal that the feature is unused in this
|
|
project; skills that depend on them either short-circuit or
|
|
skip the corresponding step.
|
|
|
|
## `naming`
|
|
|
|
| Key | Type | Default | Description |
|
|
|--------------------|--------|----------------------------------|-------------|
|
|
| `counter_dirs` | list | `[]` | Directories that use the counter-prefix policy. |
|
|
| `policy` | enum | `flat` | One of `stable_per_directory_4digit`, `date_prefix`, `flat`. |
|
|
| `slug_separator` | string | `-` | Separator inside the slug. |
|
|
|
|
`stable_per_directory_4digit` means each listed directory has a
|
|
per-directory counter, 4-digit zero-padded, assigned in
|
|
creation order, stable for the life of the file. New files
|
|
take the next-higher number; deleted files retire their number.
|
|
|
|
`date_prefix` uses `YYYY-MM-DD-slug.md`.
|
|
|
|
`flat` uses `slug.md`.
|
|
|
|
## `commands`
|
|
|
|
| Key | Type | Default | Description |
|
|
|----------------|--------|----------------|-------------|
|
|
| `build` | string | (required) | Build command — exit 0 means success. |
|
|
| `test` | string | (required) | Test command — exit 0 means success. |
|
|
| `lint` | string | (optional) | Lint command — exit 0 means success. |
|
|
| `doc_build` | string | (optional) | Documentation-build command used by the `docwriter` skill. Should print warnings on stderr so the agent can enumerate them (e.g. `cargo doc --no-deps 2>&1`). Omit if the project has no API docs. |
|
|
| `regression` | list | `[]` | Regression scripts run by the audit skill. Each entry is a shell command; non-zero exit is a regress. |
|
|
| `architect_sweeps` | list | `[]` | Project-specific architect sweep commands run by the `architect` agent in addition to its universal checks. Each entry is a shell command; non-zero exit means at least one sweep matched and the matches are drift-suspicions to verify. Optional. |
|
|
|
|
## `vocabulary`
|
|
|
|
| Key | Type | Default | Description |
|
|
|----------------|--------|----------------|-------------|
|
|
| `cycle` | string | `cycle` | What a top-level work unit is called. Examples: `milestone`, `release`, `epic`. |
|
|
| `subcycle` | string | `iteration` | What a sub-unit is called. Examples: `iteration`, `sprint`, `story`. |
|
|
| `ledger_entry` | string | `contract` | What a single design-ledger entry is called. Examples: `contract`, `RFC`, `ADR`. |
|
|
|
|
Skills use these names in their generated artefacts and prose.
|
|
Picking accurate vocabulary keeps prose readable; the underlying
|
|
mechanics are identical regardless of name.
|
|
|
|
## `standing_reading`
|
|
|
|
| Key | Type | Default | Description |
|
|
|----------------|--------|----------------|-------------|
|
|
| `always` | list | `[CLAUDE.md]` | Files every agent reads at start of every dispatch. |
|
|
| `by_role` | map | `{}` | Map from role name to list of additional files. |
|
|
|
|
Role names match agent slugs: `architect`, `bencher`, `debugger`,
|
|
`implementer`, `tester`, `fieldtester`, `docwriter`,
|
|
`grounding-check`, `plan-recon`, `spec-reviewer`, `quality-reviewer`.
|
|
|
|
Entries may be shell commands as well as file paths — they are
|
|
read as opaque strings the agent should fetch / execute, e.g.
|
|
`"git log -10 --format=full"`.
|
|
|
|
## `git`
|
|
|
|
| Key | Type | Default | Description |
|
|
|------------------------------|------|---------|-------------|
|
|
| `main_sacrosanct` | bool | `true` | If true, no actor may reset or revert main. |
|
|
| `only_orchestrator_commits` | bool | `true` | If true, no agent commits; the orchestrator commits. |
|
|
| `issue_tracker.kind` | enum | `none` | One of `gitea`, `github`, `linear`, `none`. |
|
|
| `issue_tracker.close_marker` | string | `"closes #N"` | Marker the orchestrator includes in commit bodies to auto-close issues. |
|
|
| `issue_tracker.url` | string | (empty) | Human-browsable URL of the issue list — surfaced in notifications and cross-references. |
|
|
| `issue_tracker.list_cmd` | string | (empty) | Shell command that lists open issues. Used by the `boss` skill to read the forward queue. Examples: `tea issues ls --repo X/Y --state open`, `gh issue list --repo X/Y --state open`. |
|
|
| `protected_branches` | list | `[main]` | Branches that are sacrosanct in the same sense as main. |
|
|
|
|
## `notifications`
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----------|--------|---------|-------------|
|
|
| `command` | string | (empty) | Shell command the `boss` skill invokes on done-state and bounce-back. Receives the message text as a single argument. Example: `"~/.claude/notify.sh"`. If empty, the orchestrator falls back to printing the notification in chat. |
|
|
|
|
## `pipeline`
|
|
|
|
Per-phase configuration. Each phase has its own sub-map.
|
|
|
|
```yaml
|
|
pipeline:
|
|
brainstorm:
|
|
gates: [planner] # planner cannot start until this has run
|
|
planner:
|
|
gates: [implement]
|
|
implement: {} # standard
|
|
audit:
|
|
mandatory_at: cycle_close # auto-fires at end of each cycle
|
|
fieldtest:
|
|
boss_only: true # only orchestrator dispatches
|
|
when: surface_touch # condition tag (orchestrator judgement)
|
|
docwriter:
|
|
boss_only: true
|
|
when: api_stable_across_n_cycles
|
|
debug:
|
|
trigger: bug # observable misbehaviour
|
|
red_first: true # RED test before any fix
|
|
boss:
|
|
user_invoked: true # autonomous-orchestrator mode, /boss
|
|
```
|
|
|
|
Phases not listed are disabled for the project. A project that
|
|
does not want a `fieldtest` phase simply omits the key.
|
|
|
|
## Example: minimal profile
|
|
|
|
```yaml
|
|
paths:
|
|
spec_dir: docs/specs
|
|
plan_dir: docs/plans
|
|
code_roots: [src]
|
|
|
|
commands:
|
|
build: cargo build
|
|
test: cargo test
|
|
|
|
vocabulary:
|
|
cycle: milestone
|
|
subcycle: iteration
|
|
|
|
standing_reading:
|
|
always:
|
|
- CLAUDE.md
|
|
- "git log -10 --format=full"
|
|
|
|
git:
|
|
issue_tracker:
|
|
kind: github
|
|
close_marker: "closes #N"
|
|
|
|
pipeline:
|
|
brainstorm: { gates: [planner] }
|
|
planner: { gates: [implement] }
|
|
implement: {}
|
|
audit: { mandatory_at: cycle_close }
|
|
debug: { trigger: bug, red_first: true }
|
|
```
|
|
|
|
This minimal profile enables five phases, no fieldtest, no
|
|
docwriter, no design-ledger. Good starting point for a small
|
|
project.
|