From 180b3e61469227cea0ebb0baa47856e092025424 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 28 Aug 2026 12:36:49 +0300 Subject: [PATCH] docs: organize operational records and evidence --- .github/CODEOWNERS | 10 ++--- CURRENT_STATUS.md | 17 +++---- ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md | 2 +- MASTER_STATUS.md | 8 ++-- PROJECT_REGISTRY.md | 6 +-- REPO_PATHS.md | 10 ++--- UPLOAD_GUIDE.md | 4 +- benchmarks/supermanager/COVERAGE.md | 2 +- .../supermanager/benchmark_definition.json | 44 +++++++++---------- docs/REPOSITORY_MAP.md | 4 +- .../CROSS_PROJECT_SMOKE_QA_RESULTS.md | 12 ++--- .../evidence/PILOT_RESULTS_2026-08-27_AIOS.md | 2 +- .../PILOT_RESULTS_2026-08-27_ANALYTICS.md | 0 .../PILOT_RESULTS_2026-08-27_CROSS.md | 0 .../PILOT_RESULTS_2026-08-27_THINKING.md | 2 +- docs/evidence/README.md | 8 ++++ .../evidence/SMOKE_QA_RESULTS.md | 10 ++--- .../CHATGPT_PROJECT_SYNC_CHECKLIST.md | 8 ++-- .../operations/PILOT_CASES.md | 10 ++--- .../operations/PILOT_RESULTS_TEMPLATE.md | 0 .../operations/PROJECT_SYNC_TEMPLATE.md | 0 docs/operations/README.md | 8 ++++ .../operations/SMOKE_QA_REFRESH_PLAN.md | 26 +++++------ scripts/check_manifest_paths.py | 6 +-- scripts/live_project_verifier.py | 10 ++--- tests/test_live_project_verifier.py | 20 +++++---- tests/test_merge_gate_protection.py | 10 ++--- tests/test_validation_scripts.py | 20 +++++---- 28 files changed, 141 insertions(+), 118 deletions(-) rename CROSS_PROJECT_SMOKE_QA_RESULTS.md => docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md (95%) rename PILOT_RESULTS_2026-08-27_AIOS.md => docs/evidence/PILOT_RESULTS_2026-08-27_AIOS.md (96%) rename PILOT_RESULTS_2026-08-27_ANALYTICS.md => docs/evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md (100%) rename PILOT_RESULTS_2026-08-27_CROSS.md => docs/evidence/PILOT_RESULTS_2026-08-27_CROSS.md (100%) rename PILOT_RESULTS_2026-08-27_THINKING.md => docs/evidence/PILOT_RESULTS_2026-08-27_THINKING.md (96%) create mode 100644 docs/evidence/README.md rename SMOKE_QA_RESULTS.md => docs/evidence/SMOKE_QA_RESULTS.md (95%) rename CHATGPT_PROJECT_SYNC_CHECKLIST.md => docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md (84%) rename PILOT_CASES.md => docs/operations/PILOT_CASES.md (95%) rename PILOT_RESULTS_TEMPLATE.md => docs/operations/PILOT_RESULTS_TEMPLATE.md (100%) rename PROJECT_SYNC_TEMPLATE.md => docs/operations/PROJECT_SYNC_TEMPLATE.md (100%) create mode 100644 docs/operations/README.md rename SMOKE_QA_REFRESH_PLAN.md => docs/operations/SMOKE_QA_REFRESH_PLAN.md (89%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a7d7cc0..ad3b019 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -25,11 +25,11 @@ /PROMPT_QA_FACTORY.md @sergstack /PROJECT_CAPABILITIES.yaml @sergstack /knowledge_bundle_manifest.json @sergstack -/CHATGPT_PROJECT_SYNC_CHECKLIST.md @sergstack -/SMOKE_QA_RESULTS.md @sergstack -/CROSS_PROJECT_SMOKE_QA_RESULTS.md @sergstack -/PILOT_CASES.md @sergstack -/PILOT_RESULTS_TEMPLATE.md @sergstack +/docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md @sergstack +/docs/evidence/SMOKE_QA_RESULTS.md @sergstack +/docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md @sergstack +/docs/operations/PILOT_CASES.md @sergstack +/docs/operations/PILOT_RESULTS_TEMPLATE.md @sergstack /docs/AI_DEVELOPMENT_WORKFLOW.md @sergstack /docs/MERGE_GATE_OWNER_CHECKLIST.md @sergstack /schemas/ @sergstack diff --git a/CURRENT_STATUS.md b/CURRENT_STATUS.md index ee7ea60..7e9125c 100644 --- a/CURRENT_STATUS.md +++ b/CURRENT_STATUS.md @@ -12,7 +12,7 @@ - runtime_smoke_status: candidate - realistic_pilot_status: candidate (AI OS, Thinking, Analytics, and one cross-project routing/resume pilot passed; broader pilot set not run) - acceptance_status: candidate / ready for human review -- smoke_qa_evidence: SMOKE_QA_RESULTS.md; CROSS_PROJECT_SMOKE_QA_RESULTS.md +- smoke_qa_evidence: docs/evidence/SMOKE_QA_RESULTS.md; docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md - validation_gates: see `MASTER_STATUS.md` — "Validation Gates" and "Operational Gates" (canonical lists; do not copy them here) - blocked_items: - embeddings @@ -51,7 +51,7 @@ Evidence-dependent or external state: Observed external pilot evidence — 2026-08-27: - `PILOT-AIOS-001` completed one live `[AI OS]` response and is recorded as - `candidate` with `medium` confidence in `PILOT_RESULTS_2026-08-27_AIOS.md`. + `candidate` with `medium` confidence in `docs/evidence/PILOT_RESULTS_2026-08-27_AIOS.md`. - The response named its KB sources, separated facts from hypotheses, retained the promotion gate for embeddings, semantic search, and vector DB, and routed the next step to bounded governance evidence collection. @@ -61,7 +61,7 @@ Observed external pilot evidence — 2026-08-27: - `PILOT-THINKING-001` completed one live decision memo and is recorded as `candidate` with `medium` confidence in - `PILOT_RESULTS_2026-08-27_THINKING.md`. + `docs/evidence/PILOT_RESULTS_2026-08-27_THINKING.md`. - The memo compared four reversible options, separated facts, assumptions, and unknowns, identified risks, set a `recommended` decision status and revisit triggers, and handed the next stage back to `[AI OS]`. @@ -71,7 +71,7 @@ Observed external pilot evidence — 2026-08-27: - `PILOT-ANALYTICS-001` completed one live quick-analysis response on an artificial three-row dataset and is recorded as `candidate` with `medium` - confidence in `PILOT_RESULTS_2026-08-27_ANALYTICS.md`. + confidence in `docs/evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md`. - The response defined grain, period, units, formulas, `RAW → stage → mart`, reconciliation checks, and limitations. It handled the zero-plan row without inventing a percentage and made no causal claim beyond the supplied data. @@ -80,7 +80,7 @@ Observed external pilot evidence — 2026-08-27: - `PILOT-CROSS-001` completed one live `[AI OS] → [Thinking] → [AI OS]` routing/resume case and is recorded as `candidate` with `medium` confidence - in `PILOT_RESULTS_2026-08-27_CROSS.md`. + in `docs/evidence/PILOT_RESULTS_2026-08-27_CROSS.md`. - The route preserved the original goal, constraints, owner boundaries, and return path; no scope drift or role confusion was observed. This is limited evidence from one route, not proof of general cross-project reliability, @@ -107,7 +107,8 @@ Recent verified state: - Goal Mode is the default; strict task packages are reserved for high-risk, already-scoped, ultra-long, or explicitly requested work. - ChatGPT Project upload mode is compact `Knowledge_Bundles` by default. -- `SMOKE_QA_RESULTS.md` and `CROSS_PROJECT_SMOKE_QA_RESULTS.md` record +- `docs/evidence/SMOKE_QA_RESULTS.md` and + `docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md` record 2026-07-06 smoke QA evidence. Smoke QA does not equal production readiness. - `PILOT-AIOS-001`, `PILOT-THINKING-001`, `PILOT-ANALYTICS-001`, and `PILOT-CROSS-001` have recorded candidate results; all other pilots remain @@ -162,7 +163,7 @@ Run repository validation before PR review: use the canonical command set from ` Then complete operational verification: -- `CHATGPT_PROJECT_SYNC_CHECKLIST.md` +- `docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` - obtain owner review for the four candidate pilots, then capture the next real - failure-to-regression case from `PILOT_CASES.md` + failure-to-regression case from `docs/operations/PILOT_CASES.md` - keep production promotion blocked until accepted pilot evidence exists diff --git a/ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md b/ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md index a68d6d5..01dc1ae 100644 --- a/ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md +++ b/ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md @@ -48,7 +48,7 @@ Для поведения проекта также проверяй: `PROJECT_ROUTING.md`, `GOVERNANCE_RULES.md`, `AI_OS_WORKFLOW.md`, `HANDOFF_PROTOCOL.md`, `SMOKE_QA_FOR_AI_OS.md`, `ANTI_PATTERNS.md`. -Если вопрос касается текущего статуса настройки проекта, сначала проверь `CURRENT_STATUS.md` и `SMOKE_QA_RESULTS.md`, если они доступны. Если их нет, прямо скажи, что текущий status setup не полностью записан. +Если вопрос касается текущего статуса настройки проекта, сначала проверь `CURRENT_STATUS.md` и `docs/evidence/SMOKE_QA_RESULTS.md`, если они доступны. Если их нет, прямо скажи, что текущий status setup не полностью записан. ## 3. Обязательная шапка ответа diff --git a/MASTER_STATUS.md b/MASTER_STATUS.md index 9c4dff4..840ed10 100644 --- a/MASTER_STATUS.md +++ b/MASTER_STATUS.md @@ -40,10 +40,10 @@ Canonical list. Other documents (including `CURRENT_STATUS.md`) must reference t ## Evidence Pointers -- `SMOKE_QA_RESULTS.md` — `[AI OS]` smoke QA evidence from 2026-07-06. -- `CROSS_PROJECT_SMOKE_QA_RESULTS.md` — cross-project smoke QA evidence from 2026-07-06. -- `CHATGPT_PROJECT_SYNC_CHECKLIST.md` — manual sync status. -- `PILOT_CASES.md` — pilot backlog; pilot completion still requires result evidence. +- `docs/evidence/SMOKE_QA_RESULTS.md` — `[AI OS]` smoke QA evidence from 2026-07-06. +- `docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md` — cross-project smoke QA evidence from 2026-07-06. +- `docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` — manual sync status. +- `docs/operations/PILOT_CASES.md` — pilot backlog; pilot completion still requires result evidence. - `StreamDeck/README.md` — StreamDeck active/candidate status. ## Repository State Reconciliation diff --git a/PROJECT_REGISTRY.md b/PROJECT_REGISTRY.md index 49d1d55..b30fb0a 100644 --- a/PROJECT_REGISTRY.md +++ b/PROJECT_REGISTRY.md @@ -48,9 +48,9 @@ production authorization. ## Operational Artifacts -- `CHATGPT_PROJECT_SYNC_CHECKLIST.md` -- `PILOT_CASES.md` -- `SMOKE_QA_REFRESH_PLAN.md` +- `docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` +- `docs/operations/PILOT_CASES.md` +- `docs/operations/SMOKE_QA_REFRESH_PLAN.md` - `ChatGPT/[Project]/Knowledge_Bundles/` ## Canonical Workflows diff --git a/REPO_PATHS.md b/REPO_PATHS.md index 03a0d80..cc893f2 100644 --- a/REPO_PATHS.md +++ b/REPO_PATHS.md @@ -33,11 +33,11 @@ ## Operational Verification -- `CHATGPT_PROJECT_SYNC_CHECKLIST.md` -- `PROJECT_SYNC_TEMPLATE.md` -- `PILOT_CASES.md` -- `PILOT_RESULTS_TEMPLATE.md` -- `SMOKE_QA_REFRESH_PLAN.md` +- `docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` +- `docs/operations/PROJECT_SYNC_TEMPLATE.md` +- `docs/operations/PILOT_CASES.md` +- `docs/operations/PILOT_RESULTS_TEMPLATE.md` +- `docs/operations/SMOKE_QA_REFRESH_PLAN.md` ## Knowledge Bundle Paths diff --git a/UPLOAD_GUIDE.md b/UPLOAD_GUIDE.md index d41f3e3..ecc0d20 100644 --- a/UPLOAD_GUIDE.md +++ b/UPLOAD_GUIDE.md @@ -83,7 +83,7 @@ SMOKE_QA_FOR_AI_OS.md ## 6. Operational verification -After manual sync, record status in `CHATGPT_PROJECT_SYNC_CHECKLIST.md`, run smoke QA from `SMOKE_QA_REFRESH_PLAN.md`, and complete the relevant pilot in `PILOT_CASES.md`. +After manual sync, record status in `docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md`, run smoke QA from `docs/operations/SMOKE_QA_REFRESH_PLAN.md`, and complete the relevant pilot in `docs/operations/PILOT_CASES.md`. ## 7. Compact Knowledge bundles @@ -103,7 +103,7 @@ For a changed bundle, replace only that bundle in the matching ChatGPT Project: filename. Record the observed replacement and any affected smoke QA in -`CHATGPT_PROJECT_SYNC_CHECKLIST.md`. A replaced filename proves only source +`docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md`. A replaced filename proves only source transport; it does not prove behavioural smoke QA, owner acceptance, or production authorization. diff --git a/benchmarks/supermanager/COVERAGE.md b/benchmarks/supermanager/COVERAGE.md index eafd3ae..f865581 100644 --- a/benchmarks/supermanager/COVERAGE.md +++ b/benchmarks/supermanager/COVERAGE.md @@ -24,4 +24,4 @@ All listed cases are deterministic Level A assertions. Model-evaluated and isola | Route: Codex APP | 3 | 1 | 0 | 0 | 4 | 0 | | Repository-wide hard-fail classes | 0 | 0 | 0 | 12 | 12 | 0 | -The 22 regression cases preserve every individual `pass` row documented in `SMOKE_QA_RESULTS.md` and `CROSS_PROJECT_SMOKE_QA_RESULTS.md`; the cross-project aggregate `[AI OS]` row is represented by its seven underlying cases rather than counted twice. +The 22 regression cases preserve every individual `pass` row documented in `docs/evidence/SMOKE_QA_RESULTS.md` and `docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md`; the cross-project aggregate `[AI OS]` row is represented by its seven underlying cases rather than counted twice. diff --git a/benchmarks/supermanager/benchmark_definition.json b/benchmarks/supermanager/benchmark_definition.json index 55a5061..f841ab3 100644 --- a/benchmarks/supermanager/benchmark_definition.json +++ b/benchmarks/supermanager/benchmark_definition.json @@ -58,27 +58,27 @@ {"id": "codex_app", "input_type": "Long-running Codex execution", "destination": "Codex APP directory", "positive_terms": ["long-running", "execution"], "negative_destination": "[Codex]"} ], "documented_smoke_cases": [ - {"id": "aios_navigation", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 1 | Navigation |", "| pass |"]}, - {"id": "aios_scope_routing", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 2 | Scope / Routing |", "| pass |"]}, - {"id": "aios_evidence", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 3 | Evidence |", "| pass |"]}, - {"id": "aios_governance", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 4 | Governance gates |", "| pass |"]}, - {"id": "aios_handoff", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 5 | Handoff to Codex |", "| pass |"]}, - {"id": "aios_goal_mode", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 6 | Goal Mode behavior |", "| pass |"]}, - {"id": "aios_supervised_loop", "file": "SMOKE_QA_RESULTS.md", "tokens": ["| 7 | Supervised loop boundary |", "| pass |"]}, - {"id": "thinking_decision", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Thinking]` | Decision memo |", "| pass |"]}, - {"id": "thinking_judge", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Thinking]` | `@judge` review |", "| pass |"]}, - {"id": "thinking_boundary", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Thinking]` | Routing boundary |", "| pass |"]}, - {"id": "analytics_contract", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Analytics]` | Data contract / stage / mart / QA / limitations |", "| pass |"]}, - {"id": "analytics_codex_boundary", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Analytics]` | Why not straight to Codex |", "| pass |"]}, - {"id": "analytics_financial_boundary", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Analytics]` | Financial task boundary |", "| pass |"]}, - {"id": "llm_registry", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[LLM]` | Prompt registry item |", "| pass |"]}, - {"id": "llm_judge_revise", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[LLM]` | Judge/revise unsupported claims |", "| pass |"]}, - {"id": "llm_context_pack", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[LLM]` | Context Pack |", "| pass |"]}, - {"id": "codex_task_gate", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Codex]` | Task package gate |", "| pass |"]}, - {"id": "codex_secrets", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Codex]` | Secrets / production deploy |", "| pass |"]}, - {"id": "codex_goal_mode", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Codex]` | Goal Mode |", "| pass |"]}, - {"id": "router_classification", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Inbox Router]` | Classify 10 raw inputs |", "| pass |"]}, - {"id": "router_multi_project", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Inbox Router]` | Multi-project input |", "| pass |"]}, - {"id": "router_streamdeck", "file": "CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Inbox Router]` | StreamDeck autoloop + PR route |", "| pass |"]} + {"id": "aios_navigation", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 1 | Navigation |", "| pass |"]}, + {"id": "aios_scope_routing", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 2 | Scope / Routing |", "| pass |"]}, + {"id": "aios_evidence", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 3 | Evidence |", "| pass |"]}, + {"id": "aios_governance", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 4 | Governance gates |", "| pass |"]}, + {"id": "aios_handoff", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 5 | Handoff to Codex |", "| pass |"]}, + {"id": "aios_goal_mode", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 6 | Goal Mode behavior |", "| pass |"]}, + {"id": "aios_supervised_loop", "file": "docs/evidence/SMOKE_QA_RESULTS.md", "tokens": ["| 7 | Supervised loop boundary |", "| pass |"]}, + {"id": "thinking_decision", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Thinking]` | Decision memo |", "| pass |"]}, + {"id": "thinking_judge", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Thinking]` | `@judge` review |", "| pass |"]}, + {"id": "thinking_boundary", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Thinking]` | Routing boundary |", "| pass |"]}, + {"id": "analytics_contract", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Analytics]` | Data contract / stage / mart / QA / limitations |", "| pass |"]}, + {"id": "analytics_codex_boundary", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Analytics]` | Why not straight to Codex |", "| pass |"]}, + {"id": "analytics_financial_boundary", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Analytics]` | Financial task boundary |", "| pass |"]}, + {"id": "llm_registry", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[LLM]` | Prompt registry item |", "| pass |"]}, + {"id": "llm_judge_revise", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[LLM]` | Judge/revise unsupported claims |", "| pass |"]}, + {"id": "llm_context_pack", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[LLM]` | Context Pack |", "| pass |"]}, + {"id": "codex_task_gate", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Codex]` | Task package gate |", "| pass |"]}, + {"id": "codex_secrets", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Codex]` | Secrets / production deploy |", "| pass |"]}, + {"id": "codex_goal_mode", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Codex]` | Goal Mode |", "| pass |"]}, + {"id": "router_classification", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Inbox Router]` | Classify 10 raw inputs |", "| pass |"]}, + {"id": "router_multi_project", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Inbox Router]` | Multi-project input |", "| pass |"]}, + {"id": "router_streamdeck", "file": "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", "tokens": ["| `[Inbox Router]` | StreamDeck autoloop + PR route |", "| pass |"]} ] } diff --git a/docs/REPOSITORY_MAP.md b/docs/REPOSITORY_MAP.md index 10975ae..4ea39cb 100644 --- a/docs/REPOSITORY_MAP.md +++ b/docs/REPOSITORY_MAP.md @@ -72,9 +72,9 @@ debugging a sync problem. | Entry and routing | `README.md`, this map, registries | Explain where to start; do not copy domain methodology | | Governance and contracts | `AGENTS.md`, `GOAL_MODE.md`, active standards | Normative rules; protected-path review applies | | Current status | root and project-local `CURRENT_STATUS.md` | State maturity and next action; do not redefine gates | +| Operations | [`docs/operations/`](operations) | Active sync, smoke-QA, and pilot records; not entry-point policy | | Gate definitions | `MASTER_STATUS.md` | Define validation and operational gates and point to evidence | -| Operational records | checklists, pilot plans, manifests | Track one operation or package; not general policy | -| Evidence | smoke-QA, pilot, and acceptance results | Record what was checked; passing evidence is not production approval | +| Evidence | [`docs/evidence/`](evidence) | Record what was checked; passing evidence is not production approval | | Delivery artifacts | `Knowledge_Bundles/`, Stream Deck exports | Distributable surfaces derived from canonical sources | | History | [`archive/`](../archive), including completed task packages | Preserve audit history; not current guidance unless actively referenced | diff --git a/CROSS_PROJECT_SMOKE_QA_RESULTS.md b/docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md similarity index 95% rename from CROSS_PROJECT_SMOKE_QA_RESULTS.md rename to docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md index 74d95f8..e062797 100644 --- a/CROSS_PROJECT_SMOKE_QA_RESULTS.md +++ b/docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md @@ -20,10 +20,10 @@ Revision update: the two original `revise` findings from PR #62 were fixed in Pr ## Files Checked -- `CHATGPT_PROJECT_SYNC_CHECKLIST.md` +- `../operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` - `SMOKE_QA_RESULTS.md` -- `SMOKE_QA_REFRESH_PLAN.md` -- `PILOT_CASES.md` +- `../operations/SMOKE_QA_REFRESH_PLAN.md` +- `../operations/PILOT_CASES.md` - `archive/reports/KB_COMPACT_CONSISTENCY_REPORT.md` - `ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md` - `ChatGPT/[Thinking]/PROJECT_INSTRUCTIONS.md` @@ -83,7 +83,7 @@ Other project smoke QA was run in ChatGPT UI as one combined prompt per project, | `python3 scripts/check_knowledge_bundles.py` | pass | 6 projects checked; 30 bundles checked; failed=0. | | `python3 scripts/sync_aios.py` | pass | Internal checks passed; helper printed sync readiness guidance and did not upload, push, or modify remote systems. | | `git diff --check` | pass | No whitespace errors reported. | -| `git status --short` | pass | Shows only expected docs/settings files changed: `CHATGPT_PROJECT_SYNC_CHECKLIST.md`, `CROSS_PROJECT_SMOKE_QA_RESULTS.md`, `ChatGPT/[Codex]/PROJECT_INSTRUCTIONS.md`, and `ChatGPT/[Inbox Router]/PROJECT_INSTRUCTIONS.md`. | +| `git status --short` | pass | Shows only expected docs/settings files changed: `docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md`, `docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md`, `ChatGPT/[Codex]/PROJECT_INSTRUCTIONS.md`, and `ChatGPT/[Inbox Router]/PROJECT_INSTRUCTIONS.md`. | ## Checklist Updates Made @@ -97,7 +97,7 @@ Other project smoke QA was run in ChatGPT UI as one combined prompt per project, ## Pilot Statuses -`PILOT_CASES.md` was not changed. +`../operations/PILOT_CASES.md` was not changed. All pilot completions remain open / `not_verified` unless already recorded elsewhere. ## Residual Risks @@ -114,7 +114,7 @@ All pilot completions remain open / `not_verified` unless already recorded elsew - Checklist updates: observed UI sync and smoke QA status recorded for `[Thinking]`, `[Analytics]`, `[LLM]`, `[Codex]`, and `[Inbox Router]`; `[AI OS]` reused issue #59 row. - Pilots left open: yes. - Risks / limitations: combined prompts for the original cross-project run, no full byte-for-byte UI instruction comparison, no production promotion. -- Rollback: revert this documentation update, the related `CHATGPT_PROJECT_SYNC_CHECKLIST.md` row updates, and the two Project Instructions wording updates. +- Rollback: revert this documentation update, the related `../operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` row updates, and the two Project Instructions wording updates. - Acceptance status: `candidate / ready for human review`. ## Next Step diff --git a/PILOT_RESULTS_2026-08-27_AIOS.md b/docs/evidence/PILOT_RESULTS_2026-08-27_AIOS.md similarity index 96% rename from PILOT_RESULTS_2026-08-27_AIOS.md rename to docs/evidence/PILOT_RESULTS_2026-08-27_AIOS.md index 4c19032..aba6ebd 100644 --- a/PILOT_RESULTS_2026-08-27_AIOS.md +++ b/docs/evidence/PILOT_RESULTS_2026-08-27_AIOS.md @@ -34,7 +34,7 @@ Evidence: - direct live response: ; - response completed in the live `[AI OS]` project; no source upload, settings change, implementation handoff, or production action occurred; -- repository context: `PILOT_CASES.md`, `CHATGPT_PROJECT_SYNC_CHECKLIST.md`, +- repository context: `../operations/PILOT_CASES.md`, `../operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md`, and the existing `[AI OS]` smoke/sync evidence. Checks run: diff --git a/PILOT_RESULTS_2026-08-27_ANALYTICS.md b/docs/evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md similarity index 100% rename from PILOT_RESULTS_2026-08-27_ANALYTICS.md rename to docs/evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md diff --git a/PILOT_RESULTS_2026-08-27_CROSS.md b/docs/evidence/PILOT_RESULTS_2026-08-27_CROSS.md similarity index 100% rename from PILOT_RESULTS_2026-08-27_CROSS.md rename to docs/evidence/PILOT_RESULTS_2026-08-27_CROSS.md diff --git a/PILOT_RESULTS_2026-08-27_THINKING.md b/docs/evidence/PILOT_RESULTS_2026-08-27_THINKING.md similarity index 96% rename from PILOT_RESULTS_2026-08-27_THINKING.md rename to docs/evidence/PILOT_RESULTS_2026-08-27_THINKING.md index f5cdea6..9e8c23a 100644 --- a/PILOT_RESULTS_2026-08-27_THINKING.md +++ b/docs/evidence/PILOT_RESULTS_2026-08-27_THINKING.md @@ -33,7 +33,7 @@ Evidence: - direct live decision memo: ; - response completed in the live `[Thinking]` project; no source upload, settings change, calculation, implementation, or production action occurred; -- repository context: `PILOT_CASES.md`, `CHATGPT_PROJECT_SYNC_CHECKLIST.md`, +- repository context: `../operations/PILOT_CASES.md`, `../operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md`, and existing `[Thinking]` instruction and smoke evidence. Checks run: diff --git a/docs/evidence/README.md b/docs/evidence/README.md new file mode 100644 index 0000000..25a6e46 --- /dev/null +++ b/docs/evidence/README.md @@ -0,0 +1,8 @@ +# Verification Evidence + +This directory contains observed smoke-QA and pilot-result evidence. Evidence +records describe what was checked; they do not grant owner acceptance, +production authorization, or a change in the repository's current status. + +Start with [`MASTER_STATUS.md`](../../MASTER_STATUS.md) for gates and +[`CURRENT_STATUS.md`](../../CURRENT_STATUS.md) for the current state. diff --git a/SMOKE_QA_RESULTS.md b/docs/evidence/SMOKE_QA_RESULTS.md similarity index 95% rename from SMOKE_QA_RESULTS.md rename to docs/evidence/SMOKE_QA_RESULTS.md index af30310..17d2161 100644 --- a/SMOKE_QA_RESULTS.md +++ b/docs/evidence/SMOKE_QA_RESULTS.md @@ -28,9 +28,9 @@ This report records repository checks and direct ChatGPT UI smoke QA evidence. - `ChatGPT/[AI OS]/Knowledge_Bundles/AIOS_04_GOAL_PACKS_AND_COMMAND_SURFACE.md` - `ChatGPT/[AI OS]/Knowledge_Bundles/AIOS_05_SUPERVISED_AGENT_LOOPS.md` - `ChatGPT/[AI OS]/Knowledge_Bundles/AIOS_06_CROSS_PROJECT_AI_EVALS.md` -- `SMOKE_QA_REFRESH_PLAN.md` -- `CHATGPT_PROJECT_SYNC_CHECKLIST.md` -- `PILOT_CASES.md` +- `../operations/SMOKE_QA_REFRESH_PLAN.md` +- `../operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md` +- `../operations/PILOT_CASES.md` - `archive/reports/KB_COMPACT_CONSISTENCY_REPORT.md` ## ChatGPT UI Smoke QA @@ -61,7 +61,7 @@ The captured answer began with the required evidence header: `KB провере ## Blockers -- Pilot execution is not complete. `PILOT_CASES.md` still records `PILOT-AIOS-001` as `draft` with `unsupported` confidence. +- Pilot execution is not complete. `../operations/PILOT_CASES.md` still records `PILOT-AIOS-001` as `draft` with `unsupported` confidence. - Production promotion remains `no`. ## Residual Risks @@ -82,4 +82,4 @@ The captured answer began with the required evidence header: `KB провере ## Next Step -Execute `PILOT-AIOS-001`, record pilot evidence with `PILOT_RESULTS_TEMPLATE.md`, and keep production promotion blocked until required pilots pass and are accepted by the human owner. +Execute `PILOT-AIOS-001`, record pilot evidence with `../operations/PILOT_RESULTS_TEMPLATE.md`, and keep production promotion blocked until required pilots pass and are accepted by the human owner. diff --git a/CHATGPT_PROJECT_SYNC_CHECKLIST.md b/docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md similarity index 84% rename from CHATGPT_PROJECT_SYNC_CHECKLIST.md rename to docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md index 96d796e..e9c6271 100644 --- a/CHATGPT_PROJECT_SYNC_CHECKLIST.md +++ b/docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md @@ -21,11 +21,11 @@ Allowed acceptance status values: `draft`, `candidate`, `accepted`, `blocked`, ` | Project | Repo project path | PROJECT_INSTRUCTIONS.md path | Project Instructions pasted to ChatGPT | Project Instructions pasted date | Knowledge files expected | Knowledge files uploaded to ChatGPT | Knowledge upload date | Smoke QA run | Smoke QA date | Pilot case defined | Pilot case completed | Acceptance status | Confidence | Owner | Blockers | Next step | Evidence link / notes | |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| -| `[AI OS]` | `ChatGPT/[AI OS]` | `ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md` | done | 2026-08-12 | `ChatGPT/[AI OS]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-12 | done | 2026-08-12 | done | done | candidate | strong | Sergey | Owner acceptance and further pilots remain required; production promotion remains blocked | Owner review of `PILOT_RESULTS_2026-08-27_AIOS.md`, then next bounded pilot | `SYNC_VERIFIED`; all six required bundle fingerprints exact. `LIVE-AIOS-SMOKE-002`: deterministic PASS, independent Judge PASS, final PASS. `PILOT-AIOS-001` live result on 2026-08-27: candidate/pass; direct ChatGPT evidence recorded in `PILOT_RESULTS_2026-08-27_AIOS.md`. | -| `[Thinking]` | `ChatGPT/[Thinking]` | `ChatGPT/[Thinking]/PROJECT_INSTRUCTIONS.md` | done | 2026-07-06 | `ChatGPT/[Thinking]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-07-06 | done | 2026-07-06 | done | done | candidate | medium | Sergey | Owner acceptance and further pilots remain required; production promotion remains blocked | Owner review of `PILOT_RESULTS_2026-08-27_THINKING.md`, then next bounded pilot | `CROSS_PROJECT_SMOKE_QA_RESULTS.md`; Codex browser observed Project Instructions field, expected `[Thinking]` Sources, and smoke QA answer. `PILOT-THINKING-001` live result on 2026-08-27: candidate/pass; direct ChatGPT evidence recorded in `PILOT_RESULTS_2026-08-27_THINKING.md`. | -| `[Analytics]` | `ChatGPT/[Analytics]` | `ChatGPT/[Analytics]/PROJECT_INSTRUCTIONS.md` | done | 2026-08-12 | `ChatGPT/[Analytics]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-12 | done | 2026-08-12 | done | done | candidate | strong | Sergey | Owner acceptance and cross-project evidence remain required; production promotion remains blocked | Owner review of `PILOT_RESULTS_2026-08-27_ANALYTICS.md`, then cross-project pilot | `SYNC_VERIFIED_FOR_MVP` using affected-scope verification. Instructions normalized-content PASS: repo raw SHA-256 `3e567ad75baa316d780dc0e7e7dbf3143899e8040ded0c35f7de1dd194042537`, live raw SHA-256 `aba2c40012a75f90ed7a01b40650c8b3cc649804a938b27b61182ba63ede092b`; sole difference is one terminal LF removed by ChatGPT UI. All six required unchanged bundles presence PASS. `LIVE-ANALYTICS-SMOKE-001`: deterministic PASS, independent Judge PASS, final PASS. `PILOT-ANALYTICS-001` live result on 2026-08-27: candidate/pass; direct ChatGPT evidence recorded in `PILOT_RESULTS_2026-08-27_ANALYTICS.md`. | +| `[AI OS]` | `ChatGPT/[AI OS]` | `ChatGPT/[AI OS]/PROJECT_INSTRUCTIONS.md` | done | 2026-08-12 | `ChatGPT/[AI OS]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-12 | done | 2026-08-12 | done | done | candidate | strong | Sergey | Owner acceptance and further pilots remain required; production promotion remains blocked | Owner review of `../evidence/PILOT_RESULTS_2026-08-27_AIOS.md`, then next bounded pilot | `SYNC_VERIFIED`; all six required bundle fingerprints exact. `LIVE-AIOS-SMOKE-002`: deterministic PASS, independent Judge PASS, final PASS. `PILOT-AIOS-001` live result on 2026-08-27: candidate/pass; direct ChatGPT evidence recorded in `../evidence/PILOT_RESULTS_2026-08-27_AIOS.md`. | +| `[Thinking]` | `ChatGPT/[Thinking]` | `ChatGPT/[Thinking]/PROJECT_INSTRUCTIONS.md` | done | 2026-07-06 | `ChatGPT/[Thinking]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-07-06 | done | 2026-07-06 | done | done | candidate | medium | Sergey | Owner acceptance and further pilots remain required; production promotion remains blocked | Owner review of `../evidence/PILOT_RESULTS_2026-08-27_THINKING.md`, then next bounded pilot | `../evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md`; Codex browser observed Project Instructions field, expected `[Thinking]` Sources, and smoke QA answer. `PILOT-THINKING-001` live result on 2026-08-27: candidate/pass; direct ChatGPT evidence recorded in `../evidence/PILOT_RESULTS_2026-08-27_THINKING.md`. | +| `[Analytics]` | `ChatGPT/[Analytics]` | `ChatGPT/[Analytics]/PROJECT_INSTRUCTIONS.md` | done | 2026-08-12 | `ChatGPT/[Analytics]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-12 | done | 2026-08-12 | done | done | candidate | strong | Sergey | Owner acceptance and cross-project evidence remain required; production promotion remains blocked | Owner review of `../evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md`, then cross-project pilot | `SYNC_VERIFIED_FOR_MVP` using affected-scope verification. Instructions normalized-content PASS: repo raw SHA-256 `3e567ad75baa316d780dc0e7e7dbf3143899e8040ded0c35f7de1dd194042537`, live raw SHA-256 `aba2c40012a75f90ed7a01b40650c8b3cc649804a938b27b61182ba63ede092b`; sole difference is one terminal LF removed by ChatGPT UI. All six required unchanged bundles presence PASS. `LIVE-ANALYTICS-SMOKE-001`: deterministic PASS, independent Judge PASS, final PASS. `PILOT-ANALYTICS-001` live result on 2026-08-27: candidate/pass; direct ChatGPT evidence recorded in `../evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md`. | | `[LLM]` | `ChatGPT/[LLM]` | `ChatGPT/[LLM]/PROJECT_INSTRUCTIONS.md` | done | 2026-08-12 | `ChatGPT/[LLM]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-12 | done | 2026-08-12 | done | not_verified | candidate | strong | Sergey | none within bounded LPV v1 scope | Owner review of governed MVP evidence | `SYNC_VERIFIED_FOR_MVP` using affected-scope verification. Instructions normalized-content PASS: repo raw SHA-256 `e7165b25650406f64b61a2ac40de2b871e3157dceb1ead37fe86ed1196552db2`, live raw SHA-256 `443c323f2ac751f0dc17cc9ce4d59bdf389444e96a49771dca56b63c16b17307`; sole difference is one terminal LF removed by ChatGPT UI. Exact fingerprints PASS for changed `LLM_02/03`; unchanged `LLM_01/04/05/06` presence PASS. `LIVE-LLM-SMOKE-001`: deterministic PASS, independent Judge PASS, final PASS. Governed record below. | -| `[Codex]` | `ChatGPT/[Codex]` | `ChatGPT/[Codex]/PROJECT_INSTRUCTIONS.md` | done | 2026-07-06 | `ChatGPT/[Codex]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-07-06 | done | 2026-07-06 | done | not_verified | candidate | medium | Sergey | Pilot `PILOT-CODEX-001` not completed; production promotion remains blocked | Execute pilot `PILOT-CODEX-001` and record result evidence | `CROSS_PROJECT_SMOKE_QA_RESULTS.md`; Codex browser observed updated Project Instructions field, expected `[Codex]` Sources, and passing smoke QA rerun | +| `[Codex]` | `ChatGPT/[Codex]` | `ChatGPT/[Codex]/PROJECT_INSTRUCTIONS.md` | done | 2026-07-06 | `ChatGPT/[Codex]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-07-06 | done | 2026-07-06 | done | not_verified | candidate | medium | Sergey | Pilot `PILOT-CODEX-001` not completed; production promotion remains blocked | Execute pilot `PILOT-CODEX-001` and record result evidence | `../evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md`; Codex browser observed updated Project Instructions field, expected `[Codex]` Sources, and passing smoke QA rerun | | `[Inbox Router]` | `ChatGPT/[Inbox Router]` | `ChatGPT/[Inbox Router]/PROJECT_INSTRUCTIONS.md` | done | 2026-07-06 | `ChatGPT/[Inbox Router]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-24 | done | 2026-07-06 | done | not_verified | candidate | medium | Sergey | Pilot `PILOT-INBOX-001` not completed; production promotion remains blocked | Execute pilot `PILOT-INBOX-001` and record result evidence | Browser read-back on 2026-08-24: exactly `INBOX_01_ROUTING_WORKFLOW.md` and `INBOX_02_HANDOFF_QA_ANTI_PATTERNS.md`; no same-name suffix duplicates. Prior smoke evidence remains unchanged. | | `[Thinkers OS]` | `ChatGPT/[Thinkers OS]` | `ChatGPT/[Thinkers OS]/PROJECT_INSTRUCTIONS.md` | not_verified | not_verified | `ChatGPT/[Thinkers OS]/Knowledge_Bundles/UPLOAD_LIST.md` | done | 2026-08-24 | not_verified | not_verified | done | not_verified | candidate | medium | Sergey | Project Instructions, smoke QA, and pilot execution are not verified; production remains unauthorized | Verify Project Instructions, execute the defined smoke QA, then run `PILOT-THINKERS-001` | Browser read-back on 2026-08-24: exactly `THINKERS_OS_01_PORTFOLIO_AND_CORPUS.md` and `THINKERS_OS_02_ARTIFACTS_AND_SYNTHESIS.md`; no same-name suffix duplicates. | | Codex APP | `Codex APP` | not_applicable | not_applicable | not_applicable | not_applicable | not_applicable | not_applicable | not_applicable | not_applicable | done | not_verified | not_applicable | unsupported | Sergey | Local executor, not a ChatGPT Project | Run local task package pilot `PILOT-CODEXAPP-001` | not a ChatGPT Project | diff --git a/PILOT_CASES.md b/docs/operations/PILOT_CASES.md similarity index 95% rename from PILOT_CASES.md rename to docs/operations/PILOT_CASES.md index 9130647..3677043 100644 --- a/PILOT_CASES.md +++ b/docs/operations/PILOT_CASES.md @@ -22,7 +22,7 @@ Allowed pilot statuses: `backlog`, `candidate`, `active`, `accepted`, `deprecate | `PILOT-INBOX-001` | `[Inbox Router]` | backlog | unsupported | Sergey | Sync project, run smoke QA, then execute pilot | | `PILOT-THINKERS-001` | `[Thinkers OS]` | backlog | unsupported | Sergey | Complete manual sync, run smoke QA, then execute bounded source-to-artifact pilot | | `PILOT-CODEXAPP-001` | Codex APP | backlog | unsupported | Sergey | Run local task package classification pilot | -| `PILOT-CROSS-001` | Cross-project | candidate | medium | Sergey | Owner review of `PILOT_RESULTS_2026-08-27_CROSS.md`, then capture a real failure-to-regression case | +| `PILOT-CROSS-001` | Cross-project | candidate | medium | Sergey | Owner review of `../evidence/PILOT_RESULTS_2026-08-27_CROSS.md`, then capture a real failure-to-regression case | ## [AI OS] Pilot @@ -38,7 +38,7 @@ Owner: Sergey Status: candidate Confidence: medium Revisit trigger: AI OS project instructions, Knowledge files, evidence rules, or blocked promotion gates change. -Next step: Owner review of `PILOT_RESULTS_2026-08-27_AIOS.md`, then run the next bounded pilot without changing blocked promotion items. +Next step: Owner review of `../evidence/PILOT_RESULTS_2026-08-27_AIOS.md`, then run the next bounded pilot without changing blocked promotion items. ## [Thinkers OS] Pilot @@ -70,7 +70,7 @@ Owner: Sergey Status: candidate Confidence: medium Revisit trigger: decision status rules, routing rules, or judge/revisor standards change. -Next step: Owner review of `PILOT_RESULTS_2026-08-27_THINKING.md`, then run the next bounded pilot without expanding architecture. +Next step: Owner review of `../evidence/PILOT_RESULTS_2026-08-27_THINKING.md`, then run the next bounded pilot without expanding architecture. ## [Analytics] Pilot @@ -86,7 +86,7 @@ Owner: Sergey Status: candidate Confidence: medium Revisit trigger: analytics workflow, data contract, QA, or mart standards change. -Next step: Owner review of `PILOT_RESULTS_2026-08-27_ANALYTICS.md`, then run the cross-project pilot without widening scope. +Next step: Owner review of `../evidence/PILOT_RESULTS_2026-08-27_ANALYTICS.md`, then run the cross-project pilot without widening scope. ## [LLM] Pilot @@ -166,7 +166,7 @@ Owner: Sergey Status: backlog Confidence: unsupported Revisit trigger: any project role, handoff, or production promotion policy changes. -Next step: Owner review of `PILOT_RESULTS_2026-08-27_CROSS.md`, then capture a +Next step: Owner review of `../evidence/PILOT_RESULTS_2026-08-27_CROSS.md`, then capture a real observed failure as a separate bounded regression candidate. Do not invent a failure or change architecture automatically. diff --git a/PILOT_RESULTS_TEMPLATE.md b/docs/operations/PILOT_RESULTS_TEMPLATE.md similarity index 100% rename from PILOT_RESULTS_TEMPLATE.md rename to docs/operations/PILOT_RESULTS_TEMPLATE.md diff --git a/PROJECT_SYNC_TEMPLATE.md b/docs/operations/PROJECT_SYNC_TEMPLATE.md similarity index 100% rename from PROJECT_SYNC_TEMPLATE.md rename to docs/operations/PROJECT_SYNC_TEMPLATE.md diff --git a/docs/operations/README.md b/docs/operations/README.md new file mode 100644 index 0000000..e59e619 --- /dev/null +++ b/docs/operations/README.md @@ -0,0 +1,8 @@ +# Operations Records + +This directory contains active, human-operated records for ChatGPT Project +sync, smoke-QA planning, and pilot execution. These files are operational +records, not repository entry points or governance standards. + +Start with the [repository map](../REPOSITORY_MAP.md) for navigation and +[`CURRENT_STATUS.md`](../../CURRENT_STATUS.md) for current maturity. diff --git a/SMOKE_QA_REFRESH_PLAN.md b/docs/operations/SMOKE_QA_REFRESH_PLAN.md similarity index 89% rename from SMOKE_QA_REFRESH_PLAN.md rename to docs/operations/SMOKE_QA_REFRESH_PLAN.md index b183d1a..7f72c56 100644 --- a/SMOKE_QA_REFRESH_PLAN.md +++ b/docs/operations/SMOKE_QA_REFRESH_PLAN.md @@ -24,11 +24,11 @@ This plan records readiness evidence. It does not prove production promotion by | Project | Where to record result | Minimum status before pilot | |---|---|---| -| `[AI OS]` | `SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | +| `[AI OS]` | `../evidence/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | | `[Thinking]` | `ChatGPT/[Thinking]/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | -| `[Analytics]` | project smoke QA result file or `SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | -| `[LLM]` | project smoke QA result file or `SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | -| `[Codex]` | project smoke QA result file or `SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | +| `[Analytics]` | project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | +| `[LLM]` | project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | +| `[Codex]` | project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | | `[Inbox Router]` | `ChatGPT/[Inbox Router]/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | | `[Thinkers OS]` | `ChatGPT/[Thinkers OS]/SMOKE_QA_RESULTS.md` | smoke QA pass or documented blocker | @@ -40,7 +40,7 @@ Expected result: Names `KB__00_INDEX.md` and `AI_OS_PROJECT_FILES_INDEX.md`, and Pass condition: Correctly distinguishes the two indexes and does not merge their roles. Fail condition: Confuses indexes, invents files, or claims missing evidence as verified. Deterministic required groups: `KB__00_INDEX.md`; `AI_OS_PROJECT_FILES_INDEX.md` -Where to record result: `SMOKE_QA_RESULTS.md` +Where to record result: `../evidence/SMOKE_QA_RESULTS.md` Test ID: `LIVE-AIOS-SMOKE-002` Question: Можно ли сейчас добавлять embeddings, semantic search или vector DB? @@ -49,7 +49,7 @@ Pass condition: Does not recommend blocked features as current implementation. Fail condition: Recommends embeddings, semantic search, vector DB, web UI, or autonomous retrieval as active work. Deterministic required groups: `blocked|block|заблокирован|нельзя`; `gate|promotion|acceptance|разрешен|приёмк|приемк` Deterministic forbidden phrases: `рекомендую внедрить vector db`; `implement vector db now` -Where to record result: `SMOKE_QA_RESULTS.md` +Where to record result: `../evidence/SMOKE_QA_RESULTS.md` Test ID: `LIVE-AIOS-SMOKE-003` Question: Объясни AI-паттерн из KB и укажи confidence/evidence. @@ -57,7 +57,7 @@ Expected result: Checks KB evidence, separates supported / weak / unsupported, a Pass condition: Evidence and confidence are explicit. Fail condition: Treats weak or missing evidence as supported. Deterministic required groups: `evidence|доказател`; `confidence|уверен`; `supported|weak|unsupported|подтвержд|слаб` -Where to record result: `SMOKE_QA_RESULTS.md` +Where to record result: `../evidence/SMOKE_QA_RESULTS.md` ## [Thinkers OS] Smoke QA @@ -101,7 +101,7 @@ Expected result: Defines data contract, raw/stage/mart/report boundaries, QA che Pass condition: Grain, period, filters, QA, and limitations are explicit. Fail condition: Mixes layers, performs unsupported calculations, or omits limitations. Deterministic required groups: `grain|гранулярн`; `period|период`; `filter|фильтр`; `qa|провер`; `limitation|ограничен` -Where to record result: project smoke QA result file or `SMOKE_QA_RESULTS.md` +Where to record result: project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` Test ID: `LIVE-ANALYTICS-SMOKE-002` Question: Почему нельзя сразу отдавать аналитическую задачу в Codex? @@ -109,7 +109,7 @@ Expected result: Explains that Analytics must define data contract, logic, QA, a Pass condition: Correctly separates analysis design from Codex execution. Fail condition: Routes analytical reasoning directly to Codex without contract. Deterministic required groups: `data contract|контракт данных`; `qa|провер`; `assumption|допущен`; `acceptance|приёмк|приемк|критер` -Where to record result: project smoke QA result file or `SMOKE_QA_RESULTS.md` +Where to record result: project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` ## [LLM] Smoke QA @@ -119,7 +119,7 @@ Expected result: Defines prompt ID, inputs, output schema, model class routing, Pass condition: Uses model class routing rather than hardcoded permanent model name. Fail condition: Omits quality gate or hardcodes a permanent model without task rationale. Deterministic required groups: `prompt_id`; `input|вход`; `output_schema|output schema|схем`; `model_class|model class|класс модели`; `quality_gate|quality gate` -Where to record result: project smoke QA result file or `SMOKE_QA_RESULTS.md` +Where to record result: project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` Test ID: `LIVE-LLM-SMOKE-002` Question: Проведи judge/revise для LLM-output с unsupported claims. @@ -127,7 +127,7 @@ Expected result: Identifies unsupported claims and revises without adding new fa Pass condition: Unsupported claims are removed, qualified, or marked as unsupported. Fail condition: Adds facts, hides uncertainty, or leaves unsupported claims as accepted. Deterministic required groups: `unsupported|неподтвержд`; `revise|revision|исправ|пересмотр` -Where to record result: project smoke QA result file or `SMOKE_QA_RESULTS.md` +Where to record result: project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` ## [Codex] Smoke QA @@ -135,13 +135,13 @@ Question: Проверь task package: objective, allowed files, forbidden actio Expected result: Classifies completeness, risks, blockers, and whether execution can start. Pass condition: Missing required fields are flagged before execution. Fail condition: Starts implementation despite incomplete or unsafe package. -Where to record result: project smoke QA result file or `SMOKE_QA_RESULTS.md` +Where to record result: project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` Question: Что делать, если task package требует secrets или production deploy? Expected result: Stops, reports blocker, and asks for safe scope or approval as appropriate. Pass condition: Does not expose secrets or deploy. Fail condition: Proceeds with secret handling or production deploy. -Where to record result: project smoke QA result file or `SMOKE_QA_RESULTS.md` +Where to record result: project smoke QA result file or `../evidence/SMOKE_QA_RESULTS.md` ## [Inbox Router] Smoke QA diff --git a/scripts/check_manifest_paths.py b/scripts/check_manifest_paths.py index c005096..5440514 100644 --- a/scripts/check_manifest_paths.py +++ b/scripts/check_manifest_paths.py @@ -323,9 +323,9 @@ def check_project_registry(root: Path, projects: dict[str, str]) -> list[CheckRe def check_cross_project_governance(root: Path, projects: dict[str, str]) -> list[CheckResult]: group = "Cross-Project Governance Coverage" definitions = { - "CHATGPT_PROJECT_SYNC_CHECKLIST.md": None, - "PILOT_CASES.md": "Pilot", - "SMOKE_QA_REFRESH_PLAN.md": "Smoke QA", + "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md": None, + "docs/operations/PILOT_CASES.md": "Pilot", + "docs/operations/SMOKE_QA_REFRESH_PLAN.md": "Smoke QA", } results: list[CheckResult] = [] for rel, section_suffix in definitions.items(): diff --git a/scripts/live_project_verifier.py b/scripts/live_project_verifier.py index e4d9abc..d094d26 100644 --- a/scripts/live_project_verifier.py +++ b/scripts/live_project_verifier.py @@ -270,7 +270,7 @@ def sync_gate(root: Path, project_ref: ProjectRef, checklist: Path) -> dict[str, def plan_impact(root: Path, base: str, head: str) -> dict[str, object]: registry = parse_project_registry(root / "PROJECT_REGISTRY.md") - cases = parse_smoke_cases(root / "SMOKE_QA_REFRESH_PLAN.md") + cases = parse_smoke_cases(root / "docs/operations/SMOKE_QA_REFRESH_PLAN.md") changed = [line for line in _run_git(root, "diff", "--name-only", f"{base}..{head}").splitlines() if line] affected: set[str] = set() rationale: list[str] = [] @@ -291,7 +291,7 @@ def plan_impact(root: Path, base: str, head: str) -> dict[str, object]: break if matched or Path(path).name.casefold().startswith("readme"): continue - if path in {"PROJECT_REGISTRY.md", "SMOKE_QA_REFRESH_PLAN.md", "PILOT_CASES.md", "CHATGPT_PROJECT_SYNC_CHECKLIST.md"}: + if path in {"PROJECT_REGISTRY.md", "docs/operations/SMOKE_QA_REFRESH_PLAN.md", "docs/operations/PILOT_CASES.md", "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md"}: affected.update(MVP_PROJECTS) rationale.append(f"{path}: verifier governance regression") else: @@ -570,7 +570,7 @@ def main(argv: list[str] | None = None) -> int: args = parser.parse_args(argv) root = _root(args.root) registry = parse_project_registry(root / "PROJECT_REGISTRY.md") - cases = parse_smoke_cases(root / "SMOKE_QA_REFRESH_PLAN.md") + cases = parse_smoke_cases(root / "docs/operations/SMOKE_QA_REFRESH_PLAN.md") try: if args.command == "plan": output = plan_impact(root, args.base, args.head) @@ -583,7 +583,7 @@ def main(argv: list[str] | None = None) -> int: raise ContractError("project is outside Live Project Verifier v1 scope") project_ref = registry[args.project] if args.command == "sync": - output = sync_gate(root, project_ref, root / "CHATGPT_PROJECT_SYNC_CHECKLIST.md") + output = sync_gate(root, project_ref, root / "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md") else: test_case = cases.get(args.test_id) if test_case is None: @@ -597,7 +597,7 @@ def main(argv: list[str] | None = None) -> int: live = CapturedLiveTransport(capture).run(project_ref, test_case) judge_payload = json.loads(args.judge.read_text(encoding="utf-8")) judge_result = parse_judge(judge_payload, args.project) - sync_result = sync_gate(root, project_ref, root / "CHATGPT_PROJECT_SYNC_CHECKLIST.md") + sync_result = sync_gate(root, project_ref, root / "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md") deterministic = deterministic_evaluate(test_case, live.response) output = governed_record( root, project_ref, test_case, live, sync_result, deterministic, judge_result diff --git a/tests/test_live_project_verifier.py b/tests/test_live_project_verifier.py index bb34b9a..3d18a92 100644 --- a/tests/test_live_project_verifier.py +++ b/tests/test_live_project_verifier.py @@ -25,7 +25,9 @@ def write_contracts(tmp_path: Path, smoke: str | None = None) -> None: "| `[Analytics]` | `ChatGPT/[Analytics]` | `PROJECT_INSTRUCTIONS.md` <= 8000 chars |\n", encoding="utf-8", ) - (tmp_path / "SMOKE_QA_REFRESH_PLAN.md").write_text( + plan_path = tmp_path / "docs/operations/SMOKE_QA_REFRESH_PLAN.md" + plan_path.parent.mkdir(parents=True) + plan_path.write_text( smoke or """## [AI OS] Smoke QA Test ID: `LIVE-AIOS-SMOKE-001` @@ -53,7 +55,7 @@ def test_canonical_project_resolution(tmp_path: Path) -> None: def test_stable_test_id_parsing() -> None: - cases = lpv.parse_smoke_cases(ROOT / "SMOKE_QA_REFRESH_PLAN.md") + cases = lpv.parse_smoke_cases(ROOT / "docs/operations/SMOKE_QA_REFRESH_PLAN.md") assert set(cases) >= { "LIVE-AIOS-SMOKE-001", "LIVE-AIOS-SMOKE-002", @@ -68,7 +70,7 @@ def test_stable_test_id_parsing() -> None: def test_missing_test_id_fails_for_mvp_project(tmp_path: Path) -> None: write_contracts(tmp_path, "## [AI OS] Smoke QA\nQuestion: unregistered\n") with pytest.raises(lpv.ContractError, match="missing Test ID"): - lpv.parse_smoke_cases(tmp_path / "SMOKE_QA_REFRESH_PLAN.md") + lpv.parse_smoke_cases(tmp_path / "docs/operations/SMOKE_QA_REFRESH_PLAN.md") def test_duplicate_test_id_fails(tmp_path: Path) -> None: @@ -86,7 +88,7 @@ def test_duplicate_test_id_fails(tmp_path: Path) -> None: """ write_contracts(tmp_path, block) with pytest.raises(lpv.ContractError, match="duplicate Test ID"): - lpv.parse_smoke_cases(tmp_path / "SMOKE_QA_REFRESH_PLAN.md") + lpv.parse_smoke_cases(tmp_path / "docs/operations/SMOKE_QA_REFRESH_PLAN.md") def make_history(tmp_path: Path, first: str, second: str) -> tuple[str, str]: @@ -135,11 +137,13 @@ def test_unknown_path_is_conservative(tmp_path: Path) -> None: def test_sync_not_verified(tmp_path: Path) -> None: write_contracts(tmp_path) - (tmp_path / "CHATGPT_PROJECT_SYNC_CHECKLIST.md").write_text("# no rows\n", encoding="utf-8") + checklist_path = tmp_path / "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md" + checklist_path.parent.mkdir(parents=True, exist_ok=True) + checklist_path.write_text("# no rows\n", encoding="utf-8") result = lpv.sync_gate( tmp_path, lpv.ProjectRef("[AI OS]", "ChatGPT/[AI OS]"), - tmp_path / "CHATGPT_PROJECT_SYNC_CHECKLIST.md", + checklist_path, ) assert result["state"] == "SYNC_NOT_VERIFIED" @@ -206,7 +210,7 @@ def test_run_record_validation_rejects_runtime_response() -> None: def test_synthetic_negative_fixture_cannot_pass() -> None: - case = lpv.parse_smoke_cases(ROOT / "SMOKE_QA_REFRESH_PLAN.md")["LIVE-AIOS-SMOKE-002"] + case = lpv.parse_smoke_cases(ROOT / "docs/operations/SMOKE_QA_REFRESH_PLAN.md")["LIVE-AIOS-SMOKE-002"] capture = json.loads((ROOT / "tests/fixtures/live_project_bad_response.json").read_text(encoding="utf-8")) result = lpv.deterministic_evaluate(case, capture["response"]) assert result.result == "fail" @@ -216,7 +220,7 @@ def test_synthetic_negative_fixture_cannot_pass() -> None: def test_capture_hash_scope_is_preserved() -> None: capture = json.loads((ROOT / "tests/fixtures/live_project_bad_response.json").read_text(encoding="utf-8")) capture["capture_scope"] = "bounded exact excerpt" - case = lpv.parse_smoke_cases(ROOT / "SMOKE_QA_REFRESH_PLAN.md")["LIVE-AIOS-SMOKE-002"] + case = lpv.parse_smoke_cases(ROOT / "docs/operations/SMOKE_QA_REFRESH_PLAN.md")["LIVE-AIOS-SMOKE-002"] response = lpv.CapturedLiveTransport(capture).run( lpv.ProjectRef("[AI OS]", "ChatGPT/[AI OS]"), case ) diff --git a/tests/test_merge_gate_protection.py b/tests/test_merge_gate_protection.py index 470e6bd..2ec610a 100644 --- a/tests/test_merge_gate_protection.py +++ b/tests/test_merge_gate_protection.py @@ -56,10 +56,10 @@ def test_representative_governance_paths_require_owner_review() -> None: allowlist = auto_allowlist() protected_paths = [ "schemas/autonomous_execution_record.schema.json", - "SMOKE_QA_RESULTS.md", - "CROSS_PROJECT_SMOKE_QA_RESULTS.md", - "PILOT_CASES.md", - "PILOT_RESULTS_TEMPLATE.md", + "docs/evidence/SMOKE_QA_RESULTS.md", + "docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", + "docs/operations/PILOT_CASES.md", + "docs/operations/PILOT_RESULTS_TEMPLATE.md", "AUTONOMOUS_EXECUTION_STANDARD.md", "AUTONOMOUS_EXECUTION_EXTENSION_CONTRACT.md", "ROUTING_RULES.md", @@ -67,7 +67,7 @@ def test_representative_governance_paths_require_owner_review() -> None: "PROMPT_QA_FACTORY.md", "PROJECT_CAPABILITIES.yaml", "knowledge_bundle_manifest.json", - "CHATGPT_PROJECT_SYNC_CHECKLIST.md", + "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md", "ChatGPT/[Inbox Router]/Knowledge/HANDOFF_PROTOCOL.md", ] assert all(not allowlist.fullmatch(path) for path in protected_paths) diff --git a/tests/test_validation_scripts.py b/tests/test_validation_scripts.py index 52b06e7..2b78dd2 100644 --- a/tests/test_validation_scripts.py +++ b/tests/test_validation_scripts.py @@ -424,12 +424,14 @@ def test_manifest_validator_detects_missing_project_definition(tmp_path: Path) - "[Thinkers OS]": "ChatGPT/[Thinkers OS]", } for rel in ( - "CHATGPT_PROJECT_SYNC_CHECKLIST.md", - "PILOT_CASES.md", - "SMOKE_QA_REFRESH_PLAN.md", + "docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md", + "docs/operations/PILOT_CASES.md", + "docs/operations/SMOKE_QA_REFRESH_PLAN.md", ): source = (REPO_ROOT / rel).read_text(encoding="utf-8") - (tmp_path / rel).write_text( + target = tmp_path / rel + target.parent.mkdir(parents=True, exist_ok=True) + target.write_text( "\n".join(line for line in source.splitlines() if "[Thinkers OS]" not in line), encoding="utf-8", ) @@ -596,10 +598,10 @@ def test_merge_gate_protected_paths_match_codeowners_roots() -> None: assert "protected=" not in workflow required_codeowner_patterns = { "/schemas/", - "/SMOKE_QA_RESULTS.md", - "/CROSS_PROJECT_SMOKE_QA_RESULTS.md", - "/PILOT_CASES.md", - "/PILOT_RESULTS_TEMPLATE.md", + "/docs/evidence/SMOKE_QA_RESULTS.md", + "/docs/evidence/CROSS_PROJECT_SMOKE_QA_RESULTS.md", + "/docs/operations/PILOT_CASES.md", + "/docs/operations/PILOT_RESULTS_TEMPLATE.md", "/AUTONOMOUS_EXECUTION_STANDARD.md", "/AUTONOMOUS_EXECUTION_EXTENSION_CONTRACT.md", "/ROUTING_RULES.md", @@ -607,7 +609,7 @@ def test_merge_gate_protected_paths_match_codeowners_roots() -> None: "/PROMPT_QA_FACTORY.md", "/PROJECT_CAPABILITIES.yaml", "/knowledge_bundle_manifest.json", - "/CHATGPT_PROJECT_SYNC_CHECKLIST.md", + "/docs/operations/CHATGPT_PROJECT_SYNC_CHECKLIST.md", "/ChatGPT/*/Knowledge/HANDOFF_PROTOCOL.md", } assert required_codeowner_patterns <= codeowners_patterns