#1 dog-boot: bootstrap (#2)
Patch
.forge/ci/steps/01_test.sh+5 −0--- /dev/null+++ b/.forge/ci/steps/01_test.sh@@ -0,0 +1,5 @@1+#!/bin/sh2+# 01_test: workspace tests must pass (55 tests).3+set -e4+export CARGO_BUILD_JOBS=25+cargo test --workspace --locked
.forge/ci/steps/02_budget.sh+20 −0--- /dev/null+++ b/.forge/ci/steps/02_budget.sh@@ -0,0 +1,20 @@1+#!/bin/sh2+# 02_budget: byte-count hard budgets (PLAN M2).3+# root help <=300B/12 lines; --skill <=900B/30 lines; each <cmd> -h <=250B/8 lines.4+set -e5+export CARGO_BUILD_JOBS=26+fail() { echo "budget fail: $1" >&2; exit 1; }7+check() {8+ name="$1"; bytes="$2"; lines="$3"; maxb="$4"; maxl="$5"9+ if [ "$bytes" -gt "$maxb" ]; then fail "$name ${bytes}B > ${maxb}B"; fi10+ if [ "$lines" -gt "$maxl" ]; then fail "$name ${lines} lines > ${maxl}"; fi11+}12+bytes=$(f0rge | wc -c); lines=$(f0rge | wc -l)13+check "root help" "$bytes" "$lines" 300 1214+bytes=$(f0rge --skill | wc -c); lines=$(f0rge --skill | wc -l)15+check "--skill" "$bytes" "$lines" 900 3016+for sub in issue pr task label milestone ci wiki release merge init skill; do17+ bytes=$(f0rge "$sub" -h | wc -c); lines=$(f0rge "$sub" -h | wc -l)18+ check "$sub -h" "$bytes" "$lines" 250 819+done20+echo "budgets ok"
.forge/ci/steps/03_release.sh+5 −0--- /dev/null+++ b/.forge/ci/steps/03_release.sh@@ -0,0 +1,5 @@1+#!/bin/sh2+# 03_release: release build must succeed.3+set -e4+export CARGO_BUILD_JOBS=25+cargo build --locked --release
.forge/wiki/docs/AGENTS.md+3 −3--- a/AGENTS.md+++ b/.forge/wiki/docs/AGENTS.md@@ -15,7 +15,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).1515 1. `AGENTS.md` — this file1616 2. `OUTLINE.md` — the what/why; read once before any work1717 3. `PLAN.md` — the how/when; find your chunk, obey its contract exactly18-4. `spec/` — frozen schema (exists after M0); the only source of truth for formats18+4. `spec/` at repo root — frozen schema (exists after M0); the only source of truth for formats1919 2020 ## Philosophies (non-negotiable)2121 @@ -49,7 +49,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).4949 PR folder (`diff` + `.forge/prs/<uuid>/`), CI green before merge.5050 - Claim one chunk from PLAN.md; do exactly its scope (Inputs → Outputs →5151 Interfaces → Definition of done). Never expand scope mid-chunk.52-- Log one line per chunk in `docs/build-log.md`: `chunk | sha | verdict`.52+- Log one line per chunk in `build-log.md` (co-located in `.forge/wiki/docs/`): `chunk | sha | verdict`.5353 - When a change smells like design, file an issue — don't improvise into5454 code. Design changes go to OUTLINE.md first, then PLAN.md, then code.5555 @@ -70,7 +70,7 @@ dogfoods: building f0rge is the first f0rge project (from PLAN M3 on).7070 - Errors: one line on stderr + exit code (0 ok / 1 runtime / 2 usage).7171 No panics on hostile input. No stack traces. No paths beyond the7272 offending file name.73-- Output: `--json` compact, fixed field order documented in spec/; empty73+- Output: `--json` compact, fixed field order documented in repo-root `spec/`; empty7474 result is `[]` or `{}`, never prose. Human mode is a thin aligned view7575 of the same data. Hard budgets: PLAN.md §M2 table — `f0rge` ≤ 12 lines,7676 `-h` ≤ 8 lines, `--skill` ≤ 30 lines, errors 1 line.
OUTLINE.md+0 −0
.forge/wiki/docs/PLAN.md+2 −2--- a/PLAN.md+++ b/.forge/wiki/docs/PLAN.md@@ -71,7 +71,7 @@ Both crates `#![forbid(unsafe_code)]`.7171 ## 2. Milestones and their dependency graph7272 7373 ```74-M0 schema v1 frozen (spec/) — blocks everything74+M0 schema v1 frozen (repo-root spec/) — blocks everything7575 M1 core storage + derived indexes — blocks all entity commands7676 M2 CLI skeleton + token budgets — blocks polish; parallel w/ M37777 M3 entity commands: issues, prs, labels, milestones, tasks@@ -343,7 +343,7 @@ hashes documented.343343 344344 1. A chunk lists **Inputs / Outputs / Interfaces / Definition of done**.345345 Claim one, build it, run its acceptance tests, record the result in346- `docs/build-log.md` (one line per chunk: chunk, sha, verdict).346+ `build-log.md` (co-located in `.forge/wiki/docs/`) (one line per chunk: chunk, sha, verdict).347347 2. Monorepo, single trunk: work happens in worktrees; merges onto main348348 are the same ritual as the product itself — this repo eats its own349349 dogfood from M3 onward.
tests/audit.md+0 −0
docs/build-log.md+0 −10--
Comments (0)
No comments yet.
Reviews (1)
-
unknown · · commented
closing: superseded. the docs live in .forge/wiki/docs now, and the CI steps landed as 00-03 (audit/test/budget/release). the bootstrap files in this branch are stale.