Skip to content

Commit 9873850

Browse files
committed
Harden public defensive integrity checks
1 parent 956df31 commit 9873850

90 files changed

Lines changed: 2986 additions & 454 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,28 @@ jobs:
1111
test:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v4
15-
- uses: actions/setup-python@v5
14+
# Pinned to actions/checkout v4 release tag commit 34e114876b0b11c390a56381ad16ebd13914f8d5.
15+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
16+
with:
17+
persist-credentials: false
18+
# Pinned to actions/setup-python v5 release tag commit a26af69be951a213d495a4c3e4e4022e16d87065.
19+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
1620
with:
1721
python-version: '3.11'
18-
- uses: actions/setup-node@v4
22+
cache: 'pip'
23+
cache-dependency-path: requirements.lock.txt
24+
# Pinned to actions/setup-node v4 release tag commit 49933ea5288caeca8642d1e84afbd3f7d6820020.
25+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
1926
with:
2027
node-version: '20'
21-
- name: Install TypeScript for skeleton compile checks
22-
run: npm install -g typescript@5
23-
- name: Install package and test dependencies
28+
- name: Install Node dependencies from package-lock
29+
run: |
30+
npm ci
31+
echo "$PWD/node_modules/.bin" >> "$GITHUB_PATH"
32+
- name: Install package and test dependencies with locked constraints
2433
run: |
2534
python -m pip install --upgrade pip
26-
python -m pip install -e ".[dev]"
35+
python -m pip install -c requirements.lock.txt -e ".[dev]"
2736
28-
- name: Phase 30 v1.0 RC candidate check
29-
run: python scripts/run_phase30_v1_rc_candidate_check.py
37+
- name: Phase 30 v1.0 RC candidate quick integrity check
38+
run: python scripts/run_phase30_v1_rc_candidate_check.py --mode quick-integrity

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ build/
1212
prelaunch_results/
1313
golden_trace_results/
1414
*_results/
15+
.codex_tmp/
1516
.ainir_tmp/
16-
.ainir_local_tmp/
1717
ainir_phase*_trial_*/
1818
ainir_phase*_private_trial*/
1919
ainir_phase*_results*/
2020
ainir_private_trial_results*/
2121
github_private_trial_results/
22-
ainir_local_tmp_*/
22+
codex_ainir_*/
2323
ainir_demo_results/
2424
ainir_negative_conformance/
2525
ainir_golden_traces/

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ snapshot management, and profile-specific conformance packs. See
134134
Run from the repository root. The demo writes reports to your OS temp directory
135135
so the checkout stays clean.
136136

137+
The demo runs bundled workflow drafts; it is not an interactive prompt.
138+
137139
**macOS / Linux**
138140

139141
```bash
@@ -158,7 +160,7 @@ Expected result:
158160
AiNIR public demo: passed
159161
- account_deletion_hard_delete_blocked: blocked (10 critical)
160162
- create_user_outbox_safe: passed (0 critical)
161-
- order_payment_real_payment_blocked: blocked (15 critical)
163+
- order_payment_real_payment_blocked: blocked (16 critical)
162164
- password_reset_raw_token_blocked: blocked (11 critical)
163165
- pii_export_raw_pii_blocked: blocked (17 critical)
164166
```

docs/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ Start here if you want to understand the system rather than the development hist
66

77
## Recommended reading path
88

9-
1. [`v1_rc_candidate.md`](v1_rc_candidate.md) - v1.0 RC candidate decision and boundary.
10-
2. [`v1_rc_scope.md`](v1_rc_scope.md) - what is frozen for RC review.
11-
3. [`pre_v1_status.md`](pre_v1_status.md) - current scope and what AiNIR does not claim.
12-
4. [`trust_gate.md`](trust_gate.md) - the unified decision surface.
13-
5. [`trust_receipt_persistence.md`](trust_receipt_persistence.md) - issuing and replaying TrustReceipts.
14-
6. [`negative_conformance_corpus.md`](negative_conformance_corpus.md) - synthetic fixtures that must be refused.
15-
7. [`golden_traces.md`](golden_traces.md) - deterministic replay expectations.
16-
8. [`lowering_gate.md`](lowering_gate.md) - when lowering is allowed or refused.
17-
9. [`verified_intent_packet.md`](verified_intent_packet.md) - optional future export surface.
18-
10. [`public_private_boundary.md`](public_private_boundary.md) - what belongs in the public repo.
9+
1. [`v1_rc_candidate.md`](v1_rc_candidate.md) v1.0 RC candidate decision and boundary.
10+
2. [`v1_rc_scope.md`](v1_rc_scope.md) what is frozen for RC review.
11+
3. [`pre_v1_status.md`](pre_v1_status.md) current scope and what AiNIR does not claim.
12+
4. [`trust_gate.md`](trust_gate.md) the unified decision surface.
13+
5. [`trust_receipt_persistence.md`](trust_receipt_persistence.md) issuing and replaying TrustReceipts.
14+
6. [`negative_conformance_corpus.md`](negative_conformance_corpus.md) synthetic fixtures that must be refused.
15+
7. [`golden_traces.md`](golden_traces.md) deterministic replay expectations.
16+
8. [`lowering_gate.md`](lowering_gate.md) when lowering is allowed or refused.
17+
9. [`verified_intent_packet.md`](verified_intent_packet.md) optional future export surface.
18+
10. [`public_private_boundary.md`](public_private_boundary.md) what belongs in the public repo.
1919

2020
## Core architecture docs
2121

@@ -58,8 +58,8 @@ Start here if you want to understand the system rather than the development hist
5858

5959
Phase-specific documents are kept for traceability. They are not required for a first read. Read them when you need to understand why a particular gate or fixture was added.
6060

61-
- [v1.0 RC Candidate Patch 4 - Registry and Classifier Consistency](v1_rc_candidate_patch4.md)
61+
- [v1.0 RC Candidate Patch 4 Registry and Classifier Consistency](v1_rc_candidate_patch4.md)
6262
- [Cross-platform output paths](cross_platform_output_paths.md)
6363

64-
- [v1.0 RC Candidate Patch 6 - Release Identity and Cross-platform Temp Paths](v1_rc_candidate_patch6.md)
65-
- [v1.0 RC Candidate Patch 7 - Repo-local Temp Isolation Guard](v1_rc_candidate_patch7.md)
64+
- [v1.0 RC Candidate Patch 6 Release Identity and Cross-platform Temp Paths](v1_rc_candidate_patch6.md)
65+
- [v1.0 RC Candidate Patch 7 Repo-local Temp Isolation Guard](v1_rc_candidate_patch7.md)

docs/ci_supply_chain_hardening.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# CI Supply-Chain Hardening
2+
3+
This public demo workflow is pinned for defensive integrity pass18:
4+
5+
- `actions/checkout` is pinned to commit `34e114876b0b11c390a56381ad16ebd13914f8d5`, the v4 release tag commit observed during pass18.
6+
- `actions/setup-python` is pinned to commit `a26af69be951a213d495a4c3e4e4022e16d87065`, the v5 release tag commit observed during pass18.
7+
- `actions/setup-node` is pinned to commit `49933ea5288caeca8642d1e84afbd3f7d6820020`, the v4 release tag commit observed during pass18.
8+
- Python installs use `requirements.lock.txt` as a constraints file.
9+
- TypeScript is pinned to `5.8.3` and reflected in `package-lock.json`.
10+
11+
This remains a public demo workflow, not a production runtime deployment workflow.

docs/cross_platform_output_paths.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ For private-trial and release-candidate checks, keep `TMP`, `TEMP`, and
2929
`AINIR_TEMP_ROOT` outside the repository checkout. A repo-local temp directory
3030
can make a trial copy see its own generated output. The Phase 26 runner now
3131
falls back to a sibling temp copy if the OS temp directory resolves inside the
32-
repo, and it ignores common local temp folders such as `.ainir_local_tmp/` and
32+
repo, and it ignores common local temp folders such as `.codex_tmp/` and
3333
`ainir_phase*_trial_*/`. Still, the recommended practice is to use the OS temp
3434
directory or an explicit path outside the checkout.
3535

docs/demo_expected_output.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Expected output:
1212
AiNIR public demo: passed
1313
- account_deletion_hard_delete_blocked: blocked (10 critical)
1414
- create_user_outbox_safe: passed (0 critical)
15-
- order_payment_real_payment_blocked: blocked (15 critical)
15+
- order_payment_real_payment_blocked: blocked (16 critical)
1616
- password_reset_raw_token_blocked: blocked (11 critical)
1717
- pii_export_raw_pii_blocked: blocked (17 critical)
1818
```

docs/github_launch_checklist.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Files
44

5-
- [ ] Use the tracked repository contents from `hamlet-lab/ainir`.
5+
- [ ] Use the `ainir_public_demo_repo_v1_0_rc_candidate` repository contents.
66
- [ ] Do not include private archive ZIPs.
77
- [ ] Do not include generated check folders.
88
- [ ] Confirm `LICENSE` is Apache-2.0.
@@ -67,4 +67,4 @@ python -m ainir phase30-v1-rc-candidate-check --out-dir /tmp/ainir_phase30_v1_rc
6767
python scripts/run_phase26_private_trial.py --out-dir /tmp/ainir_phase26_private_trial
6868
```
6969

70-
Keep the repository private until README rendering and GitHub Actions have been checked.
70+
Only upload to a private GitHub repository after this passes.

docs/golden_traces.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Pre-v1 Phase 8 - Conformance Golden Traces
1+
# Pre-v1 Phase 8 Conformance Golden Traces
22

33
Phase 8 adds a deterministic replay harness for the public AiNIR demo pipeline.
44

docs/index.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ Start here if you want to understand the system rather than the development hist
66

77
## Recommended reading path
88

9-
1. [`v1_rc_candidate.md`](v1_rc_candidate.md) - v1.0 RC candidate decision and boundary.
10-
2. [`v1_rc_scope.md`](v1_rc_scope.md) - what is frozen for RC review.
11-
3. [`pre_v1_status.md`](pre_v1_status.md) - current scope and what AiNIR does not claim.
12-
4. [`trust_gate.md`](trust_gate.md) - the unified decision surface.
13-
5. [`trust_receipt_persistence.md`](trust_receipt_persistence.md) - issuing and replaying TrustReceipts.
14-
6. [`negative_conformance_corpus.md`](negative_conformance_corpus.md) - synthetic fixtures that must be refused.
15-
7. [`golden_traces.md`](golden_traces.md) - deterministic replay expectations.
16-
8. [`lowering_gate.md`](lowering_gate.md) - when lowering is allowed or refused.
17-
9. [`verified_intent_packet.md`](verified_intent_packet.md) - optional future export surface.
18-
10. [`public_private_boundary.md`](public_private_boundary.md) - what belongs in the public repo.
9+
1. [`v1_rc_candidate.md`](v1_rc_candidate.md) v1.0 RC candidate decision and boundary.
10+
2. [`v1_rc_scope.md`](v1_rc_scope.md) what is frozen for RC review.
11+
3. [`pre_v1_status.md`](pre_v1_status.md) current scope and what AiNIR does not claim.
12+
4. [`trust_gate.md`](trust_gate.md) the unified decision surface.
13+
5. [`trust_receipt_persistence.md`](trust_receipt_persistence.md) issuing and replaying TrustReceipts.
14+
6. [`negative_conformance_corpus.md`](negative_conformance_corpus.md) synthetic fixtures that must be refused.
15+
7. [`golden_traces.md`](golden_traces.md) deterministic replay expectations.
16+
8. [`lowering_gate.md`](lowering_gate.md) when lowering is allowed or refused.
17+
9. [`verified_intent_packet.md`](verified_intent_packet.md) optional future export surface.
18+
10. [`public_private_boundary.md`](public_private_boundary.md) what belongs in the public repo.
1919

2020
## Core architecture docs
2121

@@ -58,8 +58,8 @@ Start here if you want to understand the system rather than the development hist
5858

5959
Phase-specific documents are kept for traceability. They are not required for a first read. Read them when you need to understand why a particular gate or fixture was added.
6060

61-
- [v1.0 RC Candidate Patch 4 - Registry and Classifier Consistency](v1_rc_candidate_patch4.md)
61+
- [v1.0 RC Candidate Patch 4 Registry and Classifier Consistency](v1_rc_candidate_patch4.md)
6262
- [Cross-platform output paths](cross_platform_output_paths.md)
6363

64-
- [v1.0 RC Candidate Patch 6 - Release Identity and Cross-platform Temp Paths](v1_rc_candidate_patch6.md)
65-
- [v1.0 RC Candidate Patch 7 - Repo-local Temp Isolation Guard](v1_rc_candidate_patch7.md)
64+
- [v1.0 RC Candidate Patch 6 Release Identity and Cross-platform Temp Paths](v1_rc_candidate_patch6.md)
65+
- [v1.0 RC Candidate Patch 7 Repo-local Temp Isolation Guard](v1_rc_candidate_patch7.md)

0 commit comments

Comments
 (0)