Merge origin/main into auto/frame-blend-draw-path
`mesh_consistency_disc.rs` had the only conflict: this branch added a `Sightings` type alias where #22 replaced the file's private `disc_root()` with the shared `common::disc_root`. Both kept — they are unrelated edits that happened to land in the same lines. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -363,10 +363,12 @@ docker/port/sylph-port
|
||||
|
||||
Not blockers for Phase 7, but the workflow is not finished without them:
|
||||
|
||||
* **`propose-work`**, superseding `push-work` — push the branch *and* open the PR
|
||||
with `Closes #N` *and* set the label, in one step. Today `push-work` does the
|
||||
first third; the other two thirds being manual is how they get skipped. Its
|
||||
existing refusals stay: no `main`, no force-push.
|
||||
* ~~**`propose-work`**~~ — done, as `docker/{decoder,port}/bin/propose-work`:
|
||||
pushes through `push-work` (so its refusals stay in one place — no `main`, no
|
||||
force-push), opens the PR with `Closes #N` taken from the branch name, and moves
|
||||
the issue to `state/needs-human`. What is still missing is an *end-to-end* run:
|
||||
everything before the network calls is exercised, the `POST`s are not, because
|
||||
only the agent box holds a token that can make them. Its first real use is its test.
|
||||
* **an attachment uploader** — the MCP exposes `attachment_read` only, so putting
|
||||
a screenshot on an issue needs a direct `POST /repos/{owner}/{repo}/issues/{index}/assets`.
|
||||
* ~~**`gitea-verify`**~~ — done, as `tools/gitea-protect --verify`: asserts every
|
||||
|
||||
@@ -95,6 +95,10 @@ Treat it as a fast index into 9.2 MB of machine code, not as a source of truth.
|
||||
## Each iteration
|
||||
|
||||
1. **Read your notifications**, then `git fetch origin && git merge origin/main`.
|
||||
Notifications are **polled — nothing pushes them.**
|
||||
Then **look at your own open PRs.** A PR of yours with a red or still-
|
||||
pending check is your next unit of work, *ahead of any new question*. You
|
||||
opened it and stopped; nobody else is going to make it green.
|
||||
2. **Pick one question** — the highest-priority `state/approved` item. Mid-
|
||||
question? Continue it.
|
||||
3. **Do the smallest experiment that could settle it**, and try to *refute* your
|
||||
@@ -113,6 +117,20 @@ Treat it as a fast index into 9.2 MB of machine code, not as a source of truth.
|
||||
7. **Commit, `push-work`, open the PR**, label the issue `state/needs-human`, and
|
||||
**stop.** One unit per iteration; do not stack a second on an unverified first.
|
||||
|
||||
## Before you call a merge resolved
|
||||
|
||||
**Check the workspace, not the crate you touched** — `cargo check --workspace
|
||||
--all-targets`.
|
||||
|
||||
🔴 A merge can break a crate that neither side edited. PR #23 resolved a
|
||||
conflict in `sylpheed-cli`, confirmed `cargo build -p sylpheed-cli`, and went
|
||||
red on `sylpheed-viewer` — where one branch had added a struct field and the
|
||||
other had a literal construction of that struct. Neither file was in the
|
||||
conflict, so nothing in the merge pointed at it.
|
||||
|
||||
The crate you fixed is the one place the break *cannot* be, because you just
|
||||
looked at it.
|
||||
|
||||
## Hard rules
|
||||
|
||||
* **Do not build the port.** No Godot, no exporter, no transcoding.
|
||||
|
||||
@@ -98,6 +98,9 @@ written down. Steps 1 and 8 are the ones that were missing entirely.
|
||||
1. **Read your notifications**, then `git fetch origin && git merge origin/main`.
|
||||
Notifications are **polled — nothing pushes them.** If you skip this, nothing
|
||||
addressed to you ever arrives, and it looks like silence rather than an error.
|
||||
Then **look at your own open PRs.** A PR of yours with a red or still-
|
||||
pending check is your next unit of work, *ahead of any new item*. You opened
|
||||
it and stopped; nobody else is going to make it green.
|
||||
2. **Pick one item** — the highest-priority `state/approved` issue that is yours.
|
||||
Mid-item? Continue it.
|
||||
3. **Build the smallest thing that reaches a gate.** A gate is an **artifact**,
|
||||
@@ -122,6 +125,20 @@ written down. Steps 1 and 8 are the ones that were missing entirely.
|
||||
set the label. Those are two separate MCP calls (`pull_request_write`,
|
||||
`issue_write`), and they are the two most commonly skipped steps in this list.
|
||||
|
||||
## Before you call a merge resolved
|
||||
|
||||
**Check the workspace, not the crate you touched** — `cargo check --workspace
|
||||
--all-targets`.
|
||||
|
||||
🔴 A merge can break a crate that neither side edited. PR #23 resolved a
|
||||
conflict in `sylpheed-cli`, confirmed `cargo build -p sylpheed-cli`, and went
|
||||
red on `sylpheed-viewer` — where one branch had added a struct field and the
|
||||
other had a literal construction of that struct. Neither file was in the
|
||||
conflict, so nothing in the merge pointed at it.
|
||||
|
||||
The crate you fixed is the one place the break *cannot* be, because you just
|
||||
looked at it.
|
||||
|
||||
## The wall
|
||||
|
||||
The Godot project **never reads a disc format**. No IPFB, RATC, T8aD, XMA or WMV.
|
||||
|
||||
Reference in New Issue
Block a user