plans: C2-03a askpass ruling (megavolt-0060 to -0063, dewey-0765, gosalyn-0068): fixed argv with followRedirects=false and credential.helper reset, LC_ALL=C, exact-prompt helper with row 199's HOST/NAME checks, no userinfo; tests and four mutants

This commit is contained in:
2026-10-20 18:42:52 -05:00
parent 919a84738b
commit a304dad947
+13 -5
View File
@@ -616,9 +616,14 @@ and tests in `packages/library/tests` and `packages/bus/tests`. If the helper si
### What ships
Design 7.2's slice:
- `syncCommand(kind, url)`: its argv is `SAFE`, exactly one `-c protocol.https.allow=always`, `-C
<mirror>`, then the command. Its env is `gitEnv()` plus `GIT_ASKPASS` naming a helper outside the
mirror, which reads the `library-gitea` slot.
- `syncCommand(kind, url)`: argv is `SAFE`, then `-c protocol.https.allow=always`, `-c
http.followRedirects=false`, `-c credential.helper=`, then `-C <mirror>`, then the command. Its env is
`gitEnv()` plus `LC_ALL=C` and `GIT_ASKPASS` naming a helper outside the mirror, which reads the
`library-gitea` slot. The helper answers only the exact Username and Password prompts for the configured
host and user, checked with row 199's HOST and NAME patterns, and exits 1 on anything else. The URL
carries no userinfo. (Sage, 2026-10-20, ruling the askpass departure: megavolt-0060 to -0063, dewey-0765,
gosalyn-0068. It closes the redirect, host-check and username gaps that row 199's helper closes, and keeps
`GIT_ASKPASS` with the slot path, never the value, per sage-1487.)
- An `https://` URL only.
- The served ref `refs/heads/served`, and `library-diverged`, held until a human `library.sync --accept
<commit>`.
@@ -626,7 +631,10 @@ Design 7.2's slice:
- `library.sync`, human only. A test reaches a local bare repo only through the module parameter that
replaces `syncCommand`.
Tests: the C2-03a tests in design 7.2. A mutant that sets `protocol.allow=always` fails the argv test.
Tests: the C2-03a tests in design 7.2, with the argv test checking the fixed sequence above rather than
"exactly one `-c`". Also dewey-0765's tests: the username prompt, a wrong host, a wrong port, another user, a
302, and the slot path against the value. Also gosalyn-0068's test that the env holds `LC_ALL=C`. A mutant
that sets `protocol.allow=always` fails the argv test, and dewey-0765's four mutants are killed.
### Out of scope
@@ -635,7 +643,7 @@ Push and every bus write (C2-03b, C2-02). Creating the token slot, which is desi
### Gate
Dewey approves the manifest. The library and bus suites are green on Sage's gate, along with every
`scripts/test-*.sh`, and the mutant is killed. A search of the test run's output for the fixture token
`scripts/test-*.sh`, and the mutants are killed. A search of the test run's output for the fixture token
finds nothing.
---