Unify console prompt to [user@VM]; fix real personality-block truncation; correct §XXV's wrong lockdown conclusion (FABRIC-3.md §XXVI)
Build / build-amd64-iso (push) Waiting to run
Build / build-aarch64-iso (push) Waiting to run
Build / build-riscv64-img (push) Waiting to run

Investigating the std79 lockdown finding from FABRIC-3.md §XXV led
to a real discovery: WIREBIND births TWO VMs per identity, a console
proxy under the plain username and the actual restricted identity
under <username>~user (capsule_wirebind.c). Every test in §XXV
targeted the console proxy, which was never locked down at all.
Retested against the correct target (rajames~user): the lockdown
works exactly as designed. §XXV's "lockdown never engages" conclusion
was wrong -- corrected here, not deleted, since the mistake and how
it was caught are worth keeping (see the new feedback memory:
confirm which specific VM a name resolves to before concluding
anything, when a subsystem is known to birth more than one VM per
identity).

Two real, separate things found along the way are kept regardless
of that correction:

- capsule_runcap.c: the reserved personality devblock was read in
  full (mostly zero-padding after a short ~200-byte string) with no
  terminator, producing "WARN: block 4998 exceeds 1KB, truncating"
  on every std79-locked identity's birth, universal, since at least
  2026-09-10. Fixed by trimming to the first NUL byte actually found
  -- real, but harmless to execution (real content sat in the
  truncated block's surviving head); it mattered for capsule_id/
  content_hash being computed over padding instead of real content.

- console.h/console.c/repl.c: unified the prompt from a separately-
  computed "[VMName] (user)" into a single "[user@VMName]" line
  prefix -- exactly the ambiguity that caused the original
  misdiagnosis (the prompt showed only the WIREBIND username,
  identical whether USE had targeted the console proxy or the real
  ~user identity). Implemented as a registered callback
  (console_set_user_prefix_provider()) rather than console.c calling
  into WIREBIND/session logic directly, since console.c is a clean
  HAL module with no prior dependency on capsule-level subsystems.

Verified: clean build on all 3 architectures, zero new warnings,
identical dict_hash/capsule_hash to every prior boot this session
(console/prompt-only change). Full 9-identity messaging campaign
re-run end to end: 202s, zero faults, all 8 identities at 99/99
tokens, zero regression.

Also surfaced, not yet acted on: the full campaign's own console
tags now visibly show which VM each identity's tests actually
reached ([zuse@rajames], not [zuse@rajames~user]) -- messaging.4th's
VM-NAMES-INIT registers identities by plain username, so std79-doe.
fth's turn-attractor has been dispatching to each identity's console
proxy, not the actual locked-down identity, since the messaging
rewrite. Flagged for a deliberate decision, not investigated further.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EXieurDfDSsDFdnSyusuWo
This commit is contained in:
Robert Allan James
2026-09-13 06:44:58 -04:00
co-authored by Claude Sonnet 5
parent cb32e6632b
commit a8b16d41da
25 changed files with 84722 additions and 694 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,42 @@
epoch_s,elapsed_s,qemu_utime_jiffies,mem_used_kb,mem_available_kb,swap_used_kb
1789295956,2,0,2366572,9773108,601876
1789295961,7,0,2461672,9678008,601876
1789295967,13,0,2422984,9716696,601876
1789295972,18,0,2410368,9729312,601876
1789295977,23,0,2451728,9687952,601876
1789295982,28,0,2470656,9669024,601876
1789295987,33,0,2461968,9677712,601876
1789295992,38,0,2480280,9659400,601876
1789295997,43,0,2494284,9645396,601876
1789296002,48,0,2495996,9643684,601876
1789296007,53,0,2493760,9645920,601876
1789296012,58,0,2452384,9687296,601876
1789296017,63,0,2448592,9691088,601876
1789296022,68,0,2478176,9661504,601876
1789296027,73,0,2497964,9641716,601876
1789296032,78,0,2476676,9663004,601876
1789296037,83,0,2477772,9661908,601876
1789296042,88,0,2495920,9643760,601876
1789296047,93,0,2515288,9624392,601876
1789296052,98,0,2514900,9624780,601876
1789296057,103,0,2529988,9609692,601876
1789296062,108,0,2520348,9619332,601876
1789296067,113,0,2506172,9633508,601876
1789296072,118,0,2520368,9619312,601876
1789296077,123,0,2529232,9610448,601876
1789296082,128,0,2534760,9604920,601876
1789296087,133,0,2546732,9592948,601876
1789296092,138,0,2518060,9621620,601876
1789296097,143,0,2510028,9629652,601876
1789296102,148,0,2502964,9636716,601876
1789296107,153,0,2504376,9635304,601876
1789296112,158,0,2514676,9625004,601876
1789296118,164,0,2538768,9600912,601876
1789296123,169,0,2549384,9590296,601876
1789296128,174,0,2530072,9609608,601876
1789296133,179,0,2540248,9599432,601876
1789296138,184,0,2583444,9556236,601876
1789296143,189,0,2538108,9601572,601876
1789296148,194,0,2536188,9603492,601876
1789296153,199,0,2547044,9592636,601876
1789296158,204,0,2505156,9634524,601876
1 epoch_s elapsed_s qemu_utime_jiffies mem_used_kb mem_available_kb swap_used_kb
2 1789295956 2 0 2366572 9773108 601876
3 1789295961 7 0 2461672 9678008 601876
4 1789295967 13 0 2422984 9716696 601876
5 1789295972 18 0 2410368 9729312 601876
6 1789295977 23 0 2451728 9687952 601876
7 1789295982 28 0 2470656 9669024 601876
8 1789295987 33 0 2461968 9677712 601876
9 1789295992 38 0 2480280 9659400 601876
10 1789295997 43 0 2494284 9645396 601876
11 1789296002 48 0 2495996 9643684 601876
12 1789296007 53 0 2493760 9645920 601876
13 1789296012 58 0 2452384 9687296 601876
14 1789296017 63 0 2448592 9691088 601876
15 1789296022 68 0 2478176 9661504 601876
16 1789296027 73 0 2497964 9641716 601876
17 1789296032 78 0 2476676 9663004 601876
18 1789296037 83 0 2477772 9661908 601876
19 1789296042 88 0 2495920 9643760 601876
20 1789296047 93 0 2515288 9624392 601876
21 1789296052 98 0 2514900 9624780 601876
22 1789296057 103 0 2529988 9609692 601876
23 1789296062 108 0 2520348 9619332 601876
24 1789296067 113 0 2506172 9633508 601876
25 1789296072 118 0 2520368 9619312 601876
26 1789296077 123 0 2529232 9610448 601876
27 1789296082 128 0 2534760 9604920 601876
28 1789296087 133 0 2546732 9592948 601876
29 1789296092 138 0 2518060 9621620 601876
30 1789296097 143 0 2510028 9629652 601876
31 1789296102 148 0 2502964 9636716 601876
32 1789296107 153 0 2504376 9635304 601876
33 1789296112 158 0 2514676 9625004 601876
34 1789296118 164 0 2538768 9600912 601876
35 1789296123 169 0 2549384 9590296 601876
36 1789296128 174 0 2530072 9609608 601876
37 1789296133 179 0 2540248 9599432 601876
38 1789296138 184 0 2583444 9556236 601876
39 1789296143 189 0 2538108 9601572 601876
40 1789296148 194 0 2536188 9603492 601876
41 1789296153 199 0 2547044 9592636 601876
42 1789296158 204 0 2505156 9634524 601876
File diff suppressed because it is too large Load Diff