codex-workflow-v2 2.0.0-beta.1 → 2.0.0-beta.11
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 +94 -12
- package/dist/src/alpha6/adoption.js +13 -3
- package/dist/src/alpha6/adoption.js.map +1 -1
- package/dist/src/alpha6/handoff.d.ts +26 -2
- package/dist/src/alpha6/handoff.js +277 -29
- package/dist/src/alpha6/handoff.js.map +1 -1
- package/dist/src/alpha6/mechanical-feasibility.d.ts +7 -0
- package/dist/src/alpha6/mechanical-feasibility.js +303 -0
- package/dist/src/alpha6/mechanical-feasibility.js.map +1 -0
- package/dist/src/alpha6/milestone.d.ts +37 -2
- package/dist/src/alpha6/milestone.js +472 -33
- package/dist/src/alpha6/milestone.js.map +1 -1
- package/dist/src/alpha6/plan-integrity.d.ts +14 -0
- package/dist/src/alpha6/plan-integrity.js +127 -0
- package/dist/src/alpha6/plan-integrity.js.map +1 -0
- package/dist/src/alpha6/plan-risk.d.ts +1 -0
- package/dist/src/alpha6/plan-risk.js +15 -7
- package/dist/src/alpha6/plan-risk.js.map +1 -1
- package/dist/src/alpha6/remediation.d.ts +2 -1
- package/dist/src/alpha6/remediation.js +186 -9
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/alpha6/review.d.ts +3 -0
- package/dist/src/alpha6/review.js +24 -0
- package/dist/src/alpha6/review.js.map +1 -1
- package/dist/src/cli.js +486 -46
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +238 -6
- package/dist/src/contracts.js +1 -1
- package/dist/src/credential-output.d.ts +10 -0
- package/dist/src/credential-output.js +73 -0
- package/dist/src/credential-output.js.map +1 -0
- package/dist/src/dependency-provenance.d.ts +19 -0
- package/dist/src/dependency-provenance.js +185 -0
- package/dist/src/dependency-provenance.js.map +1 -0
- package/dist/src/errors.d.ts +1 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/git.d.ts +1 -1
- package/dist/src/git.js +13 -5
- package/dist/src/git.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/lifecycle/canonical-hash.d.ts +6 -0
- package/dist/src/lifecycle/canonical-hash.js +24 -0
- package/dist/src/lifecycle/canonical-hash.js.map +1 -0
- package/dist/src/lifecycle/catalog.d.ts +26 -0
- package/dist/src/lifecycle/catalog.js +208 -0
- package/dist/src/lifecycle/catalog.js.map +1 -0
- package/dist/src/lifecycle/compiler-inspection.d.ts +48 -0
- package/dist/src/lifecycle/compiler-inspection.js +29 -0
- package/dist/src/lifecycle/compiler-inspection.js.map +1 -0
- package/dist/src/lifecycle/core-static-readiness.d.ts +6 -0
- package/dist/src/lifecycle/core-static-readiness.js +130 -0
- package/dist/src/lifecycle/core-static-readiness.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan-authority.d.ts +53 -0
- package/dist/src/lifecycle/corrective-replan-authority.js +139 -0
- package/dist/src/lifecycle/corrective-replan-authority.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan-binding-manifest.d.ts +21 -0
- package/dist/src/lifecycle/corrective-replan-binding-manifest.js +35 -0
- package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan-credential-core.d.ts +86 -0
- package/dist/src/lifecycle/corrective-replan-credential-core.js +563 -0
- package/dist/src/lifecycle/corrective-replan-credential-core.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan-credential-schema.d.ts +17 -0
- package/dist/src/lifecycle/corrective-replan-credential-schema.js +44 -0
- package/dist/src/lifecycle/corrective-replan-credential-schema.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan-credentials.d.ts +47 -0
- package/dist/src/lifecycle/corrective-replan-credentials.js +103 -0
- package/dist/src/lifecycle/corrective-replan-credentials.js.map +1 -0
- package/dist/src/lifecycle/corrective-replan.d.ts +64 -0
- package/dist/src/lifecycle/corrective-replan.js +553 -0
- package/dist/src/lifecycle/corrective-replan.js.map +1 -0
- package/dist/src/lifecycle/evaluator.d.ts +2 -0
- package/dist/src/lifecycle/evaluator.js +35 -0
- package/dist/src/lifecycle/evaluator.js.map +1 -0
- package/dist/src/lifecycle/fingerprint.d.ts +31 -0
- package/dist/src/lifecycle/fingerprint.js +388 -0
- package/dist/src/lifecycle/fingerprint.js.map +1 -0
- package/dist/src/lifecycle/immutable.d.ts +1 -0
- package/dist/src/lifecycle/immutable.js +10 -0
- package/dist/src/lifecycle/immutable.js.map +1 -0
- package/dist/src/lifecycle/implementation-table.d.ts +29 -0
- package/dist/src/lifecycle/implementation-table.js +87 -0
- package/dist/src/lifecycle/implementation-table.js.map +1 -0
- package/dist/src/lifecycle/index.d.ts +4 -0
- package/dist/src/lifecycle/index.js +5 -0
- package/dist/src/lifecycle/index.js.map +1 -0
- package/dist/src/lifecycle/schema-artifact.d.ts +12 -0
- package/dist/src/lifecycle/schema-artifact.js +214 -0
- package/dist/src/lifecycle/schema-artifact.js.map +1 -0
- package/dist/src/lifecycle/semantic-registry.d.ts +6 -0
- package/dist/src/lifecycle/semantic-registry.js +489 -0
- package/dist/src/lifecycle/semantic-registry.js.map +1 -0
- package/dist/src/lifecycle/types.d.ts +718 -0
- package/dist/src/lifecycle/types.js +4 -0
- package/dist/src/lifecycle/types.js.map +1 -0
- package/dist/src/observation.d.ts +20 -0
- package/dist/src/observation.js +171 -0
- package/dist/src/observation.js.map +1 -0
- package/dist/src/reviewer.d.ts +43 -1
- package/dist/src/reviewer.js +203 -50
- package/dist/src/reviewer.js.map +1 -1
- package/dist/src/state/corrective-replan-executor.d.ts +64 -0
- package/dist/src/state/corrective-replan-executor.js +608 -0
- package/dist/src/state/corrective-replan-executor.js.map +1 -0
- package/dist/src/state/corrective-replan-public-schema.d.ts +3 -0
- package/dist/src/state/corrective-replan-public-schema.js +43 -0
- package/dist/src/state/corrective-replan-public-schema.js.map +1 -0
- package/dist/src/state/corrective-replan-public.d.ts +95 -0
- package/dist/src/state/corrective-replan-public.js +665 -0
- package/dist/src/state/corrective-replan-public.js.map +1 -0
- package/dist/src/state/corrective-replan-transaction.d.ts +160 -0
- package/dist/src/state/corrective-replan-transaction.js +730 -0
- package/dist/src/state/corrective-replan-transaction.js.map +1 -0
- package/dist/src/state/corrective-yield-executor.d.ts +31 -0
- package/dist/src/state/corrective-yield-executor.js +236 -0
- package/dist/src/state/corrective-yield-executor.js.map +1 -0
- package/dist/src/state/corrective-yield-transaction.d.ts +97 -0
- package/dist/src/state/corrective-yield-transaction.js +591 -0
- package/dist/src/state/corrective-yield-transaction.js.map +1 -0
- package/dist/src/state/lock.d.ts +76 -3
- package/dist/src/state/lock.js +611 -30
- package/dist/src/state/lock.js.map +1 -1
- package/dist/src/state/store.d.ts +3 -0
- package/dist/src/state/store.js +65 -12
- package/dist/src/state/store.js.map +1 -1
- package/dist/src/transition-core.d.ts +67 -0
- package/dist/src/transition-core.js +318 -0
- package/dist/src/transition-core.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/src/workflow.d.ts +88 -24
- package/dist/src/workflow.js +1647 -270
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +61 -1
- package/docs/beta11-plan-integrity-recovery-brief.md +38 -0
- package/docs/beta2-initial-assembly-navigation-brief.md +616 -0
- package/docs/delegated-approval.md +26 -1
- package/docs/development-flow.md +63 -8
- package/docs/lifecycle/state-machine-stabilization.md +641 -0
- package/docs/pdf/README.md +24 -0
- package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
- package/docs/pdf/requirements.txt +1 -0
- package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +234 -0
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +334 -0
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +413 -0
- package/docs/problem-briefs/01-pre-implementation-integrity.md +478 -0
- package/docs/problem-briefs/02-minimal-step-integrity.md +411 -0
- package/docs/problem-briefs/03-minimal-agent-context-integrity.md +358 -0
- package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +566 -0
- package/docs/problem-briefs/BRIEF-TEMPLATE.md +56 -0
- package/docs/problem-briefs/README.md +120 -0
- package/docs/problem-briefs/evidence/p01-mechanical-feasibility-corpus.md +90 -0
- package/docs/problem-briefs/evidence/signal-v4-pre-m3-replay.md +246 -0
- package/docs/release.md +30 -6
- package/docs/split-required-recovery.md +19 -25
- package/docs/stable-release-defect-register.md +465 -3
- package/docs/updating-existing-project.md +59 -4
- package/docs/validation-report.md +124 -56
- package/package.json +9 -1
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +10 -3
- package/plugins/codex-workflow-gateway/references/protocol.md +92 -4
- package/plugins/codex-workflow-gateway/scripts/chat-registry.mjs +376 -0
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +263 -4
- package/references/state-machine.md +13 -6
- package/roles/delivery-coordinator.md +39 -0
- package/schemas/adoption-posture-event.schema.json +1 -1
- package/schemas/authorization-event.schema.json +64 -1
- package/schemas/context-envelope.schema.json +1 -1
- package/schemas/corrective-decision-event.schema.json +48 -3
- package/schemas/corrective-replan-credentials.private.schema.json +98 -0
- package/schemas/corrective-replan-execution-event.private.schema.json +53 -0
- package/schemas/corrective-replan-public.schema.json +142 -0
- package/schemas/corrective-replan-task-transaction.private.schema.json +151 -0
- package/schemas/corrective-yield-task-transaction.private.schema.json +98 -0
- package/schemas/milestone-scope-change-event.schema.json +6 -1
- package/schemas/milestone.schema.json +6 -1
- package/schemas/remediation-event.schema.json +11 -1
- package/schemas/task-handoff-event.schema.json +19 -3
- package/schemas/task.schema.json +24 -1
- package/schemas/transition-definition.schema.json +2609 -0
- package/schemas/transition-payloads.schema.json +140 -0
- package/scripts/generate-pdf-docs.py +512 -0
- package/scripts/run-pdf-docs.mjs +62 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Workflow v2 — Problem Briefs
|
|
2
|
+
|
|
3
|
+
This registry reserves 10 problem slots for Workflow v2 redesign/reliability work. Four briefs are
|
|
4
|
+
currently defined; the remaining slots are intentionally unmaterialized.
|
|
5
|
+
|
|
6
|
+
## Status model
|
|
7
|
+
|
|
8
|
+
Each brief MUST declare exactly one status in YAML frontmatter:
|
|
9
|
+
|
|
10
|
+
- `hypothesis` — proposed solution; its problem, design, or implementation boundary still has an
|
|
11
|
+
unresolved pre-implementation gate.
|
|
12
|
+
- `approved` — the problem and implementation design have sufficient pre-implementation evidence
|
|
13
|
+
and the brief is accepted for implementation. This status does not claim that the code or its
|
|
14
|
+
implementation tests already exist.
|
|
15
|
+
- `implemented` — approved design implemented and its required acceptance tests pass.
|
|
16
|
+
|
|
17
|
+
Status progression is monotonic by default:
|
|
18
|
+
|
|
19
|
+
`hypothesis → approved → implemented`
|
|
20
|
+
|
|
21
|
+
A regression or disproven assumption should not silently move a brief backward. Record the reason in the brief's Decision Log and create a new revision if necessary.
|
|
22
|
+
|
|
23
|
+
## Brief registry
|
|
24
|
+
|
|
25
|
+
| # | Problem | File | Status |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| 01 | Механически невыполнимый Task Plan может получить execution authorization | `01-pre-implementation-integrity.md` | approved |
|
|
28
|
+
| 02 | STEP не является полезным инкрементом | `02-minimal-step-integrity.md` | hypothesis |
|
|
29
|
+
| 03 | Разный контекст агентов и слишком позднее обнаружение проблем | `03-minimal-agent-context-integrity.md` | hypothesis |
|
|
30
|
+
| 04 | Milestone Task execution не защищён явными зависимостями | `04-task-dependency-and-structural-replacement-integrity.md` | approved |
|
|
31
|
+
| 05 | TBD | — | — |
|
|
32
|
+
| 06 | TBD | — | — |
|
|
33
|
+
| 07 | TBD | — | — |
|
|
34
|
+
| 08 | TBD | — | — |
|
|
35
|
+
| 09 | TBD | — | — |
|
|
36
|
+
| 10 | TBD | — | — |
|
|
37
|
+
|
|
38
|
+
## Required brief metadata
|
|
39
|
+
|
|
40
|
+
Every brief should start with:
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
---
|
|
44
|
+
brief_id: WF2-P01
|
|
45
|
+
problem: "..."
|
|
46
|
+
status: hypothesis
|
|
47
|
+
owner: null
|
|
48
|
+
created_at: 2026-08-23
|
|
49
|
+
approved_at: null
|
|
50
|
+
implemented_at: null
|
|
51
|
+
revision: 1
|
|
52
|
+
---
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Approval and implementation rules
|
|
56
|
+
|
|
57
|
+
The two gates are deliberately separate.
|
|
58
|
+
|
|
59
|
+
### Design approval (`hypothesis -> approved`)
|
|
60
|
+
|
|
61
|
+
A brief may be approved before its implementation exists only when:
|
|
62
|
+
|
|
63
|
+
- the problem and root cause are supported by current source or reproducible behavior;
|
|
64
|
+
- the proposed authority, data contract, transition routing, compatibility policy, and failure
|
|
65
|
+
behavior are concrete enough to implement without inventing semantics in code;
|
|
66
|
+
- conflicts and ordering dependencies with other briefs are closed or explicitly deferred behind a
|
|
67
|
+
fail-closed boundary;
|
|
68
|
+
- the validation plan contains both failure cases and successful controls;
|
|
69
|
+
- any pre-implementation replay required to validate a semantic hypothesis has completed.
|
|
70
|
+
|
|
71
|
+
Historical completed Tasks are replay inputs only when they are relevant controls. A fresh,
|
|
72
|
+
version-pinned replay may replace historical active-Milestone topology when the brief does not
|
|
73
|
+
claim to recover that topology.
|
|
74
|
+
|
|
75
|
+
### Implementation acceptance (`approved -> implemented`)
|
|
76
|
+
|
|
77
|
+
A brief may move from `approved` to `implemented` only after the implementation is merged/installed
|
|
78
|
+
as intended and its declared contract, E2E, regression, compatibility, and fault-injection tests
|
|
79
|
+
pass. Tests that require the proposed code are implementation acceptance evidence; they are not a
|
|
80
|
+
precondition that makes design approval circular.
|
|
81
|
+
|
|
82
|
+
## Recommended go/no-go
|
|
83
|
+
|
|
84
|
+
This is an implementation-order recommendation, not a status change or approval record.
|
|
85
|
+
|
|
86
|
+
| Brief | Decision | Reason and gate |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| P04-A | **GO to review/merge — candidate green** | Revision 5 passed its 306/306 checkpoint and the final combined P04-A/P01-A 319/319 suite on `codex/p04-task-dependencies`. Keep status `approved` until the candidate is merged/installed and accepted. |
|
|
89
|
+
| P01-A | **GO to review/merge — candidate green** | Revision 5 implements the approved bounded evaluator after P04-A; typecheck, plugin/schema/release validation, 13 focused tests, beta.11 compatibility, and the final combined 319/319 suite pass. Keep status `approved` until merge/install and acceptance. P01-B remains deferred. |
|
|
90
|
+
| P02 | **NO-GO** | Do not implement until its output-to-evidence mapping and semantic-authority proposal pass the fresh/historical replay gate. The brief defines the required contract and current-state routing, but the causal Step hypothesis is still only partially confirmed. |
|
|
91
|
+
| P03 | **NO-GO** | Required category-B evidence is absent. Reconsider only after P04-A and the relevant P01 authority exist and a fresh role-separated replay isolates a real context omission. |
|
|
92
|
+
| P05 / P04-B | **NO-GO / not materialized** | Structural replacement, topology evolution, residual-scope redistribution, and completed-work adoption require a separate brief. P04-A blocks replacement rather than guessing these semantics. |
|
|
93
|
+
|
|
94
|
+
Recommended implementation sequence:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
P04-A -> P01-A -> validate P02 hypothesis -> validate P03 hypothesis
|
|
98
|
+
+-> separately materialize P05/P04-B when replacement is required
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The four-brief set is therefore not one implementation-ready batch. Only the first two bounded
|
|
102
|
+
phases have a recommended implementation route; P02 and P03 remain evidence-gated hypotheses.
|
|
103
|
+
|
|
104
|
+
## Current validation boundary
|
|
105
|
+
|
|
106
|
+
The isolated Signal pre-M3 replay is recorded in
|
|
107
|
+
[`evidence/signal-v4-pre-m3-replay.md`](evidence/signal-v4-pre-m3-replay.md). It is supporting
|
|
108
|
+
evidence, not approval evidence for all four briefs:
|
|
109
|
+
|
|
110
|
+
- it confirms several product and verification gaps;
|
|
111
|
+
- it does not reproduce Workflow-materialized role-separated Task execution because a legitimate
|
|
112
|
+
project-memory human gate stopped the isolated lifecycle;
|
|
113
|
+
- it does not exercise structural replacement;
|
|
114
|
+
- the source Signal repository was not modified;
|
|
115
|
+
- P01-A and P04-A are `approved` combined-branch candidates; P02 and P03 remain `hypothesis`.
|
|
116
|
+
Candidate code and focused tests do not by themselves satisfy the merge/install implementation gate.
|
|
117
|
+
|
|
118
|
+
Historical active-Milestone state and old M3 Task identifiers are not mandatory inputs to fresh
|
|
119
|
+
materialization validation. Brief-specific replay requirements must use fresh authority unless a
|
|
120
|
+
brief explicitly needs a historical regression control.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# P01-A mechanical-feasibility corpus replay
|
|
2
|
+
|
|
3
|
+
## Boundary and pinned sources
|
|
4
|
+
|
|
5
|
+
- Workflow repository HEAD: `01ff2e1f10ad8f707dc08219cffcc1013314ae4f`.
|
|
6
|
+
- Workflow root `package.json` at that HEAD contains literal scripts `validate`, `typecheck`,
|
|
7
|
+
`test`, and the other scripts shown by `git show HEAD:package.json`.
|
|
8
|
+
- Signal pre-M3 control revision: `5e456803698c1eb523ccec32bc77882ed240f49a`.
|
|
9
|
+
- Signal root `package.json` hash at that revision:
|
|
10
|
+
`d8f91d91f700bdf1593b908b1788e8b49fd5568e58510398343a771e58e5c92b`.
|
|
11
|
+
- Existing Workflow corpus sources:
|
|
12
|
+
- `tests/plan-integrity-recovery.test.ts` —
|
|
13
|
+
`3019adee756c03506768ab4a1cf9fbccc9a469552b6fdd217ad43982da0b1144`;
|
|
14
|
+
- `tests/integration.test.ts` —
|
|
15
|
+
`9e0ebfc34592516d319010818b05963c659719fb74a6d31acbeb1182c9726a1a`;
|
|
16
|
+
- `tests/workflow.test.ts` —
|
|
17
|
+
`e9399e50375ef8a250d61e4232ce3368212756f7280920ad407f3d54e57bfd2b`;
|
|
18
|
+
- Signal replay journal —
|
|
19
|
+
`e3909cfd5159daffd4c536042fc517f6555c7dfc3d1322efe5c2c99fd06b9763`.
|
|
20
|
+
|
|
21
|
+
This is a read-only design replay. It does not execute Plan checks and does not write Workflow or
|
|
22
|
+
Signal state.
|
|
23
|
+
|
|
24
|
+
## Frozen analyzer grammar used by the replay
|
|
25
|
+
|
|
26
|
+
### `wf2.root-npm-script@1`
|
|
27
|
+
|
|
28
|
+
Recognized input is the complete raw check string:
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
^npm run ([A-Za-z0-9][A-Za-z0-9:_-]*)$
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
There is one ASCII space between tokens. Arguments, options, quoting, environment prefixes,
|
|
35
|
+
operators, alternate package managers, `npm test`, and surrounding whitespace are unsupported.
|
|
36
|
+
The analyzer reads only the root `package.json` at the selected commit. If the script is absent,
|
|
37
|
+
write permission to root `package.json` in the current Step or a transitive declared predecessor
|
|
38
|
+
makes the finding `unverified`; otherwise it is `blocked`.
|
|
39
|
+
|
|
40
|
+
### `wf2.exact-output-path@1`
|
|
41
|
+
|
|
42
|
+
Recognized input is the complete raw expected-output string `path:<relative-path>`. The path uses
|
|
43
|
+
POSIX separators, is repository-relative, contains no empty, `.` or `..` segment, no glob token,
|
|
44
|
+
and every segment matches `[A-Za-z0-9._-]+`. Prose such as `feature.txt exists.` is unsupported.
|
|
45
|
+
|
|
46
|
+
An existing path passes. An absent path writable by the responsible Step under the existing
|
|
47
|
+
`allowedWrites` matcher passes the bounded permission check. Otherwise the finding is blocked,
|
|
48
|
+
unless a declared predecessor supplies the exact structured output described below.
|
|
49
|
+
|
|
50
|
+
### `wf2.exact-predecessor-path@1`
|
|
51
|
+
|
|
52
|
+
A predecessor supplies a missing consumer path only when it is in the consumer's transitive
|
|
53
|
+
declared Step dependency closure, declares the identical `path:<relative-path>` output, and its
|
|
54
|
+
`allowedWrites` permits that exact normalized path. Ordinal, prose, directory coincidence, and an
|
|
55
|
+
unrelated earlier Step do not count.
|
|
56
|
+
|
|
57
|
+
Analyzer order is the fixed order above. Findings are canonicalized by Step ID, analyzer ID, raw
|
|
58
|
+
subject, and result. The analyzer-set hash is the SHA-256 of canonical JSON containing those exact
|
|
59
|
+
IDs and versions.
|
|
60
|
+
|
|
61
|
+
## Replay cases
|
|
62
|
+
|
|
63
|
+
| Case | Source/control | Classification | Evidence and earliest effect |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| C01 | Workflow HEAD, `npm run validate` | `pass` | Root script exists at the pinned HEAD; no new gate or review. |
|
|
66
|
+
| C02 | `plan-integrity-recovery.test.ts`, `npm run processing:migrations:check`, Step cannot write `package.json` | `blocked` | Script is absent from the pinned root manifest. P01-A would reject authorization before Task start, avoiding the later run failure and Plan-integrity recovery cycle. |
|
|
67
|
+
| C03 | C02 with current/predecessor permission to write root `package.json` | `unverified` | Permission does not prove that the script will be created; no false block and no invented pass. |
|
|
68
|
+
| C04 | Existing Plan checks `npm test` | `unverified` | Deliberately outside the literal `npm run` grammar; existing successful Plans remain authorizable. |
|
|
69
|
+
| C05 | Existing shell checks such as `test -f feature.txt` and `grep ...` | `unverified` | The evaluator does not execute or interpret shell. |
|
|
70
|
+
| C06 | Existing prose outputs such as `feature.txt exists.` or `feature.txt contains ready.` | `unverified` | No bare-string path inference. |
|
|
71
|
+
| C07 | Synthetic `path:feature.txt`, absent at HEAD, responsible Step may write `feature.txt` | `pass` | Exact structured path and current write authority agree. |
|
|
72
|
+
| C08 | Synthetic `path:outside.txt`, absent at HEAD and outside current/prior write authority | `blocked` | The Plan proves that its declared output cannot be materialized within its own write contract. |
|
|
73
|
+
| C09 | Synthetic consumer `path:generated.txt` with an exact declared predecessor output and write permission | `pass` | Exact Step dependency, output, and permission form the complete bounded proof. |
|
|
74
|
+
| C10 | C09 with only prose, ordinal, an unrelated earlier Step, or directory overlap | `blocked` | No provider is inferred. |
|
|
75
|
+
| C11 | Signal pre-M3 `npm run validate` | `pass` | The pinned Signal manifest contains `validate`; the replay journal confirms the command passed. |
|
|
76
|
+
| C12 | Signal OBS-012 narrow typecheck versus project-reference/architecture failure | `pass` for the existing literal script; broader claim `unverified` | P01-A does not claim that one valid script semantically covers other build or architecture boundaries. |
|
|
77
|
+
|
|
78
|
+
## Result
|
|
79
|
+
|
|
80
|
+
- Proven blockers: C02, C08, C10. Each is an exact contradiction in the supported grammar.
|
|
81
|
+
- False blockers among successful controls: 0.
|
|
82
|
+
- Unsupported/unverified controls: C03–C06 and the broader semantic claim in C12.
|
|
83
|
+
- Earliest avoided transition: C02 moves detection from post-start execution/remediation to Task
|
|
84
|
+
authorization.
|
|
85
|
+
- No corpus result requires a new lifecycle stage, corrective-decision value, semantic reviewer,
|
|
86
|
+
Contract Registry, or P01-B decomposition authority.
|
|
87
|
+
|
|
88
|
+
Confidence is high for the pinned manifest/script findings and medium-high for corpus coverage. The
|
|
89
|
+
corpus is intentionally conservative: it proves the absence of false blockers for the supported
|
|
90
|
+
forms, not completeness over arbitrary commands or natural-language outputs.
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# Signal v4 pre-M3 replay journal
|
|
2
|
+
|
|
3
|
+
## Experiment boundary
|
|
4
|
+
|
|
5
|
+
- Purpose: validate the problem briefs by replaying the original Milestone 3 from a pre-M3 Signal revision.
|
|
6
|
+
- Source repository: `/Users/home-pc/htdocs/projects/signal_v4` (read-only for this experiment).
|
|
7
|
+
- Isolated implementation checkout: `/private/tmp/signal-v4-pre-m3-replay.1YfIMr/repo`.
|
|
8
|
+
- Pre-M3 revision: `5e456803698c1eb523ccec32bc77882ed240f49a` (`chore: update codex workflow v2 to 2.0.0-alpha.6`).
|
|
9
|
+
- Product and Workflow state in the source repository must not be changed.
|
|
10
|
+
- Workflow blockers are evidence. They may be bypassed only in the isolated checkout, without patching Workflow, so that the product Milestone can continue to completion.
|
|
11
|
+
|
|
12
|
+
## Why this is the pre-M3 revision
|
|
13
|
+
|
|
14
|
+
Confirmed evidence:
|
|
15
|
+
|
|
16
|
+
1. The first surviving approval transcript for the original M3 Coordinator records repository HEAD `5e456803698c1eb523ccec32bc77882ed240f49a` on `main`.
|
|
17
|
+
2. The first M3 implementation commit, `1ab23cba9d4c098a879fa23599b7aec84ff2bfea`, has `5e456803698c1eb523ccec32bc77882ed240f49a` as its direct parent.
|
|
18
|
+
3. The original Discovery and Milestone were created only after the Coordinator had started from that revision.
|
|
19
|
+
|
|
20
|
+
Confidence: high.
|
|
21
|
+
|
|
22
|
+
## Original user input used for replay
|
|
23
|
+
|
|
24
|
+
The original Coordinator task itself is no longer present as a normal archived task. Its first user message survives verbatim in the Guardian approval transcript:
|
|
25
|
+
|
|
26
|
+
`/Users/home-pc/.codex/sessions/2026/08/14/rollout-2026-08-14T06-02-44-019ffe38-d070-7971-9b3c-f9ea6643f077.jsonl`
|
|
27
|
+
|
|
28
|
+
The input was:
|
|
29
|
+
|
|
30
|
+
> Работай как delegate-координатор Workflow V2 для одного Milestone.
|
|
31
|
+
> Delegate actor: agent:deputy
|
|
32
|
+
> Delegation grant: DGR-01KZYFTXAW8C87Z7W07G3C9GR4
|
|
33
|
+
> Milestone ID: AUTO
|
|
34
|
+
> Требования пользователя: Сделать совместный Brainstorm для декомпозиции Milestone 3.
|
|
35
|
+
> Все команды и координацию Codex-чатов выполняешь ты. Начни с AGENTS.md, project-local gateway handshake, doctor, status и next. Выполни delegation show для DGR-ID и до мутаций проверь project, active status, delegate, scope, transitions и expiresAt. Не создавай, не продлевай и не расширяй grant.
|
|
36
|
+
> Для AUTO проведи Discovery; не materialize Milestone при blocking unknowns. Не принимай новые продуктовые решения и не расширяй scope: при смысловой неопределённости спроси меня. Подготовь Milestone и тонкие Tasks. Применяй grant только если текущий next вернул exact delegatedApprovalOptions для DGR-ID и transition. Actor всегда agent:deputy, никогда user.
|
|
37
|
+
> Required Tasks выполняй последовательно. Для каждой можешь открыть отдельный Codex-чат с Task delegate prompt, тем же actor и DGR-ID. Не запускай два writer на одном checkout. Worker и Reviewer grant не используют: approval выполняет delegate-координатор после evidence.
|
|
38
|
+
> После merge всех Tasks выполни Milestone validation. Final acceptance делай только при exact milestone.final_accept option и с текущим MSA-code в том же turn. Иначе остановись перед human gate. В конце покажи status, authorization event, grant/transition и проверки.
|
|
39
|
+
|
|
40
|
+
This is used as the Discovery instruction. Later replacement prompts, existing M3 Task names, canceled-task plans, and accepted M3 implementation commits are excluded from the replay input. They may be used only after implementation for comparison.
|
|
41
|
+
|
|
42
|
+
Confidence: high that the text is verbatim; medium-high that it is the earliest M3 user input, because the original parent task is absent and the evidence survives inside its first approval transcript rather than as the parent task itself.
|
|
43
|
+
|
|
44
|
+
## Observation log
|
|
45
|
+
|
|
46
|
+
### OBS-001 — The original delegated authority is not replayable
|
|
47
|
+
|
|
48
|
+
- Phase: initial Workflow handshake.
|
|
49
|
+
- Evidence: the isolated state registered project `ee2efa9432300ce6e3efba9e`; `delegation show --id DGR-01KZYFTXAW8C87Z7W07G3C9GR4` returned `NOT_FOUND`.
|
|
50
|
+
- Classification: experiment-boundary limitation, not a Workflow defect.
|
|
51
|
+
- Reason: the original grant belonged to historical external state and was intentionally not copied or recreated. Repository identity and workflow authority are not portable to a new checkout/state root.
|
|
52
|
+
- Bypass: continue product implementation outside Workflow after recording the point at which delegated lifecycle mutations become unavailable.
|
|
53
|
+
- Brief relevance: none by itself; it must not be misreported as P03 or P04 evidence.
|
|
54
|
+
|
|
55
|
+
### OBS-002 — The first input is insufficient for product-complete M3 Discovery
|
|
56
|
+
|
|
57
|
+
- Phase: Discovery.
|
|
58
|
+
- Evidence: the first input asks only for a brainstorm/decomposition of “Milestone 3”. `docs/README.md` explicitly defers concrete signal formats, prompts, and parsers. `docs/domain/services/processing-decision.md` additionally defers concrete signal formats, prompts, provider models, extraction algorithms, normalization rules, deterministic validation rules, decision policy, retry timing, persistence DDL, live integrations, credentials, and deployment topology.
|
|
59
|
+
- Classification: blocking product-input gap under the original `AGENTS.md` rule “Do not invent product facts”.
|
|
60
|
+
- Root cause: the first user message identifies a Milestone ordinal, not its product semantics. The repository supplies architectural invariants but not enough product examples or accepted signal semantics to prove a product-complete formalizer.
|
|
61
|
+
- Bypass for this experiment: implement a credential-free synthetic architecture slice using explicit test-only candidates and deterministic fixtures. Do not claim that the slice proves real signal semantics.
|
|
62
|
+
- Brief relevance: the gap is not caused by P01-P04 and must not be used as evidence for them.
|
|
63
|
+
|
|
64
|
+
### OBS-003 — Pre-M3 baseline is healthy except for the local image-build environment
|
|
65
|
+
|
|
66
|
+
- Phase: baseline validation.
|
|
67
|
+
- Evidence: `npm run validate` passed install metadata, CI policy, format, lint, typecheck, architecture, contracts, MTProto checks, unit tests (736 passed, 52 skipped), all 29 builds, real PostgreSQL, real RabbitMQ, and the reliable-ingest vertical slice.
|
|
68
|
+
- Failure: `container:check` stopped while Docker was resolving `node:24.17.0-bookworm-slim`; the build timed out before a Dockerfile or product-code failure was reported.
|
|
69
|
+
- Classification: environment/infrastructure limitation. The required container gate is not proven and must be rerun after implementation.
|
|
70
|
+
- Brief relevance: a global validation runner already exists in this pre-M3 revision (`npm run validate`), so the earlier P01 claim must distinguish “no Task-specific composite acceptance command” from “no repository-wide validation command”.
|
|
71
|
+
|
|
72
|
+
### OBS-004 — Historical alpha.6 initial assembly blocks after the first linked Task
|
|
73
|
+
|
|
74
|
+
- Phase: historical-package control run.
|
|
75
|
+
- Evidence: with the pre-M3 declared package `2.0.0-alpha.6`, the first linked Task materialized successfully. Every attempt to materialize Tasks 2–7 then failed with `MILESTONE_SCOPE_INCOMPLETE`, naming Task 1 as an orphan and requiring a scope change.
|
|
76
|
+
- Root cause: alpha.6 enforces reverse membership immediately but has no initial-assembly navigation exception, so a multi-Task Milestone cannot be assembled in one planning window.
|
|
77
|
+
- Classification: confirmed historical Workflow defect, already addressed by the current `milestone-initial-assembly-navigation-v2` capability.
|
|
78
|
+
- Bypass: do not patch alpha.6 and do not perform repeated human-gated scope changes. Re-run the experiment with the current beta.11 package over the same pre-M3 product tree.
|
|
79
|
+
- Brief relevance: historical supporting evidence for structural membership problems, but not a current P04 reproduction.
|
|
80
|
+
|
|
81
|
+
### OBS-005 — Current fresh-project navigation blocks before the mutation that bootstraps it
|
|
82
|
+
|
|
83
|
+
- Phase: beta.11 initial checkpoint.
|
|
84
|
+
- Evidence: against a nonexistent isolated state root, `status` and `next` return `PROJECT_REGISTRATION_MISSING` plus `ADOPTION_MISSING`, `action=blocked`, and no repair or `discovery start` navigation. The beta.11 test `first Discovery bootstraps registration when the configured state root does not exist` and `WorkflowService.startDiscovery` nevertheless support the required first mutation.
|
|
85
|
+
- Root cause: the read-only repository navigation has no fresh-project bootstrap route even though the mutation API intentionally owns bootstrap.
|
|
86
|
+
- Classification: current onboarding/navigation gap. It is not one of P01–P04 as presently scoped.
|
|
87
|
+
- Bypass: use the original user's explicit `Discovery` instruction to call `discovery start` directly; no state file is edited and no Workflow code is patched.
|
|
88
|
+
- Confidence: high.
|
|
89
|
+
|
|
90
|
+
### OBS-006 — The current Workflow stops at the mandatory project-memory human gate
|
|
91
|
+
|
|
92
|
+
- Phase: beta.11 Discovery.
|
|
93
|
+
- Evidence: direct `discovery start` bootstrapped the isolated project and created Discovery `DISC-01M0RE58M10KG55DAW96YD9RPD`. The subsequent project-memory scan produced revision 1 with an unresolved ownership-source gap; `next` requires `project-memory approve` by a human actor before planning may continue.
|
|
94
|
+
- Classification: expected authorization boundary, not a Workflow defect. The original delegated grant is unavailable in the isolated state and the experiment must not impersonate `user`.
|
|
95
|
+
- Bypass: stop Workflow lifecycle mutation at this point. Record the synthetic Discovery, Tasks, Steps, dependencies, implementation commits, and validation evidence manually in this journal while changing only the isolated product checkout.
|
|
96
|
+
- Brief relevance: the bypass is experimental and supplies no evidence for P01–P04 by itself.
|
|
97
|
+
- Confidence: high.
|
|
98
|
+
|
|
99
|
+
### Synthetic Discovery and implementation manifest
|
|
100
|
+
|
|
101
|
+
The repository establishes architecture and reliability invariants but intentionally defers real text-signal semantics. The synthetic outcome is therefore limited to a credential-free processing-decision slice that consumes strict V3 reference-only ingress, reads only content authorized by an exact reference, treats extraction as untrusted, performs deterministic generic validation, and persists domain evidence plus outbox intent before acknowledging delivery. Test-only candidate data is not a product signal format.
|
|
102
|
+
|
|
103
|
+
The independently derived sequential Task plan is:
|
|
104
|
+
|
|
105
|
+
1. **Formalization evidence contracts**
|
|
106
|
+
- define immutable domain evidence and disposition types;
|
|
107
|
+
- own and strictly validate V3 ingress plus a safe formalization event;
|
|
108
|
+
- add mappings, schemas, tests, and contract documentation.
|
|
109
|
+
2. **Exact-root content capability** (depends on Task 1)
|
|
110
|
+
- define bounded content-read and prior-root-evidence ports;
|
|
111
|
+
- resolve roots without `latest`, predecessor, provider, or event-body fallback;
|
|
112
|
+
- test exact reuse and explicit causal gaps.
|
|
113
|
+
3. **Deterministic synthetic formalization pipeline** (depends on Tasks 1–2)
|
|
114
|
+
- normalize untrusted generic candidates without rewriting source text;
|
|
115
|
+
- validate/dispose deterministically;
|
|
116
|
+
- orchestrate exact content read, extraction, validation, and evidence creation.
|
|
117
|
+
4. **Untrusted OpenAI-compatible extraction adapter** (depends on Tasks 1 and 3)
|
|
118
|
+
- strictly parse an unknown provider response;
|
|
119
|
+
- bound timeout/failure behavior and keep raw text out of safe errors/log data;
|
|
120
|
+
- test malformed, delayed, and failed responses.
|
|
121
|
+
5. **Processing evidence ledger** (depends on Tasks 1, 3, and 4)
|
|
122
|
+
- add least-privilege SQL roles and migration for inbox, immutable evidence, and outbox;
|
|
123
|
+
- commit inbox/evidence/outbox atomically and idempotently;
|
|
124
|
+
- prove rollback, replay, and role restrictions against PostgreSQL.
|
|
125
|
+
6. **Processing delivery runtime** (depends on Task 5)
|
|
126
|
+
- consume with commit-before-ack and bounded failure handling;
|
|
127
|
+
- publish the outbox with confirms and deterministic retry ownership;
|
|
128
|
+
- prove duplicate delivery, broker failure, and replay behavior.
|
|
129
|
+
7. **Processing formalization acceptance host** (depends on Tasks 1–6)
|
|
130
|
+
- compose configuration, runtime, and truthful readiness;
|
|
131
|
+
- add a deterministic end-to-end acceptance runner and operator documentation;
|
|
132
|
+
- attach the runner to repository validation and repeat the container gate.
|
|
133
|
+
|
|
134
|
+
This manifest is not a Workflow materialization record. It exists so that the outside-Workflow bypass remains auditable rather than becoming invisible ad-hoc implementation.
|
|
135
|
+
|
|
136
|
+
### OBS-007 — V3 follow-up lineage does not identify an exact root revision or content reference
|
|
137
|
+
|
|
138
|
+
- Phase: Task 2 design, before implementation.
|
|
139
|
+
- Evidence: `libs/ingest/contracts/src/source-observation.v3.ts` supplies `contentReference` for the observed message. For a follow-up, `lineage.root` contains only root `sourceId` and `sourceMessageId`; it has neither a root revision nor a root `contentReference`. The processing documentation requires exact-root content and forbids fallback to latest content, event-body text, provider fetch, or an inferred predecessor.
|
|
140
|
+
- Root cause: the ingress contract identifies root identity but not the immutable root content revision that the processor is supposed to formalize or reuse.
|
|
141
|
+
- Consequence: a follow-up cannot independently read an exact root from its V3 event. It can safely proceed only if a previously committed root record supplies the exact reference; otherwise it must return an explicit causal gap. Root edits remain semantically ambiguous.
|
|
142
|
+
- Classification: confirmed contract/product gap, not an implementation nuisance.
|
|
143
|
+
- Required pre-materialization decision: choose one of (a) enrich a new ingress contract version with the exact root revision/reference, or (b) explicitly define that follow-ups require a previously committed root formalization and route missing roots to causal-gap reconciliation. “Fetch latest root” is not a valid option under the documented invariant.
|
|
144
|
+
- Brief relevance: creates a real dependency from exact-root/evidence persistence into delivery and acceptance. It is outside P01–P04 unless a brief explicitly claims the Task plan can omit that dependency.
|
|
145
|
+
- Confidence: high that the contract is insufficient; medium on the intended product semantics because the repository deliberately defers them.
|
|
146
|
+
|
|
147
|
+
### OBS-008 — Finding a compatible root record must short-circuit extraction and persistence
|
|
148
|
+
|
|
149
|
+
- Phase: Tasks 3–5 integration.
|
|
150
|
+
- Evidence: the first synthetic orchestration draft resolved a follow-up to a compatible committed root reference but then continued through exact read, provider extraction, and creation of a new formalization ID. `docs/domain/services/processing-decision.md` instead says a compatible already committed formalization is preferred, and the evidence key is exact root identity/revision plus formalization version. Continuing would duplicate immutable root evidence and collide with the required uniqueness invariant.
|
|
151
|
+
- Root cause: “reference reuse” and “formalization reuse” were initially conflated. A reference authorizes a read; a committed compatible formalization is already the result and must be reused as such.
|
|
152
|
+
- Correction in the synthetic flow: the compatible-root lookup returns the committed formalization ID, disposition, and exact reference. `FormalizeIngestedText` returns `reused` before content read or provider invocation. Only an original/root revision with no compatible record creates new evidence and outbox state.
|
|
153
|
+
- Remaining question: whether every follow-up also requires a distinct downstream decision/audit record is deferred by the pre-M3 documentation and cannot be answered by this formalization replay.
|
|
154
|
+
- Brief relevance: a Task plan that merely orders “lookup before extraction” remains semantically insufficient; the Step postcondition must say that a hit terminates formalization work. This is direct supporting evidence for P02.
|
|
155
|
+
- Confidence: high for formalization reuse; low for deferred follow-up decision semantics.
|
|
156
|
+
|
|
157
|
+
### OBS-009 — A failed attempt and a later success must share one inbox identity
|
|
158
|
+
|
|
159
|
+
- Phase: Task 6 delivery integration.
|
|
160
|
+
- Evidence: bounded provider/content/causal failures are durable attempt evidence, but the same ingress event may later succeed. Treating every existing inbox row as an already completed duplicate made success impossible after the first retryable failure. Real PostgreSQL tests now cover `failure attempt -> same inbox event -> atomic formalization success`.
|
|
161
|
+
- Root cause: inbox claim, terminal result, and attempt history are different facts. Presence in the inbox proves identity ownership, not necessarily completion.
|
|
162
|
+
- Correction: on conflict, verify the immutable input hash; return a duplicate only when a committed formalization or reuse result exists. Otherwise the owned retry may continue and append a later success atomically.
|
|
163
|
+
- Brief relevance: direct evidence for P02. “Insert inbox before processing” is not a sufficient Step postcondition; the replay semantics of an existing nonterminal inbox row must be explicit.
|
|
164
|
+
- Confidence: high.
|
|
165
|
+
|
|
166
|
+
### OBS-010 — Locking strategy can silently conflict with the least-privilege role
|
|
167
|
+
|
|
168
|
+
- Phase: Task 6 real PostgreSQL verification.
|
|
169
|
+
- Evidence: duplicate verification initially used `SELECT ... FOR UPDATE`. PostgreSQL rejected it under `processing_decision_runtime` because row locking requires UPDATE privilege, while the runtime correctly has only SELECT/INSERT on immutable inbox rows. Mock/unit checks did not expose this; the real role did.
|
|
170
|
+
- Root cause: an unnecessary lock was added after the unique `INSERT ... ON CONFLICT` had already serialized the conflicting insertion.
|
|
171
|
+
- Correction: use the uniqueness conflict as the serialization point, then perform a plain hash read. Do not broaden runtime UPDATE privilege to accommodate redundant locking.
|
|
172
|
+
- Brief relevance: supports P01 only in its narrow form: a Task-specific composite acceptance command must exercise real permissions, not merely run repository-wide unit tests. It also supports P02 because “idempotent” without the actual role is not a proven postcondition.
|
|
173
|
+
- Confidence: high.
|
|
174
|
+
|
|
175
|
+
### OBS-011 — The pinned RabbitMQ image exposes harness assumptions before product tests run
|
|
176
|
+
|
|
177
|
+
- Phase: Task 6 real RabbitMQ verification.
|
|
178
|
+
- Evidence: the pinned RabbitMQ 4.3.2 container initially exited before opening a port because `.erlang.cookie` on the ephemeral tmpfs was unreadable. Running the container directly as its declared `rabbitmq` UID/GID 999 fixed ownership. The first test queue was then rejected because RabbitMQ 4.3 no longer permits deprecated transient non-exclusive queues; a durable explicitly deleted test queue is compatible. After those harness corrections, real publisher confirm and real mandatory return tests passed.
|
|
179
|
+
- Classification: test-harness/environment incompatibilities, not processing product defects and not evidence for P01–P04 by themselves.
|
|
180
|
+
- Bypass: keep the digest-pinned image, ephemeral tmpfs, explicit UID/GID, and durable test topology. No Workflow or Signal source repository was patched.
|
|
181
|
+
- Confidence: high.
|
|
182
|
+
|
|
183
|
+
### Task 6 residual boundary
|
|
184
|
+
|
|
185
|
+
The synthetic implementation now proves durable ingress-result handling, bounded attempt/quarantine decisions, failure-to-success replay, leased outbox CAS, safe publisher payloads, real RabbitMQ confirms, and mandatory returns. It does **not** choose or claim a production inbound RabbitMQ queue/retry-bucket topology: queue names, delay schedule, credentials, and deployment topology are explicitly deferred in `docs/domain/services/processing-decision.md`. Materializing a Step that promises a live consumer topology from the original prompt would invent product/operational decisions. The acceptance host may compose the consumer-facing handler through an injected delivery boundary, but production topology remains a blocking input.
|
|
186
|
+
|
|
187
|
+
### OBS-012 — A narrow Task check can pass while the project-reference build or architecture contract fails
|
|
188
|
+
|
|
189
|
+
- Phase: Tasks 1, 6, and 7 verification.
|
|
190
|
+
- Evidence: the repository-root `npm run typecheck` (`tsc --noEmit -p tsconfig.json`) passed while the Nx project-reference build later rejected an `exactOptionalPropertyTypes` mismatch in `apps/processing-decision/src/application.ts`. Earlier, targeted processing tests passed while the repository architecture suite rejected a direct `node:crypto` import from the application layer and provider terminology in a port. Both defects were corrected before the final replay commit.
|
|
191
|
+
- Root cause: the checks prove different boundaries. Root typecheck does not compile every referenced project the same way as `tsc -b`; targeted behavior tests do not prove dependency-direction and naming rules.
|
|
192
|
+
- Classification: confirmed verification-coverage gap in the synthetic Task plan, not proof that every Task needs the entire repository validation suite.
|
|
193
|
+
- Brief relevance: supports the narrow P01 requirement that feasibility/acceptance trace the exact commands needed for the declared postcondition, and P02's requirement that verification be sufficient at the Step boundary. It does not prove that a new persisted feasibility-evidence authority is necessary.
|
|
194
|
+
- Confidence: high.
|
|
195
|
+
|
|
196
|
+
### OBS-013 — A fixed replay timestamp created a date-boundary failure in the real outbox test
|
|
197
|
+
|
|
198
|
+
- Phase: Task 7 full Milestone validation.
|
|
199
|
+
- Evidence: the first full validation run failed because the outbox row used `available_at DEFAULT clock_timestamp()`, while the test claimed it at the fixed instant `2026-08-24T00:01:00.000Z`. Once wall-clock time passed that instant, the newly inserted row was correctly ineligible and `claimAvailable` returned `[]`. The prior isolated PostgreSQL run had passed before the boundary.
|
|
200
|
+
- Root cause: the test mixed a real database clock with a fixed claimed-at fixture and therefore encoded a hidden relationship to wall-clock time.
|
|
201
|
+
- Outside-Workflow correction: commit `670576a` derives the claim/retry/settlement instants from one future test instant. The repeated real PostgreSQL run then passed all 7 tests.
|
|
202
|
+
- Classification: deterministic-test defect in the synthetic replay, not a production outbox defect.
|
|
203
|
+
- Brief relevance: direct P01/P02 evidence that executable verification must control or consistently derive time; a green single run is insufficient evidence of determinism.
|
|
204
|
+
- Confidence: high.
|
|
205
|
+
|
|
206
|
+
### OBS-014 — The pre-M3 processing shell advertised readiness without a formalization runtime
|
|
207
|
+
|
|
208
|
+
- Phase: Task 7 application composition.
|
|
209
|
+
- Evidence: the pre-M3 processing-decision smoke expected HTTP 200 `ready` from the generic application shell although the service had no formalization content reader, extractor, ledger, broker publisher, or consumer runtime. The synthetic acceptance host now distinguishes `listening` from `ready`; without injected formalization dependencies readiness is HTTP 503, while the composed synthetic runtime reports ready only after its dependencies do.
|
|
210
|
+
- Root cause: shell liveness had been treated as service readiness before M3 introduced the dependencies whose availability readiness must represent.
|
|
211
|
+
- Classification: confirmed product acceptance gap exposed by M3 composition, not a Workflow P01-P04 defect.
|
|
212
|
+
- Required materialization correction: the M3 acceptance contract must require dependency-backed readiness and must not count HTTP listener startup as formalization readiness.
|
|
213
|
+
- Confidence: high for the pre-M3 behavior and synthetic correction; production dependency policy remains deferred.
|
|
214
|
+
|
|
215
|
+
## Synthetic implementation result
|
|
216
|
+
|
|
217
|
+
The seven Tasks were implemented sequentially in the isolated checkout. Each Task was preserved as an auditable commit:
|
|
218
|
+
|
|
219
|
+
1. `11aeb56` — formalization evidence contracts;
|
|
220
|
+
2. `253ee30` — exact-root content capability;
|
|
221
|
+
3. `b9641fe` — deterministic synthetic formalization;
|
|
222
|
+
4. `66cffa7` — bounded untrusted extraction adapter;
|
|
223
|
+
5. `377ae9c` — atomic processing evidence ledger;
|
|
224
|
+
6. `19d5614` and cleanup `24db98e` — durable processing delivery runtime;
|
|
225
|
+
7. `f208c73` — formalization acceptance host;
|
|
226
|
+
8. `670576a` — explicitly outside-Workflow replay blocker correction for the wall-clock-sensitive test.
|
|
227
|
+
|
|
228
|
+
Final isolated HEAD: `670576a` on `replay/t07-formalization-acceptance-host`. The checkout is clean.
|
|
229
|
+
|
|
230
|
+
Confirmed validation evidence:
|
|
231
|
+
|
|
232
|
+
- formatting, lint, strict root typecheck, architecture rules (43 projects, 296 imports, 13 negative fixtures), and contract fixtures pass;
|
|
233
|
+
- all 31 service/library project-reference builds pass;
|
|
234
|
+
- unit/safety suite: 59 files passed, 8 skipped; 771 tests passed, 61 skipped;
|
|
235
|
+
- real processing PostgreSQL: 7/7 tests pass, including atomic commit/rollback, retry-to-success, exact-root ambiguity, reuse, and outbox lease CAS;
|
|
236
|
+
- real processing RabbitMQ: 2/2 tests pass, including publisher confirm and mandatory return;
|
|
237
|
+
- the pre-existing real ingest PostgreSQL, RabbitMQ, and reliable-ingest vertical-slice gates also pass;
|
|
238
|
+
- credential-free formalization acceptance reports one committed formalization, one reuse, one confirmed outbox event, two bounded failure records, and no second extraction on reuse.
|
|
239
|
+
|
|
240
|
+
The repository-wide validation is not fully green because `container:check` again timed out while resolving metadata for `docker.io/library/node:24.17.0-bookworm-slim`. This is the exact baseline failure point recorded in OBS-003, before Dockerfile execution or product startup. Therefore the synthetic M3 has strong functional/infrastructure-boundary evidence but no proven runtime-image acceptance.
|
|
241
|
+
|
|
242
|
+
## Experiment conclusion boundary
|
|
243
|
+
|
|
244
|
+
This replay proves that the pre-M3 architecture can support a credential-free formalization slice and that several requirements omitted by the first user input are real: exact-root lineage semantics, formalization reuse semantics, failure-versus-completion inbox semantics, least-privilege SQL behavior, deterministic time, truthful readiness, and production topology decisions. It does not prove real signal semantics or a deployable inbound runtime, and it did not traverse Workflow materialization because the current mandatory project-memory human gate correctly stopped the isolated delegated replay.
|
|
245
|
+
|
|
246
|
+
Consequently, the replay may support or weaken individual problem-brief hypotheses, but it cannot by itself satisfy any brief that requires historical Workflow replay across real role-separated Planner/Worker/Reviewer contexts or structural-replacement transitions.
|
package/docs/release.md
CHANGED
|
@@ -13,23 +13,47 @@ Before tagging a release:
|
|
|
13
13
|
3. `npm run pack:check`
|
|
14
14
|
4. `npm run smoke:downstream`
|
|
15
15
|
5. `npm run plugin:check`
|
|
16
|
-
6. `npm run
|
|
17
|
-
7.
|
|
16
|
+
6. `npm run docs:pdf:check`
|
|
17
|
+
7. `npm run release:check`
|
|
18
|
+
8. validate `plugins/codex-workflow-gateway` with the Codex plugin validator
|
|
19
|
+
9. validate the append-only real-agent log with
|
|
20
|
+
`node scripts/validate-lifecycle-transcript.mjs --file <lifecycle-log.jsonl>`
|
|
18
21
|
|
|
19
22
|
The downstream smoke packs the actual tarball, installs it into an empty temporary project,
|
|
20
23
|
runs the packaged CLI handshake, and proves installation created none of `.codex`, `.tasks`,
|
|
21
24
|
`.increments`, or `.memory-bank` in that project.
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
The PDF check deterministically regenerates all three Russian documents from
|
|
27
|
+
`docs/pdf/sources`, binds the visible package version to the root manifest, and fails when any
|
|
28
|
+
tracked PDF is stale. Source and binary PDFs are one release unit.
|
|
29
|
+
|
|
30
|
+
For beta.11, the release gate also relies on `npm run release:check` to fail if:
|
|
24
31
|
|
|
25
32
|
- canonical entity schema 2 shapes drift;
|
|
26
|
-
- protocol 1
|
|
33
|
+
- protocol 2 is not the active public contract, or intact protocol-1 adoption evidence stops being readable through the bounded compatibility window;
|
|
27
34
|
- the delegated transition allow-list expands;
|
|
28
35
|
- schema-2 adoption is presented as `state migrate` instead of posture sidecars;
|
|
29
36
|
- alpha.7 rescue, Milestone autonomy (including guarded content refresh), derived actor, or
|
|
30
37
|
proof-obligation capabilities and schemas are absent from the packaged surface;
|
|
31
|
-
-
|
|
32
|
-
version/base diagnostics, or serialized maintainer validation are missing.
|
|
38
|
+
- the truthful structural-replacement-disabled capability, project-level transaction recovery,
|
|
39
|
+
secret-safe lock diagnostics, version/base diagnostics, or serialized maintainer validation are missing.
|
|
40
|
+
- truthful initial-assembly navigation capability is absent from the packaged surface.
|
|
41
|
+
- corrective-yield/replan protocol-v2 commands, closed schemas, Human gate, retained journals,
|
|
42
|
+
explicit recovery, or dual-readback capabilities are absent from the packaged surface.
|
|
43
|
+
- scoped Task navigation, credential replacement recovery, or sealed external Task/Step review
|
|
44
|
+
commands are absent from the packaged surface.
|
|
45
|
+
- bounded dependency-provenance recovery, retained passed-review provenance, the exact Signal T04
|
|
46
|
+
revision-26 fixture, or pending/corrupt-review rejection regressions are absent.
|
|
47
|
+
- the read-only Milestone progress projection, replacement regression, project-monotonic chat
|
|
48
|
+
registry, title fallback/readback, or long-Cyrillic multi-attempt E2E evidence is absent.
|
|
49
|
+
- bounded first-failure Plan-integrity recovery, exact failed-remediation/manifest/worktree
|
|
50
|
+
bindings, or the no-synthetic-second-failure regression is absent.
|
|
51
|
+
- the P04-A Milestone dependency/initial-Plan transaction capabilities or the P01-A mechanical
|
|
52
|
+
feasibility capability is absent from the packaged handshake.
|
|
53
|
+
|
|
54
|
+
The separate lifecycle transcript validator fails if the real-agent log contains a mutation that
|
|
55
|
+
bypasses failed `status`/`next`, an unadvertised or failed mutation, an unresolved syntax-only
|
|
56
|
+
retry, or missing post-mutation checkpoints.
|
|
33
57
|
|
|
34
58
|
Full `npm test` and `npm run validate` invocations share destructive build outputs and are therefore
|
|
35
59
|
single-owner operations. A concurrent invocation fails immediately with
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
# Canonical `split-required` recovery
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
`
|
|
3
|
+
Structural replacement is intentionally unavailable in P04-A. When the exact package-local
|
|
4
|
+
`next` response identifies a terminal `split-required` decision, it returns `doctor` with
|
|
5
|
+
`blockedAction: task replacement-materialize`, diagnostic code
|
|
6
|
+
`STRUCTURAL_REPLACEMENT_REQUIRED`, and the incident dependency edges. The mutation route rejects
|
|
7
|
+
with the same diagnostic before any replacement write or writer-lease mutation.
|
|
8
|
+
|
|
9
|
+
Do not rebind, refresh, replan, authorize, resume, cancel, or manually replace the historical
|
|
10
|
+
Task. Preserve any ready replacement Discovery without consuming it. Recovery can resume only
|
|
11
|
+
after P04-B/P05 defines and implements one topology-preserving transaction for arbitrary
|
|
12
|
+
replacement cardinality, dependency rewiring, Task/Discovery/Milestone state, authority cleanup,
|
|
13
|
+
and recovery.
|
|
5
14
|
|
|
6
15
|
## Delegate prompt
|
|
7
16
|
|
|
@@ -14,29 +23,13 @@ Continue the active Milestone through the package-local codex-workflow-v2 Core o
|
|
|
14
23
|
2. Confirm that `next` reports the historical Task as `split-required`. Do not run
|
|
15
24
|
`task knowledge-rebind`, `task context-refresh`, `task plan-set`, `task authorize`, or `task run`
|
|
16
25
|
for that Task.
|
|
17
|
-
3.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Discovery, and Milestone revisions, a precise replacement title, and the current authorized
|
|
22
|
-
actor. This single transaction must consume the Discovery, cancel/link the historical Task,
|
|
23
|
-
create/link the replacement Task, change both memberships, supersede Milestone execution
|
|
24
|
-
authorization, and leave the Milestone awaiting reauthorization. Do not perform a separate
|
|
25
|
-
scope change for these effects.
|
|
26
|
-
5. Run `status` and `next`. Verify: old Task `cancelled`; old membership `cancelled`; new Task
|
|
27
|
-
`planning` and `replacementForTaskId` points to the old Task; new membership `required`;
|
|
28
|
-
Milestone `awaiting_execution_authorization`. If any relation is missing, stop and run `doctor`.
|
|
29
|
-
6. Follow the exact `next` transition to reauthorize the changed Milestone. Run `status` and `next`
|
|
30
|
-
again. Do not reuse the historical Task's Plan or authorization.
|
|
31
|
-
7. Plan the replacement Task from its own Brief, record the required Plan Risk Audit, authorize it,
|
|
32
|
-
prepare and claim its C1 handoff, and execute only the exact Step returned by `next`. Run
|
|
33
|
-
`status` and `next` after every state boundary.
|
|
34
|
-
8. Complete review, final acceptance, merge, remaining required Tasks, Milestone validation, and
|
|
35
|
-
Milestone final acceptance through exact Core transitions. Never create a fourth remediation
|
|
36
|
-
attempt for the historical Task.
|
|
26
|
+
3. Confirm that `replacementGate.structuralReplacementAvailable` is `false` and record the
|
|
27
|
+
incident dependency edges for later P04-B/P05 design evidence.
|
|
28
|
+
4. Stop. No current Core transition is authorized to consume the replacement Discovery or alter
|
|
29
|
+
the Task/Milestone topology.
|
|
37
30
|
```
|
|
38
31
|
|
|
39
|
-
##
|
|
32
|
+
## Disabled replacement command shape
|
|
40
33
|
|
|
41
34
|
```sh
|
|
42
35
|
codex-workflow task replacement-materialize --repo . \
|
|
@@ -49,5 +42,6 @@ codex-workflow task replacement-materialize --repo . \
|
|
|
49
42
|
--actor agent:milestone-coordinator
|
|
50
43
|
```
|
|
51
44
|
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
The command shape is retained only for compatibility diagnostics. P04-A rejects it regardless of
|
|
46
|
+
replacement Discovery count or incident-edge count. Do not invoke it until a later brief explicitly
|
|
47
|
+
re-enables the route.
|