its-magic 0.1.2-9 → 0.1.3-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1602 -755
- package/bin/its-magic.js +121 -11
- package/bin/postinstall.js +93 -0
- package/installer.ps1 +759 -0
- package/installer.py +1036 -0
- package/installer.sh +649 -0
- package/package.json +18 -14
- package/scripts/check_intake_template_parity.py +312 -0
- package/scripts/doc_profile_lib.py +415 -0
- package/scripts/guard_installer_publish.py +88 -0
- package/scripts/intake_bug_routing_guard.py +67 -0
- package/scripts/intake_evidence_lib.py +802 -0
- package/scripts/intake_evidence_validate.py +73 -0
- package/scripts/materialize_codebase_map.py +184 -0
- package/scripts/remote_config_summary.py +243 -0
- package/template/.cursor/agents/curator.mdc +35 -0
- package/template/.cursor/agents/dev.mdc +29 -0
- package/template/.cursor/agents/po.mdc +141 -0
- package/template/.cursor/agents/qa.mdc +28 -0
- package/template/.cursor/agents/release.mdc +28 -0
- package/template/.cursor/agents/security.mdc +98 -0
- package/template/.cursor/agents/tech-lead.mdc +57 -0
- package/template/.cursor/commands/architecture.md +127 -0
- package/template/.cursor/commands/ask.md +55 -0
- package/template/.cursor/commands/auto.md +533 -0
- package/template/.cursor/commands/discovery.md +47 -0
- package/template/.cursor/commands/execute.md +343 -0
- package/template/.cursor/commands/intake.md +323 -0
- package/template/.cursor/commands/map-codebase.md +46 -0
- package/template/.cursor/commands/memory-audit.md +175 -0
- package/template/.cursor/commands/milestone-complete.md +51 -0
- package/template/.cursor/commands/milestone-start.md +59 -0
- package/template/.cursor/commands/pause.md +64 -0
- package/{.cursor/commands/gsd-phase-context.md → template/.cursor/commands/phase-context.md} +6 -2
- package/template/.cursor/commands/plan-verify.md +34 -0
- package/template/.cursor/commands/qa.md +226 -0
- package/template/.cursor/commands/quick.md +41 -0
- package/template/.cursor/commands/refresh-context.md +82 -0
- package/template/.cursor/commands/release.md +523 -0
- package/template/.cursor/commands/research.md +49 -0
- package/template/.cursor/commands/resume.md +67 -0
- package/template/.cursor/commands/security-review.md +81 -0
- package/template/.cursor/commands/sprint-plan.md +103 -0
- package/template/.cursor/commands/status-reconcile.md +95 -0
- package/template/.cursor/commands/verify-work.md +152 -0
- package/template/.cursor/dev-environment.json.example +22 -0
- package/{.cursor → template/.cursor}/hooks/README.md +3 -2
- package/{.cursor/hooks/gsd-hook.py → template/.cursor/hooks/hook.py} +15 -6
- package/template/.cursor/hooks.json +26 -0
- package/template/.cursor/remote.json +31 -0
- package/template/.cursor/rules/caveman.mdc +184 -0
- package/template/.cursor/rules/coding-standards.mdc +39 -0
- package/template/.cursor/rules/core.mdc +111 -0
- package/template/.cursor/rules/handoffs.mdc +27 -0
- package/template/.cursor/rules/quality.mdc +49 -0
- package/template/.cursor/scratchpad.local.example.md +323 -0
- package/template/.cursor/scratchpad.md +324 -0
- package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/SKILL.md +2 -2
- package/template/.cursorignore +6 -0
- package/template/.env.example +28 -0
- package/template/.github/workflows/ci.yml +194 -0
- package/{.github → template/.github}/workflows/deploy.yml +5 -2
- package/template/.its-magic-version +1 -0
- package/template/CHANGELOG.md +11 -0
- package/template/README.md +1602 -0
- package/template/decisions/DEC-0001.md +11 -0
- package/template/decisions/DEC-0002.md +11 -0
- package/template/docs/developer/README.md +44 -0
- package/template/docs/engineering/architecture.md +9 -0
- package/template/docs/engineering/artifact-ordering-policy.md +48 -0
- package/template/docs/engineering/artifact-ownership-policy.md +57 -0
- package/template/docs/engineering/auto-orchestration-reference.md +1211 -0
- package/{docs → template/docs}/engineering/codebase-map.md +0 -5
- package/template/docs/engineering/compatibility-report.md +20 -0
- package/template/docs/engineering/compatibility-signals.md +7 -0
- package/template/docs/engineering/component-scope-report.md +16 -0
- package/template/docs/engineering/component-scope.md +19 -0
- package/template/docs/engineering/context/installer-owned-paths.manifest +96 -0
- package/template/docs/engineering/context/readme-section-affinity.json +30 -0
- package/template/docs/engineering/decisions.md +16 -0
- package/template/docs/engineering/legacy-drift-audit.md +21 -0
- package/template/docs/engineering/manifests/components/api-gateway.manifest.yaml +12 -0
- package/template/docs/engineering/manifests/registry.manifest.yaml +20 -0
- package/template/docs/engineering/manifests/repo.manifest.yaml +11 -0
- package/template/docs/engineering/phase-context.md +16 -0
- package/template/docs/engineering/release-targets.json +123 -0
- package/template/docs/engineering/research.md +29 -0
- package/template/docs/engineering/runbook.md +2391 -0
- package/template/docs/engineering/runtime-connectivity.md +81 -0
- package/template/docs/engineering/security-review.md +33 -0
- package/template/docs/engineering/spec-pack/README.md +20 -0
- package/template/docs/engineering/state-archive/README.md +15 -0
- package/template/docs/engineering/state.md +20 -0
- package/template/docs/engineering/status-normalization-report.md +19 -0
- package/template/docs/engineering/token-cost-parity-manifest.md +16 -0
- package/template/docs/engineering/us-0084-remote-e2e.md +44 -0
- package/template/docs/product/acceptance.md +1 -0
- package/template/docs/product/backlog.md +5 -0
- package/template/docs/product/vision.md +11 -0
- package/template/docs/user-guides/README.md +40 -0
- package/{handoffs → template/handoffs}/dev_to_qa.md +0 -3
- package/{handoffs → template/handoffs}/po_to_tl.md +0 -3
- package/{handoffs → template/handoffs}/qa_to_dev.md +1 -2
- package/template/handoffs/release_notes.md +51 -0
- package/template/handoffs/release_queue.md +47 -0
- package/template/handoffs/release_to_dev.md +31 -0
- package/template/handoffs/releases/Sxxxx-release-notes.md +62 -0
- package/template/handoffs/releases/vX.Y.Z-release-notes.md.example +21 -0
- package/template/handoffs/resume_brief.md +14 -0
- package/{handoffs → template/handoffs}/tl_to_dev.md +0 -2
- package/template/handoffs/token_cost_runs/README.md +26 -0
- package/template/its_magic/.its-magic-version +1 -0
- package/template/its_magic/README.md +9 -0
- package/template/scripts/auto_outer_driver.py +521 -0
- package/template/scripts/caveman_compress_input.py +903 -0
- package/template/scripts/check_downstream_ci_guard.py +67 -0
- package/template/scripts/check_intake_template_parity.py +312 -0
- package/template/scripts/check_token_cost_parity.py +69 -0
- package/template/scripts/dev_environment_lib.py +601 -0
- package/template/scripts/doc_profile_lib.py +415 -0
- package/template/scripts/downstream_ci_guard_lib.py +222 -0
- package/template/scripts/enforce-triad-hot-surface.py +753 -0
- package/template/scripts/guard_installer_publish.py +88 -0
- package/template/scripts/intake_bug_resume_brief_refresh.py +303 -0
- package/template/scripts/intake_bug_routing_guard.py +67 -0
- package/template/scripts/intake_evidence_lib.py +802 -0
- package/template/scripts/intake_evidence_validate.py +73 -0
- package/template/scripts/materialize_codebase_map.py +184 -0
- package/template/scripts/pack_json_validate.py +130 -0
- package/template/scripts/project_readme_coverage_lib.py +417 -0
- package/template/scripts/readme_feature_coverage_lib.py +608 -0
- package/{scripts → template/scripts}/release-all.sh +27 -4
- package/template/scripts/release_changelog_backfill.py +153 -0
- package/template/scripts/release_changelog_lib.py +544 -0
- package/template/scripts/release_changelog_validate.py +134 -0
- package/template/scripts/remote_config_summary.py +243 -0
- package/template/scripts/sync_push_gates.py +198 -0
- package/template/scripts/token_cost_compare.py +40 -0
- package/template/scripts/token_cost_lib.py +108 -0
- package/template/scripts/uat_probe_lib.py +868 -0
- package/template/scripts/validate-and-push.ps1 +280 -0
- package/template/scripts/validate-and-push.sh +243 -0
- package/template/scripts/validate_doc_profile.py +103 -0
- package/template/scripts/validate_project_readme_coverage.py +151 -0
- package/template/scripts/validate_readme_feature_coverage.py +140 -0
- package/template/sprints/S0001/progress.md +1 -0
- package/template/sprints/S0001/qa-findings.md +9 -0
- package/template/sprints/S0001/release-findings.md +24 -0
- package/template/sprints/S0001/sprint.md +9 -0
- package/template/sprints/S0001/summary.md +7 -0
- package/template/sprints/S0001/tasks.md +1 -0
- package/template/sprints/S0001/uat.json +6 -0
- package/template/sprints/S0001/uat.md +5 -0
- package/template/sprints/quick/Q0001/summary.md +1 -0
- package/{sprints → template/sprints}/quick/Q0001/task.json +0 -1
- package/.cursor/agents/curator.mdc +0 -21
- package/.cursor/agents/dev.mdc +0 -20
- package/.cursor/agents/po.mdc +0 -19
- package/.cursor/agents/qa.mdc +0 -19
- package/.cursor/agents/release.mdc +0 -19
- package/.cursor/agents/tech-lead.mdc +0 -21
- package/.cursor/commands/gsd-architecture.md +0 -29
- package/.cursor/commands/gsd-auto.md +0 -27
- package/.cursor/commands/gsd-discovery.md +0 -27
- package/.cursor/commands/gsd-execute.md +0 -32
- package/.cursor/commands/gsd-intake.md +0 -28
- package/.cursor/commands/gsd-map-codebase.md +0 -25
- package/.cursor/commands/gsd-milestone-complete.md +0 -24
- package/.cursor/commands/gsd-milestone-start.md +0 -26
- package/.cursor/commands/gsd-pause.md +0 -25
- package/.cursor/commands/gsd-plan-verify.md +0 -26
- package/.cursor/commands/gsd-qa.md +0 -28
- package/.cursor/commands/gsd-quick.md +0 -24
- package/.cursor/commands/gsd-refresh-context.md +0 -26
- package/.cursor/commands/gsd-release.md +0 -29
- package/.cursor/commands/gsd-research.md +0 -28
- package/.cursor/commands/gsd-resume.md +0 -26
- package/.cursor/commands/gsd-sprint-plan.md +0 -30
- package/.cursor/commands/gsd-verify-work.md +0 -25
- package/.cursor/hooks.json +0 -26
- package/.cursor/plans/cursor-gsd-team-kit_8cfee9b8.plan.md +0 -57
- package/.cursor/remote.json +0 -18
- package/.cursor/rules/gsd-core.mdc +0 -18
- package/.cursor/rules/gsd-handoffs.mdc +0 -10
- package/.cursor/rules/gsd-quality.mdc +0 -15
- package/.cursor/scratchpad.md +0 -34
- package/.github/workflows/ci.yml +0 -47
- package/decisions/DEC-0001.md +0 -21
- package/decisions/DEC-0002.md +0 -21
- package/docs/engineering/architecture.md +0 -354
- package/docs/engineering/decisions.md +0 -6
- package/docs/engineering/research.md +0 -11
- package/docs/engineering/runbook.md +0 -32
- package/docs/engineering/state.md +0 -33
- package/docs/product/acceptance.md +0 -6
- package/docs/product/backlog.md +0 -7
- package/docs/product/vision.md +0 -46
- package/gsd-installer.ps1 +0 -189
- package/gsd-installer.py +0 -195
- package/gsd-installer.sh +0 -201
- package/handoffs/release_notes.md +0 -14
- package/handoffs/resume_brief.md +0 -8
- package/milestones/M0001/milestone.json +0 -7
- package/milestones/M0001/phases.json +0 -9
- package/milestones/M0001/progress.md +0 -3
- package/milestones/M0001/summary.md +0 -3
- package/scripts/generate-release-notes.ps1 +0 -74
- package/scripts/generate-release-notes.sh +0 -63
- package/scripts/release-all.ps1 +0 -423
- package/sprints/S0001/progress.md +0 -4
- package/sprints/S0001/qa-findings.md +0 -113
- package/sprints/S0001/sprint.md +0 -70
- package/sprints/S0001/summary.md +0 -46
- package/sprints/S0001/tasks.md +0 -35
- package/sprints/S0001/uat.json +0 -8
- package/sprints/S0001/uat.md +0 -8
- package/sprints/quick/Q0001/summary.md +0 -3
- /package/{.cursor/rules/gsd-escalation.mdc → template/.cursor/rules/escalation.mdc} +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/acceptance.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/acceptance.md +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/architecture.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/architecture.md +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/decision.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/decision.md +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/handoff.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/handoff.md +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/milestone.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/phase-context.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/plan-verify.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/sprint.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/sprint.md +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/story.json +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/story.md +0 -0
- /package/{.cursor/skills/gsd-team → template/.cursor/skills/its-magic}/templates/uat.json +0 -0
- /package/{docs → template/docs}/engineering/context/phase-template.json +0 -0
- /package/{docs → template/docs}/engineering/dependencies.json +0 -0
- /package/{sprints → template/sprints}/S0001/plan-verify.json +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Runtime Connectivity
|
|
2
|
+
|
|
3
|
+
Canonical operator-facing connectivity summary for release and QA/runtime debug
|
|
4
|
+
contexts.
|
|
5
|
+
|
|
6
|
+
## Purpose
|
|
7
|
+
|
|
8
|
+
- Show where current targets are hosted (local vs remote).
|
|
9
|
+
- Provide connection instructions (domain/ip/port/protocol).
|
|
10
|
+
- Provide ingress/proxy metadata (for example Traefik) when configured.
|
|
11
|
+
- Preserve secret safety: never store secret values, only env-reference names.
|
|
12
|
+
|
|
13
|
+
## Source of truth
|
|
14
|
+
|
|
15
|
+
- `docs/engineering/release-targets.json`
|
|
16
|
+
|
|
17
|
+
## Operator summary template
|
|
18
|
+
|
|
19
|
+
For each enabled target include:
|
|
20
|
+
|
|
21
|
+
- `target_id`
|
|
22
|
+
- `target_type`
|
|
23
|
+
- `execution_mode` (`local|remote`)
|
|
24
|
+
- `connect_endpoint` (`protocol://domain:port` or `ip:port`)
|
|
25
|
+
- `ingress` (`traefik enabled/disabled`, router, entrypoint, tls)
|
|
26
|
+
- `docker_over_ssh` (enabled + context hints when configured)
|
|
27
|
+
- `release_context` (latest sprint/release note ref)
|
|
28
|
+
- `qa_context` (latest remote/local verification path)
|
|
29
|
+
|
|
30
|
+
## Security rules
|
|
31
|
+
|
|
32
|
+
- Do not write inline credentials/tokens/private keys.
|
|
33
|
+
- Only env reference names are permitted in connectivity artifacts.
|
|
34
|
+
- Redact auth details in handoffs and release outputs.
|
|
35
|
+
|
|
36
|
+
## `*Env` variable sourcing (US-0085 / DEC-0071)
|
|
37
|
+
|
|
38
|
+
Operators may populate `release-targets.json`-referenced `*Env` variables
|
|
39
|
+
(such as `SSH_HOST`, `DOCKER_TOKEN`, `AWS_PROFILE`, etc.) from a sourced
|
|
40
|
+
`.env` file at repository root. Values are never stored in JSON configs —
|
|
41
|
+
only env-reference **names** appear in committed artifacts. See
|
|
42
|
+
`docs/engineering/runbook.md` for the copy/source recipe and
|
|
43
|
+
`.env.example` for the full 20-name inventory.
|
|
44
|
+
|
|
45
|
+
## Dev/QA remote profiles vs `release-targets.json` (US-0084)
|
|
46
|
+
|
|
47
|
+
Use this table to map **where you run tests** to the **US-0064** release/QA
|
|
48
|
+
connectivity model (**no parallel schema**). Cursor/dev **`REMOTE_CONFIG`** is
|
|
49
|
+
documented in the runbook; it complements, not replaces, **`release-targets.json`**.
|
|
50
|
+
|
|
51
|
+
| Operator path | Maps in `release-targets.json` | Scratchpad / dev config |
|
|
52
|
+
|---------------|----------------------------------|-------------------------|
|
|
53
|
+
| **WSL** | Local Linux on the same machine — not a separate target row by default. | Usually **`REMOTE_EXECUTION=0`**. Cite **environment label** **`WSL`** in QA evidence. |
|
|
54
|
+
| **Bare SSH Linux** | **`ssh-server`**: `hostEnv`, `userEnv`, `authEnv`, `remoteCommand`, `runtime`, ingress. | **`REMOTE_EXECUTION=1`**, **`REMOTE_CONFIG=.cursor/remote.json`** (see **`.cursor/scratchpad.md`**). |
|
|
55
|
+
| **Docker-over-SSH** | **`ssh-server.dockerOverSsh`**: `dockerHostEnv`, `dockerContextEnv`, `composeFile`, `service`. | Same scratchpad keys; operator sets **`DOCKER_HOST`** / context using **env names** only in docs. |
|
|
56
|
+
|
|
57
|
+
### `docker_over_ssh` (operator summary)
|
|
58
|
+
|
|
59
|
+
When **`dockerOverSsh.enabled`** is true on **`ssh-server`**, connectivity flows
|
|
60
|
+
through SSH to a host where Docker commands run; **`dockerHostEnv`** and
|
|
61
|
+
**`dockerContextEnv`** name the operator env vars (values never pasted into
|
|
62
|
+
artifacts). **`composeFile`** and **`service`** identify the stack slice. Full
|
|
63
|
+
fields remain in **`docs/engineering/release-targets.json`** and **DEC-0044**.
|
|
64
|
+
|
|
65
|
+
## Optional deterministic CI routing recipe (US-0086)
|
|
66
|
+
|
|
67
|
+
This recipe is optional and applies only when automation routing is explicitly
|
|
68
|
+
enabled.
|
|
69
|
+
|
|
70
|
+
- Keep `AUTO_REMOTE_AUTOMATION_PROFILE=off` as the default in CI unless the
|
|
71
|
+
workflow intentionally opts into automation routing.
|
|
72
|
+
- Use deterministic path filters to set an execution label:
|
|
73
|
+
- `docker` label for container surfaces (`Dockerfile*`, `docker-compose*.yml`,
|
|
74
|
+
container runtime scripts)
|
|
75
|
+
- `ssh` label for ssh/deploy/runtime host scripts
|
|
76
|
+
- `local` label for all other changes
|
|
77
|
+
- If explicit NL intent `start container <target_id>` is provided by automation,
|
|
78
|
+
target-id resolution takes precedence over path filters.
|
|
79
|
+
- Emit names-only routing evidence:
|
|
80
|
+
`target_id`, `environment_label`, `automation_profile`, `routing_source`,
|
|
81
|
+
`secret_surface=names_only`.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Security Review
|
|
2
|
+
|
|
3
|
+
## Review metadata
|
|
4
|
+
- Timestamp:
|
|
5
|
+
- Mode: design | code
|
|
6
|
+
- Sprint:
|
|
7
|
+
- Compliance profiles:
|
|
8
|
+
|
|
9
|
+
## Findings
|
|
10
|
+
|
|
11
|
+
### [Severity: critical|high|medium|low] - [Title]
|
|
12
|
+
- Component:
|
|
13
|
+
- Description:
|
|
14
|
+
- Risk:
|
|
15
|
+
- Remediation:
|
|
16
|
+
- Status: open | blocking | resolved | accepted | deferred
|
|
17
|
+
- Decision reference:
|
|
18
|
+
|
|
19
|
+
## Blockers
|
|
20
|
+
- None.
|
|
21
|
+
|
|
22
|
+
## Recommended actions
|
|
23
|
+
- Add prioritized remediation actions here.
|
|
24
|
+
|
|
25
|
+
## Summary
|
|
26
|
+
- Critical: 0
|
|
27
|
+
- High: 0
|
|
28
|
+
- Medium: 0
|
|
29
|
+
- Low: 0
|
|
30
|
+
- Overall: pass | fail
|
|
31
|
+
|
|
32
|
+
> Findings are AI-guided review support and are not a compliance certification.
|
|
33
|
+
> Human expert validation is recommended for production compliance decisions.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Spec-pack (US-0031)
|
|
2
|
+
|
|
3
|
+
When `SPEC_PACK_MODE=1` in `.cursor/scratchpad.md`, the workflow creates/updates
|
|
4
|
+
three artifacts per story at these canonical paths:
|
|
5
|
+
|
|
6
|
+
- `docs/engineering/spec-pack/<story_id>-design-concept.md`
|
|
7
|
+
- `docs/engineering/spec-pack/<story_id>-crs.md`
|
|
8
|
+
- `docs/engineering/spec-pack/<story_id>-technical-specification.md`
|
|
9
|
+
|
|
10
|
+
Traceability: backlog story ID → the three paths above.
|
|
11
|
+
|
|
12
|
+
Minimum required sections (see `docs/engineering/runbook.md` for validation and
|
|
13
|
+
ownership):
|
|
14
|
+
|
|
15
|
+
- Design Concept: Summary, Goals, Non-goals, Key decisions
|
|
16
|
+
- CRS: Purpose, Scope, Acceptance criteria ref
|
|
17
|
+
- Technical Specification: Overview, Components, Interfaces, Non-functional
|
|
18
|
+
|
|
19
|
+
Validation blocks release only when `SPEC_PACK_MODE=1` and a required section
|
|
20
|
+
is missing or empty (`SPEC_PACK_INCOMPLETE`).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# State Archive Packs
|
|
2
|
+
|
|
3
|
+
This folder stores append-only historical state packs for context compaction
|
|
4
|
+
(US-0053 / DEC-0035).
|
|
5
|
+
|
|
6
|
+
Policy:
|
|
7
|
+
|
|
8
|
+
- Keep `docs/engineering/state.md` focused on active/hot context and recent
|
|
9
|
+
checkpoints.
|
|
10
|
+
- Move older, low-frequency checkpoints into timestamped archive packs here.
|
|
11
|
+
- Do not rewrite historical evidence; archive moves are non-destructive and
|
|
12
|
+
traceable.
|
|
13
|
+
- Use stable pack naming:
|
|
14
|
+
- `state-pack-YYYY-QN.md` for periodic compaction
|
|
15
|
+
- or `state-pack-YYYYMMDD.md` for ad-hoc snapshots
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Engineering State
|
|
2
|
+
|
|
3
|
+
## Active context surface (US-0053 / DEC-0035)
|
|
4
|
+
|
|
5
|
+
- This file is the hot context surface for current phase checkpoints and
|
|
6
|
+
short-horizon traceability.
|
|
7
|
+
- Archive policy: move low-frequency historical checkpoints into
|
|
8
|
+
`docs/engineering/state-archive/` packs without rewriting evidence.
|
|
9
|
+
- Retrieval policy for `/ask`: prefer latest targeted sections first and expand
|
|
10
|
+
only when unresolved.
|
|
11
|
+
|
|
12
|
+
## Session status
|
|
13
|
+
|
|
14
|
+
## Progress snapshot
|
|
15
|
+
|
|
16
|
+
## Known issues (carry-forward)
|
|
17
|
+
|
|
18
|
+
## Key risks
|
|
19
|
+
|
|
20
|
+
## Next actions
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Status Normalization Report
|
|
2
|
+
|
|
3
|
+
- Baseline run date: not yet run
|
|
4
|
+
- Scope: append-only status normalization evidence for stories with completed
|
|
5
|
+
release/state evidence but stale product status artifacts.
|
|
6
|
+
- Canonical owner: `docs/product/backlog.md`
|
|
7
|
+
- Derived views reconciled: `docs/product/acceptance.md`,
|
|
8
|
+
`docs/engineering/state.md`
|
|
9
|
+
|
|
10
|
+
| Story | Prior backlog status | Prior acceptance | Resolved backlog status | Resolved acceptance | Evidence refs | Timestamp |
|
|
11
|
+
|---|---|---|---|---|---|---|
|
|
12
|
+
| (none yet) | - | - | - | - | - | - |
|
|
13
|
+
|
|
14
|
+
## Procedure notes
|
|
15
|
+
|
|
16
|
+
- This baseline is append-only; later reconciliations add delta rows only.
|
|
17
|
+
- Guardrail scope is target stories only. Unrelated stories are never rewritten.
|
|
18
|
+
- Contradictory reconciliation outcomes must fail safe with reason code
|
|
19
|
+
`CANONICAL_STATUS_CONFLICT` and remediation guidance.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Token-cost parity manifest (DEC-0062 §5 / US-0080)
|
|
2
|
+
|
|
3
|
+
- **version**: `1`
|
|
4
|
+
- **purpose**: Paths below MUST be **byte-identical** between repository root and
|
|
5
|
+
`template/` after edits (installer parity). CI: `python scripts/check_token_cost_parity.py --repo .`
|
|
6
|
+
|
|
7
|
+
## Mirrored path pairs (`active` → `template`)
|
|
8
|
+
|
|
9
|
+
- `.cursor/commands/auto.md` → `template/.cursor/commands/auto.md`
|
|
10
|
+
- `.cursor/commands/execute.md` → `template/.cursor/commands/execute.md`
|
|
11
|
+
- `docs/engineering/auto-orchestration-reference.md` → `template/docs/engineering/auto-orchestration-reference.md`
|
|
12
|
+
- `docs/engineering/token-cost-parity-manifest.md` → `template/docs/engineering/token-cost-parity-manifest.md`
|
|
13
|
+
- `scripts/token_cost_lib.py` → `template/scripts/token_cost_lib.py`
|
|
14
|
+
- `scripts/token_cost_compare.py` → `template/scripts/token_cost_compare.py`
|
|
15
|
+
- `scripts/check_token_cost_parity.py` → `template/scripts/check_token_cost_parity.py`
|
|
16
|
+
- `handoffs/token_cost_runs/README.md` → `template/handoffs/token_cost_runs/README.md`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# US-0084 — Minimal remote sanity path (Windows → WSL or SSH Linux)
|
|
2
|
+
|
|
3
|
+
Sprint **S0069** / story **US-0084**. This is a short operator walkthrough; normative
|
|
4
|
+
contracts live in **`docs/engineering/architecture.md`** **`# US-0084`**,
|
|
5
|
+
**`docs/engineering/release-targets.json`**, and **`docs/engineering/runtime-connectivity.md`**
|
|
6
|
+
(**US-0064**).
|
|
7
|
+
|
|
8
|
+
## Path A — WSL (local Linux on the Windows machine)
|
|
9
|
+
|
|
10
|
+
1. Install/launch **WSL** and open a Linux shell in the repo (or clone the repo inside WSL).
|
|
11
|
+
2. Ensure **Node.js** and **Python 3** are available on **PATH** (same as host runbook).
|
|
12
|
+
3. Run **`npm pack`** / local **`its-magic`** or **`sh installer.sh --target <repo> --mode missing --create`** from the package root.
|
|
13
|
+
4. Run **`python tests/installer_shell_bug0004_test.py`** and your stack’s **`TEST_COMMAND`** (from merged runbook / scratchpad).
|
|
14
|
+
5. Evidence: set **environment label** **`WSL`** in QA handoffs; **`REMOTE_EXECUTION=0`** is typical (no **`.cursor/remote.json`** validation required).
|
|
15
|
+
|
|
16
|
+
## Path B — SSH to a Linux host
|
|
17
|
+
|
|
18
|
+
1. SSH into the Linux machine; clone or sync the repo there.
|
|
19
|
+
2. Copy **`.env.example`** to **`.env`** and fill in values for `SSH_HOST`,
|
|
20
|
+
`SSH_USER`, `SSH_PRIVATE_KEY`, and any other relevant `REMOTE_*` vars.
|
|
21
|
+
Source the file (`source .env` or equivalent) before running remote ops.
|
|
22
|
+
See **`docs/engineering/runbook.md`** § Operator `.env` setup.
|
|
23
|
+
3. Run the same **`sh`/`dash`** installer and **`python`** tests as on native Linux.
|
|
24
|
+
4. For **release/QA connectivity** semantics, align with **`ssh-server`** in
|
|
25
|
+
**`docs/engineering/release-targets.json`** (`hostEnv`, `userEnv`, `authEnv`, …).
|
|
26
|
+
5. For **Cursor/dev remote** validation, set **`REMOTE_EXECUTION=1`** and
|
|
27
|
+
**`REMOTE_CONFIG=.cursor/remote.json`** on the merged scratchpad; run
|
|
28
|
+
**`python scripts/remote_config_summary.py`** — stdout must list **names only**
|
|
29
|
+
(no keys/passwords).
|
|
30
|
+
6. Evidence: cite **`ssh:<hostEnv>`** (the **env var name**, not the host value) plus
|
|
31
|
+
**environment label**; never paste private key material.
|
|
32
|
+
|
|
33
|
+
## Path C — Docker-over-SSH
|
|
34
|
+
|
|
35
|
+
1. Follow **Path B** on the SSH host (including **`.env`** setup from
|
|
36
|
+
**`.env.example`**); enable **`dockerOverSsh`** patterns per
|
|
37
|
+
**`runtime-connectivity.md`** (**`dockerHostEnv`**, **`dockerContextEnv`**, **`composeFile`**, **`service`**).
|
|
38
|
+
2. Ensure **`DOCKER_HOST`** and **`DOCKER_CONTEXT`** are set in your **`.env`**;
|
|
39
|
+
source before running Docker commands. Document **env names** only in handoffs.
|
|
40
|
+
|
|
41
|
+
## Related
|
|
42
|
+
|
|
43
|
+
- **`tests/run-tests.sh`** / **`tests/run-tests.ps1`** — **H1–H5** (**US-0084** / AC-10).
|
|
44
|
+
- **`python scripts/guard_installer_publish.py`** — publish-time LF + POSIX guard.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Acceptance
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Backlog
|
|
2
|
+
|
|
3
|
+
## Bug issues (canonical)
|
|
4
|
+
|
|
5
|
+
Stub — materialized installs use the full **`## Bug issues (canonical)`** contract in **`docs/product/backlog.md`** (**US-0079** / **DEC-0061**). Append **`### BUG-#### — Title`** blocks here when tracking defects; run **`python scripts/bug_issue_validate.py`** before handoff.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# User guides (US-0032)
|
|
2
|
+
|
|
3
|
+
When `USER_GUIDE_MODE=1` in `.cursor/scratchpad.md`, the workflow expects one
|
|
4
|
+
end-user how-to guide per feature story at a canonical path.
|
|
5
|
+
|
|
6
|
+
## Canonical location and naming
|
|
7
|
+
|
|
8
|
+
- **Path**: `docs/user-guides/US-xxxx.md`
|
|
9
|
+
- **Naming**: Use the backlog story ID (e.g. `US-0032`) as the filename.
|
|
10
|
+
- One guide per feature story; create or update when the story is in scope.
|
|
11
|
+
|
|
12
|
+
## Minimum required schema
|
|
13
|
+
|
|
14
|
+
Each guide must include the following sections (structural validation; content
|
|
15
|
+
quality is not enforced by the gate):
|
|
16
|
+
|
|
17
|
+
| Section | Description |
|
|
18
|
+
|--------|-------------|
|
|
19
|
+
| Purpose | What the feature is for and who it is for |
|
|
20
|
+
| Prerequisites | What the user needs before following the guide |
|
|
21
|
+
| Usage steps | Step-by-step how-to |
|
|
22
|
+
| Example | Concrete example(s) |
|
|
23
|
+
| Limitations | Known limits or caveats |
|
|
24
|
+
| Troubleshooting | Common issues and fixes |
|
|
25
|
+
|
|
26
|
+
Validation runs only when `USER_GUIDE_MODE=1`. Missing file or missing/empty
|
|
27
|
+
required section blocks release with reason code `USER_GUIDE_INCOMPLETE`.
|
|
28
|
+
|
|
29
|
+
## Boundary with spec-pack (US-0031)
|
|
30
|
+
|
|
31
|
+
- **User guides**: End-user facing; how-to and usage only.
|
|
32
|
+
- **Spec-pack**: Design Concept, CRS, Technical Specification (engineering/design).
|
|
33
|
+
- Do not duplicate spec-pack content in user guides; guides may reference
|
|
34
|
+
technical docs but remain end-user focused.
|
|
35
|
+
|
|
36
|
+
## Traceability
|
|
37
|
+
|
|
38
|
+
Story ID → user guide artifact is 1:1. Handoffs and release context should
|
|
39
|
+
reference `docs/user-guides/US-xxxx.md` for the target story when user-guide
|
|
40
|
+
mode is enabled.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Release Notes (Legacy Compatibility Pointer)
|
|
2
|
+
|
|
3
|
+
This file remains backward-compatible for workflows that read
|
|
4
|
+
`handoffs/release_notes.md` as the latest release summary.
|
|
5
|
+
|
|
6
|
+
Canonical sprint history now lives under:
|
|
7
|
+
- `handoffs/releases/Sxxxx-release-notes.md`
|
|
8
|
+
|
|
9
|
+
Canonical queue state now lives under:
|
|
10
|
+
- `handoffs/release_queue.md`
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Latest finalized release pointer
|
|
15
|
+
|
|
16
|
+
- **Latest released sprint:** `Sxxxx`
|
|
17
|
+
- **Latest canonical notes:** `handoffs/releases/Sxxxx-release-notes.md`
|
|
18
|
+
- **Latest release date:** YYYY-MM-DD
|
|
19
|
+
- **Latest release story:** US-xxxx
|
|
20
|
+
|
|
21
|
+
## Unreleased queue visibility
|
|
22
|
+
|
|
23
|
+
Check `handoffs/release_queue.md` for all pending entries where `status=unreleased`
|
|
24
|
+
or `status=blocked` before finalization.
|
|
25
|
+
|
|
26
|
+
## Latest operator summary (Run/Connect/Verify)
|
|
27
|
+
|
|
28
|
+
- **Start command:** Refer to `## Run` in
|
|
29
|
+
`handoffs/releases/Sxxxx-release-notes.md`.
|
|
30
|
+
- **Endpoint + port:** Refer to `## Connect` in
|
|
31
|
+
`handoffs/releases/Sxxxx-release-notes.md`.
|
|
32
|
+
- **Verification steps + health signal:** Refer to `## Verify` in
|
|
33
|
+
`handoffs/releases/Sxxxx-release-notes.md`.
|
|
34
|
+
- **Credentials source refs (sanitized):** Refer to `## Credentials` in
|
|
35
|
+
`handoffs/releases/Sxxxx-release-notes.md` (env-ref only).
|
|
36
|
+
- **Known issues:** Refer to `## Known Issues` in
|
|
37
|
+
`handoffs/releases/Sxxxx-release-notes.md`.
|
|
38
|
+
|
|
39
|
+
## Historical references
|
|
40
|
+
|
|
41
|
+
- `Sxxxx`: `handoffs/releases/Sxxxx-release-notes.md`
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Compatibility behavior contract
|
|
46
|
+
|
|
47
|
+
- Keep this file as a pointer/summary; do not treat it as canonical historical
|
|
48
|
+
storage.
|
|
49
|
+
- `/release` must update sprint-scoped notes first, then refresh this pointer.
|
|
50
|
+
- Never delete or destructively rewrite historical sprint-scoped note files
|
|
51
|
+
through this legacy path.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Release Queue Tracker
|
|
2
|
+
|
|
3
|
+
Canonical release queue for sprint-level release state.
|
|
4
|
+
|
|
5
|
+
## Queue rows
|
|
6
|
+
|
|
7
|
+
| sprint_id | story_refs | status | last_updated | release_notes_ref | gate_snapshot | release_version | remediation |
|
|
8
|
+
|-----------|------------|--------|--------------|-------------------|---------------|-----------------|-------------|
|
|
9
|
+
|
|
10
|
+
## Status model
|
|
11
|
+
|
|
12
|
+
- `planned`: sprint exists, release flow not entered
|
|
13
|
+
- `ready`: verify-work completed and release is eligible to start
|
|
14
|
+
- `unreleased`: release flow entered; notes written; finalization not completed
|
|
15
|
+
- `released`: release finalization completed for the sprint
|
|
16
|
+
- `blocked`: deterministic fail-safe condition requiring remediation
|
|
17
|
+
|
|
18
|
+
## Deterministic transition contract
|
|
19
|
+
|
|
20
|
+
- Allowed lifecycle: `planned -> ready -> unreleased -> released`.
|
|
21
|
+
- `blocked` can be set on deterministic failure conditions.
|
|
22
|
+
- Only the target sprint row may change during one `/release` run.
|
|
23
|
+
- No destructive auto-reconciliation is allowed by default.
|
|
24
|
+
|
|
25
|
+
## Fail-safe reason codes
|
|
26
|
+
|
|
27
|
+
- `RELEASE_SPRINT_UNRESOLVED`
|
|
28
|
+
- `LEGACY_NOTES_SPRINT_UNRESOLVED`
|
|
29
|
+
- `QUEUE_ENTRY_MISSING`
|
|
30
|
+
- `NOTES_REF_MISSING`
|
|
31
|
+
- `STATUS_TRANSITION_INVALID`
|
|
32
|
+
- `BACKLOG_STATUS_DRIFT`
|
|
33
|
+
- `CANONICAL_STATUS_CONFLICT`
|
|
34
|
+
- `COMPATIBILITY_CRITICAL_OPEN`
|
|
35
|
+
- `COMPONENT_SCOPE_VIOLATION_UNAPPROVED`
|
|
36
|
+
|
|
37
|
+
## Remediation guidance
|
|
38
|
+
|
|
39
|
+
- `RELEASE_SPRINT_UNRESOLVED`: set explicit sprint context (`Sxxxx`) and rerun `/release`.
|
|
40
|
+
- `LEGACY_NOTES_SPRINT_UNRESOLVED`: preserve legacy notes, identify sprint manually, then create target sprint notes file.
|
|
41
|
+
- `QUEUE_ENTRY_MISSING`: create the target sprint queue row with required fields, then rerun `/release`.
|
|
42
|
+
- `NOTES_REF_MISSING`: add canonical `release_notes_ref` for target sprint row and rerun `/release`.
|
|
43
|
+
- `STATUS_TRANSITION_INVALID`: correct row status to a valid predecessor state and rerun `/release`.
|
|
44
|
+
- `BACKLOG_STATUS_DRIFT`: reconcile target story status/ACs in `docs/product/backlog.md` using release evidence, then rerun `/release`.
|
|
45
|
+
- `CANONICAL_STATUS_CONFLICT`: resolve canonical backlog status mismatch versus derived artifacts and rerun `/release`.
|
|
46
|
+
- `COMPATIBILITY_CRITICAL_OPEN`: resolve or explicitly decide on open critical compatibility findings before rerun.
|
|
47
|
+
- `COMPONENT_SCOPE_VIOLATION_UNAPPROVED`: resolve or explicitly approve out-of-scope component impact before rerun.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Release -> Dev Handoff
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
- Result: BLOCKED
|
|
6
|
+
- Sprint: `Sxxxx`
|
|
7
|
+
- Story: `US-xxxx`
|
|
8
|
+
|
|
9
|
+
## Blocking reason
|
|
10
|
+
|
|
11
|
+
- Primary reason code: `RELEASE_TEST_FAILED|RELEASE_QA_BLOCKERS_OPEN|RELEASE_UAT_INCOMPLETE|RELEASE_SPRINT_UNRESOLVED|QUEUE_ENTRY_MISSING|NOTES_REF_MISSING|STATUS_TRANSITION_INVALID|LEGACY_NOTES_SPRINT_UNRESOLVED`
|
|
12
|
+
- Summary:
|
|
13
|
+
|
|
14
|
+
## Evidence refs
|
|
15
|
+
|
|
16
|
+
- `sprints/Sxxxx/release-findings.md`
|
|
17
|
+
- `handoffs/release_queue.md`
|
|
18
|
+
- `tests/report.md`
|
|
19
|
+
- `sprints/Sxxxx/qa-findings.md`
|
|
20
|
+
- `sprints/Sxxxx/uat.json`
|
|
21
|
+
|
|
22
|
+
## Required remediation
|
|
23
|
+
|
|
24
|
+
1.
|
|
25
|
+
2.
|
|
26
|
+
|
|
27
|
+
## Re-run criteria
|
|
28
|
+
|
|
29
|
+
- Update `sprints/Sxxxx/release-findings.md` with remediation status.
|
|
30
|
+
- Confirm blocking reason code is resolved.
|
|
31
|
+
- Re-run `/release` for sprint `Sxxxx`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Sprint Release Notes Template
|
|
2
|
+
|
|
3
|
+
**Sprint:** Sxxxx
|
|
4
|
+
**Date:** YYYY-MM-DD
|
|
5
|
+
**Stories:** US-xxxx
|
|
6
|
+
**Queue status:** unreleased|released|blocked
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Gate results
|
|
11
|
+
|
|
12
|
+
1. **Check-in test gate:** PASS|FAIL
|
|
13
|
+
2. **QA completion gate:** PASS|FAIL
|
|
14
|
+
3. **UAT completeness gate:** PASS|FAIL
|
|
15
|
+
4. **Release finalization gate:** PASS|FAIL
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Run
|
|
20
|
+
|
|
21
|
+
- `start_command`: `<required>`
|
|
22
|
+
- `runtime_mode`: `local|remote` (required)
|
|
23
|
+
- `runtime_context_ref`: `docs/engineering/runtime-connectivity.md` (required
|
|
24
|
+
when present)
|
|
25
|
+
|
|
26
|
+
## Connect
|
|
27
|
+
|
|
28
|
+
- `service_url`: `<required>`
|
|
29
|
+
- `service_port`: `<required>`
|
|
30
|
+
- `health_endpoint`: `<required>`
|
|
31
|
+
|
|
32
|
+
## Verify
|
|
33
|
+
|
|
34
|
+
- `verification_steps`:
|
|
35
|
+
1. `<required step 1>`
|
|
36
|
+
2. `<required step 2>`
|
|
37
|
+
3. `<required step 3>`
|
|
38
|
+
- `expected_health_signal`: `<required>`
|
|
39
|
+
|
|
40
|
+
## Credentials
|
|
41
|
+
|
|
42
|
+
- `credential_source_refs` (env names only):
|
|
43
|
+
- `<ENV_VAR_NAME>`
|
|
44
|
+
- `expected_value_source`:
|
|
45
|
+
- `<CI secret store | operator shell profile | deployment platform variable set>`
|
|
46
|
+
- Never place inline secrets/tokens/passwords in this file.
|
|
47
|
+
|
|
48
|
+
## Known Issues
|
|
49
|
+
|
|
50
|
+
- `None` or deterministic concise issue list.
|
|
51
|
+
|
|
52
|
+
## Notes
|
|
53
|
+
|
|
54
|
+
- Sprint-scoped notes are canonical history artifacts.
|
|
55
|
+
- Do not overwrite notes for non-target sprints.
|
|
56
|
+
- Required section order is deterministic:
|
|
57
|
+
`Run -> Connect -> Verify -> Credentials -> Known Issues`.
|
|
58
|
+
|
|
59
|
+
## Queue linkage
|
|
60
|
+
|
|
61
|
+
- `release_queue.md` row must reference this file via `release_notes_ref`.
|
|
62
|
+
- Status transitions must affect only the target sprint row.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Per-version release notes — pattern example (US-0100 / DEC-0085)
|
|
2
|
+
|
|
3
|
+
> **Rename at use**: copy this file to `handoffs/releases/{semver}-release-notes.md`
|
|
4
|
+
> where `{semver}` is the normalized semver stem **without** a leading `v`
|
|
5
|
+
> (e.g. `0.1.2-41-release-notes.md`, not `v0.1.2-41-release-notes.md`).
|
|
6
|
+
>
|
|
7
|
+
> **Do not overwrite** unrelated version files — target only the semver you are publishing.
|
|
8
|
+
> Sprint-scoped workflow evidence stays in `handoffs/releases/Sxxxx-release-notes.md`
|
|
9
|
+
> (**US-0040**); never pass `Sxxxx` notes to `gh -F`.
|
|
10
|
+
|
|
11
|
+
## Work items
|
|
12
|
+
|
|
13
|
+
- **US-xxxx** — One-line summary derived from sprint notes / backlog / queue precedence.
|
|
14
|
+
- **BUG-xxxx** — One-line fix summary (category **Fixed** in cumulative `CHANGELOG.md`).
|
|
15
|
+
|
|
16
|
+
## Sprint evidence
|
|
17
|
+
|
|
18
|
+
- [`S0070`](handoffs/releases/S0070-release-notes.md)
|
|
19
|
+
- [`S0071`](handoffs/releases/S0071-release-notes.md)
|
|
20
|
+
|
|
21
|
+
<!-- Example coalesce: S0070 + S0071 → semver 0.1.2-41 -->
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Token-cost run evidence (`handoffs/token_cost_runs/`)
|
|
2
|
+
|
|
3
|
+
Append-only artifacts per **`orchestrator_run_id`** (**`DEC-0062`** §3, **`US-0080`**).
|
|
4
|
+
|
|
5
|
+
## Schema (markdown table)
|
|
6
|
+
|
|
7
|
+
Each run file SHOULD include:
|
|
8
|
+
|
|
9
|
+
- `orchestrator_run_id` — stable id for the orchestrated run
|
|
10
|
+
- `run_class_hash` — SHA-256 hex over canonical **`DEC-0062`** §2 JSON object
|
|
11
|
+
- `metric_source` — how numbers were produced (for example `cursor_usage_export`,
|
|
12
|
+
`fixture`, `unmapped_host`)
|
|
13
|
+
- `recorded_at_utc` — RFC3339 UTC
|
|
14
|
+
- **Run totals** row: `cache_read_tokens`, `input_tokens`, `output_tokens`, and
|
|
15
|
+
optional `cache_creation_tokens`, `orchestrator_call_estimate`
|
|
16
|
+
- **Per-phase** rows: same metrics plus `phase_id`, `phase_call_count`
|
|
17
|
+
|
|
18
|
+
`docs/engineering/state.md` checkpoints SHOULD set **`token_cost_evidence_ref`**
|
|
19
|
+
to the primary file path when metrics exist.
|
|
20
|
+
|
|
21
|
+
## Tooling
|
|
22
|
+
|
|
23
|
+
- `scripts/token_cost_lib.py` — `run_class_hash`, strict-proof hash helper, AC-2 compare
|
|
24
|
+
- `scripts/token_cost_compare.py <baseline.json> <target.json>` — exit **0** if
|
|
25
|
+
same `run_class_hash` and ≥ **50%** `cache_read_tokens` reduction vs baseline
|
|
26
|
+
- `python scripts/check_token_cost_parity.py --repo .` — active/`template/` parity
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.1.2-26
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# its-magic metadata home
|
|
2
|
+
|
|
3
|
+
This directory is installer-owned and stores framework metadata surfaces that are
|
|
4
|
+
not part of product/project artifacts.
|
|
5
|
+
|
|
6
|
+
Current metadata:
|
|
7
|
+
|
|
8
|
+
- `.its-magic-version` (installed framework version marker)
|
|
9
|
+
- this operator-oriented README surface
|