mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-03 00:05:11 -04:00
223 lines
24 KiB
Markdown
223 lines
24 KiB
Markdown
# PhaseEnd — Phase 34: The flip and the Gen2 exit — the repository public, the boards and the wiki live, the outreach sent, the tree shaped for readers
|
||
**Date:** 2026-09-08 · **Project Version:** 2.0.0 · **Phase Status:** Complete (milestone confirmed by Drew, gate 2 — 2026-09-08, "milestone met, write the phaseend") · **Generation:** Gen2 **EXIT** (the 25th and last phase of the arc: 8→…→33→33.5→**34**)
|
||
|
||
> Chartered by `docs/phase34-seed.md` (the flip-gated remainder of Phase 33, re-chartered 2026-09-07). Ran **one session (S93,
|
||
> 2026-09-08)** and **24 commits** (`c9dffdcfd..577da268e`; baseline `eb342dc9f`, Drew's Phase-33.5 close). The granular trail —
|
||
> every check's literal output, the three instrument findings, every owner decision in its own words — is at
|
||
> **`phase-ends/logs/Phase34.md`** (R19, on demand). Owner decisions (Drew): gate 1 (plan mode, Max: R84–R95 ratified; metadata and the
|
||
> ruleset set by Claude on his word; a GitHub Release; "no other clone" — corrected by the preflight, see Deviations); the flip itself;
|
||
> the compiler choice on decomp.me; three one-off R6 waivers for the wiki repository ("sync it"); frogress skipped; `docs/outreach/`
|
||
> and `docs/sunset/` out of the tree, `tools/sunset/` kept; the timeline in the README; the `#ai` reply in his own words; the xsig v2
|
||
> direction recorded for Gen3; gate 2.
|
||
|
||
## Build Log
|
||
|
||
**The phase in one line:** the purge probe passed twice, Drew flipped the repository public, and in the same day the after-flip
|
||
checks, the metadata and the `protect-main` ruleset, the decomp.dev card, the wiki (32 pages), the decomp.me preset request with a
|
||
100% scratch, the Archipelago note, the tool announcement and two Decompedia rows, and the aftercare (9 GB of dead scratch pruned,
|
||
the record updated, two folders taken out of the public tree on the owner's decision) were done — with three instrument defects
|
||
found and fixed on the way, and the close health chain green on its fifth run.
|
||
|
||
**Files created/changed and complete — do not recreate** (category summaries; the per-commit list is `git log eb342dc9f..577da268e`
|
||
and the archived log):
|
||
|
||
- **Governance and record:** `phase-ends/CURRENT_PHASE.md` (→ `phase-ends/logs/Phase34.md`); `phase-ends/DIGEST.md` §0/§1/§3/§4 (R84–R95 in
|
||
full; the flip date; the archive rows as the record); `docs/decision-log.md` "P34 S93 — the flip" (R31); `docs/accelerators.md` P34 S93
|
||
(three); `docs/SETUP.md` (the posture section: flip date, probe, ruleset id 22564862, wiki, decomp.dev; §6.5 outcome; ledger row 14
|
||
CLOSED; the E2 SENT bullet; the D1–D3 outcome; two new/extended tool rows; the retired-tools heading); `docs/gen3-handoff.md` §7
|
||
(**xsig v2**: 1-to-1 first, then the sequence tier, the structural family and atlas cousins, returning the matched tier and the
|
||
difference); `.gitignore` (the `.run/P34/` evidence allowlist; `/docs/outreach/*`; `/docs/sunset/*` — contents form, R84).
|
||
- **The public surface:** `README.md` — the generated timeline SVG under the progress block with its provenance line; the wiki pages
|
||
`Archive-index.md`, `Docs-and-scratch-conventions.md`, `Reference-index.md`, `Repository-layout.md`, `Where-the-project-goes-next.md`
|
||
(the public tree's shape; the archive rule is now "an Archive-index row, then delete in the same commit"), `Start-a-new-decomp-project.md`
|
||
(DK-1…DK-81); `docs/history/README.md`; `docs/story-timeline.md/.svg` regenerated (73 rows). **Removed from the tree:** `docs/outreach/`
|
||
(2 files, sent) and `docs/sunset/` (60 files, the reviewed archive) — no rewrite; the history at v1.32.1 keeps them; `tools/sunset/`
|
||
(35 files) stays for the tool index.
|
||
- **Tools (each with its SETUP row, R21; the kit corpus regenerated, `tool_census --check` 0 gaps):** `tools/verbatim_target_s.py --gas`
|
||
(the ASSEMBLABLE target form: `$`-registers, `.L<addr>` labels, symbol names for external jumps, `.set noat`/`noreorder`, no `.include`);
|
||
`tools/decompme_replica.sh` steps **D** (the paste itself through decomp.me's own `as` wrapper — fed on STDIN — linked at the address,
|
||
26/26 words) and **E** (Drew's bundle written from the proven run); `tools/cdecl.py` (`--audit` creates its scratch dir and REFUSES,
|
||
never misgrades, when the gcc adjudication cannot run); `tools/doc_links.py` DEFAULT list; `config/tool_dictionary.tsv`;
|
||
`config/kit_coverage_map.tsv` (twelve dispositions for R84–R95, each naming the kernel or rule that carries it).
|
||
- **The kit:** `decomp-architect/corpus/decomp-kernels.md` **DK-81** (the flip day: a third-party step proven through the third party's
|
||
toolchain on the pasted file; the public tree decided before the flip; a calendar gate read the next morning; a scratch prune is an
|
||
instrument change); `decomp-architect/README.md`; the corpus copies (tools, record) regenerated by `make kit-corpus`.
|
||
- **Evidence (`.run/P34/`, allowlisted, text only):** `probe/pre_flip.log`, `probe/after_flip.log`; `flip/` (the repo JSON before/after,
|
||
the curl codes, the metadata and ruleset API outputs, the runs, the gate-2 re-check); `outward/` (the wiki dry-runs and pushes, the
|
||
scratch/issue checks, the decomp.dev page, the frogress checks, the xsig API output, the Decompedia verification, the replica run after
|
||
the fix); `c11/` (the inventory, the prune with sizes, the cdecl and kit_coverage proofs); `tools_health_close.log` (run 5, 5,917 lines).
|
||
- **GitHub, outside the tree:** `Druthulu/BFM-decomp` public (description, 7 topics, homepage = the wiki; `has_wiki`; the `protect-main`
|
||
ruleset id 22564862, no bypass actors); the wiki repository (`BFM-decomp.wiki`, three syncs, last `73ab268`); `Druthulu/xsig` (7 topics,
|
||
homepage); the decomp.dev project (hero image set by Drew); decompme/decomp.me#2106; AegeusEvander/Brave-Fencer-Musashi-AP-World#1;
|
||
the Decompedia PlayStation pages (a tools row and a projects row, edited in-site by Drew).
|
||
|
||
**Tools/packages installed:** none (no apt/pip; no new external tool). Agents: none — every step this phase was the owner's action or a
|
||
deterministic check.
|
||
|
||
**Verification results (literal, at close — S93, HEAD `577da268e`, tree clean, 4 commits ahead of `origin/main` for Drew's push):**
|
||
- **The gate-2 live re-check (20:18 UTC, `.run/P34/flip/gate2_recheck.txt`):** `gh api repos/Druthulu/BFM-decomp` → `"private":false,
|
||
"visibility":"public","has_wiki":true,topics 7,homepage ".../wiki"`; rulesets → `protect-main` id 22564862 `enforcement:active`; the
|
||
archive repo → `"private":true`; xsig → 7 topics + homepage; unauthenticated **200** for the repo page, the raw badge JSON, the wiki's
|
||
Reference index, the decomp.dev page, issue #2106 and issue #1 (the repo page, the badge and the wiki were **404** on the morning's
|
||
private controls); `gh run list` → `no-rom success` and `progress success` on `a13d1cd9a` (the public repo; every push this phase green).
|
||
- **The probe:** before the flip `probe: PASS — every sampled old hash is gone` (33 `gone` of 33, control OK, exit 0, no working-repo
|
||
warning); after the flip `--after-flip` PASS 33/33 including the unauthenticated 7-char commit pages (`.run/P34/probe/*.log`).
|
||
- **`make tools-health` (run 5, 480 s): `tools-health: OK — sigs fresh; corpus(+resident) + cdecl + binaries + report(lint+dedup) +
|
||
cookbook-index all green.`** audit-binaries 218/218 · corpus 0 PHANTOM + 0 TRUNCATED · cdecl ALL ORACLES GREEN (unparsed 4 → NOT-C 4,
|
||
DEFECTS 0; gcc 4,777 accepted / 0 rejected) · dedup 2,220 / 0 · audit-digest OK (13,492,113 / 13,492,113; 90,984 / 90,984) ·
|
||
progress + timeline fresh (73 rows) · `sdk-dual` OK (main `143dbb89f34491258bbc27810d0a12ec8b43a8dd` with and without the SDK) ·
|
||
doc_links 56 documents / 454 links / 0 pending / 0 broken / coverage 63 of 63 · gccmap_cites OK · ghidra_roster OK (6) · tool_census
|
||
OK (359 + 28, 0 gaps) · kit_lint OK · kit_coverage OK (rules R1..R95 0 uncovered; 60 accelerator entries 0 uncovered) ·
|
||
split_indicator 218 OK · xsig tests OK (8). **No build input changed in this phase; R22 was not owed** — the fleet's 218/218 from the
|
||
Phase-33 close stands and is asserted by the digest checks.
|
||
- **decomp.me:** the replica after the fix → A BYTE-IDENTICAL 26/26 · B (control) 26/26 · C1/C2 identical text · **D the pasted target
|
||
BYTE-IDENTICAL 26/26** · E bundle written → PASS; Drew's scratch <https://decomp.me/scratch/mIu4d> at **100% / score 0**; the manual
|
||
search closed ledger row 14 (no other BFM scratch exists).
|
||
- **The wiki:** three syncs (`fec3777..75c17d0`, `..be8a6cc`, `..73ab268`), 32 pages, the live pages verified unauthenticated (200; 0
|
||
relative `.md` links left; the last sync's page shows DK-81).
|
||
- **The prune:** disk 46 GB → 37 GB used (33 GB free); keep-set intact (`obj40`, `decompme`, `wiki`, `verbatim_targets`,
|
||
`ghidra_export`, 223 sig files); tracked `.run` files 952, missing 0; `.run/public_rewrite/` 1.1 GB → 352 KB (the probe's two inputs).
|
||
- The headless Ghidra MCP (never used this phase — no RE work) stopped via the sentinel at the close (R23; the archived log's last entry
|
||
quotes the stop); nothing under `ghidra/` is tracked.
|
||
|
||
**Milestone achieved (confirmed by Drew, gate 2 — 2026-09-08):** all three items of the seed's milestone, on their literal reading —
|
||
(1) public, the old hashes gone, CI green on the public repo, the wiki live, the archive repo private, the ruleset active, B3's proof
|
||
standing; (2) every outward action done with its URL or **pending by name** (P9): the decomp.me preset's creation by its maintainers,
|
||
a reply from the Archipelago world, frogress (skipped; the request + push recipe recorded); (3) C11 done, this PhaseEnd written with
|
||
the DIGEST append and the log archived, left for Drew's close commit, the `v2.0.0` tag and the Release. **Gen2 EXIT.**
|
||
|
||
**Next:** **Phase 35 — Gen3 opens** (readability on a byte-exact floor). Open a fresh session in **plan mode, Max** (Tier 1) from
|
||
`docs/gen3-handoff.md` + `docs/gen3-standards.md`: the order of work is pins off (44,243 `register … __asm__` pins, most of which
|
||
Phase 32 showed come off byte-identical once the source shape is right) → the 5,147 macro bodies into shared C → struct unification
|
||
(1,232 definitions → one per shape; the 143 raw casts; R95) → names with evidence → formatting — every step gated by the 218 hashes.
|
||
Gen3's opening phases also inherit: the kit's split into its own repository (with the installable health-chain snippet and the
|
||
ProjectArchitect findings recorded at 33.5), the xsig v2 direction (gen3-handoff §7), and the three pending outward items above.
|
||
|
||
## Roadmap delta (what Phase 34 changed about the road ahead)
|
||
|
||
- **Gen2 is closed at v2.0.0.** The constitution's Gen2 goals (overlays and engine at scale; go public under AGPL with CI and progress
|
||
tracking) are met literally: 218 binaries byte-identical, the repository public with a ROM-free CI, decomp.dev live. The gen2-roadmap's
|
||
two-repo mirror stayed superseded; the in-place flip with the full rewritten history is what shipped.
|
||
- **The public tree is smaller than the private one by design, and the rule is written:** a retired document gets its Archive-index row
|
||
and is deleted in the same commit (history keeps it); sent outreach drafts do not live in the tree; retired tools stay for the index.
|
||
- **Doctrine that outlives the phase:** a step that hands a file to a third party is proven through that party's own toolchain on the
|
||
file itself before the owner's browser session (DK-81); a scratch prune is an instrument change; "green" is read from an exit code,
|
||
never a last line; a calendar gate is read the morning after the ticket.
|
||
- **Scale, honestly (R41):** the seed priced this phase at 1–2 sessions; it took **one session and 24 commits**, because every outward
|
||
action was Drew's and each took minutes; the day's cost was the three instrument findings (≈2 h of the session) and one browser step
|
||
that failed on its first try.
|
||
|
||
## Deviations
|
||
|
||
| Item | Plan (gate-1 plan) | Actual | Reason |
|
||
|---|---|---|---|
|
||
| "No other clone of the old history" (decision 3) | none | the preflight found a Phase-1 relic clone at `/mnt/z/Storage/git/BFM-decomp` (11 commits, 2026-06-13, old lineage); Drew deleted it during planning; verified gone | the owner's memory vs. the filesystem — the plan recorded both |
|
||
| E1 (decomp.me) | six browser steps, the listing pasted | the first scratch FAILED to assemble (`invalid operands 'li a2,2'`); tools fixed and the paste proven through decomp.me's own `as` (26/26) before the retry, which matched 100% first time | the doc's step had never been exercisable while private (R14); the listing was the word oracle, never assembled anywhere |
|
||
| The seed's "regenerate the bundle with `decompme_replica.sh`" | true | was false — nothing wrote the bundle; the replica's step E now does | a claim written ahead of the tool |
|
||
| frogress (task 4) | slug + key + push | **skipped** on Drew's word after measurement (alive, 38 projects, admin-created; at 100% with decomp.dev live it adds a list row) — pending by name with the recipe | owner's decision |
|
||
| Task 6 fork deletion | `gh repo delete` | already gone (API 404, 0 forks) — recorded, not redone | done before the phase |
|
||
| The public tree (not in the plan) | — | `docs/outreach/` and `docs/sunset/` untracked and ignored; `tools/sunset/` kept; five wiki pages and the conventions rewritten; a trial "untrack both" measured that the census needs the retired files and was reverted for the tools half | Drew's two decisions after the flip (P5d, recorded) |
|
||
| The README (not in the plan) | — | the generated timeline SVG under the progress block; `timeline.py` regenerated (its rows had gone stale at the 33.5 close) | Drew's ask |
|
||
| `gh auth logout` | in C11 (Claude) | moved to Drew's last command after the tag/Release push | the Release and the tag verification need `gh` after C11 |
|
||
| The wiki pushes | Drew runs `--push` | Claude ran three pushes, each on Drew's explicit "sync it" — one-off R6 waivers for the wiki repository only | the P33 xsig/permuter precedent; R6 unchanged for `BFM-decomp` |
|
||
| The close health chain | one run | five runs: red at cdecl (the prune removed its scratch dir), red at doc_links (two citations of untracked paths), red at kit_coverage (R84–R95 and the new accelerators entry uncited), a fourth killed, the fifth green | each a real finding; the fixes are in the tools and the map |
|
||
| Commit hygiene | R66 | one commit (`81ec81945`) claims "kit_coverage green" while three rows were still refused (a `tail` masked the exit code); named and fixed in the next commit | recorded as candidate (b) |
|
||
|
||
## What we believed, what failed, and what we would do sooner (for the retrospective; detail in `docs/decision-log.md` P34 S93)
|
||
|
||
- **Believed:** the decomp.me step was ready — "paste the regenerated `.s` without its first line". **It failed on the first try:** the
|
||
file was the comparison oracle, not an assemblable target, and the replica had proven the compile, never the paste. **Sooner:** prove
|
||
every third-party step through the third party's own toolchain, on the exact file, and let the proving tool write the paste (done now).
|
||
- **Believed:** the flip would wait about a week on GitHub Support. **It passed in a day**, during the previous sub-phase. **Sooner:**
|
||
read a calendar gate the morning after the ticket.
|
||
- **Believed:** the tree that passed the flip audit was the tree to publish. **Within hours the owner took two folders out** — the sent
|
||
outreach drafts and the reviewed archive — and a trial removal of the tools archive measured a fresh clone going red. **Sooner:** decide
|
||
the public tree's contents at the consolidation sub-phase; the Archive-index rule (paths, never links) made the late removal harmless.
|
||
- **Believed:** pruning untracked scratch was housekeeping. **It was an instrument change:** one audit wrote its probe under the pruned
|
||
tree, and its bare `except` turned the refusal into four "parser defects"; two more red chains followed from citations and coverage
|
||
of the day's own edits. **Sooner:** after any prune, re-run every tool that writes under it; and read every check's exit code — one
|
||
commit here claims "green" from a masked pipeline (named in the log, fixed in the next commit).
|
||
- **Cost:** no agents, no model tokens beyond the coordinator; the phase's expense was the five health runs (≈40 min wall) and the browser
|
||
round-trips, and it bought a public repository whose every published number, page and card is generated or verified from the tree.
|
||
|
||
## Commit Message
|
||
```
|
||
(Phase 34 landed as 24 commits c9dffdcfd..577da268e, 2026-09-08 (S93). This close = the archived log + this PhaseEnd + the DIGEST
|
||
update + the kit's record copies, Drew's milestone-close commit, then the v2.0.0 tag and the Release.)
|
||
|
||
chore(phase-34): CLOSE — Gen2 EXIT: the repository public (probe 33/33 gone before and after), protect-main, decomp.dev + the wiki
|
||
live, the decomp.me preset requested at 100%, the Archipelago note and the tool announcement sent, the aftercare done (v2.0.0)
|
||
|
||
- PhaseEnd_Phase34.md written; CURRENT_PHASE.md archived to phase-ends/logs/Phase34.md (R19); DIGEST §0/§2/§3 appended (step 3b)
|
||
- one session (S93): tasks 0a–8; the flip + metadata + ruleset; E1 with the paste form fixed and proven (verbatim_target_s --gas,
|
||
replica steps D/E); E2; D3 (decomp.dev; frogress pending by name); the wiki ×3 syncs; xsig topics; the posts + Decompedia rows;
|
||
C11 (~9 GB pruned, the record updated, docs/outreach + docs/sunset out of the tree on the owner's decision); DK-81 + the coverage map
|
||
- close: tools-health OK (run 5, 5,917 lines); the gate-2 live re-check all 200/false/true/active; no build input changed (R22 not owed)
|
||
- rules: R84–R95 ratified at gate 1; candidates (a)–(d) proposed for Phase 35 gate 1
|
||
- v1.32.1 -> v2.0.0
|
||
```
|
||
|
||
## Rules Added This Phase
|
||
|
||
**Ratified at gate 1 (2026-09-08):** **R84–R95** (the PhaseEnd_Phase33.5 candidates (i)–(xii)); full text in `phase-ends/DIGEST.md` §3.
|
||
|
||
**Candidates recorded in the log, for Drew to accept, modify or reject at Phase 35 gate 1 (P10):**
|
||
|
||
| Rule | Reason |
|
||
|---|---|
|
||
| **(a) A scratch prune is an instrument change:** every tool that writes under a pruned tree is re-run before the prune is called done. | `cdecl --audit` wrote its probe under the pruned `.run/audit/`; the refusal read as four parser defects (run 1 of the close chain). |
|
||
| **(b) "Green" is read from a check's EXIT CODE, never from its last line; every chain sets `pipefail`.** | Commit `81ec81945` claims "kit_coverage green" while three rows were refused — `tail` masked the status. |
|
||
| **(c) A step that hands a file to a third party is proven through that party's own toolchain, on the file itself, before the owner's browser session — and the proving tool writes the paste.** | The decomp.me listing failed to assemble on the first try; the replica had proven the compile, not the paste (DK-81). |
|
||
| **(d) What a public tree carries is decided before the flip, and a retired document gets its Archive-index row and is deleted in the same commit — history keeps it.** | Two folders left the tree within hours of going public; the paths-never-links rule made it harmless, the timing cost two commits on a public history. |
|
||
|
||
*(Techniques stay in the tools and their SETUP rows; strategy in `docs/decision-log.md` (R31) and `docs/accelerators.md`; the
|
||
portable form in the kit's DK-81.)*
|
||
|
||
## PhaseEnd Changelog
|
||
**v1.32.1 → v2.0.0 — Phase 34 complete; Gen2 EXIT.** The purge probe passed before and after the flip, and on 2026-09-08 the owner
|
||
made the repository public with a ruleset that forbids rewriting the published history. In one session the outward half of Phase 33
|
||
was done: the decomp.dev progress card, the wiki published from the tree (32 pages), the decomp.me preset request backed by a scratch
|
||
that matches at 100% (after the pasted target's form was fixed and proven through decomp.me's own assembler), the note to the
|
||
Archipelago project, the tool announcement, the Decompedia rows, and the aftercare — 9 GB of dead scratch pruned, the record updated,
|
||
the outreach drafts and the reviewed document archive taken out of the public tree on the owner's decision, the generated timeline
|
||
placed in the README. Three instrument defects surfaced and were fixed in the tools and the coverage map; the close health chain is
|
||
green on all rungs. R84–R95 ratified; four candidates proposed. Gen3 opens at Phase 35 with the readability charter, the kit split, the
|
||
xsig v2 direction and three outward items pending on third parties.
|
||
|
||
## Plain-English Recap
|
||
Today the project went public. First the probe confirmed, twice, that GitHub had really purged the old copies of the game files from
|
||
its servers; then Drew flipped the switch, and a rule was set so nobody can rewrite the published history by accident. The rest of the
|
||
day was the public face: the progress card on decomp.dev, the wiki, a request to decomp.me for a compiler preset backed by a function
|
||
that matches perfectly on their site, a note to the fan project that had shared memory addresses with us, an announcement of the small
|
||
tool we released, and rows on the community's wiki. One step failed the first time: the file we told Drew to paste into decomp.me was
|
||
our own comparison listing, which nothing had ever tried to assemble, so we fixed the tool to produce a real assemblable file and to
|
||
prove it through decomp.me's own assembler before anyone pastes it again. Cleaning up afterwards, we removed nine gigabytes of old
|
||
scratch, and that broke one of our own checks, which had been quietly writing into the deleted folder; it and two smaller findings
|
||
were fixed and the full health check passed. Drew also decided what the public tree should not carry: the drafts of notes already sent
|
||
and the archive of retired documents, both still in the history. The repository is public, every number on it is generated from the
|
||
source, and the second generation of the project is finished at version 2.0.0. The third generation, making the matched code readable,
|
||
starts in the next session.
|
||
|
||
## 🛑 Stop Here
|
||
PhaseEnd written; `CURRENT_PHASE.md` archived → `phase-ends/logs/Phase34.md` (R19, via `git mv`); `phase-ends/DIGEST.md` §0/§2/§3
|
||
appended (step 3b); the kit's record corpus regenerated (`make kit-corpus`) so tools-health stays equal — **all left uncommitted for
|
||
Drew's milestone-close commit** (R6 gate-2 sign-off). The Phase-34 work is committed across the session (`c9dffdcfd..577da268e`; four
|
||
commits not yet pushed). The headless Ghidra MCP was stopped via the sentinel (R23); nothing under `ghidra/` is tracked. **Drew, in
|
||
order, from the repository root:**
|
||
|
||
```
|
||
git add phase-ends/PhaseEnd_Phase34.md phase-ends/logs/Phase34.md phase-ends/DIGEST.md decomp-architect/corpus/record .run/P34/outward/wiki_push_close.log
|
||
git commit -m "chore(phase-34): CLOSE — Gen2 EXIT: the repository public, protect-main, decomp.dev + the wiki live, the decomp.me preset requested at 100%, the outreach sent, the aftercare done (v2.0.0)"
|
||
git tag -a v2.0.0 -m "v2.0.0 — Gen2 exit: 218 binaries rebuild byte-identical from C; the repository public"
|
||
git push origin main --tags
|
||
gh release create v2.0.0 --title "v2.0.0" --notes "<your words>"
|
||
gh auth logout
|
||
```
|
||
|
||
Facts for the Release notes, in your words (R83): 218 binaries byte-identical from C (main + resident + 138 location overlays + 78
|
||
modules); 363,214 functions, 13,492,113 instructions, main game-code 45,150 / 45,150; 1,256 Sony PsyQ library objects linked and five
|
||
hand-written assembly routines kept verbatim, both stated; builds from your own disc (`make disc-extract`, `make bootstrap`); AGPL-3.0
|
||
for tools and docs, no license asserted over the game sources; the wiki, the how-to, the progress card at decomp.dev; the standards
|
||
page on names and on how the AI was used. Gen2 is closed — do **NOT** start Phase 35 here. Start a **fresh session** (effort **Max**,
|
||
**plan mode**) for **Phase 35 — Gen3 opens**, planning from `docs/gen3-handoff.md` and `docs/gen3-standards.md`. Keep this file forever.
|