@starci/skills 1.1.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/INDEX.md +74 -0
- package/INDEX.vi.md +75 -0
- package/README.md +44 -0
- package/README.vi.md +43 -0
- package/SKILL.md +135 -0
- package/SKILL.vi.md +128 -0
- package/alias/INDEX.md +104 -0
- package/alias/INDEX.vi.md +104 -0
- package/alias/alias.json +297 -0
- package/bin/starci-skills.mjs +219 -0
- package/knowledge/INDEX.md +22 -0
- package/knowledge/INDEX.vi.md +22 -0
- package/knowledge/grammars/starci/DNA.md +146 -0
- package/knowledge/grammars/starci/DNA.vi.md +146 -0
- package/knowledge/grammars/starci/INDEX.md +25 -0
- package/knowledge/grammars/starci/INDEX.vi.md +25 -0
- package/knowledge/grammars/starci/family.md +50 -0
- package/knowledge/grammars/starci/family.vi.md +50 -0
- package/knowledge/grammars/starci/idioms.md +120 -0
- package/knowledge/grammars/starci/idioms.vi.md +121 -0
- package/knowledge/grammars/starci/playbook.md +36 -0
- package/knowledge/grammars/starci/playbook.vi.md +35 -0
- package/knowledge/patterns/be/INDEX.md +29 -0
- package/knowledge/patterns/be/INDEX.vi.md +29 -0
- package/knowledge/patterns/be/comment.md +80 -0
- package/knowledge/patterns/be/comment.vi.md +80 -0
- package/knowledge/patterns/be/error.md +86 -0
- package/knowledge/patterns/be/error.vi.md +86 -0
- package/knowledge/patterns/be/folder.md +87 -0
- package/knowledge/patterns/be/folder.vi.md +86 -0
- package/knowledge/patterns/be/function.md +80 -0
- package/knowledge/patterns/be/function.vi.md +80 -0
- package/knowledge/patterns/be/imports.md +79 -0
- package/knowledge/patterns/be/imports.vi.md +79 -0
- package/knowledge/patterns/be/naming.md +87 -0
- package/knowledge/patterns/be/naming.vi.md +87 -0
- package/knowledge/patterns/be/test.md +79 -0
- package/knowledge/patterns/be/test.vi.md +79 -0
- package/knowledge/patterns/be/typing.md +73 -0
- package/knowledge/patterns/be/typing.vi.md +73 -0
- package/knowledge/patterns/fe/INDEX.md +29 -0
- package/knowledge/patterns/fe/INDEX.vi.md +29 -0
- package/knowledge/patterns/fe/comment.md +70 -0
- package/knowledge/patterns/fe/comment.vi.md +70 -0
- package/knowledge/patterns/fe/error.md +61 -0
- package/knowledge/patterns/fe/error.vi.md +61 -0
- package/knowledge/patterns/fe/folder.md +98 -0
- package/knowledge/patterns/fe/folder.vi.md +95 -0
- package/knowledge/patterns/fe/function.md +70 -0
- package/knowledge/patterns/fe/function.vi.md +70 -0
- package/knowledge/patterns/fe/imports.md +87 -0
- package/knowledge/patterns/fe/imports.vi.md +87 -0
- package/knowledge/patterns/fe/naming.md +77 -0
- package/knowledge/patterns/fe/naming.vi.md +77 -0
- package/knowledge/patterns/fe/test.md +73 -0
- package/knowledge/patterns/fe/test.vi.md +73 -0
- package/knowledge/patterns/fe/typing.md +67 -0
- package/knowledge/patterns/fe/typing.vi.md +67 -0
- package/knowledge/ui/INDEX.md +101 -0
- package/knowledge/ui/INDEX.vi.md +101 -0
- package/knowledge/ui/composition/INDEX.md +60 -0
- package/knowledge/ui/composition/INDEX.vi.md +63 -0
- package/knowledge/ui/composition/accent.md +73 -0
- package/knowledge/ui/composition/accent.vi.md +74 -0
- package/knowledge/ui/composition/action.md +55 -0
- package/knowledge/ui/composition/action.vi.md +56 -0
- package/knowledge/ui/composition/coverage.md +37 -0
- package/knowledge/ui/composition/coverage.vi.md +37 -0
- package/knowledge/ui/composition/cta.md +79 -0
- package/knowledge/ui/composition/cta.vi.md +79 -0
- package/knowledge/ui/composition/feedback.md +55 -0
- package/knowledge/ui/composition/feedback.vi.md +56 -0
- package/knowledge/ui/composition/hierarchy.md +83 -0
- package/knowledge/ui/composition/hierarchy.vi.md +82 -0
- package/knowledge/ui/composition/layout.md +91 -0
- package/knowledge/ui/composition/layout.vi.md +93 -0
- package/knowledge/ui/composition/responsive.md +67 -0
- package/knowledge/ui/composition/responsive.vi.md +67 -0
- package/knowledge/ui/composition/state.md +105 -0
- package/knowledge/ui/composition/state.vi.md +106 -0
- package/knowledge/ui/presentation/INDEX.md +94 -0
- package/knowledge/ui/presentation/INDEX.vi.md +69 -0
- package/knowledge/ui/presentation/boundary.md +170 -0
- package/knowledge/ui/presentation/boundary.vi.md +169 -0
- package/knowledge/ui/presentation/font.md +155 -0
- package/knowledge/ui/presentation/font.vi.md +156 -0
- package/knowledge/ui/presentation/gap.md +181 -0
- package/knowledge/ui/presentation/gap.vi.md +181 -0
- package/knowledge/ui/presentation/margin.md +168 -0
- package/knowledge/ui/presentation/margin.vi.md +171 -0
- package/knowledge/ui/presentation/measure.md +174 -0
- package/knowledge/ui/presentation/measure.vi.md +178 -0
- package/knowledge/ui/presentation/overflow.md +142 -0
- package/knowledge/ui/presentation/overflow.vi.md +142 -0
- package/knowledge/ui/presentation/padding.md +293 -0
- package/knowledge/ui/presentation/padding.vi.md +292 -0
- package/knowledge/ui/presentation/surface.md +166 -0
- package/knowledge/ui/presentation/surface.vi.md +166 -0
- package/knowledge/ui/presentation/text-flow.md +123 -0
- package/knowledge/ui/presentation/text-flow.vi.md +123 -0
- package/knowledge/ui/presentation/tone.md +114 -0
- package/knowledge/ui/presentation/tone.vi.md +113 -0
- package/knowledge/ui/proof/INDEX.md +55 -0
- package/knowledge/ui/proof/INDEX.vi.md +55 -0
- package/knowledge/ui/proof/accessibility.md +67 -0
- package/knowledge/ui/proof/accessibility.vi.md +68 -0
- package/knowledge/ui/proof/contrast.md +58 -0
- package/knowledge/ui/proof/contrast.vi.md +57 -0
- package/knowledge/ui/proof/focus.md +76 -0
- package/knowledge/ui/proof/focus.vi.md +76 -0
- package/knowledge/ui/proof/motion.md +63 -0
- package/knowledge/ui/proof/motion.vi.md +64 -0
- package/knowledge/ui/proof/render-truth.md +63 -0
- package/knowledge/ui/proof/render-truth.vi.md +63 -0
- package/operators/INDEX.md +199 -0
- package/operators/INDEX.vi.md +199 -0
- package/operators/architecture-decide/errors.json +115 -0
- package/operators/architecture-decide/operator.json +20 -0
- package/operators/architecture-decide/operator.md +133 -0
- package/operators/architecture-decide/operator.vi.md +130 -0
- package/operators/architecture-decide/self-test.mjs +221 -0
- package/operators/architecture-decide/validate.mjs +112 -0
- package/operators/backend-source-apply/errors.json +66 -0
- package/operators/backend-source-apply/operator.json +20 -0
- package/operators/backend-source-apply/operator.md +189 -0
- package/operators/backend-source-apply/operator.vi.md +185 -0
- package/operators/backend-source-apply/self-test.mjs +257 -0
- package/operators/backend-source-apply/validate.mjs +240 -0
- package/operators/business-decide/errors.json +78 -0
- package/operators/business-decide/operator.json +20 -0
- package/operators/business-decide/operator.md +176 -0
- package/operators/business-decide/operator.vi.md +174 -0
- package/operators/business-decide/self-test.mjs +225 -0
- package/operators/business-decide/validate.mjs +277 -0
- package/operators/content-generate/errors.json +106 -0
- package/operators/content-generate/operator.json +21 -0
- package/operators/content-generate/operator.md +155 -0
- package/operators/content-generate/operator.vi.md +155 -0
- package/operators/content-generate/self-test.mjs +288 -0
- package/operators/content-generate/validate.mjs +196 -0
- package/operators/errors.json +178 -0
- package/operators/frontend-direction-decide/errors.json +135 -0
- package/operators/frontend-direction-decide/operator.json +21 -0
- package/operators/frontend-direction-decide/operator.md +167 -0
- package/operators/frontend-direction-decide/operator.vi.md +167 -0
- package/operators/frontend-direction-decide/self-test.mjs +226 -0
- package/operators/frontend-direction-decide/validate.mjs +146 -0
- package/operators/frontend-presentation-resolve/errors.json +42 -0
- package/operators/frontend-presentation-resolve/operator.json +19 -0
- package/operators/frontend-presentation-resolve/operator.md +142 -0
- package/operators/frontend-presentation-resolve/operator.vi.md +140 -0
- package/operators/frontend-presentation-resolve/self-test.mjs +163 -0
- package/operators/frontend-presentation-resolve/validate.mjs +143 -0
- package/operators/frontend-source-apply/errors.json +30 -0
- package/operators/frontend-source-apply/operator.json +20 -0
- package/operators/frontend-source-apply/operator.md +127 -0
- package/operators/frontend-source-apply/operator.vi.md +126 -0
- package/operators/frontend-source-apply/self-test.mjs +214 -0
- package/operators/frontend-source-apply/validate.mjs +133 -0
- package/operators/frontend-surface-audit/errors.json +5 -0
- package/operators/frontend-surface-audit/operator.json +22 -0
- package/operators/frontend-surface-audit/operator.md +121 -0
- package/operators/frontend-surface-audit/operator.vi.md +121 -0
- package/operators/frontend-surface-audit/self-test.mjs +185 -0
- package/operators/frontend-surface-audit/validate.mjs +127 -0
- package/operators/git-publish/errors.json +54 -0
- package/operators/git-publish/operator.json +20 -0
- package/operators/git-publish/operator.md +180 -0
- package/operators/git-publish/operator.vi.md +178 -0
- package/operators/git-publish/self-test.mjs +177 -0
- package/operators/git-publish/validate.mjs +106 -0
- package/operators/platform-operate/errors.json +90 -0
- package/operators/platform-operate/operator.json +22 -0
- package/operators/platform-operate/operator.md +162 -0
- package/operators/platform-operate/operator.vi.md +160 -0
- package/operators/platform-operate/self-test.mjs +202 -0
- package/operators/platform-operate/validate.mjs +193 -0
- package/operators/quality-verify/errors.json +54 -0
- package/operators/quality-verify/operator.json +20 -0
- package/operators/quality-verify/operator.md +185 -0
- package/operators/quality-verify/operator.vi.md +177 -0
- package/operators/quality-verify/self-test.mjs +210 -0
- package/operators/quality-verify/validate.mjs +197 -0
- package/operators/release-deploy/errors.json +158 -0
- package/operators/release-deploy/operator.json +23 -0
- package/operators/release-deploy/operator.md +183 -0
- package/operators/release-deploy/operator.vi.md +181 -0
- package/operators/release-deploy/self-test.mjs +235 -0
- package/operators/release-deploy/validate.mjs +129 -0
- package/operators/uat-verify/errors.json +78 -0
- package/operators/uat-verify/operator.json +25 -0
- package/operators/uat-verify/operator.md +162 -0
- package/operators/uat-verify/operator.vi.md +161 -0
- package/operators/uat-verify/self-test.mjs +270 -0
- package/operators/uat-verify/validate.mjs +202 -0
- package/operators/workspace-bind/errors.json +90 -0
- package/operators/workspace-bind/operator.json +21 -0
- package/operators/workspace-bind/operator.md +148 -0
- package/operators/workspace-bind/operator.vi.md +148 -0
- package/operators/workspace-bind/self-test.mjs +205 -0
- package/operators/workspace-bind/validate.mjs +152 -0
- package/package.json +50 -0
- package/readiness/initialization/workspaces/commit-policy.json +91 -0
- package/readiness/initialization/workspaces/config.schema.json +35 -0
- package/readiness/initialization/workspaces/device-state.schema.json +54 -0
- package/readiness/initialization/workspaces/local-route.schema.json +206 -0
- package/readiness/initialization/workspaces/portable-route.schema.json +200 -0
- package/resources/INDEX.md +96 -0
- package/resources/INDEX.vi.md +99 -0
- package/resources/agents/profiles/claude.json +131 -0
- package/resources/agents/profiles/openai.json +131 -0
- package/resources/orchestrator.json +71 -0
- package/resources/tools.json +85 -0
- package/routing.json +272 -0
- package/scripts/alias-registry.mjs +31 -0
- package/scripts/device-state.mjs +497 -0
- package/scripts/device-state.spec.mjs +18 -0
- package/scripts/errors-registry.mjs +68 -0
- package/scripts/generate-alias-doc.mjs +66 -0
- package/scripts/generate-grammar-dna.mjs +387 -0
- package/scripts/generate-operators-index.mjs +95 -0
- package/scripts/generate-presentation-owned.mjs +681 -0
- package/scripts/install-cli.spec.mjs +74 -0
- package/scripts/json-schema.mjs +94 -0
- package/scripts/operator-md.mjs +96 -0
- package/scripts/run-operator-self-tests.mjs +36 -0
- package/scripts/validate-alias.mjs +165 -0
- package/scripts/validate-defaults.mjs +72 -0
- package/scripts/validate-knowledge-citations.mjs +90 -0
- package/scripts/validate-operator.mjs +125 -0
- package/scripts/validate-request.mjs +80 -0
- package/scripts/validate-resources.mjs +117 -0
- package/scripts/validate-response.mjs +141 -0
- package/scripts/validate-routing.mjs +91 -0
- package/scripts/validate-step.mjs +50 -0
- package/scripts/validate-templates.mjs +226 -0
- package/scripts/validate-templates.spec.mjs +144 -0
- package/scripts/validate-workflows.mjs +106 -0
- package/scripts/workspace-portable.mjs +389 -0
- package/scripts/workspace-portable.spec.mjs +246 -0
- package/templates/README.md +47 -0
- package/templates/README.vi.md +45 -0
- package/templates/changes.example.md +27 -0
- package/templates/grammars.template.md +34 -0
- package/templates/kinds/architecture-decision.contract.json +14 -0
- package/templates/kinds/architecture-decision.skeleton.md +52 -0
- package/templates/kinds/backend-source-application.contract.json +10 -0
- package/templates/kinds/backend-source-application.skeleton.md +34 -0
- package/templates/kinds/business-promise-authority.contract.json +13 -0
- package/templates/kinds/business-promise-authority.skeleton.md +67 -0
- package/templates/kinds/capture.schema.json +33 -0
- package/templates/kinds/changes.contract.json +10 -0
- package/templates/kinds/changes.skeleton.md +26 -0
- package/templates/kinds/checks.schema.json +44 -0
- package/templates/kinds/claims.schema.json +165 -0
- package/templates/kinds/conformance.schema.json +15 -0
- package/templates/kinds/content-brief.contract.json +12 -0
- package/templates/kinds/content-brief.skeleton.md +45 -0
- package/templates/kinds/content-generation-receipt.contract.json +11 -0
- package/templates/kinds/content-generation-receipt.skeleton.md +40 -0
- package/templates/kinds/content-review.contract.json +11 -0
- package/templates/kinds/content-review.skeleton.md +45 -0
- package/templates/kinds/contract.schema.json +28 -0
- package/templates/kinds/coverage-matrix.schema.json +86 -0
- package/templates/kinds/coverage.schema.json +62 -0
- package/templates/kinds/current-state.schema.json +40 -0
- package/templates/kinds/delta.schema.json +95 -0
- package/templates/kinds/e2e.schema.json +63 -0
- package/templates/kinds/frontend-direction-decision.contract.json +93 -0
- package/templates/kinds/frontend-direction-decision.skeleton.md +68 -0
- package/templates/kinds/frontend-presentation-resolution.contract.json +11 -0
- package/templates/kinds/frontend-presentation-resolution.skeleton.md +32 -0
- package/templates/kinds/frontend-source-application.contract.json +10 -0
- package/templates/kinds/frontend-source-application.skeleton.md +30 -0
- package/templates/kinds/frontend-surface-audit.contract.json +52 -0
- package/templates/kinds/frontend-surface-audit.skeleton.md +32 -0
- package/templates/kinds/gate-result.schema.json +64 -0
- package/templates/kinds/git-publication.contract.json +82 -0
- package/templates/kinds/git-publication.skeleton.md +61 -0
- package/templates/kinds/independent-critique.contract.json +9 -0
- package/templates/kinds/independent-critique.skeleton.md +28 -0
- package/templates/kinds/inventory.schema.json +35 -0
- package/templates/kinds/model.schema.json +99 -0
- package/templates/kinds/mutations.schema.json +65 -0
- package/templates/kinds/platform-operation-receipt.contract.json +76 -0
- package/templates/kinds/platform-operation-receipt.skeleton.md +54 -0
- package/templates/kinds/probes.schema.json +130 -0
- package/templates/kinds/proof.schema.json +17 -0
- package/templates/kinds/quality-verification.contract.json +87 -0
- package/templates/kinds/quality-verification.skeleton.md +58 -0
- package/templates/kinds/release-deployment.contract.json +85 -0
- package/templates/kinds/release-deployment.skeleton.md +67 -0
- package/templates/kinds/route.schema.json +293 -0
- package/templates/kinds/stack-model.schema.json +90 -0
- package/templates/kinds/uat-capture.schema.json +35 -0
- package/templates/kinds/uat-flow-verification.contract.json +11 -0
- package/templates/kinds/uat-flow-verification.skeleton.md +47 -0
- package/templates/kinds/uat-snapshot.schema.json +96 -0
- package/templates/kinds/uat-verdicts.schema.json +41 -0
- package/templates/kinds/ui-coverage.schema.json +77 -0
- package/templates/kinds/verdicts.schema.json +39 -0
- package/templates/kinds/workspace-route-binding.contract.json +12 -0
- package/templates/kinds/workspace-route-binding.skeleton.md +60 -0
- package/templates/kinds/writes.schema.json +37 -0
- package/templates/operator.template.md +73 -0
- package/templates/patterns.template.md +31 -0
- package/templates/step/request.schema.json +42 -0
- package/templates/step/response.schema.json +144 -0
- package/templates/ui-composition.template.md +36 -0
- package/templates/ui-presentation.template.md +57 -0
- package/templates/ui-proof.template.md +34 -0
- package/workflows/README.md +37 -0
- package/workflows/README.vi.md +37 -0
- package/workflows/backend-feature.json +59 -0
- package/workflows/content-unit.json +19 -0
- package/workflows/frontend-new-surface.json +81 -0
- package/workflows/frontend-reconstruct.json +67 -0
- package/workflows/frontend-refine.json +67 -0
- package/workflows/frontend-with-uat.json +78 -0
- package/workflows/full-feature.json +104 -0
- package/workflows/release.json +29 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:mutations",
|
|
3
|
+
"title": "Every mutation one source-writing step made or planned, the contract it filled, and the single commit that carries them on the session branch; under mode dry the commit is null and the record is a plan.",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["mode", "contractFingerprint", "base", "branch", "commit", "operations", "changes"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"mode": { "enum": ["apply", "dry"] },
|
|
9
|
+
"contractFingerprint": { "$ref": "#/$defs/hash" },
|
|
10
|
+
"base": { "$ref": "#/$defs/gitHead" },
|
|
11
|
+
"branch": { "type": "string", "pattern": "^session/[A-Za-z0-9._-]+$" },
|
|
12
|
+
"commit": { "$ref": "#/$defs/nullableGitHead" },
|
|
13
|
+
"operations": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"minItems": 1,
|
|
16
|
+
"maxItems": 64,
|
|
17
|
+
"items": { "$ref": "#/$defs/operation" }
|
|
18
|
+
},
|
|
19
|
+
"changes": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"minItems": 1,
|
|
22
|
+
"maxItems": 256,
|
|
23
|
+
"items": { "$ref": "#/$defs/change" }
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"$defs": {
|
|
27
|
+
"hash": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
|
|
28
|
+
"nullableHash": { "oneOf": [{ "$ref": "#/$defs/hash" }, { "type": "null" }] },
|
|
29
|
+
"gitHead": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
|
|
30
|
+
"nullableGitHead": { "oneOf": [{ "$ref": "#/$defs/gitHead" }, { "type": "null" }] },
|
|
31
|
+
"identifier": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
32
|
+
"facet": { "enum": ["transport", "writer", "store", "transaction", "idempotency", "migration", "exception-identity", "authorization", "concurrency"] },
|
|
33
|
+
"proofKind": { "enum": ["unit", "integration", "migration-replay", "conformance-read", "runtime-probe"] },
|
|
34
|
+
"operation": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"required": ["operationId", "name", "transport", "writerRef", "storeRefs", "transactionBoundary", "idempotencyKind", "migrationRefs", "authorityDecisionIds", "facets", "proofKinds"],
|
|
38
|
+
"properties": {
|
|
39
|
+
"operationId": { "$ref": "#/$defs/identifier" },
|
|
40
|
+
"name": { "type": "string", "minLength": 1, "maxLength": 256 },
|
|
41
|
+
"transport": { "enum": ["graphql-mutation", "graphql-query", "rest", "worker", "cron", "event-consumer"] },
|
|
42
|
+
"writerRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
43
|
+
"storeRefs": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1 } },
|
|
44
|
+
"transactionBoundary": { "enum": ["single-transaction", "per-item", "read-only", "none"] },
|
|
45
|
+
"idempotencyKind": { "enum": ["none", "natural-key", "request-token", "event-id"] },
|
|
46
|
+
"migrationRefs": { "type": "array", "maxItems": 64, "items": { "type": "string", "minLength": 1 } },
|
|
47
|
+
"authorityDecisionIds": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "string", "pattern": "^BA-[0-9]+$" } },
|
|
48
|
+
"facets": { "type": "array", "minItems": 1, "maxItems": 16, "items": { "$ref": "#/$defs/facet" } },
|
|
49
|
+
"proofKinds": { "type": "array", "minItems": 1, "maxItems": 16, "items": { "$ref": "#/$defs/proofKind" } }
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"change": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"required": ["path", "change", "operationId", "beforeHash", "afterHash"],
|
|
56
|
+
"properties": {
|
|
57
|
+
"path": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
58
|
+
"change": { "enum": ["added", "modified", "deleted"] },
|
|
59
|
+
"operationId": { "$ref": "#/$defs/identifier" },
|
|
60
|
+
"beforeHash": { "$ref": "#/$defs/nullableHash" },
|
|
61
|
+
"afterHash": { "$ref": "#/$defs/nullableHash" }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "platform-operation-receipt",
|
|
3
|
+
"title": "^# platform-operation-receipt — (observability|sonar|tunnel) [A-Za-z0-9._/-]+$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{
|
|
6
|
+
"heading": "^## Binding$",
|
|
7
|
+
"table": "| Field | Value |",
|
|
8
|
+
"rows": [
|
|
9
|
+
"Operator",
|
|
10
|
+
"Step",
|
|
11
|
+
"Project",
|
|
12
|
+
"Service",
|
|
13
|
+
"Service kind",
|
|
14
|
+
"Owner",
|
|
15
|
+
"Approval",
|
|
16
|
+
"Desired state",
|
|
17
|
+
"Inventory fingerprint"
|
|
18
|
+
],
|
|
19
|
+
"cell": {
|
|
20
|
+
"Value": "\\S"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"heading": "^## Convergence$",
|
|
25
|
+
"table": "| Field | Value |",
|
|
26
|
+
"exactRows": 1,
|
|
27
|
+
"rows": [
|
|
28
|
+
"Convergence"
|
|
29
|
+
],
|
|
30
|
+
"cell": {
|
|
31
|
+
"Value": "^(converged|already-converged)$"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"heading": "^## Inventoried resources$",
|
|
36
|
+
"table": "| Resource | Kind | Revision | Owner |",
|
|
37
|
+
"minRows": 1,
|
|
38
|
+
"cell": {
|
|
39
|
+
"Kind": "^(observability|sonar|tunnel)$",
|
|
40
|
+
"Revision": "\\S"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"heading": "^## Port holders$",
|
|
45
|
+
"table": "| Port | Holder | Evidence |",
|
|
46
|
+
"cell": {
|
|
47
|
+
"Port": "^[0-9]{1,5}$"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"heading": "^## Mutations$",
|
|
52
|
+
"table": "| Effect | Resource | Before | After |",
|
|
53
|
+
"cell": {
|
|
54
|
+
"Effect": "^`(update-config|restart-service|upsert-dashboard|update-remote-write|create-project|assign-profile|assign-gate|enforce-setting|create-tunnel|update-tunnel-route|upsert-proxied-dns)`$"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"heading": "^## Checks$",
|
|
59
|
+
"table": "| Check | Resource | Status | Evidence |",
|
|
60
|
+
"minRows": 1,
|
|
61
|
+
"cell": {
|
|
62
|
+
"Status": "^(passed|failed)$",
|
|
63
|
+
"Evidence": "\\S"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"heading": "^## Findings$",
|
|
68
|
+
"table": "| Code | Resource | Port | Holder | Statement |",
|
|
69
|
+
"minRows": 1,
|
|
70
|
+
"cell": {
|
|
71
|
+
"Code": "^`(SHARED_SERVICE_INVENTORIED|PORT_COORDINATION_REQUIRED|ALREADY_CONVERGED|PARTIAL_MUTATION|PRODUCT_DEPLOYMENT_DECLINED)`$",
|
|
72
|
+
"Statement": "\\S"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# platform-operation-receipt — observability prometheus/shared
|
|
2
|
+
|
|
3
|
+
One paragraph: which shared service was inventoried, which approved delta was applied, and which
|
|
4
|
+
proof set was proved. Written by `platform.operate` as `response/response.md`. It proves the shared
|
|
5
|
+
service reached the approved state; it proves nothing about any product.
|
|
6
|
+
|
|
7
|
+
## Binding
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Operator | `platform.operate` |
|
|
12
|
+
| Step | `step-1/parallel-1` |
|
|
13
|
+
| Project | `starci-academy` |
|
|
14
|
+
| Service | `prometheus/shared` |
|
|
15
|
+
| Service kind | observability |
|
|
16
|
+
| Owner | `platform-team` |
|
|
17
|
+
| Approval | `@worktrees/debts/be.md#metrics-approval` |
|
|
18
|
+
| Desired state | `sha256:0000000000000000000000000000000000000000000000000000000000000000` |
|
|
19
|
+
| Inventory fingerprint | `sha256:1111111111111111111111111111111111111111111111111111111111111111` |
|
|
20
|
+
|
|
21
|
+
## Convergence
|
|
22
|
+
|
|
23
|
+
| Field | Value |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| Convergence | already-converged |
|
|
26
|
+
|
|
27
|
+
## Inventoried resources
|
|
28
|
+
|
|
29
|
+
| Resource | Kind | Revision | Owner |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| `prometheus/shared` | observability | r-14 | `platform-team` |
|
|
32
|
+
|
|
33
|
+
## Port holders
|
|
34
|
+
|
|
35
|
+
| Port | Holder | Evidence |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
|
|
38
|
+
## Mutations
|
|
39
|
+
|
|
40
|
+
| Effect | Resource | Before | After |
|
|
41
|
+
| --- | --- | --- | --- |
|
|
42
|
+
|
|
43
|
+
## Checks
|
|
44
|
+
|
|
45
|
+
| Check | Resource | Status | Evidence |
|
|
46
|
+
| --- | --- | --- | --- |
|
|
47
|
+
| `service-health` | `prometheus/shared` | passed | `logs/health.txt` |
|
|
48
|
+
|
|
49
|
+
## Findings
|
|
50
|
+
|
|
51
|
+
| Code | Resource | Port | Holder | Statement |
|
|
52
|
+
| --- | --- | --- | --- | --- |
|
|
53
|
+
| `SHARED_SERVICE_INVENTORIED` | `prometheus/shared` | — | — | the service was inventoried before anything changed |
|
|
54
|
+
| `ALREADY_CONVERGED` | `prometheus/shared` | — | — | the service already matched the approved plan |
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:probes",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"required": [
|
|
6
|
+
"deadlineSeconds",
|
|
7
|
+
"elapsedSeconds",
|
|
8
|
+
"backoffSeconds",
|
|
9
|
+
"observations",
|
|
10
|
+
"finalCondition"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"deadlineSeconds": {
|
|
14
|
+
"type": "integer",
|
|
15
|
+
"minimum": 1
|
|
16
|
+
},
|
|
17
|
+
"elapsedSeconds": {
|
|
18
|
+
"type": "integer",
|
|
19
|
+
"minimum": 0
|
|
20
|
+
},
|
|
21
|
+
"backoffSeconds": {
|
|
22
|
+
"type": "integer",
|
|
23
|
+
"minimum": 1
|
|
24
|
+
},
|
|
25
|
+
"observations": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"minItems": 1,
|
|
28
|
+
"maxItems": 256,
|
|
29
|
+
"items": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"additionalProperties": false,
|
|
32
|
+
"required": [
|
|
33
|
+
"observedAt",
|
|
34
|
+
"condition",
|
|
35
|
+
"activeReleaseIds",
|
|
36
|
+
"activeDigest",
|
|
37
|
+
"availableTargets",
|
|
38
|
+
"probeResults"
|
|
39
|
+
],
|
|
40
|
+
"properties": {
|
|
41
|
+
"observedAt": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"format": "date-time"
|
|
44
|
+
},
|
|
45
|
+
"condition": {
|
|
46
|
+
"enum": [
|
|
47
|
+
"progressing",
|
|
48
|
+
"failing",
|
|
49
|
+
"steady"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"activeReleaseIds": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"minItems": 1,
|
|
55
|
+
"maxItems": 8,
|
|
56
|
+
"uniqueItems": true,
|
|
57
|
+
"items": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"pattern": "^release:[A-Za-z0-9._-]+$"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"activeDigest": {
|
|
63
|
+
"oneOf": [
|
|
64
|
+
{
|
|
65
|
+
"type": "string",
|
|
66
|
+
"pattern": "^sha256:[0-9a-f]{64}$"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"type": "null"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"availableTargets": {
|
|
74
|
+
"type": "integer",
|
|
75
|
+
"minimum": 0
|
|
76
|
+
},
|
|
77
|
+
"probeResults": {
|
|
78
|
+
"type": "array",
|
|
79
|
+
"items": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"additionalProperties": false,
|
|
82
|
+
"required": [
|
|
83
|
+
"probeId",
|
|
84
|
+
"status",
|
|
85
|
+
"observedStatus",
|
|
86
|
+
"observedAt"
|
|
87
|
+
],
|
|
88
|
+
"properties": {
|
|
89
|
+
"probeId": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$"
|
|
92
|
+
},
|
|
93
|
+
"status": {
|
|
94
|
+
"enum": [
|
|
95
|
+
"pass",
|
|
96
|
+
"fail"
|
|
97
|
+
]
|
|
98
|
+
},
|
|
99
|
+
"observedStatus": {
|
|
100
|
+
"oneOf": [
|
|
101
|
+
{
|
|
102
|
+
"type": "integer",
|
|
103
|
+
"minimum": 100,
|
|
104
|
+
"maximum": 599
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"type": "null"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"observedAt": {
|
|
112
|
+
"type": "string",
|
|
113
|
+
"format": "date-time"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"finalCondition": {
|
|
122
|
+
"enum": [
|
|
123
|
+
"progressing",
|
|
124
|
+
"failing",
|
|
125
|
+
"steady",
|
|
126
|
+
"deadline-exceeded"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "kind:proof",
|
|
3
|
+
"title": "One declared proof of one operation, with the command that was run and what came back; the file is named <operationId>.<proofKind>.json.",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"additionalProperties": false,
|
|
6
|
+
"required": ["operationId", "proofKind", "commandRef", "exitCode", "result", "output", "statement", "contractFingerprint"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"operationId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
9
|
+
"proofKind": { "enum": ["unit", "integration", "migration-replay", "conformance-read", "runtime-probe"] },
|
|
10
|
+
"commandRef": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
|
11
|
+
"exitCode": { "type": "integer", "minimum": 0, "maximum": 255 },
|
|
12
|
+
"result": { "enum": ["passed", "failed"] },
|
|
13
|
+
"output": { "type": "string", "minLength": 1, "maxLength": 8192 },
|
|
14
|
+
"statement": { "type": "string", "minLength": 1, "maxLength": 4096 },
|
|
15
|
+
"contractFingerprint": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "quality-verification",
|
|
3
|
+
"title": "^# quality-verification — [0-9a-f]{40}$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{
|
|
6
|
+
"heading": "^## Binding$",
|
|
7
|
+
"table": "| Field | Value |",
|
|
8
|
+
"rows": [
|
|
9
|
+
"Operator",
|
|
10
|
+
"Step",
|
|
11
|
+
"Checkout",
|
|
12
|
+
"Head",
|
|
13
|
+
"Session branch",
|
|
14
|
+
"Predecessors"
|
|
15
|
+
],
|
|
16
|
+
"cell": {
|
|
17
|
+
"Value": "\\S"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"heading": "^## Gate plan$",
|
|
22
|
+
"table": "| Gate | Required | Command | Configuration |",
|
|
23
|
+
"minRows": 1,
|
|
24
|
+
"cell": {
|
|
25
|
+
"Gate": "^`(format|lint|typecheck|build|unit-coverage|integration|e2e|sonar)`$",
|
|
26
|
+
"Required": "^(yes|no)$"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"heading": "^## Results$",
|
|
31
|
+
"table": "| Gate | Status | Exit code | Evidence | Classification | Statement |",
|
|
32
|
+
"minRows": 1,
|
|
33
|
+
"cell": {
|
|
34
|
+
"Gate": "^`(format|lint|typecheck|build|unit-coverage|integration|e2e|sonar)`$",
|
|
35
|
+
"Status": "^(pass|fail|external-blocker|skipped-not-requested)$",
|
|
36
|
+
"Classification": "^(in-boundary|boundary-drift|flaky|external-blocker|—)$",
|
|
37
|
+
"Statement": "\\S"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"heading": "^## Coverage$",
|
|
42
|
+
"table": "| Metric | Measured | Threshold | Verdict |",
|
|
43
|
+
"cell": {
|
|
44
|
+
"Metric": "^(statements|lines|functions|branches)$",
|
|
45
|
+
"Verdict": "^(at-or-above|below)$"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"heading": "^## Sonar$",
|
|
50
|
+
"table": "| Field | Value |",
|
|
51
|
+
"rows": [
|
|
52
|
+
"Scope",
|
|
53
|
+
"Finding"
|
|
54
|
+
],
|
|
55
|
+
"cell": {
|
|
56
|
+
"Value": "\\S"
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"heading": "^## Debts$",
|
|
61
|
+
"table": "| Debt | Gate | Approval | Owner | Expires | Statement |",
|
|
62
|
+
"cell": {
|
|
63
|
+
"Gate": "^`(format|lint|typecheck|build|unit-coverage|integration|e2e|sonar)`$"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"heading": "^## Findings$",
|
|
68
|
+
"table": "| Code | Gate | Statement |",
|
|
69
|
+
"minRows": 1,
|
|
70
|
+
"cell": {
|
|
71
|
+
"Code": "^`(PREDECESSOR_CONSUMED|SONAR_NEW_CODE_ONLY|E2E_NOT_REQUESTED|COVERAGE_BELOW_THRESHOLD|FLAKY_CONFIRMED|DEBT_DECLARED)`$",
|
|
72
|
+
"Statement": "\\S"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"heading": "^## Verdict$",
|
|
77
|
+
"table": "| Field | Value |",
|
|
78
|
+
"exactRows": 1,
|
|
79
|
+
"rows": [
|
|
80
|
+
"Verdict"
|
|
81
|
+
],
|
|
82
|
+
"cell": {
|
|
83
|
+
"Value": "^`(pass|fail)`$"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# quality-verification — 1111111111111111111111111111111111111111
|
|
2
|
+
|
|
3
|
+
One paragraph: which delivery was verified, on which head, and what the verdict rests on. Written by
|
|
4
|
+
`quality.verify` as `response/response.md`. A red verdict is a complete invocation; only an inability
|
|
5
|
+
to reach any verdict at all is a stop.
|
|
6
|
+
|
|
7
|
+
## Binding
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Operator | `quality.verify` |
|
|
12
|
+
| Step | `step-1/parallel-1` |
|
|
13
|
+
| Checkout | `@workspaces/be` |
|
|
14
|
+
| Head | `1111111111111111111111111111111111111111` |
|
|
15
|
+
| Session branch | `session/s-1` |
|
|
16
|
+
| Predecessors | `step-1/parallel-1/response/response.md`, `step-1/parallel-1/response/changes.md` |
|
|
17
|
+
|
|
18
|
+
## Gate plan
|
|
19
|
+
|
|
20
|
+
| Gate | Required | Command | Configuration |
|
|
21
|
+
| --- | --- | --- | --- |
|
|
22
|
+
| `lint` | yes | `package.json#scripts.lint` | `eslint.config.mjs` |
|
|
23
|
+
|
|
24
|
+
## Results
|
|
25
|
+
|
|
26
|
+
| Gate | Status | Exit code | Evidence | Classification | Statement |
|
|
27
|
+
| --- | --- | --- | --- | --- | --- |
|
|
28
|
+
| `lint` | pass | 0 | `gates/lint.log` | — | zero errors and zero warnings |
|
|
29
|
+
|
|
30
|
+
## Coverage
|
|
31
|
+
|
|
32
|
+
| Metric | Measured | Threshold | Verdict |
|
|
33
|
+
| --- | --- | --- | --- |
|
|
34
|
+
| branches | 81.4 | 80 | at-or-above |
|
|
35
|
+
|
|
36
|
+
## Sonar
|
|
37
|
+
|
|
38
|
+
| Field | Value |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| Scope | new-code |
|
|
41
|
+
| Finding | — |
|
|
42
|
+
|
|
43
|
+
## Debts
|
|
44
|
+
|
|
45
|
+
| Debt | Gate | Approval | Owner | Expires | Statement |
|
|
46
|
+
| --- | --- | --- | --- | --- | --- |
|
|
47
|
+
|
|
48
|
+
## Findings
|
|
49
|
+
|
|
50
|
+
| Code | Gate | Statement |
|
|
51
|
+
| --- | --- | --- |
|
|
52
|
+
| `PREDECESSOR_CONSUMED` | — | the producer receipt was consumed unchanged at the frozen head |
|
|
53
|
+
|
|
54
|
+
## Verdict
|
|
55
|
+
|
|
56
|
+
| Field | Value |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| Verdict | `pass` |
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "release-deployment",
|
|
3
|
+
"title": "^# release-deployment — release:[A-Za-z0-9._-]+$",
|
|
4
|
+
"sections": [
|
|
5
|
+
{
|
|
6
|
+
"heading": "^## Binding$",
|
|
7
|
+
"table": "| Field | Value |",
|
|
8
|
+
"rows": [
|
|
9
|
+
"Operator",
|
|
10
|
+
"Step",
|
|
11
|
+
"Project",
|
|
12
|
+
"Release",
|
|
13
|
+
"Artifact",
|
|
14
|
+
"Digest",
|
|
15
|
+
"Target",
|
|
16
|
+
"Environment",
|
|
17
|
+
"Replaced release",
|
|
18
|
+
"Approval",
|
|
19
|
+
"Manifest",
|
|
20
|
+
"Steady deadline",
|
|
21
|
+
"Rollback identity"
|
|
22
|
+
],
|
|
23
|
+
"cell": {
|
|
24
|
+
"Value": "\\S"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"heading": "^## Outcome$",
|
|
29
|
+
"table": "| Field | Value |",
|
|
30
|
+
"exactRows": 2,
|
|
31
|
+
"rows": [
|
|
32
|
+
"Outcome",
|
|
33
|
+
"Branch"
|
|
34
|
+
],
|
|
35
|
+
"cell": {
|
|
36
|
+
"Value": "^(deployed|rolled-back|none|recover|rollback)$"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"heading": "^## Steps$",
|
|
41
|
+
"table": "| Step | State | Revision before | Revision after | Statement |",
|
|
42
|
+
"minRows": 1,
|
|
43
|
+
"cell": {
|
|
44
|
+
"Step": "^`(authorize|manifest-validate|plan|execution-root-init|credential-resolve|host-prepare|artifact-build|artifact-publish|migrate|domain-reconcile|rollout|monitor|recover|rollback|proof)`$",
|
|
45
|
+
"State": "^(applied|no-op|skipped|failed)$",
|
|
46
|
+
"Statement": "\\S"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"heading": "^## Monitoring$",
|
|
51
|
+
"table": "| Field | Value |",
|
|
52
|
+
"rows": [
|
|
53
|
+
"Deadline",
|
|
54
|
+
"Elapsed",
|
|
55
|
+
"Backoff",
|
|
56
|
+
"Final condition"
|
|
57
|
+
],
|
|
58
|
+
"cell": {
|
|
59
|
+
"Value": "\\S"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"heading": "^## Steady state$",
|
|
64
|
+
"table": "| Metric | Value |",
|
|
65
|
+
"cell": {
|
|
66
|
+
"Value": "\\S"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"heading": "^## Findings$",
|
|
71
|
+
"table": "| Code | Step | Statement |",
|
|
72
|
+
"cell": {
|
|
73
|
+
"Code": "^`(IDEMPOTENT_NO_OP|PROBE_TRANSIENT|TARGET_UNAVAILABLE|SUPERSEDED_TARGET_ACTIVE|FOREIGN_RELEASE_OBSERVED|APPROVED_ACTION_REPEATED)`$",
|
|
74
|
+
"Statement": "\\S"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"heading": "^## Fallbacks taken$",
|
|
79
|
+
"table": "| Code | Action |",
|
|
80
|
+
"cell": {
|
|
81
|
+
"Code": "^`[A-Z][A-Z0-9_]+`$"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# release-deployment — release:2026.01.10-1
|
|
2
|
+
|
|
3
|
+
One paragraph: which immutable release reached which target, under which authorization, and what the
|
|
4
|
+
steady state rests on. Written by `release.deploy` as `response/response.md`. A rolled-back run is a
|
|
5
|
+
terminal outcome of its own and never reads as delivery of the release it rejected.
|
|
6
|
+
|
|
7
|
+
## Binding
|
|
8
|
+
|
|
9
|
+
| Field | Value |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Operator | `release.deploy` |
|
|
12
|
+
| Step | `step-1/parallel-1` |
|
|
13
|
+
| Project | `starci-academy` |
|
|
14
|
+
| Release | `release:2026.01.10-1` |
|
|
15
|
+
| Artifact | `@remote/ghcr/starci/academy-api` |
|
|
16
|
+
| Digest | `sha256:1111111111111111111111111111111111111111111111111111111111111111` |
|
|
17
|
+
| Target | `production/api` |
|
|
18
|
+
| Environment | production |
|
|
19
|
+
| Replaced release | `release:2026.01.03-2` |
|
|
20
|
+
| Approval | `@worktrees/businesses/features/release/model.json#deploy-grant` |
|
|
21
|
+
| Manifest | `.stacks/production/api.manifest.json` |
|
|
22
|
+
| Steady deadline | 600 |
|
|
23
|
+
| Rollback identity | `release:2026.01.03-2` |
|
|
24
|
+
|
|
25
|
+
## Outcome
|
|
26
|
+
|
|
27
|
+
| Field | Value |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| Outcome | deployed |
|
|
30
|
+
| Branch | none |
|
|
31
|
+
|
|
32
|
+
## Steps
|
|
33
|
+
|
|
34
|
+
| Step | State | Revision before | Revision after | Statement |
|
|
35
|
+
| --- | --- | --- | --- | --- |
|
|
36
|
+
| `authorize` | applied | — | — | the declared grant covers this project, environment and target |
|
|
37
|
+
| `rollout` | applied | 4 | 5 | the target moved to the immutable digest |
|
|
38
|
+
| `monitor` | applied | — | — | the window was observed to its end |
|
|
39
|
+
|
|
40
|
+
## Monitoring
|
|
41
|
+
|
|
42
|
+
| Field | Value |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| Deadline | 600 |
|
|
45
|
+
| Elapsed | 420 |
|
|
46
|
+
| Backoff | 30 |
|
|
47
|
+
| Final condition | steady |
|
|
48
|
+
|
|
49
|
+
## Steady state
|
|
50
|
+
|
|
51
|
+
| Metric | Value |
|
|
52
|
+
| --- | --- |
|
|
53
|
+
| Active digest | `sha256:1111111111111111111111111111111111111111111111111111111111111111` |
|
|
54
|
+
| Available targets | 1 of 1 |
|
|
55
|
+
| Superseded active | 0 |
|
|
56
|
+
| Window elapsed | 300 |
|
|
57
|
+
|
|
58
|
+
## Findings
|
|
59
|
+
|
|
60
|
+
| Code | Step | Statement |
|
|
61
|
+
| --- | --- | --- |
|
|
62
|
+
| `IDEMPOTENT_NO_OP` | `host-prepare` | the host already matched the declaration |
|
|
63
|
+
|
|
64
|
+
## Fallbacks taken
|
|
65
|
+
|
|
66
|
+
| Code | Action |
|
|
67
|
+
| --- | --- |
|