Files
Brummel 832375f2ac convention: counter-prefix file naming across docs/specs/, docs/plans/, design/contracts/, design/models/
All 176 files in the four accumulating directories now use a
zero-padded 4-digit counter prefix that reflects creation order
(`NNNN-slug.md`). The counter is assigned per directory in strict
git-log creation order; ties broken alphabetically by original name.
The old `YYYY-MM-DD-` prefix on docs/specs/ and docs/plans/ files is
dropped — the date is recoverable from git log and the counter
carries the ordering.

A file's counter is stable for the life of the file: never reassigned,
never reused, never compacted. Deleted files retire their counter;
subsequent files do not fill the gap. This is the property that lets
cross-references stay literal — refs use the full filename including
the counter (`design/contracts/0007-honesty-rule.md`) so they grep
cleanly and resolve directly without a glob step.

313 cross-references updated across .md/.rs/.toml/.c/.json files
(test pins, include_str! paths, design-INDEX entries, baseline notes,
runtime C comments, inter-contract markdown links incl. bare basename
and `../models/foo.md` forms).

CLAUDE.md gets a new "File-naming convention" section spelling out
the rule and rationale. skills/brainstorm/SKILL.md and
skills/planner/SKILL.md updated so new spec/plan creation produces
counter-prefixed names from the start.

The full test suite (cargo test --workspace) passes.
2026-05-28 13:31:31 +02:00

321 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ms.2 — Multi-subject run + DESIGN.md addendum extension — Implementation Plan
> **Parent spec:** `docs/specs/0018-multi-subject-codellama.md`
>
> **For agentic workers:** REQUIRED SUB-SKILL: use `skills/implement`
> to run this plan. Steps use `- [ ]` checkboxes for tracking.
**Goal:** With the ms.1 fix landed, execute two live IONOS harness
runs — a retroactive Qwen3-Coder-Next re-run plus a first-ever
CodeLlama-13b run — and extend the DESIGN.md §"Decision 6 /
Empirical addendum (2026-05-12)" with a per-cell four-column table
spanning both subjects. Close the roadmap P3 entry.
**Architecture:** The harness binary is unchanged; ms.2 invokes
`cargo run` twice with different `--model` flags, captures the
output dirs, and writes the comparative addendum. The user is
paying for IONOS tokens — no waste, no exploratory re-runs.
**Tech Stack:** existing `xmodel_harness` binary, IONOS chat
completions API, manual prose-writing for DESIGN.md.
**Files this plan creates or modifies:**
- Create: `experiments/2026-05-12-cross-model-authoring/runs/<new-date>-<qwen-hash>/` — populated by the Qwen re-run cargo invocation
- Create: `experiments/2026-05-12-cross-model-authoring/runs/<new-date>-<codellama-hash>/` — populated by the CodeLlama run cargo invocation
- Modify: `docs/DESIGN.md` lines 604-636 — extend §"Empirical addendum (2026-05-12)" with one follow-up paragraph and a four-column table
- Modify: `docs/roadmap.md` lines 253-268 — remove the P3 "Multi-subject expansion" entry
- Create: `docs/journals/2026-05-12-iter-ms.2.md` — per-iter journal
- Modify: `docs/journals/INDEX.md` — add ms.2 entry pointing at the new journal file
**Recon note (Boss-direct, no agent dispatch):** the file map is
already loaded — DESIGN.md anchor verified at line 604 during
brainstorm; roadmap.md P3 entry verified at line 253; journal
pattern established by cma.{1,2,3}. `ailang-plan-recon` dispatch
skipped — context already loaded.
---
## Task 1: Qwen retroactive re-run (with fixed pipeline)
**Files:**
- Create: `experiments/2026-05-12-cross-model-authoring/runs/<new-date>-<qwen-hash>/`
- [ ] **Step 1: Confirm IONOS token is in scope**
Run: `test -r ~/.ionos_token && echo "ok: token readable" || echo "MISSING"`
Expected: `ok: token readable`. If MISSING, bounce to the user.
- [ ] **Step 2: Pre-flight binaries**
Run: `~/.local/bin/ail --version && clang --version | head -1`
(Or whichever `AIL_BIN` resolves to.) Expected: both report a
version. If `ail` is not at `~/.local/bin/ail`, set `AIL_BIN`
to the actual release-build path under the workspace target dir.
- [ ] **Step 3: Build the harness binary in release mode**
Run: `cargo build --release --manifest-path experiments/2026-05-12-cross-model-authoring/harness/Cargo.toml`
Expected: clean build, no warnings introduced (the ms.1 fix
already merged).
- [ ] **Step 4: Run the Qwen re-run**
Run:
```bash
IONOS_API_TOKEN=$(cat ~/.ionos_token) \
cargo run --release --manifest-path experiments/2026-05-12-cross-model-authoring/harness/Cargo.toml -- \
--rendered experiments/2026-05-12-cross-model-authoring/rendered \
--tasks experiments/2026-05-12-cross-model-authoring/master/tasks \
--out experiments/2026-05-12-cross-model-authoring/runs \
--model Qwen/Qwen3-Coder-Next
```
Expected:
- Process exits 0.
- A new directory under `runs/` named `<YYYY-MM-DD>-<hash>/` is
created.
- `runs/<new-date>-<hash>/RUN_STATUS` contains `ok`.
- `runs/<new-date>-<hash>/summary.md` lists 8 cells (4 tasks × 2
cohorts) with non-empty entries.
- `runs/<new-date>-<hash>/scores.csv` has 8 data rows + header.
If RUN_STATUS contains `budget_exceeded` instead of `ok`, that is
NOT a failure for this milestone — record the partial dataset and
proceed.
- [ ] **Step 5: Capture the new run dir name**
Run: `ls -1 experiments/2026-05-12-cross-model-authoring/runs/ | tail -1`
Record the directory name; it will be referenced in DESIGN.md and
in the journal. (This is the new Qwen dir.)
## Task 2: CodeLlama-13b run
**Files:**
- Create: `experiments/2026-05-12-cross-model-authoring/runs/<new-date>-<codellama-hash>/`
- [ ] **Step 1: Run the CodeLlama harness invocation**
Run:
```bash
IONOS_API_TOKEN=$(cat ~/.ionos_token) \
cargo run --release --manifest-path experiments/2026-05-12-cross-model-authoring/harness/Cargo.toml -- \
--rendered experiments/2026-05-12-cross-model-authoring/rendered \
--tasks experiments/2026-05-12-cross-model-authoring/master/tasks \
--out experiments/2026-05-12-cross-model-authoring/runs \
--model meta-llama/CodeLlama-13b-Instruct-hf
```
(Boss pre-flighted the IONOS `/v1/models` catalogue during
planning. `CodeLlama-13b` as named in the brainstorm record is
NOT in the catalogue; the actual entry is the Instruct-tuned
HuggingFace-mirror `meta-llama/CodeLlama-13b-Instruct-hf`, and
that is what the harness must be invoked with.)
Expected outcomes branch:
(a) **Happy path:** process exits 0, new `runs/<date>-<hash>/`
directory created with `RUN_STATUS=ok` and 8 cells populated.
(b) **Model rejected:** unlikely given the pre-flight, but if
the harness exits non-zero with an `Auth(400)`-class error
mentioning "invalid-model-id" or "model 'X' is not available":
- Capture the exact error text (stderr from cargo run).
- Bounce to the user with the error verbatim. Do not retry
with a different model autonomously.
(c) **Network / 5xx exhaustion:** the harness's retry policy
exhausted and exited non-zero. Inspect, retry once manually if
transient, otherwise bounce.
- [ ] **Step 2: Capture the new run dir name (happy-path only)**
Run: `ls -1 experiments/2026-05-12-cross-model-authoring/runs/ | tail -1`
Record the directory name for the journal and DESIGN.md addendum.
## Task 3: Compute per-cell metrics
**Files:** (none modified; data extraction only)
- [ ] **Step 1: Read both new `scores.csv` files**
Each row of `scores.csv` covers one cell (one cohort × one task).
Columns the harness emits (current schema, verifiable at
`harness/src/scoring.rs`): task, cohort, status, turns_used,
prompt_tokens_total, completion_tokens_total, top_error_class.
For each new run dir, sum prompt_tokens_total and
completion_tokens_total across all 8 rows, and count green vs
non-green statuses per cohort.
- [ ] **Step 2: Produce a per-cell summary**
The DESIGN.md table needs four cells per metric. Per metric, per
(model, cohort), report the same five rows the current addendum
table has:
| metric | Qwen / JSON | Qwen / AILX | CodeLlama / JSON | CodeLlama / AILX |
|---|---|---|---|---|
| reached green | M/4 | M/4 | M/4 | M/4 |
| first-attempt green | M/4 | M/4 | M/4 | M/4 |
| mean turns-to-green (green only) | x.x | x.x | x.x | x.x |
| total prompt tokens | N,NNN | N,NNN | N,NNN | N,NNN |
| total completion tokens | N,NNN | N,NNN | N,NNN | N,NNN |
| top error class | <class> (×N) | <class> (×N) | <class> (×N) | <class> (×N) |
Use the shortened display label `CodeLlama-13b-Instruct` in the
table header; the canonical IONOS model id
`meta-llama/CodeLlama-13b-Instruct-hf` belongs in the body prose
("Subjects:" section) where the run-directory pointer also goes.
Fill the cells with the actual numbers from Step 1.
If "mean turns-to-green" has zero green tasks in a cohort, write
`—` instead of `0.0`.
## Task 4: DESIGN.md addendum extension
**Files:**
- Modify: `docs/DESIGN.md` lines 604-636 — extend the existing
addendum with the new paragraph + new four-column table format
replacing the existing two-column table
- [ ] **Step 1: Read the existing addendum**
Run: `sed -n '604,636p' docs/DESIGN.md`
Expected: the existing addendum block from "### Empirical addendum
(2026-05-12)" through to the "Scope of this addendum:" paragraph.
- [ ] **Step 2: Plan the replacement structure**
The replacement keeps the existing prose framing but:
- Replaces the two-column table with the four-column table from
Task 3.
- Adds one new paragraph after the existing "first-attempt
success" sentence, framing the CodeLlama second subject.
- Updates the run-directory reference to name both new run dirs
(the cma.3 baseline dir stays as historical reference if useful
— drop it if it's redundant once the new Qwen dir replaces it).
- Updates the scope paragraph: "single subject" → "two subjects";
pending claim still pending but stronger evidence base.
- [ ] **Step 3: Apply the edit**
Use a single `Edit` tool call with the old_string covering the
whole existing addendum block (lines 604-636) and the new_string
containing the replacement. The new block should be approximately
the same length (~33 lines), structured as:
```markdown
### Empirical addendum (2026-05-12)
Cross-model measurement against two foreign LLMs via IONOS,
temperature=0, top_p=1, max-turns=5. Two blind cohorts on the same
four MVP tasks (`t1_add_three`, `t2_length`, `t3_main_prints`,
`t4_count_zeros`); each cohort sees only its own form's mini-spec.
Subjects:
- `Qwen/Qwen3-Coder-Next`
`experiments/2026-05-12-cross-model-authoring/runs/<new-qwen-dir>/`
- `meta-llama/CodeLlama-13b-Instruct-hf`
`experiments/2026-05-12-cross-model-authoring/runs/<new-codellama-dir>/`
| metric | Qwen / JSON | Qwen / AILX | CodeLlama / JSON | CodeLlama / AILX |
|---|---|---|---|---|
| reached green | M/4 | M/4 | M/4 | M/4 |
| first-attempt green | M/4 | M/4 | M/4 | M/4 |
| mean turns-to-green (green only) | x.x | x.x | x.x | x.x |
| total prompt tokens | N,NNN | N,NNN | N,NNN | N,NNN |
| total completion tokens | N,NNN | N,NNN | N,NNN | N,NNN |
| top error class | <class> (×N) | <class> (×N) | <class> (×N) | <class> (×N) |
[paragraph framing the AILX-vs-JSON pattern; whether both subjects
agree on direction; whether CodeLlama replicates Qwen's
half-token-cost / one-sixth-completion result, or shows a
different shape; whether the only-first-attempt-green-was-AILX
property holds]
**Scope of this addendum:** two subjects, n=1 each, deterministic.
This is a second data point, not a verdict. The universal claim
of this Decision (".ailx is the AI authoring projection") would
need ≥3 subjects with statistical robustness to ratify; both
current points point in the same direction (AILX-cohort cheaper
and at-least-as-green) [or: diverge — write whichever the data
shows].
```
- [ ] **Step 4: Verify the edit**
Run: `sed -n '604,640p' docs/DESIGN.md`
Expected: the new four-column block is in place, the old
two-column block is gone, the cma.3 baseline dir reference is
either kept (with a clear "(original baseline)" annotation) or
removed (replaced by the new Qwen dir).
## Task 5: Roadmap close + INDEX entry + journal
**Files:**
- Modify: `docs/roadmap.md` lines 253-268 — remove the P3 "Multi-subject expansion" entry
- Create: `docs/journals/2026-05-12-iter-ms.2.md` — per-iter journal
- Modify: `docs/journals/INDEX.md` — add ms.2 entry
- [ ] **Step 1: Remove the roadmap P3 entry**
In `docs/roadmap.md`, locate the bullet starting "- [ ]
**\[milestone\]** Multi-subject expansion (cross-model authoring-form
follow-up)" (lines 253-268) and remove the entire entry
(checkbox + context lines, including the blank line above if it
becomes a double-blank).
- [ ] **Step 2: Write the per-iter journal**
Create `docs/journals/2026-05-12-iter-ms.2.md` (≤300 words)
covering:
- Both new run dir names and their RUN_STATUS values
- The four-cell summary table (or pointer to DESIGN.md addendum)
- Whether the CodeLlama data replicates Qwen's direction or diverges
- Any anomalies encountered (timeouts, retry exhaustion, model
rejection bounces, partial budget_exceeded runs)
- One-line mirror: "Roadmap P3 'Multi-subject expansion' entry
removed in this iter."
- Token spend for the milestone (sum of both runs' prompt + completion)
- [ ] **Step 3: Update INDEX.md**
Append two entries to `docs/journals/INDEX.md` after the existing
audit-cma entry:
```
- 2026-05-12 — iter ms.1: pipeline.rs anyhow-chain preservation fix (2-char delta + RED→GREEN unit test; harness suite 13→14) → 2026-05-12-iter-ms.1.md
- 2026-05-12 — iter ms.2: Qwen retroactive re-run + first CodeLlama-13b run; DESIGN.md §Decision-6 addendum extended to four cells; roadmap P3 removed → 2026-05-12-iter-ms.2.md
```
(Update the language in the ms.2 line if CodeLlama-13b was
rejected and a different model ran in its place.)
## Task 6: Final acceptance sweep
**Files:** (none modified; verification only)
- [ ] **Step 1: Confirm all spec acceptance criteria are green**
For each of the 7 criteria in
`docs/specs/0018-multi-subject-codellama.md` §"Acceptance
criteria", verify the corresponding artefact exists in the working
tree. Report green/red per criterion in the iter journal.
- [ ] **Step 2: cargo test the harness (sanity)**
Run: `cargo test --manifest-path experiments/2026-05-12-cross-model-authoring/harness/Cargo.toml`
Expected: 14 passed (no change from ms.1 close).