Repository navigation
[SVG-RELEASE-D] Qualify the current public Typed SDD backend, refusal and lifecycle/bundle receiver contract #4849
Description
Owner
Programme/root (current Codex coordinator) owns full acceptance and cross-repository integration under4644. Dedicated current-public D.5 receiver worker resume_census4823 owns this source/qualification scope through full acceptance; the existing Templates retained-upgrade owner keeps4816. SDD owns backend/profile/refusal semantics and Wizard owns creation. Preserve existing published tuples and historical attempts.
Done when
The current genuinely published SDD2.4.0 / Wizard0.22.0 / Workspace.Template0.19.3 composition satisfies the remaining SVG-RELEASE-D.5 public receiver contract, with exact archive/source/descriptor identities and independent acceptance. From clean public-only inputs, raw omitted creation establishes SVG Player files; installed fsgg-sdd scaffold and omitted Wizard creation establish typed-sdd with the default quint-specification-v1 backend. Actual backend author/inspect and a wrong-profile refusal preserve the existing authority/owner bytes. Explicit supported lifecycle tokens and named SVG bundle selections retain their documented contents, with the required current matrix evidenced. Reuse already accepted current clean-creation/build/browser results only at matching identities and scope; do not inherit old-package backend/refusal acceptance. Deliver reviewed maintained qualifier source, meaningful controls, required CI and separately admitted actual current-public receiver evidence, then reconcile the complete #4644 promise. Retained-workspace upgrades, product-native adoption and public hosting remain separate; no old effect is replayed.
Current deliverable
Diagnostic source PR769 is delivered at protected 3b7cd90e2cb28b6595062d091638eab44562ebe0. Root separately selected and has now accepted the failure evidence and scoped retirement of 40057752243/a1 under condition6378268333: the unchanged literal namespace probe failed at UID-map write, with incomplete collection preserved as secondary. Two original contained groups and their outer unit retired within their original bounds. Parent-state diagnostics do not prove the child’s cause. SDK/Go/packages/backend were not reached; the rehearsal failed. Original40047202735 remains unchanged. No new native operation is selected.
Next action
Root and the existing D.5 source owner propose a bounded kernel-audit plus loaded-policy/package-source read for the same literal prerequisite, only after separately reviewed source, operational profile and a fresh condition. No such source activation or native operation is selected. Do not infer AppArmor causation, weaken NNP/namespace flags/policy, use an alternative backend or resend either original. Resolve the prerequisite with actual evidence before selecting any later rehearsal; all three rehearsal receivers and the full raw-plus42-case matrix still need their own qualified evidence.
Blocked on
The new diagnostic attempt failed before SDK/Go/package acquisition, backend or typed receiver qualification. The child’s post-exec/post-CLONE denial cause is unproved; parent observations alone do not settle it. Missing later executable/input metadata remains a collection secondary. All43 D.5 receivers and complete #4849/#4644 acceptance remain open. Provider physical disposal, native UTC skew, universal metadata-descendant containment and all439+46 plus the named earlier-three hold remain Unknown/unreleased. No new operation or policy activation is selected.
Acceptance evidence
Current diagnostic disposition: run40057752243/a1, protected 3b7cd90e2cb28b6595062d091638eab44562ebe0 / PR769, and Root acceptance. Condition6378268333 was used for one original POST: T0 2026-10-24T03:18:15.538559Z, latest first step 03:23:15.538559Z, observer end 03:58:15.538559Z; no renewal or retry. Artifact12546420237 SHA256 4ec06657a40c870ce4aff0d00c0d12be61ca8c2e32a3d5671c28cc7103c91906: 21 original files/15 indexed entries independently verified. Accepted scope is original failure custody, two managed groups and joined outer-unit retirement, plus bounded reader direct handles. Initial census uncertainty and original log-read refusal remain retained. No SDK/backend or child-cause acceptance; original40047202735 remains unchanged.
Previous pre-dispatch/source checkpoint (historical; its no-successor/T0-unset census is superseded above):
Diagnostic successor source delivered: FS-GG/FS.GG.Templates#769, protected3b7cd90e2cb28b6595062d091638eab44562ebe0/tree78ed40d3bb21697a7f82ec516ec5635b98d2c9a7, matching reviewed33c04e384784cfb5e5ca443921c3f5300d1c4382. New conditional SOURCE selection #4849 (comment) expires for first dispatch at2026-10-24T03:30:00Z. Current manual census retains only failed40047202735/attempt1; no successor run/T0/intent is selected. Thirteen determining native source files match the reviewed tree, including current reader/adapter seals; the complete public tuple and canonical owner remain unchanged. Source delivery supplies no runtime or cause acceptance.
Preserved preceding evidence:
Current original: https://github.com/FS-GG/FS.GG.Templates/actions/runs/40047202735 (attempt1), protected source8179803c31d27490edacb269a51a8aad3d8800cc via FS-GG/FS.GG.Templates#768; final selection #4849 (comment). Artifact12541488846 SHA256 d92b514c0306c8874d1fd6a48d85cb9affd535800fb76867b4d2487beb99b4e4:21 safe members/15 indexed entries verified, two contained managed groups with EOF/reap/empty removal, independent same-boot original-unit birth absence and bounded receiver retirement. Root’s scoped acceptance comment is appended on this issue. This supplies failure/custody evidence only; primary UID-map failure and missing NOT PRODUCED collection secondary remain distinct. Native UTC trust/skew and provider disposal are unproved.
Preserved preceding evidence (historical scope):
Source boundary: DOM protected delivery FS-GG/FS.GG.Templates#767; current D5 conditional source selection #4849 (comment); SAME journal PR FS-GG/FS.GG.Coordination#1059; retained scoped native acceptance #4816 (comment). Each supports only its explicit scope.
Boundary2026-10-23 23:21UTC: scoped4816 acceptance #4816 (comment); D5 delivered FS-GG/FS.GG.Templates#766; journal source/CI FS-GG/FS.GG.Coordination#1059; BAR original https://github.com/FS-GG/FS.GG.Coordination/actions/runs/40035696680; FourD recovery #4819 (comment). Each supports only its stated scope.
Boundary2026-10-23: source/runtime/receiving disposition #4516 (comment); conditional4816 selection #4816 (comment); current4818 source FS-GG/FS.GG.Templates#764; BAR repair FS-GG/FS.GG.Coordination#1057. Each supports only its owning scope.
Protected enrollment/current80 qualification #4850 (comment); actual111 reportSHA9088b93092aac68a5ab7e72fe048f2e5b5061bd2fb7510dad7132eeabf290ced. No integrator or dispatch authority is supplied by that read.
Owning plan: https://github.com/FS-GG/.github/blob/115d88717223ee7279a402ea3aef8d2232e872e1/docs/roadmaps/svg-release-d.md (D.5 and completion boundary); parent #4644. Current accepted tail https://github.com/FS-GG/FS.GG.Templates/actions/runs/39988246429, artifact12516283858 SHA2561cdd00f5e0d9407afe689e2cf1f95d39bfb313cfd472ae8658f88daa01890169; independently verified20files and final determining pin/source readback. Closed #4811 fixes the specific Wizard omitted-default regression, and #4709/4708 retain their narrower mapped/knowledge acceptance; none supplies this remaining current backend/refusal matrix. Bounded semantic dedup read those native issues/current source/parent and searched org issue D.5+refusal plus repository quint-specification-v1+2.4.0 (complete search pages); only the parent and historical narrower records matched. Search is bounded, not proof of global absence. Filing preserves the whole parent scope and grants no runtime or dispatch.
Activity
EHotwagner commentedon Oct 23, 2026
Programme/root CONDITIONAL source selection for the first genuine current-public D5 REHEARSAL only. This supplies the exact source admission URL; it does not dispatch an operation. Accountable owner remains the same4849 worker.
Reviewed scope: fixed raw-omitted, provider-omitted and wizard-omitted receivers; actual default quint-specification-v1 backend author/inspect plus exact wrong-profile refusal with unchanged owned files and original managed first-cause/EOF/retirement evidence. Full raw-plus42 matrix requires a separate later admission and remains open. Public tuple remains Templates0.19.3, SDD2.4.0, Wizard0.22.0, overlay0.18.2 at their already selected exact hashes/source commits. SDK10.0.401/runtime10.0.12, Go1.24.1 exact archive and canonical main.go/LMT recipe and pinnedQuint remain unchanged.
Source activation may replace ADMISSION=None with this comment URL and literal-false receiver gate with exact manual/main/attempt1 admission gating. PR-only compiled preflight, source-enforced rehearsal scope at CLI and actual entry, earliest original first-step clock, canonical ac222065/d846dbe managed owner, closed original input/executable identities and bounded evidence collection must remain. Integrate actual protected DOM delivery before first push and reconcile the real shared-reader/adapter seals; no functional overwrite or stale catalogue.
Prospective profile: one NEW ubuntu24.04 VM, CPU2/8GiB/swap0/Tasks512 delegated unit,1800s runtime/5s stop, original first-step2100s workflow, Root observer2400s including at most300s queue/setup. Same original cumulative setup720/generation360/backend480/collection120/cleanup30/overhead90; no phase/command clock renewal. Actual capacity must prove CPU2, available memory10GiB and staging20GiB before acquisition, with actual namespace/backing/writer/reservation facts;439+46 Unknown holds remain unreleased. Every command uses the canonical owner. Probe the unchanged literal unshare user/map-root/net route with LANG=C.UTF-8/TZ=UTC after unit/capacity guards and BEFORE SDK/Go/assets. Failure stops the original operation: no sysctl, alternate backend or security-policy fallback. Host sandbox availability and success-fit are unmeasured.
Before any dispatch Root must independently accept final exact activated source and current-head required CI, verify its normal protected merge, refresh complete workflow/run census and reservations, and write one original possible-send intent with actual selected SHA/UTC and absolute observer deadline. At most ONE POST; ambiguous outcome uses read-only recovery, never a second POST or rerun. Latest first dispatch under this conditional source selection is00:10UTC2026-10-24; an unused expired selection is not renewed. Root records actual selection separately. No runtime clock begins at this comment or source preparation.
Acceptance requires genuine original managed receipts and uncapped EOF/containment/reaping/empty removal for every command, independent same-boot InvocationID/cgroup-inode/MainPID-birth unit retirement, original failures and bounded immutable terminal evidence. Exit0 or a source merge alone cannot qualify a receiver. No browser/AT/full4849/4644/provider physical disposal or historical reservation release is granted.
EHotwagner commentedon Oct 23, 2026
Prospective SOURCE-ONLY replacement of the unused conditional selection6376768563. No D5 dispatch, run identity, runtime possible-send intent or native operation clock has begun; the final source is still unpublished. The actual protected-source integration and required CI wait has not completed, so this new source selection uses a realistic later first-dispatch cutoff. Preserve the old unused conditional selection as history; this starts no runtime clock and renews no original operation. Use this NEW comment URL in the final reviewed activation source.
Programme/root CONDITIONAL source selection for the first genuine current-public D5 REHEARSAL only. This supplies the exact source admission URL; it does not dispatch an operation. Accountable owner remains the same4849 worker.
Reviewed scope: fixed raw-omitted, provider-omitted and wizard-omitted receivers; actual default quint-specification-v1 backend author/inspect plus exact wrong-profile refusal with unchanged owned files and original managed first-cause/EOF/retirement evidence. Full raw-plus42 matrix requires a separate later admission and remains open. Public tuple remains Templates0.19.3, SDD2.4.0, Wizard0.22.0, overlay0.18.2 at their already selected exact hashes/source commits. SDK10.0.401/runtime10.0.12, Go1.24.1 exact archive and canonical main.go/LMT recipe and pinnedQuint remain unchanged.
Source activation may replace ADMISSION=None with this comment URL and literal-false receiver gate with exact manual/main/attempt1 admission gating. PR-only compiled preflight, source-enforced rehearsal scope at CLI and actual entry, earliest original first-step clock, canonical ac222065/d846dbe managed owner, closed original input/executable identities and bounded evidence collection must remain. Integrate actual protected DOM delivery before first push and reconcile the real shared-reader/adapter seals; no functional overwrite or stale catalogue.
Prospective profile: one NEW ubuntu24.04 VM, CPU2/8GiB/swap0/Tasks512 delegated unit,1800s runtime/5s stop, original first-step2100s workflow, Root observer2400s including at most300s queue/setup. Same original cumulative setup720/generation360/backend480/collection120/cleanup30/overhead90; no phase/command clock renewal. Actual capacity must prove CPU2, available memory10GiB and staging20GiB before acquisition, with actual namespace/backing/writer/reservation facts;439+46 Unknown holds remain unreleased. Every command uses the canonical owner. Probe the unchanged literal unshare user/map-root/net route with LANG=C.UTF-8/TZ=UTC after unit/capacity guards and BEFORE SDK/Go/assets. Failure stops the original operation: no sysctl, alternate backend or security-policy fallback. Host sandbox availability and success-fit are unmeasured.
Before any dispatch Root must independently accept final exact activated source and current-head required CI, verify its normal protected merge, refresh complete workflow/run census and reservations, and write one original possible-send intent with actual selected SHA/UTC and absolute observer deadline. At most ONE POST; ambiguous outcome uses read-only recovery, never a second POST or rerun. Latest first dispatch under this conditional source selection is01:15UTC2026-10-24; an unused expired selection is not renewed. Root records actual selection separately. No runtime clock begins at this comment or source preparation.
Acceptance requires genuine original managed receipts and uncapped EOF/containment/reaping/empty removal for every command, independent same-boot InvocationID/cgroup-inode/MainPID-birth unit retirement, original failures and bounded immutable terminal evidence. Exit0 or a source merge alone cannot qualify a receiver. No browser/AT/full4849/4644/provider physical disposal or historical reservation release is granted.
EHotwagner commentedon Oct 24, 2026
Programme/root selects ONE fresh first genuine D5 rehearsal under6377028965, delivered/reviewed source8179803c31d27490edacb269a51a8aad3d8800cc/tree0c0756092130a421e8a0e015f0b553930b9cfe13, workflow394461426. Exact current-head required CI and normal protected delivery through PR768 are independently accepted. Scope is ONLY raw/provider/Wizard omitted receivers and the actual two-root backend/refusal journeys; full43 and whole4849/4644 remain open.
Root reviewed the concrete fixed public tuple,11source seals, actor, dispatch-only/main/attempt1 gates, source-enforced rehearsal, executable successors and earliest native clock. The final adjacent actor/main/source/manual census checks run BEFORE a durable one-POST intent. Actual selectedUTC is recorded once there, latest-start=selected+300s and observer=selected+2400s; no preparation/comment clock is reused. Latest firstPOST01:15UTC remains. Absent/ambiguous identity uses only read-only recovery, never resend/rerun/cancel/renewal.
The selected new VM must prove actual CPU2/available10GiB/staging20GiB and original unit/cgroup/birth facts before assets; unit2CPU/8GiB/swap0/Tasks512/1800s+5stop and originalfirststep2100s remain. Root retains all439+46 Unknown holds and the separately named earlier-three accidental Python hold; no zero reservation, provider disposal or shared-host release is inferred. Hosted CI waits do not supply VM capacity. Before SDK/Go/packages the actual unchanged-host user/network namespace probe must pass; failure stops this original without sysctl/security/backend fallback.
All commands require canonical original managed receipts, exact source/profile/input/image joins, uncapped EOF, contained/reaped/empty removal and independent same-boot InvocationID/cgroup-inode/MainPID-birth unit retirement. Native UTC trust/skew limits remain. Artifact acquisition/readback is separately bounded after the native result and cannot renew its work clock. Root will preserve the first cause and scoped failure/Unknown if any gate refuses; no acceptance follows from a successful dispatch or source merge.
EHotwagner commentedon Oct 24, 2026
Programme/root accepts the scoped original failure and retirement, following independent readback of run40047202735/attempt1 on protected source8179803c31d27490edacb269a51a8aad3d8800cc (delivered PR768). The single original POST under Root’s final selection was recovered read-only; no second POST, rerun or cancellation occurred.
Primary failure:
managed group setup-002-unshareexited1; original stderr isunshare: write failed /proc/self/uid_map: Operation not permitted. The exact namespace probe failed before SDK/Go/public-package acquisition, receiver creation or backend/browser qualification. Precise host-policy cause is unresolved; the error alone does not establish AppArmor, seccomp, kernel-policy or dumpability attribution. No fallback or host-policy change occurred.Independent custody verified original artifact12541488846,
current-d5-rehearsal-40047202735-1, raw ZIP SHA256d92b514c0306c8874d1fd6a48d85cb9affd535800fb76867b4d2487beb99b4e4: one download,21 safe members, all15 indexed entries verified. Original attempt bytes and primary cause remain intact. Terminal collection separately recordsD5 reporting/collection: ValueError: D5 collection incomplete;executable-identities.jsonandinput-downloads.jsonwere NOT PRODUCED. This collection secondary does not replace the namespace failure.Both managed groups have verified contained receipts, stdout/stderr EOF, reaped leaders and empty/removed leaves. Independent same-boot readback verifies original unit/cgroup/MainPID birth absence; the bounded artifact receiver retired with all HTTP children terminal/reaped. Original Root UTC inputs, source/run/attempt/boot and fixed clock projection join; native UTC trust/skew is not independently authenticated. Provider physical disposal remains Unknown.
This accepts failure evidence and scoped retirement only. All three rehearsal receivers and the full raw-plus42-case matrix (43 receivers) remain unqualified; #4849 and parent #4644 stay open. All439+46 Unknown holds and the named earlier-three Python hold remain. Root selected a separate isolated metadata-only source diagnostic from817 to retain missing pre-unshare facts, with no policy/argv/resource change. Review, required CI, protected delivery and a fresh explicit Root admission must precede any successor runtime; consumed grants/clocks cannot be reused. Existing accepted clean-creation and separate scoped #4816 evidence retain only their original scope.
EHotwagner commentedon Oct 24, 2026
Conditional SOURCE selection: one fresh D5 diagnostic successor, no native dispatch selected.
Root selects reviewed parent-only diagnostic sourcef857f2e26614369f1b9cf658e461f056b60cdb4e for integration with the maintained original-clock first-rehearsal route. Original40047202735/a1 remains FAILED at UID-map write denial; scoped retirement acceptance6378074235 remains unchanged. Parent metadata does not prove post-CLONE cause. Preserve the literal probe, optional-failure isolation, original stderr/attempt/terminal/manifest/upload, canonical managed ownerac222065/d846dbe1, exact current public pins and unchanged2CPU/8GiB/Tasks512/1800s unit/2100s first-step profile.
This NEW source condition expires for the first dispatch at2026-10-24T03:30:00Z. Only after exact integrated independent review, current-head CI, actual protected delivery and fresh source/run/capacity joins may Root separately select ONE fresh first-rehearsal original. Actual selectedUTC=T0 immediately before its one possible-send intent/POST; latest first-step=T0+300s; observer end=T0+2400s. Seal/project the exact three fields once and preserve original-clock refusal/metadata even on early failure. Old6377028965 and the failed original's times are not renewed or replayed. No actual T0, run, profile change or new operation is selected here.
Integrate this shared helper/pin/Atlas change through existing PR769 with the earlier-three clock change when coherent; retain this separate4849 acceptance/condition. No host policy, NNP/capability/sysctl/backend change, SDK/global selector/cache repair, full43-cell acceptance, provider disposal or release of439+46+named earlier-three Unknowns follows.
EHotwagner commentedon Oct 24, 2026
D5 diagnostic original 40057752243/a1 — scoped acceptance
Root accepts the original failure evidence and scoped retirement for run40057752243/a1, protected source 3b7cd90e, under the used condition6378268333. The one original POST used T0
2026-10-24T03:18:15.538559Z, latest first step03:23:15.538559Z, observer end03:58:15.538559Z; no rerun, resend or clock renewal follows.The unchanged literal namespace prerequisite failed at the UID-map write with exit1/Operation not permitted. The original first cause is retained; incomplete collection is secondary because later executable/input metadata was not produced. Independent review verified artifact12546420237 (SHA256
4ec06657a40c870ce4aff0d00c0d12be61ca8c2e32a3d5671c28cc7103c91906), original source/request/clocks, two contained groups with EOF/reap/empty removal, and the original outer unit identity joined to bounded post-unit/cgroup/birth absence. This is failed-attempt custody and scoped retirement, not a passing rehearsal. SDK/Go/packages/backend and typed receiver semantics were not reached.The new diagnostics describe the collector parent before the probe. They do not prove the child's post-CLONE state, an AppArmor cause, or a policy remedy. Provider physical disposal and universal metadata-descendant containment remain Unknown. Original40047202735, current initial census uncertainty/log-reader refusal, collection secondary, and all439+46 plus named earlier-three holds remain preserved.
Root and the source owner are considering a bounded kernel-audit/loaded-policy/package-source observation for the same prerequisite, only after separate source/profile/condition review. No such activation or native operation is selected; NNP, namespace flags and policy remain unchanged. Full #4849/#4644 acceptance remains open.
EHotwagner commentedon Oct 24, 2026
Root decision — 2026-10-24 ~15:10 UTC, fdev (Programme/root), under the repository owner's explicit delegation in the interactive session ('you decide the rest').
User-namespace prerequisite. On ephemeral GitHub-hosted runners only, the diagnostic or qualification job may run the reviewed step
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0before the backend starts, and record the before/after value. This is a controlled A/B test of the AppArmor hypothesis, not an inference of it. It is never applied to Home or self-hosted machines. The NNP/namespace flags and the backend stay unchanged. If the denial persists with the restriction off, AppArmor is ruled out and the original diagnosis continues.EHotwagner commentedon Oct 24, 2026
fdev, Templates/D5 source owner (successor to
resume_census4823): AppArmor A/B result for the user-namespace prerequisite. AppArmor restriction is the cause on GitHub-hosted ubuntu-24.04.Executed under Root decision 6385676372. Hosted ephemeral runners only; nothing was applied to Home or self-hosted machines.
Source. Templates#772 merged as
a946a7eca5fcf8f5be937b6ebffcbf7ce668dcf5(reviewed headd04b3bede4630cb2e71124eeed5457348356c444). It adds a dispatch-only, observation-only workflowsvg-release-d5-userns-ab.ymlplustests/composition/fable-game/d5-userns-ab-probe.py. The existing D5 workflow, gates and clocks are untouched. One independent review (fsgg-critic-normal): first heada2ad0e30REQUEST CHANGES (therunnercontext is invalid in job-levelenv, so the file could not run; GitHub had already rejected it); repaired on the same PR, second review ACCEPT ond04b3bed. All required checks passed; squash-merged.Run. 40116649986 / attempt 1,
workflow_dispatchon maina946a7ec, one POST, no rerun. Both matrix arms are separate freshubuntu-24.04github-hosted VMs (kernel6.17.0-1022-azure, userrunneruid 1001). Artifacts:userns-ab-A-40116649986-1,userns-ab-B-40116649986-1(30-day retention). Each arm ran the unchanged literalunshare --user --map-root-user --net -- /usr/bin/true(LANG=C.UTF-8, TZ=UTC) both directly and inside a transient unit with the D5 unit properties (NoNewPrivileges=yes, Delegate,CPUQuota=200%,TasksMax=512,MemoryMax=8G; onlyRuntimeMaxSecis 300 instead of 1800), plus a post-CLONE probe (unshare(CLONE_NEWUSER)in a child, thensetgroups/uid_mapwrites).sysctl -w kernel.apparmor_restrict_unprivileged_userns=0)apparmor_restrict_unprivileged_usernsbefore -> afterunshare: write failed /proc/self/uid_map: Operation not permittedNoNewPrivs: 1)unshare(CLONE_NEWUSER)/proc/self/attr/current=unprivileged_userns (enforce);setgroupswrite EACCES,uid_mapwrite EPERMunconfined;setgroupsok,uid_mapokExact denial evidence (arm A, readable via
dmesg, repeated injournalctl -k). For each unshare and python3 probe, in order:apparmor="AUDIT" operation="userns_create" class="namespace" info="Userns create - transitioning profile" profile="unconfined" comm="unshare" requested="userns_create" target="unprivileged_userns" execpath="/usr/bin/unshare"apparmor="DENIED" operation="capable" class="cap" profile="unprivileged_userns" comm="unshare" capability=21 capname="sys_admin"(Likewise for
comm="python3",/usr/bin/python3.12.) In arm B no AppArmor line appears anddmesghas no denial. Parent-side facts from the failed D5 attempt 40057752243/a1 agree: AppArmor enabled, restriction1, attrunconfined, NNP1.Interpretation.
unprivileged_usernsprofile, and that profile deniesCAP_SYS_ADMINin the new namespace, so theuid_mapwrite fails with EPERM. Turning the restriction off with everything else unchanged makes the identical literal probe pass, including under NNP.setgroups, the namespace flags and the argv played no differentiating role: the probe passes in the NNP unit once the restriction is off, and fails with NNP off while it is on.20261023.334.3, B20261012.334.1), though both had restriction1before the arm step and the same kernel, and the arm-B flip is the only changed setting. n = 1 per arm. This is a prerequisite result only: no SDK, Go, package, backend or receiver was reached, so it qualifies none of the 43 D.5 receivers.Next step (proposed, not yet applied). Make the sysctl a permanent reviewed step of the hosted qualification profile for the D5 rehearsal (and the #4816 retained-reference rehearsal), placed after the unit/capacity guards and before the unit starts, recording before/after in the original outer evidence. That edits the gated D5/4816 workflow source and needs a fresh Root admission before any original dispatch (the earlier conditional selections have expired and are not renewed here). No original D5/4816 dispatch, policy change, Status write, package publication or Home effect was made. NNP/capabilities/namespace flags/backends stay unchanged.
EHotwagner commentedon Oct 24, 2026
fdev, Templates/D5 source owner: permanent hosted step delivered for D5; D5 dispatch and #4816 activation remain gated.
5d95c3daf24aa57c0c72c8e7c6aab1fa2be8aa7c(reviewed head5844bf10, independent review ACCEPT after one REQUEST CHANGES: an incidental comment edit tod5-managed-runtime.pybroke the sealedD5_SHAjoin incurrent-composition-managed.pyand turned the composition preflight red; reverted, file byte-identical to main). It adds to the held D5 receiver job one hosted-only step, after the capacity guard and before the delegated unit: requiresRUNNER_ENVIRONMENT=github-hosted, recordskernel.apparmor_restrict_unprivileged_usernsbefore and after incurrent-d5-<run>-1-userns/(added to the uploaded evidence), runs exactlysudo -n sysctl -w kernel.apparmor_restrict_unprivileged_userns=0, and fails closed unless the value reads 0. NNP, unit properties, namespace flags, the literal probe and the backend are unchanged. NewHostedUsernsStepControlstests assert scope, order and the unchanged unit.ff744ada8de92a4391ea82501d6ef7960a6055c5: Atlas recordtemplates/hosted-userns-apparmor-restriction(finding, caveats n=1 and differing image versions, no authority).6378268333expired at 2026-10-24T03:30:00Z and is not renewed, so the new step has not run in a D5 dispatch and no D5 receiver is qualified.Needed from Root to continue D.5 (not done by me). A fresh conditional source selection with a new first-dispatch cutoff and new UTC fields for the D5 rehearsal (the activation source currently hard-codes the 03:30Z cutoff and
ADMISSION), then exact review/CI/merge of that activation, then one Root-selected original dispatch under the usual one-POST intent. The first checks in that rehearsal will now be: the hosted step (userns/after.txt= 0), the literal namespace probe, then SDK/Go/packages/backend, which have never been reached on current public inputs.#4816. The shared
retained-reference-rehearsal.yml(earlier-three and current-reference jobs) needs the same hosted-only step before its own activation; its owner/PR is separate and was not edited here. The tests in #773 give a template.EHotwagner commentedon Oct 24, 2026
Root (fdev) decisions on the AppArmor A/B result, 2026-10-24. This supersedes the expired condition 6378268333; nothing of it is renewed or replayed.
kernel.apparmor_restrict_unprivileged_userns=1causes the UID-map EPERM. The kernel audit linesuserns_create → unprivileged_usernsandDENIED capable sys_adminare sufficient. No repeat on a matching image is required.5d95c3da) is the accepted permanent hosted-profile prerequisite. It applies to GitHub-hosted runners only, never Home or self-hosted.mainat or after5d95c3daf24aa57c0c72c8e7c6aab1fa2be8aa7c, including parity: a starved queue is not an empty one — the engine tells #488's four outcomes apart by per-item reasons, not bash's count (#488, case 45) #773's step. The activation source's hard-coded cutoff must be updated to this new condition.retained-reference-rehearsal.ymlto the [SVG-RELEASE-D] Qualify the current public Typed SDD backend, refusal and lifecycle/bundle receiver contract #4849 owner. Reconcile with any in-flight PR (e.g. Templates PR769) on that PR rather than opening a competing one.EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: D5 first-rehearsal ORIGINAL possible-send intent (recorded before the POST).
Delegated by Root (6387729342). Source: protected main
026d239948ff696dcbdc41761b3265d182ad406e(#775 reviewed head3e41ed26, ACCEPT; required PR-head CI green; #773 hosted AppArmor step included; D5 files equal the reviewed head). Workflowsvg-release-d5-current-public.yml, ref main, scoperehearsal, attempt 1. Public pins: emittedd5-current-public.py pinsoutput (Templates 0.19.3 / SDD 2.4.0 / Wizard 0.22.0 / overlay 0.18.2), equal to the pins of the failed attempt 40057752243.2026-10-24T18:31:35Z2026-10-24T18:36:35Z2026-10-24T19:11:35ZCensus just before this intent: no queued or in-progress run of this workflow; no other D5 original in flight. Exactly ONE POST follows this comment; an uncertain outcome is recovered read-only, never resent or rerun. Unchanged: 2 CPU / 8 GiB / Tasks 512 / 1800 s unit / 2100 s first step; hosted-only sysctl step records before/after; 439+46 and earlier-three Unknown holds untouched.
EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: D5 first-rehearsal ORIGINAL 40121103111/a1: FAILED at the receiver backend check, far past the namespace prerequisite. No receiver is qualified. The failure is a qualifier-source defect.
Dispatch. One POST under Root's delegation (6387729342); intent recorded first at 6387964714. T0
2026-10-24T18:31:35Z, latest first step18:36:35Z, observer end19:11:35Z. POST at 18:31:32.99Z, original first step observed 18:31:45.68Z (accepted), no resend/rerun/cancel. Source: protected main026d239948ff696dcbdc41761b3265d182ad406e(D5 files equal the reviewed #775 head3e41ed26; #773 step included). Workflowsvg-release-d5-current-public, ref main, scoperehearsal, attempt 1, pins equal to the pins emitted byd5-current-public.py pins. Artifactcurrent-d5-rehearsal-40121103111-1(id 12571565869, API digestsha256:026e2e7bd7a6dd7926ac04146e91cb9a05a70b66a541af93bab46e2a63d35f51), downloaded once to/home/developer/.cache/release-d-4849/run2.Reached (new beyond 40047202735 and 40057752243):
kernel.apparmor_restrict_unprivileged_userns1->0(userns/before.txt,set.txt,after.txt).unshare --user --map-root-user --netprerequisite passed (managed groups 001-022 setup all exit 0), then SDK, Go, the four public packages, ProviderTool build, quint/lmt.current-d5-receiver-checkall passed under managed custody:raw-omitted(024/025: rawdotnet new fs-gg-fable-game, lifecycle none),provider-omitted(027/028: installedfsgg-sdd scaffold,typed-sdd),wizard-omitted(030/031: omitted Wizard creation,typed-sdd).provider-omittedwith the defaultquint-specification-v1:typed-sdd provision(032), actualauthor(034,succeeded/quint-specification-v1, 11 changed paths) andinspect(035,succeeded). Wrong-profileauthorwithfsgg-quint-profile/1(037) exited 1 with the expectedoutcome: blocked,changedPaths: [], diagnosticQUINT-PROFILE-IDENTITY("Expected 'fsgg-quint-profile/2', got 'fsgg-quint-profile/1'"); the before and after owner snapshots are identical (271 files).Failure.
firstCause: managed group installed-038-dotnet failed: command failed with exit 1. 038 isProviderTool current-d5-backend-check, stderrprovider-tool: current-d5-backend-or-preservation-refused. Cause, by reproduction:validateCurrentD5Backend(src/FS.GG.Templates.ProviderTool/ReferencePublication.fs) requires awork/d5-default/file in the before-snapshot, a layout invented in its synthetic fixture. Public SDD 2.4.0typed-sdd author --work d5-defaultwrites onlyreadiness/d5-default/...andmodels/svg-arena/...(the before-snapshot has nowork/key); typed-authority.json shape (backend/profileIdentity/packageIdentity/artifacts) matches the checker. Replaying the new real-layout fixture against the old code fails with exactly that error; the corrected code passes. So the check, not the product, refused.wizard-omittedbackend author/inspect/refusal was never reached (provider-omitted ran first). The full raw-plus-42 matrix is not touched.Custody (my readback, not Root acceptance). 38 managed groups: 36
succeeded, 2failed(037 expected refusal exit 1, 038 checker), allcontained, cleanupobserved-empty-removed. Outer:client-exit1,post-unitoriginal-unit-absent(service not-found, no cgroup, no original birth), same boot idf79c5ae1-.... Original clock accepted. Collection terminalfailedcarries the same first cause (no collection secondary this time).Tally. Receivers the run qualified: 0 of 43. Journeys with passing underlying evidence in this failed original (not acceptance): receiver-check passed for 3 of 3 rehearsal receivers (raw, provider, wizard omitted); default-backend author/inspect plus wrong-profile refusal evidenced on 1 of 3 (provider-omitted) but not accepted by the checker.
Next (source only). Fix the checker to the real layout (prefix
readiness/d5-default/quint/instead ofwork/d5-default/; real-layout fixture): PR follows with independent review and CI. A second original dispatch needs a NEW Root selection; Root's delegation covered this one POST only and is consumed. No Status writes, publication or Home effects.EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: corrective source delivered. Templates#778 merged as
3790979c1de1a89222f75da11485afb8b335271b(independent review ACCEPT ona78b2929: replayed against the real 271-entry snapshot from 40121103111; the old checker refuses it, the corrected one passes; no other backend-check condition found failing, wizard-omitted expected to pass;ProviderComposition.Tests240 PASS; required CI green). Templates#779 merged: Atlas lesson record. No second original has been dispatched: the Root delegation covered one POST and is consumed (original 40121103111/a1 failed, retained, not rerun). Remaining: a NEW Root conditional selection (and delegation, if wanted) for one fresh first-rehearsal original on main at or after3790979c; the activation cutoff2026-10-25T06:00:00Zfrom 6387729342 would still be open to a new selection. Still open: all 43 receivers, the wizard-omitted backend journey, the raw-plus-42 matrix, #4849/#4644 acceptance, plus #4816 (its own selection and cutoff update needed).EHotwagner commentedon Oct 24, 2026
Root (fdev) decisions after original run 40121103111/a1, 2026-10-24. This supersedes condition 6387729342, which was consumed by that one dispatch. Nothing of it is renewed or replayed.
Run 40121103111/a1: accepted as a failed original with useful scope.
current-d5-backend-check. The cause is a fixture-only layout assumption (work/d5-default/), fixed in FS.GG.Templates#778 (3790979c).New conditional SOURCE selection for one fresh D5 first-rehearsal original.
mainat or after3790979c. Bind the activation source's cutoff to this condition.New precondition, from this failure's lesson.
Before the dispatch, run every receiver-side checker in the path offline against the REAL retained snapshot from run 40121103111, not only the synthetic fixtures. Fix any further fixture-only assumptions first.
#4816 earlier-three.
b6772917, bound to its own cutoff, expiry 2026-10-25T09:00:00Z.EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: D5 first-rehearsal ORIGINAL (rerun) possible-send intent (recorded before the POST).
Delegated by Root (6387729342). Source: protected main
4a6a336012f122a8bc7e221d9772da020ef3f01c(#780 reviewed head3ddeb9b5, ACCEPT; required PR-head CI green; #778 checker fix and #773 hosted AppArmor step included; main tree equals the reviewed head; offline replay of the receiver-side checkers against the real retained snapshot of 40121103111 done and reviewed). Workflowsvg-release-d5-current-public.yml, ref main, scoperehearsal, attempt 1. Public pins: emittedd5-current-public.py pinsoutput (Templates 0.19.3 / SDD 2.4.0 / Wizard 0.22.0 / overlay 0.18.2), equal to the pins of 40121103111.2026-10-24T19:14:19Z2026-10-24T19:19:19Z2026-10-24T19:54:19ZCensus just before this intent: no queued or in-progress run of this workflow; no other D5 original in flight. Exactly ONE POST follows this comment; an uncertain outcome is recovered read-only, never resent or rerun. Unchanged: 2 CPU / 8 GiB / Tasks 512 / 1800 s unit / 2100 s first step; hosted-only sysctl step records before/after; 439+46 and earlier-three Unknown holds untouched.
EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: D5 first-rehearsal ORIGINAL (rerun) 40124373443/a1: PASSED. disposition
receiver-checks-complete, client exit 0, no failure, no collection secondary. Evidence readback only; qualification/acceptance is Root's.Preconditions. Templates#780 merged as
4a6a336012f122a8bc7e221d9772da020ef3f01c(independent review ACCEPT on3ddeb9b5, required CI green, main tree equals reviewed head, includes #778 and #773) under Root's selection 6388209473. Root's new precondition met: the receiver-side checkers not yet exercised on real data were replayed offline on the real retained trees of 40121103111 (exact quint 0.32.0, lmt rebuilt from the pinned recipe at sha37e0b036, SDD 2.4.0 from the retained package, real author/inspect/refusal, then the merged backend check: valid for provider-omitted AND wizard-omitted); the critic independently re-ran it and replayed the success-branch collection. No further fixture-only assumption was found, and none surfaced in the run.Dispatch. Intent recorded first: 6388406497. T0
2026-10-24T19:14:19Z, latest first step19:19:19Z, observer end19:54:19Z. One POST at 19:14:17.67Z, first step observed 19:14:24.41Z (accepted), no resend/rerun/cancel. Run on main4a6a3360, workflowsvg-release-d5-current-public, scoperehearsal, attempt 1, pins equal to those of 40121103111. Artifactcurrent-d5-rehearsal-40124373443-1(id 12571923852, API digestsha256:25200b980f894a3abc1388adfb9891f57f2afc3a09bafb988fe8b000f65ea966), downloaded once to/home/developer/.cache/release-d-4849/run3.Results.
kernel.apparmor_restrict_unprivileged_userns1 -> 0; the literal user/map-root/net namespace probe passed; SDK, Go, public packages, quint, lmt acquired; ProviderTool built.current-d5-receiver-check):raw-omitted(rawdotnet new, SVG Player),provider-omitted(installedfsgg-sdd scaffold, typed-sdd),wizard-omitted(omitted Wizard creation, typed-sdd) all passed.quint-specification-v1backend, for BOTH provider-omitted and wizard-omitted:typed-sdd authorsucceeded(11 changed paths each),inspectsucceeded; wrong-profileauthor --profile fsgg-quint-profile/1(managed groups 037 and 043) exited 1 withoutcome: blocked,changedPaths: [],QUINT-PROFILE-IDENTITY; the owner before/after snapshots were identical (271 and 276 entries) andcurrent-d5-backend-checkpassed for both.succeeded, 2failed(exactly the two expected refusals 037/043), allcontained, cleanupobserved-empty-removed; collection manifest 825 files / 46.9 MB of the 1 GiB cap,failures: [],collection-terminal=receiver-checks-complete;client-exit0;post-unitoriginal-unit-absenton the same boota3b0f37d-...;retirementfieldunqualified(the harness default pending Root).Tally (candidate, pending Root acceptance). Rehearsal receivers evidenced: 3 of 3 (raw-omitted, provider-omitted, wizard-omitted), including the actual default backend author/inspect and wrong-profile refusal on both typed receivers. Of the 43-receiver contract: 3 of 43. Still open: the 40 other receivers (raw-plus-42-case matrix: explicit lifecycle tokens and named SVG bundle selections), independent acceptance, the browser/AT/builds scope, provider physical disposal and the 439+46 holds (untouched).
Next. #4816 earlier-three runs only now that this terminal outcome is read back. It needs its selection posted on #4816 (the source only accepts a
.../issues/4816#issuecomment-admission); requested at #4816 (comment).EHotwagner commentedon Oct 24, 2026
Root (fdev) acceptance of D5 rerun 40124373443/a1 (2026-10-24)
Accepted at rehearsal-receiver scope: 3/43 receivers qualified (raw-omitted, provider-omitted, wizard-omitted).
Run
37e0b036and SDD 2.4.0 replay; both typed receivers valid; critic re-ran it.4a6a3360. Client exit 0,receiver-checks-complete.Results
QUINT-PROFILE-IDENTITYrefusal held, with identical snapshots (271 and 276 entries).Custody (owner readback, accepted by Root)
observed-empty-removed.sha256:25200b98….Out of scope (none of this is claimed by this acceptance): the remaining 40 receivers, browser/AT/build scope, provider physical disposal, and the 439+46 holds.
New conditional SOURCE selection: one fresh full-matrix D5 original (raw-plus-42: explicit lifecycle tokens and named bundle selections).
mainat or after the binding PR for this condition.EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: D5 FULL-MATRIX (raw-plus-42) ORIGINAL possible-send intent (recorded before the POST).
Delegated by Root (6387729342). Source: protected main
668bc6983ddceb37751b0792ca0d05d3458601ce(#783 reviewed head9e4d6f65, ACCEPT; required PR-head CI green; main tree equals the reviewed head; #778 and #773 included; offline replay of all 42 case receivers with the real tools and run3 packages done and reviewed). Workflowsvg-release-d5-current-public.yml, ref main, scopefull, attempt 1. Public pins: emittedd5-current-public.py pinsoutput (Templates 0.19.3 / SDD 2.4.0 / Wizard 0.22.0 / overlay 0.18.2), equal to the pins of 40124373443.2026-10-24T19:55:34Z2026-10-24T20:00:34Z2026-10-24T20:35:34ZCensus just before this intent: no queued or in-progress run of this workflow or of retained-reference-rehearsal.yml; the #4816 earlier-three original 40125840475 is terminal (passed) and read back, so no overlap. Exactly ONE POST follows this comment; an uncertain outcome is recovered read-only, never resent or rerun. Unchanged: 2 CPU / 8 GiB / Tasks 512 / 1800 s unit / 2100 s first step; hosted-only sysctl step records before/after; 439+46 and earlier-three Unknown holds untouched.
EHotwagner commentedon Oct 24, 2026
fdev, #4849 owner: D5 FULL-MATRIX ORIGINAL 40127488229/a1: PASSED.
scope: full, dispositionreceiver-checks-complete, client exit 0, no failure, no additional failure, no collection secondary. Evidence readback only; qualification/acceptance is Root's.Preconditions. Templates#783 merged as
668bc6983ddceb37751b0792ca0d05d3458601ce(independent review ACCEPT on9e4d6f65, required CI green, main tree equals the reviewed head), binding the source to Root's full-matrix selection 6388444491 (cutoff 2026-10-25T15:00:00Z; workflowscopenow[full]). Offline replay of every matrix checker first: using the real run3 packages and tools I created all 42 case receivers exactly asrun_d5does and ran the mergedcurrent-d5-receiver-checkon each (42/42 passed, 134 s on 2 cores), plus wizard hive registrations (21/21 one 0.19.3 row with the pinned archive hash); the critic re-ran the 42 checks, 12 negative mismatches (all refused), 10 cases under the cleared runner-style environment, and acollectover the 12 k-file tree. Ordering: the #4816 earlier-three original 40125840475 was terminal (passed) before this dispatch.Dispatch. Intent recorded first: 6388827829 (its prose labels the delegation with the older 6387729342 number by mistake; the linked admission URL, the dispatched
admissioninput and the source are 6388444491). T02026-10-24T19:55:34Z, latest first step20:00:34Z, observer end20:35:34Z. One POST at 19:55:32.22Z, first step observed 19:56:02.41Z (accepted), no resend/rerun/cancel. Run on main668bc698, workflowsvg-release-d5-current-public, scopefull, attempt 1, pins equal to 40124373443. Artifactcurrent-d5-full-40127488229-1(id 12573164690, API digestsha256:1dbc6bf6f331e58172424d9335b58ea411280f7b9f9229cc74380ff183584990), downloaded once to/home/developer/.cache/release-d-4849/run5.Results.
kernel.apparmor_restrict_unprivileged_userns1 -> 0; namespace probe, SDK/Go/packages/quint/lmt all passed.cases.tsv: 42 typed rows, routes provider and wizard x lifecycles omitted, none, sdd, typed-sdd, spec-kit (with the 5 bundle selections for the explicit ones).current-d5-receiver-checkran exactly 43 times under managed custody (raw-omitted + 42) and every one passed: 21 providerscaffoldcreations, 21 wizard creations, 7 template-hive installs, 21 wizard hive registrations verified.quint-specification-v1backend on the two omitted typed receivers:typed-sdd authorandinspectsucceededon provider-omitted and wizard-omitted (11 changed paths each); wrong-profileauthor(groups 122 and 128) exited 1 withblocked/QUINT-PROFILE-IDENTITY, owner snapshots identical (271 and 276 entries), backend check passed for both.succeeded, 2failed(exactly the two expected refusals), allcontained, cleanupobserved-empty-removed; collection 12,612 files / 151.2 MB of the 1 GiB cap,failures: [];client-exit0;post-unitoriginal-unit-absenton the same boote6f1adc9-...; 163.7 s total.Tally (candidate, pending Root acceptance): 43 of 43 receivers (raw-omitted, provider-omitted, wizard-omitted from the accepted rehearsal re-evidenced here, plus the 40 matrix receivers). Not claimed: builds, browser/AT, retained-workspace upgrades (#4816 is scoped separately), product-native adoption, public hosting, provider physical disposal, native UTC trust/skew, the 439+46 holds. #4849/#4644 closure is Root's.
EHotwagner commentedon Oct 24, 2026
Root acceptance (fdev, Programme/root), 2026-10-24: the #4849 Done when is established.
Source
Admitted actual current-public receiver evidence
receiver-checks-completein 164 s.current-d5-receiver-checkpassed 43/43 (raw plus 42 matrix receivers of explicit lifecycle tokens and named SVG bundle selections).quint-specification-v1author and inspect passed on the provider-omitted and wizard-omitted typed receivers.QUINT-PROFILE-IDENTITYrefusal held, with identical authority/owner snapshots.Composition: exact published SDD 2.4.0 / Wizard 0.22.0 / Workspace.Template 0.19.3. Build and browser results are reused only where accepted identities match.
Out of scope for this Delivery: retained-workspace upgrades (#4816), product-native adoption, public hosting, provider physical disposal, native UTC trust, and the 439+46 holds.
Next: parent #4644 is reconciled separately. Closing as completed.