Skip to content

J1 Core: finite project custody and closed persistent unlock carrier - #189

Merged
amad-malik merged 285 commits into
mainfrom
finn/j1-j2-core-20261019
Oct 19, 2026
Merged

amad-malik merged 285 commits into
mainfrom
finn/j1-j2-core-20261019

Conversation

@amad-malik

@amad-malik amad-malik commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Summary

DRAFT C1 source composition at d3a9311ed9032f2fb5b9349b69ea0473446e465b, tree c1e414cfd9c46a4c22860c5ff4b96fefa88045f6. Exact Nix C1-01/C1-02 input 9e11c9939aca18adfedd91ce09447372e0990716 is merged cleanly into 8638e0cb; only its project-key source/test blobs differ from that checkpoint. This head is FROZEN for Kai's existing Hale component-A closure check; no further push during review.

open_unlock
  -> recheck original leaf, ACL, and held-directory predicates after read
  -> issue descriptor only while the original session deadline remains valid
real make_secret -> Core custody -> finite bootstrap -> cleanup/close/record

All ancestry and the committed causal join test are preserved, together with Core/contracts/schema/CI source, existing writer inventory and all21 original migration bytes. No new mechanism, suite registration or unrelated edit.

Evidence

  • Before: Nix committed seven assertion-RED C1 controls with0 setup errors on both Pythons. The32-file owner index is hash-verified and the tests are byte-identical between his RED and fix commits. These retained input receipts receive no new-head PASS credit.
  • After: EACH local Python3.13.7/3.14.0 passes847 tests (294runtime +38schema +225installer +111renderer +15CLI +103strictness +61inventory). Each225-test installer run includes all nine C1 controls; the111 renderer tests include the unchanged real-resolver causal join. Separate writer audits classify162 writers with0 unclassified/missing/stale each. NONSECRET source fixtures use owned internal0700 temporary homes and are removed.
  • Exact-head ci39197852285 SUCCESS6/6; next-offline39197852261 SUCCESS18/18; all24 PR checks SUCCESS. Python 3.13.7: 255 suites, 3848 selected = 3688 PASS + 160 executed approved assertion declarations with ZERO PASS credit; 3869 independently collected, 21 unselected with zero execution credit; Python 3.14.0: 255 suites, 3848 selected = 3688 PASS + 160 executed approved assertion declarations with ZERO PASS credit; 3869 independently collected, 21 unselected with zero execution credit. Independent collections match all actual job partitions and every phase outcome is verified. All nine C1 controls and the unchanged causal join execute and PASS on both hosted Pythons.
  • All24 artifact archives/2902 members are hashed and match GitHub server digests. Evidence: /Users/amadmalik/DevVault/helix/output/Cortex/finn-c1-fixes-v7-20261019. Earlier v6 report and425 indexed files remain unchanged.

Original J1/J2 acceptance and the complete finite project-claim/admission packet remain open. J2/008, J3/J4 implementation, actual key/host/targetPG/native/installed effects and signed-helper closure remain held. The module alias in the causal source test supplies dynamic test identity only. Bob's prior S4/S5 findings retain their existing disposition. Kai owns the existing ONE Hale A closure check and canonical merge; this remains a draft.

Merge Danger

Door: two-way for source rollback; persistent effects require separate admission.

Blast Radius: custody

Credential failures

None in this continuation. An early artifact precheck returned workflow-in-progress, downloaded nothing and received no test credit; its raw result and corrected progress statement are retained in METADATA_ATTEMPTS.md.

Open items for Kai

Hale's existing C1-01/C1-02 closure check at this exact frozen head, then Kai's merge decision. No new reviewer, effect admission or J3 release requested. LEAN: reused exact owner fixes, original predicates, causal test and existing qualification; did NOT add a parser/backend/config path/suite; could merge none within this source commission.

amad-malik and others added 30 commits October 17, 2026 15:36
…ution (kills a surviving mutation)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e1babb2 (provisional; Core Hale verdict pending)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	.github/next-offline-suites.json
… purposes

Config fixture now uses Core's closed format (roles.<purpose>, tls.root_cert_ref,
client, limits); refusals must be Core's own reasons; serve/migrate/seed
projections must target vault_root/secret_ref (refs differ from purpose names)
plus the verify-full CA; seed admits bootstrap+installer_enrollment+api_request.
Unchanged: rung_feature, ready, DB argv, finite order. RED run-11: 26 failed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refs

render.py drops its own JSON config parser, field defaults and pin: the config
is read by Core's read_private_file + decode_config per mode view (serve,
migrate, seed); refusals are Core's own reasons; operations/release use Core's
decode and RC0 pin. Projections are the selected per-purpose Core refs at
vault_root/secret_ref (cortex-v2-<name>, single-file, read-only) plus the
verify-full root cert; no vault or secrets folder mount. Seed = bootstrap +
installer_enrollment + api_request. Tests unchanged since 8b745c7: 60 passed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, refusals)

The previous commit missed this file: it still described the provisional
purposes map. Source and tests unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er join test (identical blobs, no edits)

Path-limited checkout from cox/cortex-a-day1-20261017 @ 8e1babb (dependency only; Cox owns these files):
  next/src/cortex_core/runtime/bootstrap_config.py 9232c23
  next/src/cortex_core/runtime/credentials.py      1b2d751
  next/src/cortex_core/runtime/contracts.py        1b35320
  next/src/cortex_core/release/codec.py            902988e
Not carried: Cox's manifest entries and tests (Mike/Cox own them); a full merge conflicts only in .github/next-offline-suites.json.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…X-CI-001 (real Core carrier, mixed valid snapshots; pure module without PG; nine PG methods need a named home)

RED at this commit (python3 -m unittest -v test_roles.RealCarrierJoin test_roles.CiHome): 8 run, 6 assertion failures (3 join, 3 CI), 2 healthy controls pass.
Assertions are not changed by the fix commits.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…rojector stderr; child crashes are not assertions

HALE-A1-BOB-CONFIG-001: leaf/parent symlink and relative --config must refuse exactly as Core's
read_config_file does (private_file_required), nothing written.
HALE-A1-BOB-PROJECTION-001: legal case/underscore, max-length and long-prefix refs get distinct
DNS-label volume ids; a simulated derivation collision refuses projection_collision before publish.
HALE-A1-BOB-LOG-001: projector stderr is never forwarded, on failure or success.
HALE-A1-BOB-CAUSAL-001: render/wrapper/installer helpers raise ChildError (not AssertionError) on
a traceback, bash diagnostic or undeclared exit, so a crash never earns a causal kill.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tor stderr

render hands Core's read_private_file the caller's --config spelling unresolved (no early resolve),
so leaf/parent symlinks and relative paths refuse private_file_required exactly as Core does, and
the pod/plan mount the validated path. Projection volume ids are proj-<16 hex of sha256(ref)> via
Core's codec sha256 (DNS label, whole case-sensitive ref); a duplicate Pod volume name refuses
projection_collision before publish. The wrapper discards projector stderr; a failed projector
gives the one projection_failed:<rc> line. Tests unchanged since 8a67694.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ity uniqueness (HALE-A1-NIX-JOIN-001)

bind() refuses views whose shared fields differ (role_config_conflict:snapshot) and a combined set with a repeated login or resolved secret path
(role_config_collision:login|secret) before any SQL is rendered. The RED assertions of eab9eea are unchanged: the three join tests now pass;
the three CI-home tests stay RED until the split commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ne real-PG methods get a named home (HALE-A1-NIX-CI-001)

test_roles.py is pure (19 methods, no native process, no import-time discovery); test_roles_pg.py holds RolesInDatabase (8) + SecretGuard (1) with
byte-identical bodies and lazy PG discovery (missing toolset FAILS, never skips); shared pure fixtures in _fixtures.py; causal controls in
mutate_join.py (5 mutants killed, healthy/restored pass); README documents the PG-gate fixture contract. The RED assertions of eab9eea are unchanged.
Stock inventory now names test_roles_pg.py as unclassified until Mike admits its PG-gate home (shared manifest is Mike's).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
amad-malik and others added 9 commits October 18, 2026 12:34
…ion, original deadline, fixed S4 receiver and failure unwind; 34 independent component RED cases (interface and intentional RED only)

The arbitrary bootstrap_sink is retired for the fixed render.receive_bootstrap; make_secret stays a refusing skeleton. Component-only over named doubles; actual Core/S4 join NOT RUN.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… and callable project_key interface (skeleton only, every function refuses install_not_wired)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…handover (20 tests, 91 assertion failures, 0 errors; static controls pass)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ved key id and one-session fresh-descriptor handover (21 tests OK on 3.14.0 and 3.13.7; RED deciders unchanged, one test added)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t level (55 closed tests GREEN unchanged, 5 supplementary; resolvers stay unbound)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@amad-malik amad-malik changed the title Draft: preserve Core1 and S3 ACK base for J1/J2 J1 Core: finite project custody and closed persistent unlock carrier Oct 19, 2026
amad-malik and others added 18 commits October 19, 2026 02:09
… (Cox-authorized 3-line patch 89705f00, no reorder)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ackage, so the missing-join refusal and zero-effect bodies are exercised against a genuinely absent Core

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
# Conflicts:
#	.github/next-offline-suites.json
… but lacks one required private join name (7 names, each killed by the intended assertion)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…eal InstallerCustody (12 tests, 19 assertion failures, 0 errors); two closed-test spots made Core-presence independent

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…e's InstallerCustody and private admission (receiver follows S4); 14 join tests over the real owner GREEN on 3.14.0 and 3.13.7

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…tered test_make_secret_effect.py (no suites-file change needed); 19 tests OK on 3.14.0 and 3.13.7

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t key and directory metadata and the original deadline after admission (7 failures, 0 errors; 2 controls pass)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…L, and re-check the original deadline, after admission before a descriptor is issued (30 tests OK on 3.14.0 and 3.13.7; RED tests unchanged)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@amad-malik
amad-malik marked this pull request as ready for review October 19, 2026 04:30
@amad-malik
amad-malik merged commit 1bd44da into main Oct 19, 2026
24 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