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
19 changes: 18 additions & 1 deletion .github/workflows/cint-r0-verification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
- macos-26
- windows-2025
node:
- "20"
- "22"
- "24"
- "26"

Expand Down Expand Up @@ -71,3 +71,20 @@ jobs:
echo "Verification matrix result: $MATRIX_RESULT" >&2
exit 1
fi

typescript-verification:
name: CINT-R1 TypeScript verification
if: ${{ always() }}
needs:
- verification-matrix
runs-on: ubuntu-24.04
timeout-minutes: 5
steps:
- name: Require every TypeScript verification lane
env:
MATRIX_RESULT: ${{ needs.verification-matrix.result }}
run: |
if [ "$MATRIX_RESULT" != "success" ]; then
echo "Verification matrix result: $MATRIX_RESULT" >&2
exit 1
fi
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@ artifacts/generated/
artifacts/runs/
artifacts/live*/
node_modules/
dist/
.test-dist/
*.tsbuildinfo
*.log
.DS_Store
1 change: 1 addition & 0 deletions .node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
engine-strict=true
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## v0.2.0-cint-r1 — unreleased candidate

- Adopted Node.js 24 as the normative baseline, retained Node.js 22 as a
temporary compatibility lane, and added Node.js 26 as a forward-compatibility
lane. Node.js 20 is historical only.
- Migrated the CINT control-plane production source and CLI to strict
TypeScript while preserving the legacy Agent Floor JavaScript adapter.
- Preserved all 13 JSON Schemas, R0 protocols, error codes, canonical digests,
HMAC vectors, trusted-time checks, one-shot semantics, rollback, and AF-G0
behavior.
- Added branded authority contracts, exhaustive state unions, compile-time
negative cases, escape-hatch and import-boundary scans, portable builds,
declarations, and package-export verification.
- Passed 18 deterministic behavioral-equivalence scenarios against
`v0.1.0-cint-r0` with no normalized behavioral drift.
- Added no Rust, WASM, Three.js, browser, web-framework, UI, runtime TypeScript,
or publication dependency.
- Kept package version `0.1.0-cint-r0`, package state private, and all release,
tag, merge, npm-publication, and deployment actions outside this candidate.

## v0.1.0-cint-r0 — 2026-08-28

- Made SI1 CINT and `sntllgnc/CINT` the active repository and default-source
Expand Down
5 changes: 3 additions & 2 deletions CINT_EVALUATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@ Require all of the following:
- `artifacts/cint-r0/gate-ledger.json` contains one ordered pass per completed
gate;
- Git status is clean after verification;
- the `CINT-R0 remote verification` check passes for Node.js 20, 24, and 26 on
Linux, macOS, and Windows.
- the `CINT-R0 remote verification` and `CINT-R1 TypeScript verification`
checks pass over the same Node.js 22, 24, and 26 matrix on Linux, macOS, and
Windows.

Review the proof matrix in `docs/cint-r0/05_SYNTHETIC_ACTION_PROOF.md`, the
adapter boundary in `docs/cint-r0/06_CODEX_ADAPTER.md`, and the active threat
Expand Down
4 changes: 3 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

## Development setup

SI1 CINT requires Node.js 20 or newer and has no runtime package dependencies.
SI1 CINT uses the latest security-patched Node.js 24 release as its normative
development baseline. Node.js 22 is a temporary compatibility lane and Node.js
26 is a forward-compatibility lane.

```sh
npm ci
Expand Down
66 changes: 56 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,40 @@ request
-> evidence seal or rollback
```

## R1 candidate state

The `cint-r1-typescript` branch is a review candidate that migrates the CINT
control plane to strict TypeScript while preserving the R0 runtime contract.
TypeScript makes authority-state and adapter-boundary distinctions visible to
the compiler; it does not become runtime authority. All untrusted records still
enter as `unknown` and must pass the unchanged JSON Schema/AJV, exact-key,
canonical-byte, digest, HMAC, revalidation, one-shot, trusted-time, outcome,
and seal controls.

The package remains private and versioned `0.1.0-cint-r0`. R1 grants no merge,
tag, release, npm-publication, or production-deployment authority.

The following table records the C2 acceptance snapshot from 2026-08-28:

| Field | Verified value |
|---|---|
| Branch | `cint-r1-typescript` |
| Verified C2 implementation head | `97dac5e80609ba6522f15bb5ecc0a4c0aa5ef022` |
| Required parent | `42465b0192d167f419e782674fd4675c4049e4d9` |
| Pull request at C2 acceptance | [#2](https://github.com/sntllgnc/CINT/pull/2); it was open and draft at C2 acceptance |
| Qualifying C2 workflow | [33175315187](https://github.com/sntllgnc/CINT/actions/runs/33175315187); nine lanes plus both aggregates passed |
| Terminal | `READY-FOR-CINT-R1-TYPESCRIPT-REVIEW` |

Live head, workflow, and review-readiness state are maintained on
[PR #2](https://github.com/sntllgnc/CINT/pull/2) and its GitHub checks.

The C2 correction changes only package-verification process launch. It prefers
the active Node executable plus npm's CLI path, uses bounded platform fallbacks
when that metadata is absent, and treats spawn errors or a missing exit status
as terminal verification failures. This is build assurance, not CINT execution
authority: it cannot decide, issue or consume a receipt, invoke an action
adapter, or seal an outcome.

## R0 state

`CINT-R0` is the public source and verification baseline for the SI1 CINT
Expand All @@ -50,10 +84,11 @@ v0.1.0-cint-r0
Remote verification:
CINT-R0 remote verification

Remote verification is enforced by a pinned GitHub Actions matrix covering the
declared Node.js 20 compatibility boundary, Node.js 24 LTS, current Node.js 26,
and Linux, macOS, and Windows. The stable aggregate gate is
`CINT-R0 remote verification`.
Remote verification is enforced by a pinned GitHub Actions matrix covering
temporary Node.js 22 compatibility, the normative Node.js 24 LTS baseline,
forward Node.js 26 compatibility, and Linux, macOS, and Windows. The stable
aggregate gates are `CINT-R0 remote verification` and
`CINT-R1 TypeScript verification`; both depend on the same complete matrix.

The R0 proof establishes:

Expand Down Expand Up @@ -82,11 +117,13 @@ The R0 proof establishes:

## Verify locally

Use the latest security-patched Node.js 24 release for normative development.
Node.js 22 and 26 are tested compatibility lanes, not the development baseline.

```sh
npm ci
npm test
npm run cint:identity
npm run verify
npm run cint:identity
```

The historical `npm run demo` remains available as the AF-G0 Adapter 01
Expand All @@ -95,14 +132,19 @@ regression. It is not the CINT product definition.
## Repository map

```text
src/cint/ adapter-independent CINT core and execution boundary
src/cint/adapters/ explicit, separately imported R0 action adapters
src/cint/**/*.ts strict TypeScript CINT control plane
src/cint/adapters/ explicit, separately imported typed action adapters
src/adapters/codex-delegation/ preserved Agent Floor compatibility kernel
schemas/cint/ strict authority-bearing JSON schemas
tests/cint-*.test.js CINT conformance and end-to-end proofs
tests/cint-*.test.ts six strictly typed CINT conformance suites
tests/npm-pack-launch.test.mjs deterministic cross-platform package-launch proof
tests/types/ compile-time positive and negative contracts
dist/ ignored generated JavaScript and declarations
docs/cint-r0/ gate evidence and public R0 release notes
docs/cint-r1/ R1 gate maps and review evidence
docs/archive/ historical Agent Floor and competition material
artifacts/cint-r0/ gate ledger and sanitized gate receipts
artifacts/cint-r1/ R1 baseline and behavioral-equivalence records
```

## Design and review
Expand All @@ -112,9 +154,13 @@ artifacts/cint-r0/ gate ledger and sanitized gate receipts
- [Threat model](docs/THREAT-MODEL.md)
- [Privacy](docs/PRIVACY.md)
- [Limitations](docs/LIMITATIONS.md)
- [Runtime support](docs/RUNTIME-SUPPORT.md)
- [TypeScript R1 boundary](docs/TYPESCRIPT-R1.md)
- [R1 C2 state, logic, and architecture](docs/cint-r1/10_CORRECTION_C2.md)
- [Framework boundary](docs/FRAMEWORK-BOUNDARY.md)
- [Codex Adapter 01](docs/CODEX-ADAPTER.md)
- [CINT-R0 gate ledger](artifacts/cint-r0/gate-ledger.json)
- [Public R0 source release](docs/RELEASE.md)
- [Historical R0 source release](docs/RELEASE.md)
- [Public release notes](docs/cint-r0/PUBLIC-RELEASE-NOTES.md)

The immutable Agent Floor baseline remains the tagged release
Expand Down
16 changes: 13 additions & 3 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,19 @@

## Supported line

Security corrections for the public CINT-R0 source prerelease are developed
through protected changes to `main`. The immutable Agent Floor release remains
historical evidence.
The public CINT-R0 source prerelease remains the released line. The R1
TypeScript branch is a review candidate, not a release or production baseline.
Security corrections enter `main` only through separately authorized protected
changes. The immutable Agent Floor release remains historical evidence.

The active security baseline is the latest security-patched Node.js 24 release.
Node.js 22 is retained temporarily for compatibility testing, Node.js 26 is a
forward-compatibility lane, and Node.js 20 is historical and unsupported.

Strict TypeScript compilation is a development control only. Runtime security
continues to depend on the unchanged JSON Schema/AJV, exact-key, canonical
digest, HMAC, revalidation, one-shot, trusted-time, outcome, rollback, and seal
checks.

## Report a vulnerability

Expand Down
106 changes: 106 additions & 0 deletions artifacts/cint-r1/behavioral-equivalence.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
{
"protocol": "cint-r1/behavioral-equivalence/1",
"baseline_release": "v0.1.0-cint-r0",
"baseline_commit": "acc857b5d6fadd363816ad9dbf2fdc710a35ba15",
"candidate_branch": "cint-r1-typescript",
"candidate_preseal_head": "026e0b8719d061df1becafd005d5b1c8dc75b4b5",
"normalization": {
"excluded": [
"generated UUIDs",
"temporary absolute paths",
"runtime-generated timestamps"
],
"retained": [
"statuses",
"error codes",
"canonical digests",
"HMAC signature",
"store states",
"target hashes",
"AF-G0 counters"
]
},
"scenario_count": 18,
"passed": 18,
"failed": 0,
"scenarios": [
{
"id": "ADMIT",
"normalized_sha256": "29b71839b32817a567922ee25329013f6d02faee4ab44e117d67546ba5cf4ab6"
},
{
"id": "DENY",
"normalized_sha256": "27bdd775d96a430c1d34223b6701c3bd7ab154b99f860fa986b9460a4acfb444"
},
{
"id": "REVIEW",
"normalized_sha256": "ce3ef7d283d69a9ab7293055a4d10f90fa8ab97e65a94226d10b35b52c2a8c9e"
},
{
"id": "RECEIPT_ISSUE_AND_VERIFICATION",
"normalized_sha256": "7e3a957bde2341e01a0c8622f02516da5c77320bfb006fb12f04d56b8a43d64f"
},
{
"id": "ONE_SHOT_CONSUMPTION_RACE",
"normalized_sha256": "660cd04e3156c21f7be552635e09c88e8bcff31cacfcd82a560b678477b326a7"
},
{
"id": "REPLAY_REJECTION",
"normalized_sha256": "e29cd66b63ccd882f10ac350e2a2e16691f0b70ca883dae9ebb31a0011d1ca87"
},
{
"id": "EXPIRY_DURING_PREPARATION",
"normalized_sha256": "abd3497076357f9c9f5688e55c47bdf37029030715c059d0eb492b951c7da67f"
},
{
"id": "POLICY_DRIFT",
"normalized_sha256": "b6d7d36693901f1999618f2999ee5b64a8d640f9c5f7371ce9469b1deef70898"
},
{
"id": "AUTHORITY_DRIFT",
"normalized_sha256": "96e4a1abb244eed410855f60aa1378a36b2c15e8e215e3c862a2b4ca4a0c97f2"
},
{
"id": "MACHINE_STATE_DRIFT",
"normalized_sha256": "a3da547603cc74454f9b829c844ea218364c948c11801db8d30d0bc9cc584207"
},
{
"id": "ADAPTER_CAPABILITY_DRIFT",
"normalized_sha256": "29570fce9a942018db6417b34367feeca71bac1444d9a837eaa9c0f5e253a861"
},
{
"id": "ALIEN_PROTOCOL_REJECTION",
"normalized_sha256": "2c707f6c4f0138bf43cace7f069a3917b9df221e330008f3a3b0f9d1bcfe938a"
},
{
"id": "FORBIDDEN_FIELD_REJECTION",
"normalized_sha256": "cd7eb0a2d83159cdd2642683368aa317be9201bf318df556dd5ac76b294d23a7"
},
{
"id": "OUTCOME_VERIFICATION",
"normalized_sha256": "8b0737e980795f7fc934b460817ece522dae5e3aca7d0b09deefd91e4e9a3180"
},
{
"id": "ROLLBACK_AND_RESTORED_HASH",
"normalized_sha256": "b1fd54774d7a38d9eab5f1af50f9e14fb0522926456afc060120346daed38d49"
},
{
"id": "FAIL_CLOSED_DEPENDENCY_CHECKS",
"normalized_sha256": "3319667da83ddc9768ec40fae5be87d0fccad965b9e84a60adc7b396abab5b14"
},
{
"id": "ADAPTER_01_EVIDENCE_ADMISSION",
"normalized_sha256": "87dcb291297178aa1571339208e711d5bb1b4005ae0c49c87784a6a0177083df"
},
{
"id": "AF_G0_TELEMETRY_REGRESSION",
"normalized_sha256": "dbd3e6664d7aa97f6f80b3748ddc4464c5d6012614cc2a388f4ba698c1d60ca8"
}
],
"frozen_surfaces": {
"runtime_schema_files_identical": "13/13",
"protocol_identifier_set": "24/24 identical",
"error_code_set": "103/103 identical"
},
"verdict": "PASS"
}
59 changes: 59 additions & 0 deletions artifacts/cint-r1/independent-verdict.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"protocol": "cint-r1/independent-verdict/1",
"reviewed_at": "2026-08-28T12:40:43Z",
"baseline_commit": "acc857b5d6fadd363816ad9dbf2fdc710a35ba15",
"candidate_pre_review_head": "b549414c4c88682c5e1b56e3a29a8723bfbdb416",
"reviewer_count": 2,
"reviewers": [
{
"id": "C",
"scope": "authority-and-runtime-boundary",
"context_mode": "clean",
"fork_turns": "none",
"model": "gpt-5.6-terra",
"reasoning_effort": "medium",
"child_agents": 0,
"tracked_mutations": 0,
"finding_count": 0,
"verdict": "ACCEPT-CINT-R1-TYPESCRIPT-CANDIDATE"
},
{
"id": "D",
"scope": "build-package-node-and-legacy",
"context_mode": "clean",
"fork_turns": "none",
"model": "gpt-5.6-terra",
"reasoning_effort": "medium",
"child_agents": 0,
"tracked_mutations": 0,
"finding_count": 0,
"verdict": "ACCEPT-CINT-R1-TYPESCRIPT-CANDIDATE"
}
],
"root_attestation": {
"ordered_verification": "PASS",
"node_24_runtime": "24.20.0",
"compiled_cint_tests": "56/56",
"legacy_tests": "16/16",
"total_runtime_tests": "72/72",
"compile_time_negative_contracts": "14/14",
"escape_hatch_findings": 0,
"import_boundary_findings": 0,
"runtime_schemas_identical": "13/13",
"protocol_identifiers_identical": "24/24",
"error_codes_identical": "103/103",
"behavioral_equivalence": "18/18 PASS",
"af_g0_evidence": "53/53",
"dependency_vulnerabilities": 0,
"publication_findings": 0,
"runtime_exports_resolved": "4/4",
"declaration_exports_resolved": "4/4",
"private_source_map_paths": 0,
"typescript_source_files": 29,
"javascript_files_under_src_cint": 0,
"tracked_generated_files": 0,
"prohibited_dependency_count": 0
},
"findings": [],
"verdict": "ACCEPT-CINT-R1-TYPESCRIPT-CANDIDATE"
}
Loading