Repository navigation
W6 governance: preserve survivors and resolve layers before research - #1008
Conversation
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 95b2770778
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
95b2770 to
bac4e6a
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…tration landscape on the command-center page The owner asked for the whole ecosystem on one page, so the command center grows from six sections to nine, still from existing producers only: - Orchestration: the CC's recorded orchestration-frameworks resolution and the same slot in cc-native-practice slots-final.json, the landing queue, the co-op's GPT read queue (read-queue-now.json) and the Adoption snapshot's orchestration tool calls by role. - Resolution landscape: each matrix winner's component, pin, evidence class, lifecycle stages and platforms, with the W6 final columns (verdict, run pin, upstream E2E at the pin, invoke evidence) as recorded or "not recorded". Each winner's repository is matched to cc-now.json mirrors.pins by the version its tag names or a commit prefix, and a winner without a mirror says so. Terminal states come only from final-stack.json and read "pending #1008/#1007" until it exists. The committed north-star readiness layers follow with the same columns; the CC's program, mirrors, rulings and ten-layer plan render as given. - SOTA skill invoke rates: one row per skill pinned in adoption/skills/manifest.json (source@ref, linked only for https, and path), joined with the 7-day counts per client from skill_usage.py and child-usage.mjs, or from #970's skill-invoke-rate-daily/1 projection when it is current. Zero calls flag "wiring defect"; a pinned skill with no install record is "not installed" (unknown while /skill-doctor is unmeasured); a called skill the manifest does not pin is "unpinned". The practice-slot table marks the orchestration-frameworks row. An unmeasured value never reads as zero. - Tokens saved: tools/local-pages/token_tools_now.py runs each token tool's own report command (rtk gain, headroom agent-savings and output-savings, context-mode doctor) and records its exit code, run time, version and own estimate in token-tools-now.json. The page shows each beside its command, labels the token-window counters as client counters, and never sums across tools, evidence classes or windows. - Research queue: research-queue.tsv rows and research-state.json's resume order. The #1012 Claude read's fixes are folded in. B1: the email mask moves into the shared sanitizer and matches after its per-token decoding (CPython html.unescape and urllib.parse.unquote, cited at v3.13.16), so @, an encoded dot (%2E or .), %2540 and a semicolon-less @ are omitted on every page; the old page-local mask left all five readable. B2: each section's label follows what it renders, and every partial section names its reason. B3: each section and the count strip render in their own guard, so a scalar codex_top_lanes_M or an integer above 1e308 degrades only its own section. The receipt lists only the not-wired inputs the page rendered. source_policy.json gains a command_center role map with sixteen exact repo and state paths, read through CommandCenterReads, which extends the Architecture reader (bounded, no-follow, protected names, no user root). Reports past their limit read "stale" with their age; times recorded as a time of day stay as recorded. tools/skill-usage/render_units.py renders reviewed user units that keep the three skill reports current: hourly, the host report (91 s measured, including the $0 zero-turn claude -p /skill-doctor, with --claude-timeout 120 because the 30 s default expired once under load) and the Claude lanes sweep (198 s and a 1.9 GB peak, projected from 181 MB to 26 KB by systemd/claude-lanes.jq); daily, the Codex lanes report, which had not finished after 25 minutes, so its completion time is unmeasured. Each step renames a finished report into place. The evidence manifest records the new hashes of source_policy.json and the skill-usage README. Tests cover each section, unknown versus zero, staleness, hostile types and strings, privacy (eight email forms, decoded twice) and the exact grants; 33 fail-before mutations of this change each fail them. The unit tests round-trip each ExecStart through systemd quoting and pass systemd-analyze verify. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b08c1e5367
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…tration landscape on the command-center page The owner asked for the whole ecosystem on one page, so the command center grows from six sections to nine, still from existing producers only: - Orchestration: the CC's recorded orchestration-frameworks resolution and the same slot in cc-native-practice slots-final.json, the landing queue, the co-op's GPT read queue (read-queue-now.json) and the Adoption snapshot's orchestration tool calls by role. - Resolution landscape: each matrix winner's component, pin, evidence class, lifecycle stages and platforms, with the W6 final columns (verdict, run pin, upstream E2E at the pin, invoke evidence) as recorded or "not recorded". Each winner's repository is matched to cc-now.json mirrors.pins by the version its tag names or a commit prefix, and a winner without a mirror says so. Terminal states come only from final-stack.json and read "pending #1008/#1007" until it exists. The committed north-star readiness layers follow with the same columns; the CC's program, mirrors, rulings and ten-layer plan render as given. - SOTA skill invoke rates: one row per skill pinned in adoption/skills/manifest.json (source@ref, linked only for https, and path), joined with the 7-day counts per client from skill_usage.py and child-usage.mjs, or from #970's skill-invoke-rate-daily/1 projection when it is current. Zero calls flag "wiring defect"; a pinned skill with no install record is "not installed" (unknown while /skill-doctor is unmeasured); a called skill the manifest does not pin is "unpinned". The practice-slot table marks the orchestration-frameworks row. An unmeasured value never reads as zero. - Tokens saved: tools/local-pages/token_tools_now.py runs each token tool's own report command (rtk gain, headroom agent-savings and output-savings, context-mode doctor) and records its exit code, run time, version and own estimate in token-tools-now.json. The page shows each beside its command, labels the token-window counters as client counters, and never sums across tools, evidence classes or windows. - Research queue: research-queue.tsv rows and research-state.json's resume order. The #1012 Claude read's fixes are folded in. B1: the email mask moves into the shared sanitizer and matches after its per-token decoding (CPython html.unescape and urllib.parse.unquote, cited at v3.13.16), so @, an encoded dot (%2E or .), %2540 and a semicolon-less @ are omitted on every page; the old page-local mask left all five readable. B2: each section's label follows what it renders, and every partial section names its reason. B3: each section and the count strip render in their own guard, so a scalar codex_top_lanes_M or an integer above 1e308 degrades only its own section. The receipt lists only the not-wired inputs the page rendered. source_policy.json gains a command_center role map with sixteen exact repo and state paths, read through CommandCenterReads, which extends the Architecture reader (bounded, no-follow, protected names, no user root). Reports past their limit read "stale" with their age; times recorded as a time of day stay as recorded. tools/skill-usage/render_units.py renders reviewed user units that keep the three skill reports current: hourly, the host report (91 s measured, including the $0 zero-turn claude -p /skill-doctor, with --claude-timeout 120 because the 30 s default expired once under load) and the Claude lanes sweep (198 s and a 1.9 GB peak, projected from 181 MB to 26 KB by systemd/claude-lanes.jq); daily, the Codex lanes report, which had not finished after 25 minutes, so its completion time is unmeasured. Each step renames a finished report into place. The evidence manifest records the new hashes of source_policy.json and the skill-usage README. Tests cover each section, unknown versus zero, staleness, hostile types and strings, privacy (eight email forms, decoded twice) and the exact grants; 33 fail-before mutations of this change each fail them. The unit tests round-trip each ExecStart through systemd quoting and pass systemd-analyze verify. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tration landscape on the command-center page The owner asked for the whole ecosystem on one page, so the command center grows from six sections to nine, still from existing producers only: - Orchestration: the CC's recorded orchestration-frameworks resolution and the same slot in cc-native-practice slots-final.json, the landing queue, the co-op's GPT read queue (read-queue-now.json) and the Adoption snapshot's orchestration tool calls by role. - Resolution landscape: each matrix winner's component, pin, evidence class, lifecycle stages and platforms, with the W6 final columns (verdict, run pin, upstream E2E at the pin, invoke evidence) as recorded or "not recorded". Each winner's repository is matched to cc-now.json mirrors.pins by the version its tag names or a commit prefix, and a winner without a mirror says so. Terminal states come only from final-stack.json and read "pending #1008/#1007" until it exists. The committed north-star readiness layers follow with the same columns; the CC's program, mirrors, rulings and ten-layer plan render as given. - SOTA skill invoke rates: one row per skill pinned in adoption/skills/manifest.json (source@ref, linked only for https, and path), joined with the 7-day counts per client from skill_usage.py and child-usage.mjs, or from #970's skill-invoke-rate-daily/1 projection when it is current. Zero calls flag "wiring defect"; a pinned skill with no install record is "not installed" (unknown while /skill-doctor is unmeasured); a called skill the manifest does not pin is "unpinned". The practice-slot table marks the orchestration-frameworks row. An unmeasured value never reads as zero. - Tokens saved: tools/local-pages/token_tools_now.py runs each token tool's own report command (rtk gain, headroom agent-savings and output-savings, context-mode doctor) and records its exit code, run time, version and own estimate in token-tools-now.json. The page shows each beside its command, labels the token-window counters as client counters, and never sums across tools, evidence classes or windows. - Research queue: research-queue.tsv rows and research-state.json's resume order. The #1012 Claude read's fixes are folded in. B1: the email mask moves into the shared sanitizer and matches after its per-token decoding (CPython html.unescape and urllib.parse.unquote, cited at v3.13.16), so @, an encoded dot (%2E or .), %2540 and a semicolon-less @ are omitted on every page; the old page-local mask left all five readable. B2: each section's label follows what it renders, and every partial section names its reason. B3: each section and the count strip render in their own guard, so a scalar codex_top_lanes_M or an integer above 1e308 degrades only its own section. The receipt lists only the not-wired inputs the page rendered. source_policy.json gains a command_center role map with sixteen exact repo and state paths, read through CommandCenterReads, which extends the Architecture reader (bounded, no-follow, protected names, no user root). Reports past their limit read "stale" with their age; times recorded as a time of day stay as recorded. tools/skill-usage/render_units.py renders reviewed user units that keep the three skill reports current: hourly, the host report (91 s measured, including the $0 zero-turn claude -p /skill-doctor, with --claude-timeout 120 because the 30 s default expired once under load) and the Claude lanes sweep (198 s and a 1.9 GB peak, projected from 181 MB to 26 KB by systemd/claude-lanes.jq); daily, the Codex lanes report, which had not finished after 25 minutes, so its completion time is unmeasured. Each step renames a finished report into place. The evidence manifest records the new hashes of source_policy.json and the skill-usage README. Tests cover each section, unknown versus zero, staleness, hostile types and strings, privacy (eight email forms, decoded twice) and the exact grants; 33 fail-before mutations of this change each fail them. The unit tests round-trip each ExecStart through systemd quoting and pass systemd-analyze verify. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tration landscape on the command-center page The owner asked for the whole ecosystem on one page, so the command center grows from six sections to nine, still from existing producers only: - Orchestration: the CC's recorded orchestration-frameworks resolution and the same slot in cc-native-practice slots-final.json, the landing queue, the co-op's GPT read queue (read-queue-now.json) and the Adoption snapshot's orchestration tool calls by role. - Resolution landscape: each matrix winner's component, pin, evidence class, lifecycle stages and platforms, with the W6 final columns (verdict, run pin, upstream E2E at the pin, invoke evidence) as recorded or "not recorded". Each winner's repository is matched to cc-now.json mirrors.pins by the version its tag names or a commit prefix, and a winner without a mirror says so. Terminal states come only from final-stack.json and read "pending #1008/#1007" until it exists. The committed north-star readiness layers follow with the same columns; the CC's program, mirrors, rulings and ten-layer plan render as given. - SOTA skill invoke rates: one row per skill pinned in adoption/skills/manifest.json (source@ref, linked only for https, and path), joined with the 7-day counts per client from skill_usage.py and child-usage.mjs, or from #970's skill-invoke-rate-daily/1 projection when it is current. Zero calls flag "wiring defect"; a pinned skill with no install record is "not installed" (unknown while /skill-doctor is unmeasured); a called skill the manifest does not pin is "unpinned". The practice-slot table marks the orchestration-frameworks row. An unmeasured value never reads as zero. - Tokens saved: tools/local-pages/token_tools_now.py runs each token tool's own report command (rtk gain, headroom agent-savings and output-savings, context-mode doctor) and records its exit code, run time, version and own estimate in token-tools-now.json. The page shows each beside its command, labels the token-window counters as client counters, and never sums across tools, evidence classes or windows. - Research queue: research-queue.tsv rows and research-state.json's resume order. The #1012 Claude read's fixes are folded in. B1: the email mask moves into the shared sanitizer and matches after its per-token decoding (CPython html.unescape and urllib.parse.unquote, cited at v3.13.16), so @, an encoded dot (%2E or .), %2540 and a semicolon-less @ are omitted on every page; the old page-local mask left all five readable. B2: each section's label follows what it renders, and every partial section names its reason. B3: each section and the count strip render in their own guard, so a scalar codex_top_lanes_M or an integer above 1e308 degrades only its own section. The receipt lists only the not-wired inputs the page rendered. source_policy.json gains a command_center role map with sixteen exact repo and state paths, read through CommandCenterReads, which extends the Architecture reader (bounded, no-follow, protected names, no user root). Reports past their limit read "stale" with their age; times recorded as a time of day stay as recorded. tools/skill-usage/render_units.py renders reviewed user units that keep the three skill reports current: hourly, the host report (91 s measured, including the $0 zero-turn claude -p /skill-doctor, with --claude-timeout 120 because the 30 s default expired once under load) and the Claude lanes sweep (198 s and a 1.9 GB peak, projected from 181 MB to 26 KB by systemd/claude-lanes.jq); daily, the Codex lanes report, which had not finished after 25 minutes, so its completion time is unmeasured. Each step renames a finished report into place. The evidence manifest records the new hashes of source_policy.json and the skill-usage README. Tests cover each section, unknown versus zero, staleness, hostile types and strings, privacy (eight email forms, decoded twice) and the exact grants; 33 fail-before mutations of this change each fail them. The unit tests round-trip each ExecStart through systemd quoting and pass systemd-analyze verify. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tration landscape on the command-center page The owner asked for the whole ecosystem on one page, so the command center grows from six sections to nine, still from existing producers only: - Orchestration: the CC's recorded orchestration-frameworks resolution and the same slot in cc-native-practice slots-final.json, the landing queue, the co-op's GPT read queue (read-queue-now.json) and the Adoption snapshot's orchestration tool calls by role. - Resolution landscape: each matrix winner's component, pin, evidence class, lifecycle stages and platforms, with the W6 final columns (verdict, run pin, upstream E2E at the pin, invoke evidence) as recorded or "not recorded". Each winner's repository is matched to cc-now.json mirrors.pins by the version its tag names or a commit prefix, and a winner without a mirror says so. Terminal states come only from final-stack.json and read "pending #1008/#1007" until it exists. The committed north-star readiness layers follow with the same columns; the CC's program, mirrors, rulings and ten-layer plan render as given. - SOTA skill invoke rates: one row per skill pinned in adoption/skills/manifest.json (source@ref, linked only for https, and path), joined with the 7-day counts per client from skill_usage.py and child-usage.mjs, or from #970's skill-invoke-rate-daily/1 projection when it is current. Zero calls flag "wiring defect"; a pinned skill with no install record is "not installed" (unknown while /skill-doctor is unmeasured); a called skill the manifest does not pin is "unpinned". The practice-slot table marks the orchestration-frameworks row. An unmeasured value never reads as zero. - Tokens saved: tools/local-pages/token_tools_now.py runs each token tool's own report command (rtk gain, headroom agent-savings and output-savings, context-mode doctor) and records its exit code, run time, version and own estimate in token-tools-now.json. The page shows each beside its command, labels the token-window counters as client counters, and never sums across tools, evidence classes or windows. - Research queue: research-queue.tsv rows and research-state.json's resume order. The #1012 Claude read's fixes are folded in. B1: the email mask moves into the shared sanitizer and matches after its per-token decoding (CPython html.unescape and urllib.parse.unquote, cited at v3.13.16), so @, an encoded dot (%2E or .), %2540 and a semicolon-less @ are omitted on every page; the old page-local mask left all five readable. B2: each section's label follows what it renders, and every partial section names its reason. B3: each section and the count strip render in their own guard, so a scalar codex_top_lanes_M or an integer above 1e308 degrades only its own section. The receipt lists only the not-wired inputs the page rendered. source_policy.json gains a command_center role map with sixteen exact repo and state paths, read through CommandCenterReads, which extends the Architecture reader (bounded, no-follow, protected names, no user root). Reports past their limit read "stale" with their age; times recorded as a time of day stay as recorded. tools/skill-usage/render_units.py renders reviewed user units that keep the three skill reports current: hourly, the host report (91 s measured, including the $0 zero-turn claude -p /skill-doctor, with --claude-timeout 120 because the 30 s default expired once under load) and the Claude lanes sweep (198 s and a 1.9 GB peak, projected from 181 MB to 26 KB by systemd/claude-lanes.jq); daily, the Codex lanes report, which had not finished after 25 minutes, so its completion time is unmeasured. Each step renames a finished report into place. The evidence manifest records the new hashes of source_policy.json and the skill-usage README. Tests cover each section, unknown versus zero, staleness, hostile types and strings, privacy (eight email forms, decoded twice) and the exact grants; 33 fail-before mutations of this change each fail them. The unit tests round-trip each ExecStart through systemd quoting and pass systemd-analyze verify. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…R rows, keep unmeasured skill defects unknown The final commit of #1012's last wave. It folds Astra's first read of a737ef9 (CHANGES_REQUESTED: one P1 and two P2s) into the wording commit the final Claude delta asked for. - P1: the shared email mask now takes the whole local part RFC 5322 section 3.4.1 allows: a quoted string such as "reviewer"@example.org, whose quotes may be percent- or entity-encoded, or a run of atext from its first letter or digit, including ! ' { } = ? and &. The slash is left out, so a URL path such as /@handle is not read as an address. CPython's address parser accepts both forms (Lib/email/_parseaddr.py getaddrspec, lines 365-379, and getquote, line 463, at the v3.13.16 mirror cbc944f4). - The mask reads the whole text with each token decoded, so a local part split across tokens by a quote, space or apostrophe is found whole. - It masks exactly where decoding changed nothing, and omits whole any decoded token the address touches. - It is anchored at the at sign, and a backslash in a quoted local part always opens a quoted pair, so its cost is linear. text() on a 16,000-character run takes 0.003 s, where a737ef9 took 2.5 s under load. This also resolves the 50977b0 micro's (a)5. - A full live build takes 43.2 s, against 41.3 s at a737ef9 from the same state. On 283,448 unique strings from the live inputs, catalogs, manifests and repository Markdown, its output equals a737ef9's. - The pages and token-tools-now.json share the mask. The systemd unit exemptions and the public-string controls are unchanged. - P2: an in_review row that is not an object is rejected with a stated gap naming the count. PR waves reads partial, "No pull requests in review." is kept for a valid empty list, and the count strip counts the accepted rows only. - P2: the number of pinned skills with no 7-day call counts only the skills with a measured 7-day column. With none measured it is null in the receipt and UNKNOWN in the summary and strip. With some measured, the strip reads "N of M measured", and the receipt adds measured_skills and pinned_skills. - From the final Claude delta: the sanitizer docstring and the README say a dotted template-unit instance still masks (openvpn-client@site.conf.service becomes "[email omitted].service"), and a test pins it. - #1008 merged at 2026-10-11T21:34:23Z (569bbc5) without final-stack.json, so the page's pending label, from one constant, the README and the two pinning assertions read "pending #1007 (#1008 landed 2026-10-11 21:34:23Z)". The regressions use Astra's probe inputs. They check the decoded page, receipt and token report for unique planted local-part and domain text, so they need no address grammar of their own. The 9 new or changed tests fail at a737ef9 (119 failures, counting subtests), and Astra's own three probes fail there and pass here. A guard test runs JSON-escaped shell text before an at sign in a child process with a timeout. It fails on the first draft of the quoted-local pattern, whose backslash had two parses (one live build spent 90 s there), and passes here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tration landscape on the command-center page The owner asked for the whole ecosystem on one page, so the command center grows from six sections to nine, still from existing producers only: - Orchestration: the CC's recorded orchestration-frameworks resolution and the same slot in cc-native-practice slots-final.json, the landing queue, the co-op's GPT read queue (read-queue-now.json) and the Adoption snapshot's orchestration tool calls by role. - Resolution landscape: each matrix winner's component, pin, evidence class, lifecycle stages and platforms, with the W6 final columns (verdict, run pin, upstream E2E at the pin, invoke evidence) as recorded or "not recorded". Each winner's repository is matched to cc-now.json mirrors.pins by the version its tag names or a commit prefix, and a winner without a mirror says so. Terminal states come only from final-stack.json and read "pending #1008/#1007" until it exists. The committed north-star readiness layers follow with the same columns; the CC's program, mirrors, rulings and ten-layer plan render as given. - SOTA skill invoke rates: one row per skill pinned in adoption/skills/manifest.json (source@ref, linked only for https, and path), joined with the 7-day counts per client from skill_usage.py and child-usage.mjs, or from #970's skill-invoke-rate-daily/1 projection when it is current. Zero calls flag "wiring defect"; a pinned skill with no install record is "not installed" (unknown while /skill-doctor is unmeasured); a called skill the manifest does not pin is "unpinned". The practice-slot table marks the orchestration-frameworks row. An unmeasured value never reads as zero. - Tokens saved: tools/local-pages/token_tools_now.py runs each token tool's own report command (rtk gain, headroom agent-savings and output-savings, context-mode doctor) and records its exit code, run time, version and own estimate in token-tools-now.json. The page shows each beside its command, labels the token-window counters as client counters, and never sums across tools, evidence classes or windows. - Research queue: research-queue.tsv rows and research-state.json's resume order. The #1012 Claude read's fixes are folded in. B1: the email mask moves into the shared sanitizer and matches after its per-token decoding (CPython html.unescape and urllib.parse.unquote, cited at v3.13.16), so @, an encoded dot (%2E or .), %2540 and a semicolon-less @ are omitted on every page; the old page-local mask left all five readable. B2: each section's label follows what it renders, and every partial section names its reason. B3: each section and the count strip render in their own guard, so a scalar codex_top_lanes_M or an integer above 1e308 degrades only its own section. The receipt lists only the not-wired inputs the page rendered. source_policy.json gains a command_center role map with sixteen exact repo and state paths, read through CommandCenterReads, which extends the Architecture reader (bounded, no-follow, protected names, no user root). Reports past their limit read "stale" with their age; times recorded as a time of day stay as recorded. tools/skill-usage/render_units.py renders reviewed user units that keep the three skill reports current: hourly, the host report (91 s measured, including the $0 zero-turn claude -p /skill-doctor, with --claude-timeout 120 because the 30 s default expired once under load) and the Claude lanes sweep (198 s and a 1.9 GB peak, projected from 181 MB to 26 KB by systemd/claude-lanes.jq); daily, the Codex lanes report, which had not finished after 25 minutes, so its completion time is unmeasured. Each step renames a finished report into place. The evidence manifest records the new hashes of source_policy.json and the skill-usage README. Tests cover each section, unknown versus zero, staleness, hostile types and strings, privacy (eight email forms, decoded twice) and the exact grants; 33 fail-before mutations of this change each fail them. The unit tests round-trip each ExecStart through systemd quoting and pass systemd-analyze verify. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…R rows, keep unmeasured skill defects unknown The final commit of #1012's last wave. It folds Astra's first read of a737ef9 (CHANGES_REQUESTED: one P1 and two P2s) into the wording commit the final Claude delta asked for. - P1: the shared email mask now takes the whole local part RFC 5322 section 3.4.1 allows: a quoted string such as "reviewer"@example.org, whose quotes may be percent- or entity-encoded, or a run of atext from its first letter or digit, including ! ' { } = ? and &. The slash is left out, so a URL path such as /@handle is not read as an address. CPython's address parser accepts both forms (Lib/email/_parseaddr.py getaddrspec, lines 365-379, and getquote, line 463, at the v3.13.16 mirror cbc944f4). - The mask reads the whole text with each token decoded, so a local part split across tokens by a quote, space or apostrophe is found whole. - It masks exactly where decoding changed nothing, and omits whole any decoded token the address touches. - It is anchored at the at sign, and a backslash in a quoted local part always opens a quoted pair, so its cost is linear. text() on a 16,000-character run takes 0.003 s, where a737ef9 took 2.5 s under load. This also resolves the 50977b0 micro's (a)5. - A full live build takes 43.2 s, against 41.3 s at a737ef9 from the same state. On 283,448 unique strings from the live inputs, catalogs, manifests and repository Markdown, its output equals a737ef9's. - The pages and token-tools-now.json share the mask. The systemd unit exemptions and the public-string controls are unchanged. - P2: an in_review row that is not an object is rejected with a stated gap naming the count. PR waves reads partial, "No pull requests in review." is kept for a valid empty list, and the count strip counts the accepted rows only. - P2: the number of pinned skills with no 7-day call counts only the skills with a measured 7-day column. With none measured it is null in the receipt and UNKNOWN in the summary and strip. With some measured, the strip reads "N of M measured", and the receipt adds measured_skills and pinned_skills. - From the final Claude delta: the sanitizer docstring and the README say a dotted template-unit instance still masks (openvpn-client@site.conf.service becomes "[email omitted].service"), and a test pins it. - #1008 merged at 2026-10-11T21:34:23Z (569bbc5) without final-stack.json, so the page's pending label, from one constant, the README and the two pinning assertions read "pending #1007 (#1008 landed 2026-10-11 21:34:23Z)". The regressions use Astra's probe inputs. They check the decoded page, receipt and token report for unique planted local-part and domain text, so they need no address grammar of their own. The 9 new or changed tests fail at a737ef9 (119 failures, counting subtests), and Astra's own three probes fail there and pass here. A guard test runs JSON-escaped shell text before an at sign in a child process with a timeout. It fails on the first draft of the quoted-local pattern, whose backslash had two parses (one live build spent 90 s there), and passes here. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… to the native profile Fixes the two upheld Codex threads on #997 at 03fc660 (4245318057, 4245318059). The third, 4245318064 (P1, layer-resolution record), is not accepted: the layer-resolution protocol (#1008) governs layer adoption and verdict decisions, and this change adds no layer verdict. It corrects a host-state claim under AGENTS.md "Corrections", which the pinned sources already cited (ai-memory v2.6.3 = 385b81ea, Codex rust-v0.162.1 = 092d3acd) and the fail-before tests below satisfy. 1. The installer lead (4245318057). The retained 2026-09-21 record, evidence/artifacts/memory-landscape-20260921/native-commands.json:295-393 at 03fc660, shows the three installers run with --capture-assistant, exit 0 each, so the lead was true but undated; what it contradicted was correction #149's undated "The earlier hook applications ran without the flag". The lead now opens "At the 2026-09-21 qualification", cites that record and says it is not the hook state now. Correction #149 says the qualification's installers carried the flag, so the flag was lost before the 2026-10-11 measurement (the loss path is host history not reconstructed here), and names the two later flagless applications, the #144 repair and the 2.6.3 re-stage of 2026-10-10. "Not in force" is dated 2026-10-11. 2. The second Codex profile (4245318059). hook-trust.json at 03fc660 lists seven hook commands for the native profile (:35-77) and seven for the Desktop profile (:279-321), 14 in all, so the CC's 0 of 7 is one profile's. Correction #149 and the qualification prose after it now bound the count and the Codex conclusions (trust pending, capture off) to the native profile and say the Desktop profile was not measured. tests/test_memory_landscape_capture_doc.py has 16 tests (10 kept, 6 new). On the 03fc660 doc text the module gives 11 OK and 5 failures, 0 errors; on this text 16 OK. The new tests read the artifacts: the line ranges the doc cites, the flag and exit code of the three installer records, and seven commands per profile. manifests/evidence.json: hashes of the doc and the test re-registered only. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rrection #149) (#997) docs: ai-memory --capture-assistant was not in force on this host (correction #149) * docs: ai-memory --capture-assistant was not in force on this host (correction #149) The maintenance doc said the allowlist installers carried --capture-assistant. 0 of 9 Claude and 0 of 7 Codex hook commands did: ai-memory bakes the flag only into the Stop command and only preserves an opt-in already present (install_hooks.rs:689-701, 1104-1109 @ 89bd8ded; render_shared.rs:1425-1427), so applications without the flag never added it. Claude was re-staged with it on 2026-10-11; Codex waits for a trust refresh (trusted_hash changes). Also: the HookArgs v2.6.3 range in the doc-contract test becomes :2961-2970, test 1 checks every --check-capture block, a new test fails on the previous text, and the read kit's "repositories commit the marker" comment is listed as a host note against .gitignore:73. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * test: name the missing correction heading instead of raising ValueError section_from() used str.index, so a document lacking the #149 heading (the 16f0a1f text) gave 3 test errors instead of contract failures. It now raises AssertionError naming the heading, and the first #149 test no longer asserts on the whole document before extracting the section: the module gives 6 OK on the head text and 4 assertion failures, 0 errors, on the 16f0a1f text. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * docs: reconcile correction #149 with the dated qualification prose and pin it to the installed releases Fixes the four Codex review threads on #997 (each verified valid at 805aca0): 1. Contradiction. The two paragraphs after the correction said, in the present tense, that both clients' assistant Stop excerpts are opted in and that Codex trust ended in a captured outcome. They now open "At the 2026-09-21 qualification" (git blame 54896e7 and every artifact under evidence/artifacts/memory-landscape-20260921 carry that date) and point at correction #149. A new test reads that prose, which correction_149_section stops before. 2. Unverified host state. The 0 of 9 and 0 of 7 counts, the earlier hook applications, the Claude re-stage and the pending Codex trust are labelled CC host measurements, cited to correction #149 in command-center/lessons-20261005/cc-corrections-20261005.md and "not re-read by this change". 3. Pin. The host runs ai-memory 2.6.3 (385b81ea). install_hooks.rs:689-701, :1104-1109 and :1142 and render_shared.rs:1425-1427 are byte-identical at the same lines in v2.6.3 and v2.6.0 (89bd8ded), so both pins are cited and the test requires the v2.6.3 pin beside each cite. 4. Trust hash. Re-rendering changes the computed current hash; the stored trusted_hash is unchanged, the mismatch marks the hook modified, and the /hooks review writes the reviewed hash into trusted_hash (docs/decisions/2026-10-04-codex-rtk-hook-qualified.md Decision 1 at rust-v0.159.3; re-read at rust-v0.162.1 = 092d3acd, the installed codex-cli: discovery.rs:796-813 and :715-721, hooks_rpc.rs:58-92). The test rejects "re-rendering changes ... trusted_hash". tests/test_memory_landscape_capture_doc.py now has 10 tests: on the 805aca0 doc text the module gives 6 OK and 4 assertion failures, 0 errors (one per thread); on this text 10 OK. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * docs: cite correction #149's ledger by its true locator, coordination/lessons-20261005/... The #149 correction named the CC's ledger as command-center/lessons-20261005/cc-corrections-20261005.md, the form the brief prescribed. The CC recorded that as its correction #180: the ledger sits at coordination/lessons-20261005/cc-corrections-20261005.md (state-root relative), a sibling of command-center/, not under it. The doc keeps "(host state, not in this repository)"; the test now pins the true locator and rejects the old form. Found by looking up the file name under the host state root; the CC confirmed it in #180. Fail-before: with the new pin the module gives 9 OK and 1 assertion failure, 0 errors, on the 8b8c8f5 doc text; 10 OK after. validate.py and evidence_manifest.py --check pass. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * docs: date the installer lead and bound correction #149's Codex count to the native profile Fixes the two upheld Codex threads on #997 at 03fc660 (4245318057, 4245318059). The third, 4245318064 (P1, layer-resolution record), is not accepted: the layer-resolution protocol (#1008) governs layer adoption and verdict decisions, and this change adds no layer verdict. It corrects a host-state claim under AGENTS.md "Corrections", which the pinned sources already cited (ai-memory v2.6.3 = 385b81ea, Codex rust-v0.162.1 = 092d3acd) and the fail-before tests below satisfy. 1. The installer lead (4245318057). The retained 2026-09-21 record, evidence/artifacts/memory-landscape-20260921/native-commands.json:295-393 at 03fc660, shows the three installers run with --capture-assistant, exit 0 each, so the lead was true but undated; what it contradicted was correction #149's undated "The earlier hook applications ran without the flag". The lead now opens "At the 2026-09-21 qualification", cites that record and says it is not the hook state now. Correction #149 says the qualification's installers carried the flag, so the flag was lost before the 2026-10-11 measurement (the loss path is host history not reconstructed here), and names the two later flagless applications, the #144 repair and the 2.6.3 re-stage of 2026-10-10. "Not in force" is dated 2026-10-11. 2. The second Codex profile (4245318059). hook-trust.json at 03fc660 lists seven hook commands for the native profile (:35-77) and seven for the Desktop profile (:279-321), 14 in all, so the CC's 0 of 7 is one profile's. Correction #149 and the qualification prose after it now bound the count and the Codex conclusions (trust pending, capture off) to the native profile and say the Desktop profile was not measured. tests/test_memory_landscape_capture_doc.py has 16 tests (10 kept, 6 new). On the 03fc660 doc text the module gives 11 OK and 5 failures, 0 errors; on this text 16 OK. The new tests read the artifacts: the line ranges the doc cites, the flag and exit code of the three installer records, and seven commands per profile. manifests/evidence.json: hashes of the doc and the test re-registered only. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Scope
Before research dispatch, the W6 protocol consumes retained verdicts, completed sweeps and cumulative unresolved survivors, then dispatches only the delta. This PR adds the bounded AGENTS pointer and retained decision record. Terminal states are FINAL, SCHEDULED and RETIRED; SCHEDULED starts on named readiness inputs, with no run date. FINAL requires all four conditions for each winner.
The final adjudication replaces per-sentence Terminal pins with one exact native unittest equality assertion on the entire whitespace-normalized Terminal section. A separate regex rejects scheduling dates and synonyms. Selected Decision phrases retain their narrower checks; their widening coverage has not been measured.
1d1164e8c34df8250973a5c632e9747a1ef79533.lane:foundation.AGENTS.md,docs/decisions/2026-10-11-layer-resolution-protocol.md,tests/test_resolution_protocol_docs.pyand their existing registrations inmanifests/evidence.json.b08c1e5367ee488306393271d782d4b223c9d105, one forward commit on86b0244907c309cd0f2964c13631c4fd24c32047, without a rebase.SOTA sources
fb4a95b19a00335c5831bce913cbf177f90d5bd2c17819013b6021d2dc585e5c; terminal ruling at 06:12Z, SHA25642e3e24ec9ee2e06288b6f6cba407b741e585ca93cef5e738f3f93535258c8de.ruling-no-schedules-proceed-when-ready-20261011.md, heading time 17:31Z, SHA256dd05310efdb514b2886bb55a292176352f51f7d161345d8335e33d6285d191f2.pr1008-claude-micro-86b02449.md, SHA2566dac5c67f821ee17837c9afa5f7ee31f529b31305f3d69a07a98d0466cea761e, plus the CC's 18:06Z adjudication. The complete read and its exact mutation corpus are retained.cbc944f4bc59639a444dd971c737788ba2283a91,Lib/unittest/case.py:902-907(assertEqual) and:1371(assertNotRegex). The retained case.py bytes match the pinned local mirror. No Markdown parser or new test framework is introduced.validate.ymlandvalidate_shards.pydiscovery at original base8bffa2c41692ef483e91b68e3b15aeb331423d2c.Evidence-class table
mutants_v2.pySHA256de05a3a04b41c41fac339e237b32a1363ef7eba0ce7dde091d74182947137867: held head permits 26/58; corrected guard on held text rejects 58/58; final wording rejects 58/58. Valid text and whitespace reflow pass. No skipped or unexpected controlsThe final corpus copy changes only three condition-2 matching targets from the held wording to the mandated "Each winner has" wording; mutant replacements and the rest of the CC corpus are unchanged. The 57 in-section mutants are checked by the exact section pin; RT10, outside the section, is checked by the date-synonym regex. These results apply to this named census, not every possible documentation mutation.
Local commands run
Before the intentional text amendments, the final equality expectation against the held record also fails with one assertion failure; after the wording changes, the five doc tests pass. The record now describes precisely which text is protected. Condition 2 explicitly says each winner has a run pin; readiness defects are not a reason to re-research; the ruling heading time is 17:31Z.
Decision record
docs/decisions/2026-10-11-layer-resolution-protocol.md. No production function, model/research run, adoption E2E, invoke measurement or terminal-layer classification is performed. FINAL machine enforcement remains a separate follow-up. The AGENTS pointer and startup budgets are unchanged by this final adjudication.Read attachments: existing
landscape-live-foundation.w6-sources-20261011/plus~/.local/state/native-agent-stack/coordination/ns2604-coop/lanes/landscape-live-foundation.w6-adjudication-20261011/and itsMANIFEST.sha256. Exact held/final sources, the CC read and corpus, baseline/red/green logs and publication captures are retained. Earlier sentence-pinning receipts are historical and do not support broader protection claims at this head.Host evidence
No host receipts are added or changed.
Follow-ups
host_e2ebinds the verdict pin. Before FINAL, the enforcement follow-up must join each winner's upstream E2E receipt to its run pin; a receipt for a differing verdict pin is insufficient.docs/landscape-continuation.md:97-99so its reopening guidance defers to W6 governance: preserve survivors and resolve layers before research #1008's protocol. This is a FOLLOW-UP, not P1, and does not reopen the final adjudication.due-date,fixed date,date target,scheduled for <date>andcalendar datecan still pass. The measured 58-case census remains the scope of the current protection claim.Checklist
The CC's last-commit adjudication governed this head. Claude returned PASS_WITH_P3 and Astra returned ACK over
a0641a04..b08c1e5367ee488306393271d782d4b223c9d105, with the follow-ups recorded above. GitHub reports #1008 merged at 2026-10-11T21:34:23Z; #1007 follows this landing. The withdrawn 86b0244 GPT micro is not treated as an ACK. Only a reproduced P1 reopens this final adjudication after this commit.