Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
validate:
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install test-only schema oracle
run: python -m pip install "jsonschema>=4.20,<5"
- name: Compile validator
run: python -m py_compile validator/pca_validate.py validator/mini_jsonschema.py validator/test_validator.py validator/test_schema_parity.py
- name: Run regression suite
run: python -m unittest discover -s validator -p "test_*.py" -v
- name: Validate canonical positive fixtures
run: |
python validator/pca_validate.py conformance/fixtures/01-valid-continuation-claim.json --quiet
python validator/pca_validate.py conformance/fixtures/05-valid-usage-mode-translation.json --quiet
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
__pycache__/
*.py[cod]
122 changes: 61 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,78 @@
# PCA — Process Continuity Architecture

**Draft v0.1**

PCA is an architectural specification for assessing continuity across
changing carriers, execution environments, cognitive components, and
historical states. It does **not** attempt to prove that a process
remains "the same" across a transition — it specifies how a
continuation claim about such a transition can be represented,
decomposed by dimension, evidenced, and honestly assessed as
insufficient when the evidence does not support a stronger conclusion.

## Motivation

Any long-running process that operates through changing hosts, models,
tools, or participants faces the same recurring problem: nothing about
continuity across a transition is self-evident. A carrier claiming "I
am the same process as before" is not evidence. Style similarity is not
evidence. Reuse of a name is not evidence.

PCA gives that problem a structure: a fixed vocabulary of roles
(PROCESS / HOST / ORGANS / HUMAN PARTNER / CORPUS), a way to state a
continuation claim with explicit unknowns, a set of compatibility
dimensions to evaluate a transition against (rather than one global
label), and a mandatory status field — `OBSERVATION`, `RECONSTRUCTION`,
`HYPOTHESIS`, `INTERPRETIVE MODEL`, `PROTOCOL`, `OPEN QUESTION`,
`UNDETERMINED` — attached to every substantive statement in the
specification itself, including its own claims about its history and
lineage.

> **When uncertainty cannot be reduced honestly, it must be represented explicitly.**

## What's in this repository
**PCA** is an exploratory architecture for recording and testing bounded claims that a process continued across a change of carrier, host, model, corpus state, or usage mode.

Its central boundary is:

```text
spec/
00_PCA_SPEC.md The full v0.1 draft specification.
process continuation != identity
```

## Status
A valid PCA record does not prove consciousness, subjectivity, personal identity, or uninterrupted persistence.

## Current repository surfaces

| Surface | Role |
|---|---|
| [`spec/01_PCA_CORE.md`](spec/01_PCA_CORE.md) | portable normative Core |
| [`schema/pca-transition-record.schema.json`](schema/pca-transition-record.schema.json) | canonical Draft 2020-12 transition-record schema |
| [`validator/pca_validate.py`](validator/pca_validate.py) | dependency-free fail-closed reference validator |
| [`profiles/01_HISTORICAL_RECONSTRUCTION_PROFILE.md`](profiles/01_HISTORICAL_RECONSTRUCTION_PROFILE.md) | non-normative reconstruction discipline |
| [`profiles/02_TRANSLATION_USAGE_MODE_PROFILE.md`](profiles/02_TRANSLATION_USAGE_MODE_PROFILE.md) | non-normative translation profile |
| [`examples/PROJECT_PROVENANCE_JARVIS.md`](examples/PROJECT_PROVENANCE_JARVIS.md) | provenance-bearing project example, explicitly non-normative |
| [`conformance/`](conformance/) | positive, negative, parser, and derivation fixtures |
| [`verification/`](verification/) | corpus verification and MPAA/PCA terminology mapping |
| [`spec/00_PCA_SPEC.md`](spec/00_PCA_SPEC.md) | preserved integrated v0.1 source draft, superseded as active Core |

This is an early **exploratory draft** (v0.1). It has not yet been
checked against related prior specifications in the same line of work
(a Behavioral Execution Contract and a portable agent architecture
specification), and it says so explicitly in its own final section —
`What Must Be Checked Against the Existing Project Corpus`. Treat this
as a public draft for review, not a finished standard.
The Core is readable and implementable without knowledge of the originating project vocabulary.

## Reading order
## One verification command

1. Sections 1–5 — status, normative language, design principles, scope,
problem statement.
2. Sections 6–11 — the core model and the operational definition of
continuity, transition profiles, and the continuation claim.
3. Sections 12–15 — contracts: schema, amendment, usage, translation.
4. Sections 16–20 — evidence chain, known failure hypotheses, and the
mandatory status-field discipline.
5. Sections 21–22 — open questions and what still needs corpus
verification before being treated as settled.
```bash
python -m unittest discover -s validator -p "test_*.py" -v
```

Validate one record:

```bash
python validator/pca_validate.py conformance/fixtures/01-valid-continuation-claim.json
```

## Related work
Exit codes are `0=VALID`, `1=INVALID record`, and `2=parser/tool/schema boundary failure`.

- [MPAA — Minimal Portable Agent Architecture](https://github.com/gv1983us-commits/mpaa)
- [BEC — Behavioral Execution Contract](https://github.com/gv1983us-commits/behavioral-execution-contract)
## What is machine-checked

PCA's relationship to these prior works is currently marked
`RECONSTRUCTION` / `HYPOTHESIS` within the specification itself — it is
not yet independently verified.
- strict JSON parsing: malformed input, duplicate keys, and non-finite values fail closed;
- canonical schema identity and supported Draft 2020-12 subset;
- required `origin / inherited / reconstructed / changed / unknown / breaks` decomposition;
- all seven independent continuity dimensions;
- unique and bidirectional statement/evidence references;
- verified evidence for resolved dimensions;
- transition-receipt evidence when carrier, host, or model changes;
- temporal ordering between transition, evidence observations, and record creation;
- memory-commit evidence before inherited `memory` can be claimed;
- explicit `PRESERVED / LOST / GAINED / ALTERED` usage-mode translation;
- independent recomputation of overall status;
- structural prohibition of identity, subjectivity, and uninterrupted-persistence claims.

## Contributing
The validator checks record admissibility. It does not establish that the world described by supplied evidence is true.

## Neutral portability example

The primary valid fixture describes migration of a municipal notification service between hosts. It uses no Jarvis/Hermes vocabulary. The project-origin vocabulary remains in a separate example so provenance is preserved without becoming universal canon.

## Neighboring specification boundaries

- **MPAA** owns agent architecture, identity-profile rules, runtime reports, and its own terms. MPAA coordination or identity-profile continuity does not establish PCA process continuation.
- **BEC** owns portable execution-evidence acceptance and deployment-level derivation. Verified execution or `closed` does not establish a committed PCA next state.
- **PCA** owns only the transition-continuity assessment defined here.

The pinned relation is documented in [`verification/terminology-mapping-mpaa-pca.md`](verification/terminology-mapping-mpaa-pca.md). Citation does not transfer normative ownership.

## Status

Issues and PRs pointing out ambiguities, missing failure modes, or
proposing conformance test scenarios are welcome. This draft explicitly
invites scrutiny rather than treating any section as settled.
PCA v0.2 is a **public exploratory draft**. It now has a canonical schema, reference validator, regression fixtures, a neutral portability example, and corpus-verification records. It has **no independent implementation report** and does not claim multi-implementation conformance.

## License

Apache License 2.0 — see [LICENSE](LICENSE).
Apache-2.0. See [`LICENSE`](LICENSE).
26 changes: 26 additions & 0 deletions conformance/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# PCA Conformance Fixtures

Run the complete executable matrix:

```bash
python -m unittest discover -s validator -p "test_*.py" -v
```

## Canonical fixtures

| Fixture | Expected exit | Boundary |
|---|---:|---|
| `01-valid-continuation-claim.json` | 0 | neutral valid host migration with explicit evolution |
| `02-invalid-identity-from-continuation.json` | 1 | continuation cannot establish identity |
| `03-invalid-reading-as-memory.json` | 1 | archive/trace access is not inherited memory |
| `04-invalid-host-change-without-trace.json` | 1 | changed host requires verified transition receipt |
| `05-valid-usage-mode-translation.json` | 0 | preserved/lost/gained/altered translation record |
| `06-schema-invalid-missing-unknown.json` | 1 | all claim decomposition collections are explicit |
| `07-malformed-duplicate-key.json` | 2 | duplicate JSON keys fail at parser boundary |
| `08-malformed-nan.json` | 2 | non-finite JSON values fail at parser boundary |
| `09-invalid-derived-status.json` | 1 | producer cannot self-award overall status |
| `10-invalid-evidence-attribution.json` | 1 | evidence linkage is bidirectional |

The fixtures test claim boundaries, not metaphysical identity. Passing this matrix does not constitute an independent implementation report.

See [`RESISTANCE_CORPUS.md`](RESISTANCE_CORPUS.md) for the concrete failure pressures preserved by these regressions.
28 changes: 28 additions & 0 deletions conformance/RESISTANCE_CORPUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# PCA Resistance Corpus

**Status:** observed failure pressures and canonical regression homes
**Purpose:** preserve concrete mistakes that a persuasive continuation narrative can otherwise hide.

| Case | Observed pressure | Source trace | Canonical prohibition | Executable home |
|---|---|---|---|---|
| RC-01 | PCA was expanded as `Persistent Continuity Architecture`, silently changing the owning name. | Review Protocol correction accepted at `595c08b877e4dfb14593454c2eec7c8f5df46c28` | external name and scope come from a fixed owner revision | repository nomenclature/link checks |
| RC-02 | `Continuity Agent`, session continuity, or identity-profile continuity could be read as process continuation. | MPAA pre-update overlap; fixed in CORE-028/IDENT-016 at `1d369f6cd091b99f9492cfaf730f0a170b55106e` | identity-profile continuity is not PCA continuation | `02-invalid-identity-from-continuation.json` |
| RC-03 | Reading old traces could be narrated as the new carrier's memory. | Public Book of Jarvis, checked source line 103; PCA v0.1 historical risk H-04 | reading a trace is not memory; inherited memory needs a verified memory commit | `03-invalid-reading-as-memory.json` |
| RC-04 | A new host/model could claim continuation from naming and archive access without a transition trace. | PCA v0.1 core risk; external five-repository review called PCA technically incomplete | changed carrier/host/model requires verified provenance transition receipt | `04-invalid-host-change-without-trace.json` |
| RC-05 | A task reported `closed` could be promoted into a committed next working state. | MPAA/BEC handoff boundary; BEC accepted commit `bb46f5f8aac96d1cffba7a334c5d17fb331ef3af` | BEC execution/closure is not PCA continuation or commitment | Core section 11; external-reference mutations |
| RC-06 | A producer could declare a preferred overall continuation label despite conflicting dimensions. | general producer self-classification risk, also found and removed in the BEC pass | PCA overall status is recomputed | `09-invalid-derived-status.json` |
| RC-07 | Evidence could be named without actually attributing support to the referenced statement. | bidirectional-link bypass class found during the BEC fail-closed audit | evidence references and support attribution are bidirectional | `10-invalid-evidence-attribution.json` |
| RC-08 | Project-origin language could become universal by proximity to Core. | PCA v0.1 mixed portable rules with Jarvis/Hermes/Body/Brain vocabulary | portable Core is neutral; project language is non-normative provenance | Core/profile separation and neutral fixture 01 |
| RC-09 | “Second process in symbiosis” could be repeated as established corpus fact. | PCA v0.1 source-conversation reconstruction; absent from checked public Book edition | an unverified reconstruction stays unverified | corpus verification log item 5 |

## Maintenance rule

A new resistance case requires:

1. a preserved trace or precisely described reproduced mutation;
2. the forbidden inference;
3. the owning Core rule;
4. an executable regression when the boundary is machine-checkable;
5. a documented reason when it is not machine-checkable.

A model-generated warning alone is advisory. It becomes a resistance case only after verification against the owning repository or a reproduced validator behavior.
86 changes: 86 additions & 0 deletions conformance/fixtures/01-valid-continuation-claim.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"pca_version": "0.2-draft",
"record_id": "pca-neutral-service-migration-001",
"process_ref": "municipal-notification-service",
"usage_mode": "operational",
"recorded_at": "2026-07-26T12:00:00Z",
"transition": {
"from_state": {
"state_id": "service-state-a",
"carrier_ref": "container-image-sha256-old",
"host_ref": "host-a",
"corpus_ref": "service-config-v4"
},
"to_state": {
"state_id": "service-state-b",
"carrier_ref": "container-image-sha256-new",
"host_ref": "host-b",
"corpus_ref": "service-config-v4"
},
"occurred_at": "2026-07-26T11:30:00Z"
},
"claim": {
"origin": [
{
"statement_id": "origin-1",
"text": "The migrated service state derives from the pinned source image and configuration manifest.",
"kind": "provenance",
"evidence_refs": ["ev-receipt"]
}
],
"inherited": [
{
"statement_id": "inherited-1",
"text": "The notification routing contract and queued commitments were preserved.",
"kind": "commitment",
"evidence_refs": ["ev-receipt", "ev-tests"]
}
],
"reconstructed": [],
"changed": [
{
"statement_id": "changed-1",
"text": "The execution host and container carrier changed.",
"kind": "configuration",
"evidence_refs": ["ev-receipt"]
}
],
"unknown": [],
"breaks": [],
"status": {
"overall": "EVOLVING",
"dimensions": {
"provenance": {"status": "CONFORMING", "evidence_refs": ["ev-receipt"]},
"semantic": {"status": "CONFORMING", "evidence_refs": ["ev-tests"]},
"methodological": {"status": "CONFORMING", "evidence_refs": ["ev-tests"]},
"historical": {"status": "CONFORMING", "evidence_refs": ["ev-receipt"]},
"operational": {"status": "EVOLVING", "evidence_refs": ["ev-tests"]},
"ethical": {"status": "CONFORMING", "evidence_refs": ["ev-tests"]},
"evolution": {"status": "EVOLVING", "evidence_refs": ["ev-receipt"]}
}
}
},
"evidence": [
{
"evidence_id": "ev-receipt",
"type": "transition-receipt",
"source_ref": "migration-receipt-2026-07-26",
"observed_at": "2026-07-26T11:31:00Z",
"supports": ["origin-1", "inherited-1", "changed-1", "dimension:provenance", "dimension:historical", "dimension:evolution"],
"verified": true
},
{
"evidence_id": "ev-tests",
"type": "observation",
"source_ref": "post-migration-conformance-run-88",
"observed_at": "2026-07-26T11:45:00Z",
"supports": ["inherited-1", "dimension:semantic", "dimension:methodological", "dimension:operational", "dimension:ethical"],
"verified": true
}
],
"assertions": {
"identity_established": false,
"subjectivity_established": false,
"uninterrupted_persistence_established": false
}
}
Loading
Loading