workflow: replace docs/roadmap.md with Gitea issue backlog
The forward queue moves out of the in-tree markdown file and into Gitea issues at http://192.168.178.103:3000/Brummel/AILang/issues. Labels: kind:{milestone,feature,todo,idea} + prio:{p1,p2,p3} + state:in-progress. Big chunks live as Gitea milestones (containers) with full prose in the description; smaller items are standalone issues. Browse-and-filter scales constant against growing item count; the previous markdown file was 1059 lines, of which ~850 were already-closed-entry verlauf (the same failure class the JOURNAL cut removed). Sync-drift Code<>Tracker mitigation: Soft-convention `closes #N` / `refs #N` in commit bodies — Gitea auto-closes the issue on push. Captured in user-level CLAUDE.md (~/.claude/CLAUDE.md, not in this commit) as the durable rule; no hook enforcement. In-repo changes: - docs/roadmap.md deleted. - CLAUDE.md (project): Code-layout drops roadmap; /boss gating retargeted; Roles section rewritten with a new "Gitea issues" bullet (URL + tea-CLI snippet) and the closes-#N trailer note. - skills/boss/SKILL.md: 10 sites retargeted, plus Step 1 now prescribes `tea issues ls --labels prio:p1` as the queue read. - skills/brainstorm/SKILL.md: Step 7.5 no-override BLOCK now files a Gitea issue via `tea issues create` instead of appending a roadmap entry; spec deletion stays. - skills/audit/SKILL.md + ailang-architect.md: deferral requirement and debt-heuristic retargeted; forward-intent belongs in the Gitea backlog. - skills/fieldtest/SKILL.md, skills/docwriter/SKILL.md + ailang-docwriter.md: roadmap → backlog. - design/contracts/honesty-rule.md: forward intent lives in the Gitea backlog (pinned phrases unchanged). - design/INDEX.md: Docs bullet drops roadmap, adds the backlog URL. - crates/ailang-core/tests/docs_honesty_pin.rs: two assert messages retargeted (assertion bodies unchanged). - bench/architect_sweeps.sh: Sweep-4 TABU extended with `docs/roadmap\.md` so the deleted path cannot quietly regrow as a cross-reference in design/contracts/. Verification: - cargo build --workspace clean. - cargo test --workspace: 647 passed, 0 failed, 2 ignored. - bench/architect_sweeps.sh exit 0 (all five sweeps clean, incl. new TABU). - grep over the live tree (excluding docs/specs/, docs/plans/) shows zero residual docs/roadmap.md refs. Not touched: ~55 historical files under docs/specs/ and docs/plans/ that mention docs/roadmap.md. Snapshot-character, analogous to the JOURNAL-cut precedent — historical specs are not mass-edited just because a live file was retired; their mentions were correct at write time.
This commit is contained in:
@@ -43,7 +43,7 @@ it measurably improves correctness or removes redundancy.
|
||||
| `bench/` | Regression harnesses (`check.py`, `compile_check.py`, `cross_lang.py`) and the throughput-and-latency runner (`run.sh`); `bench/reference/` holds the hand-C corpus for cross-language ratios |
|
||||
| `examples/` | AILang fixtures used by tests and benches |
|
||||
| `design/` | The canonical contract ledger — `design/INDEX.md` (sole addressable spine: a typed Contracts + Models table), `design/contracts/` (prose-authoritative test-linked invariants), `design/models/` (onboarding whitepapers) |
|
||||
| `docs/` | Specs and roadmap — `docs/specs/` (per-milestone design specs), `docs/plans/` (per-iteration plans), `docs/roadmap.md` (forward queue), `PROSE_ROUNDTRIP.md`. Project history lives in `git log`. |
|
||||
| `docs/` | Specs and plans — `docs/specs/` (per-milestone design specs), `docs/plans/` (per-iteration plans), `PROSE_ROUNDTRIP.md`. Project history lives in `git log`; the forward queue lives in Gitea issues (see "Roles" section below). |
|
||||
| `skills/` | Project-local skill definitions and their agents. See `skills/README.md` for the skill table, agent roster, and discovery layout. |
|
||||
|
||||
## Skill system
|
||||
@@ -54,8 +54,8 @@ are sharper tools, not a replacement for orchestrator judgement.
|
||||
Specs go to `docs/specs/<milestone>.md`, plans to
|
||||
`docs/plans/<iteration>.md`.
|
||||
|
||||
Autonomous orchestrator mode — picking the next iter from
|
||||
`docs/roadmap.md` and looping until done-state — is gated to the
|
||||
Autonomous orchestrator mode — picking the next iter from the
|
||||
Gitea issue backlog and looping until done-state — is gated to the
|
||||
user-invoked `/boss` skill (`skills/boss/SKILL.md`). Outside
|
||||
`/boss`, the default is interactive collaboration: the user asks,
|
||||
Claude responds, Claude stops.
|
||||
@@ -197,7 +197,7 @@ Vocabulary note: pre-2026-05-09 git history uses "iter" / "family";
|
||||
current vocabulary is "iteration" / "milestone". Old commits are
|
||||
not retroactively renamed.
|
||||
|
||||
## Roles of the `design/` ledger, `git log`, `docs/roadmap.md`, `docs/specs/`, `docs/plans/`
|
||||
## Roles of the `design/` ledger, `git log`, Gitea issues, `docs/specs/`, `docs/plans/`
|
||||
|
||||
- **The `design/` ledger** is the canonical specification. It
|
||||
describes what AILang *is*: schema, semantics, invariants, runtime
|
||||
@@ -210,7 +210,7 @@ not retroactively renamed.
|
||||
the same iteration. The `design/` ledger is also the artefact
|
||||
`ailang-architect` checks the code against during drift review.
|
||||
A contract describes only the actual present state; forward intent
|
||||
goes to `docs/roadmap.md`, history and rationale to `git log`
|
||||
goes to the Gitea backlog, history and rationale to `git log`
|
||||
(see `design/contracts/honesty-rule.md`).
|
||||
|
||||
- **`git log`** is the project history. Iter and audit commit
|
||||
@@ -219,15 +219,21 @@ not retroactively renamed.
|
||||
these bodies at commit time; they are the durable record. Read
|
||||
recent state with `git log -5 --format=full`; chronological scan
|
||||
with `git log --oneline -30`; per-milestone scope with
|
||||
`git log <prev-milestone-close>..HEAD --format=full`.
|
||||
`git log <prev-milestone-close>..HEAD --format=full`. Commits
|
||||
that close a backlog issue reference it via `closes #N` in the
|
||||
body; Gitea auto-closes the issue on push.
|
||||
|
||||
- **`docs/roadmap.md`** (since 2026-05-10): the priority-ordered
|
||||
forward queue — milestones, features, todos, and ideas. The
|
||||
orchestrator owns this file and is responsible for keeping it
|
||||
current: adding new entries, reprioritising, removing items
|
||||
that are done or dropped. Entries are checkbox lines; finished
|
||||
items get checked off, then removed once they stop being
|
||||
interesting context.
|
||||
- **Gitea issues** (since 2026-05-20) are the priority-ordered
|
||||
forward queue — milestones, features, todos, and ideas. Browse:
|
||||
http://192.168.178.103:3000/Brummel/AILang/issues. CLI: `tea
|
||||
issues ls --labels prio:p1` etc. Labels: `kind:{milestone,
|
||||
feature,todo,idea}` and `prio:{p1,p2,p3}`. Big chunks that get
|
||||
their own `docs/specs/` entry live as Gitea **milestones**
|
||||
(containers) plus a `kind:milestone` issue; smaller items are
|
||||
standalone issues. The orchestrator owns the backlog and is
|
||||
responsible for keeping it current: opening new issues,
|
||||
re-labelling for priority, closing on completion (typically via
|
||||
the `closes #N` commit-body trailer).
|
||||
|
||||
- **`docs/specs/<milestone>.md`** (since 2026-05-09): per-milestone
|
||||
design spec produced by `skills/brainstorm`. Hard-gate before any
|
||||
@@ -239,4 +245,4 @@ not retroactively renamed.
|
||||
|
||||
Together these answer three questions: "what is the language right
|
||||
now?" (the `design/` ledger), "how did we get here?" (`git log`),
|
||||
and "what's next?" (roadmap).
|
||||
and "what's next?" (Gitea backlog).
|
||||
|
||||
@@ -52,7 +52,7 @@ run_sweep "3 (schema SoT)" \
|
||||
'^\s*(struct |enum |pub (struct|enum|fn))|whenever the two disagree|ast\.rs is the source of truth'
|
||||
|
||||
run_sweep "4 (workflow + stale cross-references)" \
|
||||
'agents/README\.md|ailang-docwriter|Recently lifted|see the JOURNAL queue|later the same day|Sharpened later|closure conversion in JOURNAL|see the per-iter journal|in a per-iter journal'
|
||||
'agents/README\.md|ailang-docwriter|Recently lifted|see the JOURNAL queue|later the same day|Sharpened later|closure conversion in JOURNAL|see the per-iter journal|in a per-iter journal|docs/roadmap\.md'
|
||||
|
||||
run_sweep "5 (honesty: wunschdenken + non-citation post-mortem)" \
|
||||
'on the path to|may land in a future|ships in a future iter|[Ww]ill back `Show|[Ww]ill eventually (be|support|back)|[Ii]f/?when [a-z]+ (arrives|lands)|[Aa]n earlier draft of this|previously all diagnostics were|[Ww]hat did change in 20|were retired 20[0-9]{2}-|retired in iter [a-z]|originally listed|\bwas deferred\b|foundation for [a-z]'
|
||||
|
||||
@@ -55,7 +55,7 @@ fn design_corpus() -> String {
|
||||
fn design_md_has_no_wunschdenken() {
|
||||
let d = norm(&design_corpus());
|
||||
assert!(!d.contains("is on the path to retirement"),
|
||||
"design/: Boehm retirement is forward intent — it lives in docs/roadmap.md, not the ledger");
|
||||
"design/: Boehm retirement is forward intent — it lives in the Gitea backlog, not the ledger");
|
||||
assert!(!d.contains("Will back `Show Float`"),
|
||||
"design/: 'Will back Show Float' asserts a future capability as fact");
|
||||
assert!(!d.contains("codegen ships in a future iter"),
|
||||
@@ -125,7 +125,7 @@ fn design_md_present_tense_anchors_present() {
|
||||
fn prose_roundtrip_md_has_no_wunschdenken() {
|
||||
let p = norm(&read("docs/PROSE_ROUNDTRIP.md"));
|
||||
assert!(!p.contains("A future iter may layer a tool-use schema"),
|
||||
"PROSE_ROUNDTRIP.md: tool-use/MCP forward intent lives in docs/roadmap.md");
|
||||
"PROSE_ROUNDTRIP.md: tool-use/MCP forward intent lives in the Gitea backlog");
|
||||
assert!(p.contains("the lowest-common-denominator cycle and always works with any client"),
|
||||
"PROSE_ROUNDTRIP.md must close present-tense on the static-prompt path");
|
||||
}
|
||||
|
||||
+4
-3
@@ -56,9 +56,10 @@ evolving in lockstep with the language:
|
||||
sole addressable spine for canonical state), `design/contracts/`
|
||||
(test-linked invariants), `design/models/` (onboarding
|
||||
whitepapers).
|
||||
- **Docs** (`docs/`): `roadmap.md` (forward queue), `specs/`
|
||||
(per-milestone design specs), `plans/` (per-iteration
|
||||
implementation plans). Project history lives in `git log`.
|
||||
- **Docs** (`docs/`): `specs/` (per-milestone design specs),
|
||||
`plans/` (per-iteration implementation plans). Project history
|
||||
lives in `git log`; the forward queue lives in the Gitea issue
|
||||
backlog (http://192.168.178.103:3000/Brummel/AILang/issues).
|
||||
- **Tests**: unit tests per crate plus E2E in `crates/ail/tests/e2e.rs`. Every
|
||||
new compiler path needs a test, otherwise the feature does not count as done.
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ Two things never belong in a contract or model file:
|
||||
|
||||
- **Forward intent** (anything stated as planned, intended, or
|
||||
expected of a future iteration rather than true today) — that
|
||||
lives in `docs/roadmap.md`.
|
||||
lives in the Gitea issue backlog.
|
||||
- **History and rationale** (how a prior draft read, what changed
|
||||
since, why one option was chosen, why another was rejected, what
|
||||
was dropped in some iteration) — that lives in `git log` (iter
|
||||
|
||||
-1058
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: audit
|
||||
description: Use at milestone close OR when baseline drift is suspected. Runs architect drift review against the design/ ledger (spine design/INDEX.md) plus the three regression scripts (bench/check.py, bench/compile_check.py, bench/cross_lang.py). Mandatory at every milestone close; deferral requires an explicit roadmap entry naming the reason and the re-run date.
|
||||
description: Use at milestone close OR when baseline drift is suspected. Runs architect drift review against the design/ ledger (spine design/INDEX.md) plus the three regression scripts (bench/check.py, bench/compile_check.py, bench/cross_lang.py). Mandatory at every milestone close; deferral requires an explicit Gitea backlog issue naming the reason and the re-run date.
|
||||
---
|
||||
|
||||
# audit — milestone-tidy
|
||||
@@ -17,7 +17,7 @@ iteration of a milestone closes and before the next milestone starts.
|
||||
## When to Use / Skipping
|
||||
|
||||
**Mandatory** at every milestone close. Skipping requires an explicit
|
||||
roadmap entry naming:
|
||||
Gitea backlog issue naming:
|
||||
- the blocking sibling milestone (if any),
|
||||
- the reason for deferral,
|
||||
- the date the audit will be re-run.
|
||||
@@ -129,7 +129,7 @@ self-resolve.
|
||||
- Bumping baseline without a paired ratify statement in the audit commit body
|
||||
- Treating exit code 2 as a regression to fix
|
||||
- Closing a milestone with drift items in `pending` state
|
||||
- "We'll re-run after the holidays" without a dated roadmap entry
|
||||
- "We'll re-run after the holidays" without a dated backlog issue
|
||||
|
||||
## Cross-references
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ If `milestone_scope` is empty, return a structural error and stop.
|
||||
- **Drift against the milestone spec** (if one exists). Does the code match
|
||||
the spec's *Components* and *Data flow* sections?
|
||||
- **Growing debt.** Heuristics where the schema is authoritative,
|
||||
TODO/FIXME without a roadmap entry or named owner, `#[allow(dead_code)]`
|
||||
TODO/FIXME without a backlog issue or named owner, `#[allow(dead_code)]`
|
||||
spots that will tip over long-term, magic numbers without named
|
||||
constants in hot paths.
|
||||
- **Consistency across crates.** AST changes that landed in one crate but
|
||||
@@ -93,8 +93,9 @@ If `milestone_scope` is empty, return a structural error and stop.
|
||||
`design/contracts/honesty-rule.md`: a hit is
|
||||
drift unless it is a present-tense correctly-labelled
|
||||
reserved/excluded claim, present-tense design rationale, or a
|
||||
block-quote commit-body citation. Forward intent is roadmap drift;
|
||||
document/project history belongs in `git log`, not in `design/`.
|
||||
block-quote commit-body citation. Forward intent belongs in the
|
||||
Gitea backlog; document/project history belongs in `git log`, not
|
||||
in `design/`.
|
||||
- **Lockstep invariants across files.** Two known cross-file pairings
|
||||
must move together; a new arm in one without the matching update in
|
||||
the other ships silently broken (B1 in the Floats fieldtest is the
|
||||
|
||||
+29
-22
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: boss
|
||||
description: User-invoked only (typed as `/boss`). Activates autonomous orchestrator mode — Claude picks the next iteration from `docs/roadmap.md`, dispatches the appropriate skill, and continues until done-state or genuine bounce-back. Outside `/boss`, the default is interactive collaboration with the user, not autonomous queue execution.
|
||||
description: User-invoked only (typed as `/boss`). Activates autonomous orchestrator mode — Claude picks the next iteration from the Gitea issue backlog, dispatches the appropriate skill, and continues until done-state or genuine bounce-back. Outside `/boss`, the default is interactive collaboration with the user, not autonomous queue execution.
|
||||
---
|
||||
|
||||
# boss — autonomous orchestrator mode
|
||||
@@ -11,14 +11,14 @@ description: User-invoked only (typed as `/boss`). Activates autonomous orchestr
|
||||
|
||||
Autonomous orchestrator mode is the way Brummel-as-LLM moves the
|
||||
AILang project forward when the user is away. Inside this mode,
|
||||
Claude reads `docs/roadmap.md`, picks the top item, dispatches the
|
||||
right skill, integrates the result, and continues to the next item
|
||||
— until the queue is empty (done-state) or a real design fork
|
||||
Claude reads the Gitea issue backlog, picks the top item, dispatches
|
||||
the right skill, integrates the result, and continues to the next
|
||||
item — until the queue is empty (done-state) or a real design fork
|
||||
forces a bounce-back to the user.
|
||||
|
||||
Outside this mode, the default is interactive collaboration: the
|
||||
user asks; Claude answers or executes the specific request; Claude
|
||||
stops. There is no autonomous picking from the roadmap, no
|
||||
stops. There is no autonomous picking from the backlog, no
|
||||
multi-iter sequence chained off a single user message.
|
||||
|
||||
This skill exists to make the mode-switch explicit. Without it,
|
||||
@@ -67,12 +67,16 @@ mode. This skill does not restate them.
|
||||
|
||||
### Step 1 — Read the queue
|
||||
|
||||
`docs/roadmap.md` is the priority-ordered forward queue. Read it
|
||||
first. The top item is the candidate for the next dispatch.
|
||||
The Gitea issue backlog is the priority-ordered forward queue.
|
||||
Browse: http://192.168.178.103:3000/Brummel/AILang/issues. CLI:
|
||||
`tea issues ls --repo Brummel/AILang --labels prio:p1` walks the
|
||||
highest-priority bucket first; drop to `prio:p2` / `prio:p3` when
|
||||
P1 is empty. Read the candidate issue body with `tea issues <N>`.
|
||||
The top P1 item is the candidate for the next dispatch.
|
||||
|
||||
If the queue is empty: skip to Step 5 (done-state). Do not invent
|
||||
work; an empty queue is a real signal that the milestone closed
|
||||
and there is nothing left.
|
||||
If the entire open backlog is empty: skip to Step 5 (done-state).
|
||||
Do not invent work; an empty queue is a real signal that the
|
||||
milestone closed and there is nothing left.
|
||||
|
||||
### Step 2 — Pick the top item per direction-freedom rules
|
||||
|
||||
@@ -147,10 +151,11 @@ Bounce back to the user only when:
|
||||
dependency failure, a discovered invariant violation).
|
||||
- The user has explicitly asked for a checkpoint.
|
||||
- **The next item on the queue is a new milestone** — i.e. a
|
||||
roadmap entry that has no `docs/specs/` file yet and would
|
||||
require dispatching `brainstorm` to even begin. Continuing
|
||||
an open milestone (next iter, audit, fieldtest, post-audit
|
||||
tidy) is autonomous; *starting* a new one is a bounce-back.
|
||||
backlog issue (typically `kind:milestone`) that has no
|
||||
`docs/specs/` file yet and would require dispatching `brainstorm`
|
||||
to even begin. Continuing an open milestone (next iter, audit,
|
||||
fieldtest, post-audit tidy) is autonomous; *starting* a new one
|
||||
is a bounce-back.
|
||||
|
||||
**Why this is different from the other three triggers.** Cross-
|
||||
milestone work is high-context work. A fresh brainstorm alone
|
||||
@@ -162,7 +167,7 @@ Bounce back to the user only when:
|
||||
continuation. A new milestone is therefore the natural
|
||||
checkpoint: stop, surface the candidate, let the user pick the
|
||||
session shape (continue here / spawn fresh / defer / pick a
|
||||
different roadmap item).
|
||||
different backlog item).
|
||||
|
||||
A summary of what shipped is fine and welcome — but in
|
||||
autonomous mode, follow it with the next dispatch, not a
|
||||
@@ -174,7 +179,7 @@ Two states call for a notify; nothing else does:
|
||||
|
||||
1. **Done-state.** The autonomous queue is empty — the milestone
|
||||
closed, the audit ratified, and no further iteration is obvious
|
||||
from the spec or the roadmap (or, in a user-scoped session,
|
||||
from the spec or the backlog (or, in a user-scoped session,
|
||||
every objective the user named has been completed and there is
|
||||
nothing else queued). A finished sub-goal inside a still-open
|
||||
milestone is *not* done-state. If the next iteration is obvious
|
||||
@@ -186,7 +191,7 @@ Two states call for a notify; nothing else does:
|
||||
freedom" — design fork I cannot resolve, an unexpected
|
||||
invariant violation, an external dependency failure, the
|
||||
user has explicitly asked for a checkpoint, or the next
|
||||
roadmap item is a new milestone (no spec yet) and starting
|
||||
backlog item is a new milestone (no spec yet) and starting
|
||||
it would force a fresh `brainstorm`.
|
||||
|
||||
A user-specified stop trigger ("until X is done, then notify")
|
||||
@@ -244,10 +249,10 @@ actionable ask, not a wrap-up summary.
|
||||
|--------|---------|
|
||||
| "Iter just landed cleanly, let me notify so user can see" | Mid-flow notifications burn user attention without giving them a decision to make. Iter-clean is internal progress, not a notify event. |
|
||||
| "Sub-goal of the milestone is done, that counts as done-state" | Done-state is queue-empty, not sub-goal-complete. If the next iter is obvious and substantive, keep dispatching. |
|
||||
| "Top of roadmap has two equally good options, I'll just pick one" | If both are substantive and the choice is non-obvious, that's a real fork — bounce back. The cost of a wrong pick (working-tree discard) is higher than the cost of one short ping to the user. |
|
||||
| "Top of the backlog has two equally good options, I'll just pick one" | If both are substantive and the choice is non-obvious, that's a real fork — bounce back. The cost of a wrong pick (working-tree discard) is higher than the cost of one short ping to the user. |
|
||||
| "User said 'until X then notify', X just completed, notify now" | Check whether X was actually the last actionable thing. If hitting X leaves an open milestone with obvious follow-up, the user's intent was "wake me when there's nothing else to do" — continue. |
|
||||
| "Notify can name the iter code — user will figure out what it means" | No. The notify text is for the user-as-reader who did not watch me work. Iter codes, crate names, function identifiers, type names — all internal, all banned. |
|
||||
| "The previous milestone closed cleanly and the next roadmap item is obvious — just dispatch `brainstorm` and keep going" | No. Starting a new milestone is itself a bounce-back. A fresh `brainstorm` is high-context work, and I cannot compact my own context — only the user can decide whether the next milestone wants a fresh session or a continuation of this one. The "obviousness" of the candidate is irrelevant; the *cross-milestone hop* is the checkpoint, not the topic choice. |
|
||||
| "The previous milestone closed cleanly and the next backlog item is obvious — just dispatch `brainstorm` and keep going" | No. Starting a new milestone is itself a bounce-back. A fresh `brainstorm` is high-context work, and I cannot compact my own context — only the user can decide whether the next milestone wants a fresh session or a continuation of this one. The "obviousness" of the candidate is irrelevant; the *cross-milestone hop* is the checkpoint, not the topic choice. |
|
||||
| "It's the same broad area as the milestone I just closed, that's not really a new milestone" | If there is no `docs/specs/<...>.md` file for it yet and it would route through `brainstorm` to get one, it IS a new milestone for this rule's purposes. The rule keys on "needs a fresh spec", not on subjective continuity. |
|
||||
|
||||
## Red Flags — STOP
|
||||
@@ -257,7 +262,7 @@ actionable ask, not a wrap-up summary.
|
||||
- About to autonomously dispatch in a session where the user did NOT type `/boss`.
|
||||
- About to send a notify that names a crate, an iter code, or an agent.
|
||||
- About to bounce back at every iter boundary "just to be safe" — that's reactive deference, not direction freedom.
|
||||
- About to dispatch `brainstorm` on a roadmap item that does not yet have a spec file, without first bouncing back to the user. New milestones never start autonomously.
|
||||
- About to dispatch `brainstorm` on a backlog issue that does not yet have a spec file, without first bouncing back to the user. New milestones never start autonomously.
|
||||
|
||||
## Cross-references
|
||||
|
||||
@@ -266,8 +271,10 @@ actionable ask, not a wrap-up summary.
|
||||
- **Universal rules:** `CLAUDE.md` — agent role boundaries, commit
|
||||
discipline, design rationale, authority over skills, feature
|
||||
acceptance, TDD-for-bugs, file-role roster.
|
||||
- **Queue:** `docs/roadmap.md` — priority-ordered forward queue
|
||||
consumed by Step 1.
|
||||
- **Queue:** Gitea issues — priority-ordered forward queue
|
||||
consumed by Step 1. Browse:
|
||||
http://192.168.178.103:3000/Brummel/AILang/issues; CLI: `tea
|
||||
issues ls --repo Brummel/AILang --labels prio:p1`.
|
||||
- **Canonical feature-acceptance criterion:**
|
||||
`design/contracts/feature-acceptance.md` — the criterion that gates
|
||||
new features; applied at spec time by `skills/brainstorm`.
|
||||
|
||||
+14
-11
@@ -242,19 +242,22 @@ interpretation:
|
||||
1. Delete the just-written spec file from the working tree
|
||||
(`rm docs/specs/<spec_filename>.md` — a Bash-level delete on the
|
||||
working tree, NOT `git rm`; the file was never committed).
|
||||
2. Append a roadmap entry to `docs/roadmap.md` pointing forward to a
|
||||
future re-brainstorm, under the appropriate priority bucket:
|
||||
2. Open a Gitea backlog issue pointing forward to a future
|
||||
re-brainstorm, under the appropriate priority bucket:
|
||||
|
||||
```markdown
|
||||
- [ ] **[<kind>]** <idea title> — <one-line description>
|
||||
- context: <why this is deferred>
|
||||
- depends on: <name of the unratified mechanism>
|
||||
```bash
|
||||
tea issues create --repo Brummel/AILang \
|
||||
--title "<idea title>" \
|
||||
--labels "kind:<milestone|feature|todo|idea>,prio:p2" \
|
||||
--description "<one-line description>
|
||||
|
||||
**context:** <why this is deferred>
|
||||
**depends on:** <name of the unratified mechanism>"
|
||||
```
|
||||
|
||||
3. Tell the user the spec was retired and which roadmap entry was
|
||||
added. The user / Boss commits the roadmap edit (suggested
|
||||
commit subject: `spec: retire <spec topic> — depends on
|
||||
<unratified mechanism>`).
|
||||
3. Tell the user the spec was retired and which Gitea issue was
|
||||
filed (include the issue number). No commit is needed for the
|
||||
backlog entry — Gitea is the live store.
|
||||
|
||||
After the failure-mode procedure runs, the brainstorm session ENDS.
|
||||
There is no Step 8, no Step 9. The idea is parked until the
|
||||
@@ -305,7 +308,7 @@ Hand off carries:
|
||||
| user → `brainstorm` | new milestone request |
|
||||
| `brainstorm` → `ailang-grounding-check` (Step 7.5) | `spec_path` + `iteration_scope` |
|
||||
| `brainstorm` → `planner` (Step 9, on PASS or overridden BLOCK) | path to spec + iteration scope |
|
||||
| `brainstorm` → roadmap (Step 7.5, on no-override BLOCK) | `depends on:` entry added to `docs/roadmap.md` in the working tree, spec file deleted from the working tree; Boss commits the roadmap edit |
|
||||
| `brainstorm` → Gitea backlog (Step 7.5, on no-override BLOCK) | new issue opened via `tea issues create` naming the unratified dependency; spec file deleted from the working tree (no commit needed) |
|
||||
|
||||
## Common Rationalisations
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Trigger conditions are any of:
|
||||
|
||||
- `cargo doc --no-deps 2>&1` shows accumulated warnings across
|
||||
multiple crates after a stability window of several milestones.
|
||||
- A roadmap entry like "Rustdoc warning sweep" has matured — the
|
||||
- A backlog issue like "Rustdoc warning sweep" has matured — the
|
||||
surface it targets has not moved for a while.
|
||||
- Onboarding-readability check: navigating `cargo doc --open` for a
|
||||
crate is not self-supporting without the design/ ledger.
|
||||
@@ -86,4 +86,4 @@ iteration; `docwriter` does not self-resolve.
|
||||
Fieldtest can surface bugs or architecture problems that would
|
||||
invalidate the doc work.
|
||||
- **Hand-off target:** orchestrator (me). Findings flow into the
|
||||
roadmap as candidates for a follow-up tidy iteration.
|
||||
Gitea backlog as candidates for a follow-up tidy iteration.
|
||||
|
||||
@@ -89,7 +89,7 @@ YOU NEVER COMMIT. RUSTDOC EDITS LIVE IN THE WORKING TREE; THE BOSS COMMITS.
|
||||
confusing it needs renaming, raise it in your report instead of changing
|
||||
it.
|
||||
- No new `pub` exports. Visibility stays as-is.
|
||||
- No edits in `docs/` or `design/`. The orchestrator owns the design/ ledger and the roadmap.
|
||||
- No edits in `docs/` or `design/`. The orchestrator owns the design/ ledger and the Gitea backlog.
|
||||
- Don't paper over broken behaviour with prose — if doc-writing surfaces
|
||||
a real bug (a function whose doc you cannot honestly write because it
|
||||
doesn't actually do what it claims), stop and report it.
|
||||
|
||||
@@ -58,7 +58,7 @@ routing table below applies in all cases.
|
||||
**Skipping is not permitted** for:
|
||||
- A milestone that introduced or changed surface syntax, schema,
|
||||
effects, types, modes, or any user-visible diagnostic.
|
||||
- A milestone whose commit body or roadmap entry claims "LLM author
|
||||
- A milestone whose commit body or backlog issue claims "LLM author
|
||||
can now write X". `fieldtest` is the gate that empirically
|
||||
substantiates such claims; an unverified claim is drift.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user