docs(row253): pin mos1297 fixture repair for review
This commit is contained in:
1 parent
362ec674c9
commit
e1bc766d87
9 files changed
+117
-2
No files matched your search
@@ -293,3 +293,11 @@ Run started14:59:22Z. Two intendedREDs observed, exact restoration. Touched whol
|
|||||||
M21 drops only the peer regex end anchor. peer-malformed already writes a valid three-number prefix plus extra text, but the aggregate passingTAP does not expose the returnedreason. No loggedP10line can be quoted fromM21 orM17-base. Static trace shows onlyP10peerprobe executes PYTHON_STUB; configandearlierchecks useNode/shell, while tester_python reads metadata/ELF only. See run3-gate/STATIC-TRACE.md.
|
M21 drops only the peer regex end anchor. peer-malformed already writes a valid three-number prefix plus extra text, but the aggregate passingTAP does not expose the returnedreason. No loggedP10line can be quoted fromM21 orM17-base. Static trace shows onlyP10peerprobe executes PYTHON_STUB; configandearlierchecks useNode/shell, while tester_python reads metadata/ELF only. See run3-gate/STATIC-TRACE.md.
|
||||||
|
|
||||||
Mos1293requires a scratch-base diagnostic onSagegap, all17P10lines, then exactdesignreasonassertions. peer-malformed expectsprobe. Unexpecteddesignreason or anyproductchange goes toMosbeforeedits. No diagnostic or repair yet. Newcandidate/manifest/review and entiregatefromstart, no carry. Stop packet committed locally; helperpushwaitsforgap.
|
Mos1293requires a scratch-base diagnostic onSagegap, all17P10lines, then exactdesignreasonassertions. peer-malformed expectsprobe. Unexpecteddesignreason or anyproductchange goes toMosbeforeedits. No diagnostic or repair yet. Newcandidate/manifest/review and entiregatefromstart, no carry. Stop packet committed locally; helperpushwaitsforgap.
|
||||||
|
|
||||||
|
## Fixture-only M21 repair, mos1297, not run
|
||||||
|
|
||||||
|
Diagnostic(a) on0604 observed probe-inner-session for peer-malformed andpeer-error, not their designed probe/probe-inner-command. Mos confirmed instant shell output exits before session verification; product fails closed. Authorized option1 uses the same system Python exec for peer-output bytes/status; no delay and no product change. Sourcecommit362ec674c9e7aa8cef0c26f4d7448f459171dbd4 names1297 andquotesoldline100.
|
||||||
|
|
||||||
|
All17faults now assert exact reason with following space and anchoredP10prefix, from the accepted draft. Every old assertion retained. C4overflow andpeer-hang test bodies are byte-identical; overflow must remain probe-output-limit. Peer-hang looseprefixoutofscope unchanged. STATIC-PRESERVATION.json andREPAIR.diff in repair-1297/.
|
||||||
|
|
||||||
|
Seven-path manifesta2ac57342d9c59ddaebddade0fa475a9568719fed50c132bd7bb141167c7e72e; onlycase1testhashchanges. No repaired-source test/syntax/Node execution. Whole gate from start, no carry, after Duckworth review and SageCLEAR. M21survival orwrongmalformed/errorreason goes toMosbeforeanychange. Product fast-exit issue isVikunja532post10-27; SageownsDEFERREDentry.
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"docs/plans/DEFERRED.md": "f8ad28aa8dc0f12b2c6dddb3b5dc805da05a97c7723e0525905456c064d0cfa3",
|
"docs/plans/DEFERRED.md": "f8ad28aa8dc0f12b2c6dddb3b5dc805da05a97c7723e0525905456c064d0cfa3",
|
||||||
"packages/cli/tests/case-sudo-fixture.mjs": "b259b8c7926e49829c8a956674021cb0cc85ddd65aebdc786d05cc08d7790008",
|
"packages/cli/tests/case-sudo-fixture.mjs": "b259b8c7926e49829c8a956674021cb0cc85ddd65aebdc786d05cc08d7790008",
|
||||||
"packages/cli/tests/case1-accept.test.mjs": "6cfd2963303315aa6911c4d4f6d75d3ab87d9fcba8e128b056216e7f85fd8901",
|
"packages/cli/tests/case1-accept.test.mjs": "27378eb1297dc6115b4b1ce849de6ffdb3adccf5249783106fa0570c9d696e8a",
|
||||||
"packages/cli/tests/case2-unit.test.mjs": "1e0696eb196e83a0766b433ef71f27df0a3f8fcb6399787ab8c1c0f05c54dc44",
|
"packages/cli/tests/case2-unit.test.mjs": "1e0696eb196e83a0766b433ef71f27df0a3f8fcb6399787ab8c1c0f05c54dc44",
|
||||||
"packages/webui/README.md": "ce9054060867120798c6b26737ac7d910d8cfbc7aa4ad614f4295619c7605e46",
|
"packages/webui/README.md": "ce9054060867120798c6b26737ac7d910d8cfbc7aa4ad614f4295619c7605e46",
|
||||||
"scripts/case1-accept.sh": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
"scripts/case1-accept.sh": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||||
|
|||||||
@@ -19,3 +19,5 @@ Final base under sage-2705: gander/row253-aca1 onaca16404c, sourceed3bb376cdd512
|
|||||||
Focused27 under sage-2709 now passed on0604d91fc:604/0/0, no timeouts, no retries, N9 executed and passed (exact line in run3-focused/SUMMARY.json). All7 blobs unchanged;573c51cf remains the review digest. run3-focused/ contains every raw whole-file log/command, HEAD/digest/limits preamble, timings and3x basis. No full gate or mutation-batch result is claimed.
|
Focused27 under sage-2709 now passed on0604d91fc:604/0/0, no timeouts, no retries, N9 executed and passed (exact line in run3-focused/SUMMARY.json). All7 blobs unchanged;573c51cf remains the review digest. run3-focused/ contains every raw whole-file log/command, HEAD/digest/limits preamble, timings and3x basis. No full gate or mutation-batch result is claimed.
|
||||||
|
|
||||||
Whole gate2737 stopped atM21 survivor after20kills. No final acceptance. run3-gate/STOP-SUMMARY.json andSTATIC-TRACE.md preserve the stop. Mos1293requires diagnostic thennewcandidate/review/fullgatefromstart. Current7sourceblobs remain573c51cf; no test/product repair made.
|
Whole gate2737 stopped atM21 survivor after20kills. No final acceptance. run3-gate/STOP-SUMMARY.json andSTATIC-TRACE.md preserve the stop. Mos1293requires diagnostic thennewcandidate/review/fullgatefromstart. Current7sourceblobs remain573c51cf; no test/product repair made.
|
||||||
|
|
||||||
|
Mos1297 supersedes573c51cf after one fixture-only repair and17exactreasonassertions: source362ec674c9e7aa8cef0c26f4d7448f459171dbd4, digesta2ac57342d9c59ddaebddade0fa475a9568719fed50c132bd7bb141167c7e72e. Onlycase1testchanges. repair-1297/ is the new review packet. Tests unrun; Duckworthreview and fullfreshgatepending.
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
f8ad28aa8dc0f12b2c6dddb3b5dc805da05a97c7723e0525905456c064d0cfa3 docs/plans/DEFERRED.md
|
f8ad28aa8dc0f12b2c6dddb3b5dc805da05a97c7723e0525905456c064d0cfa3 docs/plans/DEFERRED.md
|
||||||
b259b8c7926e49829c8a956674021cb0cc85ddd65aebdc786d05cc08d7790008 packages/cli/tests/case-sudo-fixture.mjs
|
b259b8c7926e49829c8a956674021cb0cc85ddd65aebdc786d05cc08d7790008 packages/cli/tests/case-sudo-fixture.mjs
|
||||||
6cfd2963303315aa6911c4d4f6d75d3ab87d9fcba8e128b056216e7f85fd8901 packages/cli/tests/case1-accept.test.mjs
|
27378eb1297dc6115b4b1ce849de6ffdb3adccf5249783106fa0570c9d696e8a packages/cli/tests/case1-accept.test.mjs
|
||||||
1e0696eb196e83a0766b433ef71f27df0a3f8fcb6399787ab8c1c0f05c54dc44 packages/cli/tests/case2-unit.test.mjs
|
1e0696eb196e83a0766b433ef71f27df0a3f8fcb6399787ab8c1c0f05c54dc44 packages/cli/tests/case2-unit.test.mjs
|
||||||
ce9054060867120798c6b26737ac7d910d8cfbc7aa4ad614f4295619c7605e46 packages/webui/README.md
|
ce9054060867120798c6b26737ac7d910d8cfbc7aa4ad614f4295619c7605e46 packages/webui/README.md
|
||||||
c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd scripts/case1-accept.sh
|
c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd scripts/case1-accept.sh
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
test(row253): expose peer failures and pin reasons (mos-1297)
|
||||||
|
|
||||||
|
The peer-output fixture execs isolated system Python to write its exact bytes
|
||||||
|
and exit with peer-status. This avoids masking parser/status faults behind the
|
||||||
|
supervisor session check. All17 faults assert an exact reason with a delimiter;
|
||||||
|
every existing assertion remains. No product change or timing delay.
|
||||||
|
|
||||||
|
Old packages/cli/tests/case1-accept.test.mjs:100:
|
||||||
|
const PYTHON_STUB = `[ -f "$HC/peer-output" ] && { cat "$HC/peer-output"; exit "$(cat "$HC/peer-status")"; }
|
||||||
|
|
||||||
|
Diagnostic under sage-2752 found probe-inner-session for malformed output and
|
||||||
|
nonzero exit. Mos confirmed the fixture mask and authorized this repair.
|
||||||
|
No tests ran after the repair; Duckworth review and fresh whole gate follow.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Row253 mos1297 repair candidate
|
||||||
|
|
||||||
|
Source 362ec674c9e7aa8cef0c26f4d7448f459171dbd4, baseaca16404c. Manifest a2ac57342d9c59ddaebddade0fa475a9568719fed50c132bd7bb141167c7e72e. Only case1-accept.test.mjs changes among the seven entries. No product script, shared fixture, other test or policy change. Source commit names mos1297 and quotes the exact old first line of PYTHON_STUB at0604:100.
|
||||||
|
|
||||||
|
One stub-line change only: when peer-output exists, exec /usr/bin/python3 -I -S, write that file's exact bytes to stdout and exit with peer-status. No fixed delay. All other stub lines remain byte-identical. The healthy Python path remains unchanged. This removes the confirmed instant-shell-exit mask while retaining the fixture's intended output/status fault.
|
||||||
|
|
||||||
|
Add a17-entry expected-reason map, taken from the accepted diagnostic-a/EXPECTED-REASONS draft, and one exact reason assertion per iteration. The new regex anchors the P10 line and requires the following space, so reason=probe does not accept probe-* codes. Every original status, boundary=failed and no-boundary=observed assertion line remains. peer-malformed=probe; peer-error=probe-inner-command. STATIC-PRESERVATION.json checks all old assertion lines remain and that the overflow/peer-hang bodies are byte-identical. No change to the peer-hang loose prefix. No result is claimed for the new code.
|
||||||
|
|
||||||
|
The original single diagnostic remains in diagnostic-a/. It observed15matches and2probe-inner-session mismatches on0604. Mos confirmed the source of that mask with their own no-Node supervisor controls, and authorized this fixture-only repair. Real fast-exit product behavior is post10-27 Vikunja532, with Sage owning its DEFERRED entry; no product repair or DEFERRED edit here.
|
||||||
|
|
||||||
|
Next: new manifest to Duckworth, then a complete whole gate from the start under Sage CLEAR, no carry from any old run. Both17-fault reasons must match the drafted oracle. The C4 overflow test must still give reason=probe-output-limit. The named P10 test must killM21 on assertions. If M21 survives or either reason differs, stop to Mos before anything else changes. All other existing gates/limits and exact restores stand. No Node, syntax test, payload experiment or repaired test run occurred after the change.
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
diff --git a/packages/cli/tests/case1-accept.test.mjs b/packages/cli/tests/case1-accept.test.mjs
|
||||||
|
index 5baddb646..b2673c325 100644
|
||||||
|
--- a/packages/cli/tests/case1-accept.test.mjs
|
||||||
|
+++ b/packages/cli/tests/case1-accept.test.mjs
|
||||||
|
@@ -97,7 +97,7 @@ const NODE_STUB = `[ "$HOME" = "$ROOT_DIR/srv/mosaic" ] || touch "$HC/node-as-ro
|
||||||
|
[ "\${1:-}" = --version ] && { cat "$HC/node-version"; exit 0; }
|
||||||
|
exec "$REAL_NODE" "$@"`;
|
||||||
|
// The real Python payload runs against a mock socket object, never an OS listener.
|
||||||
|
-const PYTHON_STUB = `[ -f "$HC/peer-output" ] && { cat "$HC/peer-output"; exit "$(cat "$HC/peer-status")"; }
|
||||||
|
+const PYTHON_STUB = `[ -f "$HC/peer-output" ] && exec /usr/bin/python3 -I -S -c 'import os,sys; root=os.environ["HC"]; sys.stdout.buffer.write(open(root+"/peer-output","rb").read()); sys.exit(int(open(root+"/peer-status").read()))'
|
||||||
|
[ -f "$HC/peer-hang" ] && {
|
||||||
|
here="$BASHPID"; read -r sid < <(/bin/ps -o sid= -p "$here")
|
||||||
|
echo "$here" > "$HC/peer-pid"; printf '%s %s\\n' "$here" "$sid" >> "$HC/query-pids"
|
||||||
|
@@ -260,11 +260,31 @@ test('row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python witho
|
||||||
|
'changed-pid':h=>put(join(h.hc,'peer-pid-change'),'ActiveState=active\nUser=mosaic\nMainPID=201\n'),
|
||||||
|
floor:h=>put(join(h.root,'proc/sys/net/ipv4/ip_unprivileged_port_start'),'700\n'),
|
||||||
|
};
|
||||||
|
+ const reasons = {
|
||||||
|
+ "parent-mode": "metadata",
|
||||||
|
+ "parent-owner": "metadata",
|
||||||
|
+ "socket-mode": "metadata",
|
||||||
|
+ "socket-owner": "metadata",
|
||||||
|
+ "socket-type": "metadata",
|
||||||
|
+ "symlink": "metadata",
|
||||||
|
+ "peer": "peer",
|
||||||
|
+ "peer-pid": "peer",
|
||||||
|
+ "python-mode": "interpreter",
|
||||||
|
+ "python-missing": "interpreter",
|
||||||
|
+ "python-not-elf": "interpreter",
|
||||||
|
+ "peer-malformed": "probe",
|
||||||
|
+ "peer-error": "probe-inner-command",
|
||||||
|
+ "peer-uid-fields": "metadata",
|
||||||
|
+ "changed-inode": "changed",
|
||||||
|
+ "changed-pid": "changed",
|
||||||
|
+ "floor": "floor",
|
||||||
|
+ };
|
||||||
|
for(const [name,fault] of Object.entries(faults)){
|
||||||
|
const h=host(t);fault(h);const r=run(h);
|
||||||
|
assert.equal(r.status,name==='peer-uid-fields'?1:0,`${name}: ${r.out}${r.err}`);
|
||||||
|
assert.match(r.out,/P10 tester-socket-squat unnamed boundary=failed/,name);
|
||||||
|
assert.doesNotMatch(r.out,/boundary=observed/,name);
|
||||||
|
+ assert.match(r.out,new RegExp('^P10 tester-socket-squat unnamed boundary=failed reason='+reasons[name]+' ', 'm'),name);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"authority": "mos-1297",
|
||||||
|
"source_commit": "362ec674c9e7aa8cef0c26f4d7448f459171dbd4",
|
||||||
|
"base": "aca16404cf522b03f39acaf140e4f6185a507b88",
|
||||||
|
"previous_product": "0604d91fcfc1949810cd5321aea6ec43e9b74b4b",
|
||||||
|
"previous_manifest": "573c51cf72f2398532a6ea768536f04e3c1681997cb8b9a6f14a8aef884870ae",
|
||||||
|
"manifest": "a2ac57342d9c59ddaebddade0fa475a9568719fed50c132bd7bb141167c7e72e",
|
||||||
|
"changed_manifest_paths": [
|
||||||
|
"packages/cli/tests/case1-accept.test.mjs"
|
||||||
|
],
|
||||||
|
"hashes": {
|
||||||
|
"docs/plans/DEFERRED.md": "f8ad28aa8dc0f12b2c6dddb3b5dc805da05a97c7723e0525905456c064d0cfa3",
|
||||||
|
"packages/cli/tests/case-sudo-fixture.mjs": "b259b8c7926e49829c8a956674021cb0cc85ddd65aebdc786d05cc08d7790008",
|
||||||
|
"packages/cli/tests/case1-accept.test.mjs": "27378eb1297dc6115b4b1ce849de6ffdb3adccf5249783106fa0570c9d696e8a",
|
||||||
|
"packages/cli/tests/case2-unit.test.mjs": "1e0696eb196e83a0766b433ef71f27df0a3f8fcb6399787ab8c1c0f05c54dc44",
|
||||||
|
"packages/webui/README.md": "ce9054060867120798c6b26737ac7d910d8cfbc7aa4ad614f4295619c7605e46",
|
||||||
|
"scripts/case1-accept.sh": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||||
|
"scripts/case2-unit.sh": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b"
|
||||||
|
},
|
||||||
|
"tests_run": false,
|
||||||
|
"gate": "Entire whole gate from start, no carry. M21 must be assertion-killed by named P10 test; malformed/error reasons must match draft or stop to Mos before any further change."
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"authority": "mos-1297",
|
||||||
|
"changed_test": "packages/cli/tests/case1-accept.test.mjs",
|
||||||
|
"old_assertion_lines": 121,
|
||||||
|
"all_old_assertions_preserved": true,
|
||||||
|
"new_assertions": [
|
||||||
|
" assert.match(r.out,new RegExp('^P10 tester-socket-squat unnamed boundary=failed reason='+reasons[name]+' ', 'm'),name);"
|
||||||
|
],
|
||||||
|
"stub_first_line_only": true,
|
||||||
|
"overflow_tests_byte_identical": true,
|
||||||
|
"peer_hang_test_byte_identical": true,
|
||||||
|
"expected_reason_count": 17,
|
||||||
|
"tests_run": false
|
||||||
|
}
|
||||||
Reference in new issue
Block a user