Skip to content

Implement the Prometheus Chromium browser through Phase 22 - #1

Draft
LakshmanTurlapati wants to merge 463 commits into
mainfrom
chromium
Draft

Implement the Prometheus Chromium browser through Phase 22#1
LakshmanTurlapati wants to merge 463 commits into
mainfrom
chromium

Conversation

@LakshmanTurlapati

Copy link
Copy Markdown

What changed

  • Establish the Chromium checkout, legal inventory, product identity, asset pipeline, and reproducible patch discipline.
  • Add the Prometheus browser shell, WebUI surfaces, native agent-control spine, MCP bridge, runtime supervision, pairing, and remote-control workflows.
  • Add the Phase 22 extension policy, surface routing, compatibility fixtures, live health, and packaged extension lifecycle validation.
  • Record implementation plans, research, reviews, compatibility evidence, and phase verification scripts through the current Chromium milestone.

Why

This branch carries the Prometheus browser from its Chromium baseline through the first complete native-control and extension-ecosystem milestone. It preserves the Chromium changes as auditable patch stacks while keeping the orchestration, validation, and MCP tooling in this repository.

Impact

The branch introduces the browser implementation and its supporting verification infrastructure. It also hardens extension lifecycle behavior, supervision shutdown, privacy boundaries, and deterministic packaged-app smoke coverage.

Validation

  • npm test in tools/prometheus-mcp: 85/85 passed.
  • Bash syntax validation: 9 changed shell scripts passed.
  • JSON parsing: 3 changed tracked JSON files passed.
  • Git whitespace validation passed for native repository files; archived patch payloads and intentional Markdown hard breaks were excluded.

Lakshman added 30 commits July 15, 2026 15:59
- Track nested Chromium RED contract commit 2253a8f814
- Preserve ordered non-empty Phase 20 patch 0011
Track Chromium commit 7e59c5126f as ordered Phase 20 patch 0014.
Lakshman and others added 30 commits July 28, 2026 18:33
- Freeze fourteen assertion-only adapter and service failures
- Compile and link the dedicated extension Agent cohort directly
- Preserve reviewed Ninja metadata and export the nested source patch
- Select three nonempty WebUI and native-dialog contract tests

- Reject compile, link, crash, timeout, and unexpected-pass failures

- Preserve reviewed Ninja metadata and export the nested source patch
- Export nested commit c3dc3f6104 as ordered patch 0015.
- Extend verify-phase-22-extension-fixtures.sh: compile and link the new
  compatibility-catalog objects from a genuinely Siso-known template,
  run the closed catalog unit suite and the MV2 pinned-policy
  observation test (separately filtered, exactly-one-test gated), and
  on a full run generate/validate 22-COMPATIBILITY.json/.md and
  22-MV2-OBSERVATION.json against the compiled catalog, plus static
  claim-language and no-bypass gates and a WebUI-projection check.
- Extend verify-phase-22-webui.sh to compile the new catalog object
  (from the same genuine template) so its focused link keeps working,
  and widen its focused filter to include the new Parity Matrix
  regression test.
- Add generated 22-COMPATIBILITY.json/.md (five Verified MV3 rows with
  exact fixture hash/version, build/revision, and bounded limitation)
  and 22-MV2-OBSERVATION.json (manifest_version 2, native result
  "rejected", reason "unpacked_load_failed", kept outside the five-row
  catalog).
…tion

- Export nested commit 5c4263e8ed as ordered patch 0016.
- Regenerate 22-COMPATIBILITY.json/.md and 22-MV2-OBSERVATION.json from
  a fresh fixture run at the new nested revision (MV2 result unchanged:
  rejected, unpacked_load_failed).
Compiles the smoke bootstrap/controller/browsertest and the
developer-private caller browser-test pair into a custom
browser_tests-derived binary via direct Siso compile-command synthesis,
lists all three cohorts, and runs --focused with an --expect-failure mode
that freezes the one intended RED assertion (developer-private caller not
yet copied into SelectFileDialog::SelectFile).
…mode

The developer-private committed-caller cohort now passes for real, so
--focused (no --expect-failure) is the correct invocation going forward;
--expect-failure is retained only as a historical record of the RED commit
this plan started from.
Task 1 (retained RED contract) is complete and verified. Task 2 (GREEN
against the built app) is partial: the developer-private caller integration
and native install/inspect/reload are verified end to end, but disable
onward, the deterministic smoke-phase-22-extensions.sh script, and Tasks 3-4
were not completed. Phase 22 remains open.
Records the blocker, session stopping point, and operator next step for
Plan 22-05's partial completion. Does not advance the plan counter or mark
Phase 22 progress complete, since Tasks 2 (partial), 3, and 4 remain.

Also reverts an unintended side effect from an earlier `gsd-sdk query
state.add-blocker` call: that call failed to find STATE.md's actual
"Blockers and Deferred Items" heading (its regex expects an exact
"Blockers"/"Concerns" heading) but still bumped the frontmatter progress
counters (completed_phases 11->12, completed_plans 96->97) as a side effect,
which would have falsely implied Phase 22 / Plan 22-05 was complete.
Full scientific-method trail for the kReloaded stall: 10 evidence entries, the
three hypotheses eliminated before the confirmed one, the instrumented
observation that established it, and the reasoning checkpoint with its
falsification test and blind spots.

Root cause: the enable-toggle click was issued synchronously from inside the
previous transition's ExtensionRegistryObserver callback, so chrome://extensions
still rendered stale card state and setEnabled() was called with the value the
extension already had -- a silent no-op producing no registry transition. Fix
committed separately in the nested Chromium repo.

Session intentionally stays open. It exposed two further defects, recorded under
"Findings Handed Back", that block an honest kComplete: a renderer terminated
for the bad Mojo message "Tried to manipulate an event listener for an
unauthorized extension ID." after re-enable, and remove_not_observed_timeout
despite an accepted confirmation dialog. Plan 22-05 Tasks 3 and 4 remain
unstarted and no requirement is marked complete.
22-05-SUMMARY.md item 6 filed the weak_ptr.h:408 shutdown DCHECK as
pre-existing test-environment flakiness. It is Prometheus-owned code:
PrometheusBrowserMainExtraParts::PostMainMessageLoopRun() + 96, the same
offset in all four occurrences across the 110-run sweep, including 2/30 in
an arm with zero extension contact. Corrected in place, with the superseded
text preserved inline so the correction is auditable.

Folded in the measured crash-list corrections:
- "base sequence manager" and the ref_counted.h DCHECK are one crash, not
  two (single stack through BrowserTaskExecutor::Shutdown()).
- Mojo ReceiverSetState: not observed in 110 runs. Recorded as such, NOT
  upgraded to "benign" - this sweep does not characterize it.
- LaunchServices BUS_ADRALN: not observed in 110 runs. Same caveat.
- Two previously undocumented SEGV_ACCERR signatures added.

New finding doc 22-FINDING-shutdown-weakptr-use-after-destroy.md answers the
release-build question rather than assuming the DCHECK is cosmetic. ptr_ == 0
is written by exactly one surviving code path, ~WeakPtrFactoryBase(), so the
object is already destroyed. With DCHECKs compiled out the site executes
WeakReferenceOwner::Invalidate() on a destroyed owner: an atomic write through
a dangling Flag pointer, then a second Release() of a reference the owner
already dropped - a double free, or a refcount underflow that frees a Flag
still referenced by live WeakPtrs. Not cosmetic.

Also corrected two errors that would otherwise have propagated: the ProcessMap
race window is a 560-567 ms spread across four measured launches, not a single
562 ms figure; and the build is is_debug=false with dcheck_always_on, an
optimized build rather than a debug build.
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