Skip to content

build: isolate Pixi integration environments - #7

Merged
leej3 merged 6 commits into
mainfrom
agent/isolate-pixi-environments
Aug 14, 2026
Merged

build: isolate Pixi integration environments#7
leej3 merged 6 commits into
mainfrom
agent/isolate-pixi-environments

Conversation

@leej3

@leej3 leej3 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

AI-generated draft — not reviewed by John

Summary

  • make the root Pixi environment installable and testable before any submodule
    checkout;
  • retain checkout-submodules as the explicit exact recursive setup for broad
    cross-component work;
  • add locked static and service-backed upstream deployments in isolated inline
    Pixi environments;
  • provide recorded modes that restore parent gitlinks and reject dirty
    components, plus worktree modes that preserve candidate commits and edits;
  • restore the 14 legacy service assertions and their scoped integration-contract
    successors;
  • add a read-only semantic diff between the prepared pool cache and the live
    public pool; and
  • document how Milestones 1–3 map into the Milestone 4 product and engineering
    surface.

Why

The previous root environment declared Python packages from uninitialized
submodule paths. Pixi therefore needed those submodules before it could create
the environment containing the checkout helper—a circular bootstrap. It also
mixed engine development, the historical CON migration stack, Hugo, Node, and
git-annex into one lock and task namespace.

Submodules remain the reviewed source-level dependency pins. They are not root
environment prerequisites. Each upstream deployment task now initializes the
exact repositories it needs, including nested submodules, before resolving its
own locked dependencies.

Two policies make upstream development explicit:

  • recorded tasks restore the commits in the parent tree and refuse modified
    component worktrees; and
  • *-worktree tasks initialize only missing repositories and preserve current
    commits, tracked edits, and untracked files.

This supports coordinated work across upstream repositories without letting a
validation command silently discard the work being tested. Once component
changes are committed and their gitlinks are recorded, the clean recorded tasks
and hosted workflow establish the next known-good parent stack.

Capability audit

Milestone 4 carried the complete accepted content and supported product
behavior forward: 186 canonical and 13 reference records, the 199-record and
185-page projection, 186-node/467-edge graph, assets, project-path behavior,
credential-free editor review bundles, Zotero evidence, offline operation,
deterministic builds, and rollback. Its traceability baseline maps all 106
parent Python methods, five Playwright definitions/nine executions, 42 Zotero
methods, and eight editor methods with no unmapped source assertion.

The audit did find one execution gap: 19 assertions for the required
service-backed engineering stack were described as retained but no longer ran
from main. This PR restores the 14 detailed service tests and the five former
integration concerns through a scoped full-stack contract. The service stack is
a first-class engineering integration capability; only the downstream static
consumer is designed not to require it.

The new capability map distinguishes carried product behavior,
engineering-only functionality, and intentionally superseded milestone
mechanisms.

Task surface

Scope Recorded pins Candidate worktrees
Static site build-upstream-static, serve-upstream-static build-upstream-static-worktree, serve-upstream-static-worktree
Full stack check-upstream, serve-upstream check-upstream-worktree, serve-upstream-worktree

test-upstream-full runs the isolated service and orchestration contracts.
diff-upstream-pool verifies the prepared cache manifest, fetches the live
public collection without replacing the cache, and reports added, removed, and
field-level record changes by PID. It writes the exact ignored JSON report to
build/upstream-stack/pool/live-diff.json; differences are informational unless
the script's explicit --check mode is selected.

The manual Engineering environment workflow runs the live recorded full-stack
check on a selected parent ref after this workflow is available on main.

Known limitation

The static recorded deployment is reproducible from Git, annex, and tool pins.
The full deployment pins its software stack, but a fresh checkout still fetches
the current public pool snapshot. The historical capture contained 4,978
records; this review found 4,979. The ignored cache is digest-checked and reused,
and the new diff makes subsequent live drift explicit. True bit-for-bit
full-data reconstruction would still require an explicitly licensed immutable
snapshot artifact. This PR records that boundary rather than silently
republishing the live pool.

Verification

  • root suite: 44 engine tests and 39 development tests passed;
  • isolated full-stack contracts: 21 passed, including the 14 legacy service
    assertions;
  • recorded static build: 1,973 pages, artifact audit clean, component worktrees
    clean afterward;
  • dirty-worktree proof: recorded mode rejected the test edit, worktree mode
    built successfully and preserved it exactly;
  • live recorded full check: 4,979 records matched in each collection, anonymous
    writes were rejected, editor writes were confined to protected incoming, UI
    and schema assets passed, and all child services stopped cleanly;
  • live cache comparison: 4,979 cache records and 4,979 live records were
    semantically identical at digest ca43704f89afb75c29ecd9b338c018177e5e696a3bc821e0ded661ce8b269c6c;
  • root and both inline locks pass --check; and
  • Snapper/pre-commit, workflow parsing, and git diff --check passed.

The pull-request matrix runs the root suite, recorded and worktree static builds,
and isolated full contracts on Ubuntu 24.04 and macOS 14 without making ordinary
PR checks depend on mutable public-pool availability.

leej3 and others added 4 commits August 13, 2026 17:59
Make the root Pixi environment bootstrappable without submodules and retain recursive checkout as the explicit full integration setup.

Run the pinned upstream static site through a locked PEP 723 Pixi script that initializes only its recorded site and theme gitlinks. Exercise the same non-recursive path on Linux and macOS CI.

Retire the legacy CON task and Pages facade from main while preserving it in repository history.

Co-Authored-By: Codex Desktop 26.803.61601 (runtime codex-cli 0.147.0-alpha.6.5) / gpt-5.6-sol <codex@openai.com>

Codex-Reasoning-Effort: high
Restore the optional service-backed upstream contracts in a locked, scoped
environment. Keep recorded tasks reproducible and fail closed on dirty
component checkouts, while parallel worktree tasks preserve candidate commits
and edits.

Document how Milestone 1-3 capabilities map into Milestone 4 and call out the
remaining live public-pool snapshot limitation.

Co-Authored-By: Codex Desktop 26.803.61601 (runtime codex-cli 0.147.0-alpha.6.5) / gpt-5.6-sol <codex@openai.com>
Codex-Reasoning-Effort: high
Run the annex status refresh under the verified absolute worktree, then restore
the caller's exact submodule configuration. This avoids git-annex resolving a
relative worktree outside GitHub's nested runner checkout.

Co-Authored-By: Codex Desktop 26.803.61601 (runtime codex-cli 0.147.0-alpha.6.5) / gpt-5.6-sol <codex@openai.com>
Codex-Reasoning-Effort: high
Add a read-only PID-keyed semantic diff between the prepared public-pool
cache and the live upstream collection. Print bounded field-level changes,
retain exact details in ignored JSON, and expose an explicit strict mode
without replacing the cache.

Clarify that the service-backed stack is a required engineering capability
even though downstream consumers do not require it.

Co-Authored-By: Codex Desktop 26.803.61601 (runtime codex-cli 0.147.0-alpha.6.5) / gpt-5.6-sol <codex@openai.com>
Codex-Reasoning-Effort: high
@leej3
leej3 force-pushed the agent/isolate-pixi-environments branch from 0cd9826 to b8a86d9 Compare August 14, 2026 14:45
leej3 added 2 commits August 14, 2026 12:20
Define the experimental downstream plugin boundary, the evidence-versus-canonical review contract, and the gates required before the common host can graduate into the template.

Co-Authored-By: Codex Desktop 26.803.61601 (runtime codex-cli 0.147.0-alpha.6.5) / gpt-5.6-sol <codex@openai.com>

Codex-Reasoning-Effort: high
Link the downstream Zotero implementation and the stacked DataLad evidence review. Record the fail-closed collection rename result and the reproducible candidate inventory.

Co-Authored-By: Codex Desktop 26.803.61601 (runtime codex-cli 0.147.0-alpha.6.5) / gpt-5.6-sol <codex@openai.com>

Codex-Reasoning-Effort: high
@leej3

leej3 commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator Author

AI-generated draft — not reviewed by John

The post-milestone metadata source-adapter goal is now part of this branch in docs/metadata-source-adapters.md.

The first two concrete proofs are:

  • downstream draft con/test-orinoco-downstream-website#7: experimental Zotero plugin host, semantic live diff, and fail-closed evidence refresh;
  • stacked draft #8: one-off DataLad provenance run over dump-research-info:data/con_site, retained as inactive review evidence.

The live Zotero review caught a collection-policy rename that would otherwise appear to remove 146 candidates. The DataLad run found 19 source-only candidates and enrichment evidence for 60 matched records, and reran to the identical output tree. Neither proof promotes canonical metadata.

@leej3
leej3 marked this pull request as ready for review August 14, 2026 18:24
@leej3
leej3 merged commit f897eb0 into main Aug 14, 2026
3 checks passed
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