Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
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
129 changes: 129 additions & 0 deletions .github/workflows/tradernet-chart-causal-followups.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: Tradernet Chart Causal Follow-ups

on:
workflow_dispatch:
push:
branches:
- agent/tradernet-chart-quote-audit
paths:
- .github/workflows/tradernet-chart-causal-followups.yml
- audits/tradernet/chart-quote-public.json
- scripts/tradernet_public_hloc_integrity.mjs
- scripts/tradernet_chart_route_matrix.mjs
pull_request:
branches:
- agent/tradernet-lighthouse-audit
paths:
- .github/workflows/tradernet-chart-causal-followups.yml
- audits/tradernet/chart-quote-public.json
- scripts/tradernet_public_hloc_integrity.mjs
- scripts/tradernet_chart_route_matrix.mjs

permissions:
contents: read

concurrency:
group: tradernet-chart-causal-followups-${{ github.ref }}
cancel-in-progress: true

jobs:
hloc-integrity:
name: Naturally loaded HLOC integrity
runs-on: ubuntu-latest
timeout-minutes: 12
env:
NPM_CONFIG_AUDIT: "false"
NPM_CONFIG_FUND: "false"
steps:
- uses: actions/checkout@v6
- name: Validate bounded target
shell: bash
run: |
set -euo pipefail
jq -e '
(.target_url == "https://tradernet.ru/charts/MICEXINDEXCF") and
(.ticker == "MICEXINDEXCF") and
(.boundaries.direct_api_testing == false) and
(.boundaries.authenticated_testing == false) and
(.boundaries.financial_operations == false)
' audits/tradernet/chart-quote-public.json >/dev/null
- name: Install pinned browser driver
run: npm install --no-save --package-lock=false puppeteer-core@24.16.0
- name: Locate Chrome and validate script
id: runtime
shell: bash
run: |
set -euo pipefail
node --check scripts/tradernet_public_hloc_integrity.mjs
chrome="$(command -v google-chrome-stable || command -v google-chrome || command -v chromium || command -v chromium-browser || true)"
test -n "${chrome}"
echo "chrome=${chrome}" >> "${GITHUB_OUTPUT}"
- name: Capture naturally requested candle history
shell: bash
run: |
set -euo pipefail
rm -rf reports/tradernet-hloc-integrity
node scripts/tradernet_public_hloc_integrity.mjs \
--config audits/tradernet/chart-quote-public.json \
--chrome "${{ steps.runtime.outputs.chrome }}" \
--output-dir reports/tradernet-hloc-integrity
cat reports/tradernet-hloc-integrity/hloc-integrity-summary.md >> "${GITHUB_STEP_SUMMARY}"
- name: Upload HLOC evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: tradernet-hloc-integrity-${{ github.run_id }}
path: reports/tradernet-hloc-integrity/
if-no-files-found: error
retention-days: 14

route-matrix:
name: User-agent and viewport route matrix
runs-on: ubuntu-latest
timeout-minutes: 12
env:
NPM_CONFIG_AUDIT: "false"
NPM_CONFIG_FUND: "false"
steps:
- uses: actions/checkout@v6
- name: Validate bounded matrix
shell: bash
run: |
set -euo pipefail
jq -e '
(.target_url == "https://tradernet.ru/charts/MICEXINDEXCF") and
((.profiles | length) == 2) and
(.boundaries.public_page_only == true) and
(.boundaries.authenticated_testing == false) and
(.boundaries.direct_api_testing == false) and
(.boundaries.load_testing == false)
' audits/tradernet/chart-quote-public.json >/dev/null
- name: Install pinned browser driver
run: npm install --no-save --package-lock=false puppeteer-core@24.16.0
- name: Locate Chrome and validate script
id: runtime
shell: bash
run: |
set -euo pipefail
node --check scripts/tradernet_chart_route_matrix.mjs
chrome="$(command -v google-chrome-stable || command -v google-chrome || command -v chromium || command -v chromium-browser || true)"
test -n "${chrome}"
echo "chrome=${chrome}" >> "${GITHUB_OUTPUT}"
- name: Run four-way public route matrix
shell: bash
run: |
set -euo pipefail
rm -rf reports/tradernet-chart-route-matrix
node scripts/tradernet_chart_route_matrix.mjs \
--config audits/tradernet/chart-quote-public.json \
--chrome "${{ steps.runtime.outputs.chrome }}" \
--output-dir reports/tradernet-chart-route-matrix
cat reports/tradernet-chart-route-matrix/route-matrix-summary.md >> "${GITHUB_STEP_SUMMARY}"
- name: Upload route evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: tradernet-chart-route-matrix-${{ github.run_id }}
path: reports/tradernet-chart-route-matrix/
if-no-files-found: error
retention-days: 14
106 changes: 106 additions & 0 deletions .github/workflows/tradernet-chart-quote-public.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Tradernet Public Chart and Quote Audit

on:
workflow_dispatch:
push:
branches:
- agent/tradernet-chart-quote-audit
paths:
- .github/workflows/tradernet-chart-quote-public.yml
- audits/tradernet/chart-quote-public.json
- scripts/tradernet_chart_quote_observer.mjs
pull_request:
branches:
- agent/tradernet-lighthouse-audit
paths:
- .github/workflows/tradernet-chart-quote-public.yml
- audits/tradernet/chart-quote-public.json
- scripts/tradernet_chart_quote_observer.mjs

permissions:
contents: read

concurrency:
group: tradernet-public-chart-quote-${{ github.ref }}
cancel-in-progress: true

jobs:
observe:
name: Passive public chart and quote observation
runs-on: ubuntu-latest
timeout-minutes: 20
env:
NPM_CONFIG_AUDIT: "false"
NPM_CONFIG_FUND: "false"

steps:
- name: Checkout exact workflow revision
uses: actions/checkout@v6

- name: Validate exact safety boundary
shell: bash
run: |
set -euo pipefail
config="audits/tradernet/chart-quote-public.json"
python3 -m json.tool "${config}" >/dev/null
jq -e '
(.target_url == "https://tradernet.ru/charts/MICEXINDEXCF") and
(.ticker == "MICEXINDEXCF") and
(.observation_ms <= 30000) and
((.profiles | length) == 2)
' "${config}" >/dev/null
jq -e '
(.boundaries.public_page_only == true) and
(.boundaries.one_ticker_only == true) and
(.boundaries.one_timeframe_switch_only == true) and
(.boundaries.authenticated_testing == false) and
(.boundaries.direct_api_testing == false) and
(.boundaries.financial_operations == false) and
(.boundaries.order_entry == false) and
(.boundaries.market_depth_subscription == false) and
(.boundaries.fuzzing == false) and
(.boundaries.load_testing == false) and
(.boundaries.active_security_testing == false)
' "${config}" >/dev/null

- name: Install pinned browser driver
shell: bash
run: |
set -euo pipefail
npm install --no-save --package-lock=false puppeteer-core@24.16.0

- name: Validate observer and locate Chrome
id: runtime
shell: bash
run: |
set -euo pipefail
node --version
npm --version
node --check scripts/tradernet_chart_quote_observer.mjs
chrome="$(command -v google-chrome-stable || command -v google-chrome || command -v chromium || command -v chromium-browser || true)"
if [[ -z "${chrome}" ]]; then
echo "Chrome executable was not found" >&2
exit 1
fi
"${chrome}" --version
echo "chrome=${chrome}" >> "${GITHUB_OUTPUT}"

- name: Observe desktop and mobile public chart
shell: bash
run: |
set -euo pipefail
rm -rf reports/tradernet-chart-quote
node scripts/tradernet_chart_quote_observer.mjs \
--config audits/tradernet/chart-quote-public.json \
--chrome "${{ steps.runtime.outputs.chrome }}" \
--output-dir reports/tradernet-chart-quote
cat reports/tradernet-chart-quote/result/chart-quote-summary.md >> "${GITHUB_STEP_SUMMARY}"

- name: Upload exact evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: tradernet-public-chart-quote-${{ github.run_id }}
path: reports/tradernet-chart-quote/
if-no-files-found: error
retention-days: 14
80 changes: 80 additions & 0 deletions .github/workflows/tradernet-chart-timeframe-probe.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Tradernet Chart Timeframe Probe

on:
workflow_dispatch:
push:
branches:
- agent/tradernet-chart-quote-audit
paths:
- .github/workflows/tradernet-chart-timeframe-probe.yml
- audits/tradernet/chart-quote-public.json
- scripts/tradernet_chart_timeframe_real_click.mjs
pull_request:
branches:
- agent/tradernet-lighthouse-audit
paths:
- .github/workflows/tradernet-chart-timeframe-probe.yml
- audits/tradernet/chart-quote-public.json
- scripts/tradernet_chart_timeframe_real_click.mjs

permissions:
contents: read

concurrency:
group: tradernet-chart-timeframe-probe-${{ github.ref }}
cancel-in-progress: true

jobs:
probe:
name: Trusted-click D1 to H1 public chart transition
runs-on: ubuntu-latest
timeout-minutes: 12
env:
NPM_CONFIG_AUDIT: "false"
NPM_CONFIG_FUND: "false"
steps:
- uses: actions/checkout@v6
- name: Validate exact boundary
shell: bash
run: |
set -euo pipefail
jq -e '
(.target_url == "https://tradernet.ru/charts/MICEXINDEXCF") and
(.ticker == "MICEXINDEXCF") and
(.boundaries.one_ticker_only == true) and
(.boundaries.one_timeframe_switch_only == true) and
(.boundaries.direct_api_testing == false) and
(.boundaries.authenticated_testing == false) and
(.boundaries.financial_operations == false) and
(.boundaries.order_entry == false) and
(.boundaries.load_testing == false)
' audits/tradernet/chart-quote-public.json >/dev/null
- name: Install pinned browser driver
run: npm install --no-save --package-lock=false puppeteer-core@24.16.0
- name: Locate Chrome and validate trusted-click script
id: runtime
shell: bash
run: |
set -euo pipefail
node --check scripts/tradernet_chart_timeframe_real_click.mjs
chrome="$(command -v google-chrome-stable || command -v google-chrome || command -v chromium || command -v chromium-browser || true)"
test -n "${chrome}"
echo "chrome=${chrome}" >> "${GITHUB_OUTPUT}"
- name: Probe trusted-click D1 to H1 transition
shell: bash
run: |
set -euo pipefail
rm -rf reports/tradernet-chart-timeframe
node scripts/tradernet_chart_timeframe_real_click.mjs \
--config audits/tradernet/chart-quote-public.json \
--chrome "${{ steps.runtime.outputs.chrome }}" \
--output-dir reports/tradernet-chart-timeframe
cat reports/tradernet-chart-timeframe/timeframe-transition-summary.md >> "${GITHUB_STEP_SUMMARY}"
- name: Upload exact evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: tradernet-chart-timeframe-${{ github.run_id }}
path: reports/tradernet-chart-timeframe/
if-no-files-found: error
retention-days: 14
Loading
Loading