S00-011: Approve verified npm access after independent TLS and integrity checks
Changes: Accept the bounded S00-011 registry remediation; record independent security evidence and review handoff. Source probe and stack remain unchanged by review. Validation: Original npm view and fresh-cache verify.py returned exit 0; 26394-byte react@19.3.1 matched registry SHA-512. Disabled TLS was refused with exit 1. make check passed 66 tests; executor patch/message, scope, ignore rules and whitespace checked. App build, provenance and future harness connectivity remain unverified. Task: S00-011 Agent: auto-security-1e9200de1765 Role: security Action: review Status: done Task title: Restore verified npm registry access for the stack spike
This commit is contained in:
1 parent
e4672fba91
commit
06f353b214
7 files changed
+120
-19
No files matched your search
@@ -1,11 +1,11 @@
|
||||
# Матрица задач
|
||||
|
||||
Generated; state revision **8**. Canonical status: state/tasks.json.
|
||||
Generated; state revision **9**. Canonical status: state/tasks.json.
|
||||
|
||||
| ID | Этап | Оператор | Reviewer | Статус | Owner | Зависимости | Задача |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| [S00-001](tasks/S00-001.md) | S00 | orchestrator | security | done | auto-orchestrator-48aab142ecde | | Утвердить Web-профиль |
|
||||
| [S00-002](tasks/S00-002.md) | S00 | orchestrator | security | blocked | auto-orchestrator-3a4f07103316 | S00-001, S00-011 | Выбрать framework и build runtime |
|
||||
| [S00-002](tasks/S00-002.md) | S00 | orchestrator | security | todo | | S00-001, S00-011 | Выбрать framework и build runtime |
|
||||
| [S00-003](tasks/S00-003.md) | S00 | protocol | qa | todo | | S00-001, S00-002 | Проверить XMPP WSS/auth библиотеку |
|
||||
| [S00-004](tasks/S00-004.md) | S00 | crypto | security | todo | | S00-001, S00-002 | Проверить browser OMEMO backend |
|
||||
| [S00-005](tasks/S00-005.md) | S00 | storage | qa | todo | | S00-002 | Выбрать IndexedDB wrapper и migration policy |
|
||||
@@ -13,7 +13,7 @@ Generated; state revision **8**. Canonical status: state/tasks.json.
|
||||
| [S00-007](tasks/S00-007.md) | S00 | security | orchestrator | todo | | S00-004, S00-005 | Утвердить password и crypto unlock модель |
|
||||
| [S00-008](tasks/S00-008.md) | S00 | ci-cd | qa | todo | | S00-003, S00-004 | Описать WSS/upload/TURN/push topology |
|
||||
| [S00-009](tasks/S00-009.md) | S00 | orchestrator | security | todo | | S00-003, S00-004, S00-005, S00-006, S00-007, S00-008 | Согласовать результаты spikes |
|
||||
| [S00-011](tasks/S00-011.md) | S00 | ci-cd | security | review | auto-ci-cd-d105e8027730 | S00-001 | Restore verified npm registry access for the stack spike |
|
||||
| [S00-011](tasks/S00-011.md) | S00 | ci-cd | security | done | auto-ci-cd-d105e8027730 | S00-001 | Restore verified npm registry access for the stack spike |
|
||||
| [S00-010](tasks/S00-010.md) | S00 | qa | orchestrator | todo | | S00-001, S00-002, S00-003, S00-004, S00-005, S00-006, S00-007, S00-008, S00-009 | Gate: Профиль и проверка стека |
|
||||
| [S01-001](tasks/S01-001.md) | S01 | orchestrator | security | todo | | S00-010 | Описать identity/model contracts |
|
||||
| [S01-002](tasks/S01-002.md) | S01 | orchestrator | security | todo | | S00-010, S01-001 | Описать async account context |
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
## Задачи
|
||||
|
||||
- [S00-001](../tasks/S00-001.md): Утвердить Web-профиль — orchestrator; done.
|
||||
- [S00-002](../tasks/S00-002.md): Выбрать framework и build runtime — orchestrator; blocked.
|
||||
- [S00-002](../tasks/S00-002.md): Выбрать framework и build runtime — orchestrator; todo.
|
||||
- [S00-003](../tasks/S00-003.md): Проверить XMPP WSS/auth библиотеку — protocol; todo.
|
||||
- [S00-004](../tasks/S00-004.md): Проверить browser OMEMO backend — crypto; todo.
|
||||
- [S00-005](../tasks/S00-005.md): Выбрать IndexedDB wrapper и migration policy — storage; todo.
|
||||
@@ -15,7 +15,7 @@
|
||||
- [S00-007](../tasks/S00-007.md): Утвердить password и crypto unlock модель — security; todo.
|
||||
- [S00-008](../tasks/S00-008.md): Описать WSS/upload/TURN/push topology — ci-cd; todo.
|
||||
- [S00-009](../tasks/S00-009.md): Согласовать результаты spikes — orchestrator; todo.
|
||||
- [S00-011](../tasks/S00-011.md): Restore verified npm registry access for the stack spike — ci-cd; review.
|
||||
- [S00-011](../tasks/S00-011.md): Restore verified npm registry access for the stack spike — ci-cd; done.
|
||||
- [S00-010](../tasks/S00-010.md): Gate: Профиль и проверка стека — qa; todo.
|
||||
|
||||
## Граница этапа
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
id,stage,operator,reviewer,status,owner,depends_on,title
|
||||
S00-001,S00,orchestrator,security,done,auto-orchestrator-48aab142ecde,,Утвердить Web-профиль
|
||||
S00-002,S00,orchestrator,security,blocked,auto-orchestrator-3a4f07103316,"S00-001, S00-011",Выбрать framework и build runtime
|
||||
S00-002,S00,orchestrator,security,todo,,"S00-001, S00-011",Выбрать framework и build runtime
|
||||
S00-003,S00,protocol,qa,todo,,"S00-001, S00-002",Проверить XMPP WSS/auth библиотеку
|
||||
S00-004,S00,crypto,security,todo,,"S00-001, S00-002",Проверить browser OMEMO backend
|
||||
S00-005,S00,storage,qa,todo,,S00-002,Выбрать IndexedDB wrapper и migration policy
|
||||
@@ -8,7 +8,7 @@ S00-006,S00,orchestrator,security,todo,,S00-002,Зафиксировать brows
|
||||
S00-007,S00,security,orchestrator,todo,,"S00-004, S00-005",Утвердить password и crypto unlock модель
|
||||
S00-008,S00,ci-cd,qa,todo,,"S00-003, S00-004",Описать WSS/upload/TURN/push topology
|
||||
S00-009,S00,orchestrator,security,todo,,"S00-003, S00-004, S00-005, S00-006, S00-007, S00-008",Согласовать результаты spikes
|
||||
S00-011,S00,ci-cd,security,review,auto-ci-cd-d105e8027730,S00-001,Restore verified npm registry access for the stack spike
|
||||
S00-011,S00,ci-cd,security,done,auto-ci-cd-d105e8027730,S00-001,Restore verified npm registry access for the stack spike
|
||||
S00-010,S00,qa,orchestrator,todo,,"S00-001, S00-002, S00-003, S00-004, S00-005, S00-006, S00-007, S00-008, S00-009",Gate: Профиль и проверка стека
|
||||
S01-001,S01,orchestrator,security,todo,,S00-010,Описать identity/model contracts
|
||||
S01-002,S01,orchestrator,security,todo,,"S00-010, S01-001",Описать async account context
|
||||
|
||||
|
@@ -0,0 +1,4 @@
|
||||
Approve verified npm access after independent TLS and integrity checks
|
||||
|
||||
Changes: Accept the bounded S00-011 registry remediation; record independent security evidence and review handoff. Source probe and stack remain unchanged by review.
|
||||
Validation: Original npm view and fresh-cache verify.py returned exit 0; 26394-byte react@19.3.1 matched registry SHA-512. Disabled TLS was refused with exit 1. make check passed 66 tests; executor patch/message, scope, ignore rules and whitespace checked. App build, provenance and future harness connectivity remain unverified.
|
||||
@@ -0,0 +1,64 @@
|
||||
# S00-011 — independent security review
|
||||
|
||||
Reviewer: auto-security-1e9200de1765 (security).
|
||||
Executor: auto-ci-cd-d105e8027730 (ci-cd).
|
||||
Date: 2026-10-15. Decision: approve the bounded registry-access remediation.
|
||||
|
||||
Input: assigned card/context packet, original blocker, NFR-007, executor
|
||||
handoff/evidence, accepted ADR 0000 and S00-001 dependency evidence/review.
|
||||
Output: independent review of the documented TLS-enabled registry path and
|
||||
exact-version tarball retrieval. Acceptance is connectivity and integrity only.
|
||||
|
||||
## Findings
|
||||
|
||||
Examined executor commit e4672fba91f515123bbd09fd93c87d6cd3c5dd03,
|
||||
its message and every changed file, plus prior release checkpoint b8afc70.
|
||||
The executor message matches the actual scoped probe, README, ignore rule and
|
||||
workflow artifacts. Initial working tree was clean. Source changes are limited
|
||||
to experiments/0001-stack/registry-access; other changes are task metadata,
|
||||
generated matrices, evidence, handoff and commit message. No spec, shared
|
||||
contract, application dependency, stack decision or harness change was included.
|
||||
|
||||
The probe fixes the HTTPS registry, enables strict-ssl explicitly, rejects
|
||||
NODE_TLS_REJECT_UNAUTHORIZED=0, uses empty user/global npmrc files and a fresh
|
||||
temporary cache, and runs outside the project npmrc context. Subprocess arguments
|
||||
are arrays without shell evaluation. Exact metadata version and tarball URL are
|
||||
checked before npm pack; the expected filename is fixed before reading bytes.
|
||||
Package scripts are disabled, no archive is extracted and no package is installed.
|
||||
Python hashlib SHA-512 is compared against both registry and pack integrity.
|
||||
Unexpected versions/origins/algorithms or mismatches terminate without success.
|
||||
The public registry/TLS trust remains the source of expected integrity; this is
|
||||
not independent package provenance or a hostile-registry defense.
|
||||
|
||||
Independently repeated the original metadata request and fresh-cache probe in
|
||||
this fresh reviewer harness. Both succeeded. react@19.3.1 was 26394 bytes with
|
||||
registry/actual integrity:
|
||||
sha512-QNhWdt7nrgVWWQG58QuGsAR3jv3Hbe4mb4vz7w2csnHavciZJgda1CPNaldF6eVxv90ud3jUXpKlHL69gO38yw==
|
||||
|
||||
No TLS/CORS bypass, secrets, real conversations or credentials found in the
|
||||
reviewed patch. Generated public artifacts are ignored. The README records
|
||||
DNS/HTTPS egress, normal certificate trust, project/temporary write boundaries,
|
||||
exact commands and explicit limits. The next stack executor must retain this
|
||||
network-enabled harness and perform its own clean install/build and decisions.
|
||||
|
||||
## Actual independent checks
|
||||
|
||||
| Command/check | Exit | Result |
|
||||
| --- | --- | --- |
|
||||
| `python3 scripts/tasks.py resume --agent auto-security-1e9200de1765` | 0 | Empty owned-task list, expected for reviewer; no claim. |
|
||||
| `python3 scripts/tasks.py show S00-011` and `packet S00-011 --agent auto-security-1e9200de1765` | 0 each | Correct review role, owner, scope, acceptance and dependency context. |
|
||||
| `git log --all --oneline --grep='^S00-011:'`, `git show e4672fb` (all scoped sections) and `git show b8afc70 --stat` | 0 each | Executor patch/message and release checkpoint examined. |
|
||||
| `npm view react version license engines --json --cache /private/tmp/luma-stack-npm-cache --fetch-retries=0 --fetch-timeout=15000` | 0 | version 19.3.1, MIT, node >=0.10.0. |
|
||||
| `npm config get strict-ssl` | 0 | true. |
|
||||
| `python3 experiments/0001-stack/registry-access/verify.py` | 0 | Both npm children exit 0; fresh-cache download and SHA-512 match as above. |
|
||||
| Python subprocess wrapper invoking verify.py with NODE_TLS_REJECT_UNAUTHORIZED=0 | 0 wrapper; 1 child | Asserted exact refusal stderr and empty stdout; exits before npm execution. |
|
||||
| `git check-ignore` for artifacts/metadata.json, result.json and react-19.3.1.tgz | 0 | All three generated artifacts ignored. |
|
||||
| `make check` | 0 | 276 tasks, 22 stages, 221 requirements, 211 allocated Web requirements, revision 8; 66 tooling tests passed in 10.382s. |
|
||||
| `git diff --check` and `git status --short` before review metadata | 0 each | No whitespace errors; working tree remains clean. |
|
||||
|
||||
No blocker or acceptance defect found. Foundation tests do not prove app
|
||||
readiness. No browser/CORS, app install/build, signature/provenance, library
|
||||
compatibility or future/different-harness availability was tested or accepted.
|
||||
The cause of the earlier external DNS repair is not asserted. Approval accepts
|
||||
the observed registry path and reproducible bounded probe only. Git commit and
|
||||
the next fresh session remain coordinator-owned.
|
||||
@@ -19,3 +19,12 @@ S00-002 executor, which must retain working DNS/HTTPS egress and perform its own
|
||||
clean install/build. Current observed Node/npm versions and sample React version
|
||||
are not a stack selection. No app readiness, browser/provider behavior, signature
|
||||
verification or future/different-harness network availability is claimed.
|
||||
|
||||
Independent security review: auto-security-1e9200de1765, 2026-10-15.
|
||||
Accepted the bounded registry-access remediation after repeating the original
|
||||
npm metadata request and fresh-cache verify.py (exit 0, 26394 bytes, SHA-512
|
||||
match), testing disabled-TLS refusal, and running make check (66 tests passed).
|
||||
Review evidence: state/evidence/S00-011-review.md. No blocker. Next fresh
|
||||
S00-002 executor must retain working DNS/HTTPS/TLS and run its own stack spike;
|
||||
no stack/build/browser/provenance acceptance is implied. Coordinator must commit
|
||||
this review transition before launching that session.
|
||||
+36
-12
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"revision": 8,
|
||||
"revision": 9,
|
||||
"tasks": {
|
||||
"S00-001": {
|
||||
"status": "done",
|
||||
@@ -15,17 +15,17 @@
|
||||
"completed_at": "2026-10-14T18:03:56+00:00"
|
||||
},
|
||||
"S00-002": {
|
||||
"status": "blocked",
|
||||
"owner": "auto-orchestrator-3a4f07103316",
|
||||
"status": "todo",
|
||||
"owner": null,
|
||||
"started_at": "2026-10-14T18:03:56+00:00",
|
||||
"reason": "S00-002 cannot verify versions/licenses or run its required clean install/build: local npm lookup fails with getaddrinfo ENOTFOUND registry.npmjs.org. Restricted network and never-approval execution policy cannot be changed by this agent. External owner must supply registry-capable execution while preserving TLS validation and project-only writes.",
|
||||
"updated_at": "2026-10-14T18:05:01+00:00",
|
||||
"blocked_by": [
|
||||
"S00-011"
|
||||
],
|
||||
"reason": null,
|
||||
"updated_at": "2026-10-14T18:11:33+00:00",
|
||||
"blocked_by": [],
|
||||
"resume_status": "in_progress",
|
||||
"blocker_report": "state/blockers/S00-011.md",
|
||||
"handoff": "state/handoffs/S00-002.md"
|
||||
"handoff": "state/handoffs/S00-002.md",
|
||||
"previous_owner": "auto-orchestrator-3a4f07103316",
|
||||
"resumed_after_blocker": true
|
||||
},
|
||||
"S00-003": {
|
||||
"status": "todo",
|
||||
@@ -1120,14 +1120,17 @@
|
||||
"owner": null
|
||||
},
|
||||
"S00-011": {
|
||||
"status": "review",
|
||||
"status": "done",
|
||||
"owner": "auto-ci-cd-d105e8027730",
|
||||
"external_wait": false,
|
||||
"reason": null,
|
||||
"started_at": "2026-10-14T18:07:56+00:00",
|
||||
"updated_at": "2026-10-14T18:10:10+00:00",
|
||||
"updated_at": "2026-10-14T18:11:33+00:00",
|
||||
"evidence": "state/evidence/S00-011-auto-ci-cd-d105e8027730.md",
|
||||
"handoff": "state/handoffs/S00-011.md"
|
||||
"handoff": "state/handoffs/S00-011.md",
|
||||
"reviewer": "auto-security-1e9200de1765",
|
||||
"review_evidence": "state/evidence/S00-011-review.md",
|
||||
"completed_at": "2026-10-14T18:11:33+00:00"
|
||||
}
|
||||
},
|
||||
"events": [
|
||||
@@ -1219,6 +1222,27 @@
|
||||
"to": "review",
|
||||
"reason": null,
|
||||
"evidence": "state/evidence/S00-011-auto-ci-cd-d105e8027730.md"
|
||||
},
|
||||
{
|
||||
"revision": 9,
|
||||
"at": "2026-10-14T18:11:33+00:00",
|
||||
"action": "auto-unblock",
|
||||
"task": "S00-002",
|
||||
"resolved_by": "S00-011",
|
||||
"to": "todo",
|
||||
"fresh_agent_required": true
|
||||
},
|
||||
{
|
||||
"revision": 9,
|
||||
"at": "2026-10-14T18:11:33+00:00",
|
||||
"action": "approve",
|
||||
"task": "S00-011",
|
||||
"agent": "auto-security-1e9200de1765",
|
||||
"role": "security",
|
||||
"from": "review",
|
||||
"to": "done",
|
||||
"reason": null,
|
||||
"evidence": "state/evidence/S00-011-review.md"
|
||||
}
|
||||
],
|
||||
"retired_agents": [
|
||||
|
||||
Reference in new issue
Block a user