Skip to content

chore(semantics): refresh the project registry I/O census - #5163

Closed
kokokoXUY wants to merge 1 commit into
loopx-project:mainfrom
kokokoXUY:codex/refresh-registry-io-census
Closed

kokokoXUY wants to merge 1 commit into
loopx-project:mainfrom
kokokoXUY:codex/refresh-registry-io-census

Conversation

@kokokoXUY

Copy link
Copy Markdown
Contributor

Goal And Delivered Outcome

  • Gap: the checked-in project registry I/O census is stale against main, so the architecture census
    gate is red and every active pull request's test-shard lane fails on it for a reason unrelated
    to its own diff.

  • Reproduced on a clean checkout of 420782f03725 (no PR content applied):

    $ python scripts/generate_project_registry_io_manifest.py --check
    unregistered project registry I/O sites: ['loopx/cli_commands/authority_archive.py::<module>.handle_authority_archive_command::codec_read:load_registry#2',
                                              'loopx/usage_goal.py::<module>._bound_codex_session::codec_read:load_registry#1']
    project registry I/O site metadata changed: loopx/chat_status_api.py::<module>.ChatStatusRequestMixin._status::codec_read:load_registry#1
    ... six metadata entries in total
    

    and the gate test fails with the same eight items:
    tests/architecture/test_goal_instance_binding_inventory.py::test_goal_instance_inventory_does_not_replace_the_registry_io_census.

  • After: --check reports project registry I/O manifest is current: 245 sites (exit 0), and both
    census tests pass. This follows the same chore as chore(semantics): refresh project registry I/O metadata #4990 ("refresh project registry I/O metadata",
    "restore the architecture census gate used by active pull requests").

What Changed

One generated file, loopx/semantics/project_registry_io_manifest_v1.json (+23 −7, 243 → 245
sites). The codec_read:load_registry sites are classified automatically; the nine direct sites the
generator could not carry over were classified explicitly, each inheriting what its module already
records. I am stating each one so the classification can be checked rather than assumed:

Module Sites Classification Why
loopx/control_plane/goals/deletion_service.py 6 (read_json ×4, atomic_write_json ×2) global_registry_io the file's registry transaction owner is already recorded under this module; these read and restore the global project registry and the target registry under the same lock
loopx/state_backup.py 1 (json.loads) global_registry_io the manifest already records this module under that classification
loopx/state_migration.py 2 (read_json_object) legacy_registry_source the manifest already records this module's legacy reads under that classification

No source file changes; nothing about registry behavior, permissions or the codec contract changes.

Scope And Continuation

  • Completed scope: the generated manifest is current, and the census gate is restored.
  • Overlap, stated for the reviewer: Unify default local state under .loopx with explicit migration #4915 and feat(runtime): fence first-party Host state by GoalRef #5141 both also edit this file. This refresh only
    carries what current main produces; if either lands first, this branch regenerates in one command
    (scripts/generate_project_registry_io_manifest.py) and I will re-run it rather than ask for a
    conflict resolution.
  • Deliberately not done: I did not change any loopx/** source to reduce the number of direct sites,
    because that is a registry-ownership change rather than a census refresh and does not belong in this
    chore.

Validation

  • Tested revision: (pushed head)
  • Run state: finished
  • Input classes: none
Check kind Result Public-safe evidence / limitation
static passed python scripts/generate_project_registry_io_manifest.py --check → exit 0, project registry I/O manifest is current: 245 sites. On unmodified main the same command exits 1 with the eight drifts quoted above.
unit passed python -m pytest -q tests/architecture/test_goal_instance_binding_inventory.py tests/architecture/test_project_registry_io_census.py → 9 passed. Before the refresh the first file's census case fails with the same eight items.
unit passed The regenerated manifest passes validate_project_registry_io_manifest with zero drift, and no row is left unclassified, which the generator treats as a failure.
  • Coverage and gaps: the census needs the repository npm dev dependencies (it loads TypeScript
    semantics); without them the test fails earlier with
    repository npm dev dependencies are not installed ... run npm ci --ignore-scripts, which is an
    environment error rather than drift. I ran it with a local typescript package installed.

Frontend / Visual Evidence

Not applicable: one generated JSON manifest.

The architecture census gate fails on current main, so every active pull
request's `test-shard` lane is red for a reason unrelated to its own diff.
`scripts/generate_project_registry_io_manifest.py --check` reports eight
drifts: two unregistered `codec_read:load_registry` sites and six moved
source line metadata entries.

Regenerated the tracked manifest from current main and classified the nine
direct registry I/O sites the generator could not carry over, each inheriting
the classification its module already records:

- `loopx/control_plane/goals/deletion_service.py` (six sites) -
  `global_registry_io`, matching the registry transaction owner in that file.
- `loopx/state_backup.py` (one site) - `global_registry_io`, the same category
  the manifest already records for that module.
- `loopx/state_migration.py` (two sites) - `legacy_registry_source`, the
  category the manifest already records for its legacy reads.

No source behavior changes; the manifest is generated state.

Signed-off-by: kokokoXUY <13682395396@163.com>
@kokokoXUY

Copy link
Copy Markdown
Contributor Author

Withdrawing this: main refreshed the census while this branch was open, and this
manifest would now regress the gate rather than restore it.

main at b9762502 already carries the refresh (1875f2e225 chore(registry): refresh
the current IO census
), and scripts/generate_project_registry_io_manifest.py --check
reports project registry I/O manifest is current: 245 sites (exit 0) with it.

Applying this branch's manifest to that base makes the gate red again with two entries the
refresh added:

project registry I/O site metadata changed: loopx/global_registry.py::<module>._sync_project_registry_to_global_once::codec_read:load_registry#1
project registry I/O site metadata changed: loopx/global_registry.py::<module>.sync_project_registry_to_global::codec_read:load_registry#1

So the drift I reported is fixed upstream and nothing here is needed. I generated this from
420782f0; between then and the push, main moved twice, which is why the branch was stale
before it was even reviewed. Closing rather than regenerating, because the file already has
an owner who is refreshing it in step with the code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant