Skip to content

Add fleet and Adoption views with native workstation reads - #899

Merged
seathatflowsinourveins merged 5 commits into
mainfrom
codex/ns2604-fleet-page-20261008
Oct 9, 2026
Merged

seathatflowsinourveins merged 5 commits into
mainfrom
codex/ns2604-fleet-page-20261008

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

Add the Fleet page and published Adoption views to the native local-page composer. Unavailable observations remain UNKNOWN, recorded empty lists and zero spend stay distinct, and each value retains its source date. The verified Fleet producer runs from sealed bytes through an isolated Python child; optional adapter failures preserve the other pages.

The producer bootstrap uses installed Python isolated mode (-I), verifies the sealed descriptor's digest, then adds the approved sibling import directory. A 90-second process-session bound kills and reaps timed-out descendants. Fleet source reads reuse the independent protected/no-follow reader. Actions cache time is sampled after locking and expires at 540 seconds; exact bounded public workflow names retain Unicode and punctuation.

Actual ledger actual_usd event amounts sum as spend. max_usd reservations remain separate from the CC credit ceiling. Both native and file observations of a valid empty ledger report dated zero spend; missing or unrecognized formats stay unknown. Malformed fallback dates become unreported, valid live memory readings replace fallback provenance, and optional total failures do not abort mandatory readings. Identity projection applies to source text at bounded label seams; finished documents and native HTML fragments are not rewritten.

SOTA sources

  • Native page and independent source-policy reference: repository at c945ea1f, tools/local-pages/source_policy.py/json, build_pages.py, current_view.py, and the native readiness builder.
  • Installed CPython 3.13.16, full source pin cbc944f4bc59639a444dd971c737788ba2283a91: subprocess, os, HTML escaping. Supported Popen/start_new_session/communicate and os.killpg APIs replace the direct-child-only timeout path; the existing regular/no-follow reader is reused.
  • Native CC Fleet producer coordination/ns2604-coop/tools/fleet_block.py, SHA-256 b7b6936e421682da7d699e3f22e8fdf04a2e838c8dff4b8bace60e88edd77cf3, event sums at lines 325–343; exact approved producer bytes are the source for the ledger schema.
  • Native adoption-now/1 and cc-now/1 published producer contracts; no live telemetry collector or raw account/config source is added.
  • Native portable source substitutions: readiness renderer at 164c071f. Classified decoded values retain home/session/task/account substitutions and surrounding public context.
  • Sealed-snapshot custody uses installed CPython memfd/fcntl and Linux native seals; actual replacement/in-place-mutation tests retain the prior R3 proof. No dependency, upstream fork, workflow, installation or client-configuration change.

Evidence-class table

Claim Evidence class Command / receipt
Isolated sealed producer, CWD shadow refusal and descendant cleanup local_integration with synthetic producer Actual subprocess regressions in test_local_pages_fleet_regressions.py; prior sealed-byte execution tests
Adapter failures preserve six pages; native fragment tags remain valid local_integration with synthetic inputs Actual finite refreshes in test_local_pages.py
Unknown/zero, ledger events, public names, cache overlap/expiry and dates synthetic Fleet/current/workstation/view regression fixtures
Portable plain/encoded source text and account-artifact parity synthetic Shared sanitizer native-reference and encoded-context tests
Independent source authorization/regular/no-follow boundaries retained local_integration with synthetic files Existing source-policy and Fleet protected-leaf/symlink/cache refusal tests
Repository integrity and scope source_review FULL validate exit0, diff check0

The Claude deep read at 698c658 requested 15 changes. The CC micro subsequently confirmed 15/15 FIXED at a920b34. The authorized ONE additional commit d7d02b4 restores a regression in the opaque-label guard: the exact ASCII boundary rejects prefixes after hyphens/underscores and rejects long prefixless alphanumeric runs. The original 34-character guarding fixture from 698c658 is restored in both insertion and assertion. Ordinary hyphenated lane names remain valid. Cheap N2–N6 folds distinguish all-rejected vs observed empty rosters, guard Fleet/cache date overflow, show the source-reported TTL, collect independent Actions before the producer, and document the regression module. Each correction has a red/green source/cache/composer seam. Final CC micro, co-op GPT and exact-head CI/thread/landing gates remain independent.

Local commands run

python3 -m unittest discover -s tests -p 'test_local_pages*.py'
# exit 0; 184 tests in 9.913 s, at rebased head 4537fb64

python3 -m unittest tests.test_north_star_readiness
# exit 0; 32 tests in 0.070 s; total 216 checked tests

python3 scripts/validate.py
# FULL, exit 0; 70 components, 11277 hashed files, 239 receipts, 4 profiles

git diff --check
# exit 0

These are local execution/fixture/integrity checks, not native macOS, provider/GPU acceptance or approval. The CC's a920b34..d7d02b4 micro is PASS: N1 exact and discriminating, N2–N6 fixed. Current 4537fb6 hosted CI/thread and CC/co-op landing checks remain required. Earlier a920b34 CI/zero-thread observations remain dated predecessor evidence, not current-head success.

Decision record

The final N1–N6 packet is research/fullspeed-20261008/g5-stars-gap/local-pages/fleet-899-n1-dispositions.md under the local state root, bound to d7d02b4. The prior 15-finding packet remains bound to a920b34 and Claude review SHA-256 33cbb0f17c44f42bcc33cc3ebb91f3a6482788a4a041fcfe01b0839b2d694d82; the CC micro confirms those fixes remain intact. This authorized additional descendant push used a fresh a920b34 lease, with no rebase.

On the CC's landing turn, ONE rebase onto current main aeb6ea5 and ONE leased push produced 4537fb6. Main still matched the chosen tip at push time; the exact PR lease was d7d02b4. Root and independent immutable-object checks verify the full net patch is byte-identical: 224993 bytes, SHA-256 e82179fb30bb506627fea6a116069c9c37fad467a82856840f6877b93d001c26; all 18 statuses/modes/blob IDs/content bytes match, drift0. No implementation edit, extra commit or hot-file regeneration was needed. pr899-landing-rebase-verified.json binds parity, local command/exit/head/UTC and lease proofs. Co-op/CC independently confirms parity before landing on green CI and zero threads.

The earlier required pre-cue run at 698c658 against main c945ea1 returned 1, with ten declared baseline test/subcase expectations. That is a dated predecessor observation, never current-head PASS or READY. The declarations remain:

tests.test_local_pages.LocalPagesTests.test_full_documents_native_digest_and_local_resources
tests.test_local_pages_workstation.WorkstationTests.test_missing_series_uses_exact_cc_values_and_read_time
tests.test_local_pages_workstation.WorkstationTests.test_redirects_are_refused_without_a_second_request (301,302,303,307,308)
tests.test_local_pages_workstation.WorkstationTests.test_swap_requires_same_target_recent_times_and_valid_difference
tests.test_local_pages_workstation.WorkstationTests.test_timeout_and_api_errors_preserve_fallback_and_finite_timeout
tests.test_local_pages_workstation.WorkstationTests.test_exact_valid_values_zero_and_original_sample_times

Classifications: output count7→8 for Fleet; optional totals expand FIELDS/METRICS beyond the prior three-value fallback and two-item swap slice; Windows samples require the native workstation-windows exporter job. Updated tests retain available/swap values, original timestamps, redirect refusal and swap validity. The complete IDs/classifications and current-head landing-turn pre-cue decision remain in the CC packet; the prior result1 is not recast as success.

Host evidence

No registered host evidence or component/platform acceptance change. No generated page, service or client configuration is committed. W2 manifest and macOS portability changes are separate tasks. F5 pruning remains separate.

Checklist

  • No workflow changes; existing Action pins and permissions preserved.
  • No secrets read, printed, logged or committed; no new required secret.
  • No paid hosting, subscription or billing surface.
  • Peer-owned files, frozen live/old worktrees and supplied task trees preserved.

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 8, 2026
@seathatflowsinourveins seathatflowsinourveins changed the title Add a current worker fleet page with native data and cached Actions Add fleet and Adoption views with native workstation reads Oct 9, 2026
@seathatflowsinourveins
seathatflowsinourveins force-pushed the codex/ns2604-fleet-page-20261008 branch 3 times, most recently from 6c42fd6 to 32671af Compare October 9, 2026 09:19
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
### Scope

The local source pages use independent exact path permissions before native or linked file access, preserve raw receipt custody and render portable text. FIX3 `0b66de07b6e1437084ab39e1f0ac7dce802f8b93` adds four permissions from current main so the default refresh continues after merge, tests policy/index parity and fail-closed policy handling, and documents the four flags' actual permitted files.

- Base commit: `e48de2e6fa1dd3b740af4793ea5824ea35476dba` (main merge base); FIX3 parent `7fac0184674168898e51787c85069fc35d2bb47f`.
- Lane: `lane:foundation`.
- This corrective head changes `tools/local-pages/source_policy.json`, its test module and README. All earlier read-boundary, port21090, redirect, sanitizer, date/reset and view corrections remain in the PR.

### SOTA sources

- [Current native source index](https://github.com/seathatflowsinourveins/native-agent-stack/blob/958a6d1ab770c807c5ee59748475a5c14df7ba52/tools/north-star/sources.json), pin `958a6d1ab770c807c5ee59748475a5c14df7ba52`, SHA-256 `4cdfe0a722a8e2a620551f5b092e2db762555deb06eef085686623561996dcd2`: independently approved exact root/path declarations for `cc_g2_started`, `cc_g2_started_correction`, `cc_g5_closure` and `cc_g6_f9`.
- [Maintained native readiness](https://github.com/seathatflowsinourveins/native-agent-stack/blob/958a6d1ab770c807c5ee59748475a5c14df7ba52/tools/north-star/build_readiness.py), same pin, reader SHA-256 `59428d63e09bab10e216e86af377891f8546aca6b3f9cc08c59d0803573b57b0`: original reader/portable export APIs under a module-local version-bound guard.
- [Maintained CI selector](https://github.com/seathatflowsinourveins/native-agent-stack/blob/958a6d1ab770c807c5ee59748475a5c14df7ba52/scripts/validate_shards.py), same pin, `discover()`/module assignment and `.github/workflows/validate.yml:265`; installed CPython `3.13.16` [unittest discovery](https://docs.python.org/3.13/library/unittest.html#test-discovery) is the native harness.
- Existing CPython3.13 descriptor `os.open/fstat/O_NOFOLLOW`, urllib redirect-handler and zoneinfo interfaces remain the implementation sources for safe reads, loopback collection and New York timestamps.
- Exact CC FIX2 micro SHA-256 `e4a149c1fa20ab42647f71090aa6e1442369605a89cdb22121d242ebf95a8eba`; prior policy/read-boundary evidence retained. No dependency, installation or upstream fork introduced.

### Evidence-class table

| Claim | Evidence class | Command / receipt |
| --- | --- | --- |
| FIX3 policy approves every exact declaration in the current main28-key index | `local_integration` | Metadata-only old7facpolicy RED/currentpolicy GREEN; no state bodies followed |
| Every committed index key requires exact root/path approval | `local_integration` | New committed-index parity regression; in-memory omitted grant makes it fail |
| Ordinary unlisted names cannot bypass role permissions; invalid/missing policy fails before native opens | `local_integration` with synthetic inputs | Policy18tests with actual open watchers; existing protected cases retained |
| Local-page modules already run through maintained CI selection | `local_integration` | Native bounded discovery5modules/69cases,0loader errors,each assignedonce; selector13tests |
| Earlier view/collector/native behavior remains compatible | `local_integration` with synthetic inputs | Composer27/current10/sanitizer6/workstation8/native32 |
| Repository integrity/scope | `source_review` | Validator0 and diff0 |

### Local commands run

Each test command used `nice -n 10 ionice -c2 -n7 timeout 600`:

```sh
python3 -B -m unittest discover -s tests -p test_local_pages.py               # rc0,27
python3 -B -m unittest discover -s tests -p test_local_pages_current_view.py  # rc0,10
python3 -B -m unittest discover -s tests -p test_local_pages_sanitization.py  # rc0,6
python3 -B -m unittest discover -s tests -p test_local_pages_workstation.py   # rc0,8
python3 -B -m unittest discover -s tests -p test_local_pages_source_policy.py # rc0,18
python3 -B -m unittest discover -s tests -p test_north_star_readiness.py       # rc0,32
python3 -B -m unittest tests.test_validate_shards                            # rc0,13
python3 scripts/validate.py                                                # rc0
git diff --check                                                          # rc0
bash command-center/cc-tools/base_tests_at_head.sh <repo> e48de2e 0b66de0 unittest
# rc0; modified_existing_test_files=0; every failing ID:none.
```

**114 tests PASS**:101page/native and13selector. The maintained pre-cue tool has no existing modified testfiles at the main merge base because these page modules are new in this PR; it does not replace executed tests. No expectation change in FIX3.

CI-selection investigation corrects the omission claim: the workflow runs eight native shards; `discover()` uses `test*.py` without an allowlist and already selects all five local-page modules. Workflow/selector bytes equal both7fac018 and fetched main958a6d1, so duplicate selection was unnecessary.

### Decision record

`research/fullspeed-20261008/g5-stars-gap/local-pages/architecture/stack-891-fix3-review.md` under the local state root records the exact source grants, old-policy failure/new-policy parity, tests and CI-selection proof. Policy SHA-256 `872bf19a9469e519cc1d4e08331689b5cdcf05db8c2bd7d9ccf85bcafb43886a`:28direct roles, with the existing exact index/supporting/SDK/override sets preserved. Missing/malformed policy and all unlisted input refusals happen before native file access.

### Host evidence

No registered host evidence changes or component/provider E2E inferred from fixtures. #899/#913 rebase onto FIX3; both reader micros, required CI/pre-cue and bottom-up CC landing cues through5f remain mandatory. F5 pruning remains separate.

### Checklist

- [x] CI selection verified through its maintained harness; workflow pins/permissions preserved.
- [x] No secrets printed/logged/committed; no required secret added.
- [x] No paid hosting or billing surface introduced.
- [x] Peer files/supplied worktrees preserved; generated pages uncommitted.
Base automatically changed from codex/ns2604-local-pages-20261008 to main October 9, 2026 10:38
@seathatflowsinourveins
seathatflowsinourveins force-pushed the codex/ns2604-fleet-page-20261008 branch from 32671af to 698c658 Compare October 9, 2026 10:55
seathatflowsinourveins added a commit that referenced this pull request Oct 9, 2026
1. Isolate the sealed producer bootstrap with Python -I and explicit sibling imports.
2. Degrade optional Fleet adapter errors to UNKNOWN without aborting other pages.
3. Preserve ordinary lane names and drop only individually unsafe roster rows.
4. Mask identity values at bounded text seams, preserving completed HTML tags.
5. Normalize scalar/dictionary fallback dates; reject invalid or overflowing dates.
6. Use native actual_usd/max_usd event sums and dated empty-ledger zero spend.
7. Bound producer sessions at 90 seconds and kill the timed-out descendant group.
8. Sample Actions cache time after acquiring the native lock.
9. Refresh Actions after 540 seconds, before the ten-minute publisher period.
10. Distinguish unknown pool/session observations from recorded empty lists.
11. Keep both default/fast tiers unknown when the source policy is incomplete.
12. Preserve public Unicode/punctuation workflow names with bounded privacy checks.
13. Preserve native portable context for classified decoded identifiers/accounts.
14. Reuse source_policy regular/no-follow/protected-name source reads.
15. Validate and normalize once on the composer path and remove dead branches.

Independent review reproduced additional native-fragment, live-total/date,
UTC-overflow, unknown-owner, empty-native-ledger and punctuated-token edges;
all receive regression coverage in this same fix commit.

Source: CC Claude /code-review max at 698c658, SHA-256
33cbb0f17c44f42bcc33cc3ebb91f3a6482788a4a041fcfe01b0839b2d694d82.
Native APIs: CPython 3.13.16 subprocess Popen/start_new_session/communicate,
os.killpg, pathlib and datetime; existing protected source reader reused.
1. Isolate the sealed producer bootstrap with Python -I and explicit sibling imports.
2. Degrade optional Fleet adapter errors to UNKNOWN without aborting other pages.
3. Preserve ordinary lane names and drop only individually unsafe roster rows.
4. Mask identity values at bounded text seams, preserving completed HTML tags.
5. Normalize scalar/dictionary fallback dates; reject invalid or overflowing dates.
6. Use native actual_usd/max_usd event sums and dated empty-ledger zero spend.
7. Bound producer sessions at 90 seconds and kill the timed-out descendant group.
8. Sample Actions cache time after acquiring the native lock.
9. Refresh Actions after 540 seconds, before the ten-minute publisher period.
10. Distinguish unknown pool/session observations from recorded empty lists.
11. Keep both default/fast tiers unknown when the source policy is incomplete.
12. Preserve public Unicode/punctuation workflow names with bounded privacy checks.
13. Preserve native portable context for classified decoded identifiers/accounts.
14. Reuse source_policy regular/no-follow/protected-name source reads.
15. Validate and normalize once on the composer path and remove dead branches.

Independent review reproduced additional native-fragment, live-total/date,
UTC-overflow, unknown-owner, empty-native-ledger and punctuated-token edges;
all receive regression coverage in this same fix commit.

Source: CC Claude /code-review max at 698c658, SHA-256
33cbb0f17c44f42bcc33cc3ebb91f3a6482788a4a041fcfe01b0839b2d694d82.
Native APIs: CPython 3.13.16 subprocess Popen/start_new_session/communicate,
os.killpg, pathlib and datetime; existing protected source reader reused.
N1 (P2): restore long prefix-less alphanumeric refusal, reject known secret
prefixes after hyphen/underscore boundaries, and restore the original
34-character guarding fixture from reviewed 698c658.
N2 (P3): nonempty all-rejected rosters remain UNKNOWN when no valid dated
source is available; known empty and mixed-valid lists retain their meaning.
N3 (P3): overflowing parsed Fleet/cache dates degrade to an unavailable stamp.
N4 (P3): source notes display the Actions-reported cache TTL instead of a
hard-coded ten-minute claim.
N5 (P3): collect the independent Actions observation before the producer.
N6 (P3): include the Fleet regression module in the documented focused checks.

The CC micro found all 15 prior findings fixed at a920b34 and identified
the N1 regression. This ONE additional commit preserves those fixes and
uses actual red/green boundary/cache/roster/composer regressions. No rebase.
Native reference remains CPython 3.13.16 cbc944f4bc59639a444dd971c737788ba2283a91
re/datetime and the existing native source/cache/producer APIs. No dependency,
workflow, service or client configuration change.
@seathatflowsinourveins
seathatflowsinourveins force-pushed the codex/ns2604-fleet-page-20261008 branch from d7d02b4 to 4537fb6 Compare October 9, 2026 16:47
@seathatflowsinourveins
seathatflowsinourveins marked this pull request as ready for review October 9, 2026 17:02
@seathatflowsinourveins
seathatflowsinourveins merged commit 3a4cc28 into main Oct 9, 2026
38 of 49 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the codex/ns2604-fleet-page-20261008 branch October 9, 2026 17:02
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T17:11:47.773673Z 4537fb6 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4537fb64fb

ℹ️ 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".

Comment on lines +193 to +194
codex_key = "codex_by_role" if "codex_by_role" in document else "codex_by_lane"
fallback = codex_key == "codex_by_lane"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use the lane fallback when role projection is null

When a valid snapshot contains codex_by_role: null alongside populated codex_by_lane, validation accepts both, but this key-presence check selects the null role map. The Fleet page consequently omits all recorded lane rows and incorrectly states that it uses the producer-published role projection. Treat a null role projection as absent and select codex_by_lane in this case.

Useful? React with 👍 / 👎.

Comment on lines +558 to +561
producer, producer_receipt = _read_source(producer_path, state_root, inputs, kind="native Fleet producer")
if producer is None:
raise ValueError("native producer unavailable")
result = _execute_producer(producer_path, producer, producer_receipt, run)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Authenticate the producer before executing it

When the state-root producer is stale, replaced before this read, or otherwise differs from the cited implementation, this path executes it without comparing producer_receipt["sha256"] to an independently approved digest. The later memfd check only compares the captured bytes with a hash computed from those same bytes, so any regular Python file at this path can execute before the output schema check and be reported as direct native; bind the producer to the approved pin before calling _execute_producer.

AGENTS.md reference: AGENTS.md:L5-L6

Useful? React with 👍 / 👎.

Comment on lines +215 to +219
if capture_output:
kwargs.update(stdout=subprocess.PIPE, stderr=subprocess.PIPE)
with subprocess.Popen(command, text=text, **kwargs) as child:
try:
stdout, stderr = child.communicate(timeout=timeout)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bound producer output while it is being captured

If the Fleet producer becomes noisy or loops while writing output, communicate() buffers unlimited stdout and stderr for up to 90 seconds. The subsequent len(result.stdout) check happens only after all bytes have already been retained, and stderr is never size-checked, so a failed producer can exhaust the page refresh process or host memory; enforce the output limit during capture rather than after process completion.

Useful? React with 👍 / 👎.

Comment on lines +368 to +369
except OSError:
return []

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve UNKNOWN when workflow discovery fails

When .github/workflows is missing or unreadable, this returns the same empty list as a successfully inspected checkout with no model workflows. _actions_locked then performs a successful gh run list, filters every run against that empty list, records a fresh timestamp, and the Fleet page reports no matching runs instead of an unavailable workflow classification. Propagate discovery failure separately so an unobserved inventory cannot become a measured zero.

AGENTS.md reference: AGENTS.md:L7-L7

Useful? React with 👍 / 👎.

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