Skip to content

Architecture page: stack, layer, host and desk views; unblock its refresh - #984

Merged
seathatflowsinourveins merged 2 commits into
mainfrom
cc/architecture-grand-design-20261010
Oct 10, 2026
Merged

seathatflowsinourveins merged 2 commits into
mainfrom
cc/architecture-grand-design-20261010

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 10, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • The Architecture page now opens with four views drawn from repository and command-center records, above the existing layer ledger and custody sections:

    • the six-layer stack;
    • the 32 layer verdicts grouped by area, from the component evidence matrix (30 recorded, 2 pending_lanes);
    • the host deployment: the WSL release target and the install plan's 13 services, 10 of them with loopback ports;
    • the north-star desk as a six-step data flow (11 of 20 gate-ladder gates established).

    Each view comes in three widths chosen by a container query, supports light and dark, loads nothing external, and does not scroll sideways at 390px.

  • The Architecture refresh has failed closed since G5: define start-closure/1 and pass full-asset closure check #878 (c8a29c3). That PR added catalogs/landscape/grand-catalog-20261008.json (28389911 bytes) and grand-catalog-index-20261008.json, and the policy neither granted nor excluded them. Both are now exact, reasoned architecture_supplement_exclusions:

    • The catalog is over the read bound, which stays at 16 MiB; its rows already reach the page through the retained G5 asset.
    • The index has no collection the supplement projection reads.

    Both landscape globs skip them before reading any bytes. Any other unlisted landscape file still fails closed. Each exclusion's pin and blob sha256 are recorded in architecture_derivation_sources.

SOTA sources

  • diagram-design 2.6.73: https://github.com/cathrynlavery/diagram-design at 246d6d71d752245403d2bf28d27f124192584d18 (release commit "bump plugin manifests to 2.6.73"), matching the installed plugin. Files followed:

    • skills/diagram-design/SKILL.md §6, §7, §9 and §12;
    • references/type-layers.md, type-deployment.md, type-data-flow.md;
    • references/primitives-core.md, output-spec.md, style-guide.md (system font source).

    Checks (re-run by the CC 2026-10-10T20:27Z on the preview built from this branch): scripts/verify-geometry.py on the 12 extracted SVG variants: 12 files, 0 findings, rc 0. skills/diagram-design/scripts/self_check.py --offline targets a standalone diagram-design document (one data-motion-root and its canonical controls script); on this page, which embeds 12 diagrams in a frontend-design shell, it reports exactly those two structural items and is not an applicable acceptance check. The earlier claim that it passed on a "manifest extract" referred to an unretained extract and is withdrawn. Upstream commits and blob ids of every cited file are recorded with the transcripts.

  • frontend-design (page shell): https://github.com/anthropics/skills at dbd4588f9e1033efb41dad4bef2f7947c8993d44, skills/frontend-design/SKILL.md.

  • Policy enforcement, at this head:

    • tools/local-pages/source_policy.py:309-322: ArchitectureReads.authorize raises "Architecture role/path has no independent approval" for an ungranted path. This is the live refusal.
    • tools/local-pages/source_policy.py:341-355: read raises SourceReadLimitError above its bound.
    • tools/local-pages/architecture_sources.py:27: _DOC_LIMIT = 16 MiB, so granting the 28 MB catalog would still refuse. It is excluded instead.
    • tools/local-pages/architecture_sources.py:375-386 and tools/local-pages/architecture_builder.py:241-266: the two landscape globs that read every non-canonical landscape JSON under architecture_supplement. They now skip listed exclusions at :383 and :245.
    • tools/local-pages/source_policy.py:281-307: exclusion validation. Each entry must be one exact top-level landscape JSON path with a reason, and is refused if it is also granted, protected or listed twice.
    • Provenance follows the existing architecture_derivation_sources records (landscape grants enumerated by git ls-tree at 85a067ba6b960f490f7277b451e8a8f9a74b52a4). The new records pin 9d4c00cd05d79b3fd5074df2e46bacab87ee67ff, with blob sha256 afb38c94… (28389911 bytes) and 9d9cf1c5… (97426 bytes).
  • Records the views read, all already exactly granted, with no new grant:

    • catalogs/landscape/component-evidence-matrix.json
    • evidence/artifacts/new-wsl-install-plan-20261002/install-plan.json
    • docs/new-wsl-handbook.json
    • .github/main-ruleset.json
    • catalogs/us-equities/gates-20260922.json
    • catalogs/us-equities/runtime-target.json

Tests

  • tests/test_local_pages_architecture_manifest.py (22 tests) covers:
    • each view rendering from its record, in all three widths;
    • the accessible SVG contract and no external URLs;
    • host labels never reaching the page;
    • the 32-layer count against the matrix;
    • the refresh signature;
    • a regression test for zone-label mask width.
  • tests/test_local_pages_architecture_landscape_exclusions.py (7 tests): rc 1 on origin/main 9d4c00c with the live SourcePolicyError, rc 0 here. It also checks that an excluded file is never opened, that an unlisted file still refuses, the validation rules, and that the refresh signature skips exclusions.
  • The 31 local-pages modules, including tests.test_local_pages and tests.test_architecture_pin_source: 471 tests, rc 0. scripts/validate.py rc 0; scripts/evidence_manifest.py --check rc 0.

Notes for reviewers

  • No record names a "risk governor"; the desk's risk step shows the portfolio-risk layer and its leverage-ladder gates.
  • No area grouping is recorded for the 20 foundation layers, so they form one area; the trading layers use their recorded group.
  • The deployment view draws 7 nodes and 13 chips, above the deployment type's budget of 6 and 9, because every recorded service is shown.
  • manifests/evidence.json re-registers only tools/local-pages/source_policy.json, following the hot-file protocol in docs/lanes.md.

🤖 Generated with Claude Code

The Architecture page now opens with four source-bound views above the
existing layer ledger and custody sections:

- the six-layer stack (host, agents, layer verdicts, GitHub gates, the
  north-star desk, monitoring), drawn as a diagram-design layer stack;
- all 32 layer verdicts from the component evidence matrix, grouped by
  catalog and the trading catalog's recorded group (30 recorded, 2
  pending_lanes);
- the host deployment: the WSL release target and the new-WSL install
  plan's 13 services with their loopback ports, by recorded layer;
- the trading desk as a six-step data flow from the gate ladder (11 of
  20 gates established), the runtime target and the matrix winners.

architecture_manifest.py projects only names, identifiers, versions,
ports, statuses, counts and dates from six records that source_policy.json
already grants exactly; reads are existence-gated, keep the fail-closed
policy, and join the custody table, the receipt and the refresh
signature. architecture_diagrams.py renders 1200-, 720- and 400-wide SVG
variants chosen by a container query, with system fonts and page tokens
for light and dark. document() gains an opt-in head argument for the
inlined stylesheet. 22 new tests cover projection, rendering, custody,
privacy, the matrix count and a mask-width regression.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
…ecture

Since #878 (c8a29c3) added catalogs/landscape/grand-catalog-20261008.json
and grand-catalog-index-20261008.json, every Architecture refresh fails
closed: both landscape globs (architecture_sources.build and
architecture_builder.refresh_if_changed) read each non-canonical landscape
JSON under architecture_supplement, and ArchitectureReads.authorize refuses
paths the policy does not grant ("Architecture role/path has no independent
approval: architecture_supplement", the SourcePolicyError recorded in the
local-pages refresh receipt). The live architecture.html stayed at its
pre-#878 build.

Granting cannot fix the 28389911-byte catalog: the globs read under a
16 MiB bound, and that limit stays. Its rows already reach the page
through the retained G5 asset. The 97 KB slot index has no layers, rows,
candidates or components collection, so the supplement projection would
attach nothing from it, and it gets no grant either.

source_policy.json gains architecture_supplement_exclusions: exact
top-level landscape JSON paths, each with a reason, refused when they are
also granted, protected, duplicated or outside catalogs/landscape. Both
globs skip a listed file before any byte access; any other unlisted
landscape file still fails closed. Exclusions appear in the receipt and the
custody section. Each exclusion's pin and blob sha256 are recorded in
architecture_derivation_sources.

The new test module fails on the committed catalog set with the same
SourcePolicyError and passes with the exclusions. It also checks that an
excluded file is never opened, that unlisted files still refuse, and the
exclusion validation rules.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 10, 2026
@seathatflowsinourveins
seathatflowsinourveins merged commit a7c15bd into main Oct 10, 2026
38 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the cc/architecture-grand-design-20261010 branch October 10, 2026 20:45
seathatflowsinourveins added a commit that referenced this pull request Oct 10, 2026
Peer-path correction acknowledged by the CC as #984's owner in
correction #147 (2026-10-10T21:40Z).

Git 2.53.0's default pathspec '*' can match directory separators;
':(glob)' uses FNM_PATHNAME, so its wildcard cannot cross '/'.
Primary source: git/git v2.53.0, Documentation/glossary-content.adoc,
the pathspec and glob sections.

Reader references at merged main a7c15bd:
tools/local-pages/architecture_sources.py:375 and
tools/local-pages/architecture_builder.py:241 both use top-level
Path.glob('*.json'). The test now uses the equivalent supported
Git pathspec, ':(glob)catalogs/landscape/*.json'.

Regression evidence: the exact native inventory method from merged
main a7c15bd, compiled in memory with its policy and committed catalog
inputs, fails one test before on the nested gap-closeouts/schema.json
and passes one test after changing only the pathspec literal; zero
errors in either probe. The complete requested architecture, closeout
and workflow modules then pass 170 tests with one existing skip.

Integrate the already-landed #984 baseline through this one forward
merge on d965908, because the peer test did not exist in its earlier
base. Relative to Git's clean automatic integration, authored changes
are only the single inventory line and its files[] registration.
seathatflowsinourveins added a commit that referenced this pull request Oct 11, 2026
Peer-path correction acknowledged by the CC as #984's owner in
correction #147 (2026-10-10T21:40Z). This commit carries, as its own
linear commit on main eb31d23, the fold that a08b616 authored inside
its forward merge of d965908 and a7c15bd: the single inventory line
and its files[] registration, re-registered through
host_receipts.register_file and evidence_manifest.py --write.

Git 2.53.0's default pathspec '*' can match directory separators;
':(glob)' uses FNM_PATHNAME, so its wildcard cannot cross '/'.
Primary source: git/git v2.53.0, Documentation/glossary-content.adoc,
the pathspec and glob sections, re-read from the installed Git 2.53.0
gitglossary(7).

Reader references, unchanged from a7c15bd to main eb31d23:
tools/local-pages/architecture_sources.py:375 and
tools/local-pages/architecture_builder.py:241 both use top-level
Path.glob('*.json'). The test now uses the equivalent supported
Git pathspec, ':(glob)catalogs/landscape/*.json'.

Regression evidence carried from a08b616, measured at main a7c15bd:
the exact native inventory method from merged main, compiled in memory
with its policy and committed catalog inputs, fails one test before on
the nested gap-closeouts/schema.json and passes one test after
changing only the pathspec literal; zero errors in either probe.

Re-measured on this linear branch at parent e1c6df7
(2026-10-11T00:08Z): git ls-files lists 22 paths for
'catalogs/landscape/*.json', including
catalogs/landscape/gap-closeouts/schema.json, and 21 top-level paths
for ':(glob)catalogs/landscape/*.json'.
tests.test_local_pages_architecture_landscape_exclusions ran 7 tests
with 1 failure on that nested schema.json before this change, and
7 tests OK after it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 11, 2026
Peer-path correction acknowledged by the CC as #984's owner in
correction #147 (2026-10-10T21:40Z). This commit carries, as its own
linear commit on main eb31d23, the fold that a08b616 authored inside
its forward merge of d965908 and a7c15bd: the single inventory line
and its files[] registration, re-registered through
host_receipts.register_file and evidence_manifest.py --write.

Git 2.53.0's default pathspec '*' can match directory separators;
':(glob)' uses FNM_PATHNAME, so its wildcard cannot cross '/'.
Primary source: git/git v2.53.0, Documentation/glossary-content.adoc,
the pathspec and glob sections, re-read from the installed Git 2.53.0
gitglossary(7).

Reader references, unchanged from a7c15bd to main eb31d23:
tools/local-pages/architecture_sources.py:375 and
tools/local-pages/architecture_builder.py:241 both use top-level
Path.glob('*.json'). The test now uses the equivalent supported
Git pathspec, ':(glob)catalogs/landscape/*.json'.

Regression evidence carried from a08b616, measured at main a7c15bd:
the exact native inventory method from merged main, compiled in memory
with its policy and committed catalog inputs, fails one test before on
the nested gap-closeouts/schema.json and passes one test after
changing only the pathspec literal; zero errors in either probe.

Re-measured on this linear branch at parent e1c6df7
(2026-10-11T00:08Z): git ls-files lists 22 paths for
'catalogs/landscape/*.json', including
catalogs/landscape/gap-closeouts/schema.json, and 21 top-level paths
for ':(glob)catalogs/landscape/*.json'.
tests.test_local_pages_architecture_landscape_exclusions ran 7 tests
with 1 failure on that nested schema.json before this change, and
7 tests OK after it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 11, 2026
* Add the shared evidence-bound gap closeout loader

Validate dated layer closeouts through the pinned jsonschema 4.26.0
Draft 2020-12 API. Bind original crosswalk identity, registered evidence,
supported vendor sources and two passing GPT/Claude reports at the same head.
Preserve proposed/residual/blocked gaps and all current-main counts.

Retain the required failing-before controls, receipt/files compatibility
correction and final native fixture evidence. Make the existing validator
pin available through hash-pinned CI requirements.

Sources: python-jsonschema/jsonschema v4.26.0 at
a7277432b0f7bcd0551f6e589d30457017125df4, validators.py:307,348,812;
native-agent-stack main 9d4c00c,
catalog_decisions.py:57,85 and host_receipts.py:710.

Validation: 84 touched-module/inventory tests, zero skips; unchanged native
matrix check and final registered-tree FULL validation passed.

* Refresh the bounded advisory inventory for closeout reads

Account for the shared loader's eight additional input-read locations and
one measured dynamic shape in the existing repository workflow test.
Retain the historical inventory and every other script, shape, coverage
and enforcement expectation; no loader, schema or worker-policy change.

Source: native-agent-stack main 9d4c00c,
blueprints/runtime-workers/openhands/resolver/gate_reads.py:913-930.

Validation: the original assertion fails before correction; the touched
module passes 125 tests with one existing optional PyYAML skip using the
hash-pinned CI environment. Final registered-tree FULL validation passes.

* Normalize the retained advisory log endings

Remove the final empty line in each native advisory test log to satisfy
the repository whitespace contract. Refresh the explicit file bindings
and retain the prior hashes. Test assertions and results are preserved.

Validation: final registered-tree FULL validate passed after normalization;
the cached whitespace gate must pass before this forward commit.

* Correct the shared closeout registry and review-credit contract

Use files[] as the hash authority and model real metadata-only receipt
rows in the fixtures. Keep unreviewed residual/blocked records proposed
without changing counts or prior credit. Pin each missing closeout guard.

Use the existing missing-library SkipTest convention and install the
hash-locked schema validator before freshness discovery. Document the
Python 3.10 dependency floor and correct the upstream/native citations.

Regenerate the worker advisory snapshot through the native derivation and
remove hard-coded increments. Retain the prior snapshot and fail-before
measurements. Source: main 03a986e,
validate.py:665-666 and the native worker GateReads derivation;
jsonschema 4.26.0/a7277432b0f7bcd0551f6e589d30457017125df4.

Validation: required/schema-enabled modules 552 tests, 2 existing skips;
freshness-related modules 261 tests with the stale-registration case
rechecked after supported refresh; final FULL validation passed.

* Preserve the pinned freshness calendar install step

* Match architecture inventory to top-level native readers

Peer-path correction acknowledged by the CC as #984's owner in
correction #147 (2026-10-10T21:40Z). This commit carries, as its own
linear commit on main eb31d23, the fold that a08b616 authored inside
its forward merge of d965908 and a7c15bd: the single inventory line
and its files[] registration, re-registered through
host_receipts.register_file and evidence_manifest.py --write.

Git 2.53.0's default pathspec '*' can match directory separators;
':(glob)' uses FNM_PATHNAME, so its wildcard cannot cross '/'.
Primary source: git/git v2.53.0, Documentation/glossary-content.adoc,
the pathspec and glob sections, re-read from the installed Git 2.53.0
gitglossary(7).

Reader references, unchanged from a7c15bd to main eb31d23:
tools/local-pages/architecture_sources.py:375 and
tools/local-pages/architecture_builder.py:241 both use top-level
Path.glob('*.json'). The test now uses the equivalent supported
Git pathspec, ':(glob)catalogs/landscape/*.json'.

Regression evidence carried from a08b616, measured at main a7c15bd:
the exact native inventory method from merged main, compiled in memory
with its policy and committed catalog inputs, fails one test before on
the nested gap-closeouts/schema.json and passes one test after
changing only the pathspec literal; zero errors in either probe.

Re-measured on this linear branch at parent e1c6df7
(2026-10-11T00:08Z): git ls-files lists 22 paths for
'catalogs/landscape/*.json', including
catalogs/landscape/gap-closeouts/schema.json, and 21 top-level paths
for ':(glob)catalogs/landscape/*.json'.
tests.test_local_pages_architecture_landscape_exclusions ran 7 tests
with 1 failure on that nested schema.json before this change, and
7 tests OK after it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Refuse conflicting receipt mirrors and unsupported validators

Fix the two P2s from the FIRST GPT read of ad2e1b1. files[] alone
supplies evidence bindings; optional receipt sha256/bytes mirrors must
agree with those bindings. Metadata-only rows remain valid. Nonempty
closeouts require installed jsonschema exactly 4.26.0 before schema or
document loading, with an actionable hash-pinned installation command.
The no-record path does not inspect package metadata.

Use CPython v3.13.16 Lib/importlib/metadata/__init__.py:980 (version)
and :49 (PackageNotFoundError), and python-jsonschema/jsonschema
 a7277432b0f7bcd0551f6e589d30457017125df4 jsonschema/__init__.py:27.
Both fetched primary source files match the installed bytes; retain
source hashes and the supported metadata API citation in the correction
receipt and decision record. No replacement validator is introduced.

The seven focused controls fail against the unchanged reviewed loader:
six assertion failures, zero errors, while equal mirrors, descriptive
receipts and the no-record behavior pass. All seven pass after the fix.
Actual Python 3.14.4/jsonschema 4.19.2 accepts the fixture before the fix
and refuses it afterward without returning a document. Actual missing-
package refusal and no-record compatibility controls also pass.

Keep the receipt key named receipt_path, distinct from the existing
filesystem iterator named path. The unchanged native worker assertion
caught four advisory locations on the unpublished preparation candidate;
the native alias control restores 330/98 with identical per-script counts
and shape multiplicities. Preserve that failure and the candidate-only
control; the final committed head is checked before the first push.

Required modules: 174 tests OK, zero skips (26 closeouts, 64 matrix,
84 validator). FULL validate: 70 components, 11466 hashed files,
4 profiles, 239 receipts, exit 0. Matrix --check: 32 rows, exit 0.
The worker snapshot remains SHA-256 8752740817bb41c1a582e33fa475e4ce4064f2ccfecadb706bce40ecb4512157,
330 locations and 98 shapes; frozen crosswalk and generated reports
remain unchanged. Preserve historical traces and refresh their source
locator and file registrations through the native registry function.

One forward commit on ad2e1b1. The GPT micro and the CC's disposition
of its prior Claude PASS remain required at this new loader head.

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant